diff --git a/.replxx_history b/.replxx_history index e69de29..87d6d05 100644 --- a/.replxx_history +++ b/.replxx_history @@ -0,0 +1,26 @@ +### 2025-04-05 21:18:19.133 +setr "txAdmin-locale" "en" +### 2025-04-05 21:18:19.183 +set "txAdmin-serverName" "UIRP-5M" +### 2025-04-05 21:18:19.234 +set "txAdmin-checkPlayerJoin" "true" +### 2025-04-05 21:18:19.284 +set "txAdmin-menuAlignRight" "false" +### 2025-04-05 21:18:19.335 +set "txAdmin-menuPageKey" "Tab" +### 2025-04-05 21:18:19.385 +set "txAdmin-playerModePtfx" "true" +### 2025-04-05 21:18:19.436 +set "txAdmin-hideAdminInPunishments" "true" +### 2025-04-05 21:18:19.486 +set "txAdmin-hideAdminInMessages" "false" +### 2025-04-05 21:18:19.537 +set "txAdmin-hideDefaultAnnouncement" "false" +### 2025-04-05 21:18:19.587 +set "txAdmin-hideDefaultDirectMessage" "false" +### 2025-04-05 21:18:19.638 +set "txAdmin-hideDefaultWarning" "false" +### 2025-04-05 21:18:19.689 +set "txAdmin-hideDefaultScheduledRestartWarning" "false" +### 2025-04-05 21:18:19.739 +txaEvent "configChanged" "{}" diff --git a/resources/[core]/PolyZone/.gitignore b/resources/[core]/PolyZone/.gitignore new file mode 100644 index 0000000..b9f6547 --- /dev/null +++ b/resources/[core]/PolyZone/.gitignore @@ -0,0 +1 @@ +polyzone_created_zones.txt diff --git a/resources/[core]/PolyZone/BoxZone.lua b/resources/[core]/PolyZone/BoxZone.lua new file mode 100644 index 0000000..d07eb00 --- /dev/null +++ b/resources/[core]/PolyZone/BoxZone.lua @@ -0,0 +1,226 @@ +BoxZone = {} +-- Inherits from PolyZone +setmetatable(BoxZone, { __index = PolyZone }) + +-- Utility functions +local rad, cos, sin = math.rad, math.cos, math.sin +function PolyZone.rotate(origin, point, theta) + if theta == 0.0 then return point end + + local p = point - origin + local pX, pY = p.x, p.y + theta = rad(theta) + local cosTheta = cos(theta) + local sinTheta = sin(theta) + local x = pX * cosTheta - pY * sinTheta + local y = pX * sinTheta + pY * cosTheta + return vector2(x, y) + origin +end + +function BoxZone.calculateMinAndMaxZ(minZ, maxZ, scaleZ, offsetZ) + local minScaleZ, maxScaleZ, minOffsetZ, maxOffsetZ = scaleZ[1] or 1.0, scaleZ[2] or 1.0, offsetZ[1] or 0.0, offsetZ[2] or 0.0 + if (minZ == nil and maxZ == nil) or (minScaleZ == 1.0 and maxScaleZ == 1.0 and minOffsetZ == 0.0 and maxOffsetZ == 0.0) then + return minZ, maxZ + end + + if minScaleZ ~= 1.0 or maxScaleZ ~= 1.0 then + if minZ ~= nil and maxZ ~= nil then + local halfHeight = (maxZ - minZ) / 2 + local centerZ = minZ + halfHeight + minZ = centerZ - halfHeight * minScaleZ + maxZ = centerZ + halfHeight * maxScaleZ + else + print(string.format( + "[PolyZone] Warning: The minZ/maxZ of a BoxZone can only be scaled if both minZ and maxZ are non-nil (minZ=%s, maxZ=%s)", + tostring(minZ), + tostring(maxZ) + )) + end + end + + if minZ then minZ = minZ - minOffsetZ end + if maxZ then maxZ = maxZ + maxOffsetZ end + + return minZ, maxZ +end + +local function _calculateScaleAndOffset(options) + -- Scale and offset tables are both formatted as {forward, back, left, right, up, down} + -- or if symmetrical {forward/back, left/right, up/down} + local scale = options.scale or {1.0, 1.0, 1.0, 1.0, 1.0, 1.0} + local offset = options.offset or {0.0, 0.0, 0.0, 0.0, 0.0, 0.0} + assert(#scale == 3 or #scale == 6, "Scale must be of length 3 or 6") + assert(#offset == 3 or #offset == 6, "Offset must be of length 3 or 6") + if #scale == 3 then + scale = {scale[1], scale[1], scale[2], scale[2], scale[3], scale[3]} + end + if #offset == 3 then + offset = {offset[1], offset[1], offset[2], offset[2], offset[3], offset[3]} + end + local minOffset = vector3(offset[3], offset[2], offset[6]) + local maxOffset = vector3(offset[4], offset[1], offset[5]) + local minScale = vector3(scale[3], scale[2], scale[6]) + local maxScale = vector3(scale[4], scale[1], scale[5]) + return minOffset, maxOffset, minScale, maxScale +end + +local function _calculatePoints(center, length, width, minScale, maxScale, minOffset, maxOffset) + local halfLength, halfWidth = length / 2, width / 2 + local min = vector3(-halfWidth, -halfLength, 0.0) + local max = vector3(halfWidth, halfLength, 0.0) + + min = min * minScale - minOffset + max = max * maxScale + maxOffset + + -- Box vertices + local p1 = center.xy + vector2(min.x, min.y) + local p2 = center.xy + vector2(max.x, min.y) + local p3 = center.xy + vector2(max.x, max.y) + local p4 = center.xy + vector2(min.x, max.y) + return {p1, p2, p3, p4} +end + +-- Debug drawing functions +function BoxZone:TransformPoint(point) + -- Overriding TransformPoint function to take into account rotation and position offset + return PolyZone.rotate(self.startPos, point, self.offsetRot) + self.offsetPos +end + + +-- Initialization functions +local function _initDebug(zone, options) + if options.debugBlip then zone:addDebugBlip() end + if not options.debugPoly then + return + end + + Citizen.CreateThread(function() + while not zone.destroyed do + zone:draw(false) + Citizen.Wait(0) + end + end) +end + +local defaultMinOffset, defaultMaxOffset, defaultMinScale, defaultMaxScale = vector3(0.0, 0.0, 0.0), vector3(0.0, 0.0, 0.0), vector3(1.0, 1.0, 1.0), vector3(1.0, 1.0, 1.0) +local defaultScaleZ, defaultOffsetZ = {defaultMinScale.z, defaultMaxScale.z}, {defaultMinOffset.z, defaultMaxOffset.z} +function BoxZone:new(center, length, width, options) + local minOffset, maxOffset, minScale, maxScale = defaultMinOffset, defaultMaxOffset, defaultMinScale, defaultMaxScale + local scaleZ, offsetZ = defaultScaleZ, defaultOffsetZ + if options.scale ~= nil or options.offset ~= nil then + minOffset, maxOffset, minScale, maxScale = _calculateScaleAndOffset(options) + scaleZ, offsetZ = {minScale.z, maxScale.z}, {minOffset.z, maxOffset.z} + end + + local points = _calculatePoints(center, length, width, minScale, maxScale, minOffset, maxOffset) + local min = points[1] + local max = points[3] + local size = max - min + + local minZ, maxZ = BoxZone.calculateMinAndMaxZ(options.minZ, options.maxZ, scaleZ, offsetZ) + options.minZ = minZ + options.maxZ = maxZ + + -- Box Zones don't use the grid optimization because they are already rectangles/cubes + options.useGrid = false + + -- Pre-setting all these values to avoid PolyZone:new() having to calculate them + options.min = min + options.max = max + options.size = size + options.center = center + options.area = size.x * size.y + + local zone = PolyZone:new(points, options) + zone.length = length + zone.width = width + zone.startPos = center.xy + zone.offsetPos = vector2(0.0, 0.0) + zone.offsetRot = options.heading or 0.0 + zone.minScale, zone.maxScale = minScale, maxScale + zone.minOffset, zone.maxOffset = minOffset, maxOffset + zone.scaleZ, zone.offsetZ = scaleZ, offsetZ + zone.isBoxZone = true + + setmetatable(zone, self) + self.__index = self + return zone +end + +function BoxZone:Create(center, length, width, options) + local zone = BoxZone:new(center, length, width, options) + _initDebug(zone, options) + return zone +end + + +-- Helper functions +function BoxZone:isPointInside(point) + if self.destroyed then + print("[PolyZone] Warning: Called isPointInside on destroyed zone {name=" .. self.name .. "}") + return false + end + + local startPos = self.startPos + local actualPos = point.xy - self.offsetPos + if #(actualPos - startPos) > self.boundingRadius then + return false + end + + local rotatedPoint = PolyZone.rotate(startPos, actualPos, -self.offsetRot) + local pX, pY, pZ = rotatedPoint.x, rotatedPoint.y, point.z + local min, max = self.min, self.max + local minX, minY, maxX, maxY = min.x, min.y, max.x, max.y + local minZ, maxZ = self.minZ, self.maxZ + if pX < minX or pX > maxX or pY < minY or pY > maxY then + return false + end + if (minZ and pZ < minZ) or (maxZ and pZ > maxZ) then + return false + end + return true +end + +function BoxZone:getHeading() + return self.offsetRot +end + +function BoxZone:setHeading(heading) + if not heading then + return + end + self.offsetRot = heading +end + +function BoxZone:setCenter(center) + if not center or center == self.center then + return + end + self.center = center + self.startPos = center.xy + self.points = _calculatePoints(self.center, self.length, self.width, self.minScale, self.maxScale, self.minOffset, self.maxOffset) +end + +function BoxZone:getLength() + return self.length +end + +function BoxZone:setLength(length) + if not length or length == self.length then + return + end + self.length = length + self.points = _calculatePoints(self.center, self.length, self.width, self.minScale, self.maxScale, self.minOffset, self.maxOffset) +end + +function BoxZone:getWidth() + return self.width +end + +function BoxZone:setWidth(width) + if not width or width == self.width then + return + end + self.width = width + self.points = _calculatePoints(self.center, self.length, self.width, self.minScale, self.maxScale, self.minOffset, self.maxOffset) +end diff --git a/resources/[core]/PolyZone/CircleZone.lua b/resources/[core]/PolyZone/CircleZone.lua new file mode 100644 index 0000000..30c1b95 --- /dev/null +++ b/resources/[core]/PolyZone/CircleZone.lua @@ -0,0 +1,98 @@ +CircleZone = {} +-- Inherits from PolyZone +setmetatable(CircleZone, { __index = PolyZone }) + +function CircleZone:draw(forceDraw) + if not forceDraw and not self.debugPoly then return end + local center = self.center + local debugColor = self.debugColor + local r, g, b = debugColor[1], debugColor[2], debugColor[3] + if self.useZ then + local radius = self.radius + DrawMarker(28, center.x, center.y, center.z, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, radius, radius, radius, r, g, b, 48, false, false, 2, nil, nil, false) + else + local diameter = self.diameter + DrawMarker(1, center.x, center.y, -500.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, diameter, diameter, 1000.0, r, g, b, 96, false, false, 2, nil, nil, false) + end +end + + +local function _initDebug(zone, options) + if options.debugBlip then zone:addDebugBlip() end + if not options.debugPoly then + return + end + + Citizen.CreateThread(function() + while not zone.destroyed do + zone:draw(false) + Citizen.Wait(0) + end + end) +end + +function CircleZone:new(center, radius, options) + options = options or {} + local zone = { + name = tostring(options.name) or nil, + center = center, + radius = radius + 0.0, + diameter = radius * 2.0, + useZ = options.useZ or false, + debugPoly = options.debugPoly or false, + debugColor = options.debugColor or {0, 255, 0}, + data = options.data or {}, + isCircleZone = true, + } + if zone.useZ then + assert(type(zone.center) == "vector3", "Center must be vector3 if useZ is true {center=" .. center .. "}") + end + setmetatable(zone, self) + self.__index = self + return zone +end + +function CircleZone:Create(center, radius, options) + local zone = CircleZone:new(center, radius, options) + _initDebug(zone, options) + return zone +end + +function CircleZone:isPointInside(point) + if self.destroyed then + print("[PolyZone] Warning: Called isPointInside on destroyed zone {name=" .. self.name .. "}") + return false + end + + local center = self.center + local radius = self.radius + + if self.useZ then + return #(point - center) < radius + else + return #(point.xy - center.xy) < radius + end +end + +function CircleZone:getRadius() + return self.radius +end + +function CircleZone:setRadius(radius) + if not radius or radius == self.radius then + return + end + self.radius = radius + self.diameter = radius * 2.0 +end + +function CircleZone:getCenter() + return self.center +end + +function CircleZone:setCenter(center) + if not center or center == self.center then + return + end + self.center = center +end diff --git a/resources/[core]/PolyZone/ComboZone.lua b/resources/[core]/PolyZone/ComboZone.lua new file mode 100644 index 0000000..63a70e9 --- /dev/null +++ b/resources/[core]/PolyZone/ComboZone.lua @@ -0,0 +1,369 @@ +local mapMinX, mapMinY, mapMaxX, mapMaxY = -3700, -4400, 4500, 8000 +local xDivisions = 34 +local yDivisions = 50 +local xDelta = (mapMaxX - mapMinX) / xDivisions +local yDelta = (mapMaxY - mapMinY) / yDivisions + +ComboZone = {} + +-- Finds all values in tblA that are not in tblB, using the "id" property +local function tblDifference(tblA, tblB) + local diff + for _, a in ipairs(tblA) do + local found = false + for _, b in ipairs(tblB) do + if b.id == a.id then + found = true + break + end + end + if not found then + diff = diff or {} + diff[#diff+1] = a + end + end + return diff +end + +local function _differenceBetweenInsideZones(insideZones, newInsideZones) + local insideZonesCount, newInsideZonesCount = #insideZones, #newInsideZones + if insideZonesCount == 0 and newInsideZonesCount == 0 then + -- No zones to check + return false, nil, nil + elseif insideZonesCount == 0 and newInsideZonesCount > 0 then + -- Was in no zones last check, but in 1 or more zones now (just entered all zones in newInsideZones) + return true, copyTbl(newInsideZones), nil + elseif insideZonesCount > 0 and newInsideZonesCount == 0 then + -- Was in 1 or more zones last check, but in no zones now (just left all zones in insideZones) + return true, nil, copyTbl(insideZones) + end + + -- Check for zones that were in insideZones, but are not in newInsideZones (zones the player just left) + local leftZones = tblDifference(insideZones, newInsideZones) + -- Check for zones that are in newInsideZones, but were not in insideZones (zones the player just entered) + local enteredZones = tblDifference(newInsideZones, insideZones) + + local isDifferent = enteredZones ~= nil or leftZones ~= nil + return isDifferent, enteredZones, leftZones +end + +local function _getZoneBounds(zone) + local center = zone.center + local radius = zone.radius or zone.boundingRadius + local minY = (center.y - radius - mapMinY) // yDelta + local maxY = (center.y + radius - mapMinY) // yDelta + local minX = (center.x - radius - mapMinX) // xDelta + local maxX = (center.x + radius - mapMinX) // xDelta + return minY, maxY, minX, maxX +end + +local function _removeZoneByFunction(predicateFn, zones) + if predicateFn == nil or zones == nil or #zones == 0 then return end + + for i=1, #zones do + local possibleZone = zones[i] + if possibleZone and predicateFn(possibleZone) then + table.remove(zones, i) + return possibleZone + end + end + return nil +end + +local function _addZoneToGrid(grid, zone) + local minY, maxY, minX, maxX = _getZoneBounds(zone) + for y=minY, maxY do + local row = grid[y] or {} + for x=minX, maxX do + local cell = row[x] or {} + cell[#cell+1] = zone + row[x] = cell + end + grid[y] = row + end +end + +local function _getGridCell(pos) + local x = (pos.x - mapMinX) // xDelta + local y = (pos.y - mapMinY) // yDelta + return x, y +end + + +function ComboZone:draw(forceDraw) + local zones = self.zones + for i=1, #zones do + local zone = zones[i] + if zone and not zone.destroyed then + zone:draw(forceDraw) + end + end +end + + +local function _initDebug(zone, options) + if options.debugBlip then zone:addDebugBlip() end + if not options.debugPoly then + return + end + + Citizen.CreateThread(function() + while not zone.destroyed do + zone:draw(false) + Citizen.Wait(0) + end + end) +end + +function ComboZone:new(zones, options) + options = options or {} + local useGrid = options.useGrid + if useGrid == nil then useGrid = true end + + local grid = {} + -- Add a unique id for each zone in the ComboZone and add to grid cache + for i=1, #zones do + local zone = zones[i] + if zone then + zone.id = i + end + if useGrid then _addZoneToGrid(grid, zone) end + end + + local zone = { + name = tostring(options.name) or nil, + zones = zones, + useGrid = useGrid, + grid = grid, + debugPoly = options.debugPoly or false, + data = options.data or {}, + isComboZone = true, + } + setmetatable(zone, self) + self.__index = self + return zone +end + +function ComboZone:Create(zones, options) + local zone = ComboZone:new(zones, options) + _initDebug(zone, options) + AddEventHandler("polyzone:pzcomboinfo", function () + zone:printInfo() + end) + return zone +end + +function ComboZone:getZones(point) + if not self.useGrid then + return self.zones + end + + local grid = self.grid + local x, y = _getGridCell(point) + local row = grid[y] + if row == nil or row[x] == nil then + return nil + end + return row[x] +end + +function ComboZone:AddZone(zone) + local zones = self.zones + local newIndex = #zones+1 + zone.id = newIndex + zones[newIndex] = zone + if self.useGrid then + _addZoneToGrid(self.grid, zone) + end + if self.debugBlip then zone:addDebugBlip() end +end + +function ComboZone:RemoveZone(nameOrFn) + local predicateFn = nameOrFn + if type(nameOrFn) == "string" then + -- Create on the fly predicate function if nameOrFn is a string (zone name) + predicateFn = function (zone) return zone.name == nameOrFn end + elseif type(nameOrFn) ~= "function" then + return nil + end + + -- Remove from zones table + local zone = _removeZoneByFunction(predicateFn, self.zones) + if not zone then return nil end + + -- Remove from grid cache + local grid = self.grid + local minY, maxY, minX, maxX = _getZoneBounds(zone) + for y=minY, maxY do + local row = grid[y] + if row then + for x=minX, maxX do + _removeZoneByFunction(predicateFn, row[x]) + end + end + end + return zone +end + +function ComboZone:isPointInside(point, zoneName) + if self.destroyed then + print("[PolyZone] Warning: Called isPointInside on destroyed zone {name=" .. self.name .. "}") + return false, {} + end + + local zones = self:getZones(point) + if not zones or #zones == 0 then return false end + + for i=1, #zones do + local zone = zones[i] + if zone and (zoneName == nil or zoneName == zone.name) and zone:isPointInside(point) then + return true, zone + end + end + return false, nil +end + +function ComboZone:isPointInsideExhaustive(point, insideZones) + if self.destroyed then + print("[PolyZone] Warning: Called isPointInside on destroyed zone {name=" .. self.name .. "}") + return false, {} + end + + if insideZones ~= nil then + insideZones = clearTbl(insideZones) + else + insideZones = {} + end + local zones = self:getZones(point) + if not zones or #zones == 0 then return false, insideZones end + for i=1, #zones do + local zone = zones[i] + if zone and zone:isPointInside(point) then + insideZones[#insideZones+1] = zone + end + end + return #insideZones > 0, insideZones +end + +function ComboZone:destroy() + PolyZone.destroy(self) + local zones = self.zones + for i=1, #zones do + local zone = zones[i] + if zone and not zone.destroyed then + zone:destroy() + end + end +end + +function ComboZone:onPointInOut(getPointCb, onPointInOutCb, waitInMS) + -- Localize the waitInMS value for performance reasons (default of 500 ms) + local _waitInMS = 500 + if waitInMS ~= nil then _waitInMS = waitInMS end + + Citizen.CreateThread(function() + local isInside = nil + local insideZone = nil + while not self.destroyed do + if not self.paused then + local point = getPointCb() + local newIsInside, newInsideZone = self:isPointInside(point) + if newIsInside ~= isInside then + onPointInOutCb(newIsInside, point, newInsideZone or insideZone) + isInside = newIsInside + insideZone = newInsideZone + end + end + Citizen.Wait(_waitInMS) + end + end) +end + +function ComboZone:onPointInOutExhaustive(getPointCb, onPointInOutCb, waitInMS) + -- Localize the waitInMS value for performance reasons (default of 500 ms) + local _waitInMS = 500 + if waitInMS ~= nil then _waitInMS = waitInMS end + + Citizen.CreateThread(function() + local isInside, insideZones = nil, {} + local newIsInside, newInsideZones = nil, {} + while not self.destroyed do + if not self.paused then + local point = getPointCb() + newIsInside, newInsideZones = self:isPointInsideExhaustive(point, newInsideZones) + local isDifferent, enteredZones, leftZones = _differenceBetweenInsideZones(insideZones, newInsideZones) + if newIsInside ~= isInside or isDifferent then + isInside = newIsInside + insideZones = copyTbl(newInsideZones) + onPointInOutCb(isInside, point, insideZones, enteredZones, leftZones) + end + end + Citizen.Wait(_waitInMS) + end + end) +end + +function ComboZone:onPlayerInOut(onPointInOutCb, waitInMS) + self:onPointInOut(PolyZone.getPlayerPosition, onPointInOutCb, waitInMS) +end + +function ComboZone:onPlayerInOutExhaustive(onPointInOutCb, waitInMS) + self:onPointInOutExhaustive(PolyZone.getPlayerPosition, onPointInOutCb, waitInMS) +end + +function ComboZone:addEvent(eventName, zoneName) + if self.events == nil then self.events = {} end + local internalEventName = eventPrefix .. eventName + RegisterNetEvent(internalEventName) + self.events[eventName] = AddEventHandler(internalEventName, function (...) + if self:isPointInside(PolyZone.getPlayerPosition(), zoneName) then + TriggerEvent(eventName, ...) + end + end) +end + +function ComboZone:removeEvent(name) + PolyZone.removeEvent(self, name) +end + +function ComboZone:addDebugBlip() + self.debugBlip = true + local zones = self.zones + for i=1, #zones do + local zone = zones[i] + if zone then zone:addDebugBlip() end + end +end + +function ComboZone:printInfo() + local zones = self.zones + local polyCount, boxCount, circleCount, entityCount, comboCount = 0, 0, 0, 0, 0 + for i=1, #zones do + local zone = zones[i] + if zone then + if zone.isEntityZone then entityCount = entityCount + 1 + elseif zone.isCircleZone then circleCount = circleCount + 1 + elseif zone.isComboZone then comboCount = comboCount + 1 + elseif zone.isBoxZone then boxCount = boxCount + 1 + elseif zone.isPolyZone then polyCount = polyCount + 1 end + end + end + local name = self.name ~= nil and ("\"" .. self.name .. "\"") or nil + print("-----------------------------------------------------") + print("[PolyZone] Info for ComboZone { name = " .. tostring(name) .. " }:") + print("[PolyZone] Total zones: " .. #zones) + if boxCount > 0 then print("[PolyZone] BoxZones: " .. boxCount) end + if circleCount > 0 then print("[PolyZone] CircleZones: " .. circleCount) end + if polyCount > 0 then print("[PolyZone] PolyZones: " .. polyCount) end + if entityCount > 0 then print("[PolyZone] EntityZones: " .. entityCount) end + if comboCount > 0 then print("[PolyZone] ComboZones: " .. comboCount) end + print("-----------------------------------------------------") +end + +function ComboZone:setPaused(paused) + self.paused = paused +end + +function ComboZone:isPaused() + return self.paused +end diff --git a/resources/[core]/PolyZone/EntityZone.lua b/resources/[core]/PolyZone/EntityZone.lua new file mode 100644 index 0000000..5213cf0 --- /dev/null +++ b/resources/[core]/PolyZone/EntityZone.lua @@ -0,0 +1,143 @@ +EntityZone = {} +-- Inherits from BoxZone +setmetatable(EntityZone, { __index = BoxZone }) + +-- Utility functions +local deg, atan2 = math.deg, math.atan2 +local function GetRotation(entity) + local fwdVector = GetEntityForwardVector(entity) + return deg(atan2(fwdVector.y, fwdVector.x)) +end + +local function _calculateMinAndMaxZ(entity, dimensions, scaleZ, offsetZ) + local min, max = dimensions[1], dimensions[2] + local minX, minY, minZ, maxX, maxY, maxZ = min.x, min.y, min.z, max.x, max.y, max.z + + -- Bottom vertices + local p1 = GetOffsetFromEntityInWorldCoords(entity, minX, minY, minZ).z + local p2 = GetOffsetFromEntityInWorldCoords(entity, maxX, minY, minZ).z + local p3 = GetOffsetFromEntityInWorldCoords(entity, maxX, maxY, minZ).z + local p4 = GetOffsetFromEntityInWorldCoords(entity, minX, maxY, minZ).z + + -- Top vertices + local p5 = GetOffsetFromEntityInWorldCoords(entity, minX, minY, maxZ).z + local p6 = GetOffsetFromEntityInWorldCoords(entity, maxX, minY, maxZ).z + local p7 = GetOffsetFromEntityInWorldCoords(entity, maxX, maxY, maxZ).z + local p8 = GetOffsetFromEntityInWorldCoords(entity, minX, maxY, maxZ).z + + local entityMinZ = math.min(p1, p2, p3, p4, p5, p6, p7, p8) + local entityMaxZ = math.max(p1, p2, p3, p4, p5, p6, p7, p8) + return BoxZone.calculateMinAndMaxZ(entityMinZ, entityMaxZ, scaleZ, offsetZ) +end + +-- Initialization functions +local function _initDebug(zone, options) + if options.debugBlip then zone:addDebugBlip() end + if not options.debugPoly and not options.debugBlip then + return + end + + Citizen.CreateThread(function() + local entity = zone.entity + local shouldDraw = options.debugPoly + while not zone.destroyed do + UpdateOffsets(entity, zone) + if shouldDraw then zone:draw(false) end + Citizen.Wait(0) + end + end) +end + +function EntityZone:new(entity, options) + assert(DoesEntityExist(entity), "Entity does not exist") + + local min, max = GetModelDimensions(GetEntityModel(entity)) + local dimensions = {min, max} + + local length = max.y - min.y + local width = max.x - min.x + local pos = GetEntityCoords(entity) + + local zone = BoxZone:new(pos, length, width, options) + if options.useZ == true then + options.minZ, options.maxZ = _calculateMinAndMaxZ(entity, dimensions, zone.scaleZ, zone.offsetZ) + else + options.minZ = nil + options.maxZ = nil + end + zone.entity = entity + zone.dimensions = dimensions + zone.useZ = options.useZ + zone.damageEventHandlers = {} + zone.isEntityZone = true + setmetatable(zone, self) + self.__index = self + return zone +end + +function EntityZone:Create(entity, options) + local zone = EntityZone:new(entity, options) + _initDebug(zone, options) + return zone +end + +function UpdateOffsets(entity, zone) + local pos = GetEntityCoords(entity) + local rot = GetRotation(entity) + zone.offsetPos = pos.xy - zone.startPos + zone.offsetRot = rot - 90.0 + + if zone.useZ then + zone.minZ, zone.maxZ = _calculateMinAndMaxZ(entity, zone.dimensions, zone.scaleZ, zone.offsetZ) + end + if zone.debugBlip then SetBlipCoords(zone.debugBlip, pos.x, pos.y, 0.0) end +end + + +-- Helper functions +function EntityZone:isPointInside(point) + local entity = self.entity + if entity == nil then + print("[PolyZone] Error: Called isPointInside on Entity zone with no entity {name=" .. self.name .. "}") + return false + end + + UpdateOffsets(entity, self) + return BoxZone.isPointInside(self, point) +end + +function EntityZone:onEntityDamaged(onDamagedCb) + local entity = self.entity + if not entity then + print("[PolyZone] Error: Called onEntityDamage on Entity Zone with no entity {name=" .. self.name .. "}") + return + end + + self.damageEventHandlers[#self.damageEventHandlers + 1] = AddEventHandler('gameEventTriggered', function (name, args) + if self.destroyed or self.paused then + return + end + + if name == 'CEventNetworkEntityDamage' then + local victim, attacker, victimDied, weaponHash, isMelee = args[1], args[2], args[4], args[5], args[10] + --print(entity, victim, attacker, victimDied, weaponHash, isMelee) + if victim ~= entity then return end + onDamagedCb(victimDied == 1, attacker, weaponHash, isMelee == 1) + end + end) +end + +function EntityZone:destroy() + for i=1, #self.damageEventHandlers do + print("Destroying damageEventHandler:", self.damageEventHandlers[i]) + RemoveEventHandler(self.damageEventHandlers[i]) + end + self.damageEventHandlers = {} + PolyZone.destroy(self) +end + +function EntityZone:addDebugBlip() + local blip = PolyZone.addDebugBlip(self) + self.debugBlip = blip + return blip +end diff --git a/resources/[core]/PolyZone/LICENSE b/resources/[core]/PolyZone/LICENSE new file mode 100644 index 0000000..abfbc57 --- /dev/null +++ b/resources/[core]/PolyZone/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019-2021 Michael Afrin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/resources/[core]/PolyZone/README.md b/resources/[core]/PolyZone/README.md new file mode 100644 index 0000000..1bef136 --- /dev/null +++ b/resources/[core]/PolyZone/README.md @@ -0,0 +1,51 @@ +# PolyZone +PolyZone is a FiveM mod to define zones of different shapes and test whether a point is inside or outside of the zone + +![PolyZone around the prison](https://i.imgur.com/InKNaoL.jpg) + +## Download + +Click [here](https://github.com/mkafrin/PolyZone/releases) to go to the releases page and download the latest release + +## Using PolyZone in a Script + +In order to use PolyZone in your script, you must _at least_ include PolyZone's client.lua directly in your __resource.lua or fxmanifest.lua. You can do that by using FiveM's @ syntax for importing resource files: + +```lua +client_scripts { + '@PolyZone/client.lua', + 'your_scripts_client.lua', +} +``` + +This will allow you to create PolyZones in your script, but will not import other zones, such as CircleZone, BoxZone, etc. All the other zones are extra, and require their own explicit imports. Here is a `client_scripts` value that will include all the zones. Note the relative order of these imports, as the ordering is necessary! Many zones rely on each other, for example EntityZone inherits from BoxZone, and all zones inherit from PolyZone (client.lua). + +```lua +client_scripts { + '@PolyZone/client.lua', + '@PolyZone/BoxZone.lua', + '@PolyZone/EntityZone.lua', + '@PolyZone/CircleZone.lua', + '@PolyZone/ComboZone.lua', + 'your_scripts_client.lua' +} +``` + +## Documentation +For additional information on how to use PolyZone, please take a look at the [wiki](https://github.com/mkafrin/PolyZone/wiki) + +## Troubleshooting and Support +For help troubleshooting issues you've encountered (that aren't in the FAQ), or to suggest new features, use the [issues page](https://github.com/mkafrin/PolyZone/issues). Just a reminder though, I do this in my free time and so there is no guarantee an issue will be fixed or a feature will be added. In lieu of my limited time, I will prioritize issues and bugs over features. + +## FAQ - Frequently Asked Questions +**I'm getting the error `attempt to index a nil value` when creating a zone, what's wrong?** +> Did you include all the necessary scripts in your \_\_resource.lua or fxmanifest.lua? Remember some zones require other zones, like EntityZone.lua requires BoxZone.lua and BoxZone.lua requires client.lua. + +**I'm getting no errors, but I can't see my zone in the right place when I turn on debug drawing** +> If you are using them, is minZ and maxZ set correctly? Or if you are using a CircleZone with useZ=true, is your center's Z value correct? If using a PolyZone, did you manually select all your points, or use the creation script? If you did it manually, the ordering of the points could be causing issues. Are you using the correct option to enable debug drawing? For PolyZones, you can use `debugPoly` and `debugGrid`, but for other zones, `debugPoly` is the only one that works. + +**Is PolyZone faster than a distance check?** +> There's a page in the wiki for that, [here](https://github.com/mkafrin/PolyZone/wiki/Is-PolyZone-faster-than-a-distance-check%3F). + +## License +**Please see the LICENSE file. That file will always overrule anything mentioned in the README.md or wiki** diff --git a/resources/[core]/PolyZone/client.lua b/resources/[core]/PolyZone/client.lua new file mode 100644 index 0000000..a71a5e7 --- /dev/null +++ b/resources/[core]/PolyZone/client.lua @@ -0,0 +1,601 @@ +eventPrefix = '__PolyZone__:' +PolyZone = {} + +local defaultColorWalls = {0, 255, 0} +local defaultColorOutline = {255, 0, 0} +local defaultColorGrid = {255, 255, 255} + +-- Utility functions +local abs = math.abs +local function _isLeft(p0, p1, p2) + local p0x = p0.x + local p0y = p0.y + return ((p1.x - p0x) * (p2.y - p0y)) - ((p2.x - p0x) * (p1.y - p0y)) +end + +local function _wn_inner_loop(p0, p1, p2, wn) + local p2y = p2.y + if (p0.y <= p2y) then + if (p1.y > p2y) then + if (_isLeft(p0, p1, p2) > 0) then + return wn + 1 + end + end + else + if (p1.y <= p2y) then + if (_isLeft(p0, p1, p2) < 0) then + return wn - 1 + end + end + end + return wn +end + +function addBlip(pos) + local blip = AddBlipForCoord(pos.x, pos.y, 0.0) + SetBlipColour(blip, 7) + SetBlipDisplay(blip, 8) + SetBlipScale(blip, 1.0) + SetBlipAsShortRange(blip, true) + return blip +end + +function clearTbl(tbl) + -- Only works with contiguous (array-like) tables + if tbl == nil then return end + for i=1, #tbl do + tbl[i] = nil + end + return tbl +end + +function copyTbl(tbl) + -- Only a shallow copy, and only works with contiguous (array-like) tables + if tbl == nil then return end + local ret = {} + for i=1, #tbl do + ret[i] = tbl[i] + end + return ret +end + +-- Winding Number Algorithm - http://geomalgorithms.com/a03-_inclusion.html +local function _windingNumber(point, poly) + local wn = 0 -- winding number counter + + -- loop through all edges of the polygon + for i = 1, #poly - 1 do + wn = _wn_inner_loop(poly[i], poly[i + 1], point, wn) + end + -- test last point to first point, completing the polygon + wn = _wn_inner_loop(poly[#poly], poly[1], point, wn) + + -- the point is outside only when this winding number wn===0, otherwise it's inside + return wn ~= 0 +end + +-- Detects intersection between two lines +local function _isIntersecting(a, b, c, d) + -- Store calculations in local variables for performance + local ax_minus_cx = a.x - c.x + local bx_minus_ax = b.x - a.x + local dx_minus_cx = d.x - c.x + local ay_minus_cy = a.y - c.y + local by_minus_ay = b.y - a.y + local dy_minus_cy = d.y - c.y + local denominator = ((bx_minus_ax) * (dy_minus_cy)) - ((by_minus_ay) * (dx_minus_cx)) + local numerator1 = ((ay_minus_cy) * (dx_minus_cx)) - ((ax_minus_cx) * (dy_minus_cy)) + local numerator2 = ((ay_minus_cy) * (bx_minus_ax)) - ((ax_minus_cx) * (by_minus_ay)) + + -- Detect coincident lines + if denominator == 0 then return numerator1 == 0 and numerator2 == 0 end + + local r = numerator1 / denominator + local s = numerator2 / denominator + + return (r >= 0 and r <= 1) and (s >= 0 and s <= 1) +end + +-- https://rosettacode.org/wiki/Shoelace_formula_for_polygonal_area#Lua +local function _calculatePolygonArea(points) + local function det2(i,j) + return points[i].x*points[j].y-points[j].x*points[i].y + end + local sum = #points>2 and det2(#points,1) or 0 + for i=1,#points-1 do sum = sum + det2(i,i+1)end + return abs(0.5 * sum) +end + + +-- Debug drawing functions +function _drawWall(p1, p2, minZ, maxZ, r, g, b, a) + local bottomLeft = vector3(p1.x, p1.y, minZ) + local topLeft = vector3(p1.x, p1.y, maxZ) + local bottomRight = vector3(p2.x, p2.y, minZ) + local topRight = vector3(p2.x, p2.y, maxZ) + + DrawPoly(bottomLeft,topLeft,bottomRight,r,g,b,a) + DrawPoly(topLeft,topRight,bottomRight,r,g,b,a) + DrawPoly(bottomRight,topRight,topLeft,r,g,b,a) + DrawPoly(bottomRight,topLeft,bottomLeft,r,g,b,a) +end + +function PolyZone:TransformPoint(point) + -- No point transform necessary for regular PolyZones, unlike zones like Entity Zones, whose points can be rotated and offset + return point +end + +function PolyZone:draw(forceDraw) + if not forceDraw and not self.debugPoly and not self.debugGrid then return end + + local zDrawDist = 45.0 + local oColor = self.debugColors.outline or defaultColorOutline + local oR, oG, oB = oColor[1], oColor[2], oColor[3] + local wColor = self.debugColors.walls or defaultColorWalls + local wR, wG, wB = wColor[1], wColor[2], wColor[3] + local plyPed = PlayerPedId() + local plyPos = GetEntityCoords(plyPed) + local minZ = self.minZ or plyPos.z - zDrawDist + local maxZ = self.maxZ or plyPos.z + zDrawDist + + local points = self.points + for i=1, #points do + local point = self:TransformPoint(points[i]) + DrawLine(point.x, point.y, minZ, point.x, point.y, maxZ, oR, oG, oB, 164) + + if i < #points then + local p2 = self:TransformPoint(points[i+1]) + DrawLine(point.x, point.y, maxZ, p2.x, p2.y, maxZ, oR, oG, oB, 184) + _drawWall(point, p2, minZ, maxZ, wR, wG, wB, 48) + end + end + + if #points > 2 then + local firstPoint = self:TransformPoint(points[1]) + local lastPoint = self:TransformPoint(points[#points]) + DrawLine(firstPoint.x, firstPoint.y, maxZ, lastPoint.x, lastPoint.y, maxZ, oR, oG, oB, 184) + _drawWall(firstPoint, lastPoint, minZ, maxZ, wR, wG, wB, 48) + end +end + +function PolyZone.drawPoly(poly, forceDraw) + PolyZone.draw(poly, forceDraw) +end + +-- Debug drawing all grid cells that are completly within the polygon +local function _drawGrid(poly) + local minZ = poly.minZ + local maxZ = poly.maxZ + if not minZ or not maxZ then + local plyPed = PlayerPedId() + local plyPos = GetEntityCoords(plyPed) + minZ = plyPos.z - 46.0 + maxZ = plyPos.z - 45.0 + end + + local lines = poly.lines + local color = poly.debugColors.grid or defaultColorGrid + local r, g, b = color[1], color[2], color[3] + for i=1, #lines do + local line = lines[i] + local min = line.min + local max = line.max + DrawLine(min.x + 0.0, min.y + 0.0, maxZ + 0.0, max.x + 0.0, max.y + 0.0, maxZ + 0.0, r, g, b, 196) + end +end + + +local function _pointInPoly(point, poly) + local x = point.x + local y = point.y + local min = poly.min + local minX = min.x + local minY = min.y + local max = poly.max + + -- Checks if point is within the polygon's bounding box + if x < minX or + x > max.x or + y < minY or + y > max.y then + return false + end + + -- Checks if point is within the polygon's height bounds + local minZ = poly.minZ + local maxZ = poly.maxZ + local z = point.z + if (minZ and z < minZ) or (maxZ and z > maxZ) then + return false + end + + -- Returns true if the grid cell associated with the point is entirely inside the poly + local grid = poly.grid + if grid then + local gridDivisions = poly.gridDivisions + local size = poly.size + local gridPosX = x - minX + local gridPosY = y - minY + local gridCellX = (gridPosX * gridDivisions) // size.x + local gridCellY = (gridPosY * gridDivisions) // size.y + local gridCellValue = grid[gridCellY + 1][gridCellX + 1] + if gridCellValue == nil and poly.lazyGrid then + gridCellValue = _isGridCellInsidePoly(gridCellX, gridCellY, poly) + grid[gridCellY + 1][gridCellX + 1] = gridCellValue + end + if gridCellValue then return true end + end + + return _windingNumber(point, poly.points) +end + + +-- Grid creation functions +-- Calculates the points of the rectangle that make up the grid cell at grid position (cellX, cellY) +local function _calculateGridCellPoints(cellX, cellY, poly) + local gridCellWidth = poly.gridCellWidth + local gridCellHeight = poly.gridCellHeight + local min = poly.min + -- min added to initial point, in order to shift the grid cells to the poly's starting position + local x = cellX * gridCellWidth + min.x + local y = cellY * gridCellHeight + min.y + return { + vector2(x, y), + vector2(x + gridCellWidth, y), + vector2(x + gridCellWidth, y + gridCellHeight), + vector2(x, y + gridCellHeight), + vector2(x, y) + } +end + + +function _isGridCellInsidePoly(cellX, cellY, poly) + gridCellPoints = _calculateGridCellPoints(cellX, cellY, poly) + local polyPoints = {table.unpack(poly.points)} + -- Connect the polygon to its starting point + polyPoints[#polyPoints + 1] = polyPoints[1] + + -- If none of the points of the grid cell are in the polygon, the grid cell can't be in it + local isOnePointInPoly = false + for i=1, #gridCellPoints - 1 do + local cellPoint = gridCellPoints[i] + local x = cellPoint.x + local y = cellPoint.y + if _windingNumber(cellPoint, poly.points) then + isOnePointInPoly = true + -- If we are drawing the grid (poly.lines ~= nil), we need to go through all the points, + -- and therefore can't break out of the loop early + if poly.lines then + if not poly.gridXPoints[x] then poly.gridXPoints[x] = {} end + if not poly.gridYPoints[y] then poly.gridYPoints[y] = {} end + poly.gridXPoints[x][y] = true + poly.gridYPoints[y][x] = true + else break end + end + end + if isOnePointInPoly == false then + return false + end + + -- If any of the grid cell's lines intersects with any of the polygon's lines + -- then the grid cell is not completely within the poly + for i=1, #gridCellPoints - 1 do + local gridCellP1 = gridCellPoints[i] + local gridCellP2 = gridCellPoints[i+1] + for j=1, #polyPoints - 1 do + if _isIntersecting(gridCellP1, gridCellP2, polyPoints[j], polyPoints[j+1]) then + return false + end + end + end + + return true +end + + +local function _calculateLinesForDrawingGrid(poly) + local lines = {} + for x, tbl in pairs(poly.gridXPoints) do + local yValues = {} + -- Turn dict/set of values into array + for y, _ in pairs(tbl) do yValues[#yValues + 1] = y end + if #yValues >= 2 then + table.sort(yValues) + local minY = yValues[1] + local lastY = yValues[1] + for i=1, #yValues do + local y = yValues[i] + -- Checks for breaks in the grid. If the distance between the last value and the current one + -- is greater than the size of a grid cell, that means the line between them must go outside the polygon. + -- Therefore, a line must be created between minY and the lastY, and a new line started at the current y + if y - lastY > poly.gridCellHeight + 0.01 then + lines[#lines+1] = {min=vector2(x, minY), max=vector2(x, lastY)} + minY = y + elseif i == #yValues then + -- If at the last point, create a line between minY and the last point + lines[#lines+1] = {min=vector2(x, minY), max=vector2(x, y)} + end + lastY = y + end + end + end + -- Setting nil to allow the GC to clear it out of memory, since we no longer need this + poly.gridXPoints = nil + + -- Same as above, but for gridYPoints instead of gridXPoints + for y, tbl in pairs(poly.gridYPoints) do + local xValues = {} + for x, _ in pairs(tbl) do xValues[#xValues + 1] = x end + if #xValues >= 2 then + table.sort(xValues) + local minX = xValues[1] + local lastX = xValues[1] + for i=1, #xValues do + local x = xValues[i] + if x - lastX > poly.gridCellWidth + 0.01 then + lines[#lines+1] = {min=vector2(minX, y), max=vector2(lastX, y)} + minX = x + elseif i == #xValues then + lines[#lines+1] = {min=vector2(minX, y), max=vector2(x, y)} + end + lastX = x + end + end + end + poly.gridYPoints = nil + return lines +end + + +-- Calculate for each grid cell whether it is entirely inside the polygon, and store if true +local function _createGrid(poly, options) + poly.gridArea = 0.0 + poly.gridCellWidth = poly.size.x / poly.gridDivisions + poly.gridCellHeight = poly.size.y / poly.gridDivisions + Citizen.CreateThread(function() + -- Calculate all grid cells that are entirely inside the polygon + local isInside = {} + local gridCellArea = poly.gridCellWidth * poly.gridCellHeight + for y=1, poly.gridDivisions do + Citizen.Wait(0) + isInside[y] = {} + for x=1, poly.gridDivisions do + if _isGridCellInsidePoly(x-1, y-1, poly) then + poly.gridArea = poly.gridArea + gridCellArea + isInside[y][x] = true + end + end + end + poly.grid = isInside + poly.gridCoverage = poly.gridArea / poly.area + -- A lot of memory is used by this pre-calc. Force a gc collect after to clear it out + collectgarbage("collect") + + if options.debugGrid then + local coverage = string.format("%.2f", poly.gridCoverage * 100) + print("[PolyZone] Debug: Grid Coverage at " .. coverage .. "% with " .. poly.gridDivisions + .. " divisions. Optimal coverage for memory usage and startup time is 80-90%") + + Citizen.CreateThread(function() + poly.lines = _calculateLinesForDrawingGrid(poly) + -- A lot of memory is used by this pre-calc. Force a gc collect after to clear it out + collectgarbage("collect") + end) + end + end) +end + + +-- Initialization functions +local function _calculatePoly(poly, options) + if not poly.min or not poly.max or not poly.size or not poly.center or not poly.area then + local minX, minY = math.maxinteger, math.maxinteger + local maxX, maxY = math.mininteger, math.mininteger + for _, p in ipairs(poly.points) do + minX = math.min(minX, p.x) + minY = math.min(minY, p.y) + maxX = math.max(maxX, p.x) + maxY = math.max(maxY, p.y) + end + poly.min = vector2(minX, minY) + poly.max = vector2(maxX, maxY) + poly.size = poly.max - poly.min + poly.center = (poly.max + poly.min) / 2 + poly.area = _calculatePolygonArea(poly.points) + end + + poly.boundingRadius = math.sqrt(poly.size.y * poly.size.y + poly.size.x * poly.size.x) / 2 + + if poly.useGrid and not poly.lazyGrid then + if options.debugGrid then + poly.gridXPoints = {} + poly.gridYPoints = {} + poly.lines = {} + end + _createGrid(poly, options) + elseif poly.useGrid then + local isInside = {} + for y=1, poly.gridDivisions do + isInside[y] = {} + end + poly.grid = isInside + poly.gridCellWidth = poly.size.x / poly.gridDivisions + poly.gridCellHeight = poly.size.y / poly.gridDivisions + end +end + + +local function _initDebug(poly, options) + if options.debugBlip then poly:addDebugBlip() end + local debugEnabled = options.debugPoly or options.debugGrid + if not debugEnabled then + return + end + + Citizen.CreateThread(function() + while not poly.destroyed do + poly:draw(false) + if options.debugGrid and poly.lines then + _drawGrid(poly) + end + Citizen.Wait(0) + end + end) +end + +function PolyZone:new(points, options) + if not points then + print("[PolyZone] Error: Passed nil points table to PolyZone:Create() {name=" .. options.name .. "}") + return + end + if #points < 3 then + print("[PolyZone] Warning: Passed points table with less than 3 points to PolyZone:Create() {name=" .. options.name .. "}") + end + + options = options or {} + local useGrid = options.useGrid + if useGrid == nil then useGrid = true end + local lazyGrid = options.lazyGrid + if lazyGrid == nil then lazyGrid = true end + local poly = { + name = tostring(options.name) or nil, + points = points, + center = options.center, + size = options.size, + max = options.max, + min = options.min, + area = options.area, + minZ = tonumber(options.minZ) or nil, + maxZ = tonumber(options.maxZ) or nil, + useGrid = useGrid, + lazyGrid = lazyGrid, + gridDivisions = tonumber(options.gridDivisions) or 30, + debugColors = options.debugColors or {}, + debugPoly = options.debugPoly or false, + debugGrid = options.debugGrid or false, + data = options.data or {}, + isPolyZone = true, + } + if poly.debugGrid then poly.lazyGrid = false end + _calculatePoly(poly, options) + setmetatable(poly, self) + self.__index = self + return poly +end + +function PolyZone:Create(points, options) + local poly = PolyZone:new(points, options) + _initDebug(poly, options) + return poly +end + +function PolyZone:isPointInside(point) + if self.destroyed then + print("[PolyZone] Warning: Called isPointInside on destroyed zone {name=" .. self.name .. "}") + return false + end + + return _pointInPoly(point, self) +end + +function PolyZone:destroy() + self.destroyed = true + if self.debugPoly or self.debugGrid then + print("[PolyZone] Debug: Destroying zone {name=" .. self.name .. "}") + end +end + +-- Helper functions +function PolyZone.getPlayerPosition() + return GetEntityCoords(PlayerPedId()) +end + +HeadBone = 0x796e; +function PolyZone.getPlayerHeadPosition() + return GetPedBoneCoords(PlayerPedId(), HeadBone); +end + +function PolyZone.ensureMetatable(zone) + if zone.isComboZone then + setmetatable(zone, ComboZone) + elseif zone.isEntityZone then + setmetatable(zone, EntityZone) + elseif zone.isBoxZone then + setmetatable(zone, BoxZone) + elseif zone.isCircleZone then + setmetatable(zone, CircleZone) + elseif zone.isPolyZone then + setmetatable(zone, PolyZone) + end +end + +function PolyZone:onPointInOut(getPointCb, onPointInOutCb, waitInMS) + -- Localize the waitInMS value for performance reasons (default of 500 ms) + local _waitInMS = 500 + if waitInMS ~= nil then _waitInMS = waitInMS end + + Citizen.CreateThread(function() + local isInside = false + while not self.destroyed do + if not self.paused then + local point = getPointCb() + local newIsInside = self:isPointInside(point) + if newIsInside ~= isInside then + onPointInOutCb(newIsInside, point) + isInside = newIsInside + end + end + Citizen.Wait(_waitInMS) + end + end) +end + +function PolyZone:onPlayerInOut(onPointInOutCb, waitInMS) + self:onPointInOut(PolyZone.getPlayerPosition, onPointInOutCb, waitInMS) +end + +function PolyZone:addEvent(eventName) + if self.events == nil then self.events = {} end + local internalEventName = eventPrefix .. eventName + RegisterNetEvent(internalEventName) + self.events[eventName] = AddEventHandler(internalEventName, function (...) + if self:isPointInside(PolyZone.getPlayerPosition()) then + TriggerEvent(eventName, ...) + end + end) +end + +function PolyZone:removeEvent(eventName) + if self.events and self.events[eventName] then + RemoveEventHandler(self.events[eventName]) + self.events[eventName] = nil + end +end + +function PolyZone:addDebugBlip() + return addBlip(self.center or self:getBoundingBoxCenter()) +end + +function PolyZone:setPaused(paused) + self.paused = paused +end + +function PolyZone:isPaused() + return self.paused +end + +function PolyZone:getBoundingBoxMin() + return self.min +end + +function PolyZone:getBoundingBoxMax() + return self.max +end + +function PolyZone:getBoundingBoxSize() + return self.size +end + +function PolyZone:getBoundingBoxCenter() + return self.center +end diff --git a/resources/[core]/PolyZone/creation/client/BoxZone.lua b/resources/[core]/PolyZone/creation/client/BoxZone.lua new file mode 100644 index 0000000..69eeec1 --- /dev/null +++ b/resources/[core]/PolyZone/creation/client/BoxZone.lua @@ -0,0 +1,113 @@ +local function handleInput(useZ, heading, length, width, center) + if not useZ then + local scaleDelta, headingDelta = 0.2, 5 + BlockWeaponWheelThisFrame() + + if IsDisabledControlPressed(0, 36) then -- ctrl held down + scaleDelta, headingDelta = 0.05, 1 + end + + if IsDisabledControlJustPressed(0, 81) then -- scroll wheel down just pressed + + if IsDisabledControlPressed(0, 19) then -- alt held down + return heading, length, math.max(0.0, width - scaleDelta), center + end + if IsDisabledControlPressed(0, 21) then -- shift held down + return heading, math.max(0.0, length - scaleDelta), width, center + end + return (heading - headingDelta) % 360, length, width, center + end + + + if IsDisabledControlJustPressed(0, 99) then -- scroll wheel up just pressed + + if IsDisabledControlPressed(0, 19) then -- alt held down + return heading, length, math.max(0.0, width + scaleDelta), center + end + if IsDisabledControlPressed(0, 21) then -- shift held down + return heading, math.max(0.0, length + scaleDelta), width, center + end + return (heading + headingDelta) % 360, length, width, center + end + end + + local rot = GetGameplayCamRot(2) + center = handleArrowInput(center, rot.z) + + return heading, length, width, center +end + +function handleZ(minZ, maxZ) + local delta = 0.2 + + if IsDisabledControlPressed(0, 36) then -- ctrl held down + delta = 0.05 + end + + BlockWeaponWheelThisFrame() + + if IsDisabledControlJustPressed(0, 81) then -- scroll wheel down just pressed + + if IsDisabledControlPressed(0, 19) then -- alt held down + return minZ - delta, maxZ + end + if IsDisabledControlPressed(0, 21) then -- shift held down + return minZ, maxZ - delta + end + return minZ - delta, maxZ - delta + end + + if IsDisabledControlJustPressed(0, 99) then -- scroll wheel up just pressed + + if IsDisabledControlPressed(0, 19) then -- alt held down + return minZ + delta, maxZ + end + if IsDisabledControlPressed(0, 21) then -- shift held down + return minZ, maxZ + delta + end + return minZ + delta, maxZ + delta + end + return minZ, maxZ +end + +function boxStart(name, heading, length, width, minHeight, maxHeight) + local center = GetEntityCoords(PlayerPedId()) + createdZone = BoxZone:Create(center, length, width, {name = tostring(name)}) + local useZ, minZ, maxZ = false, center.z - 1.0, center.z + 3.0 + if minHeight then + minZ = center.z - minHeight + createdZone.minZ = minZ + end + if maxHeight then + maxZ = center.z + maxHeight + createdZone.maxZ = maxZ + end + Citizen.CreateThread(function() + while createdZone do + if IsDisabledControlJustPressed(0, 20) then -- Z pressed + useZ = not useZ + if useZ then + createdZone.debugColors.walls = {255, 0, 0} + else + createdZone.debugColors.walls = {0, 255, 0} + end + end + heading, length, width, center = handleInput(useZ, heading, length, width, center) + if useZ then + minZ, maxZ = handleZ(minZ, maxZ) + createdZone.minZ = minZ + createdZone.maxZ = maxZ + end + createdZone:setLength(length) + createdZone:setWidth(width) + createdZone:setHeading(heading) + createdZone:setCenter(center) + Wait(0) + end + end) +end + +function boxFinish() + TriggerServerEvent("polyzone:printBox", + {name=createdZone.name, center=createdZone.center, length=createdZone.length, width=createdZone.width, heading=createdZone.offsetRot, minZ=createdZone.minZ, maxZ=createdZone.maxZ}) +end \ No newline at end of file diff --git a/resources/[core]/PolyZone/creation/client/CircleZone.lua b/resources/[core]/PolyZone/creation/client/CircleZone.lua new file mode 100644 index 0000000..5e6cb8f --- /dev/null +++ b/resources/[core]/PolyZone/creation/client/CircleZone.lua @@ -0,0 +1,54 @@ +local function handleInput(radius, center, useZ) + local delta = 0.05 + BlockWeaponWheelThisFrame() + + if IsDisabledControlPressed(0, 36) then -- ctrl held down + delta = 0.01 + end + + if IsDisabledControlJustPressed(0, 81) then -- scroll wheel down just pressed + + if IsDisabledControlPressed(0, 19) then -- alt held down + return radius, vector3(center.x, center.y, center.z - delta), useZ + end + return math.max(0.0, radius - delta), center, useZ + end + + + if IsDisabledControlJustPressed(0, 99) then -- scroll wheel up just pressed + + if IsDisabledControlPressed(0, 19) then -- alt held down + return radius, vector3(center.x, center.y, center.z + delta), useZ + end + return radius + delta, center, useZ + end + + if IsDisabledControlJustPressed(0, 20) then -- Z pressed + return radius, center, not useZ + end + + local rot = GetGameplayCamRot(2) + center = handleArrowInput(center, rot.z) + + return radius, center, useZ +end + +function circleStart(name, radius, useZ) + local center = GetEntityCoords(PlayerPedId()) + useZ = useZ or false + createdZone = CircleZone:Create(center, radius, {name = tostring(name), useZ = useZ}) + Citizen.CreateThread(function() + while createdZone do + radius, center, useZ = handleInput(radius, center, useZ) + createdZone:setRadius(radius) + createdZone:setCenter(center) + createdZone.useZ = useZ + Wait(0) + end + end) +end + +function circleFinish() + TriggerServerEvent("polyzone:printCircle", + {name=createdZone.name, center=createdZone.center, radius=createdZone.radius, useZ=createdZone.useZ}) +end \ No newline at end of file diff --git a/resources/[core]/PolyZone/creation/client/PolyZone.lua b/resources/[core]/PolyZone/creation/client/PolyZone.lua new file mode 100644 index 0000000..e5ff532 --- /dev/null +++ b/resources/[core]/PolyZone/creation/client/PolyZone.lua @@ -0,0 +1,60 @@ +local minZ, maxZ = nil, nil + +local function handleInput(center) + local rot = GetGameplayCamRot(2) + center = handleArrowInput(center, rot.z) + return center +end + +function polyStart(name) + local coords = GetEntityCoords(PlayerPedId()) + createdZone = PolyZone:Create({vector2(coords.x, coords.y)}, {name = tostring(name), useGrid=false}) + Citizen.CreateThread(function() + while createdZone do + -- Have to convert the point to a vector3 prior to calling handleInput, + -- then convert it back to vector2 afterwards + lastPoint = createdZone.points[#createdZone.points] + lastPoint = vector3(lastPoint.x, lastPoint.y, 0.0) + lastPoint = handleInput(lastPoint) + createdZone.points[#createdZone.points] = lastPoint.xy + Wait(0) + end + end) + minZ, maxZ = coords.z, coords.z +end + +function polyFinish() + TriggerServerEvent("polyzone:printPoly", + {name=createdZone.name, points=createdZone.points, minZ=minZ, maxZ=maxZ}) +end + +RegisterNetEvent("polyzone:pzadd") +AddEventHandler("polyzone:pzadd", function() + if createdZone == nil or createdZoneType ~= 'poly' then + return + end + + local coords = GetEntityCoords(PlayerPedId()) + + if (coords.z > maxZ) then + maxZ = coords.z + end + + if (coords.z < minZ) then + minZ = coords.z + end + + createdZone.points[#createdZone.points + 1] = vector2(coords.x, coords.y) +end) + +RegisterNetEvent("polyzone:pzundo") +AddEventHandler("polyzone:pzundo", function() + if createdZone == nil or createdZoneType ~= 'poly' then + return + end + + createdZone.points[#createdZone.points] = nil + if #createdZone.points == 0 then + TriggerEvent("polyzone:pzcancel") + end +end) \ No newline at end of file diff --git a/resources/[core]/PolyZone/creation/client/commands.lua b/resources/[core]/PolyZone/creation/client/commands.lua new file mode 100644 index 0000000..c3f6652 --- /dev/null +++ b/resources/[core]/PolyZone/creation/client/commands.lua @@ -0,0 +1,68 @@ +RegisterCommand("pzcreate", function(src, args) + local zoneType = args[1] + if zoneType == nil then + TriggerEvent('chat:addMessage', { + color = { 255, 0, 0}, + multiline = true, + args = {"Me", "Please add zone type to create (poly, circle, box)!"} + }) + return + end + if zoneType ~= 'poly' and zoneType ~= 'circle' and zoneType ~= 'box' then + TriggerEvent('chat:addMessage', { + color = { 255, 0, 0}, + multiline = true, + args = {"Me", "Zone type must be one of: poly, circle, box"} + }) + return + end + local name = nil + if #args >= 2 then name = args[2] + else name = GetUserInput("Enter name of zone:") end + if name == nil or name == "" then + TriggerEvent('chat:addMessage', { + color = { 255, 0, 0}, + multiline = true, + args = {"Me", "Please add a name!"} + }) + return + end + TriggerEvent("polyzone:pzcreate", zoneType, name, args) +end) + +RegisterCommand("pzadd", function(src, args) + TriggerEvent("polyzone:pzadd") +end) + +RegisterCommand("pzundo", function(src, args) + TriggerEvent("polyzone:pzundo") +end) + +RegisterCommand("pzfinish", function(src, args) + TriggerEvent("polyzone:pzfinish") +end) + +RegisterCommand("pzlast", function(src, args) + TriggerEvent("polyzone:pzlast") +end) + +RegisterCommand("pzcancel", function(src, args) + TriggerEvent("polyzone:pzcancel") +end) + +RegisterCommand("pzcomboinfo", function (src, args) + TriggerEvent("polyzone:pzcomboinfo") +end) + +Citizen.CreateThread(function() + TriggerEvent('chat:addSuggestion', '/pzcreate', 'Starts creation of a zone for PolyZone of one of the available types: circle, box, poly', { + {name="zoneType", help="Zone Type (required)"}, + }) + + TriggerEvent('chat:addSuggestion', '/pzadd', 'Adds point to zone.', {}) + TriggerEvent('chat:addSuggestion', '/pzundo', 'Undoes the last point added.', {}) + TriggerEvent('chat:addSuggestion', '/pzfinish', 'Finishes and prints zone.', {}) + TriggerEvent('chat:addSuggestion', '/pzlast', 'Starts creation of the last zone you finished (only works on BoxZone and CircleZone)', {}) + TriggerEvent('chat:addSuggestion', '/pzcancel', 'Cancel zone creation.', {}) + TriggerEvent('chat:addSuggestion', '/pzcomboinfo', 'Prints some useful info for all created ComboZones', {}) +end) \ No newline at end of file diff --git a/resources/[core]/PolyZone/creation/client/creation.lua b/resources/[core]/PolyZone/creation/client/creation.lua new file mode 100644 index 0000000..ea6c36a --- /dev/null +++ b/resources/[core]/PolyZone/creation/client/creation.lua @@ -0,0 +1,158 @@ +lastCreatedZoneType = nil +lastCreatedZone = nil +createdZoneType = nil +createdZone = nil +drawZone = false + +RegisterNetEvent("polyzone:pzcreate") +AddEventHandler("polyzone:pzcreate", function(zoneType, name, args) + if createdZone ~= nil then + TriggerEvent('chat:addMessage', { + color = { 255, 0, 0}, + multiline = true, + args = {"Me", "A shape is already being created!"} + }) + return + end + + if zoneType == 'poly' then + polyStart(name) + elseif zoneType == "circle" then + local radius = nil + if #args >= 3 then radius = tonumber(args[3]) + else radius = tonumber(GetUserInput("Enter radius:")) end + if radius == nil then + TriggerEvent('chat:addMessage', { + color = { 255, 0, 0}, + multiline = true, + args = {"Me", "CircleZone requires a radius (must be a number)!"} + }) + return + end + circleStart(name, radius) + elseif zoneType == "box" then + local length = nil + if #args >= 3 then length = tonumber(args[3]) + else length = tonumber(GetUserInput("Enter length:")) end + if length == nil or length < 0.0 then + TriggerEvent('chat:addMessage', { + color = { 255, 0, 0}, + multiline = true, + args = {"Me", "BoxZone requires a length (must be a positive number)!"} + }) + return + end + local width = nil + if #args >= 4 then width = tonumber(args[4]) + else width = tonumber(GetUserInput("Enter width:")) end + if width == nil or width < 0.0 then + TriggerEvent('chat:addMessage', { + color = { 255, 0, 0}, + multiline = true, + args = {"Me", "BoxZone requires a width (must be a positive number)!"} + }) + return + end + boxStart(name, 0, length, width) + else + return + end + createdZoneType = zoneType + drawZone = true + disableControlKeyInput() + drawThread() +end) + +RegisterNetEvent("polyzone:pzfinish") +AddEventHandler("polyzone:pzfinish", function() + if createdZone == nil then + return + end + + if createdZoneType == 'poly' then + polyFinish() + elseif createdZoneType == "circle" then + circleFinish() + elseif createdZoneType == "box" then + boxFinish() + end + + TriggerEvent('chat:addMessage', { + color = { 0, 255, 0}, + multiline = true, + args = {"Me", "Check PolyZone's root folder for polyzone_created_zones.txt to get the zone!"} + }) + + lastCreatedZoneType = createdZoneType + lastCreatedZone = createdZone + + drawZone = false + createdZone = nil + createdZoneType = nil +end) + +RegisterNetEvent("polyzone:pzlast") +AddEventHandler("polyzone:pzlast", function() + if createdZone ~= nil or lastCreatedZone == nil then + return + end + if lastCreatedZoneType == 'poly' then + TriggerEvent('chat:addMessage', { + color = { 0, 255, 0}, + multiline = true, + args = {"Me", "The command pzlast only supports BoxZone and CircleZone for now"} + }) + end + + local name = GetUserInput("Enter name (or leave empty to reuse last zone's name):") + if name == nil then + return + elseif name == "" then + name = lastCreatedZone.name + end + createdZoneType = lastCreatedZoneType + if createdZoneType == 'box' then + local minHeight, maxHeight + if lastCreatedZone.minZ then + minHeight = lastCreatedZone.center.z - lastCreatedZone.minZ + end + if lastCreatedZone.maxZ then + maxHeight = lastCreatedZone.maxZ - lastCreatedZone.center.z + end + boxStart(name, lastCreatedZone.offsetRot, lastCreatedZone.length, lastCreatedZone.width, minHeight, maxHeight) + elseif createdZoneType == 'circle' then + circleStart(name, lastCreatedZone.radius, lastCreatedZone.useZ) + end + drawZone = true + disableControlKeyInput() + drawThread() +end) + +RegisterNetEvent("polyzone:pzcancel") +AddEventHandler("polyzone:pzcancel", function() + if createdZone == nil then + return + end + + TriggerEvent('chat:addMessage', { + color = {255, 0, 0}, + multiline = true, + args = {"Me", "Zone creation canceled!"} + }) + + drawZone = false + createdZone = nil + createdZoneType = nil +end) + +-- Drawing +function drawThread() + Citizen.CreateThread(function() + while drawZone do + if createdZone then + createdZone:draw(true) + end + Wait(0) + end + end) +end diff --git a/resources/[core]/PolyZone/creation/client/utils.lua b/resources/[core]/PolyZone/creation/client/utils.lua new file mode 100644 index 0000000..786397d --- /dev/null +++ b/resources/[core]/PolyZone/creation/client/utils.lua @@ -0,0 +1,75 @@ +-- GetUserInput function inspired by vMenu (https://github.com/TomGrobbe/vMenu/blob/master/vMenu/CommonFunctions.cs) +function GetUserInput(windowTitle, defaultText, maxInputLength) + -- Create the window title string. + local resourceName = string.upper(GetCurrentResourceName()) + local textEntry = resourceName .. "_WINDOW_TITLE" + if windowTitle == nil then + windowTitle = "Enter:" + end + AddTextEntry(textEntry, windowTitle) + + -- Display the input box. + DisplayOnscreenKeyboard(1, textEntry, "", defaultText or "", "", "", "", maxInputLength or 30) + Wait(0) + -- Wait for a result. + while true do + local keyboardStatus = UpdateOnscreenKeyboard(); + if keyboardStatus == 3 then -- not displaying input field anymore somehow + return nil + elseif keyboardStatus == 2 then -- cancelled + return nil + elseif keyboardStatus == 1 then -- finished editing + return GetOnscreenKeyboardResult() + else + Wait(0) + end + end +end + +function handleArrowInput(center, heading) + delta = 0.05 + + if IsDisabledControlPressed(0, 36) then -- ctrl held down + delta = 0.01 + end + + if IsDisabledControlPressed(0, 172) then -- arrow up + local newCenter = PolyZone.rotate(center.xy, vector2(center.x, center.y + delta), heading) + return vector3(newCenter.x, newCenter.y, center.z) + end + + if IsDisabledControlPressed(0, 173) then -- arrow down + local newCenter = PolyZone.rotate(center.xy, vector2(center.x, center.y - delta), heading) + return vector3(newCenter.x, newCenter.y, center.z) + end + + if IsDisabledControlPressed(0, 174) then -- arrow left + local newCenter = PolyZone.rotate(center.xy, vector2(center.x - delta, center.y), heading) + return vector3(newCenter.x, newCenter.y, center.z) + end + + if IsDisabledControlPressed(0, 175) then -- arrow right + local newCenter = PolyZone.rotate(center.xy, vector2(center.x + delta, center.y), heading) + return vector3(newCenter.x, newCenter.y, center.z) + end + + return center +end + +function disableControlKeyInput() + Citizen.CreateThread(function() + while drawZone do + DisableControlAction(0, 36, true) -- Ctrl + DisableControlAction(0, 19, true) -- Alt + DisableControlAction(0, 20, true) -- 'Z' + DisableControlAction(0, 21, true) -- Shift + DisableControlAction(0, 81, true) -- Scroll Wheel Down + DisableControlAction(0, 99, true) -- Scroll Wheel Up + DisableControlAction(0, 172, true) -- Arrow Up + DisableControlAction(0, 173, true) -- Arrow Down + DisableControlAction(0, 174, true) -- Arrow Left + DisableControlAction(0, 175, true) -- Arrow Right + Wait(0) + end + end) +end \ No newline at end of file diff --git a/resources/[core]/PolyZone/creation/server/config.lua b/resources/[core]/PolyZone/creation/server/config.lua new file mode 100644 index 0000000..099d069 --- /dev/null +++ b/resources/[core]/PolyZone/creation/server/config.lua @@ -0,0 +1,56 @@ +Config = Config or {} +Config.ConfigFormatEnabled = false +-- Default Format + +-- Name: TestBox | 2022-04-13T22:46:17Z +-- BoxZone:Create(vector3(-344.16, -103.25, 39.02), 1, 1, { +-- name = "TestBox", +-- heading = 0, +-- --debugPoly = true +-- }) + +-- Name: TestCircle | 2022-04-13T22:46:39Z +-- CircleZone:Create(vector3(-344.16, -103.25, 39.02), 1.0, { +-- name = "TestCircle", +-- useZ = false, +-- --debugPoly = true +-- }) + +-- Name: TestPoly | 2022-04-13T22:46:55Z +-- PolyZone:Create({ +-- vector2(-344.15713500977, -103.24993896484), +-- vector2(-343.69491577148, -100.99839019775), +-- vector2(-345.53350830078, -102.00588226318) +-- }, { +-- name = "TestPoly", +-- minZ = 39.015644073486, +-- maxZ = 39.015865325928 +-- }) + +-- Config Format + +-- Name: TestBox | 2022-04-13T22:34:48Z +-- coords = vector3(-342.92, -102.09, 39.02), +-- length = 1, +-- width = 1, +-- name = "TestBox", +-- heading = 0, +-- debugPoly = true + +-- Name: TestCircle | 2022-04-13T22:35:09Z +-- coords = vector3(-342.92, -102.09, 39.02), +-- radius = 1.0, +-- name = "TestCircle", +-- useZ = false, +-- debugPoly = true + +-- Name: TestPoly | 2022-04-13T22:35:43Z +-- points = { +-- vector2(-342.91537475586, -102.09281158447), +-- vector2(-344.09732055664, -104.0821762085), +-- vector2(-342.01580810547, -105.60903167725) +-- }, +-- name = "TestPoly", +-- minZ = 39.015701293945, +-- maxZ = 39.015705108643, +-- debugPoly = true diff --git a/resources/[core]/PolyZone/creation/server/creation.lua b/resources/[core]/PolyZone/creation/server/creation.lua new file mode 100644 index 0000000..c21b874 --- /dev/null +++ b/resources/[core]/PolyZone/creation/server/creation.lua @@ -0,0 +1,109 @@ +RegisterNetEvent("polyzone:printPoly") +AddEventHandler("polyzone:printPoly", function(zone) + local created_zones = LoadResourceFile(GetCurrentResourceName(), "polyzone_created_zones.txt") or "" + local output = created_zones .. parsePoly(zone) + SaveResourceFile(GetCurrentResourceName(), "polyzone_created_zones.txt", output, -1) +end) + +RegisterNetEvent("polyzone:printCircle") +AddEventHandler("polyzone:printCircle", function(zone) + local created_zones = LoadResourceFile(GetCurrentResourceName(), "polyzone_created_zones.txt") or "" + local output = created_zones .. parseCircle(zone) + SaveResourceFile(GetCurrentResourceName(), "polyzone_created_zones.txt", output, -1) +end) + +RegisterNetEvent("polyzone:printBox") +AddEventHandler("polyzone:printBox", function(zone) + local created_zones = LoadResourceFile(GetCurrentResourceName(), "polyzone_created_zones.txt") or "" + local output = created_zones .. parseBox(zone) + SaveResourceFile(GetCurrentResourceName(), "polyzone_created_zones.txt", output, -1) +end) + +function round(num, numDecimalPlaces) + local mult = 10^(numDecimalPlaces or 0) + return math.floor(num * mult + 0.5) / mult +end + +function printoutHeader(name) + return "-- Name: " .. name .. " | " .. os.date("!%Y-%m-%dT%H:%M:%SZ\n") +end + +function parsePoly(zone) + if Config.ConfigFormatEnabled then + local printout = printoutHeader(zone.name) + printout = printout .. "points = {\n" + for i = 1, #zone.points do + if i ~= #zone.points then + printout = printout .. " vector2(" .. tostring(zone.points[i].x) .. ", " .. tostring(zone.points[i].y) .."),\n" + else + printout = printout .. " vector2(" .. tostring(zone.points[i].x) .. ", " .. tostring(zone.points[i].y) ..")\n" + end + end + printout = printout .. "},\nname = \"" .. zone.name .. "\",\n--minZ = " .. zone.minZ .. ",\n--maxZ = " .. zone.maxZ .. ",\n--debugPoly = true\n\n" + return printout + else + local printout = printoutHeader(zone.name) + printout = printout .. "PolyZone:Create({\n" + for i = 1, #zone.points do + if i ~= #zone.points then + printout = printout .. " vector2(" .. tostring(zone.points[i].x) .. ", " .. tostring(zone.points[i].y) .."),\n" + else + printout = printout .. " vector2(" .. tostring(zone.points[i].x) .. ", " .. tostring(zone.points[i].y) ..")\n" + end + end + printout = printout .. "}, {\n name = \"" .. zone.name .. "\",\n --minZ = " .. zone.minZ .. ",\n --maxZ = " .. zone.maxZ .. "\n})\n\n" + return printout + end +end + +function parseCircle(zone) + if Config.ConfigFormatEnabled then + local printout = printoutHeader(zone.name) + printout = printout .. "coords = " + printout = printout .. "vector3(" .. tostring(round(zone.center.x, 2)) .. ", " .. tostring(round(zone.center.y, 2)) .. ", " .. tostring(round(zone.center.z, 2)) .."),\n" + printout = printout .. "radius = " .. tostring(zone.radius) .. ",\n" + printout = printout .. "name = \"" .. zone.name .. "\",\nuseZ = " .. tostring(zone.useZ) .. ",\n--debugPoly = true\n\n" + return printout + else + local printout = printoutHeader(zone.name) + printout = printout .. "CircleZone:Create(" + printout = printout .. "vector3(" .. tostring(round(zone.center.x, 2)) .. ", " .. tostring(round(zone.center.y, 2)) .. ", " .. tostring(round(zone.center.z, 2)) .."), " + printout = printout .. tostring(zone.radius) .. ", " + printout = printout .. "{\n name = \"" .. zone.name .. "\",\n useZ = " .. tostring(zone.useZ) .. ",\n --debugPoly = true\n})\n\n" + return printout + end +end + +function parseBox(zone) + if Config.ConfigFormatEnabled then + local printout = printoutHeader(zone.name) + printout = printout .. "coords = " + printout = printout .. "vector3(" .. tostring(round(zone.center.x, 2)) .. ", " .. tostring(round(zone.center.y, 2)) .. ", " .. tostring(round(zone.center.z, 2)) .."),\n" + printout = printout .. "length = " .. tostring(zone.length) .. ",\n" + printout = printout .. "width = " .. tostring(zone.width) .. ",\n" + printout = printout .. "name = \"" .. zone.name .. "\",\nheading = " .. zone.heading .. ",\n--debugPoly = true" + if zone.minZ then + printout = printout .. ",\nminZ = " .. tostring(round(zone.minZ, 2)) + end + if zone.maxZ then + printout = printout .. ",\nmaxZ = " .. tostring(round(zone.maxZ, 2)) + end + printout = printout .. "\n\n" + return printout + else + local printout = printoutHeader(zone.name) + printout = printout .. "BoxZone:Create(" + printout = printout .. "vector3(" .. tostring(round(zone.center.x, 2)) .. ", " .. tostring(round(zone.center.y, 2)) .. ", " .. tostring(round(zone.center.z, 2)) .."), " + printout = printout .. tostring(zone.length) .. ", " + printout = printout .. tostring(zone.width) .. ", " + printout = printout .. "{\n name = \"" .. zone.name .. "\",\n heading = " .. zone.heading .. ",\n --debugPoly = true" + if zone.minZ then + printout = printout .. ",\n minZ = " .. tostring(round(zone.minZ, 2)) + end + if zone.maxZ then + printout = printout .. ",\n maxZ = " .. tostring(round(zone.maxZ, 2)) + end + printout = printout .. "\n})\n\n" + return printout + end +end diff --git a/resources/[core]/PolyZone/fxmanifest.lua b/resources/[core]/PolyZone/fxmanifest.lua new file mode 100644 index 0000000..19fa7a0 --- /dev/null +++ b/resources/[core]/PolyZone/fxmanifest.lua @@ -0,0 +1,20 @@ +games {'gta5'} + +fx_version 'cerulean' + +description 'Define zones of different shapes and test whether a point is inside or outside of the zone' +version '2.6.2' + +client_scripts { + 'client.lua', + 'BoxZone.lua', + 'EntityZone.lua', + 'CircleZone.lua', + 'ComboZone.lua', + 'creation/client/*.lua' +} + +server_scripts { + 'creation/server/*.lua', + 'server.lua' +} diff --git a/resources/[core]/PolyZone/server.lua b/resources/[core]/PolyZone/server.lua new file mode 100644 index 0000000..185a2ac --- /dev/null +++ b/resources/[core]/PolyZone/server.lua @@ -0,0 +1,10 @@ +local eventPrefix = '__PolyZone__:' + +function triggerZoneEvent(eventName, ...) + TriggerClientEvent(eventPrefix .. eventName, -1, ...) +end + +RegisterNetEvent("PolyZone:TriggerZoneEvent") +AddEventHandler("PolyZone:TriggerZoneEvent", triggerZoneEvent) + +exports("TriggerZoneEvent", triggerZoneEvent) \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/.github/ISSUE_TEMPLATE/bug_report.md b/resources/[core]/bob74_ipl/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..c8dfdc0 --- /dev/null +++ b/resources/[core]/bob74_ipl/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,29 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**First of all** +Did you try disabling `bob74_ipl` to see if the issue is still there? Yes/No +Did you use the latest version of `bob74_ipl` ? Yes/No +Did you use an up to date server [artifact](https://runtime.fivem.net/artifacts/fivem/build_server_windows/master/) ? Yes/No + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Coordinates or map screenshot of the location. + +**Expected behavior** +A clear and concise description of what you expected to happen, a screenshot from GTA Online if relevant is welcome. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Versions** + - Game build version + - Resource version diff --git a/resources/[core]/bob74_ipl/LICENSE b/resources/[core]/bob74_ipl/LICENSE new file mode 100644 index 0000000..2a6e04c --- /dev/null +++ b/resources/[core]/bob74_ipl/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Bob74 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/resources/[core]/bob74_ipl/README.md b/resources/[core]/bob74_ipl/README.md new file mode 100644 index 0000000..bb3f58c --- /dev/null +++ b/resources/[core]/bob74_ipl/README.md @@ -0,0 +1,195 @@ +# Fix holes and customize the map (Updated to Bottom Dollar Bounties DLC) + +The purpose of this script is to fix the holes in the map by loading zones that aren’t loaded by default. I’ve added quite a lot of places to load, based on [Mikeeh’s script](https://forum.fivem.net/t/release-load-unloaded-ipls/5911). If you just want to fix the holes in the map, then use this resource as provided. + +This resource has been completely rewritten from scratch since v2.0. You can customize almost every storymode and online purchasable interiors from your own resources. + +## Download +- Latest version: https://github.com/Bob74/bob74_ipl/releases/latest + +- Source code: https://github.com/Bob74/bob74_ipl + +## [Wiki](https://github.com/Bob74/bob74_ipl/wiki) +- The Wiki has been created to help you customize your interiors as you wish. It contains every function you can use for each interior. +- Each Wiki page has an example at the bottom of the page to show how you can use it in your own resource. +- Also at the bottom of the Wiki will show you the default values set by `IPL_NAME.LoadDefault()`. + +## Install +1. Download the [latest version](https://github.com/Bob74/bob74_ipl/releases/latest). +2. Extract `bob74_ipl.zip` and copy the `bob74_ipl` into your `resources` folder. +3. Add `start bob74_ipl` to your your `server.cfg` file. + +## Screenshots +- [After Hours Album](https://imgur.com/a/Qg96l0D) +- [Misc. Album](https://imgur.com/a/cs9Ip4d) +- [IPL Fix Album](https://imgur.com/a/1Sfl4) + +## Changelog + +
Click to view +(DD/MM/YYYY) + +--- +24/08/2024 - 2.3.2 +- Added Kosatka and "The Music Locker" interiors. +- Removed `Citizen` prefix from code. + +10/08/2024 - 2.3.1 +- Fix world not rendering when inside security offices +- Fix typos in "Los Santos Tuners" files + +02/07/2024 - 2.3.0 +- Added "Bottom Dollar Bounties" support + +14/04/2024 - 2.2.1 +- Allow disabling San Andreas Mercenaries fixes +- Allow setting base game cargo ship as sunk +- Rename `ChopShopSalvage.Ipl.Load()` to `ChopShopSalvage.Ipl.Exterior.Load()` +- Rename `DrugWarsFreakshop.Ipl.Load()` to `DrugWarsFreakshop.Ipl.Exterior.Load()` +- Rename `DrugWarsGarage.Ipl.Load()` to `DrugWarsGarage.Ipl.Exterior.Load()` + +06/04/2024 - 2.2.0 +- Added "Los Santos Drug Wars" support +- Added "San Andreas Mercenaries" support +- Added "The Chop Shop" support +- Added missing base IPLs + +27/03/2024 - 2.1.4 +- North Yankton improvements (https://github.com/Bob74/bob74_ipl/pull/131 @TheIndra55) + +05/12/2023 - 2.1.3 +- Added missing train track near Davis Quartz (https://github.com/Bob74/bob74_ipl/pull/129 @TheIndra55) + +10/01/2023 - 2.1.2 +- Fix native and update native names (@NeenGame ) + +24/10/2022 - 2.1.1 +- Fix vespucci beach wall hole +- Fix Boat House Door in Sandy Shores +- Fix GTA 5 24/7 Roof in Sandy Shores +- Fix Industrial Building near Lesters Warehouse +- Fix Collision Holes near Lost MC compound + +11/10/2022 - 2.1.0a +- Make Doomsday Facility Objects non network + +03/08/2022 - 2.1.0 +- Added "The Criminal Enterprises" support + +02/05/2022 - 2.0.15 +- Reformatted code +- Removed unused .gitignore +- Bumped version in fxmanifest.lua +- Improved performance + +21/04/2022 - 2.0.14 +- Fix casino penthouse carpet patterns colors + +12/02/2022 - 2.0.13a +- Fix Music Roof + +12/02/2022 - 2.0.13 +- Added Contract IPLs: Garage, Studio, Offices, Music Roof, Billboards + +10/02/2022 - 2.0.12 +- Fix FIB roof + +07/02/2022 - 2.0.11 +- Added Tuners IPLs: Garage, Meth Lab, Meetup + +18/01/2022 - 2.0.10b +- Change water in yachts to be non-networked. + +01/08/2021 - 2.0.10a +- Improved performance +- Fixed hole in the FIB fountain +- Fixed error appearing if casino IPL is loaded, but the game build is not sufficient +- Fixed a few typos in the README file + +19/07/2021 - 2.0.10 +- Added Diamond Casino IPLs: Casino, Garage, VIP garage, Penthouse +- Import: Forced refresh of CEO Garages +- Updated fxmanifest fx_version to cerulean +- Updated IPL list link in fxmanifest nad removed outdated Props list and Interior ID list +- Fixed export typo in `michael.lua` +- Removed unnecessary space in north_yankton IPL + +27/05/2020 - 2.0.9a +- Fixed disabling Pillbox Hospital +- Fixed `ResetInteriorVariables` + +23/04/2020 - 2.0.9 +- Replaced deprecated __resource.lua with fxmanifest.lua +- Added ferris wheel on the Del Perro Pier +- Reformatted client.lua + +20/10/2019 - 2.0.8 +- Nightclubs: Added dry ice emitters +- Heist & Gunrunning: Added water to the yachts hot tubs (to enable/disable) +- Offices: Added a way to open and close the safes +- Facility: Added privacy glass +- Moved Bahama Mamas and PillBox Hospital in their own files +- Fixed error `ReleaseNamedRendertarget` +- Cleaned and optimized the code + +22/03/2019 - 2.0.7c +- CEO Offices: Changed the default loaded garage to ImportCEOGarage4.Part.Garage2 in order to avoid Office glitches + +15/01/2019 - 2.0.7b +- Nightclubs: Fixed a typo for the fake lights + +15/01/2019 - 2.0.7a +- Nightclubs: Added the ability to set no podium (using `AfterHoursNightclubs.Interior.Podium.none`) + +14/01/2019 - 2.0.7 +- Changed the way Trevor’s trailer is handled and added a Wiki entry. +- Added a way to open or close Zancudo’s gates with a Wiki entry. + +12/01/2019 - 2.0.6 +- Added nightclubs interior and exteriors +- Removed Zancudo gates by default (file bob74_ipl/gtav/base.lua: RequestIpl("CS3_07_MPGates") is now commented) + +29/12/2018 - 2.0.5a +- Fixed the name of the BikerClubhouse1 export + +19/12/2018 - 2.0.5 +- Fixed a typo that prevents the printers, security stuff, and cash piles to spawn in the counterfeit cash factory + +10/11/2018 - 2.0.4 +- Fixed an issue where the clubhouse2 lower walls wouldn’t be colored on the first resource start +- Fixed gang members names using an old format +- Disabled the Mod shop from CEO garage 3 (ImportCEOGarage3) because it is overlapping with CEO office 3 (FinanceOffice3) + +08/11/2018 - 2.0.3 +- Added biker gang’s name, missions, and members pictures +- Added CEO office organization’s name + +05/11/2018 - 2.0.1 +- Removed overlapping Zancudo River +- Added the trailer near Zancudo River + +04/11/2018 - 2.0.0 +- Plugin totally rewritten +- Support for all DLC (up to The Doomsday Heist) +- Ability to easily customize story mode and online purchasable interiors +- You can still use it as it is if you want IPL and interiors to be loaded, the plugin sets a default style for each one +- Check out the Wiki to find out how: https://github.com/Bob74/bob74_ipl/wiki + +26/06/2017 +- Added optional IPL +- Bunkers exteriors (enabled) +- Bunkers interior +- CEO Offices +- Bikers places (some are still buggy) +- Import/Export locations +- Removed the trick to open Lost’s safehouse since the last update already opens it + +19/06/2017 +- Fix hole in Zancudo River +- Fix hole in Cassidy Creek +- Add optional graffiti on some billboards (enabled by default) +- Opened Lost’s safehouse interior + +14/06/2017 +- Original release +
diff --git a/resources/[core]/bob74_ipl/client.lua b/resources/[core]/bob74_ipl/client.lua new file mode 100644 index 0000000..3c5c44e --- /dev/null +++ b/resources/[core]/bob74_ipl/client.lua @@ -0,0 +1,223 @@ +CreateThread(function() + -- ==================================================================== + -- =--------------------- [GTA V: Single player] ---------------------= + -- ==================================================================== + + -- Michael: -802.311, 175.056, 72.8446 + Michael.LoadDefault() + + -- Simeon: -47.16170 -1115.3327 26.5 + Simeon.LoadDefault() + + -- Franklin's aunt: -9.96562, -1438.54, 31.1015 + FranklinAunt.LoadDefault() + + -- Franklin + Franklin.LoadDefault() + + -- Floyd: -1150.703, -1520.713, 10.633 + Floyd.LoadDefault() + + -- Trevor: 1985.48132, 3828.76757, 32.5 + TrevorsTrailer.LoadDefault() + + -- Bahama Mamas: -1388.0013, -618.41967, 30.819599 + BahamaMamas.Enable(true) + + -- Pillbox hospital: 307.1680, -590.807, 43.280 + PillboxHospital.Enable(true) + + -- Zancudo Gates (GTAO like): -1600.30100000, 2806.73100000, 18.79683000 + ZancudoGates.LoadDefault() + + -- Other + Ammunations.LoadDefault() + LesterFactory.LoadDefault() + StripClub.LoadDefault() + CargoShip.LoadDefault() + + Graffitis.Enable(true) + + -- UFO + UFO.Hippie.Enable(false) -- 2490.47729, 3774.84351, 2414.035 + UFO.Chiliad.Enable(false) -- 501.52880000, 5593.86500000, 796.23250000 + UFO.Zancudo.Enable(false) -- -2051.99463, 3237.05835, 1456.97021 + + -- Red Carpet: 300.5927, 199.7589, 104.3776 + RedCarpet.Enable(false) + + -- North Yankton: 3217.697, -4834.826, 111.8152 + NorthYankton.Enable(false) + + -- ==================================================================== + -- =-------------------------- [GTA Online] --------------------------= + -- ==================================================================== + GTAOApartmentHi1.LoadDefault() -- -35.31277 -580.4199 88.71221 (4 Integrity Way, Apt 30) + GTAOApartmentHi2.LoadDefault() -- -1477.14 -538.7499 55.5264 (Dell Perro Heights, Apt 7) + GTAOHouseHi1.LoadDefault() -- -169.286 486.4938 137.4436 (3655 Wild Oats Drive) + GTAOHouseHi2.LoadDefault() -- 340.9412 437.1798 149.3925 (2044 North Conker Avenue) + GTAOHouseHi3.LoadDefault() -- 373.023 416.105 145.7006 (2045 North Conker Avenue) + GTAOHouseHi4.LoadDefault() -- -676.127 588.612 145.1698 (2862 Hillcrest Avenue) + GTAOHouseHi5.LoadDefault() -- -763.107 615.906 144.1401 (2868 Hillcrest Avenue) + GTAOHouseHi6.LoadDefault() -- -857.798 682.563 152.6529 (2874 Hillcrest Avenue) + GTAOHouseHi7.LoadDefault() -- 120.5 549.952 184.097 (2677 Whispymound Drive) + GTAOHouseHi8.LoadDefault() -- -1288 440.748 97.69459 (2133 Mad Wayne Thunder) + GTAOHouseMid1.LoadDefault() -- 347.2686 -999.2955 -99.19622 + GTAOHouseLow1.LoadDefault() -- 261.4586 -998.8196 -99.00863 + + -- ==================================================================== + -- =------------------------ [DLC: High life] ------------------------= + -- ==================================================================== + HLApartment1.LoadDefault() -- -1468.14 -541.815 73.4442 (Dell Perro Heights, Apt 4) + HLApartment2.LoadDefault() -- -915.811 -379.432 113.6748 (Richard Majestic, Apt 2) + HLApartment3.LoadDefault() -- -614.86 40.6783 97.60007 (Tinsel Towers, Apt 42) + HLApartment4.LoadDefault() -- -773.407 341.766 211.397 (EclipseTowers, Apt 3) + HLApartment5.LoadDefault() -- -18.07856 -583.6725 79.46569 (4 Integrity Way, Apt 28) + HLApartment6.LoadDefault() -- -609.56690000 51.28212000 -183.98080 + + -- ==================================================================== + -- =-------------------------- [DLC: Heists] -------------------------= + -- ==================================================================== + HeistCarrier.Enable(true) -- 3082.3117, -4717.1191, 15.2622 + HeistYacht.LoadDefault() -- -2043.974,-1031.582, 11.981 + + -- ==================================================================== + -- =--------------- [DLC: Executives & Other Criminals] --------------= + -- ==================================================================== + ExecApartment1.LoadDefault() -- -787.7805 334.9232 215.8384 (EclipseTowers, Penthouse Suite 1) + ExecApartment2.LoadDefault() -- -773.2258 322.8252 194.8862 (EclipseTowers, Penthouse Suite 2) + ExecApartment3.LoadDefault() -- -787.7805 334.9232 186.1134 (EclipseTowers, Penthouse Suite 3) + + -- ==================================================================== + -- =-------------------- [DLC: Finance & Felony] --------------------= + -- ==================================================================== + FinanceOffice1.LoadDefault() -- -141.1987, -620.913, 168.8205 (Arcadius Business Centre) + FinanceOffice2.LoadDefault() -- -75.8466, -826.9893, 243.3859 (Maze Bank Building) + FinanceOffice3.LoadDefault() -- -1579.756, -565.0661, 108.523 (Lom Bank) + FinanceOffice4.LoadDefault() -- -1392.667, -480.4736, 72.04217 (Maze Bank West) + + -- ==================================================================== + -- =-------------------------- [DLC: Bikers] -------------------------= + -- ==================================================================== + BikerCocaine.LoadDefault() -- Cocaine lockup: 1093.6, -3196.6, -38.99841 + BikerCounterfeit.LoadDefault() -- Counterfeit cash factory: 1121.897, -3195.338, -40.4025 + BikerDocumentForgery.LoadDefault() -- Document forgery: 1165, -3196.6, -39.01306 + BikerMethLab.LoadDefault() -- Meth lab: 1009.5, -3196.6, -38.99682 + BikerWeedFarm.LoadDefault() -- Weed farm: 1051.491, -3196.536, -39.14842 + BikerClubhouse1.LoadDefault() -- 1107.04, -3157.399, -37.51859 + BikerClubhouse2.LoadDefault() -- 998.4809, -3164.711, -38.90733 + + -- ==================================================================== + -- =---------------------- [DLC: Import/Export] ----------------------= + -- ==================================================================== + ImportCEOGarage1.LoadDefault() -- Arcadius Business Centre + ImportCEOGarage2.LoadDefault() -- Maze Bank Building /!\ Do not load parts Garage1, Garage2 and Garage3 at the same time (overlaping issues) + ImportCEOGarage3.LoadDefault() -- Lom Bank /!\ Do not load parts Garage1, Garage2 and Garage3 at the same time (overlaping issues) + ImportCEOGarage4.LoadDefault() -- Maze Bank West /!\ Do not load parts Garage1, Garage2 and Garage3 at the same time (overlaping issues) + ImportVehicleWarehouse.LoadDefault() -- Vehicle warehouse: 994.5925, -3002.594, -39.64699 + + -- ==================================================================== + -- =------------------------ [DLC: Gunrunning] -----------------------= + -- ==================================================================== + GunrunningBunker.LoadDefault() -- 892.6384, -3245.8664, -98.2645 + GunrunningYacht.LoadDefault() -- -1363.724, 6734.108, 2.44598 + + -- ==================================================================== + -- =---------------------- [DLC: Smuggler's Run] ---------------------= + -- ==================================================================== + SmugglerHangar.LoadDefault() -- -1267.0 -3013.135 -49.5 + + -- ==================================================================== + -- =-------------------- [DLC: The Doomsday Heist] -------------------= + -- ==================================================================== + DoomsdayFacility.LoadDefault() + + -- ==================================================================== + -- =----------------------- [DLC: After Hours] -----------------------= + -- ==================================================================== + AfterHoursNightclubs.LoadDefault() -- -1604.664, -3012.583, -78.000 + + -- ==================================================================== + -- =------------------- [DLC: Diamond Casino Resort] -----------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2060 then + DiamondCasino.LoadDefault() -- 1100.000, 220.000, -50.000 + DiamondPenthouse.LoadDefault() -- 976.636, 70.295, 115.164 + end + + -- ==================================================================== + -- =-------------------- [DLC: Cayo Perico Heist] --------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2189 then + CayoPericoNightclub.LoadDefault() -- 1550.0, 250.0, -50.0 + CayoPericoSubmarine.LoadDefault() -- 1560.0, 400.0, -50.0 + end + + -- ==================================================================== + -- =------------------- [DLC: Los Santos Tuners] ---------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2372 then + TunerGarage.LoadDefault() -- -1350.0, 160.0, -100.0 + TunerMethLab.LoadDefault() -- 981.9999, -143.0, -50.0 + TunerMeetup.LoadDefault() -- -2000.0, 1113.211, -25.36243 + end + + -- ==================================================================== + -- =------------------- [DLC: Los Santos The Contract] ---------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2545 then + MpSecurityGarage.LoadDefault() -- -1071.4387, -77.033875, -93.525505 + MpSecurityMusicRoofTop.LoadDefault() -- -592.6896, 273.1052, 116.302444 + MpSecurityStudio.LoadDefault() -- -1000.7252, -70.559875, -98.10669 + MpSecurityBillboards.LoadDefault() -- -592.6896, 273.1052, 116.302444 + MpSecurityOffice1.LoadDefault() -- -1021.86084, -427.74564, 68.95764 + MpSecurityOffice2.LoadDefault() -- 383.4156, -59.878227, 108.4595 + MpSecurityOffice3.LoadDefault() -- -1004.23035, -761.2084, 66.99069 + MpSecurityOffice4.LoadDefault() -- -587.87213, -716.84937, 118.10156 + end + + -- ==================================================================== + -- =------------------- [DLC: The Criminal Enterprise] ---------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2699 then + CriminalEnterpriseSmeonFix.LoadDefault() -- -50.2248, -1098.8325, 26.049742 + CriminalEnterpriseVehicleWarehouse.LoadDefault() -- 800.13696, -3001.4297, -65.14074 + CriminalEnterpriseWarehouse.LoadDefault() -- 849.1047, -3000.209, -45.974354 + end + + -- ==================================================================== + -- =------------------- [DLC: Los Santos Drug Wars] ------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2802 then + DrugWarsFreakshop.LoadDefault() -- 570.9713, -420.0727, -70.000 + DrugWarsGarage.LoadDefault() -- 519.2477, -2618.788, -50.000 + DrugWarsLab.LoadDefault() -- 483.4252, -2625.071, -50.000 + end + + -- ==================================================================== + -- =------------------- [DLC: San Andreas Mercenaries] ---------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2944 then + MercenariesClub.LoadDefault() -- 1202.407, -3251.251, -50.000 + MercenariesLab.LoadDefault() -- -1916.119, 3749.719, -100.000 + MercenariesFixes.LoadDefault() + end + + -- ==================================================================== + -- =------------------- [DLC: The Chop Shop] -------------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 3095 then + ChopShopCargoShip.LoadDefault() -- -344.4349, -4062.832, 17.000 + ChopShopCartelGarage.LoadDefault() -- 1220.133, -2277.844, -50.000 + ChopShopLifeguard.LoadDefault() -- -1488.153, -1021.166, 5.000 + ChopShopSalvage.LoadDefault() -- 1077.276, -2274.876, -50.000 + end + + -- ==================================================================== + -- =------------------ [DLC: Bottom Dollar Bounties] -----------------= + -- ==================================================================== + if GetGameBuildNumber() >= 3258 then + SummerCarrier.LoadDefault() -- -3208.03, 3954.54, 14.0 + SummerOffice.LoadDefault() -- 565.886, -2688.761, -50.0 + end +end) diff --git a/resources/[core]/bob74_ipl/dlc_afterhours/nightclubs.lua b/resources/[core]/bob74_ipl/dlc_afterhours/nightclubs.lua new file mode 100644 index 0000000..0b4c9bf --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_afterhours/nightclubs.lua @@ -0,0 +1,703 @@ +-- Nightclub: -1604.664 -3012.583 -78.000 +exports('GetAfterHoursNightclubsObject', function() + return AfterHoursNightclubs +end) + +AfterHoursNightclubs = { + interiorId = 271617, + + Ipl = { + Interior = { + ipl = "ba_int_placement_ba_interior_0_dlc_int_01_ba_milo_", + + Load = function() + EnableIpl(AfterHoursNightclubs.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(AfterHoursNightclubs.Ipl.Interior.ipl, false) + end + } + }, + + Interior = { + Name = { + galaxy = "Int01_ba_clubname_01", + studio = "Int01_ba_clubname_02", + omega = "Int01_ba_clubname_03", + technologie = "Int01_ba_clubname_04", + gefangnis = "Int01_ba_clubname_05", + maisonette = "Int01_ba_clubname_06", + tony = "Int01_ba_clubname_07", + palace = "Int01_ba_clubname_08", + paradise = "Int01_ba_clubname_09", + + Set = function(name, refresh) + AfterHoursNightclubs.Interior.Name.Clear(false) + + SetIplPropState(AfterHoursNightclubs.interiorId, name, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(AfterHoursNightclubs.Interior.Name) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, value, false, refresh) + end + end + end + }, + Style = { + trad = "Int01_ba_Style01", + edgy = "Int01_ba_Style02", + glam = "Int01_ba_Style03", + + Set = function(style, refresh) + AfterHoursNightclubs.Interior.Style.Clear(false) + + SetIplPropState(AfterHoursNightclubs.interiorId, style, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(AfterHoursNightclubs.Interior.Style) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, value, false, refresh) + end + end + end + }, + Podium = { + none = "", + trad = "Int01_ba_style01_podium", + edgy = "Int01_ba_style02_podium", + glam = "Int01_ba_style03_podium", + + Set = function(podium, refresh) + AfterHoursNightclubs.Interior.Podium.Clear(false) + + SetIplPropState(AfterHoursNightclubs.interiorId, podium, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(AfterHoursNightclubs.Interior.Podium) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, value, false, refresh) + end + end + end + }, + Speakers = { + none = "", + basic = "Int01_ba_equipment_setup", + upgrade = { + "Int01_ba_equipment_setup", + "Int01_ba_equipment_upgrade" + }, + + Set = function(speakers, refresh) + AfterHoursNightclubs.Interior.Speakers.Clear(false) + + SetIplPropState(AfterHoursNightclubs.interiorId, speakers, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(AfterHoursNightclubs.Interior.Speakers) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, value, false, refresh) + end + end + end + }, + Security = { + off = "", + on = "Int01_ba_security_upgrade", + + Set = function(security, refresh) + AfterHoursNightclubs.Interior.Security.Clear(false) + + SetIplPropState(AfterHoursNightclubs.interiorId, security, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(AfterHoursNightclubs.interiorId, AfterHoursNightclubs.Interior.Security.on, false, refresh) + end + }, + Turntables = { + none = "", + style01 = "Int01_ba_dj01", + style02 = "Int01_ba_dj02", + style03 = "Int01_ba_dj03", + style04 = "Int01_ba_dj04", + + Set = function(turntables, refresh) + AfterHoursNightclubs.Interior.Turntables.Clear(false) + + if turntables ~= "" then + SetIplPropState(AfterHoursNightclubs.interiorId, turntables, true, refresh) + else + if refresh then + RefreshInterior(AfterHoursNightclubs.interiorId) + end + end + end, + Clear = function(refresh) + for key, value in pairs(AfterHoursNightclubs.Interior.Turntables) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, value, false, refresh) + end + end + end + }, + Lights = { + Droplets = { + yellow = "DJ_01_Lights_01", + green = "DJ_02_Lights_01", + white = "DJ_03_Lights_01", + purple = "DJ_04_Lights_01", + + Set = function(light, refresh) + AfterHoursNightclubs.Interior.Lights.Droplets.Clear(false) + + SetIplPropState(AfterHoursNightclubs.interiorId, light, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(AfterHoursNightclubs.Interior.Lights.Droplets) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, value, false, refresh) + end + end + end + }, + Neons = { + yellow = "DJ_01_Lights_02", + white = "DJ_02_Lights_02", + purple = "DJ_03_Lights_02", + cyan = "DJ_04_Lights_02", + + Set = function(light, refresh) + AfterHoursNightclubs.Interior.Lights.Neons.Clear(false) + + SetIplPropState(AfterHoursNightclubs.interiorId, light, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(AfterHoursNightclubs.Interior.Lights.Neons) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, value, false, refresh) + end + end + end + }, + Bands = { + yellow = "DJ_01_Lights_03", + green = "DJ_02_Lights_03", + white = "DJ_03_Lights_03", + cyan = "DJ_04_Lights_03", + + Set = function(light, refresh) + AfterHoursNightclubs.Interior.Lights.Bands.Clear(false) + + SetIplPropState(AfterHoursNightclubs.interiorId, light, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(AfterHoursNightclubs.Interior.Lights.Bands) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, value, false, refresh) + end + end + end + }, + Lasers = { + yellow = "DJ_01_Lights_04", + green = "DJ_02_Lights_04", + white = "DJ_03_Lights_04", + purple = "DJ_04_Lights_04", + + Set = function(light, refresh) + AfterHoursNightclubs.Interior.Lights.Lasers.Clear(false) + + SetIplPropState(AfterHoursNightclubs.interiorId, light, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(AfterHoursNightclubs.Interior.Lights.Lasers) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, value, false, refresh) + end + end + end + }, + Clear = function() + AfterHoursNightclubs.Interior.Lights.Droplets.Clear() + AfterHoursNightclubs.Interior.Lights.Neons.Clear() + AfterHoursNightclubs.Interior.Lights.Bands.Clear() + AfterHoursNightclubs.Interior.Lights.Lasers.Clear() + end + }, + Bar = { + Enable = function(state, refresh) + SetIplPropState(AfterHoursNightclubs.interiorId, "Int01_ba_bar_content", state, refresh) + end + }, + Booze = { + A = "Int01_ba_booze_01", + B = "Int01_ba_booze_02", + C = "Int01_ba_booze_03", + + Enable = function(booze, state, refresh) + if type(booze) == "table" then + for key, value in pairs(booze) do + if type(value) == "string" then + SetIplPropState(AfterHoursNightclubs.interiorId, booze, state, refresh) + end + end + else + SetIplPropState(AfterHoursNightclubs.interiorId, booze, state, refresh) + end + end + }, + Trophy = { + Color = { + bronze = 0, + silver = 1, + gold = 2 + }, + number1 = "Int01_ba_trophy01", + battler = "Int01_ba_trophy02", + dancer = "Int01_ba_trophy03", + + Enable = function(trophy, state, color, refresh) + SetIplPropState(AfterHoursNightclubs.interiorId, trophy, state, refresh) + SetInteriorEntitySetColor(AfterHoursNightclubs.interiorId, trophy, color) + end + }, + DryIce = { + scale = 5.0, + Emitters = { + { + pos = vector3(-1602.932, -3019.1, -79.99), + rot = vector3(0.0, -10.0, 66.0) + }, + { + pos = vector3(-1593.238, -3017.05, -79.99), + rot = vector3(0.0, -10.0, 110.0) + }, + { + pos = vector3(-1597.134, -3008.2, -79.99), + rot = vector3(0.0, -10.0, -122.53) + }, + { + pos = vector3(-1589.966, -3008.518, -79.99), + rot = vector3(0.0, -10.0, -166.97) + } + }, + + Enable = function(state) + if state then + RequestNamedPtfxAsset("scr_ba_club") + while not HasNamedPtfxAssetLoaded("scr_ba_club") do + Wait(0) + end + + for key, emitter in pairs(AfterHoursNightclubs.Interior.DryIce.Emitters) do + UseParticleFxAsset("scr_ba_club") + StartParticleFxLoopedAtCoord("scr_ba_club_smoke_machine", emitter.pos.x, emitter.pos.y, emitter.pos.z, emitter.rot.x, emitter.rot.y, emitter.rot.z, AfterHoursNightclubs.Interior.DryIce.scale, false, false, false, true) + end + else + local radius = 1.0 + + for key, emitter in pairs(AfterHoursNightclubs.Interior.DryIce.Emitters) do + RemoveParticleFxInRange(emitter.pos.x, emitter.pos.y, emitter.pos.z, radius) + end + end + end, + }, + Details = { + clutter = "Int01_ba_Clutter", -- Clutter and graffitis + worklamps = "Int01_ba_Worklamps", -- Work lamps + trash + truck = "Int01_ba_deliverytruck", -- Truck parked in the garage + dryIce = "Int01_ba_dry_ice", -- Dry ice machines (no effects) + lightRigsOff = "light_rigs_off", -- All light rigs at once but turned off + roofLightsOff = "Int01_ba_lightgrid_01", -- Fake lights + floorTradLights = "Int01_ba_trad_lights", -- Floor lights meant to go with the trad style + chest = "Int01_ba_trophy04", -- Chest on the VIP desk + vaultAmmunations = "Int01_ba_trophy05", -- (inside vault) Ammunations + vaultMeth = "Int01_ba_trophy07", -- (inside vault) Meth bag + vaultFakeID = "Int01_ba_trophy08", -- (inside vault) Fake ID + vaultWeed = "Int01_ba_trophy09", -- (inside vault) Opened weed bag + vaultCoke = "Int01_ba_trophy10", -- (inside vault) Coke doll + vaultCash = "Int01_ba_trophy11", -- (inside vault) Scrunched fake money + + Enable = function(details, state, refresh) + SetIplPropState(AfterHoursNightclubs.interiorId, details, state, refresh) + end + } + }, + + -- 760, -1337, 27 + Mesa = { + id = 0, + + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.Mesa.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.Mesa.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.Mesa.id) + end + } + }, + + -- 348, -979, 30 + MissionRow = { + id = 1, + + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.MissionRow.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.MissionRow.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.MissionRow.id) + end + } + }, + + -- -118, -1260, 30 + Strawberry = { + id = 2, + + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.Strawberry.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.Strawberry.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.Strawberry.id) + end + } + }, + + -- 9, 221, 109 + VinewoodWest = { + id = 3, + + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.VinewoodWest.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.VinewoodWest.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.VinewoodWest.id) + end + } + }, + + -- 868, -2098, 31 + Cypress = { + id = 4, + + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.Cypress.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.Cypress.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.Cypress.id) + end + } + }, + + -- -1287, -647, 27 + DelPerro = { + id = 5, + + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.DelPerro.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.DelPerro.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.DelPerro.id) + end + } + }, + + -- -680, -2461, 14 + Airport = { + id = 6, + + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.Airport.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.Airport.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.Airport.id) + end + } + }, + + -- 192, -3168, 6 + Elysian = { + id = 7, + + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.Elysian.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.Elysian.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.Elysian.id) + end + } + }, + + -- 373, 254, 103 + Vinewood = { + id = 8, + + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.Vinewood.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.Vinewood.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.Vinewood.id) + end + } + }, + + -- -1171, -1150, 6 + Vespucci = { + id = 9, + Barrier = { + Enable = function(state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Barrier.Enable(AfterHoursNightclubs.Vespucci.id, state) + end + }, + Posters = { + Enable = function(poster, state) + if state == nil then + state = true + end + + AfterHoursNightclubs.Posters.Enable(AfterHoursNightclubs.Vespucci.id, poster, state) + end, + Clear = function() + AfterHoursNightclubs.Posters.Clear(AfterHoursNightclubs.Vespucci.id) + end + } + }, + + Barrier = { + barrier = "ba_barriers_caseX", + + Enable = function(clubId, state) + value = AfterHoursNightclubs.Barrier.barrier:gsub("caseX", "case" .. tostring(clubId)) + + EnableIpl(value, state) + end + }, + Posters = { + forSale = "ba_caseX_forsale", + dixon = "ba_caseX_dixon", + madonna = "ba_caseX_madonna", + solomun = "ba_caseX_solomun", + taleOfUs = "ba_caseX_taleofus", + + Enable = function(clubId, poster, state) + if type(poster) == "table" then + for key, value in pairs(poster) do + if type(value) == "string" then + value = value:gsub("caseX", "case" .. tostring(clubId)) + + EnableIpl(value, state) + end + end + else + poster = poster:gsub("caseX", "case" .. tostring(clubId)) + + EnableIpl(poster, state) + end + end, + Clear = function(clubId) + for key, value in pairs(AfterHoursNightclubs.Posters) do + if type(value) == "string" then + value = value:gsub("caseX", "case" .. tostring(clubId)) + + EnableIpl(value, false) + end + end + end + }, + + LoadDefault = function() + -- Interior setup + AfterHoursNightclubs.Ipl.Interior.Load() + + AfterHoursNightclubs.Interior.Name.Set(AfterHoursNightclubs.Interior.Name.galaxy) + AfterHoursNightclubs.Interior.Style.Set(AfterHoursNightclubs.Interior.Style.edgy) + + AfterHoursNightclubs.Interior.Podium.Set(AfterHoursNightclubs.Interior.Podium.edgy) + AfterHoursNightclubs.Interior.Speakers.Set(AfterHoursNightclubs.Interior.Speakers.upgrade) + + AfterHoursNightclubs.Interior.Security.Set(AfterHoursNightclubs.Interior.Security.on) + + AfterHoursNightclubs.Interior.Turntables.Set(AfterHoursNightclubs.Interior.Turntables.style01) + AfterHoursNightclubs.Interior.Lights.Bands.Set(AfterHoursNightclubs.Interior.Lights.Bands.cyan) + + AfterHoursNightclubs.Interior.Bar.Enable(true) + + AfterHoursNightclubs.Interior.Booze.Enable(AfterHoursNightclubs.Interior.Booze, true) + + AfterHoursNightclubs.Interior.Trophy.Enable(AfterHoursNightclubs.Interior.Trophy.number1, true, AfterHoursNightclubs.Interior.Trophy.Color.gold) + + RefreshInterior(AfterHoursNightclubs.interiorId) + + -- Exterior IPL + AfterHoursNightclubs.Mesa.Barrier.Enable(true) + AfterHoursNightclubs.Mesa.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.Mesa.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + + AfterHoursNightclubs.MissionRow.Barrier.Enable(true) + AfterHoursNightclubs.MissionRow.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.MissionRow.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + + AfterHoursNightclubs.Strawberry.Barrier.Enable(true) + AfterHoursNightclubs.Strawberry.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.Strawberry.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + + AfterHoursNightclubs.VinewoodWest.Barrier.Enable(true) + AfterHoursNightclubs.VinewoodWest.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.VinewoodWest.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + + AfterHoursNightclubs.Cypress.Barrier.Enable(true) + AfterHoursNightclubs.Cypress.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.Cypress.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + + AfterHoursNightclubs.DelPerro.Barrier.Enable(true) + AfterHoursNightclubs.DelPerro.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.DelPerro.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + + AfterHoursNightclubs.Airport.Barrier.Enable(true) + AfterHoursNightclubs.Airport.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.Airport.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + + AfterHoursNightclubs.Elysian.Barrier.Enable(true) + AfterHoursNightclubs.Elysian.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.Elysian.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + + AfterHoursNightclubs.Vinewood.Barrier.Enable(true) + AfterHoursNightclubs.Vinewood.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.Vinewood.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + + AfterHoursNightclubs.Vespucci.Barrier.Enable(true) + AfterHoursNightclubs.Vespucci.Posters.Enable(AfterHoursNightclubs.Posters, true) + AfterHoursNightclubs.Vespucci.Posters.Enable(AfterHoursNightclubs.Posters.forSale, false) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_bikers/clubhouse1.lua b/resources/[core]/bob74_ipl/dlc_bikers/clubhouse1.lua new file mode 100644 index 0000000..0bddea1 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_bikers/clubhouse1.lua @@ -0,0 +1,388 @@ +-- Clubhouse1: 1107.04, -3157.399, -37.51859 +exports('GetBikerClubhouse1Object', function() + return BikerClubhouse1 +end) + +BikerClubhouse1 = { + interiorId = 246273, + + Ipl = { + Interior = { + ipl = "bkr_biker_interior_placement_interior_0_biker_dlc_int_01_milo", + + Load = function() + EnableIpl(BikerClubhouse1.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(BikerClubhouse1.Ipl.Interior.ipl, false) + end + } + }, + Walls = { + brick = "walls_01", + plain = "walls_02", + Color = { + sable = 0, + yellowGray = 1, + red = 2, + brown = 3, + yellow = 4, + lightYellow = 5, + lightYellowGray = 6, + lightGray = 7, + orange = 8, + gray = 9 + }, + + Set = function(walls, color, refresh) + if color == nil then + color = 0 + end + + BikerClubhouse1.Walls.Clear(false) + + SetIplPropState(BikerClubhouse1.interiorId, walls, true, refresh) + SetInteriorEntitySetColor(BikerClubhouse1.interiorId, walls, color) + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Walls.brick, + BikerClubhouse1.Walls.plain + }, false, refresh) + end + }, + Furnitures = { + A = "furnishings_01", + B = "furnishings_02", + + Set = function(furn, color, refresh) + if color == nil then + color = 0 + end + + BikerClubhouse1.Furnitures.Clear(false) + + SetIplPropState(BikerClubhouse1.interiorId, furn, true, refresh) + SetInteriorEntitySetColor(BikerClubhouse1.interiorId, furn, color) + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Furnitures.A, + BikerClubhouse1.Furnitures.B + }, false, refresh) + end + }, + Decoration = { + A = "decorative_01", + B = "decorative_02", + + Set = function(deco, refresh) + BikerClubhouse1.Decoration.Clear(false) + + SetIplPropState(BikerClubhouse1.interiorId, deco, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Decoration.A, + BikerClubhouse1.Decoration.B + }, false, refresh) + end + }, + Mural = { + none = "", + rideFree = "mural_01", + mods = "mural_02", + brave = "mural_03", + fist = "mural_04", + forest = "mural_05", + mods2 = "mural_06", + rideForever = "mural_07", + heart = "mural_08", + route68 = "mural_09", + + Set = function(mural, refresh) + BikerClubhouse1.Mural.Clear(false) + + if mural ~= "" then + SetIplPropState(BikerClubhouse1.interiorId, mural, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Mural.rideFree, + BikerClubhouse1.Mural.mods, + BikerClubhouse1.Mural.brave, + BikerClubhouse1.Mural.fist, + BikerClubhouse1.Mural.forest, + BikerClubhouse1.Mural.mods2, + BikerClubhouse1.Mural.rideForever, + BikerClubhouse1.Mural.heart, + BikerClubhouse1.Mural.route68 + }, false, refresh) + end + }, + GunLocker = { + none = "", + on = "gun_locker", + off = "no_gun_locker", + + Set = function(locker, refresh) + BikerClubhouse1.GunLocker.Clear(false) + + if locker ~= "" then + SetIplPropState(BikerClubhouse1.interiorId, locker, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.GunLocker.on, + BikerClubhouse1.GunLocker.off + }, false, refresh) + end + }, + ModBooth = { + none = "", + on = "mod_booth", + off = "no_mod_booth", + + Set = function(mod, refresh) + BikerClubhouse1.ModBooth.Clear(false) + + if mod ~= "" then + SetIplPropState(BikerClubhouse1.interiorId, mod, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.ModBooth.on, + BikerClubhouse1.ModBooth.off + }, false, refresh) + end + }, + Meth = { + none = "", + stage1 = "meth_stash1", + stage2 = { + "meth_stash1", + "meth_stash2" + }, + stage3 = { + "meth_stash1", + "meth_stash2", + "meth_stash3" + }, + + Set = function(stage, refresh) + BikerClubhouse1.Meth.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse1.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Meth.stage1, + BikerClubhouse1.Meth.stage2, + BikerClubhouse1.Meth.stage3 + }, false, refresh) + end + }, + Cash = { + none = "", + stage1 = "cash_stash1", + stage2 = { + "cash_stash1", + "cash_stash2" + }, + stage3 = { + "cash_stash1", + "cash_stash2", + "cash_stash3" + }, + + Set = function(stage, refresh) + BikerClubhouse1.Cash.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse1.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Cash.stage1, + BikerClubhouse1.Cash.stage2, + BikerClubhouse1.Cash.stage3 + }, false, refresh) + end + }, + Weed = { + none = "", + stage1 = "weed_stash1", + stage2 = { + "weed_stash1", + "weed_stash2" + }, + stage3 = { + "weed_stash1", + "weed_stash2", + "weed_stash3" + }, + + Set = function(stage, refresh) + BikerClubhouse1.Weed.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse1.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Weed.stage1, + BikerClubhouse1.Weed.stage2, + BikerClubhouse1.Weed.stage3 + }, false, refresh) + end + }, + Coke = { + none = "", + stage1 = "coke_stash1", + stage2 = { + "coke_stash1", + "coke_stash2" + }, + stage3 = { + "coke_stash1", + "coke_stash2", + "coke_stash3" + }, + + Set = function(stage, refresh) + BikerClubhouse1.Coke.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse1.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Coke.stage1, + BikerClubhouse1.Coke.stage2, + BikerClubhouse1.Coke.stage3 + }, false, refresh) + end + }, + Counterfeit = { + none = "", + stage1 = "counterfeit_stash1", + stage2 = { + "counterfeit_stash1", + "counterfeit_stash2" + }, + stage3 = { + "counterfeit_stash1", + "counterfeit_stash2", + "counterfeit_stash3" + }, + + Set = function(stage, refresh) + BikerClubhouse1.Counterfeit.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse1.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Counterfeit.stage1, + BikerClubhouse1.Counterfeit.stage2, + BikerClubhouse1.Counterfeit.stage3 + }, false, refresh) + end + }, + Documents = { + none = "", + stage1 = "id_stash1", + stage2 = { + "id_stash1", + "id_stash2" + }, + stage3 = { + "id_stash1", + "id_stash2", + "id_stash3" + }, + + Set = function(stage, refresh) + BikerClubhouse1.Documents.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse1.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse1.interiorId, { + BikerClubhouse1.Documents.stage1, + BikerClubhouse1.Documents.stage2, + BikerClubhouse1.Documents.stage3 + }, false, refresh) + end + }, + + LoadDefault = function() + BikerClubhouse1.Ipl.Interior.Load() + + BikerClubhouse1.Walls.Set(BikerClubhouse1.Walls.plain, BikerClubhouse1.Walls.Color.brown) + + BikerClubhouse1.Furnitures.Set(BikerClubhouse1.Furnitures.A, 3) + BikerClubhouse1.Decoration.Set(BikerClubhouse1.Decoration.A) + BikerClubhouse1.Mural.Set(BikerClubhouse1.Mural.rideFree) + + BikerClubhouse1.ModBooth.Set(BikerClubhouse1.ModBooth.none) + BikerClubhouse1.GunLocker.Set(BikerClubhouse1.GunLocker.none) + + BikerClubhouse1.Meth.Set(BikerClubhouse1.Meth.none) + BikerClubhouse1.Cash.Set(BikerClubhouse1.Cash.none) + BikerClubhouse1.Coke.Set(BikerClubhouse1.Coke.none) + BikerClubhouse1.Weed.Set(BikerClubhouse1.Weed.none) + BikerClubhouse1.Counterfeit.Set(BikerClubhouse1.Counterfeit.none) + BikerClubhouse1.Documents.Set(BikerClubhouse1.Documents.none) + + RefreshInterior(BikerClubhouse1.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_bikers/clubhouse2.lua b/resources/[core]/bob74_ipl/dlc_bikers/clubhouse2.lua new file mode 100644 index 0000000..9aba622 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_bikers/clubhouse2.lua @@ -0,0 +1,402 @@ +-- Clubhouse2: 998.4809, -3164.711, -38.90733 +exports('GetBikerClubhouse2Object', function() + return BikerClubhouse2 +end) + +BikerClubhouse2 = { + interiorId = 246529, + + Ipl = { + Interior = { + ipl = "bkr_biker_interior_placement_interior_1_biker_dlc_int_02_milo", + + Load = function() + EnableIpl(BikerClubhouse2.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(BikerClubhouse2.Ipl.Interior.ipl, false) + end + } + }, + Walls = { + brick = "walls_01", + plain = "walls_02", + Color = { + greenAndGray = 1, + multicolor = 2, + orangeAndGray = 3, + blue = 4, + lightBlueAndSable = 5, + greenAndRed = 6, + yellowAndGray = 7, + red = 8, + fuchsiaAndGray = 9 + }, + + Set = function(walls, color, refresh) + if color == nil then + color = 0 + end + + BikerClubhouse2.Walls.Clear(false) + + SetIplPropState(BikerClubhouse2.interiorId, walls, true, refresh) + SetInteriorEntitySetColor(BikerClubhouse2.interiorId, walls, color) + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Walls.brick, + BikerClubhouse2.Walls.plain + }, false, refresh) + end + }, + LowerWalls = { + default = "lower_walls_default", + + SetColor = function(color, refresh) + SetIplPropState(BikerClubhouse2.interiorId, BikerClubhouse2.LowerWalls.default, true, refresh) + SetInteriorEntitySetColor(BikerClubhouse2.interiorId, BikerClubhouse2.LowerWalls.default, color) + end, + }, + Furnitures = { + A = "furnishings_01", + B = "furnishings_02", + -- Colors for "furnishings_01" only + Color = { + turquoise = 0, + darkBrown = 1, + brown = 2, + -- 3 equal 1 + brown2 = 4, + gray = 5, + red = 6, + darkGray = 7, + black = 8, + red2 = 9 + }, + + Set = function(furn, color, refresh) + if color == nil then + color = 0 + end + + BikerClubhouse2.Furnitures.Clear(false) + + SetIplPropState(BikerClubhouse2.interiorId, furn, true, refresh) + SetInteriorEntitySetColor(BikerClubhouse2.interiorId, furn, color) + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Furnitures.A, + BikerClubhouse2.Furnitures.B + }, false, refresh) + end + }, + Decoration = { + A = "decorative_01", + B = "decorative_02", + + Set = function(deco, refresh) + BikerClubhouse2.Decoration.Clear(false) + + SetIplPropState(BikerClubhouse2.interiorId, deco, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Decoration.A, + BikerClubhouse2.Decoration.B + }, false, refresh) + end + }, + Mural = { + none = "", + death1 = "mural_01", + cityColor1 = "mural_02", + death2 = "mural_03", + cityColor2 = "mural_04", + graffitis = "mural_05", + cityColor3 = "mural_06", + cityColor4 = "mural_07", + cityBlack = "mural_08", + death3 = "mural_09", + + Set = function(mural, refresh) + BikerClubhouse2.Mural.Clear(false) + + if mural ~= "" then + SetIplPropState(BikerClubhouse2.interiorId, mural, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse2.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Mural.death1, + BikerClubhouse2.Mural.cityColor1, + BikerClubhouse2.Mural.death2, + BikerClubhouse2.Mural.cityColor2, + BikerClubhouse2.Mural.graffitis, + BikerClubhouse2.Mural.cityColor3, + BikerClubhouse2.Mural.cityColor4, + BikerClubhouse2.Mural.cityBlack, + BikerClubhouse2.Mural.death3 + }, false, refresh) + end + }, + GunLocker = { + on = "gun_locker", + off = "no_gun_locker", + + Set = function(locker, refresh) + BikerClubhouse2.GunLocker.Clear(false) + + if locker ~= "" then + SetIplPropState(BikerClubhouse2.interiorId, locker, true, refresh) + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.GunLocker.on, + BikerClubhouse2.GunLocker.off + }, false, refresh) + end + }, + ModBooth = { + none = "", + on = "mod_booth", + off = "no_mod_booth", + + Set = function(mod, refresh) + BikerClubhouse2.ModBooth.Clear(false) + + if mod ~= "" then + SetIplPropState(BikerClubhouse2.interiorId, mod, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse2.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.ModBooth.on, + BikerClubhouse2.ModBooth.off + }, false, refresh) + end + }, + Meth = { + none = "", + stage1 = "meth_small", + stage2 = { + "meth_small", + "meth_medium" + }, + stage3 = { + "meth_small", + "meth_medium", + "meth_large" + }, + + Set = function(stage, refresh) + BikerClubhouse2.Meth.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse2.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse2.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Meth.stage1, + BikerClubhouse2.Meth.stage2, + BikerClubhouse2.Meth.stage3 + }, false, refresh) + end + }, + Cash = { + none = "", + stage1 = "cash_small", + stage2 = { + "cash_small", + "cash_medium" + }, + stage3 = { + "cash_small", + "cash_medium", + "cash_large" + }, + + Set = function(stage, refresh) + BikerClubhouse2.Cash.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse2.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse2.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Cash.stage1, + BikerClubhouse2.Cash.stage2, + BikerClubhouse2.Cash.stage3 + }, false, refresh) + end + }, + Weed = { + none = "", + stage1 = "weed_small", + stage2 = { + "weed_small", + "weed_medium" + }, + stage3 = { + "weed_small", + "weed_medium", + "weed_large" + }, + + Set = function(stage, refresh) + BikerClubhouse2.Weed.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse2.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse2.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Weed.stage1, + BikerClubhouse2.Weed.stage2, + BikerClubhouse2.Weed.stage3 + }, false, refresh) + end + }, + Coke = { + none = "", + stage1 = "coke_small", + stage2 = { + "coke_small", + "coke_medium" + }, + stage3 = { + "coke_small", + "coke_medium", + "coke_large" + }, + + Set = function(stage, refresh) + BikerClubhouse2.Coke.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse2.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse2.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Coke.stage1, + BikerClubhouse2.Coke.stage2, + BikerClubhouse2.Coke.stage3 + }, false, refresh) + end + }, + Counterfeit = { + none = "", + stage1 = "counterfeit_small", + stage2 = { + "counterfeit_small", + "counterfeit_medium" + }, + stage3 = { + "counterfeit_small", + "counterfeit_medium", + "counterfeit_large" + }, + + Set = function(stage, refresh) + BikerClubhouse2.Counterfeit.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse2.interiorId, stage, true, refresh) + else + if refresh then + RefreshInterior(BikerClubhouse2.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Counterfeit.stage1, + BikerClubhouse2.Counterfeit.stage2, + BikerClubhouse2.Counterfeit.stage3 + }, false, refresh) + end + }, + Documents = { + none = "", + stage1 = "id_small", + stage2 = { + "id_small", + "id_medium" + }, + stage3 = { + "id_small", + "id_medium", + "id_large" + }, + + Set = function(stage, refresh) + BikerClubhouse2.Documents.Clear(false) + + if stage ~= "" then + SetIplPropState(BikerClubhouse2.interiorId, stage, true, refresh) + else + if refresh then RefreshInterior(BikerClubhouse2.interiorId) end + end + end, + Clear = function(refresh) + SetIplPropState(BikerClubhouse2.interiorId, { + BikerClubhouse2.Documents.stage1, + BikerClubhouse2.Documents.stage2, + BikerClubhouse2.Documents.stage3 + }, false, refresh) + end + }, + + LoadDefault = function() + BikerClubhouse2.Ipl.Interior.Load() + + BikerClubhouse2.Walls.Set(BikerClubhouse2.Walls.brick, BikerClubhouse2.Walls.Color.red) + BikerClubhouse2.LowerWalls.SetColor(BikerClubhouse2.Walls.Color.red) + + BikerClubhouse2.Furnitures.Set(BikerClubhouse2.Furnitures.B, BikerClubhouse2.Furnitures.Color.black) + BikerClubhouse2.Decoration.Set(BikerClubhouse2.Decoration.B) + BikerClubhouse2.Mural.Set(BikerClubhouse2.Mural.death3) + + BikerClubhouse2.ModBooth.Set(BikerClubhouse2.ModBooth.off) + BikerClubhouse2.GunLocker.Set(BikerClubhouse2.GunLocker.off) + + BikerClubhouse2.Meth.Set(BikerClubhouse2.Meth.none) + BikerClubhouse2.Cash.Set(BikerClubhouse2.Cash.none) + BikerClubhouse2.Coke.Set(BikerClubhouse2.Coke.none) + BikerClubhouse2.Weed.Set(BikerClubhouse2.Weed.none) + BikerClubhouse2.Counterfeit.Set(BikerClubhouse2.Counterfeit.none) + BikerClubhouse2.Documents.Set(BikerClubhouse2.Documents.none) + + RefreshInterior(BikerClubhouse2.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_bikers/cocaine.lua b/resources/[core]/bob74_ipl/dlc_bikers/cocaine.lua new file mode 100644 index 0000000..448470d --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_bikers/cocaine.lua @@ -0,0 +1,98 @@ +-- Cocaine lockup: 1093.6, -3196.6, -38.99841 +exports('GetBikerCocaineObject', function() + return BikerCocaine +end) + +BikerCocaine = { + interiorId = 247553, + + Ipl = { + Interior = { + ipl = "bkr_biker_interior_placement_interior_4_biker_dlc_int_ware03_milo", + + Load = function() + EnableIpl(BikerCocaine.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(BikerCocaine.Ipl.Interior.ipl, false) + end + } + }, + Style = { + none = "", + basic = { + "set_up", + "equipment_basic", + "coke_press_basic", + "production_basic", + "table_equipment" + }, + upgrade = { + "set_up", + "equipment_upgrade", + "coke_press_upgrade", + "production_upgrade", + "table_equipment_upgrade" + }, + + Set = function(style, refresh) + BikerCocaine.Style.Clear(false) + + if style ~= "" then + SetIplPropState(BikerCocaine.interiorId, style, true, refresh) + else + if refresh then + RefreshInterior(BikerCocaine.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerCocaine.interiorId, { + BikerCocaine.Style.basic, + BikerCocaine.Style.upgrade + }, false, refresh) + end + }, + Security = { + none = "", + basic = "security_low", + upgrade = "security_high", + + Set = function(security, refresh) + BikerCocaine.Security.Clear(false) + + if security ~= "" then + SetIplPropState(BikerCocaine.interiorId, security, true, refresh) + else + if refresh then + RefreshInterior(BikerCocaine.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerCocaine.interiorId, { + BikerCocaine.Security.basic, + BikerCocaine.Security.upgrade + }, false, refresh) + end + }, + Details = { + cokeBasic1 = "coke_cut_01", -- On the basic tables + cokeBasic2 = "coke_cut_02", -- On the basic tables + cokeBasic3 = "coke_cut_03", -- On the basic tables + cokeUpgrade1 = "coke_cut_04", -- On the upgraded tables + cokeUpgrade2 = "coke_cut_05", -- On the upgraded tables + + Enable = function(details, state, refresh) + SetIplPropState(BikerCocaine.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + BikerCocaine.Ipl.Interior.Load() + BikerCocaine.Style.Set(BikerCocaine.Style.basic) + BikerCocaine.Security.Set(BikerCocaine.Security.none) + + RefreshInterior(BikerCocaine.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_bikers/counterfeit_cash.lua b/resources/[core]/bob74_ipl/dlc_bikers/counterfeit_cash.lua new file mode 100644 index 0000000..b631521 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_bikers/counterfeit_cash.lua @@ -0,0 +1,206 @@ +-- Counterfeit cash factory: 1121.897, -3195.338, -40.4025 +exports('GetBikerCounterfeitObject', function() + return BikerCounterfeit +end) + +BikerCounterfeit = { + interiorId = 247809, + + Ipl = { + Interior = { + ipl = "bkr_biker_interior_placement_interior_5_biker_dlc_int_ware04_milo", + + Load = function() + EnableIpl(BikerCounterfeit.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(BikerCounterfeit.Ipl.Interior.ipl, false) + end + } + }, + Printer = { + none = "", + basic = "counterfeit_standard_equip_no_prod", + basicProd = "counterfeit_standard_equip", + upgrade = "counterfeit_upgrade_equip_no_prod", + upgradeProd = "counterfeit_upgrade_equip", + + Set = function(printer, refresh) + BikerCounterfeit.Printer.Clear(false) + + if printer ~= "" then + SetIplPropState(BikerCounterfeit.interiorId, printer, true, refresh) + else + if refresh then + RefreshInterior(BikerCounterfeit.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerCounterfeit.interiorId, { + BikerCounterfeit.Printer.basic, + BikerCounterfeit.Printer.basicProd, + BikerCounterfeit.Printer.upgrade, + BikerCounterfeit.Printer.upgradeProd + }, false, refresh) + end + }, + Security = { + basic = "counterfeit_low_security", + upgrade = "counterfeit_security", + + Set = function(security, refresh) + BikerCounterfeit.Security.Clear(false) + + SetIplPropState(BikerCounterfeit.interiorId, security, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerCounterfeit.interiorId, { + BikerCounterfeit.Security.basic, + BikerCounterfeit.Security.upgrade + }, false, refresh) + end + }, + Dryer1 = { + none = "", + on = "dryera_on", + off = "dryera_off", + open = "dryera_open", + + Set = function(dryer, refresh) + BikerCounterfeit.Dryer1.Clear(false) + + if dryer ~= "" then + SetIplPropState(BikerCounterfeit.interiorId, dryer, true, refresh) + else + if refresh then + RefreshInterior(BikerCounterfeit.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerCounterfeit.interiorId, { + BikerCounterfeit.Dryer1.on, + BikerCounterfeit.Dryer1.off, + BikerCounterfeit.Dryer1.open + }, false, refresh) + end + }, + Dryer2 = { + none = "", + on = "dryerb_on", + off = "dryerb_off", + open = "dryerb_open", + + Set = function(dryer, refresh) + BikerCounterfeit.Dryer2.Clear(false) + + if dryer ~= "" then + SetIplPropState(BikerCounterfeit.interiorId, dryer, true, refresh) + else + if refresh then + RefreshInterior(BikerCounterfeit.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerCounterfeit.interiorId, { + BikerCounterfeit.Dryer2.on, + BikerCounterfeit.Dryer2.off, + BikerCounterfeit.Dryer2.open + }, false, refresh) + end + }, + Dryer3 = { + none = "", + on = "dryerc_on", + off = "dryerc_off", + open = "dryerc_open", + + Set = function(dryer, refresh) + BikerCounterfeit.Dryer3.Clear(false) + + if dryer ~= "" then + SetIplPropState(BikerCounterfeit.interiorId, dryer, true, refresh) + else + if refresh then + RefreshInterior(BikerCounterfeit.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerCounterfeit.interiorId, { + BikerCounterfeit.Dryer3.on, + BikerCounterfeit.Dryer3.off, + BikerCounterfeit.Dryer3.open + }, false, refresh) + end + }, + Dryer4 = { + none = "", + on = "dryerd_on", + off = "dryerd_off", + open = "dryerd_open", + + Set = function(dryer, refresh) + BikerCounterfeit.Dryer4.Clear(false) + + if dryer ~= "" then + SetIplPropState(BikerCounterfeit.interiorId, dryer, true, refresh) + else + if refresh then + RefreshInterior(BikerCounterfeit.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerCounterfeit.interiorId, { + BikerCounterfeit.Dryer4.on, + BikerCounterfeit.Dryer4.off, + BikerCounterfeit.Dryer4.open + }, false, refresh) + end + }, + Details = { + Cash10 = { + A = "counterfeit_cashpile10a", + B = "counterfeit_cashpile10b", + C = "counterfeit_cashpile10c", + D = "counterfeit_cashpile10d", + }, + Cash20 = { + A = "counterfeit_cashpile20a", + B = "counterfeit_cashpile20b", + C = "counterfeit_cashpile20c", + D = "counterfeit_cashpile20d", + }, + Cash100 = { + A = "counterfeit_cashpile100a", + B = "counterfeit_cashpile100b", + C = "counterfeit_cashpile100c", + D = "counterfeit_cashpile100d", + }, + chairs = "special_chairs", -- Brown chairs at the end of the room + cutter = "money_cutter", -- Money cutting machine + furnitures = "counterfeit_setup", -- Paper, counting machines, cups + + Enable = function(details, state, refresh) + SetIplPropState(BikerCounterfeit.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + BikerCounterfeit.Ipl.Interior.Load() + BikerCounterfeit.Printer.Set(BikerCounterfeit.Printer.basicProd) + BikerCounterfeit.Security.Set(BikerCounterfeit.Security.upgrade) + BikerCounterfeit.Dryer1.Set(BikerCounterfeit.Dryer1.open) + BikerCounterfeit.Dryer2.Set(BikerCounterfeit.Dryer2.on) + BikerCounterfeit.Dryer3.Set(BikerCounterfeit.Dryer3.on) + BikerCounterfeit.Dryer4.Set(BikerCounterfeit.Dryer4.on) + BikerCounterfeit.Details.Enable(BikerCounterfeit.Details.cutter, true) + BikerCounterfeit.Details.Enable(BikerCounterfeit.Details.furnitures, true) + BikerCounterfeit.Details.Enable(BikerCounterfeit.Details.Cash100, true) + + RefreshInterior(BikerCounterfeit.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_bikers/document_forgery.lua b/resources/[core]/bob74_ipl/dlc_bikers/document_forgery.lua new file mode 100644 index 0000000..2f26cd4 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_bikers/document_forgery.lua @@ -0,0 +1,107 @@ +-- Document forgery: 1165, -3196.6, -39.01306 +exports('GetBikerDocumentForgeryObject', function() + return BikerDocumentForgery +end) + +BikerDocumentForgery = { + interiorId = 246785, + + Ipl = { + Interior = { + ipl = "bkr_biker_interior_placement_interior_6_biker_dlc_int_ware05_milo", + + Load = function() + EnableIpl(BikerDocumentForgery.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(BikerDocumentForgery.Ipl.Interior.ipl, false) + end + } + }, + Style = { + basic = "interior_basic", + upgrade = "interior_upgrade", + + Set = function(style, refresh) + BikerDocumentForgery.Style.Clear(false) + + SetIplPropState(BikerDocumentForgery.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerDocumentForgery.interiorId, { + BikerDocumentForgery.Style.basic, + BikerDocumentForgery.Style.upgrade + }, false, refresh) + end + }, + Equipment = { + none = "", + basic = "equipment_basic", + upgrade = "equipment_upgrade", + + Set = function(eqpt, refresh) + BikerDocumentForgery.Equipment.Clear(false) + + if eqpt ~= "" then + SetIplPropState(BikerDocumentForgery.interiorId, eqpt, true, refresh) + else + if refresh then + RefreshInterior(BikerDocumentForgery.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerDocumentForgery.interiorId, { + BikerDocumentForgery.Equipment.basic, + BikerDocumentForgery.Equipment.upgrade + }, false, refresh) + end + }, + Security = { + basic = "security_low", + upgrade = "security_high", + + Set = function(security, refresh) + BikerDocumentForgery.Security.Clear(false) + + SetIplPropState(BikerDocumentForgery.interiorId, security, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerDocumentForgery.interiorId, { + BikerDocumentForgery.Security.basic, + BikerDocumentForgery.Security.upgrade + }, false, refresh) + end + }, + Details = { + Chairs = { + A = "chair01", + B = "chair02", + C = "chair03", + D = "chair04", + E = "chair05", + F = "chair06", + G = "chair07" + }, + production = "production", -- Papers, pencils + furnitures = "set_up", -- Printers, shredders + clutter = "clutter", -- Pizza boxes, cups + + Enable = function(details, state, refresh) + SetIplPropState(BikerDocumentForgery.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + BikerDocumentForgery.Ipl.Interior.Load() + BikerDocumentForgery.Style.Set(BikerDocumentForgery.Style.basic) + BikerDocumentForgery.Security.Set(BikerDocumentForgery.Security.basic) + BikerDocumentForgery.Equipment.Set(BikerDocumentForgery.Equipment.basic) + BikerDocumentForgery.Details.Enable(BikerDocumentForgery.Details.production, false) + BikerDocumentForgery.Details.Enable(BikerDocumentForgery.Details.setup, false) + BikerDocumentForgery.Details.Enable(BikerDocumentForgery.Details.clutter, false) + BikerDocumentForgery.Details.Enable(BikerDocumentForgery.Details.Chairs, true) + + RefreshInterior(BikerDocumentForgery.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_bikers/gang.lua b/resources/[core]/bob74_ipl/dlc_bikers/gang.lua new file mode 100644 index 0000000..d0e9247 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_bikers/gang.lua @@ -0,0 +1,608 @@ +exports('GetBikerGangObject', function() + return BikerGang +end) + +AddEventHandler('onClientResourceStop', function(res) + if GetCurrentResourceName() ~= res then + return + end + + BikerGang.Clubhouse.ClearAll() +end) + +BikerGang = { + Name = { + Colors = { + black = 0, + gray = 1, + white = 2, + orange = 3, + red = 4, + green = 5, + yellow = 6, + blue = 7 + }, + Fonts = { + font1 = 0, + font2 = 1, + font3 = 2, + font4 = 3, + font5 = 4, + font6 = 5, + font7 = 6, + font8 = 7, + font9 = 8, + font10 = 9, + font11 = 10, + font12 = 11, + font13 = 12 + }, + name = "", + color = 0, + font = 0, + + Set = function(name, color, font) + BikerGang.Name.name = name + BikerGang.Name.color = color + BikerGang.Name.font = font + BikerGang.Clubhouse.ClubName.stage = 0 + end + }, + Emblem = { + Logo = { + eagle = "MPClubPreset1", + skull = "MPClubPreset2", + ace = "MPClubPreset3", + brassKnuckles = "MPClubPreset4", + UR = "MPClubPreset5", + fox = "MPClubPreset6", + city = "MPClubPreset7", + dices = "MPClubPreset8", + target = "MPClubPreset9" + }, + emblem = "MPClubPreset1", + rot = 90.0, -- Rotation for 0.0 to 360.0 + + Set = function(logo, rotation) + BikerGang.Emblem.emblem = logo + BikerGang.Emblem.rot = rotation + BikerGang.Clubhouse.Emblem.stage = 0 + end + }, + Clubhouse = { + interiorId1 = 246273, + interiorId2 = 246529, + + Members = { + President = { + needToLoad = false, + loaded = false, + renderId = -1, + textureDict = "", + pedheadshot = -1, + target = "memorial_wall_president", + prop = "bkr_prop_rt_memorial_president", + stage = 0, + + Init = function() + DrawEmptyRect(BikerGang.Clubhouse.Members.President.target, BikerGang.Clubhouse.Members.President.prop) + end, + Enable = function(state) + BikerGang.Clubhouse.Members.President.needToLoad = state + end, + Set = function(ped) + BikerGang.Clubhouse.Members.Set(BikerGang.Clubhouse.Members.President, ped) + end, + Clear = function() + BikerGang.Clubhouse.Members.Clear(BikerGang.Clubhouse.Members.President) + end + }, + VicePresident = { + needToLoad = false, + loaded = false, + renderId = -1, + textureDict = "", + pedheadshot = -1, + target = "memorial_wall_vice_president", + prop = "bkr_prop_rt_memorial_vice_pres", + stage = 0, + + Init = function() + DrawEmptyRect(BikerGang.Clubhouse.Members.VicePresident.target, BikerGang.Clubhouse.Members.VicePresident.prop) + end, + Enable = function(state) + BikerGang.Clubhouse.Members.VicePresident.needToLoad = state + end, + Set = function(ped) + BikerGang.Clubhouse.Members.Set(BikerGang.Clubhouse.Members.VicePresident, ped) + end, + Clear = function() + BikerGang.Clubhouse.Members.Clear(BikerGang.Clubhouse.Members.VicePresident) + end + }, + RoadCaptain = { + needToLoad = false, + loaded = false, + renderId = -1, + textureDict = "", + pedheadshot = -1, + target = "memorial_wall_active_01", + prop = "bkr_prop_rt_memorial_active_01", + stage = 0, + + Init = function() + DrawEmptyRect(BikerGang.Clubhouse.Members.RoadCaptain.target, BikerGang.Clubhouse.Members.RoadCaptain.prop) + end, + Enable = function(state) + BikerGang.Clubhouse.Members.RoadCaptain.needToLoad = state + end, + Set = function(ped) + BikerGang.Clubhouse.Members.Set(BikerGang.Clubhouse.Members.RoadCaptain, ped) + end, + Clear = function() + BikerGang.Clubhouse.Members.Clear(BikerGang.Clubhouse.Members.RoadCaptain) + end + }, + Enforcer = { + needToLoad = false, + loaded = false, + renderId = -1, + textureDict = "", + pedheadshot = -1, + target = "memorial_wall_active_02", + prop = "bkr_prop_rt_memorial_active_02", + stage = 0, + + Init = function() + DrawEmptyRect(BikerGang.Clubhouse.Members.Enforcer.target, BikerGang.Clubhouse.Members.Enforcer.prop) + end, + Enable = function(state) + BikerGang.Clubhouse.Members.Enforcer.needToLoad = state + end, + Set = function(ped) + BikerGang.Clubhouse.Members.Set(BikerGang.Clubhouse.Members.Enforcer, ped) + end, + Clear = function() + BikerGang.Clubhouse.Members.Clear(BikerGang.Clubhouse.Members.Enforcer) + end + }, + SergeantAtArms = { + needToLoad = false, + loaded = false, + renderId = -1, + textureDict = "", + pedheadshot = -1, + target = "memorial_wall_active_03", + prop = "bkr_prop_rt_memorial_active_03", + stage = 0, + + Init = function() + DrawEmptyRect(BikerGang.Clubhouse.Members.SergeantAtArms.target, BikerGang.Clubhouse.Members.SergeantAtArms.prop) + end, + Enable = function(state) + BikerGang.Clubhouse.Members.SergeantAtArms.needToLoad = state + end, + Set = function(ped) + BikerGang.Clubhouse.Members.Set(BikerGang.Clubhouse.Members.SergeantAtArms, ped) + end, + Clear = function() + BikerGang.Clubhouse.Members.Clear(BikerGang.Clubhouse.Members.SergeantAtArms) + end + }, + Set = function(member, ped) + member.Clear() + member.pedheadshot = GetPedheadshot(ped) + + if member.pedheadshot ~= -1 then + member.textureDict = GetPedheadshotTxdString(member.pedheadshot) + + local IsTextureDictLoaded = LoadStreamedTextureDict(member.textureDict) + + if not IsTextureDictLoaded then + print("ERROR: BikerClubhouseDrawMembers - Textures dictionnary \"" .. tostring(member.textureDict) .. "\" cannot be loaded.") + end + else + print("ERROR: BikerClubhouseDrawMembers - PedHeadShot not ready.") + end + end, + Clear = function(member) + if IsNamedRendertargetRegistered(member.target) then + ReleaseNamedRendertarget(GetHashKey(member.target)) + end + + if member.pedheadshot ~= -1 then + UnregisterPedheadshot(member.pedheadshot) + end + + if member.textureDict ~= "" then + SetStreamedTextureDictAsNoLongerNeeded(member.textureDict) + end + + member.renderId = -1 + member.textureDict = "" + member.pedheadshot = -1 + member.stage = 0 + end + }, + + ClubName = { + needToLoad = false, + loaded = false, + target = "clubname_blackboard_01a", + prop = "bkr_prop_clubhouse_blackboard_01a", + renderId = -1, + movieId = -1, + stage = 0, + + Init = function() + DrawEmptyRect(BikerGang.Clubhouse.ClubName.target, BikerGang.Clubhouse.ClubName.prop) + end, + Enable = function(state) + BikerGang.Clubhouse.ClubName.needToLoad = state + end, + Clear = function() + if IsNamedRendertargetRegistered(BikerGang.Clubhouse.ClubName.target) then + ReleaseNamedRendertarget(GetHashKey(BikerGang.Clubhouse.ClubName.target)) + end + + if HasScaleformMovieFilenameLoaded(BikerGang.Clubhouse.ClubName.movieId) then + SetScaleformMovieAsNoLongerNeeded(BikerGang.Clubhouse.ClubName.movieId) + end + + BikerGang.Clubhouse.ClubName.renderId = -1 + BikerGang.Clubhouse.ClubName.movieId = -1 + BikerGang.Clubhouse.ClubName.stage = 0 + end + }, + + Emblem = { + needToLoad = false, + loaded = false, + target = "clubhouse_table", + prop = "bkr_prop_rt_clubhouse_table", + renderId = -1, + movieId = -1, + stage = 0, + + Enable = function(state) + BikerGang.Clubhouse.Emblem.needToLoad = state + end, + Init = function() + DrawEmptyRect(BikerGang.Clubhouse.Emblem.target, BikerGang.Clubhouse.Emblem.prop) + end, + Clear = function() + if IsNamedRendertargetRegistered(BikerGang.Clubhouse.Emblem.target) then + ReleaseNamedRendertarget(GetHashKey(BikerGang.Clubhouse.Emblem.target)) + end + + BikerGang.Clubhouse.Emblem.renderId = -1 + BikerGang.Clubhouse.Emblem.stage = 0 + end + }, + + MissionsWall = { + Missions = { + Titles = { + byThePoundUpper = "BDEAL_DEALN", + byThePound = "DEAL_DEALN", + prisonerOfWarUpper = "BIGM_RESCN", + prisonerOfWar = "CELL_BIKER_RESC", + gunsForHire = "LR_INTRO_ST", + weaponOfChoice = "CELL_BIKER_CK", + gunrunningUpper = "GB_BIGUNLOAD_U", + gunrunning = "GB_BIGUNLOAD_T", + nineTenthsOfTheLawUpper = "SB_INTRO_TITLE", + nineTenthsOfTheLaw = "SB_MENU_TITLE", + jailbreakUpper = "FP_INTRO_TITLE", + jailbreak = "FP_MENU_TITLE", + crackedUpper = "SC_INTRO_TITLE", + cracked = "SC_MENU_TITLE", + fragileGoodsUpper = "DV_SH_BIG", + fragileGoods = "DV_SH_TITLE", + torchedUpper = "BA_SH_BIG", + torched = "BA_SH_TITLE", + outriderUpper = "SHU_SH_BIG", + outrider = "SHU_SH_TITLE" + }, + Descriptions = { + byThePound = "DEAL_DEALND", + prisonerOfWar = "CELL_BIKER_RESD", + gunsForHire = "GFH_MENU_DESC", + weaponOfChoice = "CELL_BIKER_CKD", + gunrunning = "GB_BIGUNLOAD_D", + nineTenthsOfTheLaw = "SB_MENU_DESC", + jailbreak = "FP_MENU_DESC", + cracked = "SC_MENU_DESC", + fragileGoods = "DV_MENU_DESC", + torched = "BA_MENU_DESC", + outrider = "SHU_MENU_DESC" + }, + Pictures = { + byThePound = "CHM_IMG0", -- Pickup car parked + prisonerOfWar = "CHM_IMG8", -- Police with man down + gunsForHire = "CHM_IMG4", -- Limo + weaponOfChoice = "CHM_IMG10", -- Prisoner being beaten + gunrunning = "CHM_IMG3", -- Shipment + nineTenthsOfTheLaw = "CHM_IMG6", -- Wheeling + jailbreak = "CHM_IMG5", -- Prison bus + cracked = "CHM_IMG1", -- Safe + fragileGoods = "CHM_IMG2", -- Lost Van + torched = "CHM_IMG9", -- Explosive crate + outrider = "CHM_IMG7" -- Sport ride + }, + }, + needToLoad = false, + loaded = false, + target = "clubhouse_Plan_01a", + prop = "bkr_prop_rt_clubhouse_plan_01a", + renderId = -1, + movieId = -1, + stage = 0, + Position = { + none = -1, + left = 0, + middle = 1, + right = 2 + }, + + Init = function() + if not DrawEmptyRect(BikerGang.Clubhouse.MissionsWall.target, BikerGang.Clubhouse.MissionsWall.prop) then + print("ERROR: BikerGang.Clubhouse.MissionsWall.Init() - DrawEmptyRect - Timeout") + end + end, + Enable = function(state) + BikerGang.Clubhouse.MissionsWall.needToLoad = state + end, + SelectMission = function(position) + if BikerGang.Clubhouse.MissionsWall.movieId ~= -1 then + BeginScaleformMovieMethod(BikerGang.Clubhouse.MissionsWall.movieId, "SET_SELECTED_MISSION") + ScaleformMovieMethodAddParamInt(position) -- Mission index 0 to 2 (-1 = no mission) + EndScaleformMovieMethod() + end + end, + SetMission = function(position, title, desc, textDict, x, y) + if BikerGang.Clubhouse.MissionsWall.needToLoad then + if not HasScaleformMovieFilenameLoaded(BikerGang.Clubhouse.MissionsWall.movieId) then + BikerGang.Clubhouse.MissionsWall.movieId = LoadScaleform("BIKER_MISSION_WALL") + end + + if BikerGang.Clubhouse.MissionsWall.movieId ~= -1 then + if position > -1 then + BeginScaleformMovieMethod(BikerGang.Clubhouse.MissionsWall.movieId, "SET_MISSION") + ScaleformMovieMethodAddParamInt(position) -- Mission index 0 to 2 (-1 = no mission) + ScaleformMovieMethodAddParamTextureNameString(title) + ScaleformMovieMethodAddParamTextureNameString(desc) + ScaleformMovieMethodAddParamPlayerNameString(textDict) + ScaleformMovieMethodAddParamFloat(x) -- Mission 0: world coordinates X + ScaleformMovieMethodAddParamFloat(y) -- Mission 0: world coordinates Y + EndScaleformMovieMethod() + else + -- Remove all missions + for key, value in pairs(BikerGang.Clubhouse.MissionsWall.Position) do + BikerGang.Clubhouse.MissionsWall.RemoveMission(value) + end + + BikerGang.Clubhouse.MissionsWall.SelectMission(BikerGang.Clubhouse.MissionsWall.Position.none) + end + end + end + end, + RemoveMission = function(position) + BeginScaleformMovieMethod(BikerGang.Clubhouse.MissionsWall.movieId, "HIDE_MISSION") + ScaleformMovieMethodAddParamInt(position) + EndScaleformMovieMethod() + end, + Clear = function() + -- Removing missions + BikerGang.Clubhouse.MissionsWall.SelectMission(BikerGang.Clubhouse.MissionsWall.Position.none) + BikerGang.Clubhouse.MissionsWall.SetMission(BikerGang.Clubhouse.MissionsWall.Position.none) + + -- Releasing handles + if IsNamedRendertargetRegistered(BikerGang.Clubhouse.MissionsWall.prop) then + ReleaseNamedRendertarget(GetHashKey(BikerGang.Clubhouse.MissionsWall.prop)) + end + + if HasScaleformMovieFilenameLoaded(BikerGang.Clubhouse.MissionsWall.movieId) then + SetScaleformMovieAsNoLongerNeeded(BikerGang.Clubhouse.MissionsWall.movieId) + end + + -- Resetting + BikerGang.Clubhouse.MissionsWall.renderId = -1 + BikerGang.Clubhouse.MissionsWall.movieId = -1 + BikerGang.Clubhouse.MissionsWall.stage = 0 + end + }, + + ClearAll = function() + BikerGang.Clubhouse.ClubName.Clear() + BikerGang.Clubhouse.ClubName.loaded = false + + BikerGang.Clubhouse.Emblem.Clear() + BikerGang.Clubhouse.Emblem.loaded = false + + BikerGang.Clubhouse.MissionsWall.Clear() + BikerGang.Clubhouse.MissionsWall.loaded = false + + for key, member in pairs(BikerGang.Clubhouse.Members) do + if type(member) == "table" then + member.Clear() + member.loaded = false + end + end + end + } +} + +CreateThread(function() + -- Removing the black texture + BikerGang.Clubhouse.Members.President.Init() + BikerGang.Clubhouse.Members.VicePresident.Init() + BikerGang.Clubhouse.Members.RoadCaptain.Init() + BikerGang.Clubhouse.Members.Enforcer.Init() + BikerGang.Clubhouse.Members.SergeantAtArms.Init() + + BikerGang.Clubhouse.ClubName.Init() + BikerGang.Clubhouse.Emblem.Init() + BikerGang.Clubhouse.MissionsWall.Init() + + while true do + if BikerGang.Clubhouse.ClubName.needToLoad or BikerGang.Clubhouse.Emblem.needToLoad or BikerGang.Clubhouse.MissionsWall.needToLoad or BikerGang.Clubhouse.Members.President.needToLoad or BikerGang.Clubhouse.Members.VicePresident.needToLoad or BikerGang.Clubhouse.Members.RoadCaptain.needToLoad or BikerGang.Clubhouse.Members.Enforcer.needToLoad or BikerGang.Clubhouse.Members.SergeantAtArms.needToLoad then + -- If we are inside a clubhouse, then we load + if Global.Biker.isInsideClubhouse1 or Global.Biker.isInsideClubhouse2 then + -- Club name + if BikerGang.Clubhouse.ClubName.needToLoad then + DrawClubName(BikerGang.Name.name, BikerGang.Name.color, BikerGang.Name.font) + + BikerGang.Clubhouse.ClubName.loaded = true + elseif BikerGang.Clubhouse.ClubName.loaded then + BikerGang.Clubhouse.ClubName.Clear() + BikerGang.Clubhouse.ClubName.loaded = false + end + + -- Emblem + if BikerGang.Clubhouse.Emblem.needToLoad then + DrawEmblem(BikerGang.Emblem.emblem, BikerGang.Emblem.rot) + + BikerGang.Clubhouse.Emblem.loaded = true + elseif BikerGang.Clubhouse.Emblem.loaded then + BikerGang.Clubhouse.Emblem.Clear() + BikerGang.Clubhouse.Emblem.loaded = false + end + + -- Missions wall + if BikerGang.Clubhouse.MissionsWall.needToLoad then + DrawMissions() + + BikerGang.Clubhouse.MissionsWall.loaded = true + elseif BikerGang.Clubhouse.MissionsWall.loaded then + BikerGang.Clubhouse.MissionsWall.Clear() + BikerGang.Clubhouse.MissionsWall.loaded = false + end + + -- Members: President + for key, member in pairs(BikerGang.Clubhouse.Members) do + if type(member) == "table" then + if member.needToLoad then + DrawMember(member) + member.loaded = true + elseif member.loaded then + member.Clear() + member.loaded = false + end + end + end + + Wait(0) -- We need to call all this every frame + else + -- Not in a clubhouse + Wait(1000) + end + else + -- No load needed + Wait(1000) + end + end +end) + +function DrawClubName(name, color, font) + if BikerGang.Clubhouse.ClubName.stage == 0 then + if BikerGang.Clubhouse.ClubName.renderId == -1 then + BikerGang.Clubhouse.ClubName.renderId = CreateNamedRenderTargetForModel(BikerGang.Clubhouse.ClubName.target, BikerGang.Clubhouse.ClubName.prop) + end + + if BikerGang.Clubhouse.ClubName.movieId == -1 then + BikerGang.Clubhouse.ClubName.movieId = RequestScaleformMovie("CLUBHOUSE_NAME") + end + + BikerGang.Clubhouse.ClubName.stage = 1 + elseif BikerGang.Clubhouse.ClubName.stage == 1 then + if HasScaleformMovieLoaded(BikerGang.Clubhouse.ClubName.movieId) then + local parameters = { + p0 = {type = "string", value = name}, + p1 = {type = "int", value = color}, + p2 = {type = "int", value = font} + } + + SetupScaleform(BikerGang.Clubhouse.ClubName.movieId, "SET_CLUBHOUSE_NAME", parameters) + + BikerGang.Clubhouse.ClubName.stage = 2 + else + BikerGang.Clubhouse.ClubName.movieId = RequestScaleformMovie("CLUBHOUSE_NAME") + end + elseif BikerGang.Clubhouse.ClubName.stage == 2 then + SetTextRenderId(BikerGang.Clubhouse.ClubName.renderId) + SetScriptGfxDrawOrder(4) + SetScriptGfxDrawBehindPausemenu(true) + SetScriptGfxAlign(73, 73) + DrawScaleformMovie(BikerGang.Clubhouse.ClubName.movieId, 0.0975, 0.105, 0.235, 0.35, 255, 255, 255, 255, 0) + SetTextRenderId(GetDefaultScriptRendertargetRenderId()) + ResetScriptGfxAlign() + end +end + +function DrawEmblem(texturesDict, rotation) + if BikerGang.Clubhouse.Emblem.stage == 0 then + if BikerGang.Clubhouse.Emblem.renderId == -1 then + BikerGang.Clubhouse.Emblem.renderId = CreateNamedRenderTargetForModel(BikerGang.Clubhouse.Emblem.target, BikerGang.Clubhouse.Emblem.prop) + end + + local IsTextureDictLoaded = LoadStreamedTextureDict(texturesDict) + + if not IsTextureDictLoaded then + print("ERROR: DrawEmblem - Textures dictionnary cannot be loaded.") + end + + BikerGang.Clubhouse.Emblem.stage = 1 + elseif BikerGang.Clubhouse.Emblem.stage == 1 then + BikerGang.Clubhouse.Emblem.renderId = CreateNamedRenderTargetForModel(BikerGang.Clubhouse.Emblem.target, BikerGang.Clubhouse.Emblem.prop) + BikerGang.Clubhouse.Emblem.stage = 2 + elseif BikerGang.Clubhouse.Emblem.stage == 2 then + SetTextRenderId(BikerGang.Clubhouse.Emblem.renderId) + SetScriptGfxAlign(73, 73) + SetScriptGfxDrawOrder(4) + SetScriptGfxDrawBehindPausemenu(true) + DrawInteractiveSprite(texturesDict, texturesDict, 0.5, 0.5, 1.0, 1.0, rotation, 255, 255, 255, 255); + ResetScriptGfxAlign() + SetTextRenderId(GetDefaultScriptRendertargetRenderId()) + end +end + +function DrawMissions() + if BikerGang.Clubhouse.MissionsWall.stage == 0 then + if BikerGang.Clubhouse.MissionsWall.renderId == -1 then + BikerGang.Clubhouse.MissionsWall.renderId = CreateNamedRenderTargetForModel(BikerGang.Clubhouse.MissionsWall.target, BikerGang.Clubhouse.MissionsWall.prop) + end + + BikerGang.Clubhouse.MissionsWall.stage = 1 + elseif BikerGang.Clubhouse.MissionsWall.stage == 1 then + if HasScaleformMovieLoaded(BikerGang.Clubhouse.MissionsWall.movieId) then + BikerGang.Clubhouse.MissionsWall.stage = 2 + else + BikerGang.Clubhouse.MissionsWall.movieId = RequestScaleformMovie("BIKER_MISSION_WALL") + end + elseif BikerGang.Clubhouse.MissionsWall.stage == 2 then + SetTextRenderId(BikerGang.Clubhouse.MissionsWall.renderId) + SetScriptGfxDrawOrder(4) + SetScriptGfxDrawBehindPausemenu(false) + DrawScaleformMovie(BikerGang.Clubhouse.MissionsWall.movieId, 0.5, 0.5, 1.0, 1.0, 255, 255, 255, 255, 0) + SetTextRenderId(GetDefaultScriptRendertargetRenderId()) + SetScaleformFitRendertarget(BikerGang.Clubhouse.MissionsWall.movieId, true) + end +end + +function DrawMember(member) + if member.stage == 0 then + member.stage = 1 + elseif member.stage == 1 then + member.renderId = CreateNamedRenderTargetForModel(member.target, member.prop) + member.stage = 2 + elseif member.stage == 2 then + if HasStreamedTextureDictLoaded(member.textureDict) then + SetTextRenderId(member.renderId) + SetScriptGfxAlign(73, 73) + DrawInteractiveSprite(member.textureDict, member.textureDict, 0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255) + ResetScriptGfxAlign() + SetTextRenderId(GetDefaultScriptRendertargetRenderId()) + end + end +end diff --git a/resources/[core]/bob74_ipl/dlc_bikers/meth.lua b/resources/[core]/bob74_ipl/dlc_bikers/meth.lua new file mode 100644 index 0000000..7f88a9a --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_bikers/meth.lua @@ -0,0 +1,87 @@ +-- Meth lab: 1009.5, -3196.6, -38.99682 +exports('GetBikerMethLabObject', function() + return BikerMethLab +end) + +BikerMethLab = { + interiorId = 247041, + + Ipl = { + Interior = { + ipl = "bkr_biker_interior_placement_interior_2_biker_dlc_int_ware01_milo", + + Load = function() + EnableIpl(BikerMethLab.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(BikerMethLab.Ipl.Interior.ipl, false) + end + } + }, + Style = { + none = "", + empty = "meth_lab_empty", + basic = { + "meth_lab_basic", + "meth_lab_setup" + }, + upgrade = { + "meth_lab_upgrade", + "meth_lab_setup" + }, + + Set = function(style, refresh) + BikerMethLab.Style.Clear(false) + + if style ~= "" then + SetIplPropState(BikerMethLab.interiorId, style, true, refresh) + else + if refresh then + RefreshInterior(BikerMethLab.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerMethLab.interiorId, { + BikerMethLab.Style.empty, + BikerMethLab.Style.basic, + BikerMethLab.Style.upgrade + }, false, refresh) + end + }, + Security = { + none = "", + upgrade = "meth_lab_security_high", + + Set = function(security, refresh) + BikerMethLab.Security.Clear(false) + + if security ~= "" then + SetIplPropState(BikerMethLab.interiorId, security, true, refresh) + else + if refresh then + RefreshInterior(BikerMethLab.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(BikerMethLab.interiorId, BikerMethLab.Security.upgrade, false, refresh) + end + }, + Details = { + production = "meth_lab_production", -- Products + + Enable = function(details, state, refresh) + SetIplPropState(BikerMethLab.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + BikerMethLab.Ipl.Interior.Load() + BikerMethLab.Style.Set(BikerMethLab.Style.empty) + BikerMethLab.Security.Set(BikerMethLab.Security.none) + BikerMethLab.Details.Enable(BikerMethLab.Details.production, false) + + RefreshInterior(BikerMethLab.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_bikers/weed.lua b/resources/[core]/bob74_ipl/dlc_bikers/weed.lua new file mode 100644 index 0000000..7983880 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_bikers/weed.lua @@ -0,0 +1,549 @@ +-- Weed farm: 1051.491, -3196.536, -39.14842 +exports('GetBikerWeedFarmObject', function() + return BikerWeedFarm +end) + +BikerWeedFarm = { + interiorId = 247297, + + Ipl = { + Interior = { + ipl = "bkr_biker_interior_placement_interior_3_biker_dlc_int_ware02_milo", + + Load = function() + EnableIpl(BikerWeedFarm.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(BikerWeedFarm.Ipl.Interior.ipl, false) + end + }, + }, + Style = { + basic = "weed_standard_equip", + upgrade = "weed_upgrade_equip", + + Set = function(style, refresh) + BikerWeedFarm.Style.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Style.basic, + BikerWeedFarm.Style.upgrade + }, false, refresh) + end + }, + Security = { + basic = "weed_low_security", + upgrade = "weed_security_upgrade", + + Set = function(security, refresh) + BikerWeedFarm.Security.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, security, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Security.basic, + BikerWeedFarm.Security.upgrade + }, false, refresh) + end + }, + Plant1 = { + Stage = { + small = "weed_growtha_stage1", + medium = "weed_growtha_stage2", + full = "weed_growtha_stage3", + + Set = function(stage, refresh) + BikerWeedFarm.Plant1.Stage.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, stage, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant1.Stage.small, + BikerWeedFarm.Plant1.Stage.medium, + BikerWeedFarm.Plant1.Stage.full + }, false, refresh) + end + }, + Light = { + basic = "light_growtha_stage23_standard", + upgrade = "light_growtha_stage23_upgrade", + + Set = function(light, refresh) + BikerWeedFarm.Plant1.Light.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, light, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant1.Light.basic, + BikerWeedFarm.Plant1.Light.upgrade + }, false, refresh) + end + }, + Hose = { + Enable = function(state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, "weed_hosea", state, refresh) + end + }, + Set = function(stage, upgrade, refresh) + BikerWeedFarm.Plant1.Stage.Set(stage, false) + BikerWeedFarm.Plant1.Light.Set(upgrade, false) + BikerWeedFarm.Plant1.Hose.Enable(true, true) + end, + Clear = function(refresh) + BikerWeedFarm.Plant1.Stage.Clear() + BikerWeedFarm.Plant1.Light.Clear() + BikerWeedFarm.Plant1.Hose.Enable(false, true) + end + }, + Plant2 = { + Stage = { + small = "weed_growthb_stage1", + medium = "weed_growthb_stage2", + full = "weed_growthb_stage3", + + Set = function(stage, refresh) + BikerWeedFarm.Plant2.Stage.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, stage, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant2.Stage.small, + BikerWeedFarm.Plant2.Stage.medium, + BikerWeedFarm.Plant2.Stage.full + }, false, refresh) + end + }, + Light = { + basic = "light_growthb_stage23_standard", + upgrade = "light_growthb_stage23_upgrade", + + Set = function(light, refresh) + BikerWeedFarm.Plant2.Light.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, light, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant2.Light.basic, + BikerWeedFarm.Plant2.Light.upgrade + }, false, refresh) + end + }, + Hose = { + Enable = function(state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, "weed_hoseb", state, refresh) + end + }, + Set = function(stage, upgrade, refresh) + BikerWeedFarm.Plant2.Stage.Set(stage, false) + BikerWeedFarm.Plant2.Light.Set(upgrade, false) + BikerWeedFarm.Plant2.Hose.Enable(true, true) + end, + Clear = function(refresh) + BikerWeedFarm.Plant2.Stage.Clear() + BikerWeedFarm.Plant2.Light.Clear() + BikerWeedFarm.Plant2.Hose.Enable(false, true) + end + }, + Plant3 = { + Stage = { + small = "weed_growthc_stage1", + medium = "weed_growthc_stage2", + full = "weed_growthc_stage3", + + Set = function(stage, refresh) + BikerWeedFarm.Plant3.Stage.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, stage, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant3.Stage.small, + BikerWeedFarm.Plant3.Stage.medium, + BikerWeedFarm.Plant3.Stage.full + }, false, refresh) + end + }, + Light = { + basic = "light_growthc_stage23_standard", + upgrade = "light_growthc_stage23_upgrade", + + Set = function(light, refresh) + BikerWeedFarm.Plant3.Light.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, light, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant3.Light.basic, + BikerWeedFarm.Plant3.Light.upgrade + }, false, refresh) + end + }, + Hose = { + Enable = function(state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, "weed_hosec", state, refresh) + end + }, + Set = function(stage, upgrade, refresh) + BikerWeedFarm.Plant3.Stage.Set(stage, false) + BikerWeedFarm.Plant3.Light.Set(upgrade, false) + BikerWeedFarm.Plant3.Hose.Enable(true, true) + end, + Clear = function(refresh) + BikerWeedFarm.Plant3.Stage.Clear() + BikerWeedFarm.Plant3.Light.Clear() + BikerWeedFarm.Plant3.Hose.Enable(false, true) + end + }, + Plant4 = { + Stage = { + small = "weed_growthd_stage1", + medium = "weed_growthd_stage2", + full = "weed_growthd_stage3", + + Set = function(stage, refresh) + BikerWeedFarm.Plant4.Stage.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, stage, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant4.Stage.small, + BikerWeedFarm.Plant4.Stage.medium, + BikerWeedFarm.Plant4.Stage.full + }, false, refresh) + end + }, + Light = { + basic = "light_growthd_stage23_standard", + upgrade = "light_growthd_stage23_upgrade", + + Set = function(light, refresh) + BikerWeedFarm.Plant4.Light.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, light, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant4.Light.basic, + BikerWeedFarm.Plant4.Light.upgrade + }, false, refresh) + end + }, + Hose = { + Enable = function(state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, "weed_hosed", state, refresh) + end + }, + Set = function(stage, upgrade, refresh) + BikerWeedFarm.Plant4.Stage.Set(stage, false) + BikerWeedFarm.Plant4.Light.Set(upgrade, false) + BikerWeedFarm.Plant4.Hose.Enable(true, true) + end, + Clear = function(refresh) + BikerWeedFarm.Plant4.Stage.Clear() + BikerWeedFarm.Plant4.Light.Clear() + BikerWeedFarm.Plant4.Hose.Enable(false, true) + end + }, + Plant5 = { + Stage = { + small = "weed_growthe_stage1", + medium = "weed_growthe_stage2", + full = "weed_growthe_stage3", + + Set = function(stage, refresh) + BikerWeedFarm.Plant5.Stage.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, stage, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant5.Stage.small, + BikerWeedFarm.Plant5.Stage.medium, + BikerWeedFarm.Plant5.Stage.full + }, false, refresh) + end + }, + Light = { + basic = "light_growthe_stage23_standard", + upgrade = "light_growthe_stage23_upgrade", + + Set = function(light, refresh) + BikerWeedFarm.Plant5.Light.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, light, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant5.Light.basic, + BikerWeedFarm.Plant5.Light.upgrade + }, false, refresh) + end + }, + Hose = { + Enable = function(state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, "weed_hosee", state, refresh) + end + }, + Set = function(stage, upgrade, refresh) + BikerWeedFarm.Plant5.Stage.Set(stage, false) + BikerWeedFarm.Plant5.Light.Set(upgrade, false) + BikerWeedFarm.Plant5.Hose.Enable(true, true) + end, + Clear = function(refresh) + BikerWeedFarm.Plant5.Stage.Clear() + BikerWeedFarm.Plant5.Light.Clear() + BikerWeedFarm.Plant5.Hose.Enable(false, true) + end + }, + Plant6 = { + Stage = { + small = "weed_growthf_stage1", + medium = "weed_growthf_stage2", + full = "weed_growthf_stage3", + + Set = function(stage, refresh) + BikerWeedFarm.Plant6.Stage.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, stage, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant6.Stage.small, + BikerWeedFarm.Plant6.Stage.medium, + BikerWeedFarm.Plant6.Stage.full + }, false, refresh) + end + }, + Light = { + basic = "light_growthf_stage23_standard", + upgrade = "light_growthf_stage23_upgrade", + + Set = function(light, refresh) + BikerWeedFarm.Plant6.Light.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, light, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant6.Light.basic, + BikerWeedFarm.Plant6.Light.upgrade + }, false, refresh) + end + }, + Hose = { + Enable = function(state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, "weed_hosef", state, refresh) + end + }, + Set = function(stage, upgrade, refresh) + BikerWeedFarm.Plant6.Stage.Set(stage, false) + BikerWeedFarm.Plant6.Light.Set(upgrade, false) + BikerWeedFarm.Plant6.Hose.Enable(true, true) + end, + Clear = function(refresh) + BikerWeedFarm.Plant6.Stage.Clear() + BikerWeedFarm.Plant6.Light.Clear() + BikerWeedFarm.Plant6.Hose.Enable(false, true) + end + }, + Plant7 = { + Stage = { + small = "weed_growthg_stage1", + medium = "weed_growthg_stage2", + full = "weed_growthg_stage3", + + Set = function(stage, refresh) + BikerWeedFarm.Plant7.Stage.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, stage, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant7.Stage.small, + BikerWeedFarm.Plant7.Stage.medium, + BikerWeedFarm.Plant7.Stage.full + }, false, refresh) + end + }, + Light = { + basic = "light_growthg_stage23_standard", + upgrade = "light_growthg_stage23_upgrade", + + Set = function(light, refresh) + BikerWeedFarm.Plant7.Light.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, light, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant7.Light.basic, + BikerWeedFarm.Plant7.Light.upgrade + }, false, refresh) + end + }, + Hose = { + Enable = function(state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, "weed_hoseg", state, refresh) + end + }, + Set = function(stage, upgrade, refresh) + BikerWeedFarm.Plant7.Stage.Set(stage, false) + BikerWeedFarm.Plant7.Light.Set(upgrade, false) + BikerWeedFarm.Plant7.Hose.Enable(true, true) + end, + Clear = function(refresh) + BikerWeedFarm.Plant7.Stage.Clear() + BikerWeedFarm.Plant7.Light.Clear() + BikerWeedFarm.Plant7.Hose.Enable(false, true) + end + }, + Plant8 = { + Stage = { + small = "weed_growthh_stage1", + medium = "weed_growthh_stage2", + full = "weed_growthh_stage3", + + Set = function(stage, refresh) + BikerWeedFarm.Plant8.Stage.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, stage, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant8.Stage.small, + BikerWeedFarm.Plant8.Stage.medium, + BikerWeedFarm.Plant8.Stage.full + }, false, refresh) + end + }, + Light = { + basic = "light_growthh_stage23_standard", + upgrade = "light_growthh_stage23_upgrade", + + Set = function(light, refresh) + BikerWeedFarm.Plant8.Light.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, light, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant8.Light.basic, + BikerWeedFarm.Plant8.Light.upgrade + }, false, refresh) + end + }, + Hose = { + Enable = function(state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, "weed_hoseh", state, refresh) + end + }, + Set = function(stage, upgrade, refresh) + BikerWeedFarm.Plant8.Stage.Set(stage, false) + BikerWeedFarm.Plant8.Light.Set(upgrade, false) + BikerWeedFarm.Plant8.Hose.Enable(true, true) + end, + Clear = function(refresh) + BikerWeedFarm.Plant8.Stage.Clear() + BikerWeedFarm.Plant8.Light.Clear() + BikerWeedFarm.Plant8.Hose.Enable(false, true) + end + }, + Plant9 = { + Stage = { + small = "weed_growthi_stage1", + medium = "weed_growthi_stage2", + full = "weed_growthi_stage3", + + Set = function(stage, refresh) + BikerWeedFarm.Plant9.Stage.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, stage, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant9.Stage.small, + BikerWeedFarm.Plant9.Stage.medium, + BikerWeedFarm.Plant9.Stage.full + }, false, refresh) + end + }, + Light = { + basic = "light_growthi_stage23_standard", + upgrade = "light_growthi_stage23_upgrade", + + Set = function(light, refresh) + BikerWeedFarm.Plant9.Light.Clear(false) + + SetIplPropState(BikerWeedFarm.interiorId, light, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(BikerWeedFarm.interiorId, { + BikerWeedFarm.Plant9.Light.basic, + BikerWeedFarm.Plant9.Light.upgrade + }, false, refresh) + end + }, + Hose = { + Enable = function(state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, "weed_hosei", state, refresh) + end + }, + Set = function(stage, upgrade, refresh) + BikerWeedFarm.Plant9.Stage.Set(stage, false) + BikerWeedFarm.Plant9.Light.Set(upgrade, false) + BikerWeedFarm.Plant9.Hose.Enable(true, true) + end, + Clear = function(refresh) + BikerWeedFarm.Plant9.Stage.Clear() + BikerWeedFarm.Plant9.Light.Clear() + BikerWeedFarm.Plant9.Hose.Enable(false, true) + end + }, + Details = { + production = "weed_production", -- Weed on the tables + fans = "weed_set_up", -- Fans + mold buckets + drying = "weed_drying", -- Drying weed hooked to the ceiling + chairs = "weed_chairs", -- Chairs at the tables + + Enable = function(details, state, refresh) + SetIplPropState(BikerWeedFarm.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + BikerWeedFarm.Ipl.Interior.Load() + BikerWeedFarm.Style.Set(BikerWeedFarm.Style.upgrade) + BikerWeedFarm.Security.Set(BikerWeedFarm.Security.basic) + BikerWeedFarm.Details.Enable(BikerWeedFarm.Details.drying, false) + BikerWeedFarm.Details.Enable(BikerWeedFarm.Details.chairs, false) + BikerWeedFarm.Details.Enable(BikerWeedFarm.Details.production, false) + + BikerWeedFarm.Details.Enable({ + BikerWeedFarm.Details.production, + BikerWeedFarm.Details.chairs, + BikerWeedFarm.Details.drying + }, true) + + BikerWeedFarm.Plant1.Set(BikerWeedFarm.Plant1.Stage.medium, BikerWeedFarm.Plant1.Light.basic) + BikerWeedFarm.Plant2.Set(BikerWeedFarm.Plant2.Stage.full, BikerWeedFarm.Plant2.Light.basic) + BikerWeedFarm.Plant3.Set(BikerWeedFarm.Plant3.Stage.medium, BikerWeedFarm.Plant3.Light.basic) + BikerWeedFarm.Plant4.Set(BikerWeedFarm.Plant4.Stage.full, BikerWeedFarm.Plant4.Light.basic) + BikerWeedFarm.Plant5.Set(BikerWeedFarm.Plant5.Stage.medium, BikerWeedFarm.Plant5.Light.basic) + BikerWeedFarm.Plant6.Set(BikerWeedFarm.Plant6.Stage.full, BikerWeedFarm.Plant6.Light.basic) + BikerWeedFarm.Plant7.Set(BikerWeedFarm.Plant7.Stage.medium, BikerWeedFarm.Plant7.Light.basic) + BikerWeedFarm.Plant8.Set(BikerWeedFarm.Plant8.Stage.full, BikerWeedFarm.Plant8.Light.basic) + BikerWeedFarm.Plant9.Set(BikerWeedFarm.Plant9.Stage.full, BikerWeedFarm.Plant9.Light.basic) + + RefreshInterior(BikerWeedFarm.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_casino/casino.lua b/resources/[core]/bob74_ipl/dlc_casino/casino.lua new file mode 100644 index 0000000..0b38d04 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_casino/casino.lua @@ -0,0 +1,70 @@ +exports('GetDiamondCasinoObject', function() + return DiamondCasino +end) + +DiamondCasino = { + Ipl = { + Building = { + ipl = { + "hei_dlc_windows_casino", + "hei_dlc_casino_aircon", + "vw_dlc_casino_door", + "hei_dlc_casino_door" + }, + + Load = function() + EnableIpl(DiamondCasino.Ipl.Building.ipl, true) + end, + Remove = function() + EnableIpl(DiamondCasino.Ipl.Building.ipl, false) + end + }, + Main = { + ipl = "vw_casino_main", + + -- Normal Version: 1110.20, 216.60 -49.45 + -- Heist Version: 2490.67, -280.40, -58.71 + + Load = function() + EnableIpl(DiamondCasino.Ipl.Main.ipl, true) + end, + Remove = function() + EnableIpl(DiamondCasino.Ipl.Main.ipl, false) + end + }, + Garage = { + ipl = "vw_casino_garage", + + -- Loading Bay Garage: 2536.276, -278.98, -64.722 + -- Vault Lobby: 2483.151, -278.58, -70.694 + -- Vault: 2516.765, -238.056, -70.737 + + Load = function() + EnableIpl(DiamondCasino.Ipl.Garage.ipl, true) + end, + Remove = function() + EnableIpl(DiamondCasino.Ipl.Garage.ipl, false) + end + }, + Carpark = { + ipl = "vw_casino_carpark", + + -- Carpark Garage: 1380.000 200.000 -50.000 + -- VIP Carpark Garage: 1295.000 230.000 -50.000 + + Load = function() + EnableIpl(DiamondCasino.Ipl.Carpark.ipl, true) + end, + Remove = function() + EnableIpl(DiamondCasino.Ipl.Carpark.ipl, false) + end + } + }, + + LoadDefault = function() + DiamondCasino.Ipl.Building.Load() + DiamondCasino.Ipl.Main.Load() + DiamondCasino.Ipl.Carpark.Load() + DiamondCasino.Ipl.Garage.Load() + end +} diff --git a/resources/[core]/bob74_ipl/dlc_casino/penthouse.lua b/resources/[core]/bob74_ipl/dlc_casino/penthouse.lua new file mode 100644 index 0000000..ec41d66 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_casino/penthouse.lua @@ -0,0 +1,335 @@ +exports('GetDiamondPenthouseObject', function() + return DiamondPenthouse +end) + +-- Penthouse: 976.636 70.295 115.164 + +DiamondPenthouse = { + interiorId = 274689, + + Ipl = { + Interior = { + ipl = "vw_casino_penthouse", + + Load = function() + EnableIpl(DiamondPenthouse.Ipl.Interior.ipl, true) + SetIplPropState(DiamondPenthouse.interiorId, "Set_Pent_Tint_Shell", true, true) + end, + Remove = function() + EnableIpl(DiamondPenthouse.Ipl.Interior.ipl, false) + end + } + }, + Colors = { + default = 0, + sharp = 1, + vibrant = 2, + timeless = 3 + }, + Interior = { + Walls = { + SetColor = function(color, refresh) + SetInteriorEntitySetColor(DiamondPenthouse.interiorId, "Set_Pent_Tint_Shell", color) + + if refresh then + RefreshInterior(DiamondPenthouse.interiorId) + end + end + }, + Pattern = { + pattern01 = "Set_Pent_Pattern_01", + pattern02 = "Set_Pent_Pattern_02", + pattern03 = "Set_Pent_Pattern_03", + pattern04 = "Set_Pent_Pattern_04", + pattern05 = "Set_Pent_Pattern_05", + pattern06 = "Set_Pent_Pattern_06", + pattern07 = "Set_Pent_Pattern_07", + pattern08 = "Set_Pent_Pattern_08", + pattern09 = "Set_Pent_Pattern_09", + + Set = function(pattern, refresh) + DiamondPenthouse.Interior.Pattern.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, pattern, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Pattern) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end, + SetColor = function(pattern, color, refresh) + SetInteriorEntitySetColor(DiamondPenthouse.interiorId, pattern, color) + + if refresh then + RefreshInterior(DiamondPenthouse.interiorId) + end + end + }, + SpaBar = { + open = "Set_Pent_Spa_Bar_Open", + closed = "Set_Pent_Spa_Bar_Closed", + + Set = function(state, refresh) + DiamondPenthouse.Interior.SpaBar.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, state, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.SpaBar) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + MediaBar = { + open = "Set_Pent_Media_Bar_Open", + closed = "Set_Pent_Media_Bar_Closed", + + Set = function(state, refresh) + DiamondPenthouse.Interior.MediaBar.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, state, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.MediaBar) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + Dealer = { + open = "Set_Pent_Dealer", + closed = "Set_Pent_NoDealer", + + Set = function(state, refresh) + DiamondPenthouse.Interior.Dealer.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, state, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Dealer) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + Arcade = { + none = "", + retro = "Set_Pent_Arcade_Retro", + modern = "Set_Pent_Arcade_Modern", + + Set = function(arcade, refresh) + DiamondPenthouse.Interior.Arcade.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, arcade, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Arcade) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + Clutter = { + bar = "Set_Pent_Bar_Clutter", + clutter01 = "Set_Pent_Clutter_01", + clutter02 = "Set_Pent_Clutter_02", + clutter03 = "Set_Pent_Clutter_03", + + Set = function(clutter, refresh) + DiamondPenthouse.Interior.Clutter.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, clutter, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Clutter) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + BarLight = { + none = "", + light0 = "set_pent_bar_light_0", + light1 = "set_pent_bar_light_01", + light2 = "set_pent_bar_light_02", + + Set = function(light, refresh) + DiamondPenthouse.Interior.BarLight.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, light, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.BarLight) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + BarParty = { + none = "", + party0 = "set_pent_bar_party_0", + party1 = "set_pent_bar_party_1", + party2 = "set_pent_bar_party_2", + partyafter = "set_pent_bar_party_after", + + Set = function(party, refresh) + DiamondPenthouse.Interior.BarParty.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, party, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.BarParty) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + Blockers = { + Guest = { + enabled = "Set_Pent_GUEST_BLOCKER", + disabled = "", + + Set = function(blocker, refresh) + DiamondPenthouse.Interior.Blockers.Guest.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, blocker, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Blockers.Guest) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + Lounge = { + enabled = "Set_Pent_LOUNGE_BLOCKER", + disabled = "", + + Set = function(blocker, refresh) + DiamondPenthouse.Interior.Blockers.Lounge.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, blocker, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Blockers.Lounge) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + Office = { + enabled = "Set_Pent_OFFICE_BLOCKER", + disabled = "", + + Set = function(blocker, refresh) + DiamondPenthouse.Interior.Blockers.Office.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, blocker, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Blockers.Office) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + Cinema = { + enabled = "Set_Pent_CINE_BLOCKER", + disabled = "", + + Set = function(blocker, refresh) + DiamondPenthouse.Interior.Blockers.Cinema.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, blocker, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Blockers.Cinema) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + Spa = { + enabled = "Set_Pent_SPA_BLOCKER", + disabled = "", + + Set = function(blocker, refresh) + DiamondPenthouse.Interior.Blockers.Spa.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, blocker, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Blockers.Spa) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + Bar = { + enabled = "Set_Pent_BAR_BLOCKER", + disabled = "", + + Set = function(blocker, refresh) + DiamondPenthouse.Interior.Blockers.Bar.Clear(false) + + SetIplPropState(DiamondPenthouse.interiorId, blocker, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(DiamondPenthouse.Interior.Blockers.Bar) do + if type(value) == "string" then + SetIplPropState(DiamondPenthouse.interiorId, value, false, refresh) + end + end + end + }, + EnableAllBlockers = function() + DiamondPenthouse.Interior.Blockers.Bar.Set(DiamondPenthouse.Interior.Blockers.Bar.enabled) + DiamondPenthouse.Interior.Blockers.Guest.Set(DiamondPenthouse.Interior.Blockers.Guest.enabled) + DiamondPenthouse.Interior.Blockers.Spa.Set(DiamondPenthouse.Interior.Blockers.Spa.enabled) + DiamondPenthouse.Interior.Blockers.Cinema.Set(DiamondPenthouse.Interior.Blockers.Cinema.enabled) + DiamondPenthouse.Interior.Blockers.Lounge.Set(DiamondPenthouse.Interior.Blockers.Lounge.enabled) + DiamondPenthouse.Interior.Blockers.Office.Set(DiamondPenthouse.Interior.Blockers.Office.enabled) + end, + DisableAllBlockers = function() + DiamondPenthouse.Interior.Blockers.Bar.Set(DiamondPenthouse.Interior.Blockers.Bar.disabled) + DiamondPenthouse.Interior.Blockers.Guest.Set(DiamondPenthouse.Interior.Blockers.Guest.disabled) + DiamondPenthouse.Interior.Blockers.Spa.Set(DiamondPenthouse.Interior.Blockers.Spa.disabled) + DiamondPenthouse.Interior.Blockers.Cinema.Set(DiamondPenthouse.Interior.Blockers.Cinema.disabled) + DiamondPenthouse.Interior.Blockers.Lounge.Set(DiamondPenthouse.Interior.Blockers.Lounge.disabled) + DiamondPenthouse.Interior.Blockers.Office.Set(DiamondPenthouse.Interior.Blockers.Office.disabled) + end + } + }, + + LoadDefault = function() + local styleColor = DiamondPenthouse.Colors.sharp + local stylePattern = DiamondPenthouse.Interior.Pattern.pattern01 + + DiamondPenthouse.Ipl.Interior.Load() + + DiamondPenthouse.Interior.Walls.SetColor(styleColor) + DiamondPenthouse.Interior.Pattern.Set(stylePattern) + DiamondPenthouse.Interior.Pattern.SetColor(stylePattern, styleColor) + + DiamondPenthouse.Interior.SpaBar.Set(DiamondPenthouse.Interior.SpaBar.open) + DiamondPenthouse.Interior.MediaBar.Set(DiamondPenthouse.Interior.MediaBar.open) + DiamondPenthouse.Interior.Dealer.Set(DiamondPenthouse.Interior.Dealer.open) + + RefreshInterior(DiamondPenthouse.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_cayoperico/base.lua b/resources/[core]/bob74_ipl/dlc_cayoperico/base.lua new file mode 100644 index 0000000..8ed230a --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_cayoperico/base.lua @@ -0,0 +1,3 @@ +CreateThread(function() + RequestIpl("h4_ch2_mansion_final") +end) \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_cayoperico/nightclub.lua b/resources/[core]/bob74_ipl/dlc_cayoperico/nightclub.lua new file mode 100644 index 0000000..a2c35d0 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_cayoperico/nightclub.lua @@ -0,0 +1,207 @@ +-- The Music Locker: 1550.0, 250.0, -50.0 +exports('GetCayoPericoNightclub', function() + return CayoPericoNightclub +end) + +CayoPericoNightclub = { + interiorId = 281089, + + Ipl = { + Posters = { + palmstraxx = "h4_clubposter_palmstraxx", + moodymann = "h4_clubposter_moodymann", + keinemusik = "h4_clubposter_keinemusik", + + Enable = function(poster, state) + EnableIpl(poster, state) + end + } + }, + + Security = { + security = "int01_ba_security_upgrade", + + Enable = function(state, refresh) + SetIplPropState(CayoPericoNightclub.interiorId, CayoPericoNightclub.Security.security, state, refresh) + end + }, + + Speakers = { + basic = "int01_ba_equipment_setup", + upgrade = { + "int01_ba_equipment_setup", + "int01_ba_equipment_upgrade" + }, + + Set = function(speakers, refresh) + CayoPericoNightclub.Speakers.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, speakers, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Speakers.basic, + CayoPericoNightclub.Speakers.upgrade + }, false, refresh) + end + }, + + Podium = { + podium = "int01_ba_style02_podium", + + Enable = function(state, refresh) + SetIplPropState(CayoPericoNightclub.interiorId, CayoPericoNightclub.Podium.podium, state, refresh) + end + }, + + Turntables = { + style01 = "int01_ba_dj01", + style02 = "int01_ba_dj02", + style03 = "int01_ba_dj03", + style04 = "int01_ba_dj04", + style05 = "int01_ba_dj_palms_trax", + style06 = "int01_ba_dj_keinemusik", + style07 = "int01_ba_dj_moodyman", + + Set = function(style, refresh) + CayoPericoNightclub.Turntables.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, style, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(CayoPericoNightclub.Turntables) do + if type(value) == "string" then + SetIplPropState(CayoPericoNightclub.interiorId, value, false, refresh) + end + end + end + }, + + Bar = { + bar = "int01_ba_bar_content", + + Enable = function(state, refresh) + SetIplPropState(CayoPericoNightclub.interiorId, CayoPericoNightclub.Bar.bar, state, refresh) + end + }, + + Screen = { + front = "int01_ba_lights_screen", + back = "int01_ba_screen", + + Enable = function(screen, state, refresh) + SetIplPropState(CayoPericoNightclub.interiorId, screen, state, refresh) + end + }, + + Lights = { + Droplets = { + style01 = "dj_01_lights_01", + style02 = "dj_02_lights_01", + style03 = "dj_03_lights_01", + style04 = "dj_04_lights_01", + + Set = function(lights, refresh) + CayoPericoNightclub.Lights.Droplets.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Lights.Droplets.style01, + CayoPericoNightclub.Lights.Droplets.style02, + CayoPericoNightclub.Lights.Droplets.style03, + CayoPericoNightclub.Lights.Droplets.style04 + }, false, refresh) + end + }, + + Neons = { + style01 = "dj_01_lights_02", + style02 = "dj_02_lights_02", + style03 = "dj_03_lights_02", + style04 = "dj_04_lights_02", + + Set = function(lights, refresh) + CayoPericoNightclub.Lights.Neons.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Lights.Neons.style01, + CayoPericoNightclub.Lights.Neons.style02, + CayoPericoNightclub.Lights.Neons.style03, + CayoPericoNightclub.Lights.Neons.style04 + }, false, refresh) + end + }, + + Bands = { + style01 = "dj_01_lights_03", + style02 = "dj_02_lights_03", + style03 = "dj_03_lights_03", + style04 = "dj_04_lights_03", + + Set = function(lights, refresh) + CayoPericoNightclub.Lights.Bands.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Lights.Bands.style01, + CayoPericoNightclub.Lights.Bands.style02, + CayoPericoNightclub.Lights.Bands.style03, + CayoPericoNightclub.Lights.Bands.style04 + }, false, refresh) + end + }, + + Lasers = { + style01 = "dj_01_lights_04", + style02 = "dj_02_lights_04", + style03 = "dj_03_lights_04", + style04 = "dj_04_lights_04", + + Set = function(lights, refresh) + CayoPericoNightclub.Lights.Lasers.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Lights.Lasers.style01, + CayoPericoNightclub.Lights.Lasers.style02, + CayoPericoNightclub.Lights.Lasers.style03, + CayoPericoNightclub.Lights.Lasers.style04 + }, false, refresh) + end + }, + + Clear = function(refresh) + CayoPericoNightclub.Lights.Droplets.Clear(refresh) + CayoPericoNightclub.Lights.Neons.Clear(refresh) + CayoPericoNightclub.Lights.Bands.Clear(refresh) + CayoPericoNightclub.Lights.Lasers.Clear(refresh) + end + }, + + LoadDefault = function() + -- Interior + CayoPericoNightclub.Security.Enable(true, false) + CayoPericoNightclub.Speakers.Set(CayoPericoNightclub.Speakers.basic, false) + CayoPericoNightclub.Podium.Enable(true, false) + CayoPericoNightclub.Turntables.Set(CayoPericoNightclub.Turntables.style01, false) + CayoPericoNightclub.Bar.Enable(true, false) + CayoPericoNightclub.Screen.Enable(CayoPericoNightclub.Screen.front, true, false) + CayoPericoNightclub.Lights.Lasers.Set(CayoPericoNightclub.Lights.Lasers.style04, false) + + -- Exterior + CayoPericoNightclub.Ipl.Posters.Enable(CayoPericoNightclub.Ipl.Posters.palmstraxx, true) + CayoPericoNightclub.Ipl.Posters.Enable(CayoPericoNightclub.Ipl.Posters.moodymann, true) + CayoPericoNightclub.Ipl.Posters.Enable(CayoPericoNightclub.Ipl.Posters.keinemusik, true) + + RefreshInterior(CayoPericoNightclub.interiorId) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_cayoperico/submarine.lua b/resources/[core]/bob74_ipl/dlc_cayoperico/submarine.lua new file mode 100644 index 0000000..1cac6c0 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_cayoperico/submarine.lua @@ -0,0 +1,71 @@ +-- Submarine: 1560.0, 400.0, -50.0 +exports('GetCayoPericoSubmarine', function() + return CayoPericoSubmarine +end) + +CayoPericoSubmarine = { + interiorId = 281345, + + Workshop = { + brig = "entity_set_brig", + workshop = "entity_set_weapons", + + Set = function(room, refresh) + CayoPericoSubmarine.Workshop.Clear(false) + + SetIplPropState(CayoPericoSubmarine.interiorId, room, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoSubmarine.interiorId, { + CayoPericoSubmarine.Workshop.brig, + CayoPericoSubmarine.Workshop.workshop + }, false, refresh) + end + }, + + Chairs = { + chairs = "entity_set_guide", + + Enable = function(state, refresh) + SetIplPropState(CayoPericoSubmarine.interiorId, CayoPericoSubmarine.Chairs.chairs, state, refresh) + end + }, + + Lights = { + on = "entity_set_hatch_lights_on", + off = "entity_set_hatch_lights_off", + + Set = function(lights, refresh) + CayoPericoSubmarine.Lights.Clear(false) + + SetIplPropState(CayoPericoSubmarine.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoSubmarine.interiorId, { + CayoPericoSubmarine.Lights.on, + CayoPericoSubmarine.Lights.off + }, false, refresh) + end + }, + + Details = { + bomb = "entity_set_demolition", + torch = "entity_set_acetylene", + cutter = "entity_set_plasma", + fingerprint = "entity_set_fingerprint", + suppressors = "entity_set_suppressors", + jammer = "entity_set_jammer", + + Enable = function(details, state, refresh) + SetIplPropState(CayoPericoSubmarine.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + CayoPericoSubmarine.Workshop.Set(CayoPericoSubmarine.Workshop.brig, false) + CayoPericoSubmarine.Chairs.Enable(true, false) + CayoPericoSubmarine.Lights.Set(CayoPericoSubmarine.Lights.off, false) + + RefreshInterior(CayoPericoSubmarine.interiorId) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_chopshop/base.lua b/resources/[core]/bob74_ipl/dlc_chopshop/base.lua new file mode 100644 index 0000000..005d1c3 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_chopshop/base.lua @@ -0,0 +1,7 @@ +CreateThread(function() + RequestIpl("m23_2_acp_collision_fixes_01") + RequestIpl("m23_2_acp_collision_fixes_02") + RequestIpl("m23_2_tug_collision") + RequestIpl("m23_2_hei_yacht_collision_fixes") + RequestIpl("m23_2_vinewood_garage") +end) diff --git a/resources/[core]/bob74_ipl/dlc_chopshop/cargoship.lua b/resources/[core]/bob74_ipl/dlc_chopshop/cargoship.lua new file mode 100644 index 0000000..b3050ee --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_chopshop/cargoship.lua @@ -0,0 +1,24 @@ +-- Cargo ship: -344.4349, -4062.832, 17.000 +exports('GetChopShopCargoShipObject', function() + return ChopShopCargoShip +end) + +ChopShopCargoShip = { + Ipl = { + ipl = { + "m23_2_cargoship", + "m23_2_cargoship_bridge" + }, + + Load = function() + EnableIpl(ChopShopCargoShip.Ipl.ipl, true) + end, + Remove = function() + EnableIpl(ChopShopCargoShip.Ipl.ipl, false) + end + }, + + LoadDefault = function() + ChopShopCargoShip.Ipl.Load() + end +} diff --git a/resources/[core]/bob74_ipl/dlc_chopshop/cartel_garage.lua b/resources/[core]/bob74_ipl/dlc_chopshop/cartel_garage.lua new file mode 100644 index 0000000..7ec8fc6 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_chopshop/cartel_garage.lua @@ -0,0 +1,22 @@ +-- Cartel Garage: 1220.133, -2277.844, -50.000 +exports('GetChopShopCartelGarageObject', function() + return ChopShopCartelGarage +end) + +ChopShopCartelGarage = { + interiorId = 293633, + + Entities = { + entities = "mp2023_02_dlc_int_6_cb", + + Enable = function(state, refresh) + SetIplPropState(ChopShopCartelGarage.interiorId, ChopShopCartelGarage.Entities.entities, state, refresh) + end + }, + + LoadDefault = function() + ChopShopCartelGarage.Entities.Enable(true, false) + + RefreshInterior(ChopShopCartelGarage.interiorId) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_chopshop/lifeguard.lua b/resources/[core]/bob74_ipl/dlc_chopshop/lifeguard.lua new file mode 100644 index 0000000..557eab1 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_chopshop/lifeguard.lua @@ -0,0 +1,21 @@ +-- Lifeguard: -1488.153, -1021.166, 5.000 +exports('GetChopShopLifeguardObject', function() + return ChopShopLifeguard +end) + +ChopShopLifeguard = { + Ipl = { + ipl = "m23_2_lifeguard_access", + + Load = function() + EnableIpl(ChopShopLifeguard.Ipl.ipl, true) + end, + Remove = function() + EnableIpl(ChopShopLifeguard.Ipl.ipl, false) + end + }, + + LoadDefault = function() + ChopShopLifeguard.Ipl.Load() + end +} diff --git a/resources/[core]/bob74_ipl/dlc_chopshop/salvage.lua b/resources/[core]/bob74_ipl/dlc_chopshop/salvage.lua new file mode 100644 index 0000000..ce6c157 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_chopshop/salvage.lua @@ -0,0 +1,115 @@ +-- Salvage Yard: 1077.276, -2274.876, -50.000 +exports('GetChopShopSalvageObject', function() + return ChopShopSalvage +end) + +ChopShopSalvage = { + interiorId = 293377, + + Ipl = { + Exterior = { + ipl = { + "m23_2_sp1_03_reds", + "m23_2_sc1_03_reds", + "m23_2_id2_04_reds", + "m23_2_cs1_05_reds", + "m23_2_cs4_11_reds", + }, + + Load = function() + EnableIpl(ChopShopSalvage.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(ChopShopSalvage.Ipl.Exterior.ipl, false) + end + } + }, + + Style = { + basic = { + "set_mechanic_basic", + "set_safe_basic" + }, + upgrade = { + "set_mechanic_upgrade", + "set_safe_upgrade" + }, + + Set = function(style, refresh) + ChopShopSalvage.Style.Clear(false) + + SetIplPropState(ChopShopSalvage.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(ChopShopSalvage.interiorId, { + ChopShopSalvage.Style.basic, + ChopShopSalvage.Style.upgrade + }, false, refresh) + end + }, + + Lift1 = { + down = "set_car_lift_01_down", + up = "set_car_lift_01_up", + + Set = function(lift, refresh) + ChopShopSalvage.Lift1.Clear(false) + + SetIplPropState(ChopShopSalvage.interiorId, lift, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(ChopShopSalvage.interiorId, { + ChopShopSalvage.Lift1.down, + ChopShopSalvage.Lift1.up + }, false, refresh) + end + }, + + Lift2 = { + down = "set_car_lift_02_down", + up = "set_car_lift_02_up", + + Set = function(lift, refresh) + ChopShopSalvage.Lift2.Clear(false) + + SetIplPropState(ChopShopSalvage.interiorId, lift, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(ChopShopSalvage.interiorId, { + ChopShopSalvage.Lift2.down, + ChopShopSalvage.Lift2.up + }, false, refresh) + end + }, + + Tint = { + gray = 1, + red = 2, + blue = 3, + orange = 4, + yellow = 5, + green = 6, + pink = 7, + teal = 8, + darkGray = 9, + + SetColor = function(color, refresh) + SetIplPropState(ChopShopSalvage.interiorId, "set_tint_b", true, refresh) + SetInteriorEntitySetColor(ChopShopSalvage.interiorId, "set_tint_b", color) + end + }, + + LoadDefault = function() + -- Exterior + ChopShopSalvage.Ipl.Exterior.Load() + + -- Interior + ChopShopSalvage.Tint.SetColor(ChopShopSalvage.Tint.gray, false) + ChopShopSalvage.Style.Set(ChopShopSalvage.Style.upgrade, false) + + ChopShopSalvage.Lift1.Set(ChopShopSalvage.Lift1.up, false) + ChopShopSalvage.Lift2.Set(ChopShopSalvage.Lift2.up, false) + + RefreshInterior(ChopShopSalvage.interiorId) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_doomsday/facility.lua b/resources/[core]/bob74_ipl/dlc_doomsday/facility.lua new file mode 100644 index 0000000..069c6f8 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_doomsday/facility.lua @@ -0,0 +1,421 @@ +-- DoomsdayFacility: 345.00000000 4842.00000000 -60.00000000 +exports('GetDoomsdayFacilityObject', function() + return DoomsdayFacility +end) + +DoomsdayFacility = { + interiorId = 269313, + + Ipl = { + Interior = { + ipl = "xm_x17dlc_int_placement_interior_33_x17dlc_int_02_milo_", + + Load = function(color) + EnableIpl(DoomsdayFacility.Ipl.Interior.ipl, true) + SetIplPropState(DoomsdayFacility.interiorId, "set_int_02_shell", true, true) + end, + Remove = function() + EnableIpl(DoomsdayFacility.Ipl.Interior.ipl, false) + end + }, + Exterior = { + ipl = { + "xm_hatch_01_cutscene", -- 1286.924 2846.06 49.39426 + "xm_hatch_02_cutscene", -- 18.633 2610.834 86.0 + "xm_hatch_03_cutscene", -- 2768.574 3919.924 45.82 + "xm_hatch_04_cutscene", -- 3406.90 5504.77 26.28 + "xm_hatch_06_cutscene", -- 1.90 6832.18 15.82 + "xm_hatch_07_cutscene", -- -2231.53 2418.42 12.18 + "xm_hatch_08_cutscene", -- -6.92 3327.0 41.63 + "xm_hatch_09_cutscene", -- 2073.62 1748.77 104.51 + "xm_hatch_10_cutscene", -- 1874.35 284.34 164.31 + "xm_hatch_closed", -- Closed hatches (all) + "xm_siloentranceclosed_x17", -- Closed silo: 598.4869 5556.846 716.7615 + "xm_bunkerentrance_door", -- Bunker entrance closed door: 2050.85 2950.0 47.75 + "xm_hatches_terrain", -- Terrain adjustments for facilities (all) + silo + "xm_hatches_terrain_lod" + }, + + Load = function() + EnableIpl(DoomsdayFacility.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(DoomsdayFacility.Ipl.Exterior.ipl, false) + end + } + }, + Colors = { + utility = 1, + expertise = 2, + altitude = 3, + power = 4, + authority = 5, + influence = 6, + order = 7, + empire = 8, + supremacy = 9 + }, + Walls = { + SetColor = function(color, refresh) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, "set_int_02_shell", color) + + if refresh then + RefreshInterior(DoomsdayFacility.interiorId) + end + end + }, + Decals = { + none = "", + style01 = "set_int_02_decal_01", + style02 = "set_int_02_decal_02", + style03 = "set_int_02_decal_03", + style04 = "set_int_02_decal_04", + style05 = "set_int_02_decal_05", + style06 = "set_int_02_decal_06", + style07 = "set_int_02_decal_07", + style08 = "set_int_02_decal_08", + style09 = "set_int_02_decal_09", + + Set = function(decal, refresh) + DoomsdayFacility.Decals.Clear(refresh) + + if decal ~= "" then + SetIplPropState(DoomsdayFacility.interiorId, decal, true, refresh) + else + if refresh then + RefreshInterior(DoomsdayFacility.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(DoomsdayFacility.interiorId, { + DoomsdayFacility.Decals.style01, DoomsdayFacility.Decals.style02, DoomsdayFacility.Decals.style03, + DoomsdayFacility.Decals.style04, DoomsdayFacility.Decals.style05, DoomsdayFacility.Decals.style06, + DoomsdayFacility.Decals.style07, DoomsdayFacility.Decals.style08, DoomsdayFacility.Decals.style09 + }, false, refresh) + end + }, + Lounge = { + utility = "set_int_02_lounge1", + prestige = "set_int_02_lounge2", + premier = "set_int_02_lounge3", + + Set = function(lounge, color, refresh) + DoomsdayFacility.Lounge.Clear(false) + + SetIplPropState(DoomsdayFacility.interiorId, lounge, true, refresh) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, lounge, color) + end, + Clear = function(refresh) + SetIplPropState(DoomsdayFacility.interiorId, { + DoomsdayFacility.Lounge.utility, + DoomsdayFacility.Lounge.prestige, + DoomsdayFacility.Lounge.premier + }, false, refresh) + end + }, + Sleeping = { + none = "set_int_02_no_sleep", + utility = "set_int_02_sleep", + prestige = "set_int_02_sleep2", + premier = "set_int_02_sleep3", + + Set = function(sleep, color, refresh) + DoomsdayFacility.Sleeping.Clear(false) + + SetIplPropState(DoomsdayFacility.interiorId, sleep, true, refresh) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, sleep, color) + end, + Clear = function(refresh) + SetIplPropState(DoomsdayFacility.interiorId, { + DoomsdayFacility.Sleeping.none, + DoomsdayFacility.Sleeping.utility, + DoomsdayFacility.Sleeping.prestige, + DoomsdayFacility.Sleeping.premier + }, false, refresh) + end + }, + Security = { + off = "set_int_02_no_security", + on = "set_int_02_security", + + Set = function(security, color, refresh) + DoomsdayFacility.Security.Clear(false) + + SetIplPropState(DoomsdayFacility.interiorId, security, true, refresh) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, security, color) + end, + Clear = function(refresh) + SetIplPropState(DoomsdayFacility.interiorId, { + DoomsdayFacility.Security.off, + DoomsdayFacility.Security.on + }, false, refresh) + end + }, + Cannon = { + off = "set_int_02_no_cannon", + on = "set_int_02_cannon", + + Set = function(cannon, color, refresh) + DoomsdayFacility.Cannon.Clear(false) + + SetIplPropState(DoomsdayFacility.interiorId, cannon, true, refresh) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, cannon, color) + end, + Clear = function(refresh) + SetIplPropState(DoomsdayFacility.interiorId, { + DoomsdayFacility.Cannon.off, + DoomsdayFacility.Cannon.on + }, false, refresh) + end + }, + PrivacyGlass = { + controlModelHash = `xm_prop_x17_tem_control_01`, + + Bedroom = { + Enable = function(state) + local handle = GetClosestObjectOfType(367.99, 4827.745, -59.0, 1.0, `xm_prop_x17_l_glass_03`, false, false, false) + + if state then + if handle == 0 then + local model = `xm_prop_x17_l_glass_03` + + RequestModel(model) + while not HasModelLoaded(model) do + Wait(0) + end + + local privacyGlass = CreateObject(model, 367.99, 4827.745, -59.0, false, false, false) + + SetEntityAsMissionEntity(privacyGlass, true, 0) + SetEntityCompletelyDisableCollision(privacyGlass, false, 0) + SetEntityInvincible(privacyGlass, true) + SetEntityAlpha(privacyGlass, 254, false) + end + else + if handle ~= 0 then + SetEntityAsMissionEntity(handle, false, false) + DeleteEntity(handle) + end + end + end, + + Control = { + position = vector3(372.115, 4827.504, -58.47), + rotation = vector3(0.0, 0.0, 0.0), + + Enable = function(state) + local handle = GetClosestObjectOfType(DoomsdayFacility.PrivacyGlass.Bedroom.Control.position.x, DoomsdayFacility.PrivacyGlass.Bedroom.Control.position.y, DoomsdayFacility.PrivacyGlass.Bedroom.Control.position.z, 1.0, DoomsdayFacility.PrivacyGlass.controlModelHash, false, false, false) + + if state then + if handle == 0 then + RequestModel(DoomsdayFacility.PrivacyGlass.controlModelHash) + while not HasModelLoaded(DoomsdayFacility.PrivacyGlass.controlModelHash) do + Wait(0) + end + + local privacyGlass = CreateObjectNoOffset(DoomsdayFacility.PrivacyGlass.controlModelHash, DoomsdayFacility.PrivacyGlass.Bedroom.Control.position.x, DoomsdayFacility.PrivacyGlass.Bedroom.Control.position.y, DoomsdayFacility.PrivacyGlass.Bedroom.Control.position.z, false, false, false) + + SetEntityRotation(privacyGlass, DoomsdayFacility.PrivacyGlass.Bedroom.Control.rotation.x, DoomsdayFacility.PrivacyGlass.Bedroom.Control.rotation.y, DoomsdayFacility.PrivacyGlass.Bedroom.Control.rotation.z, 2, true) + FreezeEntityPosition(privacyGlass, true) + SetEntityAsMissionEntity(privacyGlass, false, false) + end + else + if handle ~= 0 then + SetEntityAsMissionEntity(handle, false, false) + DeleteEntity(handle) + end + end + end, + } + }, + Lounge = { + Glasses = { + { + modelHash = `xm_prop_x17_l_door_glass_01`, + entityHash = `xm_prop_x17_l_door_frame_01`, + entityPos = vector3(359.22, 4846.043, -58.85) + }, + { + modelHash = `xm_prop_x17_l_door_glass_01`, + entityHash = `xm_prop_x17_l_door_frame_01`, + entityPos = vector3(369.066, 4846.273, -58.85) + }, + { + modelHash = `xm_prop_x17_l_glass_01`, + entityHash = `xm_prop_x17_l_frame_01`, + entityPos = vector3(358.843, 4845.103, -60.0) + }, + { + modelHash = `xm_prop_x17_l_glass_02`, + entityHash = `xm_prop_x17_l_frame_02`, + entityPos = vector3(366.309, 4847.281, -60.0) + }, + { + modelHash = `xm_prop_x17_l_glass_03`, + entityHash = `xm_prop_x17_l_frame_03`, + entityPos = vector3(371.194, 4841.27, -60.0) + } + }, + + Enable = function(state) + for key, glass in pairs(DoomsdayFacility.PrivacyGlass.Lounge.Glasses) do + local handle = GetClosestObjectOfType(glass.entityPos.x, glass.entityPos.y, glass.entityPos.z, 1.0, glass.modelHash, false, false, false) + + if state then + if handle == 0 then + local entityToAttach = GetClosestObjectOfType(glass.entityPos.x, glass.entityPos.y, glass.entityPos.z, 1.0, glass.entityHash, false, false, false) + + if entityToAttach ~= 0 then + RequestModel(glass.modelHash) + while not HasModelLoaded(glass.modelHash) do + Wait(0) + end + + local privacyGlass = CreateObject(glass.modelHash, glass.entityPos.x, glass.entityPos.y, glass.entityPos.z, false, false, false) + + SetEntityAsMissionEntity(privacyGlass, true, false) + SetEntityCompletelyDisableCollision(privacyGlass, false, 0) + SetEntityInvincible(privacyGlass, true) + SetEntityAlpha(privacyGlass, 254, false) + AttachEntityToEntity(privacyGlass, entityToAttach, -1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 2, 1) + end + end + else + if handle ~= 0 then + SetEntityAsMissionEntity(handle, false, false) + DeleteEntity(handle) + end + end + end + end, + + Control = { + position = vector3(367.317, 4846.729, -58.448), + rotation = vector3(0.0, 0.0, -16.0), + + Enable = function(state) + local handle = GetClosestObjectOfType(DoomsdayFacility.PrivacyGlass.Lounge.Control.position.x, DoomsdayFacility.PrivacyGlass.Lounge.Control.position.y, DoomsdayFacility.PrivacyGlass.Lounge.Control.position.z, 1.0, DoomsdayFacility.PrivacyGlass.controlModelHash, false, false, false) + + if state then + if handle == 0 then + RequestModel(DoomsdayFacility.PrivacyGlass.controlModelHash) + while not HasModelLoaded(DoomsdayFacility.PrivacyGlass.controlModelHash) do + Wait(0) + end + + local privacyGlass = CreateObjectNoOffset(DoomsdayFacility.PrivacyGlass.controlModelHash, DoomsdayFacility.PrivacyGlass.Lounge.Control.position.x, DoomsdayFacility.PrivacyGlass.Lounge.Control.position.y, DoomsdayFacility.PrivacyGlass.Lounge.Control.position.z, false, false, false) + + SetEntityRotation(privacyGlass, DoomsdayFacility.PrivacyGlass.Lounge.Control.rotation.x, DoomsdayFacility.PrivacyGlass.Lounge.Control.rotation.y, DoomsdayFacility.PrivacyGlass.Lounge.Control.rotation.z, 2, true) + FreezeEntityPosition(privacyGlass, true) + SetEntityAsMissionEntity(privacyGlass, false, false) + end + else + if handle ~= 0 then + SetEntityAsMissionEntity(handle, false, false) + DeleteEntity(handle) + end + end + end + } + } + }, + Details = { + KhanjaliParts = { + A = "Set_Int_02_Parts_Panther1", + B = "Set_Int_02_Parts_Panther2", + C = "Set_Int_02_Parts_Panther3" + }, + RiotParts = { + A = "Set_Int_02_Parts_Riot1", + B = "Set_Int_02_Parts_Riot2", + C = "Set_Int_02_Parts_Riot3" + }, + ChenoParts = { + A = "Set_Int_02_Parts_Cheno1", + B = "Set_Int_02_Parts_Cheno2", + C = "Set_Int_02_Parts_Cheno3" + }, + ThrusterParts = { + A = "Set_Int_02_Parts_Thruster1", + B = "Set_Int_02_Parts_Thruster2", + C = "Set_Int_02_Parts_Thruster3" + }, + AvengerParts = { + A = "Set_Int_02_Parts_Avenger1", + B = "Set_Int_02_Parts_Avenger2", + C = "Set_Int_02_Parts_Avenger3" + }, + Outfits = { + paramedic = "Set_Int_02_outfit_paramedic", + morgue = "Set_Int_02_outfit_morgue", + serverFarm = "Set_Int_02_outfit_serverfarm", + iaa = "Set_Int_02_outfit_iaa", + stealAvenger = "Set_Int_02_outfit_steal_avenger", + foundry = "Set_Int_02_outfit_foundry", + riot = "Set_Int_02_outfit_riot_van", + stromberg = "Set_Int_02_outfit_stromberg", + submarine = "Set_Int_02_outfit_sub_finale", + predator = "Set_Int_02_outfit_predator", + khanjali = "Set_Int_02_outfit_khanjali", + volatol = "Set_Int_02_outfit_volatol" + }, + Trophies = { + eagle = "set_int_02_trophy1", + iaa = "set_int_02_trophy_iaa", + submarine = "set_int_02_trophy_sub", + + SetColor = function(color, refresh) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, "set_int_02_trophy_sub", color) + + if refresh then + RefreshInterior(DoomsdayFacility.interiorId) + end + end + }, + Clutter = { + A = "set_int_02_clutter1", + B = "set_int_02_clutter2", + C = "set_int_02_clutter3", + D = "set_int_02_clutter4", + E = "set_int_02_clutter5" + }, + crewEmblem = "set_int_02_crewemblem", + + Enable = function(details, state, refresh) + SetIplPropState(DoomsdayFacility.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + DoomsdayFacility.Ipl.Exterior.Load() + DoomsdayFacility.Ipl.Interior.Load() + + DoomsdayFacility.Walls.SetColor(DoomsdayFacility.Colors.utility) + DoomsdayFacility.Decals.Set(DoomsdayFacility.Decals.style01) + DoomsdayFacility.Lounge.Set(DoomsdayFacility.Lounge.premier, DoomsdayFacility.Colors.utility) + DoomsdayFacility.Sleeping.Set(DoomsdayFacility.Sleeping.premier, DoomsdayFacility.Colors.utility) + DoomsdayFacility.Security.Set(DoomsdayFacility.Security.on, DoomsdayFacility.Colors.utility) + DoomsdayFacility.Cannon.Set(DoomsdayFacility.Cannon.on, DoomsdayFacility.Colors.utility) + + -- Privacy glass remote + DoomsdayFacility.PrivacyGlass.Bedroom.Control.Enable(true) + DoomsdayFacility.PrivacyGlass.Lounge.Control.Enable(true) + + DoomsdayFacility.Details.Enable(DoomsdayFacility.Details.crewEmblem, false) + + DoomsdayFacility.Details.Enable(DoomsdayFacility.Details.AvengerParts, true) + + DoomsdayFacility.Details.Enable(DoomsdayFacility.Details.Outfits, true) + + DoomsdayFacility.Details.Enable(DoomsdayFacility.Details.Trophies, true) + DoomsdayFacility.Details.Trophies.SetColor(DoomsdayFacility.Colors.utility) + + DoomsdayFacility.Details.Enable({ + DoomsdayFacility.Details.Clutter.A, + DoomsdayFacility.Details.Clutter.B + }, true) + + RefreshInterior(DoomsdayFacility.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_drugwars/base.lua b/resources/[core]/bob74_ipl/dlc_drugwars/base.lua new file mode 100644 index 0000000..ed67d0d --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_drugwars/base.lua @@ -0,0 +1,5 @@ +CreateThread(function() + RequestIpl("xm3_collision_fixes") + RequestIpl("xm3_sum2_fix") + RequestIpl("xm3_security_fix") +end) diff --git a/resources/[core]/bob74_ipl/dlc_drugwars/freakshop.lua b/resources/[core]/bob74_ipl/dlc_drugwars/freakshop.lua new file mode 100644 index 0000000..7d95059 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_drugwars/freakshop.lua @@ -0,0 +1,51 @@ +-- Freakshop: 570.9713, -420.0727, -70.000 +exports('GetDrugWarsFreakshopObject', function() + return DrugWarsFreakshop +end) + +DrugWarsFreakshop = { + interiorId = 290817, + + Ipl = { + Exterior = { + ipl = { + "xm3_warehouse", + "xm3_warehouse_grnd" + }, + + Load = function() + EnableIpl(DrugWarsFreakshop.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(DrugWarsFreakshop.Ipl.Exterior.ipl, false) + end + } + }, + + Door = { + opened = "entity_set_roller_door_open", + closed = "entity_set_roller_door_closed", + + Set = function(door, refresh) + DrugWarsFreakshop.Door.Clear() + + SetIplPropState(DrugWarsFreakshop.interiorId, door, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(DrugWarsFreakshop.interiorId, { + DrugWarsFreakshop.Door.opened, + DrugWarsFreakshop.Door.closed + }, false, refresh) + end + }, + + LoadDefault = function() + -- Exterior + DrugWarsFreakshop.Ipl.Exterior.Load() + + -- Interior + DrugWarsFreakshop.Door.Set(DrugWarsFreakshop.Door.closed, false) + + RefreshInterior(DrugWarsFreakshop.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_drugwars/garage.lua b/resources/[core]/bob74_ipl/dlc_drugwars/garage.lua new file mode 100644 index 0000000..6a28394 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_drugwars/garage.lua @@ -0,0 +1,114 @@ +-- Eclipse Boulevard Garage: 519.2477, -2618.788, -50.000 +exports('GetDrugWarsGarageObject', function() + return DrugWarsGarage +end) + +DrugWarsGarage = { + interiorId = 290561, + + Ipl = { + Exterior = { + ipl = "xm3_garage_fix", + + Load = function() + EnableIpl(DrugWarsGarage.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(DrugWarsGarage.Ipl.Exterior.ipl, false) + end + } + }, + + Banner = { + model = `ss1_13_clth_ss1_13`, + position = vector3(-277.1116, 281.5493, 98.6691), + + Hide = function() + CreateModelHide(DrugWarsGarage.Banner.position, 10.0, DrugWarsGarage.Banner.model, true) + end, + Restore = function() + RemoveModelHide(DrugWarsGarage.Banner.position, 10.0, DrugWarsGarage.Banner.model, false) + end + }, + + Numbering = { + none = "", + level1 = "entity_set_numbers_01", + level2 = "entity_set_numbers_02", + level3 = "entity_set_numbers_03", + level4 = "entity_set_numbers_04", + level5 = "entity_set_numbers_05", + + Set = function(num, refresh) + DrugWarsGarage.Numbering.Clear(false) + + if num ~= "" then + SetIplPropState(DrugWarsGarage.interiorId, num, true, refresh) + else + if refresh then + RefreshInterior(DrugWarsGarage.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(DrugWarsGarage.interiorId, { + DrugWarsGarage.Numbering.level1, + DrugWarsGarage.Numbering.level2, + DrugWarsGarage.Numbering.level3, + DrugWarsGarage.Numbering.level4, + DrugWarsGarage.Numbering.level5 + }, false, refresh) + end + }, + + Style = { + immaculate = "entity_set_shell_01", + industrial = "entity_set_shell_02", + indulgent = "entity_set_shell_03", + + Set = function(style, refresh) + DrugWarsGarage.Style.Clear(false) + + SetIplPropState(DrugWarsGarage.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(DrugWarsGarage.interiorId, { + DrugWarsGarage.Style.immaculate, + DrugWarsGarage.Style.industrial, + DrugWarsGarage.Style.indulgent + }, false, refresh) + end + }, + + Tint = { + white = 1, + gray = 2, + black = 3, + purple = 4, + orange = 5, + yellow = 6, + blue = 7, + red = 8, + green = 9, + lightBlue = 10, + lightGreen = 11, + + SetColor = function(color, refresh) + SetIplPropState(DrugWarsGarage.interiorId, "entity_set_tint_01", true, refresh) + SetInteriorEntitySetColor(DrugWarsGarage.interiorId, "entity_set_tint_01", color) + end + }, + + LoadDefault = function() + -- Exterior + DrugWarsGarage.Ipl.Exterior.Load() + DrugWarsGarage.Banner.Hide() + + -- Interior + DrugWarsGarage.Numbering.Set(DrugWarsGarage.Numbering.level1, false) + DrugWarsGarage.Style.Set(DrugWarsGarage.Style.immaculate, false) + DrugWarsGarage.Tint.SetColor(DrugWarsGarage.Tint.white, false) + + RefreshInterior(DrugWarsGarage.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_drugwars/lab.lua b/resources/[core]/bob74_ipl/dlc_drugwars/lab.lua new file mode 100644 index 0000000..953cdd2 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_drugwars/lab.lua @@ -0,0 +1,38 @@ +-- Acid Lab: 483.4252, -2625.071, -50.000 +exports('GetDrugWarsLabObject', function() + return DrugWarsLab +end) + +DrugWarsLab = { + interiorId = 290305, + + Details = { + products = { + "set_product_01", + "set_product_02", + "set_product_03", + "set_product_04", + "set_product_05" + }, + supplies = { + "set_supplies_01", + "set_supplies_02", + "set_supplies_03", + "set_supplies_04", + "set_supplies_05", + }, + equipment = "set_equipment_upgrade", + + Enable = function(details, state, refresh) + SetIplPropState(DrugWarsLab.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + DrugWarsLab.Details.Enable(DrugWarsLab.Details.products, true, false) + DrugWarsLab.Details.Enable(DrugWarsLab.Details.supplies, true, false) + DrugWarsLab.Details.Enable(DrugWarsLab.Details.equipment, true, false) + + RefreshInterior(DrugWarsLab.interiorId) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_drugwars/traincrash.lua b/resources/[core]/bob74_ipl/dlc_drugwars/traincrash.lua new file mode 100644 index 0000000..e7b6f8f --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_drugwars/traincrash.lua @@ -0,0 +1,12 @@ +-- Train crash: 2630.595, 1458.144, 25.3669 +exports('GetDrugWarsTrainCrashObject', function() + return DrugWarsTrainCrash +end) + +DrugWarsTrainCrash = { + ipl = "xm3_train_crash", + + Enable = function(state) + EnableIpl(DrugWarsTrainCrash.ipl, state) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_executive/apartment1.lua b/resources/[core]/bob74_ipl/dlc_executive/apartment1.lua new file mode 100644 index 0000000..8aa25f6 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_executive/apartment1.lua @@ -0,0 +1,136 @@ +-- Apartment 1: -787.78050000 334.92320000 215.83840000 +exports('GetExecApartment1Object', function() + return ExecApartment1 +end) + +ExecApartment1 = { + currentInteriorId = -1, + + Style = { + Theme = { + modern = { + interiorId = 227329, + ipl = "apa_v_mp_h_01_a" + }, + moody = { + interiorId = 228097, + ipl = "apa_v_mp_h_02_a" + }, + vibrant = { + interiorId = 228865, + ipl = "apa_v_mp_h_03_a" + }, + sharp = { + interiorId = 229633, + ipl = "apa_v_mp_h_04_a" + }, + monochrome = { + interiorId = 230401, + ipl = "apa_v_mp_h_05_a" + }, + seductive = { + interiorId = 231169, + ipl = "apa_v_mp_h_06_a" + }, + regal = { + interiorId = 231937, + ipl = "apa_v_mp_h_07_a" + }, + aqua = { + interiorId = 232705, + ipl = "apa_v_mp_h_08_a" + } + }, + + Set = function(style, refresh) + if type(style) == "table" then + ExecApartment1.Style.Clear() + ExecApartment1.currentInteriorId = style.interiorId + + EnableIpl(style.ipl, true) + + if refresh then + RefreshInterior(style.interiorId) + end + end + end, + Clear = function() + for key, value in pairs(ExecApartment1.Style.Theme) do + SetIplPropState(value.interiorId, { + "Apart_Hi_Strip_A", + "Apart_Hi_Strip_B", + "Apart_Hi_Strip_C" + }, false) + SetIplPropState(value.interiorId, { + "Apart_Hi_Booze_A", + "Apart_Hi_Booze_B", + "Apart_Hi_Booze_C" + }, false) + SetIplPropState(value.interiorId, { + "Apart_Hi_Smokes_A", + "Apart_Hi_Smokes_B", + "Apart_Hi_Smokes_C" + }, false, true) + EnableIpl(value.ipl, false) + end + end + }, + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(ExecApartment1.currentInteriorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(ExecApartment1.currentInteriorId, details, state, refresh) + end + }, + Smoke = { + none = "", + stage1 = "Apart_Hi_Smokes_A", + stage2 = "Apart_Hi_Smokes_B", + stage3 = "Apart_Hi_Smokes_C", + + Set = function(smoke, refresh) + ExecApartment1.Smoke.Clear(false) + + if smoke ~= nil then + SetIplPropState(ExecApartment1.currentInteriorId, smoke, true, refresh) + else + if refresh then + RefreshInterior(ExecApartment1.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(ExecApartment1.currentInteriorId, { + ExecApartment1.Smoke.stage1, + ExecApartment1.Smoke.stage2, + ExecApartment1.Smoke.stage3 + }, false, refresh) + end + }, + + LoadDefault = function() + ExecApartment1.Style.Set(ExecApartment1.Style.Theme.modern, true) + ExecApartment1.Strip.Enable({ + ExecApartment1.Strip.A, + ExecApartment1.Strip.B, + ExecApartment1.Strip.C + }, false) + ExecApartment1.Booze.Enable({ + ExecApartment1.Booze.A, + ExecApartment1.Booze.B, + ExecApartment1.Booze.C + }, false) + ExecApartment1.Smoke.Set(ExecApartment1.Smoke.none) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_executive/apartment2.lua b/resources/[core]/bob74_ipl/dlc_executive/apartment2.lua new file mode 100644 index 0000000..0b29871 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_executive/apartment2.lua @@ -0,0 +1,135 @@ +-- Apartment 2: -773.22580000 322.82520000 194.88620000 +exports('GetExecApartment2Object', function() + return ExecApartment2 +end) + +ExecApartment2 = { + currentInteriorId = -1, + + Style = { + Theme = { + modern = { + interiorId = 227585, + ipl = "apa_v_mp_h_01_b" + }, + moody = { + interiorId = 228353, + ipl = "apa_v_mp_h_02_b" + }, + vibrant = { + interiorId = 229121, + ipl = "apa_v_mp_h_03_b" + }, + sharp = { + interiorId = 229889, + ipl = "apa_v_mp_h_04_b" + }, + monochrome = { + interiorId = 230657, + ipl = "apa_v_mp_h_05_b" + }, + seductive = { + interiorId = 231425, + ipl = "apa_v_mp_h_06_b" + }, + regal = { + interiorId = 232193, + ipl = "apa_v_mp_h_07_b" + }, + aqua = { + interiorId = 232961, + ipl = "apa_v_mp_h_08_b" + } + }, + + Set = function(style, refresh) + if type(style) == "table" then + ExecApartment2.Style.Clear() + ExecApartment2.currentInteriorId = style.interiorId + + EnableIpl(style.ipl, true) + + if refresh then + RefreshInterior(style.interiorId) + end + end + end, + Clear = function() + for key, value in pairs(ExecApartment2.Style.Theme) do + SetIplPropState(value.interiorId, { + "Apart_Hi_Strip_A", + "Apart_Hi_Strip_B", + "Apart_Hi_Strip_C"}, false) + SetIplPropState(value.interiorId, { + "Apart_Hi_Booze_A", + "Apart_Hi_Booze_B", + "Apart_Hi_Booze_C" + }, false) + SetIplPropState(value.interiorId, { + "Apart_Hi_Smokes_A", + "Apart_Hi_Smokes_B", + "Apart_Hi_Smokes_C" + }, false, true) + EnableIpl(value.ipl, false) + end + end + }, + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(ExecApartment2.currentInteriorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(ExecApartment2.currentInteriorId, details, state, refresh) + end + }, + Smoke = { + none = "", + stage1 = "Apart_Hi_Smokes_A", + stage2 = "Apart_Hi_Smokes_B", + stage3 = "Apart_Hi_Smokes_C", + + Set = function(smoke, refresh) + ExecApartment2.Smoke.Clear(false) + + if smoke ~= nil then + SetIplPropState(ExecApartment2.currentInteriorId, smoke, true, refresh) + else + if refresh then + RefreshInterior(ExecApartment2.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(ExecApartment2.currentInteriorId, { + ExecApartment2.Smoke.stage1, + ExecApartment2.Smoke.stage2, + ExecApartment2.Smoke.stage3 + }, false, refresh) + end + }, + + LoadDefault = function() + ExecApartment2.Style.Set(ExecApartment2.Style.Theme.seductive, true) + ExecApartment2.Strip.Enable({ + ExecApartment2.Strip.A, + ExecApartment2.Strip.B, + ExecApartment2.Strip.C + }, false) + ExecApartment2.Booze.Enable({ + ExecApartment2.Booze.A, + ExecApartment2.Booze.B, + ExecApartment2.Booze.C + }, false) + ExecApartment2.Smoke.Set(ExecApartment2.Smoke.none) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_executive/apartment3.lua b/resources/[core]/bob74_ipl/dlc_executive/apartment3.lua new file mode 100644 index 0000000..5a008c9 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_executive/apartment3.lua @@ -0,0 +1,136 @@ +-- Apartment 3: -787.78050000 334.92320000 186.11340000 +exports('GetExecApartment3Object', function() + return ExecApartment3 +end) + +ExecApartment3 = { + currentInteriorId = -1, + + Style = { + Theme = { + modern = { + interiorId = 227841, + ipl = "apa_v_mp_h_01_c" + }, + moody = { + interiorId = 228609, + ipl = "apa_v_mp_h_02_c" + }, + vibrant = { + interiorId = 229377, + ipl = "apa_v_mp_h_03_c" + }, + sharp = { + interiorId = 230145, + ipl = "apa_v_mp_h_04_c" + }, + monochrome = { + interiorId = 230913, + ipl = "apa_v_mp_h_05_c" + }, + seductive = { + interiorId = 231681, + ipl = "apa_v_mp_h_06_c" + }, + regal = { + interiorId = 232449, + ipl = "apa_v_mp_h_07_c" + }, + aqua = { + interiorId = 233217, + ipl = "apa_v_mp_h_08_c" + } + }, + + Set = function(style, refresh) + if type(style) == "table" then + ExecApartment3.Style.Clear() + ExecApartment3.currentInteriorId = style.interiorId + + EnableIpl(style.ipl, true) + + if refresh then + RefreshInterior(style.interiorId) + end + end + end, + Clear = function() + for key, value in pairs(ExecApartment3.Style.Theme) do + SetIplPropState(value.interiorId, { + "Apart_Hi_Strip_A", + "Apart_Hi_Strip_B", + "Apart_Hi_Strip_C" + }, false) + SetIplPropState(value.interiorId, { + "Apart_Hi_Booze_A", + "Apart_Hi_Booze_B", + "Apart_Hi_Booze_C" + }, false) + SetIplPropState(value.interiorId, { + "Apart_Hi_Smokes_A", + "Apart_Hi_Smokes_B", + "Apart_Hi_Smokes_C" + }, false, true) + EnableIpl(value.ipl, false) + end + end + }, + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(ExecApartment3.currentInteriorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(ExecApartment3.currentInteriorId, details, state, refresh) + end + }, + Smoke = { + none = "", + stage1 = "Apart_Hi_Smokes_A", + stage2 = "Apart_Hi_Smokes_B", + stage3 = "Apart_Hi_Smokes_C", + + Set = function(smoke, refresh) + ExecApartment3.Smoke.Clear(false) + + if smoke ~= nil then + SetIplPropState(ExecApartment3.currentInteriorId, smoke, true, refresh) + else + if refresh then + RefreshInterior(ExecApartment3.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(ExecApartment3.currentInteriorId, { + ExecApartment3.Smoke.stage1, + ExecApartment3.Smoke.stage2, + ExecApartment3.Smoke.stage3 + }, false, refresh) + end + }, + + LoadDefault = function() + ExecApartment3.Style.Set(ExecApartment3.Style.Theme.sharp, true) + ExecApartment3.Strip.Enable({ + ExecApartment3.Strip.A, + ExecApartment3.Strip.B, + ExecApartment3.Strip.C + }, false) + ExecApartment3.Booze.Enable({ + ExecApartment3.Booze.A, + ExecApartment3.Booze.B, + ExecApartment3.Booze.C + }, false) + ExecApartment3.Smoke.Set(ExecApartment3.Smoke.none) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_finance/office1.lua b/resources/[core]/bob74_ipl/dlc_finance/office1.lua new file mode 100644 index 0000000..755df0e --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_finance/office1.lua @@ -0,0 +1,324 @@ +-- Office 1: -141.1987, -620.913, 168.8205 (Arcadius Business Centre) +exports('GetFinanceOffice1Object', function() + return FinanceOffice1 +end) + +FinanceOffice1 = { + currentInteriorId = -1, + currentSafeDoors = { + hashL = "", + hashR = "" + }, + + Style = { + Theme = { + warm = { + interiorId = 236289, + ipl = "ex_dt1_02_office_01a", + safe = "ex_prop_safedoor_office1a" + }, + classical = { + interiorId = 236545, + ipl = "ex_dt1_02_office_01b", + safe = "ex_prop_safedoor_office1b" + }, + vintage = { + interiorId = 236801, + ipl = "ex_dt1_02_office_01c", + safe = "ex_prop_safedoor_office1c" + }, + contrast = { + interiorId = 237057, + ipl = "ex_dt1_02_office_02a", + safe = "ex_prop_safedoor_office2a" + }, + rich = { + interiorId = 237313, + ipl = "ex_dt1_02_office_02b", + safe = "ex_prop_safedoor_office2a" + }, + cool = { + interiorId = 237569, + ipl = "ex_dt1_02_office_02c", + safe = "ex_prop_safedoor_office2a" + }, + ice = { + interiorId = 237825, + ipl = "ex_dt1_02_office_03a", + safe = "ex_prop_safedoor_office3a" + }, + conservative = { + interiorId = 238081, + ipl = "ex_dt1_02_office_03b", + safe = "ex_prop_safedoor_office3a" + }, + polished = { + interiorId = 238337, + ipl = "ex_dt1_02_office_03c", + safe = "ex_prop_safedoor_office3c" + } + }, + Set = function(style, refresh) + if refresh == nil then + refresh = false + end + + if type(style) == "table" then + FinanceOffice1.Style.Clear() + FinanceOffice1.currentInteriorId = style.interiorId + FinanceOffice1.currentSafeDoors = { + hashL = GetHashKey(style.safe .. "_l"), + hashR = GetHashKey(style.safe .. "_r") + } + + EnableIpl(style.ipl, true) + + if refresh then + RefreshInterior(style.interiorId) + end + end + end, + Clear = function() + for themeKey, themeValue in pairs(FinanceOffice1.Style.Theme) do + for swagKey, swagValue in pairs(FinanceOffice1.Swag) do + if type(swagValue) == "table" then + SetIplPropState(themeValue.interiorId, { + swagValue.A, + swagValue.B, + swagValue.C + }, false) + end + end + + SetIplPropState(themeValue.interiorId, "office_chairs", false, false) + SetIplPropState(themeValue.interiorId, "office_booze", false, true) + + FinanceOffice1.currentSafeDoors = { + hashL = 0, + hashR = 0 + } + + EnableIpl(themeValue.ipl, false) + end + end + }, + Safe = { + doorHeadingL = 96.0, -- Only need the heading of the Left door to get the Right ones + Position = vector3(-124.25, -641.30, 168.870), -- Approximately between the two doors + -- These values are checked from "doorHandler.lua" and + isLeftDoorOpen = false, + isRightDoorOpen = false, + + -- Safe door API + Open = function(doorSide) + if doorSide:lower() == "left" then + FinanceOffice1.Safe.isLeftDoorOpen = true + elseif doorSide:lower() == "right" then + FinanceOffice1.Safe.isRightDoorOpen = true + else + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") + end + end, + Close = function(doorSide) + if doorSide:lower() == "left" then + FinanceOffice1.Safe.isLeftDoorOpen = false + elseif doorSide:lower() == "right" then + FinanceOffice1.Safe.isRightDoorOpen = false + else + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") + end + end, + + -- Internal use only + SetDoorState = function(doorSide, open) + local doorHandle = 0 + local heading = FinanceOffice1.Safe.doorHeadingL + + if doorSide:lower() == "left" then + doorHandle = FinanceOffice1.Safe.GetDoorHandle(FinanceOffice1.currentSafeDoors.hashL) + + if open then + heading = heading - 90.0 + end + elseif doorSide:lower() == "right" then + doorHandle = FinanceOffice1.Safe.GetDoorHandle(FinanceOffice1.currentSafeDoors.hashR) + heading = heading - 180 + + if open then + heading = heading + 90.0 + end + end + + if doorHandle == 0 then + print("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") + return + end + + SetEntityHeading(doorHandle, heading) + end, + + -- /!\ handle changes whenever the interior is refreshed /!\ + GetDoorHandle = function(doorHash) + local timeout = 4 + local doorHandle = GetClosestObjectOfType(FinanceOffice1.Safe.Position.x, FinanceOffice1.Safe.Position.y, FinanceOffice1.Safe.Position.z, 5.0, doorHash, false, false, false) + + while doorHandle == 0 do + Wait(25) + + doorHandle = GetClosestObjectOfType(FinanceOffice1.Safe.Position.x, FinanceOffice1.Safe.Position.y, FinanceOffice1.Safe.Position.z, 5.0, doorHash, false, false, false) + timeout = timeout - 1 + + if timeout <= 0 then + break + end + end + + return doorHandle + end + }, + Swag = { + Cash = { + A = "cash_set_01", + B = "cash_set_02", + C = "cash_set_03", + D = "cash_set_04", + E = "cash_set_05", + F = "cash_set_06", + G = "cash_set_07", + H = "cash_set_08", + I = "cash_set_09", + J = "cash_set_10", + K = "cash_set_11", + L = "cash_set_12", + M = "cash_set_13", + N = "cash_set_14", + O = "cash_set_15", + P = "cash_set_16", + Q = "cash_set_17", + R = "cash_set_18", + S = "cash_set_19", + T = "cash_set_20", + U = "cash_set_21", + V = "cash_set_22", + W = "cash_set_23", + X = "cash_set_24" + }, + BoozeCigs = { + A = "swag_booze_cigs", + B = "swag_booze_cigs2", + C = "swag_booze_cigs3" + }, + Counterfeit = { + A = "swag_counterfeit", + B = "swag_counterfeit2", + C = "swag_counterfeit3" + }, + DrugBags = { + A = "swag_drugbags", + B = "swag_drugbags2", + C = "swag_drugbags3" + }, + DrugStatue = { + A = "swag_drugstatue", + B = "swag_drugstatue2", + C = "swag_drugstatue3" + }, + Electronic = { + A = "swag_electronic", + B = "swag_electronic2", + C = "swag_electronic3" + }, + FurCoats = { + A = "swag_furcoats", + B = "swag_furcoats2", + C = "swag_furcoats3" + }, + Gems = { + A = "swag_gems", + B = "swag_gems2", + C = "swag_gems3" + }, + Guns = { + A = "swag_guns", + B = "swag_guns2", + C = "swag_guns3" + }, + Ivory = { + A = "swag_ivory", + B = "swag_ivory2", + C = "swag_ivory3" + }, + Jewel = { + A = "swag_jewelwatch", + B = "swag_jewelwatch2", + C = "swag_jewelwatch3" + }, + Med = { + A = "swag_med", + B = "swag_med2", + C = "swag_med3" + }, + Painting = { + A = "swag_art", + B = "swag_art2", + C = "swag_art3" + }, + Pills = { + A = "swag_pills", + B = "swag_pills2", + C = "swag_pills3" + }, + Silver = { + A = "swag_silver", + B = "swag_silver2", + C = "swag_silver3" + }, + + Enable = function(details, state, refresh) + SetIplPropState(FinanceOffice1.currentInteriorId, details, state, refresh) + end + }, + Chairs = { + off = "", + on = "office_chairs", + + Set = function(chairs, refresh) + FinanceOffice1.Chairs.Clear(false) + + if chairs ~= nil then + SetIplPropState(FinanceOffice1.currentInteriorId, chairs, true, refresh) + else + if refresh then + RefreshInterior(FinanceOffice1.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(FinanceOffice1.currentInteriorId, FinanceOffice1.Chairs.on, false, refresh) + end + }, + Booze = { + off = "", + on = "office_booze", + + Set = function(booze, refresh) + FinanceOffice1.Booze.Clear(false) + + if booze ~= nil then + SetIplPropState(FinanceOffice1.currentInteriorId, booze, true, refresh) + else + if refresh then + RefreshInterior(FinanceOffice1.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(FinanceOffice1.currentInteriorId, FinanceOffice1.Booze.on, false, refresh) + end + }, + + LoadDefault = function() + FinanceOffice1.Style.Set(FinanceOffice1.Style.Theme.polished) + FinanceOffice1.Chairs.Set(FinanceOffice1.Chairs.on, true) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_finance/office2.lua b/resources/[core]/bob74_ipl/dlc_finance/office2.lua new file mode 100644 index 0000000..608a789 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_finance/office2.lua @@ -0,0 +1,324 @@ +-- Office 2: -75.8466, -826.9893, 243.3859 (Maze Bank Building) +exports('GetFinanceOffice2Object', function() + return FinanceOffice2 +end) + +FinanceOffice2 = { + currentInteriorId = -1, + currentSafeDoors = { + hashL = "", + hashR = "" + }, + + Style = { + Theme = { + warm = { + interiorId = 238593, + ipl = "ex_dt1_11_office_01a", + safe = "ex_prop_safedoor_office1a" + }, + classical = { + interiorId = 238849, + ipl = "ex_dt1_11_office_01b", + safe = "ex_prop_safedoor_office1b" + }, + vintage = { + interiorId = 239105, + ipl = "ex_dt1_11_office_01c", + safe = "ex_prop_safedoor_office1c" + }, + contrast = { + interiorId = 239361, + ipl = "ex_dt1_11_office_02a", + safe = "ex_prop_safedoor_office2a" + }, + rich = { + interiorId = 239617, + ipl = "ex_dt1_11_office_02b", + safe = "ex_prop_safedoor_office2a" + }, + cool = { + interiorId = 239873, + ipl = "ex_dt1_11_office_02c", + safe = "ex_prop_safedoor_office2a" + }, + ice = { + interiorId = 240129, + ipl = "ex_dt1_11_office_03a", + safe = "ex_prop_safedoor_office3a" + }, + conservative = { + interiorId = 240385, + ipl = "ex_dt1_11_office_03b", + safe = "ex_prop_safedoor_office3a" + }, + polished = { + interiorId = 240641, + ipl = "ex_dt1_11_office_03c", + safe = "ex_prop_safedoor_office3c" + } + }, + Set = function(style, refresh) + if refresh == nil then + refresh = false + end + + if type(style) == "table" then + FinanceOffice2.Style.Clear() + FinanceOffice2.currentInteriorId = style.interiorId + FinanceOffice2.currentSafeDoors = { + hashL = GetHashKey(style.safe .. "_l"), + hashR = GetHashKey(style.safe .. "_r") + } + + EnableIpl(style.ipl, true) + + if refresh then + RefreshInterior(style.interiorId) + end + end + end, + Clear = function() + for themeKey, themeValue in pairs(FinanceOffice2.Style.Theme) do + for swagKey, swagValue in pairs(FinanceOffice2.Swag) do + if type(swagValue) == "table" then + SetIplPropState(themeValue.interiorId, { + swagValue.A, + swagValue.B, + swagValue.C + }, false) + end + end + + SetIplPropState(themeValue.interiorId, "office_chairs", false, false) + SetIplPropState(themeValue.interiorId, "office_booze", false, true) + + FinanceOffice2.currentSafeDoors = { + hashL = 0, + hashR = 0 + } + + EnableIpl(themeValue.ipl, false) + end + end + }, + Safe = { + doorHeadingL = 250.0, -- Only need the heading of the Left door to get the Right ones + Position = vector3(-82.593, -801.0, 243.385), -- Approximately between the two doors + -- These values are checked from "doorHandler.lua" and + isLeftDoorOpen = false, + isRightDoorOpen = false, + + -- Safe door API + Open = function(doorSide) + if doorSide:lower() == "left" then + FinanceOffice2.Safe.isLeftDoorOpen = true + elseif doorSide:lower() == "right" then + FinanceOffice2.Safe.isRightDoorOpen = true + else + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") + end + end, + Close = function(doorSide) + if doorSide:lower() == "left" then + FinanceOffice2.Safe.isLeftDoorOpen = false + elseif doorSide:lower() == "right" then + FinanceOffice2.Safe.isRightDoorOpen = false + else + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") + end + end, + + -- Internal use only + SetDoorState = function(doorSide, open) + local doorHandle = 0 + local heading = FinanceOffice2.Safe.doorHeadingL + + if doorSide:lower() == "left" then + doorHandle = FinanceOffice2.Safe.GetDoorHandle(FinanceOffice2.currentSafeDoors.hashL) + + if open then + heading = heading - 90.0 + end + elseif doorSide:lower() == "right" then + doorHandle = FinanceOffice2.Safe.GetDoorHandle(FinanceOffice2.currentSafeDoors.hashR) + heading = heading - 180 + + if open then + heading = heading + 90.0 + end + end + + if doorHandle == 0 then + print("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") + return + end + + SetEntityHeading(doorHandle, heading) + end, + + -- /!\ handle changes whenever the interior is refreshed /!\ + GetDoorHandle = function(doorHash) + local timeout = 4 + local doorHandle = GetClosestObjectOfType(FinanceOffice2.Safe.Position.x, FinanceOffice2.Safe.Position.y, FinanceOffice2.Safe.Position.z, 5.0, doorHash, false, false, false) + + while doorHandle == 0 do + Wait(25) + + doorHandle = GetClosestObjectOfType(FinanceOffice2.Safe.Position.x, FinanceOffice2.Safe.Position.y, FinanceOffice2.Safe.Position.z, 5.0, doorHash, false, false, false) + timeout = timeout - 1 + + if timeout <= 0 then + break + end + end + + return doorHandle + end + }, + Swag = { + Cash = { + A = "cash_set_01", + B = "cash_set_02", + C = "cash_set_03", + D = "cash_set_04", + E = "cash_set_05", + F = "cash_set_06", + G = "cash_set_07", + H = "cash_set_08", + I = "cash_set_09", + J = "cash_set_10", + K = "cash_set_11", + L = "cash_set_12", + M = "cash_set_13", + N = "cash_set_14", + O = "cash_set_15", + P = "cash_set_16", + Q = "cash_set_17", + R = "cash_set_18", + S = "cash_set_19", + T = "cash_set_20", + U = "cash_set_21", + V = "cash_set_22", + W = "cash_set_23", + X = "cash_set_24" + }, + BoozeCigs = { + A = "swag_booze_cigs", + B = "swag_booze_cigs2", + C = "swag_booze_cigs3" + }, + Counterfeit = { + A = "swag_counterfeit", + B = "swag_counterfeit2", + C = "swag_counterfeit3" + }, + DrugBags = { + A = "swag_drugbags", + B = "swag_drugbags2", + C = "swag_drugbags3" + }, + DrugStatue = { + A = "swag_drugstatue", + B = "swag_drugstatue2", + C = "swag_drugstatue3" + }, + Electronic = { + A = "swag_electronic", + B = "swag_electronic2", + C = "swag_electronic3" + }, + FurCoats = { + A = "swag_furcoats", + B = "swag_furcoats2", + C = "swag_furcoats3" + }, + Gems = { + A = "swag_gems", + B = "swag_gems2", + C = "swag_gems3" + }, + Guns = { + A = "swag_guns", + B = "swag_guns2", + C = "swag_guns3" + }, + Ivory = { + A = "swag_ivory", + B = "swag_ivory2", + C = "swag_ivory3" + }, + Jewel = { + A = "swag_jewelwatch", + B = "swag_jewelwatch2", + C = "swag_jewelwatch3" + }, + Med = { + A = "swag_med", + B = "swag_med2", + C = "swag_med3" + }, + Painting = { + A = "swag_art", + B = "swag_art2", + C = "swag_art3" + }, + Pills = { + A = "swag_pills", + B = "swag_pills2", + C = "swag_pills3" + }, + Silver = { + A = "swag_silver", + B = "swag_silver2", + C = "swag_silver3" + }, + + Enable = function(details, state, refresh) + SetIplPropState(FinanceOffice2.currentInteriorId, details, state, refresh) + end + }, + Chairs = { + off = "", + on = "office_chairs", + + Set = function(chairs, refresh) + FinanceOffice2.Chairs.Clear(false) + + if chairs ~= nil then + SetIplPropState(FinanceOffice2.currentInteriorId, chairs, true, refresh) + else + if refresh then + RefreshInterior(FinanceOffice2.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(FinanceOffice2.currentInteriorId, FinanceOffice2.Chairs.on, false, refresh) + end + }, + Booze = { + off = "", + on = "office_booze", + + Set = function(booze, refresh) + FinanceOffice2.Booze.Clear(false) + + if booze ~= nil then + SetIplPropState(FinanceOffice2.currentInteriorId, booze, true, refresh) + else + if refresh then + RefreshInterior(FinanceOffice2.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(FinanceOffice2.currentInteriorId, FinanceOffice2.Booze.on, false, refresh) + end + }, + + LoadDefault = function() + FinanceOffice2.Style.Set(FinanceOffice2.Style.Theme.warm) + FinanceOffice2.Chairs.Set(FinanceOffice2.Chairs.on, true) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_finance/office3.lua b/resources/[core]/bob74_ipl/dlc_finance/office3.lua new file mode 100644 index 0000000..e209703 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_finance/office3.lua @@ -0,0 +1,324 @@ +-- Office 3: -1579.756, -565.0661, 108.523 (Lom Bank) +exports('GetFinanceOffice3Object', function() + return FinanceOffice3 +end) + +FinanceOffice3 = { + currentInteriorId = -1, + currentSafeDoors = { + hashL = "", + hashR = "" + }, + + Style = { + Theme = { + warm = { + interiorId = 240897, + ipl = "ex_sm_13_office_01a", + safe = "ex_prop_safedoor_office1a" + }, + classical = { + interiorId = 241153, + ipl = "ex_sm_13_office_01b", + safe = "ex_prop_safedoor_office1b" + }, + vintage = { + interiorId = 241409, + ipl = "ex_sm_13_office_01c", + safe = "ex_prop_safedoor_office1c" + }, + contrast = { + interiorId = 241665, + ipl = "ex_sm_13_office_02a", + safe = "ex_prop_safedoor_office2a" + }, + rich = { + interiorId = 241921, + ipl = "ex_sm_13_office_02b", + safe = "ex_prop_safedoor_office2a" + }, + cool = { + interiorId = 242177, + ipl = "ex_sm_13_office_02c", + safe = "ex_prop_safedoor_office2a" + }, + ice = { + interiorId = 242433, + ipl = "ex_sm_13_office_03a", + safe = "ex_prop_safedoor_office3a" + }, + conservative = { + interiorId = 242689, + ipl = "ex_sm_13_office_03b", + safe = "ex_prop_safedoor_office3a" + }, + polished = { + interiorId = 242945, + ipl = "ex_sm_13_office_03c", + safe = "ex_prop_safedoor_office3c" + } + }, + Set = function(style, refresh) + if refresh == nil then + refresh = false + end + + if type(style) == "table" then + FinanceOffice3.Style.Clear() + FinanceOffice3.currentInteriorId = style.interiorId + FinanceOffice3.currentSafeDoors = { + hashL = GetHashKey(style.safe .. "_l"), + hashR = GetHashKey(style.safe .. "_r") + } + + EnableIpl(style.ipl, true) + + if refresh then + RefreshInterior(style.interiorId) + end + end + end, + Clear = function() + for themeKey, themeValue in pairs(FinanceOffice3.Style.Theme) do + for swagKey, swagValue in pairs(FinanceOffice3.Swag) do + if type(swagValue) == "table" then + SetIplPropState(themeValue.interiorId, { + swagValue.A, + swagValue.B, + swagValue.C + }, false) + end + end + + SetIplPropState(themeValue.interiorId, "office_chairs", false, false) + SetIplPropState(themeValue.interiorId, "office_booze", false, true) + + FinanceOffice3.currentSafeDoors = { + hashL = 0, + hashR = 0 + } + + EnableIpl(themeValue.ipl, false) + end + end + }, + Safe = { + doorHeadingL = 126.0, -- Only need the heading of the Left door to get the Right ones + Position = vector3(-1554.08, -573.7122, 108.5272), -- Approximately between the two doors + -- These values are checked from "doorHandler.lua" and + isLeftDoorOpen = false, + isRightDoorOpen = false, + + -- Safe door API + Open = function(doorSide) + if doorSide:lower() == "left" then + FinanceOffice3.Safe.isLeftDoorOpen = true + elseif doorSide:lower() == "right" then + FinanceOffice3.Safe.isRightDoorOpen = true + else + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") + end + end, + Close = function(doorSide) + if doorSide:lower() == "left" then + FinanceOffice3.Safe.isLeftDoorOpen = false + elseif doorSide:lower() == "right" then + FinanceOffice3.Safe.isRightDoorOpen = false + else + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") + end + end, + + -- Internal use only + SetDoorState = function(doorSide, open) + local doorHandle = 0 + local heading = FinanceOffice3.Safe.doorHeadingL + + if doorSide:lower() == "left" then + doorHandle = FinanceOffice3.Safe.GetDoorHandle(FinanceOffice3.currentSafeDoors.hashL) + + if open then + heading = heading - 90.0 + end + elseif doorSide:lower() == "right" then + doorHandle = FinanceOffice3.Safe.GetDoorHandle(FinanceOffice3.currentSafeDoors.hashR) + heading = heading - 180 + + if open then + heading = heading + 90.0 + end + end + + if doorHandle == 0 then + print("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") + return + end + + SetEntityHeading(doorHandle, heading) + end, + + -- /!\ handle changes whenever the interior is refreshed /!\ + GetDoorHandle = function(doorHash) + local timeout = 4 + local doorHandle = GetClosestObjectOfType(FinanceOffice3.Safe.Position.x, FinanceOffice3.Safe.Position.y, FinanceOffice3.Safe.Position.z, 5.0, doorHash, false, false, false) + + while doorHandle == 0 do + Wait(25) + + doorHandle = GetClosestObjectOfType(FinanceOffice3.Safe.Position.x, FinanceOffice3.Safe.Position.y, FinanceOffice3.Safe.Position.z, 5.0, doorHash, false, false, false) + timeout = timeout - 1 + + if timeout <= 0 then + break + end + end + + return doorHandle + end + }, + Swag = { + Cash = { + A = "cash_set_01", + B = "cash_set_02", + C = "cash_set_03", + D = "cash_set_04", + E = "cash_set_05", + F = "cash_set_06", + G = "cash_set_07", + H = "cash_set_08", + I = "cash_set_09", + J = "cash_set_10", + K = "cash_set_11", + L = "cash_set_12", + M = "cash_set_13", + N = "cash_set_14", + O = "cash_set_15", + P = "cash_set_16", + Q = "cash_set_17", + R = "cash_set_18", + S = "cash_set_19", + T = "cash_set_20", + U = "cash_set_21", + V = "cash_set_22", + W = "cash_set_23", + X = "cash_set_24" + }, + BoozeCigs = { + A = "swag_booze_cigs", + B = "swag_booze_cigs2", + C = "swag_booze_cigs3" + }, + Counterfeit = { + A = "swag_counterfeit", + B = "swag_counterfeit2", + C = "swag_counterfeit3" + }, + DrugBags = { + A = "swag_drugbags", + B = "swag_drugbags2", + C = "swag_drugbags3" + }, + DrugStatue = { + A = "swag_drugstatue", + B = "swag_drugstatue2", + C = "swag_drugstatue3" + }, + Electronic = { + A = "swag_electronic", + B = "swag_electronic2", + C = "swag_electronic3" + }, + FurCoats = { + A = "swag_furcoats", + B = "swag_furcoats2", + C = "swag_furcoats3" + }, + Gems = { + A = "swag_gems", + B = "swag_gems2", + C = "swag_gems3" + }, + Guns = { + A = "swag_guns", + B = "swag_guns2", + C = "swag_guns3" + }, + Ivory = { + A = "swag_ivory", + B = "swag_ivory2", + C = "swag_ivory3" + }, + Jewel = { + A = "swag_jewelwatch", + B = "swag_jewelwatch2", + C = "swag_jewelwatch3" + }, + Med = { + A = "swag_med", + B = "swag_med2", + C = "swag_med3" + }, + Painting = { + A = "swag_art", + B = "swag_art2", + C = "swag_art3" + }, + Pills = { + A = "swag_pills", + B = "swag_pills2", + C = "swag_pills3" + }, + Silver = { + A = "swag_silver", + B = "swag_silver2", + C = "swag_silver3" + }, + + Enable = function(details, state, refresh) + SetIplPropState(FinanceOffice3.currentInteriorId, details, state, refresh) + end + }, + Chairs = { + off = "", + on = "office_chairs", + + Set = function(chairs, refresh) + FinanceOffice3.Chairs.Clear(false) + + if chairs ~= nil then + SetIplPropState(FinanceOffice3.currentInteriorId, chairs, true, refresh) + else + if refresh then + RefreshInterior(FinanceOffice3.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(FinanceOffice3.currentInteriorId, FinanceOffice3.Chairs.on, false, refresh) + end + }, + Booze = { + off = "", + on = "office_booze", + + Set = function(booze, refresh) + FinanceOffice3.Booze.Clear(false) + + if booze ~= nil then + SetIplPropState(FinanceOffice3.currentInteriorId, booze, true, refresh) + else + if refresh then + RefreshInterior(FinanceOffice3.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(FinanceOffice3.currentInteriorId, FinanceOffice3.Booze.on, false, refresh) + end + }, + + LoadDefault = function() + FinanceOffice3.Style.Set(FinanceOffice3.Style.Theme.conservative) + FinanceOffice3.Chairs.Set(FinanceOffice3.Chairs.on, true) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_finance/office4.lua b/resources/[core]/bob74_ipl/dlc_finance/office4.lua new file mode 100644 index 0000000..1c6fd8a --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_finance/office4.lua @@ -0,0 +1,324 @@ +-- Office 4: -1392.667, -480.4736, 72.04217 (Maze Bank West) +exports('GetFinanceOffice4Object', function() + return FinanceOffice4 +end) + +FinanceOffice4 = { + currentInteriorId = -1, + currentSafeDoors = { + hashL = "", + hashR = "" + }, + + Style = { + Theme = { + warm = { + interiorId = 243201, + ipl = "ex_sm_15_office_01a", + safe = "ex_prop_safedoor_office1a" + }, + classical = { + interiorId = 243457, + ipl = "ex_sm_15_office_01b", + safe = "ex_prop_safedoor_office1b" + }, + vintage = { + interiorId = 243713, + ipl = "ex_sm_15_office_01c", + safe = "ex_prop_safedoor_office1c" + }, + contrast = { + interiorId = 243969, + ipl = "ex_sm_15_office_02a", + safe = "ex_prop_safedoor_office2a" + }, + rich = { + interiorId = 244225, + ipl = "ex_sm_15_office_02b", + safe = "ex_prop_safedoor_office2a" + }, + cool = { + interiorId = 244481, + ipl = "ex_sm_15_office_02c", + safe = "ex_prop_safedoor_office2a" + }, + ice = { + interiorId = 244737, + ipl = "ex_sm_15_office_03a", + safe = "ex_prop_safedoor_office3a" + }, + conservative = { + interiorId = 244993, + ipl = "ex_sm_15_office_03b", + safe = "ex_prop_safedoor_office3a" + }, + polished = { + interiorId = 245249, + ipl = "ex_sm_15_office_03c", + safe = "ex_prop_safedoor_office3c" + } + }, + Set = function(style, refresh) + if refresh == nil then + refresh = false + end + + if type(style) == "table" then + FinanceOffice4.Style.Clear() + FinanceOffice4.currentInteriorId = style.interiorId + FinanceOffice4.currentSafeDoors = { + hashL = GetHashKey(style.safe .. "_l"), + hashR = GetHashKey(style.safe .. "_r") + } + + EnableIpl(style.ipl, true) + + if refresh then + RefreshInterior(style.interiorId) + end + end + end, + Clear = function() + for themeKey, themeValue in pairs(FinanceOffice4.Style.Theme) do + for swagKey, swagValue in pairs(FinanceOffice4.Swag) do + if type(swagValue) == "table" then + SetIplPropState(themeValue.interiorId, { + swagValue.A, + swagValue.B, + swagValue.C + }, false) + end + end + + SetIplPropState(themeValue.interiorId, "office_chairs", false, false) + SetIplPropState(themeValue.interiorId, "office_booze", false, true) + + FinanceOffice4.currentSafeDoors = { + hashL = 0, + hashR = 0 + } + + EnableIpl(themeValue.ipl, false) + end + end + }, + Safe = { + doorHeadingL = 188.0, -- Only need the heading of the Left door to get the Right ones + Position = vector3(-1372.905, -462.08, 72.05), -- Approximately between the two doors + -- These values are checked from "doorHandler.lua" and + isLeftDoorOpen = false, + isRightDoorOpen = false, + + -- Safe door API + Open = function(doorSide) + if doorSide:lower() == "left" then + FinanceOffice4.Safe.isLeftDoorOpen = true + elseif doorSide:lower() == "right" then + FinanceOffice4.Safe.isRightDoorOpen = true + else + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") + end + end, + Close = function(doorSide) + if doorSide:lower() == "left" then + FinanceOffice4.Safe.isLeftDoorOpen = false + elseif doorSide:lower() == "right" then + FinanceOffice4.Safe.isRightDoorOpen = false + else + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") + end + end, + + -- Internal use only + SetDoorState = function(doorSide, open) + local doorHandle = 0 + local heading = FinanceOffice4.Safe.doorHeadingL + + if doorSide:lower() == "left" then + doorHandle = FinanceOffice4.Safe.GetDoorHandle(FinanceOffice4.currentSafeDoors.hashL) + + if open then + heading = heading - 90.0 + end + elseif doorSide:lower() == "right" then + doorHandle = FinanceOffice4.Safe.GetDoorHandle(FinanceOffice4.currentSafeDoors.hashR) + heading = heading - 180 + + if open then + heading = heading + 90.0 + end + end + + if doorHandle == 0 then + print("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") + return + end + + SetEntityHeading(doorHandle, heading) + end, + + -- /!\ handle changes whenever the interior is refreshed /!\ + GetDoorHandle = function(doorHash) + local timeout = 4 + local doorHandle = GetClosestObjectOfType(FinanceOffice4.Safe.Position.x, FinanceOffice4.Safe.Position.y, FinanceOffice4.Safe.Position.z, 5.0, doorHash, false, false, false) + + while doorHandle == 0 do + Wait(25) + + doorHandle = GetClosestObjectOfType(FinanceOffice4.Safe.Position.x, FinanceOffice4.Safe.Position.y, FinanceOffice4.Safe.Position.z, 5.0, doorHash, false, false, false) + timeout = timeout - 1 + + if timeout <= 0 then + break + end + end + + return doorHandle + end + }, + Swag = { + Cash = { + A = "cash_set_01", + B = "cash_set_02", + C = "cash_set_03", + D = "cash_set_04", + E = "cash_set_05", + F = "cash_set_06", + G = "cash_set_07", + H = "cash_set_08", + I = "cash_set_09", + J = "cash_set_10", + K = "cash_set_11", + L = "cash_set_12", + M = "cash_set_13", + N = "cash_set_14", + O = "cash_set_15", + P = "cash_set_16", + Q = "cash_set_17", + R = "cash_set_18", + S = "cash_set_19", + T = "cash_set_20", + U = "cash_set_21", + V = "cash_set_22", + W = "cash_set_23", + X = "cash_set_24" + }, + BoozeCigs = { + A = "swag_booze_cigs", + B = "swag_booze_cigs2", + C = "swag_booze_cigs3" + }, + Counterfeit = { + A = "swag_counterfeit", + B = "swag_counterfeit2", + C = "swag_counterfeit3" + }, + DrugBags = { + A = "swag_drugbags", + B = "swag_drugbags2", + C = "swag_drugbags3" + }, + DrugStatue = { + A = "swag_drugstatue", + B = "swag_drugstatue2", + C = "swag_drugstatue3" + }, + Electronic = { + A = "swag_electronic", + B = "swag_electronic2", + C = "swag_electronic3" + }, + FurCoats = { + A = "swag_furcoats", + B = "swag_furcoats2", + C = "swag_furcoats3" + }, + Gems = { + A = "swag_gems", + B = "swag_gems2", + C = "swag_gems3" + }, + Guns = { + A = "swag_guns", + B = "swag_guns2", + C = "swag_guns3" + }, + Ivory = { + A = "swag_ivory", + B = "swag_ivory2", + C = "swag_ivory3" + }, + Jewel = { + A = "swag_jewelwatch", + B = "swag_jewelwatch2", + C = "swag_jewelwatch3" + }, + Med = { + A = "swag_med", + B = "swag_med2", + C = "swag_med3" + }, + Painting = { + A = "swag_art", + B = "swag_art2", + C = "swag_art3" + }, + Pills = { + A = "swag_pills", + B = "swag_pills2", + C = "swag_pills3" + }, + Silver = { + A = "swag_silver", + B = "swag_silver2", + C = "swag_silver3" + }, + + Enable = function(details, state, refresh) + SetIplPropState(FinanceOffice4.currentInteriorId, details, state, refresh) + end + }, + Chairs = { + off = "", + on = "office_chairs", + + Set = function(chairs, refresh) + FinanceOffice4.Chairs.Clear(false) + + if chairs ~= nil then + SetIplPropState(FinanceOffice4.currentInteriorId, chairs, true, refresh) + else + if refresh then + RefreshInterior(FinanceOffice4.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(FinanceOffice4.currentInteriorId, FinanceOffice4.Chairs.on, false, refresh) + end + }, + Booze = { + off = "", + on = "office_booze", + + Set = function(booze, refresh) + FinanceOffice4.Booze.Clear(false) + + if booze ~= nil then + SetIplPropState(FinanceOffice4.currentInteriorId, booze, true, refresh) + else + if refresh then + RefreshInterior(FinanceOffice4.currentInteriorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(FinanceOffice4.currentInteriorId, FinanceOffice4.Booze.on, false, refresh) + end + }, + + LoadDefault = function() + FinanceOffice4.Style.Set(FinanceOffice4.Style.Theme.cool) + FinanceOffice4.Chairs.Set(FinanceOffice4.Chairs.on, true) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_finance/organization.lua b/resources/[core]/bob74_ipl/dlc_finance/organization.lua new file mode 100644 index 0000000..d4928d1 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_finance/organization.lua @@ -0,0 +1,162 @@ +exports('GetFinanceOrganizationObject', function() + return FinanceOrganization +end) + +AddEventHandler('onClientResourceStop', function(res) + if GetCurrentResourceName() ~= res then + return + end + + FinanceOrganization.Office.Clear() +end) + +FinanceOrganization = { + Name = { + Colors = { + black = 0, + gray = 1, + yellow = 2, + blue = 3, + orange = 5, + red = 6, + green = 7 + }, + Fonts = { + font1 = 0, + font2 = 1, + font3 = 2, + font4 = 3, + font5 = 4, + font6 = 5, + font7 = 6, + font8 = 7, + font9 = 8, + font10 = 9, + font11 = 10, + font12 = 11, + font13 = 12 + }, + Style = { + normal = 3, + light = 1 + }, + name = "", + style = 0, + color = 0, + font = 0, + + Set = function(name, style, color, font) + FinanceOrganization.Name.name = name + FinanceOrganization.Name.style = style + FinanceOrganization.Name.color = color + FinanceOrganization.Name.font = font + FinanceOrganization.Office.stage = 0 + end + }, + Office = { + needToLoad = false, + loaded = false, + target = "prop_ex_office_text", + prop = "ex_prop_ex_office_text", + renderId = -1, + movieId = -1, + stage = 0, + + Init = function() + DrawEmptyRect(FinanceOrganization.Office.target, FinanceOrganization.Office.prop) + end, + Enable = function(state) + FinanceOrganization.Office.needToLoad = state + end, + Clear = function() + if IsNamedRendertargetRegistered(FinanceOrganization.Office.target) then + ReleaseNamedRendertarget(GetHashKey(FinanceOrganization.Office.target)) + end + + if HasScaleformMovieFilenameLoaded(FinanceOrganization.Office.movieId) then + SetScaleformMovieAsNoLongerNeeded(FinanceOrganization.Office.movieId) + end + + FinanceOrganization.Office.renderId = -1 + FinanceOrganization.Office.movieId = -1 + FinanceOrganization.Office.stage = 0 + end + } +} + +CreateThread(function() + FinanceOrganization.Office.Init() + + while true do + if FinanceOrganization.Office.needToLoad then + -- Need to load + if Global.FinanceOffices.isInsideOffice1 or Global.FinanceOffices.isInsideOffice2 or Global.FinanceOffices.isInsideOffice3 or Global.FinanceOffices.isInsideOffice4 then + DrawOrganizationName(FinanceOrganization.Name.name, FinanceOrganization.Name.style, FinanceOrganization.Name.color, FinanceOrganization.Name.font) + + FinanceOrganization.Office.loaded = true + + Wait(0) -- We need to call all this every frame + else + Wait(1000) -- We are not inside an office + end + elseif FinanceOrganization.Office.loaded then + -- Loaded and need to unload + FinanceOrganization.Office.Clear() + FinanceOrganization.Office.loaded = false + + Wait(1000) -- We can wait longer when we don't need to display text + else + -- Not needed to load + Wait(1000) -- We can wait longer when we don't need to display text + end + end +end) + +function DrawOrganizationName(name, style, color, font) + if FinanceOrganization.Office.stage == 0 then + if FinanceOrganization.Office.renderId == -1 then + FinanceOrganization.Office.renderId = CreateNamedRenderTargetForModel(FinanceOrganization.Office.target, FinanceOrganization.Office.prop) + end + + if FinanceOrganization.Office.movieId == -1 then + FinanceOrganization.Office.movieId = RequestScaleformMovie("ORGANISATION_NAME") + end + + FinanceOrganization.Office.stage = 1 + elseif FinanceOrganization.Office.stage == 1 then + if HasScaleformMovieLoaded(FinanceOrganization.Office.movieId) then + local parameters = { + p0 = { + type = "string", + value = name + }, + p1 = { + type = "int", + value = style + }, + p2 = { + type = "int", + value = color + }, + p3 = { + type = "int", + value = font + } + } + + SetupScaleform(FinanceOrganization.Office.movieId, "SET_ORGANISATION_NAME", parameters) + + FinanceOrganization.Office.stage = 2 + else + FinanceOrganization.Office.movieId = RequestScaleformMovie("ORGANISATION_NAME") + end + elseif FinanceOrganization.Office.stage == 2 then + SetTextRenderId(FinanceOrganization.Office.renderId) + SetScriptGfxDrawOrder(4) + SetScriptGfxDrawBehindPausemenu(true) + SetScriptGfxAlign(73, 73) + DrawScaleformMovie(FinanceOrganization.Office.movieId, 0.196, 0.245, 0.46, 0.66, 255, 255, 255, 255, 0) + SetTextRenderId(GetDefaultScriptRendertargetRenderId()) + ResetScriptGfxAlign() + end +end diff --git a/resources/[core]/bob74_ipl/dlc_gunrunning/bunkers.lua b/resources/[core]/bob74_ipl/dlc_gunrunning/bunkers.lua new file mode 100644 index 0000000..c68866e --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_gunrunning/bunkers.lua @@ -0,0 +1,155 @@ +exports('GetGunrunningBunkerObject', function() + return GunrunningBunker +end) + +GunrunningBunker = { + interiorId = 258561, + + Ipl = { + Interior = { + ipl = "gr_grdlc_interior_placement_interior_1_grdlc_int_02_milo_", + + -- Load interiors IPLs. + Load = function() + EnableIpl(GunrunningBunker.Ipl.Interior.ipl, true) + end, + -- Remove interiors IPLs. + Remove = function() + EnableIpl(GunrunningBunker.Ipl.Interior.ipl, false) + end + }, + Exterior = { + ipl = { + "gr_case0_bunkerclosed", -- Desert: 848.6175, 2996.567, 45.81612 + "gr_case1_bunkerclosed",-- SmokeTree: 2126.785, 3335.04, 48.21422 + "gr_case2_bunkerclosed", -- Scrapyard: 2493.654, 3140.399, 51.28789 + "gr_case3_bunkerclosed", -- Oilfields: 481.0465, 2995.135, 43.96672 + "gr_case4_bunkerclosed", -- RatonCanyon: -391.3216, 4363.728, 58.65862 + "gr_case5_bunkerclosed", -- Grapeseed: 1823.961, 4708.14, 42.4991 + "gr_case6_bunkerclosed", -- Farmhouse: 1570.372, 2254.549, 78.89397 + "gr_case7_bunkerclosed", -- Paletto: -783.0755, 5934.686, 24.31475 + "gr_case9_bunkerclosed", -- Route68: 24.43542, 2959.705, 58.35517 + "gr_case10_bunkerclosed", -- Zancudo: -3058.714, 3329.19, 12.5844 + "gr_case11_bunkerclosed" -- Great Ocean Highway: -3180.466, 1374.192, 19.9597 + }, + + -- Load exteriors IPLs. + Load = function() + EnableIpl(GunrunningBunker.Ipl.Exterior.ipl, true) + end, + -- Remove exteriors IPLs. + Remove = function() + EnableIpl(GunrunningBunker.Ipl.Exterior.ipl, false) + end + } + }, + Style = { + default = "Bunker_Style_A", + blue = "Bunker_Style_B", + yellow = "Bunker_Style_C", + + -- Set the style (color) of the bunker. + -- style: Wall color (values: GunrunningBunker.Style.default / GunrunningBunker.Style.blue / GunrunningBunker.Style.yellow) + -- refresh: Reload the whole interior (values: true / false) + Set = function(style, refresh) + GunrunningBunker.Style.Clear(false) + + SetIplPropState(GunrunningBunker.interiorId, style, true, refresh) + end, + -- Removes the style. + -- refresh: Reload the whole interior (values: true / false) + Clear = function(refresh) + SetIplPropState(GunrunningBunker.interiorId, { + GunrunningBunker.Style.default, + GunrunningBunker.Style.blue, + GunrunningBunker.Style.yellow + }, false, refresh) + end + }, + Tier = { + default = "standard_bunker_set", + upgrade = "upgrade_bunker_set", + + -- Set the tier (quality) of the bunker. + -- tier: Upgrade state (values: GunrunningBunker.Tier.default / GunrunningBunker.Tier.upgrade) + -- refresh: Reload the whole interior (values: true / false) + Set = function(tier, refresh) + GunrunningBunker.Tier.Clear(false) + + SetIplPropState(GunrunningBunker.interiorId, tier, true, refresh) + end, + -- Removes the tier. + -- refresh: Reload the whole interior (values: true / false) + Clear = function(refresh) + SetIplPropState(GunrunningBunker.interiorId, { + GunrunningBunker.Tier.default, + GunrunningBunker.Tier.upgrade + }, false, refresh) + end + }, + Security = { + noEntryGate = "", + default = "standard_security_set", + upgrade = "security_upgrade", + + -- Set the security stage of the bunker. + -- security: Upgrade state (values: GunrunningBunker.Security.default / GunrunningBunker.Security.upgrade) + -- refresh: Reload the whole interior (values: true / false) + Set = function(security, refresh) + GunrunningBunker.Security.Clear(false) + + if security ~= "" then + SetIplPropState(GunrunningBunker.interiorId, security, true, refresh) + else + if refresh then + RefreshInterior(GunrunningBunker.interiorId) + end + end + end, + -- Removes the security. + -- refresh: Reload the whole interior (values: true / false) + Clear = function(refresh) + SetIplPropState(GunrunningBunker.interiorId, { + GunrunningBunker.Security.default, + GunrunningBunker.Security.upgrade + }, false, refresh) + end + }, + Details = { + office = "Office_Upgrade_set", -- Office interior + officeLocked = "Office_blocker_set", -- Metal door blocking access to the office + locker = "gun_locker_upgrade", -- Locker next to the office door + rangeLights = "gun_range_lights", -- Lights next to the shooting range + rangeWall = "gun_wall_blocker", -- Wall blocking access to the shooting range + rangeLocked = "gun_range_blocker_set", -- Metal door blocking access to the shooting range + schematics = "Gun_schematic_set", -- Gun schematic on the table and whiteboard + + -- Enable or disable a detail. + -- details: Prop to enable or disable (values: GunrunningBunker.Details.office / GunrunningBunker.Details.officeLocked / GunrunningBunker.Details.locker...) + -- state: Enable or Disable (values: true / false) + -- refresh: Reload the whole interior (values: true / false) + Enable = function(details, state, refresh) + SetIplPropState(GunrunningBunker.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GunrunningBunker.Ipl.Interior.Load() + GunrunningBunker.Ipl.Exterior.Load() + + GunrunningBunker.Style.Set(GunrunningBunker.Style.default) + GunrunningBunker.Tier.Set(GunrunningBunker.Tier.default) + GunrunningBunker.Security.Set(GunrunningBunker.Security.default) + + GunrunningBunker.Details.Enable(GunrunningBunker.Details.office, true) + GunrunningBunker.Details.Enable(GunrunningBunker.Details.officeLocked, false) + GunrunningBunker.Details.Enable(GunrunningBunker.Details.locker, true) + GunrunningBunker.Details.Enable(GunrunningBunker.Details.rangeLights, true) + GunrunningBunker.Details.Enable(GunrunningBunker.Details.rangeWall, false) + GunrunningBunker.Details.Enable(GunrunningBunker.Details.rangeLocked, false) + GunrunningBunker.Details.Enable(GunrunningBunker.Details.schematics, false) + + -- Must be called in order to spawn or remove the props + RefreshInterior(GunrunningBunker.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_gunrunning/yacht.lua b/resources/[core]/bob74_ipl/dlc_gunrunning/yacht.lua new file mode 100644 index 0000000..c45a028 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_gunrunning/yacht.lua @@ -0,0 +1,57 @@ +-- Gunrunning Yacht: -1363.724, 6734.108, 2.44598 +exports('GetGunrunningYachtObject', function() + return GunrunningYacht +end) + +GunrunningYacht = { + ipl = { + "gr_heist_yacht2", + "gr_heist_yacht2_bar", + "gr_heist_yacht2_bar_lod", + "gr_heist_yacht2_bedrm", + "gr_heist_yacht2_bedrm_lod", + "gr_heist_yacht2_bridge", + "gr_heist_yacht2_bridge_lod", + "gr_heist_yacht2_enginrm", + "gr_heist_yacht2_enginrm_lod", + "gr_heist_yacht2_lod", + "gr_heist_yacht2_lounge", + "gr_heist_yacht2_lounge_lod", + "gr_heist_yacht2_slod", + }, + + Enable = function(state) + EnableIpl(GunrunningYacht.ipl, state) + end, + Water = { + modelHash = `apa_mp_apa_yacht_jacuzzi_ripple1`, + + Enable = function(state) + local handle = GetClosestObjectOfType(-1369.0, 6736.0, 5.40, 5.0, GunrunningYacht.Water.modelHash, false, false, false) + + if state then + -- Enable + if handle == 0 then + RequestModel(GunrunningYacht.Water.modelHash) + while not HasModelLoaded(GunrunningYacht.Water.modelHash) do + Wait(0) + end + + local water = CreateObjectNoOffset(GunrunningYacht.Water.modelHash, -1369.0, 6736.0, 5.40, false, false, false) + + SetEntityAsMissionEntity(water, false, false) + end + else + -- Disable + if handle ~= 0 then + SetEntityAsMissionEntity(handle, false, false) + DeleteEntity(handle) + end + end + end + }, + + LoadDefault = function() + GunrunningYacht.Enable(true) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_heists/carrier.lua b/resources/[core]/bob74_ipl/dlc_heists/carrier.lua new file mode 100644 index 0000000..22326ac --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_heists/carrier.lua @@ -0,0 +1,28 @@ +-- Heist Carrier: 3082.3117 -4717.1191 15.2622 +exports('GetHeistCarrierObject', function() + return HeistCarrier +end) + +HeistCarrier = { + ipl = { + "hei_carrier", + "hei_carrier_int1", + "hei_carrier_int1_lod", + "hei_carrier_int2", + "hei_carrier_int2_lod", + "hei_carrier_int3", + "hei_carrier_int3_lod", + "hei_carrier_int4", + "hei_carrier_int4_lod", + "hei_carrier_int5", + "hei_carrier_int5_lod", + "hei_carrier_int6", + "hei_carrier_int6_lod", + "hei_carrier_lod", + "hei_carrier_slod" + }, + + Enable = function(state) + EnableIpl(HeistCarrier.ipl, state) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_heists/yacht.lua b/resources/[core]/bob74_ipl/dlc_heists/yacht.lua new file mode 100644 index 0000000..fc7f42c --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_heists/yacht.lua @@ -0,0 +1,57 @@ +-- Heist Yatch: -2043.974,-1031.582, 11.981 +exports('GetHeistYachtObject', function() + return HeistYacht +end) + +HeistYacht = { + ipl = { + "hei_yacht_heist", + "hei_yacht_heist_bar", + "hei_yacht_heist_bar_lod", + "hei_yacht_heist_bedrm", + "hei_yacht_heist_bedrm_lod", + "hei_yacht_heist_bridge", + "hei_yacht_heist_bridge_lod", + "hei_yacht_heist_enginrm", + "hei_yacht_heist_enginrm_lod", + "hei_yacht_heist_lod", + "hei_yacht_heist_lounge", + "hei_yacht_heist_lounge_lod", + "hei_yacht_heist_slod" + }, + + Enable = function(state) + EnableIpl(HeistYacht.ipl, state) + end, + Water = { + modelHash = `apa_mp_apa_yacht_jacuzzi_ripple1`, + + Enable = function(state) + local handle = GetClosestObjectOfType(-2023.773, -1038.0, 5.40, 5.0, HeistYacht.Water.modelHash, false, false, false) + + if state then + -- Enable + if handle == 0 then + RequestModel(HeistYacht.Water.modelHash) + while not HasModelLoaded(HeistYacht.Water.modelHash) do + Wait(0) + end + + local water = CreateObjectNoOffset(HeistYacht.Water.modelHash, -2023.773, -1038.0, 5.40, false, false, false) + + SetEntityAsMissionEntity(water, false, false) + end + else + -- Disable + if handle ~= 0 then + SetEntityAsMissionEntity(handle, false, false) + DeleteEntity(handle) + end + end + end + }, + + LoadDefault = function() + HeistYacht.Enable(true) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_high_life/apartment1.lua b/resources/[core]/bob74_ipl/dlc_high_life/apartment1.lua new file mode 100644 index 0000000..84a3b42 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_high_life/apartment1.lua @@ -0,0 +1,69 @@ +-- Apartment 1: -1462.28100000, -539.62760000, 72.44434000 +exports('GetHLApartment1Object', function() + return HLApartment1 +end) + +HLApartment1 = { + interiorId = 145921, + + Ipl = { + Interior = { + ipl = "mpbusiness_int_placement_interior_v_mp_apt_h_01_milo_", + + Load = function() + EnableIpl(HLApartment1.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(HLApartment1.Ipl.Interior.ipl, false) + end + } + }, + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment1.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment1.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment1.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + HLApartment1.Ipl.Interior.Load() + HLApartment1.Strip.Enable({ + HLApartment1.Strip.A, + HLApartment1.Strip.B, + HLApartment1.Strip.C + }, false) + HLApartment1.Booze.Enable({ + HLApartment1.Booze.A, + HLApartment1.Booze.B, + HLApartment1.Booze.C + }, false) + HLApartment1.Smoke.Enable({ + HLApartment1.Smoke.A, + HLApartment1.Smoke.B, + HLApartment1.Smoke.C + }, false) + + RefreshInterior(HLApartment1.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_high_life/apartment2.lua b/resources/[core]/bob74_ipl/dlc_high_life/apartment2.lua new file mode 100644 index 0000000..d92e1ce --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_high_life/apartment2.lua @@ -0,0 +1,69 @@ +-- Apartment 2: -914.90260000, -374.87310000, 112.6748 +exports('GetHLApartment2Object', function() + return HLApartment2 +end) + +HLApartment2 = { + interiorId = 146177, + + Ipl = { + Interior = { + ipl = "mpbusiness_int_placement_interior_v_mp_apt_h_01_milo__1", + + Load = function() + EnableIpl(HLApartment2.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(HLApartment2.Ipl.Interior.ipl, false) + end + }, + }, + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment2.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment2.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment2.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + HLApartment2.Ipl.Interior.Load() + HLApartment2.Strip.Enable({ + HLApartment2.Strip.A, + HLApartment2.Strip.B, + HLApartment2.Strip.C + }, false) + HLApartment2.Booze.Enable({ + HLApartment2.Booze.A, + HLApartment2.Booze.B, + HLApartment2.Booze.C + }, false) + HLApartment2.Smoke.Enable({ + HLApartment2.Smoke.A, + HLApartment2.Smoke.B, + HLApartment2.Smoke.C + }, false) + + RefreshInterior(HLApartment2.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_high_life/apartment3.lua b/resources/[core]/bob74_ipl/dlc_high_life/apartment3.lua new file mode 100644 index 0000000..533ffe4 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_high_life/apartment3.lua @@ -0,0 +1,69 @@ +-- Apartment 3: -609.56690000, 51.28212000, 96.60023000 +exports('GetHLApartment3Object', function() + return HLApartment3 +end) + +HLApartment3 = { + interiorId = 146689, + + Ipl = { + Interior = { + ipl = "mpbusiness_int_placement_interior_v_mp_apt_h_01_milo__2", + + Load = function() + EnableIpl(HLApartment3.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(HLApartment3.Ipl.Interior.ipl, false) + end + } + }, + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment3.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment3.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment3.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + HLApartment3.Ipl.Interior.Load() + HLApartment3.Strip.Enable({ + HLApartment3.Strip.A, + HLApartment3.Strip.B, + HLApartment3.Strip.C + }, false) + HLApartment3.Booze.Enable({ + HLApartment3.Booze.A, + HLApartment3.Booze.B, + HLApartment3.Booze.C + }, false) + HLApartment3.Smoke.Enable({ + HLApartment3.Smoke.A, + HLApartment3.Smoke.B, + HLApartment3.Smoke.C + }, false) + + RefreshInterior(HLApartment3.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_high_life/apartment4.lua b/resources/[core]/bob74_ipl/dlc_high_life/apartment4.lua new file mode 100644 index 0000000..cc44978 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_high_life/apartment4.lua @@ -0,0 +1,69 @@ +-- Apartment 4: -778.50610000, 331.31600000, 210.39720 +exports('GetHLApartment4Object', function() + return HLApartment4 +end) + +HLApartment4 = { + interiorId = 146945, + + Ipl = { + Interior = { + ipl = "mpbusiness_int_placement_interior_v_mp_apt_h_01_milo__3", + + Load = function() + EnableIpl(HLApartment4.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(HLApartment4.Ipl.Interior.ipl, false) + end + }, + }, + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment4.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment4.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment4.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + HLApartment4.Ipl.Interior.Load() + HLApartment4.Strip.Enable({ + HLApartment4.Strip.A, + HLApartment4.Strip.B, + HLApartment4.Strip.C + }, false) + HLApartment4.Booze.Enable({ + HLApartment4.Booze.A, + HLApartment4.Booze.B, + HLApartment4.Booze.C + }, false) + HLApartment4.Smoke.Enable({ + HLApartment4.Smoke.A, + HLApartment4.Smoke.B, + HLApartment4.Smoke.C + }, false) + + RefreshInterior(HLApartment4.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_high_life/apartment5.lua b/resources/[core]/bob74_ipl/dlc_high_life/apartment5.lua new file mode 100644 index 0000000..fa690a4 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_high_life/apartment5.lua @@ -0,0 +1,69 @@ +-- Apartment 5: -22.61353000, -590.14320000, 78.430910 +exports('GetHLApartment5Object', function() + return HLApartment5 +end) + +HLApartment5 = { + interiorId = 147201, + + Ipl = { + Interior = { + ipl = "mpbusiness_int_placement_interior_v_mp_apt_h_01_milo__4", + + Load = function() + EnableIpl(HLApartment5.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(HLApartment5.Ipl.Interior.ipl, false) + end + }, + }, + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment5.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment5.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment5.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + HLApartment5.Ipl.Interior.Load() + HLApartment5.Strip.Enable({ + HLApartment5.Strip.A, + HLApartment5.Strip.B, + HLApartment5.Strip.C + }, false) + HLApartment5.Booze.Enable({ + HLApartment5.Booze.A, + HLApartment5.Booze.B, + HLApartment5.Booze.C + }, false) + HLApartment5.Smoke.Enable({ + HLApartment5.Smoke.A, + HLApartment5.Smoke.B, + HLApartment5.Smoke.C + }, false) + + RefreshInterior(HLApartment5.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_high_life/apartment6.lua b/resources/[core]/bob74_ipl/dlc_high_life/apartment6.lua new file mode 100644 index 0000000..9058416 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_high_life/apartment6.lua @@ -0,0 +1,69 @@ +-- Apartment 6: -609.56690000, 51.28212000, -183.98080 +exports('GetHLApartment6Object', function() + return HLApartment6 +end) + +HLApartment6 = { + interiorId = 147457, + + Ipl = { + Interior = { + ipl = "mpbusiness_int_placement_interior_v_mp_apt_h_01_milo__5", + + Load = function() + EnableIpl(HLApartment6.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(HLApartment6.Ipl.Interior.ipl, false) + end + } + }, + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment6.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment6.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(HLApartment6.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + HLApartment6.Ipl.Interior.Load() + HLApartment6.Strip.Enable({ + HLApartment6.Strip.A, + HLApartment6.Strip.B, + HLApartment6.Strip.C + }, false) + HLApartment6.Booze.Enable({ + HLApartment6.Booze.A, + HLApartment6.Booze.B, + HLApartment6.Booze.C + }, false) + HLApartment6.Smoke.Enable({ + HLApartment6.Smoke.A, + HLApartment6.Smoke.B, + HLApartment6.Smoke.C + }, false) + + RefreshInterior(HLApartment6.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_import/garage1.lua b/resources/[core]/bob74_ipl/dlc_import/garage1.lua new file mode 100644 index 0000000..ff9eceb --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_import/garage1.lua @@ -0,0 +1,202 @@ +-- Garage 1: Arcadius Business Centre +exports('GetImportCEOGarage1Object', function() + return ImportCEOGarage1 +end) + +ImportCEOGarage1 = { + Part = { + Garage1 = { -- -191.0133, -579.1428, 135.0000 + interiorId = 253441, + ipl = "imp_dt1_02_cargarage_a" + }, + Garage2 = { -- -117.4989, -568.1132, 135.0000 + interiorId = 253697, + ipl = "imp_dt1_02_cargarage_b" + }, + Garage3 = { -- -136.0780, -630.1852, 135.0000 + interiorId = 253953, + ipl = "imp_dt1_02_cargarage_c" + }, + ModShop = { -- -146.6166, -596.6301, 166.0000 + interiorId = 254209, + ipl = "imp_dt1_02_modgarage" + }, + + Load = function(part) + EnableIpl(part.ipl, true) + end, + Remove = function(part) + EnableIpl(part.ipl, false) + end, + Clear = function() + EnableIpl({ + ImportCEOGarage1.Part.Garage1.ipl, + ImportCEOGarage1.Part.Garage2.ipl, + ImportCEOGarage1.Part.Garage3.ipl + }, false) + end, + }, + Style = { + concrete = "garage_decor_01", + plain = "garage_decor_02", + marble = "garage_decor_03", + wooden = "garage_decor_04", + + Set = function(part, style, refresh) + ImportCEOGarage1.Style.Clear(part) + + SetIplPropState(part.interiorId, style, true, refresh) + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage1.Style.concrete, + ImportCEOGarage1.Style.plain, + ImportCEOGarage1.Style.marble, + ImportCEOGarage1.Style.wooden + }, false, true) + end + }, + Numbering = { + none = "", + Level1 = { + style1 = "numbering_style01_n1", + style2 = "numbering_style02_n1", + style3 = "numbering_style03_n1", + style4 = "numbering_style04_n1", + style5 = "numbering_style05_n1", + style6 = "numbering_style06_n1", + style7 = "numbering_style07_n1", + style8 = "numbering_style08_n1", + style9 = "numbering_style09_n1" + }, + Level2 = { + style1 = "numbering_style01_n2", + style2 = "numbering_style02_n2", + style3 = "numbering_style03_n2", + style4 = "numbering_style04_n2", + style5 = "numbering_style05_n2", + style6 = "numbering_style06_n2", + style7 = "numbering_style07_n2", + style8 = "numbering_style08_n2", + style9 = "numbering_style09_n2" + }, + Level3 = { + style1 = "numbering_style01_n3", + style2 = "numbering_style02_n3", + style3 = "numbering_style03_n3", + style4 = "numbering_style04_n3", + style5 = "numbering_style05_n3", + style6 = "numbering_style06_n3", + style7 = "numbering_style07_n3", + style8 = "numbering_style08_n3", + style9 = "numbering_style09_n3" + }, + + Set = function(part, num, refresh) + ImportCEOGarage1.Numbering.Clear(part) + + if num ~= nil then + SetIplPropState(part.interiorId, num, true, refresh) + else + if refresh then + RefreshInterior(part.interiorId) + end + end + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage1.Numbering.Level1, + ImportCEOGarage1.Numbering.Level2, + ImportCEOGarage1.Numbering.Level3 + }, false, true) + end + }, + Lighting = { + none = "", + style1 = "lighting_option01", + style2 = "lighting_option02", + style3 = "lighting_option03", + style4 = "lighting_option04", + style5 = "lighting_option05", + style6 = "lighting_option06", + style7 = "lighting_option07", + style8 = "lighting_option08", + style9 = "lighting_option09", + + Set = function(part, light, refresh) + ImportCEOGarage1.Lighting.Clear(part) + + if light ~= nil then + SetIplPropState(part.interiorId, light, true, refresh) + else + if refresh then + RefreshInterior(part.interiorId) + end + end + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage1.Lighting.style1, ImportCEOGarage1.Lighting.style2, ImportCEOGarage1.Lighting.style3, + ImportCEOGarage1.Lighting.style4, ImportCEOGarage1.Lighting.style5, ImportCEOGarage1.Lighting.style6, + ImportCEOGarage1.Lighting.style7, ImportCEOGarage1.Lighting.style8, ImportCEOGarage1.Lighting.style9 + }, false, true) + end + }, + ModShop = { + Floor = { + default = "", + city = "floor_vinyl_01", + seabed = "floor_vinyl_02", + aliens = "floor_vinyl_03", + clouds = "floor_vinyl_04", + money = "floor_vinyl_05", + zebra = "floor_vinyl_06", + blackWhite = "floor_vinyl_07", + barcode = "floor_vinyl_08", + paintbrushBW = "floor_vinyl_09", + grid = "floor_vinyl_10", + splashes = "floor_vinyl_11", + squares = "floor_vinyl_12", + mosaic = "floor_vinyl_13", + paintbrushColor = "floor_vinyl_14", + curvesColor = "floor_vinyl_15", + marbleBrown = "floor_vinyl_16", + marbleBlue = "floor_vinyl_17", + marbleBW = "floor_vinyl_18", + maze = "floor_vinyl_19", + + Set = function(floor, refresh) + ImportCEOGarage1.ModShop.Floor.Clear() + + if floor ~= nil then + SetIplPropState(ImportCEOGarage1.Part.ModShop.interiorId, floor, true, refresh) + else + if refresh then + RefreshInterior(ImportCEOGarage1.Part.ModShop.interiorId) + end + end + end, + Clear = function() + SetIplPropState(ImportCEOGarage1.Part.ModShop.interiorId, { + ImportCEOGarage1.ModShop.Floor.city, ImportCEOGarage1.ModShop.Floor.seabed, ImportCEOGarage1.ModShop.Floor.aliens, + ImportCEOGarage1.ModShop.Floor.clouds, ImportCEOGarage1.ModShop.Floor.money, ImportCEOGarage1.ModShop.Floor.zebra, + ImportCEOGarage1.ModShop.Floor.blackWhite, ImportCEOGarage1.ModShop.Floor.barcode, ImportCEOGarage1.ModShop.Floor.paintbrushBW, + ImportCEOGarage1.ModShop.Floor.grid, ImportCEOGarage1.ModShop.Floor.splashes, ImportCEOGarage1.ModShop.Floor.squares, + ImportCEOGarage1.ModShop.Floor.mosaic, ImportCEOGarage1.ModShop.Floor.paintbrushColor, ImportCEOGarage1.ModShop.Floor.curvesColor, + ImportCEOGarage1.ModShop.Floor.marbleBrown, ImportCEOGarage1.ModShop.Floor.marbleBlue, ImportCEOGarage1.ModShop.Floor.marbleBW, + ImportCEOGarage1.ModShop.Floor.maze + }, false, true) + end + } + }, + + LoadDefault = function() + ImportCEOGarage1.Part.Load(ImportCEOGarage1.Part.Garage1) + ImportCEOGarage1.Style.Set(ImportCEOGarage1.Part.Garage1, ImportCEOGarage1.Style.concrete) + ImportCEOGarage1.Numbering.Set(ImportCEOGarage1.Part.Garage1, ImportCEOGarage1.Numbering.Level1.style1) + ImportCEOGarage1.Lighting.Set(ImportCEOGarage1.Part.Garage1, ImportCEOGarage1.Lighting.style1, true) + + ImportCEOGarage1.Part.Load(ImportCEOGarage1.Part.ModShop) + ImportCEOGarage1.ModShop.Floor.Set(ImportCEOGarage1.ModShop.Floor.default, true) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_import/garage2.lua b/resources/[core]/bob74_ipl/dlc_import/garage2.lua new file mode 100644 index 0000000..a58917a --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_import/garage2.lua @@ -0,0 +1,201 @@ +-- Garage 2: Maze Bank Building +exports('GetImportCEOGarage2Object', function() + return ImportCEOGarage2 +end) + +ImportCEOGarage2 = { + Part = { + Garage1 = { -- -84.2193, -823.0851, 221.0000 + interiorId = 254465, + ipl = "imp_dt1_11_cargarage_a" + }, + Garage2 = { -- -69.8627, -824.7498, 221.0000 + interiorId = 254721, + ipl = "imp_dt1_11_cargarage_b" + }, + Garage3 = { -- -80.4318, -813.2536, 221.0000 + interiorId = 254977, + ipl = "imp_dt1_11_cargarage_c" + }, + ModShop = { -- -73.9039, -821.6204, 284.0000 + interiorId = 255233, + ipl = "imp_dt1_11_modgarage" + }, + + Load = function(part) + EnableIpl(part.ipl, true) + end, + Remove = function(part) + EnableIpl(part.ipl, false) + end, + Clear = function() + EnableIpl({ + ImportCEOGarage2.Part.Garage1.ipl, + ImportCEOGarage2.Part.Garage2.ipl, + ImportCEOGarage2.Part.Garage3.ipl + }, false) + end, + }, + Style = { + concrete = "garage_decor_01", + plain = "garage_decor_02", + marble = "garage_decor_03", + wooden = "garage_decor_04", + + Set = function(part, style, refresh) + ImportCEOGarage2.Style.Clear(part) + + SetIplPropState(part.interiorId, style, true, refresh) + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage2.Style.concrete, + ImportCEOGarage2.Style.plain, + ImportCEOGarage2.Style.marble, + ImportCEOGarage2.Style.wooden + }, false, true) + end + }, + Numbering = { + none = "", + Level1 = { + style1 = "numbering_style01_n1", + style2 = "numbering_style02_n1", + style3 = "numbering_style03_n1", + style4 = "numbering_style04_n1", + style5 = "numbering_style05_n1", + style6 = "numbering_style06_n1", + style7 = "numbering_style07_n1", + style8 = "numbering_style08_n1", + style9 = "numbering_style09_n1" + }, + Level2 = { + style1 = "numbering_style01_n2", + style2 = "numbering_style02_n2", + style3 = "numbering_style03_n2", + style4 = "numbering_style04_n2", + style5 = "numbering_style05_n2", + style6 = "numbering_style06_n2", + style7 = "numbering_style07_n2", + style8 = "numbering_style08_n2", + style9 = "numbering_style09_n2" + }, + Level3 = { + style1 = "numbering_style01_n3", + style2 = "numbering_style02_n3", + style3 = "numbering_style03_n3", + style4 = "numbering_style04_n3", + style5 = "numbering_style05_n3", + style6 = "numbering_style06_n3", + style7 = "numbering_style07_n3", + style8 = "numbering_style08_n3", + style9 = "numbering_style09_n3" + }, + Set = function(part, num, refresh) + ImportCEOGarage2.Numbering.Clear(part) + + if num ~= nil then + SetIplPropState(part.interiorId, num, true, refresh) + else + if refresh then + RefreshInterior(part.interiorId) + end + end + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage2.Numbering.Level1, + ImportCEOGarage2.Numbering.Level2, + ImportCEOGarage2.Numbering.Level3 + }, false, true) + end + }, + Lighting = { + none = "", + style1 = "lighting_option01", + style2 = "lighting_option02", + style3 = "lighting_option03", + style4 = "lighting_option04", + style5 = "lighting_option05", + style6 = "lighting_option06", + style7 = "lighting_option07", + style8 = "lighting_option08", + style9 = "lighting_option09", + + Set = function(part, light, refresh) + ImportCEOGarage2.Lighting.Clear(part) + + if light ~= nil then + SetIplPropState(part.interiorId, light, true, refresh) + else + if refresh then + RefreshInterior(part.interiorId) + end + end + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage2.Lighting.style1, ImportCEOGarage2.Lighting.style2, ImportCEOGarage2.Lighting.style3, + ImportCEOGarage2.Lighting.style4, ImportCEOGarage2.Lighting.style5, ImportCEOGarage2.Lighting.style6, + ImportCEOGarage2.Lighting.style7, ImportCEOGarage2.Lighting.style8, ImportCEOGarage2.Lighting.style9 + }, false, true) + end + }, + ModShop = { + Floor = { + default = "", + city = "floor_vinyl_01", + seabed = "floor_vinyl_02", + aliens = "floor_vinyl_03", + clouds = "floor_vinyl_04", + money = "floor_vinyl_05", + zebra = "floor_vinyl_06", + blackWhite = "floor_vinyl_07", + barcode = "floor_vinyl_08", + paintbrushBW = "floor_vinyl_09", + grid = "floor_vinyl_10", + splashes = "floor_vinyl_11", + squares = "floor_vinyl_12", + mosaic = "floor_vinyl_13", + paintbrushColor = "floor_vinyl_14", + curvesColor = "floor_vinyl_15", + marbleBrown = "floor_vinyl_16", + marbleBlue = "floor_vinyl_17", + marbleBW = "floor_vinyl_18", + maze = "floor_vinyl_19", + + Set = function(floor, refresh) + ImportCEOGarage2.ModShop.Floor.Clear() + + if floor ~= nil then + SetIplPropState(ImportCEOGarage2.Part.ModShop.interiorId, floor, true, refresh) + else + if refresh then + RefreshInterior(ImportCEOGarage2.Part.ModShop.interiorId) + end + end + end, + Clear = function() + SetIplPropState(ImportCEOGarage2.Part.ModShop.interiorId, { + ImportCEOGarage2.ModShop.Floor.city, ImportCEOGarage2.ModShop.Floor.seabed, ImportCEOGarage2.ModShop.Floor.aliens, + ImportCEOGarage2.ModShop.Floor.clouds, ImportCEOGarage2.ModShop.Floor.money, ImportCEOGarage2.ModShop.Floor.zebra, + ImportCEOGarage2.ModShop.Floor.blackWhite, ImportCEOGarage2.ModShop.Floor.barcode, ImportCEOGarage2.ModShop.Floor.paintbrushBW, + ImportCEOGarage2.ModShop.Floor.grid, ImportCEOGarage2.ModShop.Floor.splashes, ImportCEOGarage2.ModShop.Floor.squares, + ImportCEOGarage2.ModShop.Floor.mosaic, ImportCEOGarage2.ModShop.Floor.paintbrushColor, ImportCEOGarage2.ModShop.Floor.curvesColor, + ImportCEOGarage2.ModShop.Floor.marbleBrown, ImportCEOGarage2.ModShop.Floor.marbleBlue, ImportCEOGarage2.ModShop.Floor.marbleBW, + ImportCEOGarage2.ModShop.Floor.maze + }, false, true) + end + } + }, + + LoadDefault = function() + ImportCEOGarage2.Part.Load(ImportCEOGarage2.Part.Garage1) + ImportCEOGarage2.Style.Set(ImportCEOGarage2.Part.Garage1, ImportCEOGarage2.Style.concrete, false) + ImportCEOGarage2.Numbering.Set(ImportCEOGarage2.Part.Garage1, ImportCEOGarage2.Numbering.Level1.style1, false) + ImportCEOGarage2.Lighting.Set(ImportCEOGarage2.Part.Garage1, ImportCEOGarage2.Lighting.style1, true) + + ImportCEOGarage2.Part.Load(ImportCEOGarage2.Part.ModShop) + ImportCEOGarage2.ModShop.Floor.Set(ImportCEOGarage2.ModShop.Floor.default, true) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_import/garage3.lua b/resources/[core]/bob74_ipl/dlc_import/garage3.lua new file mode 100644 index 0000000..8ab7a0c --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_import/garage3.lua @@ -0,0 +1,201 @@ +-- Garage 3: Lom Bank +exports('GetImportCEOGarage3Object', function() + return ImportCEOGarage3 +end) + +ImportCEOGarage3 = { + Part = { + Garage1 = { -- -1581.1120, -567.2450, 85.5000 + interiorId = 255489, + ipl = "imp_sm_13_cargarage_a" + }, + Garage2 = { -- -1568.7390, -562.0455, 85.5000 + interiorId = 255745, + ipl = "imp_sm_13_cargarage_b" + }, + Garage3 = { -- -1563.5570, -574.4314, 85.5000 + interiorId = 256001, + ipl = "imp_sm_13_cargarage_c" + }, + ModShop = { -- -1578.0230, -576.4251, 104.2000 + interiorId = 256257, + ipl = "imp_sm_13_modgarage" + }, + + Load = function(part) + EnableIpl(part.ipl, true) + end, + Remove = function(part) + EnableIpl(part.ipl, false) + end, + Clear = function() + EnableIpl({ + ImportCEOGarage3.Part.Garage1.ipl, + ImportCEOGarage3.Part.Garage2.ipl, + ImportCEOGarage3.Part.Garage3.ipl + }, false) + end, + }, + Style = { + concrete = "garage_decor_01", + plain = "garage_decor_02", + marble = "garage_decor_03", + wooden = "garage_decor_04", + + Set = function(part, style, refresh) + ImportCEOGarage3.Style.Clear(part) + + SetIplPropState(part.interiorId, style, true, refresh) + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage3.Style.concrete, + ImportCEOGarage3.Style.plain, + ImportCEOGarage3.Style.marble, + ImportCEOGarage3.Style.wooden + }, false, true) + end + }, + Numbering = { + none = "", + Level1 = { + style1 = "numbering_style01_n1", + style2 = "numbering_style02_n1", + style3 = "numbering_style03_n1", + style4 = "numbering_style04_n1", + style5 = "numbering_style05_n1", + style6 = "numbering_style06_n1", + style7 = "numbering_style07_n1", + style8 = "numbering_style08_n1", + style9 = "numbering_style09_n1" + }, + Level2 = { + style1 = "numbering_style01_n2", + style2 = "numbering_style02_n2", + style3 = "numbering_style03_n2", + style4 = "numbering_style04_n2", + style5 = "numbering_style05_n2", + style6 = "numbering_style06_n2", + style7 = "numbering_style07_n2", + style8 = "numbering_style08_n2", + style9 = "numbering_style09_n2" + }, + Level3 = { + style1 = "numbering_style01_n3", + style2 = "numbering_style02_n3", + style3 = "numbering_style03_n3", + style4 = "numbering_style04_n3", + style5 = "numbering_style05_n3", + style6 = "numbering_style06_n3", + style7 = "numbering_style07_n3", + style8 = "numbering_style08_n3", + style9 = "numbering_style09_n3" + }, + Set = function(part, num, refresh) + ImportCEOGarage3.Numbering.Clear(part) + + if num ~= nil then + SetIplPropState(part.interiorId, num, true, refresh) + else + if refresh then + RefreshInterior(part.interiorId) + end + end + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage3.Numbering.Level1, + ImportCEOGarage3.Numbering.Level2, + ImportCEOGarage3.Numbering.Level3 + }, false, true) + end + }, + Lighting = { + none = "", + style1 = "lighting_option01", + style2 = "lighting_option02", + style3 = "lighting_option03", + style4 = "lighting_option04", + style5 = "lighting_option05", + style6 = "lighting_option06", + style7 = "lighting_option07", + style8 = "lighting_option08", + style9 = "lighting_option09", + + Set = function(part, light, refresh) + ImportCEOGarage3.Lighting.Clear(part) + + if light ~= nil then + SetIplPropState(part.interiorId, light, true, refresh) + else + if refresh then + RefreshInterior(part.interiorId) + end + end + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage3.Lighting.style1, ImportCEOGarage3.Lighting.style2, ImportCEOGarage3.Lighting.style3, + ImportCEOGarage3.Lighting.style4, ImportCEOGarage3.Lighting.style5, ImportCEOGarage3.Lighting.style6, + ImportCEOGarage3.Lighting.style7, ImportCEOGarage3.Lighting.style8, ImportCEOGarage3.Lighting.style9 + }, false, true) + end + }, + ModShop = { + Floor = { + default = "", + city = "floor_vinyl_01", + seabed = "floor_vinyl_02", + aliens = "floor_vinyl_03", + clouds = "floor_vinyl_04", + money = "floor_vinyl_05", + zebra = "floor_vinyl_06", + blackWhite = "floor_vinyl_07", + barcode = "floor_vinyl_08", + paintbrushBW = "floor_vinyl_09", + grid = "floor_vinyl_10", + splashes = "floor_vinyl_11", + squares = "floor_vinyl_12", + mosaic = "floor_vinyl_13", + paintbrushColor = "floor_vinyl_14", + curvesColor = "floor_vinyl_15", + marbleBrown = "floor_vinyl_16", + marbleBlue = "floor_vinyl_17", + marbleBW = "floor_vinyl_18", + maze = "floor_vinyl_19", + + Set = function(floor, refresh) + ImportCEOGarage3.ModShop.Floor.Clear() + + if floor ~= nil then + SetIplPropState(ImportCEOGarage3.Part.ModShop.interiorId, floor, true, refresh) + else + if refresh then + RefreshInterior(ImportCEOGarage3.Part.ModShop.interiorId) + end + end + end, + Clear = function() + SetIplPropState(ImportCEOGarage3.Part.ModShop.interiorId, { + ImportCEOGarage3.ModShop.Floor.city, ImportCEOGarage3.ModShop.Floor.seabed, ImportCEOGarage3.ModShop.Floor.aliens, + ImportCEOGarage3.ModShop.Floor.clouds, ImportCEOGarage3.ModShop.Floor.money, ImportCEOGarage3.ModShop.Floor.zebra, + ImportCEOGarage3.ModShop.Floor.blackWhite, ImportCEOGarage3.ModShop.Floor.barcode, ImportCEOGarage3.ModShop.Floor.paintbrushBW, + ImportCEOGarage3.ModShop.Floor.grid, ImportCEOGarage3.ModShop.Floor.splashes, ImportCEOGarage3.ModShop.Floor.squares, + ImportCEOGarage3.ModShop.Floor.mosaic, ImportCEOGarage3.ModShop.Floor.paintbrushColor, ImportCEOGarage3.ModShop.Floor.curvesColor, + ImportCEOGarage3.ModShop.Floor.marbleBrown, ImportCEOGarage3.ModShop.Floor.marbleBlue, ImportCEOGarage3.ModShop.Floor.marbleBW, + ImportCEOGarage3.ModShop.Floor.maze + }, false, true) + end + } + }, + + LoadDefault = function() + ImportCEOGarage3.Part.Load(ImportCEOGarage3.Part.Garage1) + ImportCEOGarage3.Style.Set(ImportCEOGarage3.Part.Garage1, ImportCEOGarage3.Style.concrete, false) + ImportCEOGarage3.Numbering.Set(ImportCEOGarage3.Part.Garage1, ImportCEOGarage3.Numbering.Level1.style1, false) + ImportCEOGarage3.Lighting.Set(ImportCEOGarage3.Part.Garage1, ImportCEOGarage3.Lighting.style1, true) + + -- No mod shop since it overlapses CEO office + ImportCEOGarage3.Part.Remove(ImportCEOGarage3.Part.ModShop) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_import/garage4.lua b/resources/[core]/bob74_ipl/dlc_import/garage4.lua new file mode 100644 index 0000000..a0d7f03 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_import/garage4.lua @@ -0,0 +1,204 @@ +-- Garage 4: Maze Bank West +-- Be careful, ImportCEOGarage4.Part.Garage1 and ImportCEOGarage4.Part.Garage3 overlaps with FinanceOffice4 +exports('GetImportCEOGarage4Object', function() + return ImportCEOGarage4 +end) + +ImportCEOGarage4 = { + Part = { + Garage1 = { -- -1388.8400, -478.7402, 56.1000 + interiorId = 256513, + ipl = "imp_sm_15_cargarage_a" + }, + Garage2 = { -- -1388.8600, -478.7574, 48.1000 + interiorId = 256769, + ipl = "imp_sm_15_cargarage_b" + }, + Garage3 = { -- -1374.6820, -474.3586, 56.1000 + interiorId = 257025, + ipl = "imp_sm_15_cargarage_c" + }, + ModShop = { -- -1391.2450, -473.9638, 77.2000 + interiorId = 257281, + ipl = "imp_sm_15_modgarage" + }, + + Load = function(part) + EnableIpl(part.ipl, true) + end, + Remove = function(part) + EnableIpl(part.ipl, false) + end, + Clear = function() + EnableIpl({ + ImportCEOGarage4.Part.Garage1.ipl, + ImportCEOGarage4.Part.Garage2.ipl, + ImportCEOGarage4.Part.Garage3.ipl + }, false) + end + }, + Style = { + concrete = "garage_decor_01", + plain = "garage_decor_02", + marble = "garage_decor_03", + wooden = "garage_decor_04", + + Set = function(part, style, refresh) + ImportCEOGarage4.Style.Clear(part) + + SetIplPropState(part.interiorId, style, true, refresh) + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage4.Style.concrete, + ImportCEOGarage4.Style.plain, + ImportCEOGarage4.Style.marble, + ImportCEOGarage4.Style.wooden + }, false, true) + end + }, + Numbering = { + none = "", + Level1 = { + style1 = "numbering_style01_n1", + style2 = "numbering_style02_n1", + style3 = "numbering_style03_n1", + style4 = "numbering_style04_n1", + style5 = "numbering_style05_n1", + style6 = "numbering_style06_n1", + style7 = "numbering_style07_n1", + style8 = "numbering_style08_n1", + style9 = "numbering_style09_n1" + }, + Level2 = { + style1 = "numbering_style01_n2", + style2 = "numbering_style02_n2", + style3 = "numbering_style03_n2", + style4 = "numbering_style04_n2", + style5 = "numbering_style05_n2", + style6 = "numbering_style06_n2", + style7 = "numbering_style07_n2", + style8 = "numbering_style08_n2", + style9 = "numbering_style09_n2" + }, + Level3 = { + style1 = "numbering_style01_n3", + style2 = "numbering_style02_n3", + style3 = "numbering_style03_n3", + style4 = "numbering_style04_n3", + style5 = "numbering_style05_n3", + style6 = "numbering_style06_n3", + style7 = "numbering_style07_n3", + style8 = "numbering_style08_n3", + style9 = "numbering_style09_n3" + }, + + Set = function(part, num, refresh) + ImportCEOGarage4.Numbering.Clear(part) + + if num ~= nil then + SetIplPropState(part.interiorId, num, true, refresh) + else + if refresh then + RefreshInterior(part.interiorId) + end + end + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage4.Numbering.Level1, + ImportCEOGarage4.Numbering.Level2, + ImportCEOGarage4.Numbering.Level3 + }, false, true) + end + }, + Lighting = { + none = "", + style1 = "lighting_option01", + style2 = "lighting_option02", + style3 = "lighting_option03", + style4 = "lighting_option04", + style5 = "lighting_option05", + style6 = "lighting_option06", + style7 = "lighting_option07", + style8 = "lighting_option08", + style9 = "lighting_option09", + + Set = function(part, light, refresh) + ImportCEOGarage4.Lighting.Clear(part) + + if light ~= nil then + SetIplPropState(part.interiorId, light, true, refresh) + else + if refresh then + RefreshInterior(part.interiorId) + end + end + end, + Clear = function(part) + SetIplPropState(part.interiorId, { + ImportCEOGarage4.Lighting.style1, ImportCEOGarage4.Lighting.style2, ImportCEOGarage4.Lighting.style3, + ImportCEOGarage4.Lighting.style4, ImportCEOGarage4.Lighting.style5, ImportCEOGarage4.Lighting.style6, + ImportCEOGarage4.Lighting.style7, ImportCEOGarage4.Lighting.style8, ImportCEOGarage4.Lighting.style9 + }, false, true) + end + }, + ModShop = { + Floor = { + default = "", + city = "floor_vinyl_01", + seabed = "floor_vinyl_02", + aliens = "floor_vinyl_03", + clouds = "floor_vinyl_04", + money = "floor_vinyl_05", + zebra = "floor_vinyl_06", + blackWhite = "floor_vinyl_07", + barcode = "floor_vinyl_08", + paintbrushBW = "floor_vinyl_09", + grid = "floor_vinyl_10", + splashes = "floor_vinyl_11", + squares = "floor_vinyl_12", + mosaic = "floor_vinyl_13", + paintbrushColor = "floor_vinyl_14", + curvesColor = "floor_vinyl_15", + marbleBrown = "floor_vinyl_16", + marbleBlue = "floor_vinyl_17", + marbleBW = "floor_vinyl_18", + maze = "floor_vinyl_19", + + Set = function(floor, refresh) + ImportCEOGarage4.ModShop.Floor.Clear() + + if floor ~= nil then + SetIplPropState(ImportCEOGarage4.Part.ModShop.interiorId, floor, true, refresh) + else + if refresh then + RefreshInterior(ImportCEOGarage4.Part.ModShop.interiorId) + end + end + end, + Clear = function() + SetIplPropState(ImportCEOGarage4.Part.ModShop.interiorId, { + ImportCEOGarage4.ModShop.Floor.city, ImportCEOGarage4.ModShop.Floor.seabed, ImportCEOGarage4.ModShop.Floor.aliens, + ImportCEOGarage4.ModShop.Floor.clouds, ImportCEOGarage4.ModShop.Floor.money, ImportCEOGarage4.ModShop.Floor.zebra, + ImportCEOGarage4.ModShop.Floor.blackWhite, ImportCEOGarage4.ModShop.Floor.barcode, ImportCEOGarage4.ModShop.Floor.paintbrushBW, + ImportCEOGarage4.ModShop.Floor.grid, ImportCEOGarage4.ModShop.Floor.splashes, ImportCEOGarage4.ModShop.Floor.squares, + ImportCEOGarage4.ModShop.Floor.mosaic, ImportCEOGarage4.ModShop.Floor.paintbrushColor, ImportCEOGarage4.ModShop.Floor.curvesColor, + ImportCEOGarage4.ModShop.Floor.marbleBrown, ImportCEOGarage4.ModShop.Floor.marbleBlue, ImportCEOGarage4.ModShop.Floor.marbleBW, + ImportCEOGarage4.ModShop.Floor.maze + }, false, true) + end + } + }, + + LoadDefault = function() + ImportCEOGarage4.Part.Load(ImportCEOGarage4.Part.Garage2) + + ImportCEOGarage4.Style.Set(ImportCEOGarage4.Part.Garage2, ImportCEOGarage4.Style.concrete, false) + ImportCEOGarage4.Numbering.Set(ImportCEOGarage4.Part.Garage2, ImportCEOGarage4.Numbering.Level1.style1, false) + ImportCEOGarage4.Lighting.Set(ImportCEOGarage4.Part.Garage2, ImportCEOGarage4.Lighting.style1, true) + + ImportCEOGarage4.Part.Load(ImportCEOGarage4.Part.ModShop) + ImportCEOGarage4.ModShop.Floor.Set(ImportCEOGarage4.ModShop.Floor.default, true) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_import/vehicle_warehouse.lua b/resources/[core]/bob74_ipl/dlc_import/vehicle_warehouse.lua new file mode 100644 index 0000000..a8ddd84 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_import/vehicle_warehouse.lua @@ -0,0 +1,96 @@ +-- Vehicle warehouse +-- Upper: 994.5925, -3002.594, -39.64699 +-- Lower: 969.5376, -3000.411, -48.64689 +exports('GetImportVehicleWarehouseObject', function() + return ImportVehicleWarehouse +end) + +ImportVehicleWarehouse = { + Upper = { + interiorId = 252673, + + Ipl = { + Interior = { + ipl = "imp_impexp_interior_placement_interior_1_impexp_intwaremed_milo_", + + Load = function() + EnableIpl(ImportVehicleWarehouse.Upper.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(ImportVehicleWarehouse.Upper.Ipl.Interior.ipl, false) + end + } + }, + Style = { + basic = "basic_style_set", + branded = "branded_style_set", + urban = "urban_style_set", + + Set = function(style, refresh) + ImportVehicleWarehouse.Upper.Style.Clear(false) + + SetIplPropState(ImportVehicleWarehouse.Upper.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(ImportVehicleWarehouse.Upper.interiorId, { + ImportVehicleWarehouse.Upper.Style.basic, + ImportVehicleWarehouse.Upper.Style.branded, + ImportVehicleWarehouse.Upper.Style.urban + }, false, refresh) + end + }, + Details = { + floorHatch = "car_floor_hatch", + doorBlocker = "door_blocker", -- Invisible wall + + Enable = function(details, state, refresh) + SetIplPropState(ImportVehicleWarehouse.Upper.interiorId, details, state, refresh) + end + } + }, + Lower = { + interiorId = 253185, + + Ipl = { + Interior = { + ipl = "imp_impexp_interior_placement_interior_3_impexp_int_02_milo_", + + Load = function() + EnableIpl(ImportVehicleWarehouse.Lower.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(ImportVehicleWarehouse.Lower.Ipl.Interior.ipl, false) + end + } + }, + Details = { + Pumps = { + pump1 = "pump_01", + pump2 = "pump_02", + pump3 = "pump_03", + pump4 = "pump_04", + pump5 = "pump_05", + pump6 = "pump_06", + pump7 = "pump_07", + pump8 = "pump_08" + }, + Enable = function(details, state, refresh) + SetIplPropState(ImportVehicleWarehouse.Lower.interiorId, details, state, refresh) + end + } + }, + + LoadDefault = function() + ImportVehicleWarehouse.Upper.Ipl.Interior.Load() + ImportVehicleWarehouse.Upper.Style.Set(ImportVehicleWarehouse.Upper.Style.branded) + ImportVehicleWarehouse.Upper.Details.Enable(ImportVehicleWarehouse.Upper.Details.floorHatch, true) + ImportVehicleWarehouse.Upper.Details.Enable(ImportVehicleWarehouse.Upper.Details.doorBlocker, false) + + RefreshInterior(ImportVehicleWarehouse.Upper.interiorId) + + ImportVehicleWarehouse.Lower.Ipl.Interior.Load() + ImportVehicleWarehouse.Lower.Details.Enable(ImportVehicleWarehouse.Lower.Details.Pumps, true) + + RefreshInterior(ImportVehicleWarehouse.Lower.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_mercenaries/club.lua b/resources/[core]/bob74_ipl/dlc_mercenaries/club.lua new file mode 100644 index 0000000..a4c3483 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_mercenaries/club.lua @@ -0,0 +1,44 @@ +-- Vinewood Car Club: 1202.407, -3251.251, -50.000 +exports('GetMercenariesClubObject', function() + return MercenariesClub +end) + +MercenariesClub = { + interiorId = 291841, + + Style = { + empty = "entity_set_no_plus", -- The lamps if the podium is not there + club = { + "entity_set_plus", + "entity_set_backdrop_frames", + "entity_set_signs" + }, + + Set = function(style, refresh) + MercenariesClub.Style.Clear(false) + + SetIplPropState(MercenariesClub.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(MercenariesClub.interiorId, { + MercenariesClub.Style.empty, + MercenariesClub.Style.club + }, false, refresh) + end + }, + + Stairs = { + stairs = "entity_set_stairs", + + Enable = function(state, refresh) + SetIplPropState(MercenariesClub.interiorId, MercenariesClub.Stairs.stairs, state, refresh) + end + }, + + LoadDefault = function() + MercenariesClub.Style.Set(MercenariesClub.Style.club, false) + MercenariesClub.Stairs.Enable(true, false) + + RefreshInterior(MercenariesClub.interiorId) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_mercenaries/fixes.lua b/resources/[core]/bob74_ipl/dlc_mercenaries/fixes.lua new file mode 100644 index 0000000..90a8dfb --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_mercenaries/fixes.lua @@ -0,0 +1,16 @@ +-- Map fixes +exports('GetMercenariesFixesObject', function() + return MercenariesFixes +end) + +MercenariesFixes = { + ipl = "m23_1_legacy_fixes", + + Enable = function(state) + EnableIpl(MercenariesFixes.ipl, state) + end, + + LoadDefault = function() + MercenariesFixes.Enable(true) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_mercenaries/lab.lua b/resources/[core]/bob74_ipl/dlc_mercenaries/lab.lua new file mode 100644 index 0000000..aa483b5 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_mercenaries/lab.lua @@ -0,0 +1,28 @@ +-- Fort Zancudo Lab: -1916.119, 3749.719, -100.000 +exports('GetMercenariesLabObject', function() + return MercenariesLab +end) + +MercenariesLab = { + interiorId = 292097, + + Details = { + levers = "entity_set_levers", + crates = "entity_set_crates", + weapons = "entity_set_weapons", + lights = "entity_set_lift_lights", + + Enable = function(details, state, refresh) + SetIplPropState(MercenariesLab.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + MercenariesLab.Details.Enable(MercenariesLab.Details.levers, true, false) + MercenariesLab.Details.Enable(MercenariesLab.Details.crates, true, false) + MercenariesLab.Details.Enable(MercenariesLab.Details.weapons, true, false) + MercenariesLab.Details.Enable(MercenariesLab.Details.lights, true, false) + + RefreshInterior(MercenariesLab.interiorId) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_security/billboards.lua b/resources/[core]/bob74_ipl/dlc_security/billboards.lua new file mode 100644 index 0000000..30f4a12 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_security/billboards.lua @@ -0,0 +1,24 @@ +exports('GetMpSecurityBillboardsObject', function() + return MpSecurityBillboards +end) + +MpSecurityBillboards = { + Ipl = { + Interior = { + ipl = { + 'sf_billboards', + } + }, + + Load = function() + EnableIpl(MpSecurityBillboards.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(MpSecurityBillboards.Ipl.Interior.ipl, false) + end, + }, + + LoadDefault = function() + MpSecurityBillboards.Ipl.Load() + end +} diff --git a/resources/[core]/bob74_ipl/dlc_security/garage.lua b/resources/[core]/bob74_ipl/dlc_security/garage.lua new file mode 100644 index 0000000..342f69e --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_security/garage.lua @@ -0,0 +1,73 @@ +exports('GetMpSecurityGarageObject', function() + return MpSecurityGarage +end) + +MpSecurityGarage = { + InteriorId = 286721, + + Ipl = { + Interior = { + ipl = { + 'sf_int_placement_sec_interior_2_dlc_garage_sec_milo_' + } + }, + + Load = function() + EnableIpl(MpSecurityGarage.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(MpSecurityGarage.Ipl.Interior.ipl, false) + end + }, + Entities = { + Entity_Set_Workshop_Wall = false, + Entity_Set_Wallpaper_01 = false, + Entity_Set_Wallpaper_02 = false, + Entity_Set_Wallpaper_03 = false, + Entity_Set_Wallpaper_04 = false, + Entity_Set_Wallpaper_05 = false, + Entity_Set_Wallpaper_06 = false, + Entity_Set_Wallpaper_07 = true, + Entity_Set_Wallpaper_08 = false, + Entity_Set_Wallpaper_09 = false, + Entity_Set_Art_1 = false, + Entity_Set_Art_2 = false, + Entity_Set_Art_3 = false, + Entity_Set_Art_1_NoMod = false, + Entity_Set_Art_2_NoMod = false, + Entity_Set_Art_3_NoMod = false, + entity_set_tints = true, + Entity_Set_Workshop_Lights = true, + + Set = function(name, state) + for entity, _ in pairs(MpSecurityGarage.Entities) do + if entity == name then + MpSecurityGarage.Entities[entity] = state + MpSecurityGarage.Entities.Clear() + MpSecurityGarage.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(MpSecurityGarage.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(MpSecurityGarage.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(MpSecurityGarage.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(MpSecurityGarage.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + MpSecurityGarage.Ipl.Load() + MpSecurityGarage.Entities.Load() + + RefreshInterior(MpSecurityGarage.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_security/musicrooftop.lua b/resources/[core]/bob74_ipl/dlc_security/musicrooftop.lua new file mode 100644 index 0000000..d3b94e5 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_security/musicrooftop.lua @@ -0,0 +1,24 @@ +exports('GetMpSecurityMusicRoofTopObject', function() + return MpSecurityMusicRoofTop +end) + +MpSecurityMusicRoofTop = { + Ipl = { + Interior = { + ipl = { + 'sf_musicrooftop' + } + }, + + Load = function() + EnableIpl(MpSecurityMusicRoofTop.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(MpSecurityMusicRoofTop.Ipl.Interior.ipl, false) + end + }, + + LoadDefault = function() + MpSecurityMusicRoofTop.Ipl.Load() + end +} diff --git a/resources/[core]/bob74_ipl/dlc_security/office1.lua b/resources/[core]/bob74_ipl/dlc_security/office1.lua new file mode 100644 index 0000000..70659da --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_security/office1.lua @@ -0,0 +1,106 @@ +exports('GetMpSecurityOffice1Object', function() + return MpSecurityOffice1 +end) + +MpSecurityOffice1 = { + InteriorId = 287489, + + Ipl = { + Interior = { + ipl = { + 'sf_fixeroffice_bh1_05' + } + }, + + Load = function() + EnableIpl(MpSecurityOffice1.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(MpSecurityOffice1.Ipl.Interior.ipl, false) + end + }, + Entities = { + Entity_Set_Armoury = false, + Entity_Set_Standard_Office = true, + Entity_Set_Blocker = false, + Entity_Set_Wpaper_1 = false, + Entity_Set_Wpaper_3 = false, + Entity_Set_Wpaper_2 = false, + Entity_Set_Wpaper_4 = false, + Entity_Set_Wpaper_5 = false, + Entity_Set_Wpaper_6 = false, + Entity_Set_Wpaper_7 = false, + Entity_Set_Wpaper_8 = true, + Entity_Set_Wpaper_9 = false, + Entity_Set_Moving = true, + Entity_Set_Tint_AG = true, + Entity_Set_Spare_Seats = true, + Entity_Set_Player_Seats = true, + Entity_Set_Player_Desk = true, + Entity_Set_M_Golf_Intro = true, + Entity_Set_M_Setup = true, + Entity_Set_M_Nightclub = true, + Entity_Set_M_Yacht = true, + Entity_Set_M_Promoter = true, + Entity_Set_M_Limo_Photo = true, + Entity_Set_M_Limo_Wallet = true, + Entity_Set_M_The_Way = true, + Entity_Set_M_Billionaire = true, + Entity_Set_M_Families = true, + Entity_Set_M_Ballas = true, + Entity_Set_M_Hood = true, + Entity_Set_M_Fire_Booth = true, + Entity_Set_M_50 = true, + Entity_Set_M_Taxi = true, + Entity_Set_M_Gone_Golfing = true, + Entity_Set_M_Motel = true, + Entity_Set_M_Construction = true, + Entity_Set_M_Hit_List = true, + Entity_Set_M_Tuner = true, + Entity_Set_M_Attack = true, + Entity_Set_M_Vehicles = true, + Entity_Set_M_Trip_01 = true, + Entity_Set_M_Trip_02 = true, + Entity_Set_M_Trip_03 = true, + Entity_set_disc_01 = true, + Entity_set_disc_02 = false, + Entity_set_disc_03 = false, + Entity_set_disc_04 = false, + Entity_set_disc_05 = false, + Entity_set_disc_06 = false, + Entity_Set_Art_1 = true, + Entity_Set_Art_2 = false, + Entity_Set_Art_3 = false, + + Set = function(name, state) + for entity, _ in pairs(MpSecurityOffice1.Entities) do + if entity == name then + MpSecurityOffice1.Entities[entity] = state + MpSecurityOffice1.Entities.Clear() + MpSecurityOffice1.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(MpSecurityOffice1.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(MpSecurityOffice1.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(MpSecurityOffice1.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(MpSecurityOffice1.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + MpSecurityOffice1.Ipl.Load() + MpSecurityOffice1.Entities.Load() + + RefreshInterior(MpSecurityOffice1.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_security/office2.lua b/resources/[core]/bob74_ipl/dlc_security/office2.lua new file mode 100644 index 0000000..cb44817 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_security/office2.lua @@ -0,0 +1,106 @@ +exports('GetMpSecurityOffice2Object', function() + return MpSecurityOffice2 +end) + +MpSecurityOffice2 = { + InteriorId = 288257, + + Ipl = { + Interior = { + ipl = { + 'sf_fixeroffice_hw1_08' + } + }, + + Load = function() + EnableIpl(MpSecurityOffice2.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(MpSecurityOffice2.Ipl.Interior.ipl, false) + end + }, + Entities = { + Entity_Set_Armoury = true, + Entity_Set_Standard_Office = false, + Entity_Set_Blocker = false, + Entity_Set_Wpaper_1 = false, + Entity_Set_Wpaper_3 = false, + Entity_Set_Wpaper_2 = false, + Entity_Set_Wpaper_4 = false, + Entity_Set_Wpaper_5 = false, + Entity_Set_Wpaper_6 = false, + Entity_Set_Wpaper_7 = false, + Entity_Set_Wpaper_8 = false, + Entity_Set_Wpaper_9 = true, + Entity_Set_Moving = true, + Entity_Set_Tint_AG = true, + Entity_Set_Spare_Seats = true, + Entity_Set_Player_Seats = true, + Entity_Set_Player_Desk = true, + Entity_Set_M_Golf_Intro = true, + Entity_Set_M_Setup = true, + Entity_Set_M_Nightclub = true, + Entity_Set_M_Yacht = true, + Entity_Set_M_Promoter = true, + Entity_Set_M_Limo_Photo = true, + Entity_Set_M_Limo_Wallet = true, + Entity_Set_M_The_Way = true, + Entity_Set_M_Billionaire = true, + Entity_Set_M_Families = true, + Entity_Set_M_Ballas = true, + Entity_Set_M_Hood = true, + Entity_Set_M_Fire_Booth = true, + Entity_Set_M_50 = true, + Entity_Set_M_Taxi = true, + Entity_Set_M_Gone_Golfing = true, + Entity_Set_M_Motel = true, + Entity_Set_M_Construction = true, + Entity_Set_M_Hit_List = true, + Entity_Set_M_Tuner = true, + Entity_Set_M_Attack = true, + Entity_Set_M_Vehicles = true, + Entity_Set_M_Trip_01 = true, + Entity_Set_M_Trip_02 = true, + Entity_Set_M_Trip_03 = true, + Entity_set_disc_01 = false, + Entity_set_disc_02 = true, + Entity_set_disc_03 = false, + Entity_set_disc_04 = false, + Entity_set_disc_05 = false, + Entity_set_disc_06 = false, + Entity_Set_Art_1 = false, + Entity_Set_Art_2 = true, + Entity_Set_Art_3 = false, + + Set = function(name, state) + for entity, _ in pairs(MpSecurityOffice2.Entities) do + if entity == name then + MpSecurityOffice2.Entities[entity] = state + MpSecurityOffice2.Entities.Clear() + MpSecurityOffice2.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(MpSecurityOffice2.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(MpSecurityOffice2.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(MpSecurityOffice2.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(MpSecurityOffice2.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + MpSecurityOffice2.Ipl.Load() + + MpSecurityOffice2.Entities.Load() + RefreshInterior(MpSecurityOffice2.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_security/office3.lua b/resources/[core]/bob74_ipl/dlc_security/office3.lua new file mode 100644 index 0000000..401ad4c --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_security/office3.lua @@ -0,0 +1,105 @@ +exports('GetMpSecurityOffice3Object', function() + return MpSecurityOffice3 +end) + +MpSecurityOffice3 = { + InteriorId = 288001, + + Ipl = { + Interior = { + ipl = { + 'sf_fixeroffice_kt1_05' + } + }, + Load = function() + EnableIpl(MpSecurityOffice3.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(MpSecurityOffice3.Ipl.Interior.ipl, false) + end + }, + Entities = { + Entity_Set_Armoury = false, + Entity_Set_Standard_Office = true, + Entity_Set_Blocker = false, + Entity_Set_Wpaper_1 = false, + Entity_Set_Wpaper_3 = false, + Entity_Set_Wpaper_2 = true, + Entity_Set_Wpaper_4 = false, + Entity_Set_Wpaper_5 = false, + Entity_Set_Wpaper_6 = false, + Entity_Set_Wpaper_7 = false, + Entity_Set_Wpaper_8 = false, + Entity_Set_Wpaper_9 = false, + Entity_Set_Moving = true, + Entity_Set_Tint_AG = true, + Entity_Set_Spare_Seats = true, + Entity_Set_Player_Seats = true, + Entity_Set_Player_Desk = true, + Entity_Set_M_Golf_Intro = true, + Entity_Set_M_Setup = true, + Entity_Set_M_Nightclub = true, + Entity_Set_M_Yacht = true, + Entity_Set_M_Promoter = true, + Entity_Set_M_Limo_Photo = true, + Entity_Set_M_Limo_Wallet = true, + Entity_Set_M_The_Way = true, + Entity_Set_M_Billionaire = true, + Entity_Set_M_Families = true, + Entity_Set_M_Ballas = true, + Entity_Set_M_Hood = true, + Entity_Set_M_Fire_Booth = true, + Entity_Set_M_50 = true, + Entity_Set_M_Taxi = true, + Entity_Set_M_Gone_Golfing = true, + Entity_Set_M_Motel = true, + Entity_Set_M_Construction = true, + Entity_Set_M_Hit_List = true, + Entity_Set_M_Tuner = true, + Entity_Set_M_Attack = true, + Entity_Set_M_Vehicles = true, + Entity_Set_M_Trip_01 = true, + Entity_Set_M_Trip_02 = true, + Entity_Set_M_Trip_03 = true, + Entity_set_disc_01 = false, + Entity_set_disc_02 = true, + Entity_set_disc_03 = false, + Entity_set_disc_04 = false, + Entity_set_disc_05 = false, + Entity_set_disc_06 = false, + Entity_Set_Art_1 = false, + Entity_Set_Art_2 = false, + Entity_Set_Art_3 = true, + + Set = function(name, state) + for entity, _ in pairs(MpSecurityOffice3.Entities) do + if entity == name then + MpSecurityOffice3.Entities[entity] = state + MpSecurityOffice3.Entities.Clear() + MpSecurityOffice3.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(MpSecurityOffice3.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(MpSecurityOffice3.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(MpSecurityOffice3.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(MpSecurityOffice3.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + MpSecurityOffice3.Ipl.Load() + MpSecurityOffice3.Entities.Load() + + RefreshInterior(MpSecurityOffice3.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_security/office4.lua b/resources/[core]/bob74_ipl/dlc_security/office4.lua new file mode 100644 index 0000000..86ce6d9 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_security/office4.lua @@ -0,0 +1,106 @@ +exports('GetMpSecurityOffice4Object', function() + return MpSecurityOffice4 +end) + +MpSecurityOffice4 = { + InteriorId = 287745, + + Ipl = { + Interior = { + ipl = { + 'sf_fixeroffice_kt1_08' + } + }, + + Load = function() + EnableIpl(MpSecurityOffice4.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(MpSecurityOffice4.Ipl.Interior.ipl, false) + end, + }, + Entities = { + Entity_Set_Armoury = true, + Entity_Set_Standard_Office = false, + Entity_Set_Blocker = false, + Entity_Set_Wpaper_1 = false, + Entity_Set_Wpaper_3 = true, + Entity_Set_Wpaper_2 = false, + Entity_Set_Wpaper_4 = false, + Entity_Set_Wpaper_5 = false, + Entity_Set_Wpaper_6 = false, + Entity_Set_Wpaper_7 = false, + Entity_Set_Wpaper_8 = false, + Entity_Set_Wpaper_9 = false, + Entity_Set_Moving = true, + Entity_Set_Tint_AG = true, + Entity_Set_Spare_Seats = true, + Entity_Set_Player_Seats = true, + Entity_Set_Player_Desk = true, + Entity_Set_M_Golf_Intro = true, + Entity_Set_M_Setup = true, + Entity_Set_M_Nightclub = true, + Entity_Set_M_Yacht = true, + Entity_Set_M_Promoter = true, + Entity_Set_M_Limo_Photo = true, + Entity_Set_M_Limo_Wallet = true, + Entity_Set_M_The_Way = true, + Entity_Set_M_Billionaire = true, + Entity_Set_M_Families = true, + Entity_Set_M_Ballas = true, + Entity_Set_M_Hood = true, + Entity_Set_M_Fire_Booth = true, + Entity_Set_M_50 = true, + Entity_Set_M_Taxi = true, + Entity_Set_M_Gone_Golfing = true, + Entity_Set_M_Motel = true, + Entity_Set_M_Construction = true, + Entity_Set_M_Hit_List = true, + Entity_Set_M_Tuner = true, + Entity_Set_M_Attack = true, + Entity_Set_M_Vehicles = true, + Entity_Set_M_Trip_01 = true, + Entity_Set_M_Trip_02 = true, + Entity_Set_M_Trip_03 = true, + Entity_set_disc_01 = false, + Entity_set_disc_02 = false, + Entity_set_disc_03 = false, + Entity_set_disc_04 = false, + Entity_set_disc_05 = true, + Entity_set_disc_06 = false, + Entity_Set_Art_1 = true, + Entity_Set_Art_2 = false, + Entity_Set_Art_3 = false, + + Set = function(name, state) + for entity, _ in pairs(MpSecurityOffice4.Entities) do + if entity == name then + MpSecurityOffice4.Entities[entity] = state + MpSecurityOffice4.Entities.Clear() + MpSecurityOffice4.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(MpSecurityOffice4.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(MpSecurityOffice4.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(MpSecurityOffice4.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(MpSecurityOffice4.InteriorId, entity) + end + end + end, + }, + + LoadDefault = function() + MpSecurityOffice4.Ipl.Load() + MpSecurityOffice4.Entities.Load() + + RefreshInterior(MpSecurityOffice4.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_security/studio.lua b/resources/[core]/bob74_ipl/dlc_security/studio.lua new file mode 100644 index 0000000..de33322 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_security/studio.lua @@ -0,0 +1,60 @@ +exports('GetMpSecurityStudioObject', function() + return MpSecurityStudio +end) + +MpSecurityStudio = { + InteriorId = 286977, + + Ipl = { + Interior = { + ipl = { + 'sf_int_placement_sec_interior_1_dlc_studio_sec_milo_ ' + } + }, + + Load = function() + EnableIpl(MpSecurityStudio.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(MpSecurityStudio.Ipl.Interior.ipl, false) + end, + }, + Entities = { + Entity_Set_FIX_STU_EXT_P3A1 = false, + Entity_Set_FIX_TRIP1_INT_P2 = false, + Entity_Set_FIX_STU_EXT_P1 = false, + Entity_Set_Fire = true, + entity_set_default = true, + + Set = function(name, state) + for entity, _ in pairs(MpSecurityStudio.Entities) do + if entity == name then + MpSecurityStudio.Entities[entity] = state + MpSecurityStudio.Entities.Clear() + MpSecurityStudio.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(MpSecurityStudio.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(MpSecurityStudio.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(MpSecurityStudio.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(MpSecurityStudio.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + MpSecurityStudio.Ipl.Load() + MpSecurityStudio.Entities.Load() + + RefreshInterior(MpSecurityStudio.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_smuggler/hangar.lua b/resources/[core]/bob74_ipl/dlc_smuggler/hangar.lua new file mode 100644 index 0000000..8dd37d2 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_smuggler/hangar.lua @@ -0,0 +1,333 @@ +-- SmugglerHangar: -1267.0 -3013.135 -49.5 +exports('GetSmugglerHangarObject', function() + return SmugglerHangar +end) + +SmugglerHangar = { + interiorId = 260353, + + Ipl = { + Interior = { + ipl = "sm_smugdlc_interior_placement_interior_0_smugdlc_int_01_milo_", + + Load = function() + EnableIpl(SmugglerHangar.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(SmugglerHangar.Ipl.Interior.ipl, false) + end + } + }, + Colors = { + colorSet1 = 1, -- sable, red, gray + colorSet2 = 2, -- white, blue, gray + colorSet3 = 3, -- gray, orange, blue + colorSet4 = 4, -- gray, blue, orange + colorSet5 = 5, -- gray, light gray, red + colorSet6 = 6, -- yellow, gray, light gray + colorSet7 = 7, -- light Black and white + colorSet8 = 8, -- dark Black and white + colorSet9 = 9 -- sable and gray + }, + Walls = { + default = "set_tint_shell", + + SetColor = function(color, refresh) + SetIplPropState(SmugglerHangar.interiorId, SmugglerHangar.Walls.default, true, refresh) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, SmugglerHangar.Walls.default, color) + end, + }, + Floor = { + Style = { + raw = "set_floor_1", + plain = "set_floor_2", + + Set = function(floor, refresh) + SmugglerHangar.Floor.Style.Clear(false) + + SetIplPropState(SmugglerHangar.interiorId, floor, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, { + SmugglerHangar.Floor.Style.raw, + SmugglerHangar.Floor.Style.plain + }, false, refresh) + end + }, + Decals = { + decal1 = "set_floor_decal_1", + decal2 = "set_floor_decal_2", + decal4 = "set_floor_decal_3", + decal3 = "set_floor_decal_4", + decal5 = "set_floor_decal_5", + decal6 = "set_floor_decal_6", + decal7 = "set_floor_decal_7", + decal8 = "set_floor_decal_8", + decal9 = "set_floor_decal_9", + + Set = function(decal, color, refresh) + if color == nil then + color = 1 + end + + SmugglerHangar.Floor.Decals.Clear(false) + + SetIplPropState(SmugglerHangar.interiorId, decal, true, refresh) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, decal, color) + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, { + SmugglerHangar.Floor.Decals.decal1, + SmugglerHangar.Floor.Decals.decal2, + SmugglerHangar.Floor.Decals.decal3, + SmugglerHangar.Floor.Decals.decal4, + SmugglerHangar.Floor.Decals.decal5, + SmugglerHangar.Floor.Decals.decal6, + SmugglerHangar.Floor.Decals.decal7, + SmugglerHangar.Floor.Decals.decal8, + SmugglerHangar.Floor.Decals.decal9 + }, false, refresh) + end + } + }, + Cranes = { + on = "set_crane_tint", + off = "", + + Set = function(crane, color, refresh) + SmugglerHangar.Cranes.Clear() + + if crane ~= "" then + SetIplPropState(SmugglerHangar.interiorId, crane, true, refresh) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, crane, color) + else + if refresh then + RefreshInterior(SmugglerHangar.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, SmugglerHangar.Cranes.default, false, refresh) + end + }, + ModArea = { + on = "set_modarea", + off = "", + + Set = function(mod, color, refresh) + if color == nil then + color = 1 + end + + SmugglerHangar.ModArea.Clear(false) + + if mod ~= "" then + SetIplPropState(SmugglerHangar.interiorId, mod, true, refresh) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, mod, color) + else + if refresh then + RefreshInterior(SmugglerHangar.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, SmugglerHangar.ModArea.mod, false, refresh) + end + }, + Office = { + basic = "set_office_basic", + modern = "set_office_modern", + traditional = "set_office_traditional", + + Set = function(office, refresh) + SmugglerHangar.Office.Clear(false) + + SetIplPropState(SmugglerHangar.interiorId, office, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, { + SmugglerHangar.Office.basic, + SmugglerHangar.Office.modern, + SmugglerHangar.Office.traditional + }, false, refresh) + end + }, + Bedroom = { + Style = { + none = "", + modern = { + "set_bedroom_modern", + "set_bedroom_tint" + }, + traditional = { + "set_bedroom_traditional", + "set_bedroom_tint" + }, + + Set = function(bed, color, refresh) + if color == nil then + color = 1 + end + + SmugglerHangar.Bedroom.Style.Clear(false) + + if bed ~= "" then + SetIplPropState(SmugglerHangar.interiorId, bed, true, refresh) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, "set_bedroom_tint", color) + else + if refresh then + RefreshInterior(SmugglerHangar.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, { + SmugglerHangar.Bedroom.Style.modern, + SmugglerHangar.Bedroom.Style.traditional + }, false, refresh) + end + }, + Blinds = { + none = "", + opened = "set_bedroom_blinds_open", + closed = "set_bedroom_blinds_closed", + + Set = function(blinds, refresh) + SmugglerHangar.Bedroom.Blinds.Clear(false) + + if blinds ~= "" then + SetIplPropState(SmugglerHangar.interiorId, blinds, true, refresh) + else + if refresh then + RefreshInterior(SmugglerHangar.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, { + SmugglerHangar.Bedroom.Blinds.opened, + SmugglerHangar.Bedroom.Blinds.closed + }, false, refresh) + end + } + }, + Lighting = { + FakeLights = { + none = "", + yellow = 2, + blue = 1, + white = 0, + + Set = function(light, refresh) + SmugglerHangar.Lighting.FakeLights.Clear(false) + + if light ~= "" then + SetIplPropState(SmugglerHangar.interiorId, "set_lighting_tint_props", true, refresh) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, "set_lighting_tint_props", light) + else + if refresh then + RefreshInterior(SmugglerHangar.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, "set_lighting_tint_props", false, refresh) + end + }, + Ceiling = { + none = "", + yellow = "set_lighting_hangar_a", + blue = "set_lighting_hangar_b", + white = "set_lighting_hangar_c", + + Set = function(light, refresh) + SmugglerHangar.Lighting.Ceiling.Clear(false) + + if light ~= "" then + SetIplPropState(SmugglerHangar.interiorId, light, true, refresh) + else + if refresh then + RefreshInterior(SmugglerHangar.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, { + SmugglerHangar.Lighting.Ceiling.yellow, + SmugglerHangar.Lighting.Ceiling.blue, + SmugglerHangar.Lighting.Ceiling.white + }, false, refresh) + end + }, + Walls = { + none = "", + neutral = "set_lighting_wall_neutral", + blue = "set_lighting_wall_tint01", + orange = "set_lighting_wall_tint02", + lightYellow = "set_lighting_wall_tint03", + lightYellow2 = "set_lighting_wall_tint04", + dimmed = "set_lighting_wall_tint05", + strongYellow = "set_lighting_wall_tint06", + white = "set_lighting_wall_tint07", + lightGreen = "set_lighting_wall_tint08", + yellow = "set_lighting_wall_tint09", + + Set = function(light, refresh) + SmugglerHangar.Lighting.Walls.Clear(false) + + if light ~= "" then + SetIplPropState(SmugglerHangar.interiorId, light, true, refresh) + else + if refresh then + RefreshInterior(SmugglerHangar.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(SmugglerHangar.interiorId, { + SmugglerHangar.Lighting.Walls.neutral, + SmugglerHangar.Lighting.Walls.blue, + SmugglerHangar.Lighting.Walls.orange, + SmugglerHangar.Lighting.Walls.lightYellow, + SmugglerHangar.Lighting.Walls.lightYellow2, + SmugglerHangar.Lighting.Walls.dimmed, + SmugglerHangar.Lighting.Walls.strongYellow, + SmugglerHangar.Lighting.Walls.white, + SmugglerHangar.Lighting.Walls.lightGreen, + SmugglerHangar.Lighting.Walls.yellow + }, false, refresh) + end + } + }, + Details = { + bedroomClutter = "set_bedroom_clutter", + + Enable = function(details, state, refresh) + SetIplPropState(SmugglerHangar.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + SmugglerHangar.Ipl.Interior.Load() + + SmugglerHangar.Walls.SetColor(SmugglerHangar.Colors.colorSet1) + SmugglerHangar.Cranes.Set(SmugglerHangar.Cranes.on, SmugglerHangar.Colors.colorSet1) + SmugglerHangar.Floor.Style.Set(SmugglerHangar.Floor.Style.plain) + SmugglerHangar.Floor.Decals.Set(SmugglerHangar.Floor.Decals.decal1, SmugglerHangar.Colors.colorSet1) + + SmugglerHangar.Lighting.Ceiling.Set(SmugglerHangar.Lighting.Ceiling.yellow) + SmugglerHangar.Lighting.Walls.Set(SmugglerHangar.Lighting.Walls.neutral) + SmugglerHangar.Lighting.FakeLights.Set(SmugglerHangar.Lighting.FakeLights.yellow) + + SmugglerHangar.ModArea.Set(SmugglerHangar.ModArea.on, SmugglerHangar.Colors.colorSet1) + + SmugglerHangar.Office.Set(SmugglerHangar.Office.basic) + + SmugglerHangar.Bedroom.Style.Set(SmugglerHangar.Bedroom.Style.modern, SmugglerHangar.Colors.colorSet1) + SmugglerHangar.Bedroom.Blinds.Set(SmugglerHangar.Bedroom.Blinds.opened) + + SmugglerHangar.Details.Enable(SmugglerHangar.Details.bedroomClutter, false) + + RefreshInterior(SmugglerHangar.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_summer/base.lua b/resources/[core]/bob74_ipl/dlc_summer/base.lua new file mode 100644 index 0000000..b146580 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_summer/base.lua @@ -0,0 +1,4 @@ +CreateThread(function() + RequestIpl("m24_1_legacyfixes") + RequestIpl("m24_1_pizzasigns") +end) \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_summer/carrier.lua b/resources/[core]/bob74_ipl/dlc_summer/carrier.lua new file mode 100644 index 0000000..953ea87 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_summer/carrier.lua @@ -0,0 +1,25 @@ +-- Aircraft carrier: -3208.03, 3954.54, 14.0 +exports('GetSummerCarrierObject', function() + return SummerCarrier +end) + +SummerCarrier = { + ipl = { + "m24_1_carrier", + "m24_1_carrier_int1", + "m24_1_carrier_int2", + "m24_1_carrier_int3", + "m24_1_carrier_int4", + "m24_1_carrier_int5", + "m24_1_carrier_int6", + "m24_1_carrier_ladders" + }, + + Enable = function(state) + EnableIpl(SummerCarrier.ipl, state) + end, + + LoadDefault = function() + SummerCarrier.Enable(true) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_summer/office.lua b/resources/[core]/bob74_ipl/dlc_summer/office.lua new file mode 100644 index 0000000..d22ce8d --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_summer/office.lua @@ -0,0 +1,114 @@ +-- Bail office: 565.886, -2688.761, -50.0 +exports('GetSummerOfficeObject', function() + return SummerOffice +end) + +SummerOffice = { + interiorId = 295425, + + Ipl = { + Exterior = { + ipl = { + "m24_1_bailoffice_davis", + "m24_1_bailoffice_delperro", + "m24_1_bailoffice_missionrow", + "m24_1_bailoffice_paletobay", + "m24_1_bailoffice_vinewood" + }, + + Load = function() + EnableIpl(SummerOffice.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(SummerOffice.Ipl.Exterior.ipl, false) + end + } + }, + + Style = { + vintage = "set_style_01", + patterns = "set_style_02", + teak = "set_style_03", + + Set = function(style, refresh) + SummerOffice.Style.Clear(false) + + SetIplPropState(SummerOffice.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(SummerOffice.interiorId, { + SummerOffice.Style.vintage, + SummerOffice.Style.patterns, + SummerOffice.Style.teak + }, false, refresh) + end + }, + + Desk = { + files = "set_no_staff", + computers = "set_staff_upgrade", + + Set = function(style, refresh) + SummerOffice.Desk.Clear(false) + + SetIplPropState(SummerOffice.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(SummerOffice.interiorId, { + SummerOffice.Desk.files, + SummerOffice.Desk.computers + }, false, refresh) + end + }, + + Gunsafe = { + cabinet = "set_gunsafe_off", + gunsafe = "set_gunsafe_on", + + Set = function(style, refresh) + SummerOffice.Gunsafe.Clear(false) + + SetIplPropState(SummerOffice.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(SummerOffice.interiorId, { + SummerOffice.Gunsafe.cabinet, + SummerOffice.Gunsafe.gunsafe + }, false, refresh) + end + }, + + Trophy = { + plaque = "set_trophy_10x", + badge = "set_trophy_24x", + handcuffs = "set_trophy_100x", + + Enable = function(trophy, state, refresh) + SetIplPropState(SummerOffice.interiorId, trophy, state, refresh) + end + }, + + Plant = { + plant = "set_new_plant", + + Enable = function(state, refresh) + SetIplPropState(SummerOffice.interiorId, SummerOffice.Plant.plant, state, refresh) + end + }, + + LoadDefault = function() + SummerOffice.Ipl.Exterior.Load() + + SummerOffice.Style.Set(SummerOffice.Style.teak, false) + SummerOffice.Desk.Set(SummerOffice.Desk.files, false) + SummerOffice.Gunsafe.Set(SummerOffice.Gunsafe.cabinet, false) + + SummerOffice.Trophy.Enable(SummerOffice.Trophy.plaque, true, false) + SummerOffice.Trophy.Enable(SummerOffice.Trophy.badge, true, false) + SummerOffice.Trophy.Enable(SummerOffice.Trophy.handcuffs, true, false) + + SummerOffice.Plant.Enable(true, false) + + RefreshInterior(SummerOffice.interiorId) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/dlc_tuner/garage.lua b/resources/[core]/bob74_ipl/dlc_tuner/garage.lua new file mode 100644 index 0000000..125f0f8 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_tuner/garage.lua @@ -0,0 +1,94 @@ +exports('GetTunerGarageObject', function() + return TunerGarage +end) + +TunerGarage = { + InteriorId = 285953, + + Ipl = { + Exterior = { + ipl = { + 'tr_tuner_shop_burton', + 'tr_tuner_shop_mesa', + 'tr_tuner_shop_mission', + 'tr_tuner_shop_rancho', + 'tr_tuner_shop_strawberry' + } + }, + + Load = function() + EnableIpl(TunerGarage.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(TunerGarage.Ipl.Exterior.ipl, false) + end, + }, + Entities = { + entity_set_bedroom = true, + entity_set_bedroom_empty = false, + entity_set_bombs = true, + entity_set_box_clutter = false, + entity_set_cabinets = false, + entity_set_car_lift_cutscene = true, + entity_set_car_lift_default = true, + entity_set_car_lift_purchase = true, + entity_set_chalkboard = false, + entity_set_container = false, + entity_set_cut_seats = false, + entity_set_def_table = false, + entity_set_drive = true, + entity_set_ecu = true, + entity_set_IAA = true, + entity_set_jammers = true, + entity_set_laptop = true, + entity_set_lightbox = true, + entity_set_methLab = false, + entity_set_plate = true, + entity_set_scope = true, + entity_set_style_1 = false, + entity_set_style_2 = false, + entity_set_style_3 = false, + entity_set_style_4 = false, + entity_set_style_5 = false, + entity_set_style_6 = false, + entity_set_style_7 = false, + entity_set_style_8 = false, + entity_set_style_9 = true, + entity_set_table = false, + entity_set_thermal = true, + entity_set_tints = true, + entity_set_train = true, + entity_set_virus = true, + + Set = function(name, state) + for entity, _ in pairs(TunerGarage.Entities) do + if entity == name then + TunerGarage.Entities[entity] = state + TunerGarage.Entities.Clear() + TunerGarage.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(TunerGarage.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(TunerGarage.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(TunerGarage.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(TunerGarage.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + TunerGarage.Ipl.Load() + TunerGarage.Entities.Load() + + RefreshInterior(TunerGarage.InteriorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_tuner/meetup.lua b/resources/[core]/bob74_ipl/dlc_tuner/meetup.lua new file mode 100644 index 0000000..cb0ae19 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_tuner/meetup.lua @@ -0,0 +1,65 @@ +-- Los Santos Car Meet: -2000.0, 1113.211, -25.36243 +exports('GetTunerMeetupObject', function() + return TunerMeetup +end) + +TunerMeetup = { + InteriorId = 285697, + + Ipl = { + Exterior = { + ipl = { + 'tr_tuner_meetup', + 'tr_tuner_race_line' + } + }, + + Load = function() + EnableIpl(TunerMeetup.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(TunerMeetup.Ipl.Exterior.ipl, false) + end + }, + Entities = { + entity_set_meet_crew = true, + entity_set_meet_lights = true, + entity_set_meet_lights_cheap = false, + entity_set_player = true, + entity_set_test_crew = false, + entity_set_test_lights = true, + entity_set_test_lights_cheap = false, + entity_set_time_trial = true, + + Set = function(name, state) + for entity, _ in pairs(TunerMeetup.Entities) do + if entity == name then + TunerMeetup.Entities[entity] = state + TunerMeetup.Entities.Clear() + TunerMeetup.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(TunerMeetup.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(TunerMeetup.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(TunerMeetup.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(TunerMeetup.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + TunerMeetup.Ipl.Load() + TunerMeetup.Entities.Load() + + RefreshInterior(TunerMeetup.InteriorId) + end +} diff --git a/resources/[core]/bob74_ipl/dlc_tuner/methlab.lua b/resources/[core]/bob74_ipl/dlc_tuner/methlab.lua new file mode 100644 index 0000000..2e74e26 --- /dev/null +++ b/resources/[core]/bob74_ipl/dlc_tuner/methlab.lua @@ -0,0 +1,42 @@ +exports('GetTunerMethLabObject', function() + return TunerMethLab +end) + +TunerMethLab = { + InteriorId = 284673, + + Entities = { + tintable_walls = true, + + Set = function(name, state) + for entity, _ in pairs(TunerMethLab.Entities) do + if entity == name then + TunerMethLab.Entities[entity] = state + TunerMethLab.Entities.Clear() + TunerMethLab.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(TunerMethLab.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(TunerMethLab.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(TunerMethLab.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(TunerMethLab.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + TunerMethLab.Entities.Load() + + SetInteriorEntitySetColor(TunerMethLab.InteriorId, TunerMethLab.Entities.tintable_walls, 3) + RefreshInterior(TunerMethLab.InteriorId) + end +} diff --git a/resources/[core]/bob74_ipl/fxmanifest.lua b/resources/[core]/bob74_ipl/fxmanifest.lua new file mode 100644 index 0000000..729b354 --- /dev/null +++ b/resources/[core]/bob74_ipl/fxmanifest.lua @@ -0,0 +1,157 @@ +fx_version 'cerulean' +game 'gta5' + +author 'Bob_74' +description 'Load and customize your map' +version '2.3.2' + +lua54 "yes" + +client_scripts { + "lib/common.lua" + , "lib/observers/interiorIdObserver.lua" + , "lib/observers/officeSafeDoorHandler.lua" + , "lib/observers/officeCullHandler.lua" + , "client.lua" + + -- GTA V + , "gtav/base.lua" -- Base IPLs to fix holes + , "gtav/ammunations.lua" + , "gtav/bahama.lua" + , "gtav/cargoship.lua" + , "gtav/floyd.lua" + , "gtav/franklin.lua" + , "gtav/franklin_aunt.lua" + , "gtav/graffitis.lua" + , "gtav/pillbox_hospital.lua" + , "gtav/lester_factory.lua" + , "gtav/michael.lua" + , "gtav/north_yankton.lua" + , "gtav/red_carpet.lua" + , "gtav/simeon.lua" + , "gtav/stripclub.lua" + , "gtav/trevors_trailer.lua" + , "gtav/ufo.lua" + , "gtav/zancudo_gates.lua" + + -- GTA Online + , "gta_online/apartment_hi_1.lua" + , "gta_online/apartment_hi_2.lua" + , "gta_online/house_hi_1.lua" + , "gta_online/house_hi_2.lua" + , "gta_online/house_hi_3.lua" + , "gta_online/house_hi_4.lua" + , "gta_online/house_hi_5.lua" + , "gta_online/house_hi_6.lua" + , "gta_online/house_hi_7.lua" + , "gta_online/house_hi_8.lua" + , "gta_online/house_mid_1.lua" + , "gta_online/house_low_1.lua" + + -- DLC High Life + , "dlc_high_life/apartment1.lua" + , "dlc_high_life/apartment2.lua" + , "dlc_high_life/apartment3.lua" + , "dlc_high_life/apartment4.lua" + , "dlc_high_life/apartment5.lua" + , "dlc_high_life/apartment6.lua" + + -- DLC Heists + , "dlc_heists/carrier.lua" + , "dlc_heists/yacht.lua" + + -- DLC Executives & Other Criminals + , "dlc_executive/apartment1.lua" + , "dlc_executive/apartment2.lua" + , "dlc_executive/apartment3.lua" + + -- DLC Finance & Felony + , "dlc_finance/office1.lua" + , "dlc_finance/office2.lua" + , "dlc_finance/office3.lua" + , "dlc_finance/office4.lua" + , "dlc_finance/organization.lua" + + -- DLC Bikers + , "dlc_bikers/cocaine.lua" + , "dlc_bikers/counterfeit_cash.lua" + , "dlc_bikers/document_forgery.lua" + , "dlc_bikers/meth.lua" + , "dlc_bikers/weed.lua" + , "dlc_bikers/clubhouse1.lua" + , "dlc_bikers/clubhouse2.lua" + , "dlc_bikers/gang.lua" + + -- DLC Import/Export + , "dlc_import/garage1.lua" + , "dlc_import/garage2.lua" + , "dlc_import/garage3.lua" + , "dlc_import/garage4.lua" + , "dlc_import/vehicle_warehouse.lua" + + -- DLC Gunrunning + , "dlc_gunrunning/bunkers.lua" + , "dlc_gunrunning/yacht.lua" + + -- DLC Smuggler's Run + , "dlc_smuggler/hangar.lua" + + -- DLC Doomsday Heist + , "dlc_doomsday/facility.lua" + + -- DLC After Hours + , "dlc_afterhours/nightclubs.lua" + + -- DLC Diamond Casino (Requires forced build 2060 or higher) + , "dlc_casino/casino.lua" + , "dlc_casino/penthouse.lua" + + -- DLC Cayo Perico Heist (Requires forced build 2189 or higher) + , "dlc_cayoperico/base.lua" + , "dlc_cayoperico/nightclub.lua" + , "dlc_cayoperico/submarine.lua" + + -- DLC Tuners (Requires forced build 2372 or higher) + , "dlc_tuner/garage.lua" + , "dlc_tuner/meetup.lua" + , "dlc_tuner/methlab.lua" + + -- DLC The Contract (Requires forced build 2545 or higher) + , "dlc_security/studio.lua" + , "dlc_security/billboards.lua" + , "dlc_security/musicrooftop.lua" + , "dlc_security/garage.lua" + , "dlc_security/office1.lua" + , "dlc_security/office2.lua" + , "dlc_security/office3.lua" + , "dlc_security/office4.lua" + + -- DLC The Criminal Enterprises (Requires forced build 2699 or higher) + , "gta_mpsum2/simeonfix.lua" + , "gta_mpsum2/vehicle_warehouse.lua" + , "gta_mpsum2/warehouse.lua" + + -- DLC Los Santos Drug Wars (Requires forced build 2802 or higher) + , "dlc_drugwars/base.lua" + , "dlc_drugwars/freakshop.lua" + , "dlc_drugwars/garage.lua" + , "dlc_drugwars/lab.lua" + , "dlc_drugwars/traincrash.lua" + + -- DLC San Andreas Mercenaries (Requires forced build 2944 or higher) + , "dlc_mercenaries/club.lua" + , "dlc_mercenaries/lab.lua" + , "dlc_mercenaries/fixes.lua" + + -- DLC The Chop Shop (Requires forced build 3095 or higher) + , "dlc_chopshop/base.lua" + , "dlc_chopshop/cargoship.lua" + , "dlc_chopshop/cartel_garage.lua" + , "dlc_chopshop/lifeguard.lua" + , "dlc_chopshop/salvage.lua" + + -- DLC Bottom Dollar Bounties (Requires forced build 3258 or higher) + , "dlc_summer/base.lua" + , "dlc_summer/carrier.lua" + , "dlc_summer/office.lua" +} diff --git a/resources/[core]/bob74_ipl/gta_mpsum2/simeonfix.lua b/resources/[core]/bob74_ipl/gta_mpsum2/simeonfix.lua new file mode 100644 index 0000000..346bbee --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_mpsum2/simeonfix.lua @@ -0,0 +1,55 @@ +exports('GetCriminalEnterpriseSmeonFixObject', function() + return CriminalEnterpriseSmeonFix +end) + +CriminalEnterpriseSmeonFix = { + InteriorId = 7170, + + Ipl = { + Interior = { + ipl = { + 'reh_simeonfix', + } + }, + + Load = function() + EnableIpl(CriminalEnterpriseSmeonFix.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(CriminalEnterpriseSmeonFix.Ipl.Interior.ipl, false) + end + }, + Entities = { + + Set = function(name, state) + for entity, _ in pairs(CriminalEnterpriseSmeonFix.Entities) do + if entity == name then + CriminalEnterpriseSmeonFix.Entities[entity] = state + CriminalEnterpriseSmeonFix.Entities.Clear() + CriminalEnterpriseSmeonFix.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(CriminalEnterpriseSmeonFix.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(CriminalEnterpriseSmeonFix.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(CriminalEnterpriseSmeonFix.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(CriminalEnterpriseSmeonFix.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + CriminalEnterpriseSmeonFix.Ipl.Load() + CriminalEnterpriseSmeonFix.Entities.Load() + + RefreshInterior(CriminalEnterpriseSmeonFix.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_mpsum2/vehicle_warehouse.lua b/resources/[core]/bob74_ipl/gta_mpsum2/vehicle_warehouse.lua new file mode 100644 index 0000000..81fdcf0 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_mpsum2/vehicle_warehouse.lua @@ -0,0 +1,60 @@ +exports('GetCriminalEnterpriseVehicleWarehouseObject', function() + return CriminalEnterpriseVehicleWarehouse +end) + +CriminalEnterpriseVehicleWarehouse = { + InteriorId = 289537, + + Ipl = { + Interior = { + ipl = { + 'reh_int_placement_sum2_interior_0_dlc_int_03_sum2_milo_', + } + }, + + Load = function() + EnableIpl(CriminalEnterpriseVehicleWarehouse.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(CriminalEnterpriseVehicleWarehouse.Ipl.Interior.ipl, false) + end + }, + Entities = { + entity_set_office = true, + entity_set_light_option_1 = true, + entity_set_light_option_2 = true, + entity_set_light_option_3 = true, + entity_set_tint_options = true, + + Set = function(name, state) + for entity, _ in pairs(CriminalEnterpriseVehicleWarehouse.Entities) do + if entity == name then + CriminalEnterpriseVehicleWarehouse.Entities[entity] = state + CriminalEnterpriseVehicleWarehouse.Entities.Clear() + CriminalEnterpriseVehicleWarehouse.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(CriminalEnterpriseVehicleWarehouse.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(CriminalEnterpriseVehicleWarehouse.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(CriminalEnterpriseVehicleWarehouse.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(CriminalEnterpriseVehicleWarehouse.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + CriminalEnterpriseVehicleWarehouse.Ipl.Load() + CriminalEnterpriseVehicleWarehouse.Entities.Load() + + RefreshInterior(CriminalEnterpriseVehicleWarehouse.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_mpsum2/warehouse.lua b/resources/[core]/bob74_ipl/gta_mpsum2/warehouse.lua new file mode 100644 index 0000000..15dbaff --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_mpsum2/warehouse.lua @@ -0,0 +1,60 @@ +exports('GetCriminalEnterpriseWarehouseObject', function() + return CriminalEnterpriseWarehouse +end) + +CriminalEnterpriseWarehouse = { + InteriorId = 289793, + + Ipl = { + Interior = { + ipl = { + 'reh_int_placement_sum2_interior_1_dlc_int_04_sum2_milo_', + } + }, + + Load = function() + EnableIpl(CriminalEnterpriseWarehouse.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(CriminalEnterpriseWarehouse.Ipl.Interior.ipl, false) + end + }, + Entities = { + entity_set_style_1 = false, + entity_set_style_2 = false, + entity_set_style_3 = false, + entity_set_style_4 = false, + entity_set_style_5 = true, + + Set = function(name, state) + for entity, _ in pairs(CriminalEnterpriseWarehouse.Entities) do + if entity == name then + CriminalEnterpriseWarehouse.Entities[entity] = state + CriminalEnterpriseWarehouse.Entities.Clear() + CriminalEnterpriseWarehouse.Entities.Load() + end + end + end, + Load = function() + for entity, state in pairs(CriminalEnterpriseWarehouse.Entities) do + if type(entity) == 'string' and state then + ActivateInteriorEntitySet(CriminalEnterpriseWarehouse.InteriorId, entity) + end + end + end, + Clear = function() + for entity, _ in pairs(CriminalEnterpriseWarehouse.Entities) do + if type(entity) == 'string' then + DeactivateInteriorEntitySet(CriminalEnterpriseWarehouse.InteriorId, entity) + end + end + end + }, + + LoadDefault = function() + CriminalEnterpriseWarehouse.Ipl.Load() + CriminalEnterpriseWarehouse.Entities.Load() + + RefreshInterior(CriminalEnterpriseWarehouse.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/apartment_hi_1.lua b/resources/[core]/bob74_ipl/gta_online/apartment_hi_1.lua new file mode 100644 index 0000000..7729a61 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/apartment_hi_1.lua @@ -0,0 +1,56 @@ +-- 4 Integrity Way, Apt 30 +-- High end apartment 1: -35.31277 -580.4199 88.71221 +exports('GetGTAOApartmentHi1Object', function() + return GTAOApartmentHi1 +end) + +GTAOApartmentHi1 = { + interiorId = 141313, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOApartmentHi1.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOApartmentHi1.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOApartmentHi1.interiorId, details, state, refresh) + end + }, + LoadDefault = function() + GTAOApartmentHi1.Strip.Enable({ + GTAOApartmentHi1.Strip.A, + GTAOApartmentHi1.Strip.B, + GTAOApartmentHi1.Strip.C + }, false) + GTAOApartmentHi1.Booze.Enable({ + GTAOApartmentHi1.Booze.A, + GTAOApartmentHi1.Booze.B, + GTAOApartmentHi1.Booze.C + }, false) + GTAOApartmentHi1.Smoke.Enable({ + GTAOApartmentHi1.Smoke.A, + GTAOApartmentHi1.Smoke.B, + GTAOApartmentHi1.Smoke.C + }, false) + + RefreshInterior(GTAOApartmentHi1.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/apartment_hi_2.lua b/resources/[core]/bob74_ipl/gta_online/apartment_hi_2.lua new file mode 100644 index 0000000..733a238 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/apartment_hi_2.lua @@ -0,0 +1,57 @@ +-- Dell Perro Heights, Apt 7 +-- High end apartment 2: -1477.14 -538.7499 55.5264 +exports('GetGTAOApartmentHi2Object', function() + return GTAOApartmentHi2 +end) + +GTAOApartmentHi2 = { + interiorId = 145665, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOApartmentHi2.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOApartmentHi2.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOApartmentHi2.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GTAOApartmentHi2.Strip.Enable({ + GTAOApartmentHi2.Strip.A, + GTAOApartmentHi2.Strip.B, + GTAOApartmentHi2.Strip.C + }, false) + GTAOApartmentHi2.Booze.Enable({ + GTAOApartmentHi2.Booze.A, + GTAOApartmentHi2.Booze.B, + GTAOApartmentHi2.Booze.C + }, false) + GTAOApartmentHi2.Smoke.Enable({ + GTAOApartmentHi2.Smoke.A, + GTAOApartmentHi2.Smoke.B, + GTAOApartmentHi2.Smoke.C + }, false) + + RefreshInterior(GTAOApartmentHi2.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_hi_1.lua b/resources/[core]/bob74_ipl/gta_online/house_hi_1.lua new file mode 100644 index 0000000..ee5b73e --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_hi_1.lua @@ -0,0 +1,57 @@ +-- 3655 Wild Oats Drive +-- High end house 1: -169.286 486.4938 137.4436 +exports('GetGTAOHouseHi1Object', function() + return GTAOHouseHi1 +end) + +GTAOHouseHi1 = { + interiorId = 207105, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi1.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi1.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi1.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GTAOHouseHi1.Strip.Enable({ + GTAOHouseHi1.Strip.A, + GTAOHouseHi1.Strip.B, + GTAOHouseHi1.Strip.C + }, false) + GTAOHouseHi1.Booze.Enable({ + GTAOHouseHi1.Booze.A, + GTAOHouseHi1.Booze.B, + GTAOHouseHi1.Booze.C + }, false) + GTAOHouseHi1.Smoke.Enable({ + GTAOHouseHi1.Smoke.A, + GTAOHouseHi1.Smoke.B, + GTAOHouseHi1.Smoke.C + }, false) + + RefreshInterior(GTAOHouseHi1.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_hi_2.lua b/resources/[core]/bob74_ipl/gta_online/house_hi_2.lua new file mode 100644 index 0000000..e1c9296 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_hi_2.lua @@ -0,0 +1,57 @@ +-- 2044 North Conker Avenue +-- High end house 2: 340.9412 437.1798 149.3925 +exports('GetGTAOHouseHi2Object', function() + return GTAOHouseHi2 +end) + +GTAOHouseHi2 = { + interiorId = 206081, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi2.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi2.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi2.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GTAOHouseHi2.Strip.Enable({ + GTAOHouseHi2.Strip.A, + GTAOHouseHi2.Strip.B, + GTAOHouseHi2.Strip.C + }, false) + GTAOHouseHi2.Booze.Enable({ + GTAOHouseHi2.Booze.A, + GTAOHouseHi2.Booze.B, + GTAOHouseHi2.Booze.C + }, false) + GTAOHouseHi2.Smoke.Enable({ + GTAOHouseHi2.Smoke.A, + GTAOHouseHi2.Smoke.B, + GTAOHouseHi2.Smoke.C + }, false) + + RefreshInterior(GTAOHouseHi2.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_hi_3.lua b/resources/[core]/bob74_ipl/gta_online/house_hi_3.lua new file mode 100644 index 0000000..f8bec5e --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_hi_3.lua @@ -0,0 +1,57 @@ +-- 2045 North Conker Avenue +-- High end house 3: 373.023 416.105 145.7006 +exports('GetGTAOHouseHi3Object', function() + return GTAOHouseHi3 +end) + +GTAOHouseHi3 = { + interiorId = 206337, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi3.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi3.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi3.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GTAOHouseHi3.Strip.Enable({ + GTAOHouseHi3.Strip.A, + GTAOHouseHi3.Strip.B, + GTAOHouseHi3.Strip.C + }, false) + GTAOHouseHi3.Booze.Enable({ + GTAOHouseHi3.Booze.A, + GTAOHouseHi3.Booze.B, + GTAOHouseHi3.Booze.C + }, false) + GTAOHouseHi3.Smoke.Enable({ + GTAOHouseHi3.Smoke.A, + GTAOHouseHi3.Smoke.B, + GTAOHouseHi3.Smoke.C + }, false) + + RefreshInterior(GTAOHouseHi3.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_hi_4.lua b/resources/[core]/bob74_ipl/gta_online/house_hi_4.lua new file mode 100644 index 0000000..6e3d024 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_hi_4.lua @@ -0,0 +1,57 @@ +-- 2862 Hillcrest Avenue +-- High end house 4: -676.127 588.612 145.1698 +exports('GetGTAOHouseHi4Object', function() + return GTAOHouseHi4 +end) + +GTAOHouseHi4 = { + interiorId = 208129, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi4.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi4.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi4.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GTAOHouseHi4.Strip.Enable({ + GTAOHouseHi4.Strip.A, + GTAOHouseHi4.Strip.B, + GTAOHouseHi4.Strip.C + }, false) + GTAOHouseHi4.Booze.Enable({ + GTAOHouseHi4.Booze.A, + GTAOHouseHi4.Booze.B, + GTAOHouseHi4.Booze.C + }, false) + GTAOHouseHi4.Smoke.Enable({ + GTAOHouseHi4.Smoke.A, + GTAOHouseHi4.Smoke.B, + GTAOHouseHi4.Smoke.C + }, false) + + RefreshInterior(GTAOHouseHi4.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_hi_5.lua b/resources/[core]/bob74_ipl/gta_online/house_hi_5.lua new file mode 100644 index 0000000..1d5f425 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_hi_5.lua @@ -0,0 +1,57 @@ +-- 2868 Hillcrest Avenue +-- High end house 5: -763.107 615.906 144.1401 +exports('GetGTAOHouseHi5Object', function() + return GTAOHouseHi5 +end) + +GTAOHouseHi5 = { + interiorId = 207617, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi5.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi5.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi5.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GTAOHouseHi5.Strip.Enable({ + GTAOHouseHi5.Strip.A, + GTAOHouseHi5.Strip.B, + GTAOHouseHi5.Strip.C + }, false) + GTAOHouseHi5.Booze.Enable({ + GTAOHouseHi5.Booze.A, + GTAOHouseHi5.Booze.B, + GTAOHouseHi5.Booze.C + }, false) + GTAOHouseHi5.Smoke.Enable({ + GTAOHouseHi5.Smoke.A, + GTAOHouseHi5.Smoke.B, + GTAOHouseHi5.Smoke.C + }, false) + + RefreshInterior(GTAOHouseHi5.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_hi_6.lua b/resources/[core]/bob74_ipl/gta_online/house_hi_6.lua new file mode 100644 index 0000000..1243311 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_hi_6.lua @@ -0,0 +1,57 @@ +-- 2874 Hillcrest Avenue +-- High end house 6: -857.798 682.563 152.6529 +exports('GetGTAOHouseHi6Object', function() + return GTAOHouseHi6 +end) + +GTAOHouseHi6 = { + interiorId = 207361, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi6.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi6.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi6.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GTAOHouseHi6.Strip.Enable({ + GTAOHouseHi6.Strip.A, + GTAOHouseHi6.Strip.B, + GTAOHouseHi6.Strip.C + }, false) + GTAOHouseHi6.Booze.Enable({ + GTAOHouseHi6.Booze.A, + GTAOHouseHi6.Booze.B, + GTAOHouseHi6.Booze.C + }, false) + GTAOHouseHi6.Smoke.Enable({ + GTAOHouseHi6.Smoke.A, + GTAOHouseHi6.Smoke.B, + GTAOHouseHi6.Smoke.C + }, false) + + RefreshInterior(GTAOHouseHi6.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_hi_7.lua b/resources/[core]/bob74_ipl/gta_online/house_hi_7.lua new file mode 100644 index 0000000..8f50a34 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_hi_7.lua @@ -0,0 +1,57 @@ +-- 2677 Whispymound Drive +-- High end house 7: 120.5 549.952 184.097 +exports('GetGTAOHouseHi7Object', function() + return GTAOHouseHi7 +end) + +GTAOHouseHi7 = { + interiorId = 206593, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi7.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi7.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi7.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GTAOHouseHi7.Strip.Enable({ + GTAOHouseHi7.Strip.A, + GTAOHouseHi7.Strip.B, + GTAOHouseHi7.Strip.C + }, false) + GTAOHouseHi7.Booze.Enable({ + GTAOHouseHi7.Booze.A, + GTAOHouseHi7.Booze.B, + GTAOHouseHi7.Booze.C + }, false) + GTAOHouseHi7.Smoke.Enable({ + GTAOHouseHi7.Smoke.A, + GTAOHouseHi7.Smoke.B, + GTAOHouseHi7.Smoke.C + }, false) + + RefreshInterior(GTAOHouseHi7.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_hi_8.lua b/resources/[core]/bob74_ipl/gta_online/house_hi_8.lua new file mode 100644 index 0000000..d830726 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_hi_8.lua @@ -0,0 +1,57 @@ +-- 2133 Mad Wayne Thunder +-- High end house 8: -1288 440.748 97.69459 +exports('GetGTAOHouseHi8Object', function() + return GTAOHouseHi8 +end) + +GTAOHouseHi8 = { + interiorId = 208385, + + Strip = { + A = "Apart_Hi_Strip_A", + B = "Apart_Hi_Strip_B", + C = "Apart_Hi_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi8.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Hi_Booze_A", + B = "Apart_Hi_Booze_B", + C = "Apart_Hi_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi8.interiorId, details, state, refresh) + end + }, + Smoke = { + A = "Apart_Hi_Smokes_A", + B = "Apart_Hi_Smokes_B", + C = "Apart_Hi_Smokes_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseHi8.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + GTAOHouseHi8.Strip.Enable({ + GTAOHouseHi8.Strip.A, + GTAOHouseHi8.Strip.B, + GTAOHouseHi8.Strip.C + }, false) + GTAOHouseHi8.Booze.Enable({ + GTAOHouseHi8.Booze.A, + GTAOHouseHi8.Booze.B, + GTAOHouseHi8.Booze.C + }, false) + GTAOHouseHi8.Smoke.Enable({ + GTAOHouseHi8.Smoke.A, + GTAOHouseHi8.Smoke.B, + GTAOHouseHi8.Smoke.C + }, false) + + RefreshInterior(GTAOHouseHi8.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_low_1.lua b/resources/[core]/bob74_ipl/gta_online/house_low_1.lua new file mode 100644 index 0000000..4cf8165 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_low_1.lua @@ -0,0 +1,54 @@ +-- Low end house 1: 261.4586 -998.8196 -99.00863 +exports('GetGTAOHouseLow1Object', function() + return GTAOHouseLow1 +end) + +GTAOHouseLow1 = { + interiorId = 149761, + Strip = { + A = "Studio_Lo_Strip_A", B = "Studio_Lo_Strip_B", C = "Studio_Lo_Strip_C", + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseLow1.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Studio_Lo_Booze_A", B = "Studio_Lo_Booze_B", C = "Studio_Lo_Booze_C", + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseLow1.interiorId, details, state, refresh) + end + }, + Smoke = { + none = "", stage1 = "Studio_Lo_Smoke_A", stage2 = "Studio_Lo_Smoke_B", stage3 = "Studio_Lo_Smoke_C", + Set = function(smoke, refresh) + GTAOHouseLow1.Smoke.Clear(false) + if smoke ~= nil then + SetIplPropState(GTAOHouseLow1.interiorId, smoke, true, refresh) + else + if refresh then RefreshInterior(GTAOHouseLow1.interiorId) end + end + end, + Clear = function(refresh) + SetIplPropState(GTAOHouseLow1.interiorId, { + GTAOHouseLow1.Smoke.stage1, + GTAOHouseLow1.Smoke.stage2, + GTAOHouseLow1.Smoke.stage3 + }, false, refresh) + end + }, + + LoadDefault = function() + GTAOHouseLow1.Strip.Enable({ + GTAOHouseLow1.Strip.A, + GTAOHouseLow1.Strip.B, + GTAOHouseLow1.Strip.C + }, false) + GTAOHouseLow1.Booze.Enable({ + GTAOHouseLow1.Booze.A, + GTAOHouseLow1.Booze.B, + GTAOHouseLow1.Booze.C + }, false) + GTAOHouseLow1.Smoke.Set(GTAOHouseLow1.Smoke.none) + + RefreshInterior(GTAOHouseLow1.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gta_online/house_mid_1.lua b/resources/[core]/bob74_ipl/gta_online/house_mid_1.lua new file mode 100644 index 0000000..adfd3a2 --- /dev/null +++ b/resources/[core]/bob74_ipl/gta_online/house_mid_1.lua @@ -0,0 +1,68 @@ +-- Middle end house 1: 347.2686 -999.2955 -99.19622 +exports('GetGTAOHouseMid1Object', function() + return GTAOHouseMid1 +end) + +GTAOHouseMid1 = { + interiorId = 148225, + + Strip = { + A = "Apart_Mid_Strip_A", + B = "Apart_Mid_Strip_B", + C = "Apart_Mid_Strip_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseMid1.interiorId, details, state, refresh) + end + }, + Booze = { + A = "Apart_Mid_Booze_A", + B = "Apart_Mid_Booze_B", + C = "Apart_Mid_Booze_C", + + Enable = function(details, state, refresh) + SetIplPropState(GTAOHouseMid1.interiorId, details, state, refresh) + end + }, + Smoke = { + none = "", + stage1 = "Apart_Mid_Smoke_A", + stage2 = "Apart_Mid_Smoke_B", + stage3 = "Apart_Mid_Smoke_C", + + Set = function(smoke, refresh) + GTAOHouseMid1.Smoke.Clear(false) + + if smoke ~= nil then + SetIplPropState(GTAOHouseMid1.interiorId, smoke, true, refresh) + else + if refresh then + RefreshInterior(GTAOHouseMid1.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(GTAOHouseMid1.interiorId, { + GTAOHouseMid1.Smoke.stage1, + GTAOHouseMid1.Smoke.stage2, + GTAOHouseMid1.Smoke.stage3 + }, false, refresh) + end + }, + + LoadDefault = function() + GTAOHouseMid1.Strip.Enable({ + GTAOHouseMid1.Strip.A, + GTAOHouseMid1.Strip.B, + GTAOHouseMid1.Strip.C + }, false) + GTAOHouseMid1.Booze.Enable({ + GTAOHouseMid1.Booze.A, + GTAOHouseMid1.Booze.B, + GTAOHouseMid1.Booze.C + }, false) + GTAOHouseMid1.Smoke.Set(GTAOHouseMid1.Smoke.none) + + RefreshInterior(GTAOHouseMid1.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/ammunations.lua b/resources/[core]/bob74_ipl/gtav/ammunations.lua new file mode 100644 index 0000000..a746884 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/ammunations.lua @@ -0,0 +1,39 @@ +exports('GetAmmunationsObject', function() + return Ammunations +end) + +Ammunations = { + ammunationsId = { + 140289, -- 249.8, -47.1, 70.0 + 153857, -- 844.0, -1031.5, 28.2 + 168193, -- -664.0, -939.2, 21.8 + 164609, -- -1308.7, -391.5, 36.7 + 176385, -- -3170.0, 1085.0, 20.8 + 175617, -- -1116.0, 2694.1, 18.6 + 200961, -- 1695.2, 3756.0, 34.7 + 180481, -- -328.7, 6079.0, 31.5 + 178689 -- 2569.8, 297.8, 108.7 + }, + gunclubsId = { + 137729, -- 19.1, -1110.0, 29.8 + 248065 -- 811.0, -2152.0, 29.6 + }, + + Details = { + hooks = "GunStoreHooks", -- Hooks for gun displaying + hooksClub = "GunClubWallHooks", -- Hooks for gun displaying + + Enable = function(details, state, refresh) + if details == Ammunations.Details.hooks then + SetIplPropState(Ammunations.ammunationsId, details, state, refresh) + elseif details == Ammunations.Details.hooksClub then + SetIplPropState(Ammunations.gunclubsId, details, state, refresh) + end + end + }, + + LoadDefault = function() + Ammunations.Details.Enable(Ammunations.Details.hooks, true, true) + Ammunations.Details.Enable(Ammunations.Details.hooksClub, true, true) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/bahama.lua b/resources/[core]/bob74_ipl/gtav/bahama.lua new file mode 100644 index 0000000..a9a4638 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/bahama.lua @@ -0,0 +1,12 @@ +-- Bahama Mamas: -1388.0013, -618.41967, 30.819599 +exports('GetBahamaMamasObject', function() + return BahamaMamas +end) + +BahamaMamas = { + ipl = "hei_sm_16_interior_v_bahama_milo_", + + Enable = function(state) + EnableIpl(BahamaMamas.ipl, state) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/base.lua b/resources/[core]/bob74_ipl/gtav/base.lua new file mode 100644 index 0000000..68585b6 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/base.lua @@ -0,0 +1,114 @@ +CreateThread(function() + -- Heist Jewel: -637.20159 -239.16250 38.1 + RequestIpl("post_hiest_unload") + + -- Max Renda: -585.8247, -282.72, 35.45475 + RequestIpl("refit_unload") + + -- Heist Union Depository: 2.69689322, -667.0166, 16.1306286 + RequestIpl("FINBANK") + + -- Morgue: 239.75195, -1360.64965, 39.53437 + RequestIpl("Coroner_Int_on") + RequestIpl("coronertrash") + + -- Cluckin Bell: -146.3837, 6161.5, 30.2062 + RequestIpl("CS1_02_cf_onmission1") + RequestIpl("CS1_02_cf_onmission2") + RequestIpl("CS1_02_cf_onmission3") + RequestIpl("CS1_02_cf_onmission4") + + -- Grapeseed's farm: 2447.9, 4973.4, 47.7 + RequestIpl("farm") + RequestIpl("farmint") + RequestIpl("farm_lod") + RequestIpl("farm_props") + RequestIpl("des_farmhouse") + + -- FIB lobby: 105.4557, -745.4835, 44.7548 + RequestIpl("FIBlobby") + + -- FIB Roof: 134.33, -745.95, 266.98 + RequestIpl("atriumglmission") + + -- FIB Fountain 174.184, -667.902, 43.140 + RemoveIpl('dt1_05_hc_end') + RemoveIpl('dt1_05_hc_req') + RequestIpl('dt1_05_hc_remove') + + -- Billboard: iFruit + RequestIpl("FruitBB") + RequestIpl("sc1_01_newbill") + RequestIpl("hw1_02_newbill") + RequestIpl("hw1_emissive_newbill") + RequestIpl("sc1_14_newbill") + RequestIpl("dt1_17_newbill") + + -- Lester's factory: 716.84, -962.05, 31.59 + RequestIpl("id2_14_during_door") + RequestIpl("id2_14_during1") + + -- Life Invader lobby: -1047.9, -233.0, 39.0 + RequestIpl("facelobby") + + -- Tunnels + RequestIpl("v_tunnel_hole") + + -- Carwash: 55.7, -1391.3, 30.5 + RequestIpl("Carwash_with_spinners") + + -- Stadium "Fame or Shame": -248.49159240722656, -2010.509033203125, 34.57429885864258 + RequestIpl("sp1_10_real_interior") + RequestIpl("sp1_10_real_interior_lod") + + -- House in Banham Canyon: -3086.428, 339.2523, 6.3717 + RequestIpl("ch1_02_open") + + -- Garage in La Mesa (autoshop): 970.27453, -1826.56982, 31.11477 + RequestIpl("bkr_bi_id1_23_door") + + -- Hill Valley church - Grave: -282.46380000, 2835.84500000, 55.91446000 + RequestIpl("lr_cs6_08_grave_closed") + + -- Lost's trailer park: 49.49379000, 3744.47200000, 46.38629000 + RequestIpl("methtrailer_grp1") + + -- Lost safehouse: 984.1552, -95.3662, 74.50 + RequestIpl("bkr_bi_hw1_13_int") + + -- Raton Canyon river: -1652.83, 4445.28, 2.52 + RequestIpl("CanyonRvrShallow") + + -- Josh's house: -1117.1632080078, 303.090698, 66.52217 + RequestIpl("bh1_47_joshhse_unburnt") + RequestIpl("bh1_47_joshhse_unburnt_lod") + + -- Bahama Mamas: -1388.0013, -618.41967, 30.819599 + RequestIpl("hei_sm_16_interior_v_bahama_milo_") + + -- Zancudo River (need streamed content): 86.815, 3191.649, 30.463 + RequestIpl("cs3_05_water_grp1") + RequestIpl("cs3_05_water_grp1_lod") + RequestIpl("trv1_trail_start") + + -- Cassidy Creek (need streamed content): -425.677, 4433.404, 27.3253 + RequestIpl("canyonriver01") + RequestIpl("canyonriver01_lod") + + -- Ferris wheel + RequestIpl("ferris_finale_anim") + + -- Train track: 2626.374, 2949.869, 39.1409 + RequestIpl("ld_rail_01_track") + RequestIpl("ld_rail_02_track") + + -- Docks cranes: 887.7344, -2922.285, 34.000 + RequestIpl("dockcrane1") + RequestIpl("pcranecont") + + -- Construction lift: -180.5771, -1016.9276, 28.2893 + RequestIpl("dt1_21_prop_lift_on") + + -- Davis Quartz train: 2773.6099, 2835.3274, 35.1903 + RequestIpl("cs5_4_trains") +end) diff --git a/resources/[core]/bob74_ipl/gtav/cargoship.lua b/resources/[core]/bob74_ipl/gtav/cargoship.lua new file mode 100644 index 0000000..1a5b7e7 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/cargoship.lua @@ -0,0 +1,33 @@ +-- Cargo ship: -168.1825, -2364.8259, 20.000 +exports('GetCargoShipObject', function() + return CargoShip +end) + +CargoShip = { + State = { + normal = { + "cargoship", + "ship_occ_grp1" + }, + sunk = { + "sunkcargoship", + "ship_occ_grp2" + }, + + Set = function(state) + CargoShip.State.Clear(false) + + EnableIpl(state, state) + end, + Clear = function(refresh) + EnableIpl({ + CargoShip.State.normal, + CargoShip.State.sunk + }, false) + end + }, + + LoadDefault = function() + CargoShip.State.Set(CargoShip.State.normal) + end +} \ No newline at end of file diff --git a/resources/[core]/bob74_ipl/gtav/floyd.lua b/resources/[core]/bob74_ipl/gtav/floyd.lua new file mode 100644 index 0000000..7b85e26 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/floyd.lua @@ -0,0 +1,63 @@ +exports('GetFloydObject', function() + return Floyd +end) + +Floyd = { + interiorId = 171777, + + Style = { + normal = { + "swap_clean_apt", + "layer_debra_pic", + "layer_whiskey", + "swap_sofa_A" + }, + messedUp = { + "layer_mess_A", + "layer_mess_B", + "layer_mess_C", + "layer_sextoys_a", + "swap_sofa_B", + "swap_wade_sofa_A", + "layer_wade_shit", + "layer_torture" + }, + + Set = function(style, refresh) + Floyd.Style.Clear(false) + + SetIplPropState(Floyd.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(Floyd.interiorId, { + Floyd.Style.normal, + Floyd.Style.messedUp + }, false, refresh) + end + }, + MrJam = { + normal = "swap_mrJam_A", + jammed = "swap_mrJam_B", + jammedOnTable = "swap_mrJam_C", + + Set = function(mrJam, refresh) + Floyd.MrJam.Clear(false) + + SetIplPropState(Floyd.interiorId, mrJam, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(Floyd.interiorId, { + Floyd.MrJam.normal, + Floyd.MrJam.jammed, + Floyd.MrJam.jammedOnTable + }, false, refresh) + end + }, + + LoadDefault = function() + Floyd.Style.Set(Floyd.Style.normal) + Floyd.MrJam.Set(Floyd.MrJam.normal) + + RefreshInterior(Floyd.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/franklin.lua b/resources/[core]/bob74_ipl/gtav/franklin.lua new file mode 100644 index 0000000..e8794e7 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/franklin.lua @@ -0,0 +1,73 @@ +exports('GetFranklinObject', function() + return Franklin +end) + +Franklin = { + interiorId = 206849, + + Style = { + empty = "", + unpacking = "franklin_unpacking", + settled = { + "franklin_unpacking", + "franklin_settled" + }, + cardboxes = "showhome_only", + + Set = function(style, refresh) + Franklin.Style.Clear(false) + + if style ~= "" then + SetIplPropState(Franklin.interiorId, style, true, refresh) + else + if refresh then + RefreshInterior(Franklin.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(Franklin.interiorId, { + Franklin.Style.settled, + Franklin.Style.unpacking, + Franklin.Style.cardboxes + }, false, refresh) + end + }, + GlassDoor = { + opened = "unlocked", + closed = "locked", + + Set = function(door, refresh) + Franklin.GlassDoor.Clear(false) + + SetIplPropState(Franklin.interiorId, door, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(Franklin.interiorId, { + Franklin.GlassDoor.opened, + Franklin.GlassDoor.closed + }, false, refresh) + end + }, + Details = { + flyer = "progress_flyer", -- Mountain flyer on the kitchen counter + tux = "progress_tux", -- Tuxedo suit in the wardrobe + tshirt = "progress_tshirt", -- "I <3 LS" tshirt on the bed + bong = "bong_and_wine", -- Bong on the table + + Enable = function(details, state, refresh) + SetIplPropState(Franklin.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + Franklin.Style.Set(Franklin.Style.empty) + Franklin.GlassDoor.Set(Franklin.GlassDoor.opened) + Franklin.Details.Enable(Franklin.Details.flyer, false) + Franklin.Details.Enable(Franklin.Details.tux, false) + Franklin.Details.Enable(Franklin.Details.tshirt, false) + Franklin.Details.Enable(Franklin.Details.bong, false) + + RefreshInterior(Franklin.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/franklin_aunt.lua b/resources/[core]/bob74_ipl/gtav/franklin_aunt.lua new file mode 100644 index 0000000..b0ba2c7 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/franklin_aunt.lua @@ -0,0 +1,47 @@ +exports('GetFranklinAuntObject', function() + return FranklinAunt +end) + +FranklinAunt = { + interiorId = 197889, + + Style = { + empty = "", + franklinStuff = "V_57_FranklinStuff", + franklinLeft = "V_57_Franklin_LEFT", + + Set = function(style, refresh) + FranklinAunt.Style.Clear(false) + + if style ~= "" then + SetIplPropState(FranklinAunt.interiorId, style, true, refresh) + else + if refresh then + RefreshInterior(FranklinAunt.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(FranklinAunt.interiorId, { + FranklinAunt.Style.franklinStuff, + FranklinAunt.Style.franklinLeft + }, false, refresh) + end + }, + Details = { + bandana = "V_57_GangBandana", -- Bandana on the bed + bag = "V_57_Safari", -- Bag in the closet + + Enable = function(details, state, refresh) + SetIplPropState(FranklinAunt.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + FranklinAunt.Style.Set(FranklinAunt.Style.empty) + FranklinAunt.Details.Enable(FranklinAunt.Details.bandana, false) + FranklinAunt.Details.Enable(FranklinAunt.Details.bag, false) + + RefreshInterior(FranklinAunt.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/graffitis.lua b/resources/[core]/bob74_ipl/gtav/graffitis.lua new file mode 100644 index 0000000..be34afa --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/graffitis.lua @@ -0,0 +1,14 @@ +exports('GetGraffitisObject', function() + return Graffitis +end) + +Graffitis = { + ipl = { + "ch3_rd2_bishopschickengraffiti", -- 1861.28, 2402.11, 58.53 + "cs5_04_mazebillboardgraffiti", -- 2697.32, 3162.18, 58.1 + "cs5_roads_ronoilgraffiti" -- 2119.12, 3058.21, 53.25 + }, + Enable = function(state) + EnableIpl(Graffitis.ipl, state) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/lester_factory.lua b/resources/[core]/bob74_ipl/gtav/lester_factory.lua new file mode 100644 index 0000000..399e255 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/lester_factory.lua @@ -0,0 +1,31 @@ +exports('GetLesterFactoryObject', function() + return LesterFactory +end) + +LesterFactory = { + interiorId = 92674, + + Details = { + bluePrint = "V_53_Agency_Blueprint", -- Blueprint on the office desk + bag = "V_35_KitBag", -- Bag under the office desk + fireMan = "V_35_Fireman", -- Firemans helmets in the office + armour = "V_35_Body_Armour", -- Body armor in storage + gasMask = "Jewel_Gasmasks", -- Gas mask and suit in storage + janitorStuff = "v_53_agency _overalls", -- Janitor stuff in the storage (yes, there is a whitespace) + + Enable = function(details, state, refresh) + SetIplPropState(LesterFactory.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + LesterFactory.Details.Enable(LesterFactory.Details.bluePrint, false) + LesterFactory.Details.Enable(LesterFactory.Details.bag, false) + LesterFactory.Details.Enable(LesterFactory.Details.fireMan, false) + LesterFactory.Details.Enable(LesterFactory.Details.armour, false) + LesterFactory.Details.Enable(LesterFactory.Details.gasMask, false) + LesterFactory.Details.Enable(LesterFactory.Details.janitorStuff, false) + + RefreshInterior(LesterFactory.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/michael.lua b/resources/[core]/bob74_ipl/gtav/michael.lua new file mode 100644 index 0000000..cb54d30 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/michael.lua @@ -0,0 +1,85 @@ +exports('GetMichaelObject', function() + return Michael +end) + +Michael = { + interiorId = 166657, + garageId = 166401, + + Style = { + normal = { + "V_Michael_bed_tidy", + "V_Michael_M_items", + "V_Michael_D_items", + "V_Michael_S_items", + "V_Michael_L_Items" + }, + moved = { + "V_Michael_bed_Messy", + "V_Michael_M_moved", + "V_Michael_D_Moved", + "V_Michael_L_Moved", + "V_Michael_S_items_swap", + "V_Michael_M_items_swap" + }, + + Set = function(style, refresh) + Michael.Style.Clear(false) + + SetIplPropState(Michael.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(Michael.interiorId, { + Michael.Style.normal, + Michael.Style.moved + }, false, refresh) + end + }, + Bed = { + tidy = "V_Michael_bed_tidy", + messy = "V_Michael_bed_Messy", + + Set = function(bed, refresh) + Michael.Bed.Clear(false) + + SetIplPropState(Michael.interiorId, bed, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(Michael.interiorId, { + Michael.Bed.tidy, + Michael.Bed.messy + }, false, refresh) + end + }, + Garage = { + scuba = "V_Michael_Scuba", -- Scuba diver gear + + Enable = function(scuba, state, refresh) + SetIplPropState(Michael.garageId, scuba, state, refresh) + end + }, + Details = { + moviePoster = "Michael_premier", -- Meltdown movie poster + fameShamePoste = "V_Michael_FameShame", -- Next to Tracey's bed + planeTicket = "V_Michael_plane_ticket", -- Plane ticket + spyGlasses = "V_Michael_JewelHeist", -- On the shelf inside Michael's bedroom + bugershot = "burgershot_yoga", -- Bag and cup in the kitchen, next to the sink + + Enable = function(details, state, refresh) + SetIplPropState(Michael.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + Michael.Garage.Enable(Michael.Garage.scuba, false, true) + Michael.Style.Set(Michael.Style.normal) + Michael.Bed.Set(Michael.Bed.tidy) + Michael.Details.Enable(Michael.Details.moviePoster, false) + Michael.Details.Enable(Michael.Details.fameShamePoste, false) + Michael.Details.Enable(Michael.Details.spyGlasses, false) + Michael.Details.Enable(Michael.Details.planeTicket, false) + Michael.Details.Enable(Michael.Details.bugershot, false) + + RefreshInterior(Michael.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/north_yankton.lua b/resources/[core]/bob74_ipl/gtav/north_yankton.lua new file mode 100644 index 0000000..d1a9209 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/north_yankton.lua @@ -0,0 +1,74 @@ +exports('GetNorthYanktonObject', function() + return NorthYankton +end) + +NorthYankton = { + ipl = { + "prologue01", + "prologue01c", + "prologue01d", + "prologue01e", + "prologue01f", + "prologue01g", + "prologue01h", + "prologue01i", + "prologue01j", + "prologue01k", + "prologue01z", + "prologue02", + "prologue03", + "prologue03b", + "prologue04", + "prologue04b", + "prologue05", + "prologue05b", + "prologue06", + "prologue06b", + "prologue_occl", + "prologue06_int", + "prologuerd", + "prologuerdb", + "prologue_DistantLights", + "prologue_LODLights", + "DES_ProTree_start", + "prologue_m2_door", + "prologue03_grv_cov" + }, + + Grave = { + covered = "prologue03_grv_cov", + dug = "prologue03_grv_dug", + funeral = "prologue03_grv_fun", + + Set = function(grave) + NorthYankton.Grave.Clear() + + EnableIpl(grave, true) + end, + Clear = function() + EnableIpl({ + NorthYankton.Grave.covered, + NorthYankton.Grave.dug, + NorthYankton.Grave.funeral + }, false) + end + }, + + Traffic = { + Enable = function(state) + SetAllPathsCacheBoundingstruct(state) + + SetRoadsInAngledArea(5526.24, -5137.23, 61.78925, 3679.327, -4973.879, 125.0828, 192, false, state, true); + SetRoadsInAngledArea(3691.211, -4941.24, 94.59368, 3511.115, -4869.191, 126.7621, 16, false, state, true); + SetRoadsInAngledArea(3510.004, -4865.81, 94.69557, 3204.424, -4833.817, 126.8152, 16, false, state, true); + SetRoadsInAngledArea(3186.534, -4832.798, 109.8148, 3202.187, -4833.993, 114.815, 16, false, state, true); + end + }, + + Enable = function(state) + NorthYankton.Grave.Clear() + NorthYankton.Traffic.Enable(state) + + EnableIpl(NorthYankton.ipl, state) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/pillbox_hospital.lua b/resources/[core]/bob74_ipl/gtav/pillbox_hospital.lua new file mode 100644 index 0000000..ed8bfc0 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/pillbox_hospital.lua @@ -0,0 +1,12 @@ +-- Pillbox hospital: 307.1680, -590.807, 43.280 +exports('GetPillboxHospitalObject', function() + return PillboxHospital +end) + +PillboxHospital = { + ipl = "rc12b_default", + + Enable = function(state) + EnableIpl(PillboxHospital.ipl, state) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/red_carpet.lua b/resources/[core]/bob74_ipl/gtav/red_carpet.lua new file mode 100644 index 0000000..53ec831 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/red_carpet.lua @@ -0,0 +1,11 @@ +exports('GetRedCarpetObject', function() + return RedCarpet +end) + +RedCarpet = { + ipl = "redCarpet", + + Enable = function(state) + EnableIpl(RedCarpet.ipl, state) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/simeon.lua b/resources/[core]/bob74_ipl/gtav/simeon.lua new file mode 100644 index 0000000..0313573 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/simeon.lua @@ -0,0 +1,73 @@ +exports('GetSimeonObject', function() + return Simeon +end) + +Simeon = { + interiorId = 7170, + + Ipl = { + Interior = { + ipl = { + "shr_int" + }, + + Load = function() + EnableIpl(Simeon.Ipl.Interior.ipl, true) + end, + Remove = function() + EnableIpl(Simeon.Ipl.Interior.ipl, false) + end + } + }, + Style = { + normal = "csr_beforeMission", + noGlass = "csr_inMission", + destroyed = "csr_afterMissionA", + fixed = "csr_afterMissionB", + + Set = function(style, refresh) + Simeon.Style.Clear(false) + + SetIplPropState(Simeon.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(Simeon.interiorId, { + Simeon.Style.normal, + Simeon.Style.noGlass, + Simeon.Style.destroyed, + Simeon.Style.fixed + }, false, refresh) + end + }, + Shutter = { + none = "", + opened = "shutter_open", + closed = "shutter_closed", + + Set = function(shutter, refresh) + Simeon.Shutter.Clear(false) + + if shutter ~= "" then + SetIplPropState(Simeon.interiorId, shutter, true, refresh) + else + if refresh then + RefreshInterior(Simeon.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(Simeon.interiorId, { + Simeon.Shutter.opened, + Simeon.Shutter.closed + }, false, refresh) + end + }, + + LoadDefault = function() + Simeon.Ipl.Interior.Load() + Simeon.Style.Set(Simeon.Style.normal) + Simeon.Shutter.Set(Simeon.Shutter.opened) + + RefreshInterior(Simeon.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/stripclub.lua b/resources/[core]/bob74_ipl/gtav/stripclub.lua new file mode 100644 index 0000000..87606c8 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/stripclub.lua @@ -0,0 +1,18 @@ +exports('GetStripClubObject', function() + return StripClub +end) + +StripClub = { + interiorId = 197121, + + Mess = { + mess = "V_19_Trevor_Mess", -- A bit of mess in the office + Enable = function(state) + SetIplPropState(StripClub.interiorId, StripClub.Mess.mess, state, true) + end + }, + + LoadDefault = function() + StripClub.Mess.Enable(false) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/trevors_trailer.lua b/resources/[core]/bob74_ipl/gtav/trevors_trailer.lua new file mode 100644 index 0000000..e8a22be --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/trevors_trailer.lua @@ -0,0 +1,42 @@ +exports('GetTrevorsTrailerObject', function() + return TrevorsTrailer +end) + +TrevorsTrailer = { + interiorId = 2562, + + Interior = { + tidy = "trevorstrailertidy", + trash = "TrevorsTrailerTrash", + + Set = function(interior) + TrevorsTrailer.Interior.Clear() + + EnableIpl(interior, true) + end, + Clear = function() + EnableIpl({ + TrevorsTrailer.Interior.tidy, + TrevorsTrailer.Interior.trash + }, false) + end + }, + Details = { + copHelmet = "V_26_Trevor_Helmet3", -- Cop helmet in the closet + briefcase = "V_24_Trevor_Briefcase3", -- Briefcase in the main room + michaelStuff = "V_26_Michael_Stay3", -- Michael's suit hanging on the window + + Enable = function(details, state, refresh) + SetIplPropState(TrevorsTrailer.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + TrevorsTrailer.Interior.Set(TrevorsTrailer.Interior.trash) + TrevorsTrailer.Details.Enable(TrevorsTrailer.Details.copHelmet, false, false) + TrevorsTrailer.Details.Enable(TrevorsTrailer.Details.briefcase, false, false) + TrevorsTrailer.Details.Enable(TrevorsTrailer.Details.michaelStuff, false, false) + + RefreshInterior(TrevorsTrailer.interiorId) + end +} diff --git a/resources/[core]/bob74_ipl/gtav/ufo.lua b/resources/[core]/bob74_ipl/gtav/ufo.lua new file mode 100644 index 0000000..776b6fe --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/ufo.lua @@ -0,0 +1,27 @@ +exports('GetUFOObject', function() + return UFO +end) + +UFO = { + Hippie = { + ipl = "ufo", -- Hippie base: 2490.47729, 3774.84351, 2414.035 + + Enable = function(state) + EnableIpl(UFO.Hippie.ipl, state) + end + }, + Chiliad = { + ipl = "ufo_eye", -- Chiliad: 501.5288, 5593.865, 796.2325 + + Enable = function(state) + EnableIpl(UFO.Chiliad.ipl, state) + end + }, + Zancudo = { + ipl = "ufo_lod", -- Zancudo: -2051.99463, 3237.05835, 1456.97021 + + Enable = function(state) + EnableIpl(UFO.Zancudo.ipl, state) + end + } +} diff --git a/resources/[core]/bob74_ipl/gtav/zancudo_gates.lua b/resources/[core]/bob74_ipl/gtav/zancudo_gates.lua new file mode 100644 index 0000000..cbd3da7 --- /dev/null +++ b/resources/[core]/bob74_ipl/gtav/zancudo_gates.lua @@ -0,0 +1,19 @@ +-- Zancudo Gates (GTAO like): -1600.30100000 2806.73100000 18.79683000 +exports('GetZancudoGatesObject', function() + return ZancudoGates +end) + +ZancudoGates = { + Gates = { + Open = function() + EnableIpl("CS3_07_MPGates", false) + end, + Close = function() + EnableIpl("CS3_07_MPGates", true) + end, + }, + + LoadDefault = function() + ZancudoGates.Gates.Open() + end +} diff --git a/resources/[core]/bob74_ipl/lib/common.lua b/resources/[core]/bob74_ipl/lib/common.lua new file mode 100644 index 0000000..4c57117 --- /dev/null +++ b/resources/[core]/bob74_ipl/lib/common.lua @@ -0,0 +1,278 @@ +-- Global variables +Global = { + currentInteriorId = 0, + + -- The current interior is set to True by 'interiorIdObserver' + Online = { + isInsideApartmentHi1 = false, + isInsideApartmentHi2 = false, + isInsideHouseHi1 = false, + isInsideHouseHi2 = false, + isInsideHouseHi3 = false, + isInsideHouseHi4 = false, + isInsideHouseHi5 = false, + isInsideHouseHi6 = false, + isInsideHouseHi7 = false, + isInsideHouseHi8 = false, + isInsideHouseLow1 = false, + isInsideHouseMid1 = false + }, + Biker = { + isInsideClubhouse1 = false, + isInsideClubhouse2 = false + }, + FinanceOffices = { + isInsideOffice1 = false, + isInsideOffice2 = false, + isInsideOffice3 = false, + isInsideOffice4 = false + }, + HighLife = { + isInsideApartment1 = false, + isInsideApartment2 = false, + isInsideApartment3 = false, + isInsideApartment4 = false, + isInsideApartment5 = false, + isInsideApartment6 = false + }, + Security = { + isInsideOffice1 = false, + isInsideOffice2 = false, + isInsideOffice3 = false, + isInsideOffice4 = false + }, + + -- Set all interiors variables to false + -- The loop inside 'interiorIdObserver' will set them to true + ResetInteriorVariables = function() + for _, parentKey in pairs{"Biker", "FinanceOffices", "HighLife", "Security"} do + local t = Global[parentKey] + + for key in pairs(t) do + t[key] = false + end + end + end +} + +exports('GVariables', function() + return Global +end) + +exports('EnableIpl', function(ipl, activate) + return EnableIpl(ipl, activate) +end) + +exports('GetPedheadshotTexture', function(ped) + return GetPedheadshotTexture(ped) +end) + +-- Load or remove IPL(s) +function EnableIpl(ipl, activate) + if type(ipl) == "table" then + for key, value in pairs(ipl) do + EnableIpl(value, activate) + end + else + if activate then + if not IsIplActive(ipl) then + RequestIpl(ipl) + end + else + if IsIplActive(ipl) then + RemoveIpl(ipl) + end + end + end +end + +-- Enable or disable the specified props in an interior +function SetIplPropState(interiorId, props, state, refresh) + if refresh == nil then + refresh = false + end + + if type(interiorId) == "table" then + for key, value in pairs(interiorId) do + SetIplPropState(value, props, state, refresh) + end + else + if type(props) == "table" then + for key, value in pairs(props) do + SetIplPropState(interiorId, value, state, refresh) + end + else + if state then + if not IsInteriorEntitySetActive(interiorId, props) then + ActivateInteriorEntitySet(interiorId, props) + end + else + if IsInteriorEntitySetActive(interiorId, props) then + DeactivateInteriorEntitySet(interiorId, props) + end + end + end + + if refresh then + RefreshInterior(interiorId) + end + end +end + +function CreateNamedRenderTargetForModel(name, model) + local handle = 0 + + if not IsNamedRendertargetRegistered(name) then + RegisterNamedRendertarget(name, false) + end + + if not IsNamedRendertargetLinked(model) then + LinkNamedRendertarget(model) + end + + if IsNamedRendertargetRegistered(name) then + handle = GetNamedRendertargetRenderId(name) + end + + return handle +end + +function DrawEmptyRect(name, model) + local step = 250 + local timeout = 5 * 1000 + local currentTime = 0 + local renderId = CreateNamedRenderTargetForModel(name, model) + + while not IsNamedRendertargetRegistered(name) do + Wait(step) + + currentTime = currentTime + step + + if currentTime >= timeout then + return false + end + end + + if IsNamedRendertargetRegistered(name) then + SetTextRenderId(renderId) + SetScriptGfxDrawOrder(4) + DrawRect(0.5, 0.5, 1.0, 1.0, 0, 0, 0, 0) + SetTextRenderId(GetDefaultScriptRendertargetRenderId()) + ReleaseNamedRendertarget(0, name) + end + + return true +end + +function SetupScaleform(movieId, scaleformFunction, parameters) + BeginScaleformMovieMethod(movieId, scaleformFunction) + ScaleformMovieMethodAddParamTextureNameString_2(name) + + if type(parameters) == "table" then + for i = 0, Tablelength(parameters) - 1 do + local p = parameters["p" .. tostring(i)] + + if p.type == "bool" then + ScaleformMovieMethodAddParamBool(p.value) + elseif p.type == "int" then + ScaleformMovieMethodAddParamInt(p.value) + elseif p.type == "float" then + ScaleformMovieMethodAddParamFloat(p.value) + elseif p.type == "string" then + ScaleformMovieMethodAddParamTextureNameString(p.value) + elseif p.type == "buttonName" then + ScaleformMovieMethodAddParamPlayerNameString(p.value) + end + end + end + + EndScaleformMovieMethod() + N_0x32f34ff7f617643b(movieId, 1) +end + +function LoadStreamedTextureDict(texturesDict) + local step = 1000 + local timeout = 5 * 1000 + local currentTime = 0 + + RequestStreamedTextureDict(texturesDict, false) + while not HasStreamedTextureDictLoaded(texturesDict) do + Wait(step) + + currentTime = currentTime + step + + if currentTime >= timeout then + return false + end + end + + return true +end + +function LoadScaleform(scaleform) + local step = 1000 + local timeout = 5 * 1000 + local currentTime = 0 + local handle = RequestScaleformMovie(scaleform) + + while not HasScaleformMovieLoaded(handle) do + Wait(step) + + currentTime = currentTime + step + + if currentTime >= timeout then + return -1 + end + end + + return handle +end + +function GetPedheadshot(ped) + local step = 1000 + local timeout = 5 * 1000 + local currentTime = 0 + local pedheadshot = RegisterPedheadshot(ped) + + while not IsPedheadshotReady(pedheadshot) do + Wait(step) + + currentTime = currentTime + step + + if currentTime >= timeout then + return -1 + end + end + + return pedheadshot +end + +function GetPedheadshotTexture(ped) + local textureDict = nil + local pedheadshot = GetPedheadshot(ped) + + if pedheadshot ~= -1 then + textureDict = GetPedheadshotTxdString(pedheadshot) + + local IsTextureDictLoaded = LoadStreamedTextureDict(textureDict) + + if not IsTextureDictLoaded then + print("ERROR: GetPedheadshotTexture - Textures dictionnary \"" .. tostring(textureDict) .. "\" cannot be loaded.") + end + else + print("ERROR: GetPedheadshotTexture - PedHeadShot not ready.") + end + + return textureDict +end + +-- Return the number of elements of the table +function Tablelength(T) + local count = 0 + + for _ in pairs(T) do + count = count + 1 + end + + return count +end diff --git a/resources/[core]/bob74_ipl/lib/observers/interiorIdObserver.lua b/resources/[core]/bob74_ipl/lib/observers/interiorIdObserver.lua new file mode 100644 index 0000000..1d0335b --- /dev/null +++ b/resources/[core]/bob74_ipl/lib/observers/interiorIdObserver.lua @@ -0,0 +1,53 @@ +local _scanDelay = 500 + +CreateThread(function() + while true do + Global.currentInteriorId = GetInteriorFromEntity(PlayerPedId()) + + if Global.currentInteriorId == 0 then + Global.ResetInteriorVariables() + else + -- Setting variables + + -- GTA Online + Global.Online.isInsideApartmentHi1 = (Global.currentInteriorId == GTAOApartmentHi1.interiorId) + Global.Online.isInsideApartmentHi2 = (Global.currentInteriorId == GTAOApartmentHi2.interiorId) + Global.Online.isInsideHouseHi1 = (Global.currentInteriorId == GTAOHouseHi1.interiorId) + Global.Online.isInsideHouseHi2 = (Global.currentInteriorId == GTAOHouseHi2.interiorId) + Global.Online.isInsideHouseHi3 = (Global.currentInteriorId == GTAOHouseHi3.interiorId) + Global.Online.isInsideHouseHi4 = (Global.currentInteriorId == GTAOHouseHi4.interiorId) + Global.Online.isInsideHouseHi5 = (Global.currentInteriorId == GTAOHouseHi5.interiorId) + Global.Online.isInsideHouseHi6 = (Global.currentInteriorId == GTAOHouseHi6.interiorId) + Global.Online.isInsideHouseHi7 = (Global.currentInteriorId == GTAOHouseHi7.interiorId) + Global.Online.isInsideHouseHi8 = (Global.currentInteriorId == GTAOHouseHi8.interiorId) + Global.Online.isInsideHouseLow1 = (Global.currentInteriorId == GTAOHouseLow1.interiorId) + Global.Online.isInsideHouseMid1 = (Global.currentInteriorId == GTAOHouseMid1.interiorId) + + -- DLC: High life + Global.HighLife.isInsideApartment1 = (Global.currentInteriorId == HLApartment1.interiorId) + Global.HighLife.isInsideApartment2 = (Global.currentInteriorId == HLApartment2.interiorId) + Global.HighLife.isInsideApartment3 = (Global.currentInteriorId == HLApartment3.interiorId) + Global.HighLife.isInsideApartment4 = (Global.currentInteriorId == HLApartment4.interiorId) + Global.HighLife.isInsideApartment5 = (Global.currentInteriorId == HLApartment5.interiorId) + Global.HighLife.isInsideApartment6 = (Global.currentInteriorId == HLApartment6.interiorId) + + -- DLC: Bikers - Clubhouses + Global.Biker.isInsideClubhouse1 = (Global.currentInteriorId == BikerClubhouse1.interiorId) + Global.Biker.isInsideClubhouse2 = (Global.currentInteriorId == BikerClubhouse2.interiorId) + + -- DLC: Finance & Felony - Offices + Global.FinanceOffices.isInsideOffice1 = (Global.currentInteriorId == FinanceOffice1.currentInteriorId) + Global.FinanceOffices.isInsideOffice2 = (Global.currentInteriorId == FinanceOffice2.currentInteriorId) + Global.FinanceOffices.isInsideOffice3 = (Global.currentInteriorId == FinanceOffice3.currentInteriorId) + Global.FinanceOffices.isInsideOffice4 = (Global.currentInteriorId == FinanceOffice4.currentInteriorId) + + -- DLC: The Contract + Global.Security.isInsideOffice1 = (Global.currentInteriorId == MpSecurityOffice1.InteriorId) + Global.Security.isInsideOffice2 = (Global.currentInteriorId == MpSecurityOffice2.InteriorId) + Global.Security.isInsideOffice3 = (Global.currentInteriorId == MpSecurityOffice3.InteriorId) + Global.Security.isInsideOffice4 = (Global.currentInteriorId == MpSecurityOffice4.InteriorId) + end + + Wait(_scanDelay) + end +end) diff --git a/resources/[core]/bob74_ipl/lib/observers/officeCullHandler.lua b/resources/[core]/bob74_ipl/lib/observers/officeCullHandler.lua new file mode 100644 index 0000000..a2b7c0c --- /dev/null +++ b/resources/[core]/bob74_ipl/lib/observers/officeCullHandler.lua @@ -0,0 +1,35 @@ +CreateThread(function() + while true do + local sleep = 500 + + if Global.Security.isInsideOffice1 or Global.Security.isInsideOffice2 or Global.Security.isInsideOffice3 or Global.Security.isInsideOffice4 then + sleep = 0 + + if Global.Security.isInsideOffice1 then + EnableExteriorCullModelThisFrame(`bh1_05_build1`) + EnableExteriorCullModelThisFrame(`bh1_05_em`) + end + + if Global.Security.isInsideOffice2 then + EnableExteriorCullModelThisFrame(`hei_hw1_08_hotplaz01`) + EnableExteriorCullModelThisFrame(`hw1_08_hotplaz_rail`) + EnableExteriorCullModelThisFrame(`hw1_08_emissive_c`) + end + + if Global.Security.isInsideOffice3 then + EnableExteriorCullModelThisFrame(`hei_kt1_05_01`) + EnableExteriorCullModelThisFrame(`kt1_05_glue_b`) + EnableExteriorCullModelThisFrame(`kt1_05_kt_emissive_kt1_05`) + end + + if Global.Security.isInsideOffice4 then + EnableExteriorCullModelThisFrame(`hei_kt1_08_buildingtop_a`) + EnableExteriorCullModelThisFrame(`hei_kt1_08_kt1_emissive_ema`) + end + + DisableOcclusionThisFrame() + end + + Wait(sleep) + end +end) diff --git a/resources/[core]/bob74_ipl/lib/observers/officeSafeDoorHandler.lua b/resources/[core]/bob74_ipl/lib/observers/officeSafeDoorHandler.lua new file mode 100644 index 0000000..64b645c --- /dev/null +++ b/resources/[core]/bob74_ipl/lib/observers/officeSafeDoorHandler.lua @@ -0,0 +1,47 @@ +-- Delay between each attempt to open/close the doors corresponding to their state +local _scanDelay = 500 + +CreateThread(function() + while true do + local office = 0 + + -- Search for the current office to open/close the safes doors + if Global.FinanceOffices.isInsideOffice1 then + office = FinanceOffice1 + elseif Global.FinanceOffices.isInsideOffice2 then + office = FinanceOffice2 + elseif Global.FinanceOffices.isInsideOffice3 then + office = FinanceOffice3 + elseif Global.FinanceOffices.isInsideOffice4 then + office = FinanceOffice4 + end + + if office ~= 0 then + -- Office found, let's check the doors + + -- Check left door + doorHandle = office.Safe.GetDoorHandle(office.currentSafeDoors.hashL) + + if doorHandle ~= 0 then + if office.Safe.isLeftDoorOpen then + office.Safe.SetDoorState("left", true) + else + office.Safe.SetDoorState("left", false) + end + end + + -- Check right door + doorHandle = office.Safe.GetDoorHandle(office.currentSafeDoors.hashR) + + if doorHandle ~= 0 then + if office.Safe.isRightDoorOpen then + office.Safe.SetDoorState("right", true) + else + office.Safe.SetDoorState("right", false) + end + end + end + + Wait(_scanDelay) + end +end) diff --git a/resources/[core]/bob74_ipl/stream/bh1_14_0.ybn b/resources/[core]/bob74_ipl/stream/bh1_14_0.ybn new file mode 100644 index 0000000..fe5bd2f Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/bh1_14_0.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/hei_ap1_03_4.ybn b/resources/[core]/bob74_ipl/stream/hei_ap1_03_4.ybn new file mode 100644 index 0000000..3fec0ff Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/hei_ap1_03_4.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/hei_bh1_20_0.ybn b/resources/[core]/bob74_ipl/stream/hei_bh1_20_0.ybn new file mode 100644 index 0000000..a350c12 Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/hei_bh1_20_0.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/hei_ch3_08_17.ybn b/resources/[core]/bob74_ipl/stream/hei_ch3_08_17.ybn new file mode 100644 index 0000000..37e4571 Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/hei_ch3_08_17.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/hei_ch3_12_16.ybn b/resources/[core]/bob74_ipl/stream/hei_ch3_12_16.ybn new file mode 100644 index 0000000..2a572b3 Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/hei_ch3_12_16.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/hei_ch3_12_17.ybn b/resources/[core]/bob74_ipl/stream/hei_ch3_12_17.ybn new file mode 100644 index 0000000..21e3e3f Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/hei_ch3_12_17.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/hi@bh1_33_0.ybn b/resources/[core]/bob74_ipl/stream/hi@bh1_33_0.ybn new file mode 100644 index 0000000..548d721 Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/hi@bh1_33_0.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/id2_18_1.ybn b/resources/[core]/bob74_ipl/stream/id2_18_1.ybn new file mode 100644 index 0000000..780f52d Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/id2_18_1.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/lostmcgapfix.ymap b/resources/[core]/bob74_ipl/stream/lostmcgapfix.ymap new file mode 100644 index 0000000..88de0a8 Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/lostmcgapfix.ymap differ diff --git a/resources/[core]/bob74_ipl/stream/lr_cs4_04_0.ybn b/resources/[core]/bob74_ipl/stream/lr_cs4_04_0.ybn new file mode 100644 index 0000000..81c1e8e Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/lr_cs4_04_0.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/lr_cs4_10_3.ybn b/resources/[core]/bob74_ipl/stream/lr_cs4_10_3.ybn new file mode 100644 index 0000000..a38ed0d Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/lr_cs4_10_3.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/po1_05_4.ybn b/resources/[core]/bob74_ipl/stream/po1_05_4.ybn new file mode 100644 index 0000000..c031030 Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/po1_05_4.ybn differ diff --git a/resources/[core]/bob74_ipl/stream/vb_20_0.ybn b/resources/[core]/bob74_ipl/stream/vb_20_0.ybn new file mode 100644 index 0000000..23f4ffa Binary files /dev/null and b/resources/[core]/bob74_ipl/stream/vb_20_0.ybn differ diff --git a/resources/[core]/connectqueue/README.md b/resources/[core]/connectqueue/README.md new file mode 100644 index 0000000..1522d7c --- /dev/null +++ b/resources/[core]/connectqueue/README.md @@ -0,0 +1,95 @@ +# ConnectQueue +--- +Easy to use queue system for FiveM with: +- Simple API +- Priority System +- Config + - Ability for whitelist only + - Require steam + - Language options + +**Please report any bugs on the release thread [Here](https://forum.fivem.net/t/alpha-connectqueue-a-server-queue-system-fxs/22228) or through [GitHub](https://github.com/Nick78111/ConnectQueue/issues).** + +## How to install +--- +- Drop the folder inside your resources folder. +- Add `start connectqueue` inside your server.cfg. - *Preferrably at the top* +- Set convars to your liking. +- Open `connectqueue/server/sv_queue_config.lua` and edit to your liking. +- Renaming the resource may cause problems. + +## ConVars +--- + set sv_debugqueue true # prints debug messages to console + set sv_displayqueue true # shows queue count in the server name '[count] server name' + +## How to use / Examples +--- +To use the API add `server_script "@connectqueue/connectqueue.lua"` at the top of the `__resource.lua` file in question. +I would also suggest adding `dependency "connectqueue"` to it aswell. +You may now use any of the functions below, anywhere in that resource. + +### OnReady +This is called when the queue functions are ready to be used. +```Lua + Queue.OnReady(function() + print("HI") + end) +``` +All of the functions below must be called **AFTER** the queue is ready. + +### OnJoin +This is called when a player tries to join the server. +Calling `allow` with no arguments will let them through. +Calling `allow` with a string will prevent them from joining with the given message. +`allow` must be called or the player will hang on connecting... +```Lua +Queue.OnJoin(function(source, allow) + allow("No, you can't join") +end) +``` + +## AddPriority +Call this to add an identifier to the priority list. +The integer is how much power they have over other users with priority. +This function can take a table of ids or individually. +```Lua +-- individual +Queue.AddPriority("STEAM_0:1:33459672", 100) +Queue.AddPriority("steam:110000103fd1bb1", 10) +Queue.AddPriority("ip:127.0.0.1", 25) + +-- table +local prioritize = { + ["STEAM_0:1:33459672"] = 100, + ["steam:110000103fd1bb1"] = 10, + ["ip:127.0.0.1"] = 25, +} +Queue.AddPriority(prioritize) +``` + +## RemovePriority +Removes priority from a user. +```Lua +Queue.RemovePriority("STEAM_0:1:33459672") +``` + +## IsReady +Will return whether or not the queue's exports are ready to be called. +```Lua +print(Queue.IsReady()) +``` + +## Other Queue Functions +You can call every queue function within sh_queue.lua. +```Lua +local ids = Queue.Exports:GetIds(src) + +-- sets the player to position 1 in queue +Queue.Exports:SetPos(ids, 1) +-- returns whether or not the player has any priority +Queue.Exports:IsPriority(ids) +--- returns size of queue +Queue.Exports:GetSize() +-- plus many more... +``` \ No newline at end of file diff --git a/resources/[core]/connectqueue/connectqueue.lua b/resources/[core]/connectqueue/connectqueue.lua new file mode 100644 index 0000000..02cb5cf --- /dev/null +++ b/resources/[core]/connectqueue/connectqueue.lua @@ -0,0 +1,62 @@ +Queue = {} +Queue.Ready = false +Queue.Exports = nil +Queue.ReadyCbs = {} +Queue.CurResource = GetCurrentResourceName() + +if Queue.CurResource == "connectqueue" then return end + +function Queue.OnReady(cb) + if not cb then return end + if Queue.IsReady() then cb() return end + table.insert(Queue.ReadyCbs, cb) +end + +function Queue.OnJoin(cb) + if not cb then return end + Queue.Exports:OnJoin(cb, Queue.CurResource) +end + +function Queue.AddPriority(id, power, temp) + if not Queue.IsReady() then return end + Queue.Exports:AddPriority(id, power, temp) +end + +function Queue.RemovePriority(id) + if not Queue.IsReady() then return end + Queue.Exports:RemovePriority(id) +end + +function Queue.IsReady() + return Queue.Ready +end + +function Queue.LoadExports() + Queue.Exports = exports.connectqueue:GetQueueExports() + Queue.Ready = true + Queue.ReadyCallbacks() +end + +function Queue.ReadyCallbacks() + if not Queue.IsReady() then return end + for _, cb in ipairs(Queue.ReadyCbs) do + cb() + end +end + +AddEventHandler("onResourceStart", function(resource) + if resource == "connectqueue" then + while GetResourceState(resource) ~= "started" do Citizen.Wait(0) end + Citizen.Wait(1) + Queue.LoadExports() + end +end) + +AddEventHandler("onResourceStop", function(resource) + if resource == "connectqueue" then + Queue.Ready = false + Queue.Exports = nil + end +end) + +SetTimeout(1, function() Queue.LoadExports() end) \ No newline at end of file diff --git a/resources/[core]/connectqueue/fxmanifest.lua b/resources/[core]/connectqueue/fxmanifest.lua new file mode 100644 index 0000000..1c37ca2 --- /dev/null +++ b/resources/[core]/connectqueue/fxmanifest.lua @@ -0,0 +1,8 @@ +fx_version 'bodacious' +game 'common' + +server_script "server/sv_queue_config.lua" +server_script "connectqueue.lua" + +server_script "shared/sh_queue.lua" +client_script "shared/sh_queue.lua" diff --git a/resources/[core]/connectqueue/server/sv_queue_config.lua b/resources/[core]/connectqueue/server/sv_queue_config.lua new file mode 100644 index 0000000..d463d5f --- /dev/null +++ b/resources/[core]/connectqueue/server/sv_queue_config.lua @@ -0,0 +1,61 @@ +Config = {} + +-- priority list can be any identifier. (hex steamid, steamid32, ip) Integer = power over other people with priority +-- a lot of the steamid converting websites are broken rn and give you the wrong steamid. I use https://steamid.xyz/ with no problems. +-- you can also give priority through the API, read the examples/readme. +Config.Priority = { + ["STEAM_0:1:0000####"] = 1, + ["steam:110000######"] = 25, + ["ip:127.0.0.0"] = 85 +} + +-- require people to run steam +Config.RequireSteam = false + +-- "whitelist" only server +Config.PriorityOnly = false + +-- disables hardcap, should keep this true +Config.DisableHardCap = true + +-- will remove players from connecting if they don't load within: __ seconds; May need to increase this if you have a lot of downloads. +-- i have yet to find an easy way to determine whether they are still connecting and downloading content or are hanging in the loadscreen. +-- This may cause session provider errors if it is too low because the removed player may still be connecting, and will let the next person through... +-- even if the server is full. 10 minutes should be enough +Config.ConnectTimeOut = 600 + +-- will remove players from queue if the server doesn't recieve a message from them within: __ seconds +Config.QueueTimeOut = 90 + +-- will give players temporary priority when they disconnect and when they start loading in +Config.EnableGrace = false + +-- how much priority power grace time will give +Config.GracePower = 5 + +-- how long grace time lasts in seconds +Config.GraceTime = 480 + +Config.AntiSpam = false +Config.AntiSpamTimer = 30 +Config.PleaseWait = "Please wait %f seconds. The connection will start automatically!" + +-- on resource start, players can join the queue but will not let them join for __ milliseconds +-- this will let the queue settle and lets other resources finish initializing +Config.JoinDelay = 30000 + +-- will show how many people have temporary priority in the connection message +Config.ShowTemp = false + +-- simple localization +Config.Language = { + joining = "\xF0\x9F\x8E\x89Joining...", + connecting = "\xE2\x8F\xB3Connecting...", + idrr = "\xE2\x9D\x97[Queue] Error: Couldn't retrieve any of your id's, try restarting.", + err = "\xE2\x9D\x97[Queue] There was an error", + pos = "\xF0\x9F\x90\x8CYou are %d/%d in queue \xF0\x9F\x95\x9C%s", + connectingerr = "\xE2\x9D\x97[Queue] Error: Error adding you to connecting list", + timedout = "\xE2\x9D\x97[Queue] Error: Timed out?", + wlonly = "\xE2\x9D\x97[Queue] You must be whitelisted to join this server", + steam = "\xE2\x9D\x97 [Queue] Error: Steam must be running" +} diff --git a/resources/[core]/connectqueue/shared/sh_queue.lua b/resources/[core]/connectqueue/shared/sh_queue.lua new file mode 100644 index 0000000..46da742 --- /dev/null +++ b/resources/[core]/connectqueue/shared/sh_queue.lua @@ -0,0 +1,883 @@ +if not IsDuplicityVersion() then + Citizen.CreateThread(function() + while true do + Citizen.Wait(0) + if NetworkIsSessionStarted() then + TriggerServerEvent("Queue:playerActivated") + return + end + end + end) + return +end + +local Queue = {} +-- EDIT THESE IN SERVER.CFG + OTHER OPTIONS IN CONFIG.LUA +Queue.MaxPlayers = GetConvarInt("sv_maxclients", 30) +Queue.Debug = GetConvar("sv_debugqueue", "true") == "true" and true or false +Queue.DisplayQueue = GetConvar("sv_displayqueue", "true") == "true" and true or false +Queue.InitHostName = GetConvar("sv_hostname") + + +-- This is needed because msgpack will break when tables are too large +local _Queue = {} +_Queue.QueueList = {} +_Queue.PlayerList = {} +_Queue.PlayerCount = 0 +_Queue.Priority = {} +_Queue.Connecting = {} +_Queue.JoinCbs = {} +_Queue.TempPriority = {} +_Queue.JoinDelay = GetGameTimer() + Config.JoinDelay and Config.JoinDelay or 0 + +local tostring = tostring +local tonumber = tonumber +local ipairs = ipairs +local pairs = pairs +local print = print +local string_len = string.len +local string_sub = string.sub +local string_format = string.format +local string_lower = string.lower +local math_abs = math.abs +local math_floor = math.floor +local math_random = math.random +local os_time = os.time +local table_insert = table.insert +local table_remove = table.remove + +Queue.InitHostName = Queue.InitHostName ~= "default FXServer" and Queue.InitHostName or false + +for id, power in pairs(Config.Priority) do + _Queue.Priority[string_lower(id)] = power +end + +function Queue:DebugPrint(msg) + if Queue.Debug then + msg = "^3QUEUE: ^0" .. tostring(msg) .. "^7" + print(msg) + end +end + +function Queue:HexIdToSteamId(hexId) + local cid = math_floor(tonumber(string_sub(hexId, 7), 16)) + local steam64 = math_floor(tonumber(string_sub( cid, 2))) + local a = steam64 % 2 == 0 and 0 or 1 + local b = math_floor(math_abs(6561197960265728 - steam64 - a) / 2) + local sid = "steam_0:"..a..":"..(a == 1 and b -1 or b) + return sid +end + +function Queue:IsSteamRunning(src) + for _, id in ipairs(GetPlayerIdentifiers(src)) do + if string_sub(id, 1, 5) == "steam" then + return true + end + end + + return false +end + +function Queue:GetPlayerCount() + return _Queue.PlayerCount +end + +function Queue:GetSize() + return #_Queue.QueueList +end + +function Queue:ConnectingSize() + return #_Queue.Connecting +end + +function Queue:GetQueueList() + return _Queue.QueueList +end + +function Queue:GetPriorityList() + return _Queue.Priority +end + +function Queue:GetPlayerList() + return _Queue.PlayerList +end + +function Queue:GetTempPriorityList() + return _Queue.TempPriority +end + +function Queue:GetConnectingList() + return _Queue.Connecting +end + +function Queue:IsInQueue(ids, rtnTbl, bySource, connecting) + local connList = Queue:GetConnectingList() + local queueList = Queue:GetQueueList() + + for genericKey1, genericValue1 in ipairs(connecting and connList or queueList) do + local inQueue = false + + if not bySource then + for genericKey2, genericValue2 in ipairs(genericValue1.ids) do + if inQueue then break end + + for genericKey3, genericValue3 in ipairs(ids) do + if genericValue3 == genericValue2 then inQueue = true break end + end + end + else + inQueue = ids == genericValue1.source + end + + if inQueue then + if rtnTbl then + return genericKey1, connecting and connList[genericKey1] or queueList[genericKey1] + end + + return true + end + end + + return false +end + +function Queue:IsPriority(ids) + local prio = false + local tempPower, tempEnd = Queue:HasTempPriority(ids) + local prioList = Queue:GetPriorityList() + + for _, id in ipairs(ids) do + id = string_lower(id) + + if prioList[id] then prio = prioList[id] break end + + if string_sub(id, 1, 5) == "steam" then + local steamid = Queue:HexIdToSteamId(id) + if prioList[steamid] then prio = prioList[steamid] break end + end + end + + if tempPower or prio then + if tempPower and prio then + return tempPower > prio and tempPower or prio + else + return tempPower or prio + end + end + + return false +end + +function Queue:HasTempPriority(ids) + local tmpPrio = Queue:GetTempPriorityList() + + for _, id in pairs(ids) do + id = string_lower(id) + + if tmpPrio[id] then return tmpPrio[id].power, tmpPrio[id].endTime, id end + + if string_sub(id, 1, 5) == "steam" then + local steamid = Queue:HexIdToSteamId(id) + if tmpPrio[steamid] then return tmpPrio[steamid].power, tmpPrio[steamid].endTime, id end + end + end + + return false +end + +function Queue:AddToQueue(ids, connectTime, name, src, deferrals) + if Queue:IsInQueue(ids) then return end + + local tmp = { + source = src, + ids = ids, + name = name, + priority = Queue:IsPriority(ids) or (src == "debug" and math_random(0, 15)), + timeout = 0, + deferrals = deferrals, + firstconnect = connectTime, + queuetime = function() return (os_time() - connectTime) end + } + + local _pos = false + local queueCount = Queue:GetSize() + 1 + local queueList = Queue:GetQueueList() + + for pos, data in ipairs(queueList) do + if tmp.priority then + if not data.priority then + _pos = pos + else + if tmp.priority > data.priority then + _pos = pos + end + end + + if _pos then + Queue:DebugPrint(string_format("%s[%s] was prioritized and placed %d/%d in queue", tmp.name, ids[1], _pos, queueCount)) + break + end + end + end + + if not _pos then + _pos = Queue:GetSize() + 1 + Queue:DebugPrint(string_format("%s[%s] was placed %d/%d in queue", tmp.name, ids[1], _pos, queueCount)) + end + + table_insert(queueList, _pos, tmp) +end + +function Queue:RemoveFromQueue(ids, bySource, byIndex) + local queueList = Queue:GetQueueList() + + if byIndex then + if queueList[byIndex] then + table_remove(queueList, byIndex) + end + + return + end + + if Queue:IsInQueue(ids, false, bySource) then + local pos, data = Queue:IsInQueue(ids, true, bySource) + table_remove(queueList, pos) + end +end + +function Queue:TempSize() + local count = 0 + + for _pos, data in pairs(Queue:GetQueueList()) do + if Queue:HasTempPriority(data.ids) then count = count +1 end + end + + return count > 0 and count or false +end + +function Queue:IsInConnecting(ids, bySource, refresh) + local inConnecting, tbl = Queue:IsInQueue(ids, refresh and true or false, bySource and true or false, true) + + if not inConnecting then return false end + + if refresh and inConnecting and tbl then + Queue:GetConnectingList()[inConnecting].timeout = 0 + end + + return true +end + +function Queue:RemoveFromConnecting(ids, bySource, byIndex) + local connList = Queue:GetConnectingList() + + if byIndex then + if connList[byIndex] then + table_remove(connList, byIndex) + end + + return + end + + for genericKey1, genericValue1 in ipairs(connList) do + local inConnecting = false + + if not bySource then + for genericKey2, genericValue2 in ipairs(genericValue1.ids) do + if inConnecting then break end + + for genericKey3, genericValue3 in ipairs(ids) do + if genericValue3 == genericValue2 then inConnecting = true break end + end + end + else + inConnecting = ids == genericValue1.source + end + + if inConnecting then + table_remove(connList, genericKey1) + return true + end + end + + return false +end + +function Queue:AddToConnecting(ids, ignorePos, autoRemove, done) + local function remove() + if not autoRemove then return end + + done(Config.Language.connectingerr) + Queue:RemoveFromConnecting(ids) + Queue:RemoveFromQueue(ids) + Queue:DebugPrint("Player could not be added to the connecting list") + end + + local connList = Queue:GetConnectingList() + + if Queue:ConnectingSize() + Queue:GetPlayerCount() + 1 > Queue.MaxPlayers then remove() return false end + + if ids[1] == "debug" then + table_insert(connList, {source = ids[1], ids = ids, name = ids[1], firstconnect = ids[1], priority = ids[1], timeout = 0}) + return true + end + + if Queue:IsInConnecting(ids) then Queue:RemoveFromConnecting(ids) end + + local pos, data = Queue:IsInQueue(ids, true) + if not ignorePos and (not pos or pos > 1) then remove() return false end + + table_insert(connList, data) + Queue:RemoveFromQueue(ids) + + return true +end + +function Queue:GetIds(src) + local ids = GetPlayerIdentifiers(src) + local ip = GetPlayerEndpoint(src) + + ids = (ids and ids[1]) and ids or (ip and {"ip:" .. ip} or false) + ids = ids ~= nil and ids or false + + if ids and #ids > 1 then + for k, id in ipairs(ids) do + if string_sub(id, 1, 3) == "ip:" and not Queue:IsPriority({id}) then table_remove(ids, k) end + end + end + + return ids +end + +function Queue:AddPriority(id, power, temp) + if not id then return false end + + if type(id) == "table" then + for _id, power in pairs(id) do + if _id and type(_id) == "string" and power and type(power) == "number" then + Queue:GetPriorityList()[_id] = power + else + Queue:DebugPrint("Error adding a priority id, invalid data passed") + return false + end + end + + return true + end + + power = (power and type(power) == "number") and power or 10 + + if temp then + local tempPower, tempEnd, tempId = Queue:HasTempPriority({id}) + id = tempId or id + + Queue:GetTempPriorityList()[string_lower(id)] = {power = power, endTime = os_time() + temp} + else + Queue:GetPriorityList()[string_lower(id)] = power + end + + return true +end + +function Queue:RemovePriority(id) + if not id then return false end + id = string_lower(id) + Queue:GetPriorityList()[id] = nil + return true +end + +function Queue:UpdatePosData(src, ids, deferrals) + local pos, data = Queue:IsInQueue(ids, true) + data.source = src + data.ids = ids + data.timeout = 0 + data.firstconnect = os_time() + data.name = GetPlayerName(src) + data.deferrals = deferrals +end + +function Queue:NotFull(firstJoin) + local canJoin = Queue:GetPlayerCount() + Queue:ConnectingSize() < Queue.MaxPlayers + if firstJoin and canJoin then canJoin = Queue:GetSize() <= 1 end + return canJoin +end + +function Queue:SetPos(ids, newPos) + if newPos <= 0 or newPos > Queue:GetSize() then return false end + + local pos, data = Queue:IsInQueue(ids, true) + local queueList = Queue:GetQueueList() + + table_remove(queueList, pos) + table_insert(queueList, newPos, data) +end + +function Queue:CanJoin(src, cb) + local allow = true + + for _, data in ipairs(_Queue.JoinCbs) do + local await = true + + data.func(src, function(reason) + if reason and type(reason) == "string" then allow = false cb(reason) end + await = false + end) + + while await do Citizen.Wait(0) end + + if not allow then return end + end + + if allow then cb(false) end +end + +function Queue:OnJoin(cb, resource) + if not cb then return end + + local tmp = {resource = resource, func = cb} + table_insert(_Queue.JoinCbs, tmp) +end + +exports("GetQueueExports", function() + return Queue +end) + +local function playerConnect(name, setKickReason, deferrals) + local src = source + local ids = Queue:GetIds(src) + local name = GetPlayerName(src) + local connectTime = os_time() + local connecting = true + + deferrals.defer() + + if Config.AntiSpam then + for i=Config.AntiSpamTimer,0,-1 do + deferrals.update(string.format(Config.PleaseWait, i)) + Citizen.Wait(1000) + end + end + + Citizen.CreateThread(function() + while connecting do + Citizen.Wait(100) + if not connecting then return end + deferrals.update(Config.Language.connecting) + end + end) + + Citizen.Wait(500) + + local function done(msg, _deferrals) + connecting = false + + local deferrals = _deferrals or deferrals + + if msg then deferrals.update(tostring(msg) or "") end + + Citizen.Wait(500) + + if not msg then + deferrals.done() + if Config.EnableGrace then Queue:AddPriority(ids[1], Config.GracePower, Config.GraceTime) end + else + deferrals.done(tostring(msg) or "") CancelEvent() + end + + return + end + + local function update(msg, _deferrals) + local deferrals = _deferrals or deferrals + connecting = false + deferrals.update(tostring(msg) or "") + end + + if not ids then + -- prevent joining + done(Config.Language.idrr) + CancelEvent() + Queue:DebugPrint("Dropped " .. name .. ", couldn't retrieve any of their id's") + return + end + + if Config.RequireSteam and not Queue:IsSteamRunning(src) then + -- prevent joining + done(Config.Language.steam) + CancelEvent() + return + end + + local allow + + Queue:CanJoin(src, function(reason) + if reason == nil or allow ~= nil then return end + if reason == false or #_Queue.JoinCbs <= 0 then allow = true return end + + if reason then + -- prevent joining + allow = false + done(reason and tostring(reason) or "You were blocked from joining") + Queue:RemoveFromQueue(ids) + Queue:RemoveFromConnecting(ids) + Queue:DebugPrint(string_format("%s[%s] was blocked from joining; Reason: %s", name, ids[1], reason)) + CancelEvent() + return + end + + allow = true + end) + + while allow == nil do Citizen.Wait(0) end + if not allow then return end + + if Config.PriorityOnly and not Queue:IsPriority(ids) then done(Config.Language.wlonly) return end + + local rejoined = false + + if Queue:IsInConnecting(ids, false, true) then + Queue:RemoveFromConnecting(ids) + + if Queue:NotFull() then + -- let them in the server + + if not Queue:IsInQueue(ids) then + Queue:AddToQueue(ids, connectTime, name, src, deferrals) + end + + local added = Queue:AddToConnecting(ids, true, true, done) + if not added then CancelEvent() return end + done() + + return + else + rejoined = true + end + end + + if Queue:IsInQueue(ids) then + rejoined = true + Queue:UpdatePosData(src, ids, deferrals) + Queue:DebugPrint(string_format("%s[%s] has rejoined queue after cancelling", name, ids[1])) + else + Queue:AddToQueue(ids, connectTime, name, src, deferrals) + + if rejoined then + Queue:SetPos(ids, 1) + rejoined = false + end + end + + local pos, data = Queue:IsInQueue(ids, true) + + if not pos or not data then + done(Config.Language.err .. " [1]") + + Queue:RemoveFromQueue(ids) + Queue:RemoveFromConnecting(ids) + + CancelEvent() + return + end + + if Queue:NotFull(true) and _Queue.JoinDelay <= GetGameTimer() then + -- let them in the server + local added = Queue:AddToConnecting(ids, true, true, done) + if not added then CancelEvent() return end + + done() + Queue:DebugPrint(name .. "[" .. ids[1] .. "] is loading into the server") + + return + end + + update(string_format(Config.Language.pos .. ((Queue:TempSize() and Config.ShowTemp) and " (" .. Queue:TempSize() .. " temp)" or "00:00:00"), pos, Queue:GetSize(), "")) + + if rejoined then return end + + while true do + Citizen.Wait(500) + + local pos, data = Queue:IsInQueue(ids, true) + + local function remove(msg) + if data then + if msg then + update(msg, data.deferrals) + end + + Queue:RemoveFromQueue(data.source, true) + Queue:RemoveFromConnecting(data.source, true) + else + Queue:RemoveFromQueue(ids) + Queue:RemoveFromConnecting(ids) + end + end + + if not data or not data.deferrals or not data.source or not pos then + remove("[Queue] Removed from queue, queue data invalid :(") + Queue:DebugPrint(tostring(name .. "[" .. ids[1] .. "] was removed from the queue because they had invalid data")) + return + end + + local endPoint = GetPlayerEndpoint(data.source) + if not endPoint then data.timeout = data.timeout + 0.5 else data.timeout = 0 end + + if data.timeout >= Config.QueueTimeOut and os_time() - connectTime > 5 then + remove("[Queue] Removed due to timeout") + Queue:DebugPrint(name .. "[" .. ids[1] .. "] was removed from the queue because they timed out") + return + end + + if pos <= 1 and Queue:NotFull() and _Queue.JoinDelay <= GetGameTimer() then + -- let them in the server + local added = Queue:AddToConnecting(ids) + + update(Config.Language.joining, data.deferrals) + Citizen.Wait(500) + + if not added then + done(Config.Language.connectingerr) + CancelEvent() + return + end + + done(nil, data.deferrals) + + if Config.EnableGrace then Queue:AddPriority(ids[1], Config.GracePower, Config.GraceTime) end + + Queue:RemoveFromQueue(ids) + Queue:DebugPrint(name .. "[" .. ids[1] .. "] is loading into the server") + return + end + + local seconds = data.queuetime() + local qTime = string_format("%02d", math_floor((seconds % 86400) / 3600)) .. ":" .. string_format("%02d", math_floor((seconds % 3600) / 60)) .. ":" .. string_format("%02d", math_floor(seconds % 60)) + + local msg = string_format(Config.Language.pos .. ((Queue:TempSize() and Config.ShowTemp) and " (" .. Queue:TempSize() .. " temp)" or ""), pos, Queue:GetSize(), qTime) + update(msg, data.deferrals) + end +end +AddEventHandler("playerConnecting", playerConnect) + +Citizen.CreateThread(function() + local function remove(data, pos, msg) + if data and data.source then + Queue:RemoveFromQueue(data.source, true) + Queue:RemoveFromConnecting(data.source, true) + elseif pos then + table_remove(Queue:GetQueueList(), pos) + end + end + + while true do + Citizen.Wait(1000) + + local i = 1 + + while i <= Queue:ConnectingSize() do + local data = Queue:GetConnectingList()[i] + + local endPoint = GetPlayerEndpoint(data.source) + + data.timeout = data.timeout + 1 + + if ((data.timeout >= 300 and not endPoint) or data.timeout >= Config.ConnectTimeOut) and data.source ~= "debug" and os_time() - data.firstconnect > 5 then + remove(data) + Queue:DebugPrint(data.name .. "[" .. data.ids[1] .. "] was removed from the connecting queue because they timed out") + else + i = i + 1 + end + end + + for id, data in pairs(Queue:GetTempPriorityList()) do + if os_time() >= data.endTime then + Queue:GetTempPriorityList()[id] = nil + end + end + + Queue.MaxPlayers = GetConvarInt("sv_maxclients", 30) + Queue.Debug = GetConvar("sv_debugqueue", "true") == "true" and true or false + Queue.DisplayQueue = GetConvar("sv_displayqueue", "true") == "true" and true or false + + local qCount = Queue:GetSize() + + if Queue.DisplayQueue then + if Queue.InitHostName then + SetConvar("sv_hostname", (qCount > 0 and "[" .. tostring(qCount) .. "] " or "") .. Queue.InitHostName) + else + Queue.InitHostName = GetConvar("sv_hostname") + Queue.InitHostName = Queue.InitHostName ~= "default FXServer" and Queue.InitHostName or false + end + end + end +end) + +RegisterServerEvent("Queue:playerActivated") +AddEventHandler("Queue:playerActivated", function() + local src = source + local ids = Queue:GetIds(src) + + if not Queue:GetPlayerList()[src] then + _Queue.PlayerCount = Queue:GetPlayerCount() + 1 + Queue:GetPlayerList()[src] = true + Queue:RemoveFromQueue(ids) + Queue:RemoveFromConnecting(ids) + end +end) + +AddEventHandler("playerDropped", function() + local src = source + local ids = Queue:GetIds(src) + + if Queue:GetPlayerList()[src] then + _Queue.PlayerCount = Queue:GetPlayerCount() - 1 + Queue:GetPlayerList()[src] = nil + Queue:RemoveFromQueue(ids) + Queue:RemoveFromConnecting(ids) + if Config.EnableGrace then Queue:AddPriority(ids[1], Config.GracePower, Config.GraceTime) end + end +end) + +AddEventHandler("onResourceStop", function(resource) + if Queue.DisplayQueue and Queue.InitHostName and resource == GetCurrentResourceName() then SetConvar("sv_hostname", Queue.InitHostName) end + + for k, data in ipairs(_Queue.JoinCbs) do + if data.resource == resource then + table_remove(_Queue.JoinCbs, k) + end + end +end) + +if Config.DisableHardCap then + Queue:DebugPrint("^1 [connectqueue] Disabling hardcap ^7") + + AddEventHandler("onResourceStarting", function(resource) + if resource == "hardcap" then CancelEvent() return end + end) + + StopResource("hardcap") +end + +local testAdds = 0 +local commands = {} + +commands.addq = function() + Queue:DebugPrint("ADDED DEBUG QUEUE") + Queue:AddToQueue({"steam:110000103fd1bb1"..testAdds}, os_time(), "TestAdd: " .. testAdds, "debug") + testAdds = testAdds + 1 +end + +commands.removeq = function(args) + args[1] = tonumber(args[1]) + local name = Queue:GetQueueList()[args[1]] and Queue:GetQueueList()[args[1]].name or nil + Queue:RemoveFromQueue(nil, nil, args[1]) + Queue:DebugPrint("REMOVED " .. tostring(name) .. " FROM THE QUEUE") +end + +commands.printq = function() + Queue:DebugPrint("CURRENT QUEUE LIST") + + for pos, data in ipairs(Queue:GetQueueList()) do + Queue:DebugPrint(pos .. ": [src: " .. data.source .. "] " .. data.name .. "[" .. data.ids[1] .. "] | Priority: " .. (tostring(data.priority and data.priority or false)) .. " | Last Msg: " .. (data.source ~= "debug" and GetPlayerLastMsg(data.source) or "debug") .. " | Timeout: " .. data.timeout .. " | Queue Time: " .. data.queuetime() .. " Seconds") + end +end + +commands.addc = function() + Queue:AddToConnecting({"debug"}) + Queue:DebugPrint("ADDED DEBUG CONNECTING QUEUE") +end + +commands.removec = function(args) + args[1] = tonumber(args[1]) + local name = Queue:GetConnectingList()[args[1]] and Queue:GetConnectingList()[args[1]].name or nil + Queue:RemoveFromConnecting(nil, nil, args[1]) + Queue:DebugPrint("REMOVED " .. tostring(name) .. " FROM THE CONNECTING LIST") +end + +commands.printc = function() + Queue:DebugPrint("CURRENT CONNECTING LIST") + + for pos, data in ipairs(Queue:GetConnectingList()) do + Queue:DebugPrint(pos .. ": [src: " .. data.source .. "] " .. data.name .. "[" .. data.ids[1] .. "] | Priority: " .. (tostring(data.priority and data.priority or false)) .. " | Last Msg: " .. (data.source ~= "debug" and GetPlayerLastMsg(data.source) or "debug") .. " | Timeout: " .. data.timeout) + end +end + +commands.printl = function() + for k, joined in pairs(Queue:GetPlayerList()) do + Queue:DebugPrint(k .. ": " .. tostring(joined)) + end +end + +commands.printp = function() + Queue:DebugPrint("CURRENT PRIORITY LIST") + + for id, power in pairs(Queue:GetPriorityList()) do + Queue:DebugPrint(id .. ": " .. tostring(power)) + end +end + +commands.printcount = function() + Queue:DebugPrint("Player Count: " .. Queue:GetPlayerCount()) +end + +commands.printtp = function() + Queue:DebugPrint("CURRENT TEMP PRIORITY LIST") + + for k, data in pairs(Queue:GetTempPriorityList()) do + Queue:DebugPrint(k .. ": Power: " .. tostring(data.power) .. " | EndTime: " .. tostring(data.endTime) .. " | CurTime: " .. tostring(os_time())) + end +end + +commands.removetp = function(args) + if not args[1] then return end + + Queue:GetTempPriorityList()[args[1]] = nil + Queue:DebugPrint("REMOVED " .. args[1] .. " FROM THE TEMP PRIORITY LIST") +end + +commands.setpos = function(args) + if not args[1] or not args[2] then return end + + args[1], args[2] = tonumber(args[1]), tonumber(args[2]) + + local data = Queue:GetQueueList()[args[1]] + + Queue:SetPos(data.ids, args[2]) + + Queue:DebugPrint("SET " .. data.name .. "'s QUEUE POSITION TO: " .. args[2]) +end + +commands.setdata = function(args) + if not args[1] or not args[2] or not args[3] then return end + args[1] = tonumber(args[1]) + + local num = tonumber(args[3]) + local data = Queue:GetQueueList()[args[1]] + + if args[2] == "queuetime" then + local time = data.queuetime() + local dif = time - num + + data.firstconnect = data.firstconnect + dif + data.queuetime = function() return (os_time() - data.firstconnect) end + else + data[args[2]] = num and num or args[3] + end + + Queue:DebugPrint("SET " .. data.name .. "'s " .. args[2] .. " DATA TO " .. args[3]) +end + +commands.commands = function() + for cmd, func in pairs(commands) do + Queue:DebugPrint(tostring(cmd)) + end +end + +AddEventHandler("rconCommand", function(command, args) + if command == "queue" and commands[args[1]] then + command = args[1] + table_remove(args, 1) + commands[command](args) + CancelEvent() + end +end) diff --git a/resources/[core]/illenium-appearance/client/blips.lua b/resources/[core]/illenium-appearance/client/blips.lua new file mode 100644 index 0000000..5450748 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/blips.lua @@ -0,0 +1,85 @@ +local Blips = {} +local client = client + +local function ShowBlip(blipConfig, blip) + if blip.job and blip.job ~= client.job.name then + return false + elseif blip.gang and blip.gang ~= client.gang.name then + return false + end + + if Config.RCoreTattoosCompatibility and blip.type == "tattoo" then + return false + end + + return (blipConfig.Show and blip.showBlip == nil) or blip.showBlip +end + +local function CreateBlip(blipConfig, coords) + local blip = AddBlipForCoord(coords.x, coords.y, coords.z) + SetBlipSprite(blip, blipConfig.Sprite) + SetBlipColour(blip, blipConfig.Color) + SetBlipScale(blip, blipConfig.Scale) + SetBlipAsShortRange(blip, true) + BeginTextCommandSetBlipName("STRING") + AddTextComponentString(blipConfig.Name) + EndTextCommandSetBlipName(blip) + return blip +end + +local function SetupBlips() + for k, _ in pairs(Config.Stores) do + local blipConfig = Config.Blips[Config.Stores[k].type] + if ShowBlip(blipConfig, Config.Stores[k]) then + local blip = CreateBlip(blipConfig, Config.Stores[k].coords) + Blips[#Blips + 1] = blip + end + end +end + +function ResetBlips() + if Config.ShowNearestShopOnly then + return + end + + for i = 1, #Blips do + RemoveBlip(Blips[i]) + end + Blips = {} + SetupBlips() +end + +local function ShowNearestShopBlip() + for k in pairs(Config.Blips) do + Blips[k] = 0 + end + while true do + local coords = GetEntityCoords(cache.ped) + for shopType, blipConfig in pairs(Config.Blips) do + local closest = 1000000 + local closestCoords + + for _, shop in pairs(Config.Stores) do + if shop.type == shopType and ShowBlip(blipConfig, shop) then + local dist = #(coords - vector3(shop.coords.xyz)) + if dist < closest then + closest = dist + closestCoords = shop.coords + end + end + end + if DoesBlipExist(Blips[shopType]) then + RemoveBlip(Blips[shopType]) + end + + if closestCoords then + Blips[shopType] = CreateBlip(blipConfig, closestCoords) + end + end + Wait(Config.NearestShopBlipUpdateDelay) + end +end + +if Config.ShowNearestShopOnly then + CreateThread(ShowNearestShopBlip) +end diff --git a/resources/[core]/illenium-appearance/client/client.lua b/resources/[core]/illenium-appearance/client/client.lua new file mode 100644 index 0000000..d419f82 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/client.lua @@ -0,0 +1,756 @@ +local client = client +local reloadSkinTimer = GetGameTimer() + +local function LoadPlayerUniform(reset) + if reset then + TriggerServerEvent("illenium-appearance:server:syncUniform", nil) + return + end + lib.callback("illenium-appearance:server:getUniform", false, function(uniformData) + if not uniformData then + return + end + if Config.BossManagedOutfits then + local result = lib.callback.await("illenium-appearance:server:getManagementOutfits", false, uniformData.type, Framework.GetGender()) + local uniform = nil + for i = 1, #result, 1 do + if result[i].name == uniformData.name then + uniform = { + type = uniformData.type, + name = result[i].name, + model = result[i].model, + components = result[i].components, + props = result[i].props, + disableSave = true, + } + break + end + end + + if not uniform then + TriggerServerEvent("illenium-appearance:server:syncUniform", nil) -- Uniform doesn't exist anymore + return + end + + TriggerEvent("illenium-appearance:client:changeOutfit", uniform) + else + local outfits = Config.Outfits[uniformData.jobName][uniformData.gender] + local uniform = nil + for i = 1, #outfits, 1 do + if outfits[i].name == uniformData.label then + uniform = outfits[i] + break + end + end + + if not uniform then + TriggerServerEvent("illenium-appearance:server:syncUniform", nil) -- Uniform doesn't exist anymore + return + end + + uniform.jobName = uniformData.jobName + uniform.gender = uniformData.gender + + TriggerEvent("illenium-appearance:client:loadJobOutfit", uniform) + end + end) +end + +function InitAppearance() + Framework.UpdatePlayerData() + lib.callback("illenium-appearance:server:getAppearance", false, function(appearance) + if not appearance then + return + end + + client.setPlayerAppearance(appearance) + if Config.PersistUniforms then + LoadPlayerUniform() + end + end) + ResetBlips() + if Config.BossManagedOutfits then + Management.AddItems() + end + RestorePlayerStats() +end + +AddEventHandler("onResourceStart", function(resource) + if resource == GetCurrentResourceName() then + InitAppearance() + end +end) + +local function getNewCharacterConfig() + local config = GetDefaultConfig() + config.enableExit = false + + config.ped = Config.NewCharacterSections.Ped + config.headBlend = Config.NewCharacterSections.HeadBlend + config.faceFeatures = Config.NewCharacterSections.FaceFeatures + config.headOverlays = Config.NewCharacterSections.HeadOverlays + config.components = Config.NewCharacterSections.Components + config.props = Config.NewCharacterSections.Props + config.tattoos = not Config.RCoreTattoosCompatibility and Config.NewCharacterSections.Tattoos + + return config +end + +function SetInitialClothes(initial) + client.setPlayerModel(initial.Model) + -- Fix for tattoo's appearing when creating a new character + local ped = cache.ped + client.setPedTattoos(ped, {}) + client.setPedComponents(ped, initial.Components) + client.setPedProps(ped, initial.Props) + client.setPedHair(ped, initial.Hair, {}) + ClearPedDecorations(ped) +end + +function InitializeCharacter(gender, onSubmit, onCancel) + SetInitialClothes(Config.InitialPlayerClothes[gender]) + local config = getNewCharacterConfig() + TriggerServerEvent("illenium-appearance:server:ChangeRoutingBucket") + client.startPlayerCustomization(function(appearance) + if (appearance) then + TriggerServerEvent("illenium-appearance:server:saveAppearance", appearance) + if onSubmit then + onSubmit() + end + elseif onCancel then + onCancel() + end + Framework.CachePed() + TriggerServerEvent("illenium-appearance:server:ResetRoutingBucket") + end, config) +end + +function OpenShop(config, isPedMenu, shopType) + lib.callback("illenium-appearance:server:hasMoney", false, function(hasMoney, money) + if not hasMoney and not isPedMenu then + lib.notify({ + title = "Cannot Enter Shop", + description = "Not enough cash. Need $" .. money, + type = "error", + position = Config.NotifyOptions.position + }) + return + end + + client.startPlayerCustomization(function(appearance) + if appearance then + if not isPedMenu then + TriggerServerEvent("illenium-appearance:server:chargeCustomer", shopType) + end + TriggerServerEvent("illenium-appearance:server:saveAppearance", appearance) + else + lib.notify({ + title = _L("cancelled.title"), + description = _L("cancelled.description"), + type = "inform", + position = Config.NotifyOptions.position + }) + end + Framework.CachePed() + end, config) + end, shopType) +end + +local function OpenClothingShop(isPedMenu) + local config = GetDefaultConfig() + config.components = true + config.props = true + + if isPedMenu then + config.ped = true + config.headBlend = true + config.faceFeatures = true + config.headOverlays = true + config.tattoos = not Config.RCoreTattoosCompatibility and true + end + OpenShop(config, isPedMenu, "clothing") +end + +RegisterNetEvent("illenium-appearance:client:openClothingShop", OpenClothingShop) + +RegisterNetEvent("illenium-appearance:client:importOutfitCode", function() + local response = lib.inputDialog(_L("outfits.import.title"), { + { + type = "input", + label = _L("outfits.import.name.label"), + placeholder = _L("outfits.import.name.placeholder"), + default = _L("outfits.import.name.default"), + required = true + }, + { + type = "input", + label = _L("outfits.import.code.label"), + placeholder = "XXXXXXXXXXXX", + required = true + } + }) + + if not response then + return + end + + local outfitName = response[1] + local outfitCode = response[2] + if outfitCode ~= nil then + Wait(500) + lib.callback("illenium-appearance:server:importOutfitCode", false, function(success) + if success then + lib.notify({ + title = _L("outfits.import.success.title"), + description = _L("outfits.import.success.description"), + type = "success", + position = Config.NotifyOptions.position + }) + else + lib.notify({ + title = _L("outfits.import.failure.title"), + description = _L("outfits.import.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + end + end, outfitName, outfitCode) + end +end) + +RegisterNetEvent("illenium-appearance:client:generateOutfitCode", function(id) + lib.callback("illenium-appearance:server:generateOutfitCode", false, function(code) + if not code then + lib.notify({ + title = _L("outfits.generate.failure.title"), + description = _L("outfits.generate.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + return + end + lib.setClipboard(code) + lib.inputDialog(_L("outfits.generate.success.title"), { + { + type = "input", + label = _L("outfits.generate.success.description"), + default = code, + disabled = true + } + }) + end, id) +end) + +RegisterNetEvent("illenium-appearance:client:saveOutfit", function() + local response = lib.inputDialog(_L("outfits.save.title"), { + { + type = "input", + label = _L("outfits.save.name.label"), + placeholder = _L("outfits.save.name.placeholder"), + required = true + } + }) + + if not response then + return + end + + local outfitName = response[1] + if outfitName then + Wait(500) + lib.callback("illenium-appearance:server:getOutfits", false, function(outfits) + local outfitExists = false + for i = 1, #outfits, 1 do + if outfits[i].name:lower() == outfitName:lower() then + outfitExists = true + break + end + end + + if outfitExists then + lib.notify({ + title = _L("outfits.save.failure.title"), + description = _L("outfits.save.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + return + end + + local pedModel = client.getPedModel(cache.ped) + local pedComponents = client.getPedComponents(cache.ped) + local pedProps = client.getPedProps(cache.ped) + + TriggerServerEvent("illenium-appearance:server:saveOutfit", outfitName, pedModel, pedComponents, pedProps) + end) + end +end) + +RegisterNetEvent('illenium-appearance:client:updateOutfit', function(outfitID) + if not outfitID then return end + + lib.callback("illenium-appearance:server:getOutfits", false, function(outfits) + local outfitExists = false + for i = 1, #outfits, 1 do + if outfits[i].id == outfitID then + outfitExists = true + break + end + end + + if not outfitExists then + lib.notify({ + title = _L("outfits.update.failure.title"), + description = _L("outfits.update.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + return + end + + local pedModel = client.getPedModel(cache.ped) + local pedComponents = client.getPedComponents(cache.ped) + local pedProps = client.getPedProps(cache.ped) + + TriggerServerEvent("illenium-appearance:server:updateOutfit", outfitID, pedModel, pedComponents, pedProps) + end) +end) + +local function RegisterChangeOutfitMenu(id, parent, outfits, mType) + local changeOutfitMenu = { + id = id, + title = _L("outfits.change.title"), + menu = parent, + options = {} + } + for i = 1, #outfits, 1 do + changeOutfitMenu.options[#changeOutfitMenu.options + 1] = { + title = outfits[i].name, + description = outfits[i].model, + event = "illenium-appearance:client:changeOutfit", + args = { + type = mType, + name = outfits[i].name, + model = outfits[i].model, + components = outfits[i].components, + props = outfits[i].props, + disableSave = mType and true or false + } + } + end + + table.sort(changeOutfitMenu.options, function(a, b) + return a.title < b.title + end) + + lib.registerContext(changeOutfitMenu) +end + +local function RegisterUpdateOutfitMenu(id, parent, outfits) + local updateOutfitMenu = { + id = id, + title = _L("outfits.update.title"), + menu = parent, + options = {} + } + for i = 1, #outfits, 1 do + updateOutfitMenu.options[#updateOutfitMenu.options + 1] = { + title = outfits[i].name, + description = outfits[i].model, + event = "illenium-appearance:client:updateOutfit", + args = outfits[i].id + } + end + + table.sort(updateOutfitMenu.options, function(a, b) + return a.title < b.title + end) + + lib.registerContext(updateOutfitMenu) +end + +local function RegisterGenerateOutfitCodeMenu(id, parent, outfits) + local generateOutfitCodeMenu = { + id = id, + title = _L("outfits.generate.title"), + menu = parent, + options = {} + } + for i = 1, #outfits, 1 do + generateOutfitCodeMenu.options[#generateOutfitCodeMenu.options + 1] = { + title = outfits[i].name, + description = outfits[i].model, + event = "illenium-appearance:client:generateOutfitCode", + args = outfits[i].id + } + end + + lib.registerContext(generateOutfitCodeMenu) +end + +local function RegisterDeleteOutfitMenu(id, parent, outfits, deleteEvent) + local deleteOutfitMenu = { + id = id, + title = _L("outfits.delete.title"), + menu = parent, + options = {} + } + + table.sort(outfits, function(a, b) + return a.name < b.name + end) + + for i = 1, #outfits, 1 do + deleteOutfitMenu.options[#deleteOutfitMenu.options + 1] = { + title = string.format(_L("outfits.delete.item.title"), outfits[i].name), + description = string.format(_L("outfits.delete.item.description"), outfits[i].model, (outfits[i].gender and (" - Gender: " .. outfits[i].gender) or "")), + event = deleteEvent, + args = outfits[i].id + } + end + + lib.registerContext(deleteOutfitMenu) +end + +RegisterNetEvent("illenium-appearance:client:OutfitManagementMenu", function(args) + local outfits = lib.callback.await("illenium-appearance:server:getManagementOutfits", false, args.type, Framework.GetGender()) + local managementMenuID = "illenium_appearance_outfit_management_menu" + local changeManagementOutfitMenuID = "illenium_appearance_change_management_outfit_menu" + local deleteManagementOutfitMenuID = "illenium_appearance_delete_management_outfit_menu" + + RegisterChangeOutfitMenu(changeManagementOutfitMenuID, managementMenuID, outfits, args.type) + RegisterDeleteOutfitMenu(deleteManagementOutfitMenuID, managementMenuID, outfits, "illenium-appearance:client:DeleteManagementOutfit") + local managementMenu = { + id = managementMenuID, + title = string.format(_L("outfits.manage.title"), args.type), + options = { + { + title = _L("outfits.change.title"), + description = string.format(_L("outfits.change.description"), args.type), + menu = changeManagementOutfitMenuID, + }, + { + title = _L("outfits.save.menuTitle"), + description = string.format(_L("outfits.save.menuDescription"), args.type), + event = "illenium-appearance:client:SaveManagementOutfit", + args = args.type + }, + { + title = _L("outfits.delete.title"), + description = string.format(_L("outfits.delete.description"), args.type), + menu = deleteManagementOutfitMenuID, + } + } + } + + Management.AddBackMenuItem(managementMenu, args) + + lib.registerContext(managementMenu) + lib.showContext(managementMenuID) +end) + +RegisterNetEvent("illenium-appearance:client:SaveManagementOutfit", function(mType) + local outfitData = { + Type = mType, + Model = client.getPedModel(cache.ped), + Components = client.getPedComponents(cache.ped), + Props = client.getPedProps(cache.ped) + } + + local rankValues + + if mType == "Job" then + outfitData.JobName = client.job.name + rankValues = Framework.GetRankInputValues("job") + + else + outfitData.JobName = client.gang.name + rankValues = Framework.GetRankInputValues("gang") + end + + local dialogResponse = lib.inputDialog(_L("outfits.save.managementTitle"), { + { + label = _L("outfits.save.name.label"), + type = "input", + required = true + }, + { + label = _L("outfits.save.gender.label"), + type = "select", + options = { + { + label = _L("outfits.save.gender.male"), value = "male" + }, + { + label = _L("outfits.save.gender.female"), value = "female" + } + }, + default = "male", + }, + { + label = _L("outfits.save.rank.label"), + type = "select", + options = rankValues, + default = "0" + } + }) + + if not dialogResponse then + return + end + + + outfitData.Name = dialogResponse[1] + outfitData.Gender = dialogResponse[2] + outfitData.MinRank = tonumber(dialogResponse[3]) + + TriggerServerEvent("illenium-appearance:server:saveManagementOutfit", outfitData) + +end) + +local function RegisterWorkOutfitsListMenu(id, parent, menuData) + local menu = { + id = id, + menu = parent, + title = _L("jobOutfits.title"), + options = {} + } + local event = "illenium-appearance:client:loadJobOutfit" + if Config.BossManagedOutfits then + event = "illenium-appearance:client:changeOutfit" + end + if menuData then + for _, v in pairs(menuData) do + menu.options[#menu.options + 1] = { + title = v.name, + event = event, + args = v + } + end + end + lib.registerContext(menu) +end + +function OpenMenu(isPedMenu, menuType, menuData) + local mainMenuID = "illenium_appearance_main_menu" + local mainMenu = { + id = mainMenuID + } + local menuItems = {} + + local outfits = lib.callback.await("illenium-appearance:server:getOutfits", false) + local changeOutfitMenuID = "illenium_appearance_change_outfit_menu" + local updateOutfitMenuID = "illenium_appearance_update_outfit_menu" + local deleteOutfitMenuID = "illenium_appearance_delete_outfit_menu" + local generateOutfitCodeMenuID = "illenium_appearance_generate_outfit_code_menu" + + RegisterChangeOutfitMenu(changeOutfitMenuID, mainMenuID, outfits) + RegisterUpdateOutfitMenu(updateOutfitMenuID, mainMenuID, outfits) + RegisterDeleteOutfitMenu(deleteOutfitMenuID, mainMenuID, outfits, "illenium-appearance:client:deleteOutfit") + RegisterGenerateOutfitCodeMenu(generateOutfitCodeMenuID, mainMenuID, outfits) + local outfitMenuItems = { + { + title = _L("outfits.change.title"), + description = _L("outfits.change.pDescription"), + menu = changeOutfitMenuID + }, + { + title = _L("outfits.update.title"), + description = _L("outfits.update.description"), + menu = updateOutfitMenuID + }, + { + title = _L("outfits.save.menuTitle"), + description = _L("outfits.save.description"), + event = "illenium-appearance:client:saveOutfit" + }, + { + title = _L("outfits.generate.title"), + description = _L("outfits.generate.description"), + menu = generateOutfitCodeMenuID + }, + { + title = _L("outfits.delete.title"), + description = _L("outfits.delete.mDescription"), + menu = deleteOutfitMenuID + }, + { + title = _L("outfits.import.menuTitle"), + description = _L("outfits.import.description"), + event = "illenium-appearance:client:importOutfitCode" + } + } + if menuType == "default" then + local header = string.format(_L("clothing.title"), Config.ClothingCost) + if isPedMenu then + header = _L("clothing.titleNoPrice") + end + mainMenu.title = _L("clothing.options.title") + menuItems[#menuItems + 1] = { + title = header, + description = _L("clothing.options.description"), + event = "illenium-appearance:client:openClothingShop", + args = isPedMenu + } + for i = 0, #outfitMenuItems, 1 do + menuItems[#menuItems + 1] = outfitMenuItems[i] + end + elseif menuType == "outfit" then + mainMenu.title = _L("clothing.outfits.title") + for i = 0, #outfitMenuItems, 1 do + menuItems[#menuItems + 1] = outfitMenuItems[i] + end + elseif menuType == "job-outfit" then + mainMenu.title = _L("clothing.outfits.title") + menuItems[#menuItems + 1] = { + title = _L("clothing.outfits.civilian.title"), + description = _L("clothing.outfits.civilian.description"), + event = "illenium-appearance:client:reloadSkin", + args = true + } + + local workOutfitsMenuID = "illenium_appearance_work_outfits_menu" + RegisterWorkOutfitsListMenu(workOutfitsMenuID, mainMenuID, menuData) + + menuItems[#menuItems + 1] = { + title = _L("jobOutfits.title"), + description = _L("jobOutfits.description"), + menu = workOutfitsMenuID + } + end + mainMenu.options = menuItems + + lib.registerContext(mainMenu) + lib.showContext(mainMenuID) +end + +RegisterNetEvent("illenium-appearance:client:openClothingShopMenu", function(isPedMenu) + if type(isPedMenu) == "table" then + isPedMenu = false + end + OpenMenu(isPedMenu, "default") +end) + +RegisterNetEvent("illenium-appearance:client:OpenBarberShop", OpenBarberShop) + +RegisterNetEvent("illenium-appearance:client:OpenTattooShop", OpenTattooShop) + +RegisterNetEvent("illenium-appearance:client:OpenSurgeonShop", OpenSurgeonShop) + +RegisterNetEvent("illenium-appearance:client:changeOutfit", function(data) + local pedModel = client.getPedModel(cache.ped) + local appearanceDB + if pedModel ~= data.model then + local p = promise.new() + lib.callback("illenium-appearance:server:getAppearance", false, function(appearance) + BackupPlayerStats() + if appearance then + client.setPlayerAppearance(appearance) + RestorePlayerStats() + else + lib.notify({ + title = _L("outfits.change.failure.title"), + description = _L("outfits.change.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + end + p:resolve(appearance) + end, data.model) + appearanceDB = Citizen.Await(p) + else + appearanceDB = client.getPedAppearance(cache.ped) + end + if appearanceDB then + client.setPedComponents(cache.ped, data.components) + client.setPedProps(cache.ped, data.props) + client.setPedHair(cache.ped, appearanceDB.hair, appearanceDB.tattoos) + + if data.disableSave then + TriggerServerEvent("illenium-appearance:server:syncUniform", { + type = data.type, + name = data.name + }) -- Is a uniform + else + local appearance = client.getPedAppearance(cache.ped) + TriggerServerEvent("illenium-appearance:server:saveAppearance", appearance) + end + Framework.CachePed() + end +end) + +RegisterNetEvent("illenium-appearance:client:DeleteManagementOutfit", function(id) + TriggerServerEvent("illenium-appearance:server:deleteManagementOutfit", id) + lib.notify({ + title = _L("outfits.delete.management.success.title"), + description = _L("outfits.delete.management.success.description"), + type = "success", + position = Config.NotifyOptions.position + }) +end) + +RegisterNetEvent("illenium-appearance:client:deleteOutfit", function(id) + TriggerServerEvent("illenium-appearance:server:deleteOutfit", id) + lib.notify({ + title = _L("outfits.delete.success.title"), + description = _L("outfits.delete.success.description"), + type = "success", + position = Config.NotifyOptions.position + }) +end) + +RegisterNetEvent("illenium-appearance:client:openJobOutfitsMenu", function(outfitsToShow) + OpenMenu(nil, "job-outfit", outfitsToShow) +end) + +local function InCooldown() + return (GetGameTimer() - reloadSkinTimer) < Config.ReloadSkinCooldown +end + +RegisterNetEvent("illenium-appearance:client:reloadSkin", function(bypassChecks) + if not bypassChecks and InCooldown() or Framework.CheckPlayerMeta() or cache.vehicle or IsPedFalling(cache.ped) then + lib.notify({ + title = _L("commands.reloadskin.failure.title"), + description = _L("commands.reloadskin.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + return + end + + reloadSkinTimer = GetGameTimer() + BackupPlayerStats() + + lib.callback("illenium-appearance:server:getAppearance", false, function(appearance) + if not appearance then + return + end + client.setPlayerAppearance(appearance) + if Config.PersistUniforms then + LoadPlayerUniform(bypassChecks) + end + RestorePlayerStats() + end) +end) + +RegisterNetEvent("illenium-appearance:client:ClearStuckProps", function() + if InCooldown() or Framework.CheckPlayerMeta() then + lib.notify({ + title = _L("commands.clearstuckprops.failure.title"), + description = _L("commands.clearstuckprops.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + return + end + + reloadSkinTimer = GetGameTimer() + + for _, v in pairs(GetGamePool("CObject")) do + if IsEntityAttachedToEntity(cache.ped, v) then + SetEntityAsMissionEntity(v, true, true) + DeleteObject(v) + DeleteEntity(v) + end + end +end) diff --git a/resources/[core]/illenium-appearance/client/common.lua b/resources/[core]/illenium-appearance/client/common.lua new file mode 100644 index 0000000..6a92608 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/common.lua @@ -0,0 +1,83 @@ +function CheckDuty() + return not Config.OnDutyOnlyClothingRooms or (Config.OnDutyOnlyClothingRooms and client.job.onduty) +end + +function IsPlayerAllowedForOutfitRoom(outfitRoom) + local isAllowed = false + local count = #outfitRoom.citizenIDs + for i = 1, count, 1 do + if Framework.IsPlayerAllowed(outfitRoom.citizenIDs[i]) then + isAllowed = true + break + end + end + return isAllowed or not outfitRoom.citizenIDs or count == 0 +end + +function GetPlayerJobOutfits(job) + local outfits = {} + local gender = Framework.GetGender() + local gradeLevel = job and Framework.GetJobGrade() or Framework.GetGangGrade() + local jobName = job and client.job.name or client.gang.name + + if Config.BossManagedOutfits then + local mType = job and "Job" or "Gang" + local result = lib.callback.await("illenium-appearance:server:getManagementOutfits", false, mType, gender) + for i = 1, #result, 1 do + outfits[#outfits + 1] = { + type = mType, + model = result[i].model, + components = result[i].components, + props = result[i].props, + disableSave = true, + name = result[i].name + } + end + elseif Config.Outfits[jobName] and Config.Outfits[jobName][gender] then + for i = 1, #Config.Outfits[jobName][gender], 1 do + for _, v in pairs(Config.Outfits[jobName][gender][i].grades) do + if v == gradeLevel then + outfits[#outfits + 1] = Config.Outfits[jobName][gender][i] + outfits[#outfits].gender = gender + outfits[#outfits].jobName = jobName + end + end + end + end + + return outfits +end + +function OpenOutfitRoom(outfitRoom) + local isAllowed = IsPlayerAllowedForOutfitRoom(outfitRoom) + if isAllowed then + OpenMenu(nil, "outfit") + end +end + +function OpenBarberShop() + local config = GetDefaultConfig() + config.headOverlays = true + OpenShop(config, false, "barber") +end + +function OpenTattooShop() + local config = GetDefaultConfig() + config.tattoos = true + OpenShop(config, false, "tattoo") +end + +function OpenSurgeonShop() + local config = GetDefaultConfig() + config.headBlend = true + config.faceFeatures = true + OpenShop(config, false, "surgeon") +end + +AddEventHandler("onResourceStop", function(resource) + if resource == GetCurrentResourceName() then + if Config.BossManagedOutfits then + Management.RemoveItems() + end + end +end) diff --git a/resources/[core]/illenium-appearance/client/defaults.lua b/resources/[core]/illenium-appearance/client/defaults.lua new file mode 100644 index 0000000..b86af2d --- /dev/null +++ b/resources/[core]/illenium-appearance/client/defaults.lua @@ -0,0 +1,41 @@ +local function getComponentConfig() + return { + masks = not Config.DisableComponents.Masks, + upperBody = not Config.DisableComponents.UpperBody, + lowerBody = not Config.DisableComponents.LowerBody, + bags = not Config.DisableComponents.Bags, + shoes = not Config.DisableComponents.Shoes, + scarfAndChains = not Config.DisableComponents.ScarfAndChains, + bodyArmor = not Config.DisableComponents.BodyArmor, + shirts = not Config.DisableComponents.Shirts, + decals = not Config.DisableComponents.Decals, + jackets = not Config.DisableComponents.Jackets + } +end + +local function getPropConfig() + return { + hats = not Config.DisableProps.Hats, + glasses = not Config.DisableProps.Glasses, + ear = not Config.DisableProps.Ear, + watches = not Config.DisableProps.Watches, + bracelets = not Config.DisableProps.Bracelets + } +end + +function GetDefaultConfig() + return { + ped = false, + headBlend = false, + faceFeatures = false, + headOverlays = false, + components = false, + componentConfig = getComponentConfig(), + props = false, + propConfig = getPropConfig(), + tattoos = false, + enableExit = true, + hasTracker = Config.PreventTrackerRemoval and Framework.HasTracker(), + automaticFade = Config.AutomaticFade + } +end diff --git a/resources/[core]/illenium-appearance/client/framework/esx/compatibility.lua b/resources/[core]/illenium-appearance/client/framework/esx/compatibility.lua new file mode 100644 index 0000000..d86710c --- /dev/null +++ b/resources/[core]/illenium-appearance/client/framework/esx/compatibility.lua @@ -0,0 +1,89 @@ +if not Framework.ESX() then return end + +local client = client +local firstSpawn = false + +AddEventHandler("esx_skin:resetFirstSpawn", function() + firstSpawn = true +end) + +AddEventHandler("esx_skin:playerRegistered", function() + if(firstSpawn) then + InitializeCharacter(Framework.GetGender(true)) + end +end) + +RegisterNetEvent("skinchanger:loadSkin2", function(ped, skin) + if not skin.model then skin.model = "mp_m_freemode_01" end + client.setPedAppearance(ped, skin) + Framework.CachePed() +end) + +RegisterNetEvent("skinchanger:getSkin", function(cb) + while not Framework.PlayerData do + Wait(1000) + end + lib.callback("illenium-appearance:server:getAppearance", false, function(appearance) + cb(appearance) + Framework.CachePed() + end) +end) + + +local function LoadSkin(skin, cb) + if skin.model then + client.setPlayerAppearance(skin) + else -- add validation invisible when failed registration (maybe server restarted when apply skin) + SetInitialClothes(Config.InitialPlayerClothes[Framework.GetGender(true)]) + end + if Framework.PlayerData and Framework.PlayerData.loadout then + TriggerEvent("esx:restoreLoadout") + end + Framework.CachePed() + if cb ~= nil then + cb() + end +end + +RegisterNetEvent("skinchanger:loadSkin", function(skin, cb) + LoadSkin(skin, cb) +end) + +local function loadClothes(_, clothes) + local components = Framework.ConvertComponents(clothes, client.getPedComponents(cache.ped)) + local props = Framework.ConvertProps(clothes, client.getPedProps(cache.ped)) + + client.setPedComponents(cache.ped, components) + client.setPedProps(cache.ped, props) +end + +RegisterNetEvent("skinchanger:loadClothes", function(_, clothes) + loadClothes(_, clothes) +end) + +RegisterNetEvent("esx_skin:openSaveableMenu", function(onSubmit, onCancel) + InitializeCharacter(Framework.GetGender(true), onSubmit, onCancel) +end) + +local function exportHandler(exportName, func) + AddEventHandler(('__cfx_export_skinchanger_%s'):format(exportName), function(setCB) + setCB(func) + end) +end + +exportHandler("GetSkin", function() + while not Framework.PlayerData do + Wait(1000) + end + + local appearance = lib.callback.await("illenium-appearance:server:getAppearance", false) + return appearance +end) + +exportHandler("LoadSkin", function(skin) + return LoadSkin(skin) +end) + +exportHandler("LoadClothes", function(playerSkin, clothesSkin) + return loadClothes(playerSkin, clothesSkin) +end) diff --git a/resources/[core]/illenium-appearance/client/framework/esx/main.lua b/resources/[core]/illenium-appearance/client/framework/esx/main.lua new file mode 100644 index 0000000..366b757 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/framework/esx/main.lua @@ -0,0 +1,85 @@ +if not Framework.ESX() then return end + +local ESX = exports["es_extended"]:getSharedObject() +Framework.PlayerData = nil + +RegisterNetEvent("esx:playerLoaded", function(xPlayer) + Framework.PlayerData = xPlayer + client.job = Framework.PlayerData.job + client.gang = Framework.PlayerData.gang + client.citizenid = Framework.PlayerData.identifier + InitAppearance() +end) + +RegisterNetEvent("esx:onPlayerLogout", function() + Framework.PlayerData = nil +end) + +RegisterNetEvent("esx:setJob", function(job) + Framework.PlayerData.job = job + client.job = Framework.PlayerData.job + client.gang = Framework.PlayerData.job +end) + +local function getRankInputValues(rankList) + local rankValues = {} + for _, v in pairs(rankList) do + rankValues[#rankValues + 1] = { + label = v.label, + value = v.grade + } + end + return rankValues +end + +function Framework.GetPlayerGender() + Framework.PlayerData = ESX.GetPlayerData() + if Framework.PlayerData.sex == "f" then + return "Female" + end + return "Male" +end + +function Framework.UpdatePlayerData() + local data = ESX.GetPlayerData() + if data.job then + Framework.PlayerData = data + client.job = Framework.PlayerData.job + client.gang = Framework.PlayerData.job + end + client.citizenid = Framework.PlayerData.identifier +end + +function Framework.HasTracker() + return false +end + +function Framework.CheckPlayerMeta() + Framework.PlayerData = ESX.GetPlayerData() + return Framework.PlayerData.dead or IsPedCuffed(Framework.PlayerData.ped) +end + +function Framework.IsPlayerAllowed(citizenid) + return citizenid == Framework.PlayerData.identifier +end + +function Framework.GetRankInputValues(type) + local jobGrades = lib.callback.await("illenium-appearance:server:esx:getGradesForJob", false, client[type].name) + return getRankInputValues(jobGrades) +end + +function Framework.GetJobGrade() + return client.job.grade +end + +function Framework.GetGangGrade() + return client.gang.grade +end + +function Framework.CachePed() + ESX.SetPlayerData("ped", cache.ped) +end + +function Framework.RestorePlayerArmour() + return nil +end diff --git a/resources/[core]/illenium-appearance/client/framework/framework.lua b/resources/[core]/illenium-appearance/client/framework/framework.lua new file mode 100644 index 0000000..9fc8482 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/framework/framework.lua @@ -0,0 +1,11 @@ +function Framework.GetGender(isNew) + if isNew or not Config.GenderBasedOnPed then + return Framework.GetPlayerGender() + end + + local model = client.getPedModel(cache.ped) + if model == "mp_f_freemode_01" then + return "Female" + end + return "Male" +end diff --git a/resources/[core]/illenium-appearance/client/framework/ox/main.lua b/resources/[core]/illenium-appearance/client/framework/ox/main.lua new file mode 100644 index 0000000..e25dfb6 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/framework/ox/main.lua @@ -0,0 +1,42 @@ +if not Framework.Ox() then return end + +local Ox = require '@ox_core.lib.init' +local player = Ox.GetPlayer() + +RegisterNetEvent("ox:setActiveCharacter", function(character) + if character.isNew then + return InitializeCharacter(Framework.GetGender(true)) + end + + InitAppearance() +end) + +---@todo groups +-- RegisterNetEvent("ox:setGroup", function(group, grade) +-- end) + +function Framework.GetPlayerGender() + return player.get('gender') == 'female' and 'Female' or 'Male' +end + +function Framework.UpdatePlayerData() end + +function Framework.HasTracker() return false end + +function Framework.CheckPlayerMeta() + return LocalPlayer.state.isDead or IsPedCuffed(cache.ped) +end + +function Framework.IsPlayerAllowed(charId) + return charId == player.charId +end + +function Framework.GetRankInputValues() end + +function Framework.GetJobGrade() end + +function Framework.GetGangGrade() end + +function Framework.CachePed() end + +function Framework.RestorePlayerArmour() end diff --git a/resources/[core]/illenium-appearance/client/framework/qb/compatibility.lua b/resources/[core]/illenium-appearance/client/framework/qb/compatibility.lua new file mode 100644 index 0000000..0b13cae --- /dev/null +++ b/resources/[core]/illenium-appearance/client/framework/qb/compatibility.lua @@ -0,0 +1,30 @@ +if not Framework.QBCore() then return end + +local client = client + +-- Backwards Compatible Events + +RegisterNetEvent("qb-clothing:client:openMenu", function() + local config = GetDefaultConfig() + config.ped = true + config.headBlend = true + config.faceFeatures = true + config.headOverlays = true + config.components = true + config.props = true + config.tattoos = true + OpenShop(config, true, "all") +end) + +RegisterNetEvent("qb-clothing:client:openOutfitMenu", function() + OpenMenu(nil, "outfit") +end) + +RegisterNetEvent("qb-clothing:client:loadOutfit", LoadJobOutfit) + +RegisterNetEvent("qb-multicharacter:client:chooseChar", function() + client.setPedTattoos(cache.ped, {}) + ClearPedDecorations(cache.ped) + + TriggerServerEvent("illenium-appearance:server:resetOutfitCache") +end) diff --git a/resources/[core]/illenium-appearance/client/framework/qb/main.lua b/resources/[core]/illenium-appearance/client/framework/qb/main.lua new file mode 100644 index 0000000..65fba0d --- /dev/null +++ b/resources/[core]/illenium-appearance/client/framework/qb/main.lua @@ -0,0 +1,107 @@ +if not Framework.QBCore() then return end + +local client = client + +local QBCore = exports["qb-core"]:GetCoreObject() + +local PlayerData = QBCore.Functions.GetPlayerData() + +local function getRankInputValues(rankList) + local rankValues = {} + for k, v in pairs(rankList) do + rankValues[#rankValues + 1] = { + label = v.name, + value = k + } + end + return rankValues +end + +local function setClientParams() + client.job = PlayerData.job + client.gang = PlayerData.gang + client.citizenid = PlayerData.citizenid +end + +function Framework.GetPlayerGender() + if PlayerData.charinfo.gender == 1 then + return "Female" + end + return "Male" +end + +function Framework.UpdatePlayerData() + PlayerData = QBCore.Functions.GetPlayerData() + setClientParams() +end + +function Framework.HasTracker() + return QBCore.Functions.GetPlayerData().metadata["tracker"] +end + +function Framework.CheckPlayerMeta() + return PlayerData.metadata["isdead"] or PlayerData.metadata["inlaststand"] or PlayerData.metadata["ishandcuffed"] +end + +function Framework.IsPlayerAllowed(citizenid) + return citizenid == PlayerData.citizenid +end + +function Framework.GetRankInputValues(type) + local grades = QBCore.Shared.Jobs[client.job.name].grades + if type == "gang" then + grades = QBCore.Shared.Gangs[client.gang.name].grades + end + return getRankInputValues(grades) +end + +function Framework.GetJobGrade() + return client.job.grade.level +end + +function Framework.GetGangGrade() + return client.gang.grade.level +end + +RegisterNetEvent("QBCore:Client:OnJobUpdate", function(JobInfo) + PlayerData.job = JobInfo + client.job = JobInfo + ResetBlips() +end) + +RegisterNetEvent("QBCore:Client:OnGangUpdate", function(GangInfo) + PlayerData.gang = GangInfo + client.gang = GangInfo + ResetBlips() +end) + +RegisterNetEvent("QBCore:Client:SetDuty", function(duty) + if PlayerData and PlayerData.job then + PlayerData.job.onduty = duty + client.job = PlayerData.job + end +end) + +RegisterNetEvent("QBCore:Client:OnPlayerLoaded", function() + InitAppearance() +end) + +RegisterNetEvent("qb-clothes:client:CreateFirstCharacter", function() + QBCore.Functions.GetPlayerData(function(pd) + PlayerData = pd + setClientParams() + InitializeCharacter(Framework.GetGender(true)) + end) +end) + +function Framework.CachePed() + return nil +end + +function Framework.RestorePlayerArmour() + Framework.UpdatePlayerData() + if PlayerData and PlayerData.metadata then + Wait(1000) + SetPedArmour(cache.ped, PlayerData.metadata["armor"]) + end +end diff --git a/resources/[core]/illenium-appearance/client/framework/qb/migrate.lua b/resources/[core]/illenium-appearance/client/framework/qb/migrate.lua new file mode 100644 index 0000000..2abaa09 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/framework/qb/migrate.lua @@ -0,0 +1,190 @@ +if not Framework.QBCore() then return end + +local client = client + +local skinData = { + ["face2"] = { + item = 0, + texture = 0, + defaultItem = 0, + defaultTexture = 0, + }, + ["facemix"] = { + skinMix = 0, + shapeMix = 0, + defaultSkinMix = 0.0, + defaultShapeMix = 0.0, + }, +} + +RegisterNetEvent("illenium-appearance:client:migration:load-qb-clothing-skin", function(playerSkin) + local model = playerSkin.model + model = model ~= nil and tonumber(model) or false + Citizen.CreateThread(function() + lib.requestModel(model, 1000) + SetPlayerModel(cache.playerId, model) + Wait(150) + SetPedComponentVariation(cache.ped, 0, 0, 0, 2) + TriggerEvent("illenium-appearance:client:migration:load-qb-clothing-clothes", playerSkin, cache.ped) + SetModelAsNoLongerNeeded(model) + end) +end) + +RegisterNetEvent("illenium-appearance:client:migration:load-qb-clothing-clothes", function(playerSkin, ped) + local data = json.decode(playerSkin.skin) + if ped == nil then ped = cache.ped end + + for i = 0, 11 do + SetPedComponentVariation(ped, i, 0, 0, 0) + end + + for i = 0, 7 do + ClearPedProp(ped, i) + end + + -- Face + if not data["facemix"] or not data["face2"] then + data["facemix"] = skinData["facemix"] + data["facemix"].shapeMix = data["facemix"].defaultShapeMix + data["facemix"].skinMix = data["facemix"].defaultSkinMix + data["face2"] = skinData["face2"] + end + + SetPedHeadBlendData(ped, data["face"].item, data["face2"].item, nil, data["face"].texture, data["face2"].texture, nil, data["facemix"].shapeMix, data["facemix"].skinMix, nil, true) + + -- Pants + SetPedComponentVariation(ped, 4, data["pants"].item, 0, 0) + SetPedComponentVariation(ped, 4, data["pants"].item, data["pants"].texture, 0) + + -- Hair + SetPedComponentVariation(ped, 2, data["hair"].item, 0, 0) + SetPedHairColor(ped, data["hair"].texture, data["hair"].texture) + + -- Eyebrows + SetPedHeadOverlay(ped, 2, data["eyebrows"].item, 1.0) + SetPedHeadOverlayColor(ped, 2, 1, data["eyebrows"].texture, 0) + + -- Beard + SetPedHeadOverlay(ped, 1, data["beard"].item, 1.0) + SetPedHeadOverlayColor(ped, 1, 1, data["beard"].texture, 0) + + -- Blush + SetPedHeadOverlay(ped, 5, data["blush"].item, 1.0) + SetPedHeadOverlayColor(ped, 5, 1, data["blush"].texture, 0) + + -- Lipstick + SetPedHeadOverlay(ped, 8, data["lipstick"].item, 1.0) + SetPedHeadOverlayColor(ped, 8, 1, data["lipstick"].texture, 0) + + -- Makeup + SetPedHeadOverlay(ped, 4, data["makeup"].item, 1.0) + SetPedHeadOverlayColor(ped, 4, 1, data["makeup"].texture, 0) + + -- Ageing + SetPedHeadOverlay(ped, 3, data["ageing"].item, 1.0) + SetPedHeadOverlayColor(ped, 3, 1, data["ageing"].texture, 0) + + -- Arms + SetPedComponentVariation(ped, 3, data["arms"].item, 0, 2) + SetPedComponentVariation(ped, 3, data["arms"].item, data["arms"].texture, 0) + + -- T-Shirt + SetPedComponentVariation(ped, 8, data["t-shirt"].item, 0, 2) + SetPedComponentVariation(ped, 8, data["t-shirt"].item, data["t-shirt"].texture, 0) + + -- Vest + SetPedComponentVariation(ped, 9, data["vest"].item, 0, 2) + SetPedComponentVariation(ped, 9, data["vest"].item, data["vest"].texture, 0) + + -- Torso 2 + SetPedComponentVariation(ped, 11, data["torso2"].item, 0, 2) + SetPedComponentVariation(ped, 11, data["torso2"].item, data["torso2"].texture, 0) + + -- Shoes + SetPedComponentVariation(ped, 6, data["shoes"].item, 0, 2) + SetPedComponentVariation(ped, 6, data["shoes"].item, data["shoes"].texture, 0) + + -- Mask + SetPedComponentVariation(ped, 1, data["mask"].item, 0, 2) + SetPedComponentVariation(ped, 1, data["mask"].item, data["mask"].texture, 0) + + -- Badge + SetPedComponentVariation(ped, 10, data["decals"].item, 0, 2) + SetPedComponentVariation(ped, 10, data["decals"].item, data["decals"].texture, 0) + + -- Accessory + SetPedComponentVariation(ped, 7, data["accessory"].item, 0, 2) + SetPedComponentVariation(ped, 7, data["accessory"].item, data["accessory"].texture, 0) + + -- Bag + SetPedComponentVariation(ped, 5, data["bag"].item, 0, 2) + SetPedComponentVariation(ped, 5, data["bag"].item, data["bag"].texture, 0) + + -- Hat + if data["hat"].item ~= -1 and data["hat"].item ~= 0 then + SetPedPropIndex(ped, 0, data["hat"].item, data["hat"].texture, true) + else + ClearPedProp(ped, 0) + end + + -- Glass + if data["glass"].item ~= -1 and data["glass"].item ~= 0 then + SetPedPropIndex(ped, 1, data["glass"].item, data["glass"].texture, true) + else + ClearPedProp(ped, 1) + end + + -- Ear + if data["ear"].item ~= -1 and data["ear"].item ~= 0 then + SetPedPropIndex(ped, 2, data["ear"].item, data["ear"].texture, true) + else + ClearPedProp(ped, 2) + end + + -- Watch + if data["watch"].item ~= -1 and data["watch"].item ~= 0 then + SetPedPropIndex(ped, 6, data["watch"].item, data["watch"].texture, true) + else + ClearPedProp(ped, 6) + end + + -- Bracelet + if data["bracelet"].item ~= -1 and data["bracelet"].item ~= 0 then + SetPedPropIndex(ped, 7, data["bracelet"].item, data["bracelet"].texture, true) + else + ClearPedProp(ped, 7) + end + + if data["eye_color"].item ~= -1 and data["eye_color"].item ~= 0 then + SetPedEyeColor(ped, data["eye_color"].item) + end + + if data["moles"].item ~= -1 and data["moles"].item ~= 0 then + SetPedHeadOverlay(ped, 9, data["moles"].item, (data["moles"].texture / 10)) + end + + SetPedFaceFeature(ped, 0, (data["nose_0"].item / 10)) + SetPedFaceFeature(ped, 1, (data["nose_1"].item / 10)) + SetPedFaceFeature(ped, 2, (data["nose_2"].item / 10)) + SetPedFaceFeature(ped, 3, (data["nose_3"].item / 10)) + SetPedFaceFeature(ped, 4, (data["nose_4"].item / 10)) + SetPedFaceFeature(ped, 5, (data["nose_5"].item / 10)) + SetPedFaceFeature(ped, 6, (data["eyebrown_high"].item / 10)) + SetPedFaceFeature(ped, 7, (data["eyebrown_forward"].item / 10)) + SetPedFaceFeature(ped, 8, (data["cheek_1"].item / 10)) + SetPedFaceFeature(ped, 9, (data["cheek_2"].item / 10)) + SetPedFaceFeature(ped, 10,(data["cheek_3"].item / 10)) + SetPedFaceFeature(ped, 11, (data["eye_opening"].item / 10)) + SetPedFaceFeature(ped, 12, (data["lips_thickness"].item / 10)) + SetPedFaceFeature(ped, 13, (data["jaw_bone_width"].item / 10)) + SetPedFaceFeature(ped, 14, (data["jaw_bone_back_lenght"].item / 10)) + SetPedFaceFeature(ped, 15, (data["chimp_bone_lowering"].item / 10)) + SetPedFaceFeature(ped, 16, (data["chimp_bone_lenght"].item / 10)) + SetPedFaceFeature(ped, 17, (data["chimp_bone_width"].item / 10)) + SetPedFaceFeature(ped, 18, (data["chimp_hole"].item / 10)) + SetPedFaceFeature(ped, 19, (data["neck_thikness"].item / 10)) + + local appearance = client.getPedAppearance(ped) + + TriggerServerEvent("illenium-appearance:server:migrate-qb-clothing-skin", playerSkin.citizenid, appearance) +end) diff --git a/resources/[core]/illenium-appearance/client/management/common.lua b/resources/[core]/illenium-appearance/client/management/common.lua new file mode 100644 index 0000000..cf00309 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/management/common.lua @@ -0,0 +1,27 @@ +if not Config.BossManagedOutfits then return end + +if Framework.ESX() then return end + +function Management.RemoveItems() + if GetResourceState(Management.ResourceName) ~= "started" then return end + + if Management.ItemIDs.Boss then + exports[Management.ResourceName]:RemoveBossMenuItem(Management.ItemIDs.Boss) + end + if Management.ItemIDs.Gang then + exports[Management.ResourceName]:RemoveGangMenuItem(Management.ItemIDs.Gang) + end +end + +function Management.AddBackMenuItem(managementMenu, args) + local bossMenuEvent = "qb-bossmenu:client:OpenMenu" + if args.type == "Gang" then + bossMenuEvent = "qb-gangmenu:client:OpenMenu" + end + + managementMenu.options[#managementMenu.options+1] = { + title = _L("menu.returnTitle"), + icon = "fa-solid fa-angle-left", + event = bossMenuEvent + } +end diff --git a/resources/[core]/illenium-appearance/client/management/esx.lua b/resources/[core]/illenium-appearance/client/management/esx.lua new file mode 100644 index 0000000..e06c7b0 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/management/esx.lua @@ -0,0 +1,15 @@ +if not Config.BossManagedOutfits then return end + +if not Framework.ESX() then return end + +function Management.RemoveItems() + -- Do nothing +end + +function Management.AddItems() + -- Do nothing +end + +function Management.AddBackMenuItem() + -- Do nothing +end diff --git a/resources/[core]/illenium-appearance/client/management/management.lua b/resources/[core]/illenium-appearance/client/management/management.lua new file mode 100644 index 0000000..8bed0d7 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/management/management.lua @@ -0,0 +1,26 @@ +if not Config.BossManagedOutfits then return end + +Management = {} + +Management.ItemIDs = { + Gang = nil, + Boss = nil +} + +function Management.IsQB() + local resName = "qb-management" + if GetResourceState(resName) ~= "missing" then + Management.ResourceName = resName + return true + end + return false +end + +function Management.IsQBX() + local resName = "qbx_management" + if GetResourceState(resName) ~= "missing" then + Management.ResourceName = resName + return true + end + return false +end diff --git a/resources/[core]/illenium-appearance/client/management/qb.lua b/resources/[core]/illenium-appearance/client/management/qb.lua new file mode 100644 index 0000000..5ffd0d4 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/management/qb.lua @@ -0,0 +1,21 @@ +if not Config.BossManagedOutfits then return end + +if not Management.IsQB() then return end + +function Management.AddItems() + local menuItem = { + header = _L("outfitManagement.title"), + icon = "fa-solid fa-shirt", + params = { + event = "illenium-appearance:client:OutfitManagementMenu", + args = {} + } + } + menuItem.txt = _L("outfitManagement.jobText") + menuItem.params.args.type = "Job" + Management.ItemIDs.Boss = exports[Management.ResourceName]:AddBossMenuItem(menuItem) + + menuItem.txt = _L("outfitManagement.gangText") + menuItem.params.args.type = "Gang" + Management.ItemIDs.Gang = exports[Management.ResourceName]:AddGangMenuItem(menuItem) +end diff --git a/resources/[core]/illenium-appearance/client/management/qbx.lua b/resources/[core]/illenium-appearance/client/management/qbx.lua new file mode 100644 index 0000000..bb9982d --- /dev/null +++ b/resources/[core]/illenium-appearance/client/management/qbx.lua @@ -0,0 +1,19 @@ +if not Config.BossManagedOutfits then return end + +if not Management.IsQBX() then return end + +function Management.AddItems() + local menuItem = { + title = _L("outfitManagement.title"), + icon = "fa-solid fa-shirt", + event = "illenium-appearance:client:OutfitManagementMenu", + args = {} + } + menuItem.description = _L("outfitManagement.jobText") + menuItem.args.type = "Job" + Management.ItemIDs.Boss = exports[Management.ResourceName]:AddBossMenuItem(menuItem) + + menuItem.description = _L("outfitManagement.gangText") + menuItem.args.type = "Gang" + Management.ItemIDs.Gang = exports[Management.ResourceName]:AddGangMenuItem(menuItem) +end diff --git a/resources/[core]/illenium-appearance/client/outfits.lua b/resources/[core]/illenium-appearance/client/outfits.lua new file mode 100644 index 0000000..b477a46 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/outfits.lua @@ -0,0 +1,142 @@ +local function typeof(var) + local _type = type(var); + if (_type ~= "table" and _type ~= "userdata") then + return _type; + end + local _meta = getmetatable(var); + if (_meta ~= nil and _meta._NAME ~= nil) then + return _meta._NAME; + else + return _type; + end +end + +function LoadJobOutfit(oData) + local ped = cache.ped + + local data = oData.outfitData + + if typeof(data) ~= "table" then + data = json.decode(data) + end + + -- Pants + if data["pants"] ~= nil then + SetPedComponentVariation(ped, 4, data["pants"].item, data["pants"].texture, 0) + end + + -- Arms + if data["arms"] ~= nil then + SetPedComponentVariation(ped, 3, data["arms"].item, data["arms"].texture, 0) + end + + -- T-Shirt + if data["t-shirt"] ~= nil then + SetPedComponentVariation(ped, 8, data["t-shirt"].item, data["t-shirt"].texture, 0) + end + + -- Vest + if data["vest"] ~= nil then + SetPedComponentVariation(ped, 9, data["vest"].item, data["vest"].texture, 0) + end + + -- Torso 2 + if data["torso2"] ~= nil then + SetPedComponentVariation(ped, 11, data["torso2"].item, data["torso2"].texture, 0) + end + + -- Shoes + if data["shoes"] ~= nil then + SetPedComponentVariation(ped, 6, data["shoes"].item, data["shoes"].texture, 0) + end + + -- Badge + if data["decals"] ~= nil then + SetPedComponentVariation(ped, 10, data["decals"].item, data["decals"].texture, 0) + end + + -- Accessory + local tracker = Config.TrackerClothingOptions + + if data["accessory"] ~= nil then + if Framework.HasTracker() then + SetPedComponentVariation(ped, 7, tracker.drawable, tracker.texture, 0) + else + SetPedComponentVariation(ped, 7, data["accessory"].item, data["accessory"].texture, 0) + end + else + if Framework.HasTracker() then + SetPedComponentVariation(ped, 7, tracker.drawable, tracker.texture, 0) + else + local drawableId = GetPedDrawableVariation(ped, 7) + + if drawableId ~= -1 then + local textureId = GetPedTextureVariation(ped, 7) + if drawableId == tracker.drawable and textureId == tracker.texture then + SetPedComponentVariation(ped, 7, -1, 0, 2) + end + end + end + end + + -- Mask + if data["mask"] ~= nil then + SetPedComponentVariation(ped, 1, data["mask"].item, data["mask"].texture, 0) + end + + -- Bag + if data["bag"] ~= nil then + SetPedComponentVariation(ped, 5, data["bag"].item, data["bag"].texture, 0) + end + + -- Hat + if data["hat"] ~= nil then + if data["hat"].item ~= -1 and data["hat"].item ~= 0 then + SetPedPropIndex(ped, 0, data["hat"].item, data["hat"].texture, true) + else + ClearPedProp(ped, 0) + end + end + + -- Glass + if data["glass"] ~= nil then + if data["glass"].item ~= -1 and data["glass"].item ~= 0 then + SetPedPropIndex(ped, 1, data["glass"].item, data["glass"].texture, true) + else + ClearPedProp(ped, 1) + end + end + + -- Ear + if data["ear"] ~= nil then + if data["ear"].item ~= -1 and data["ear"].item ~= 0 then + SetPedPropIndex(ped, 2, data["ear"].item, data["ear"].texture, true) + else + ClearPedProp(ped, 2) + end + end + + local length = 0 + for _ in pairs(data) do + length = length + 1 + end + + if Config.PersistUniforms and length > 1 then + TriggerServerEvent("illenium-appearance:server:syncUniform", { + jobName = oData.jobName, + gender = oData.gender, + label = oData.name + }) + end +end + +RegisterNetEvent("illenium-appearance:client:loadJobOutfit", LoadJobOutfit) + +RegisterNetEvent("illenium-appearance:client:openOutfitMenu", function() + OpenMenu(nil, "outfit") +end) + +RegisterNetEvent("illenium-apearance:client:outfitsCommand", function(isJob) + local outfits = GetPlayerJobOutfits(isJob) + TriggerEvent("illenium-appearance:client:openJobOutfitsMenu", outfits) +end) diff --git a/resources/[core]/illenium-appearance/client/props.lua b/resources/[core]/illenium-appearance/client/props.lua new file mode 100644 index 0000000..3a9c7fd --- /dev/null +++ b/resources/[core]/illenium-appearance/client/props.lua @@ -0,0 +1,5 @@ +lib.onCache('ped', function(value) + if Config.AlwaysKeepProps then + SetPedCanLosePropsOnDamage(value, false, 0) + end +end) \ No newline at end of file diff --git a/resources/[core]/illenium-appearance/client/radial/ox.lua b/resources/[core]/illenium-appearance/client/radial/ox.lua new file mode 100644 index 0000000..11cc51d --- /dev/null +++ b/resources/[core]/illenium-appearance/client/radial/ox.lua @@ -0,0 +1,17 @@ +if not Radial.IsOX() then return end + +function Radial.Add(title, event) + lib.addRadialItem({ + id = Radial.MenuID, + icon = "shirt", + label = title, + event = event, + onSelect = function() + TriggerEvent(event) + end + }) +end + +function Radial.Remove() + lib.removeRadialItem(Radial.MenuID) +end diff --git a/resources/[core]/illenium-appearance/client/radial/qb.lua b/resources/[core]/illenium-appearance/client/radial/qb.lua new file mode 100644 index 0000000..74b2fd4 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/radial/qb.lua @@ -0,0 +1,16 @@ +if not Radial.IsQBX() and not Radial.IsQB() then return end + +function Radial.Add(title, event) + exports[Radial.ResourceName]:AddOption({ + id = Radial.MenuID, + title = title, + icon = "shirt", + type = "client", + event = event, + shouldClose = true + }, Radial.MenuID) +end + +function Radial.Remove() + exports[Radial.ResourceName]:RemoveOption(Radial.MenuID) +end diff --git a/resources/[core]/illenium-appearance/client/radial/radial.lua b/resources/[core]/illenium-appearance/client/radial/radial.lua new file mode 100644 index 0000000..8e22a39 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/radial/radial.lua @@ -0,0 +1,71 @@ +Radial = {} + +Radial.MenuID = "open_clothing_menu" + +local radialOptionAdded = false + +function Radial.IsOX() + local resName = "ox_lib" + if GetResourceState(resName) ~= "missing" and Config.UseOxRadial then + Radial.ResourceName = resName + return true + end + return false +end + +function Radial.IsQB() + local resName = "qb-radialmenu" + if GetResourceState(resName) ~= "missing" then + Radial.ResourceName = resName + return true + end + return false +end + +function Radial.IsQBX() + local resName = "qbx_radialmenu" + if GetResourceState(resName) ~= "missing" then + Radial.ResourceName = resName + return true + end + return false +end + +function Radial.AddOption(currentZone) + if not Config.UseRadialMenu then return end + + if not currentZone then + Radial.Remove() + return + end + local event, title + local zoneEvents = { + clothingRoom = {"illenium-appearance:client:OpenClothingRoom", _L("menu.title")}, + playerOutfitRoom = {"illenium-appearance:client:OpenPlayerOutfitRoom", _L("menu.outfitsTitle")}, + clothing = {"illenium-appearance:client:openClothingShopMenu", _L("menu.clothingShopTitle")}, + barber = {"illenium-appearance:client:OpenBarberShop", _L("menu.barberShopTitle")}, + tattoo = {"illenium-appearance:client:OpenTattooShop", _L("menu.tattooShopTitle")}, + surgeon = {"illenium-appearance:client:OpenSurgeonShop", _L("menu.surgeonShopTitle")}, + } + if zoneEvents[currentZone.name] then + event, title = table.unpack(zoneEvents[currentZone.name]) + end + + Radial.Add(title, event) + radialOptionAdded = true +end + +function Radial.RemoveOption() + if radialOptionAdded then + Radial.Remove() + radialOptionAdded = false + end +end + +AddEventHandler("onResourceStop", function(resource) + if resource == GetCurrentResourceName() then + if Config.UseOxRadial and GetResourceState("ox_lib") == "started" or GetResourceState("qb-radialmenu") == "started" then + Radial.RemoveOption() + end + end +end) diff --git a/resources/[core]/illenium-appearance/client/stats.lua b/resources/[core]/illenium-appearance/client/stats.lua new file mode 100644 index 0000000..ff5c5e3 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/stats.lua @@ -0,0 +1,28 @@ +local stats = nil + +local function ResetRechargeMultipliers() + SetPlayerHealthRechargeMultiplier(cache.playerId, 0.0) + SetPlayerHealthRechargeLimit(cache.playerId, 0.0) +end + +function BackupPlayerStats() + stats = { + health = GetEntityHealth(cache.ped), + armour = GetPedArmour(cache.ped) + } +end + +function RestorePlayerStats() + if stats then + SetEntityMaxHealth(cache.ped, 200) + Wait(1000) -- Safety Delay + SetEntityHealth(cache.ped, stats.health) + SetPedArmour(cache.ped, stats.armour) + ResetRechargeMultipliers() + stats = nil + return + end + + -- If no stats are backed up, restore from the framework + Framework.RestorePlayerArmour() +end diff --git a/resources/[core]/illenium-appearance/client/target/ox.lua b/resources/[core]/illenium-appearance/client/target/ox.lua new file mode 100644 index 0000000..b9b7ea7 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/target/ox.lua @@ -0,0 +1,55 @@ +if not Config.UseTarget then return end + +if not Target.IsOX() then return end + +local ZoneIDMap = {} + +local function convert(options) + local distance = options.distance + options = options.options + for _, v in pairs(options) do + v.onSelect = v.action + v.distance = v.distance or distance + v.name = v.name or v.label + v.groups = v.job or v.gang + v.type = nil + v.action = nil + + v.job = nil + v.gang = nil + v.qtarget = true + end + + return options +end + +function Target.RemoveZone(zone) + exports["ox_target"]:removeZone(ZoneIDMap[zone]) +end + +function Target.AddTargetEntity(entity, parameters) + exports["ox_target"]:addLocalEntity(entity, convert(parameters)) +end + +function Target.AddBoxZone(name, coords, size, parameters) + local rotation = parameters.rotation + ZoneIDMap[name] = exports["ox_target"]:addBoxZone({ + coords = coords, + size = size, + rotation = rotation, + debug = Config.Debug, + options = convert(parameters) + }) +end + +function Target.AddPolyZone(name, points, parameters) + ZoneIDMap[name] = exports["ox_target"]:addPolyZone({ + points = points, + debug = Config.Debug, + options = convert(parameters) + }) +end + +function Target.IsTargetStarted() + return GetResourceState("ox_target") == "started" +end diff --git a/resources/[core]/illenium-appearance/client/target/qb.lua b/resources/[core]/illenium-appearance/client/target/qb.lua new file mode 100644 index 0000000..0d1ba79 --- /dev/null +++ b/resources/[core]/illenium-appearance/client/target/qb.lua @@ -0,0 +1,34 @@ +if not Config.UseTarget then return end + +if not Target.IsQB() then return end + +function Target.RemoveZone(zone) + exports["qb-target"]:RemoveZone(zone) +end + +function Target.AddTargetEntity(entity, parameters) + exports["qb-target"]:AddTargetEntity(entity, parameters) +end + +function Target.AddBoxZone(name, coords, size, parameters) + exports["qb-target"]:AddBoxZone(name, coords, size.x, size.y, { + name = name, + debugPoly = Config.Debug, + minZ = coords.z - 2, + maxZ = coords.z + 2, + heading = coords.w + }, parameters) +end + +function Target.AddPolyZone(name, points, parameters) + exports["qb-target"]:AddPolyZone(name, points, { + name = name, + debugPoly = Config.Debug, + minZ = points[1].z - 2, + maxZ = points[1].z + 2 + }, parameters) +end + +function Target.IsTargetStarted() + return GetResourceState("qb-target") == "started" +end diff --git a/resources/[core]/illenium-appearance/client/target/target.lua b/resources/[core]/illenium-appearance/client/target/target.lua new file mode 100644 index 0000000..0b6a44c --- /dev/null +++ b/resources/[core]/illenium-appearance/client/target/target.lua @@ -0,0 +1,192 @@ +if not Config.UseTarget then return end + +local TargetPeds = { + Store = {}, + ClothingRoom = {}, + PlayerOutfitRoom = {} +} + +Target = {} + +function Target.IsOX() + return GetResourceState("ox_target") ~= "missing" +end + +function Target.IsQB() + return GetResourceState("qb-target") ~= "missing" +end + +local function RemoveTargetPeds(peds) + for i = 1, #peds, 1 do + DeletePed(peds[i]) + end +end + +local function RemoveTargets() + if Config.EnablePedsForShops then + RemoveTargetPeds(TargetPeds.Store) + else + for k, v in pairs(Config.Stores) do + Target.RemoveZone(v.type .. k) + end + end + + if Config.EnablePedsForClothingRooms then + RemoveTargetPeds(TargetPeds.ClothingRoom) + else + for k, v in pairs(Config.ClothingRooms) do + Target.RemoveZone("clothing_" .. (v.job or v.gang) .. k) + end + end + + if Config.EnablePedsForPlayerOutfitRooms then + RemoveTargetPeds(TargetPeds.PlayerOutfitRoom) + else + for k in pairs(Config.PlayerOutfitRooms) do + Target.RemoveZone("playeroutfitroom_" .. k) + end + end +end + +AddEventHandler("onResourceStop", function(resource) + if resource == GetCurrentResourceName() then + if Target.IsTargetStarted() then + RemoveTargets() + end + end +end) + +local function CreatePedAtCoords(pedModel, coords, scenario) + pedModel = type(pedModel) == "string" and joaat(pedModel) or pedModel + lib.requestModel(pedModel) + local ped = CreatePed(0, pedModel, coords.x, coords.y, coords.z - 0.98, coords.w, false, false) + TaskStartScenarioInPlace(ped, scenario, true) + FreezeEntityPosition(ped, true) + SetEntityVisible(ped, true) + SetEntityInvincible(ped, true) + PlaceObjectOnGroundProperly(ped) + SetBlockingOfNonTemporaryEvents(ped, true) + return ped +end + +local function SetupStoreTarget(targetConfig, action, k, v) + local parameters = { + options = {{ + type = "client", + action = action, + icon = targetConfig.icon, + label = targetConfig.label + }}, + distance = targetConfig.distance, + rotation = v.rotation + } + + if Config.EnablePedsForShops then + TargetPeds.Store[k] = CreatePedAtCoords(v.targetModel or targetConfig.model, v.coords, v.targetScenario or targetConfig.scenario) + Target.AddTargetEntity(TargetPeds.Store[k], parameters) + elseif v.usePoly then + Target.AddPolyZone(v.type .. k, v.points, parameters) + else + Target.AddBoxZone(v.type .. k, v.coords, v.size, parameters) + end +end + +local function SetupStoreTargets() + for k, v in pairs(Config.Stores) do + local targetConfig = Config.TargetConfig[v.type] + local action + + if v.type == "barber" then + action = OpenBarberShop + elseif v.type == "clothing" then + action = function() + TriggerEvent("illenium-appearance:client:openClothingShopMenu") + end + elseif v.type == "tattoo" then + action = OpenTattooShop + elseif v.type == "surgeon" then + action = OpenSurgeonShop + end + + if not (Config.RCoreTattoosCompatibility and v.type == "tattoo") then + SetupStoreTarget(targetConfig, action, k, v) + end + end +end + +local function SetupClothingRoomTargets() + for k, v in pairs(Config.ClothingRooms) do + local targetConfig = Config.TargetConfig["clothingroom"] + local action = function() + local outfits = GetPlayerJobOutfits(v.job) + TriggerEvent("illenium-appearance:client:openJobOutfitsMenu", outfits) + end + + local parameters = { + options = {{ + type = "client", + action = action, + icon = targetConfig.icon, + label = targetConfig.label, + canInteract = v.job and CheckDuty or nil, + job = v.job, + gang = v.gang + }}, + distance = targetConfig.distance, + rotation = v.rotation + } + + local key = "clothing_" .. (v.job or v.gang) .. k + if Config.EnablePedsForClothingRooms then + TargetPeds.ClothingRoom[k] = CreatePedAtCoords(v.targetModel or targetConfig.model, v.coords, v.targetScenario or targetConfig.scenario) + Target.AddTargetEntity(TargetPeds.ClothingRoom[k], parameters) + elseif v.usePoly then + Target.AddPolyZone(key, v.points, parameters) + else + Target.AddBoxZone(key, v.coords, v.size, parameters) + end + end +end + +local function SetupPlayerOutfitRoomTargets() + for k, v in pairs(Config.PlayerOutfitRooms) do + local targetConfig = Config.TargetConfig["playeroutfitroom"] + + local parameters = { + options = {{ + type = "client", + action = function() + OpenOutfitRoom(v) + end, + icon = targetConfig.icon, + label = targetConfig.label, + canInteract = function() + return IsPlayerAllowedForOutfitRoom(v) + end + }}, + distance = targetConfig.distance, + rotation = v.rotation + } + + if Config.EnablePedsForPlayerOutfitRooms then + TargetPeds.PlayerOutfitRoom[k] = CreatePedAtCoords(v.targetModel or targetConfig.model, v.coords, v.targetScenario or targetConfig.scenario) + Target.AddTargetEntity(TargetPeds.PlayerOutfitRoom[k], parameters) + elseif v.usePoly then + Target.AddPolyZone("playeroutfitroom_" .. k, v.points, parameters) + else + Target.AddBoxZone("playeroutfitroom_" .. k, v.coords, v.size, parameters) + end + end +end + +local function SetupTargets() + SetupStoreTargets() + SetupClothingRoomTargets() + SetupPlayerOutfitRoomTargets() +end + +CreateThread(function() + if Config.UseTarget then + SetupTargets() + end +end) diff --git a/resources/[core]/illenium-appearance/client/zones.lua b/resources/[core]/illenium-appearance/client/zones.lua new file mode 100644 index 0000000..fd0da1c --- /dev/null +++ b/resources/[core]/illenium-appearance/client/zones.lua @@ -0,0 +1,197 @@ +if Config.UseTarget then return end + +local currentZone = nil + +local Zones = { + Store = {}, + ClothingRoom = {}, + PlayerOutfitRoom = {} +} + +local function RemoveZones() + for i = 1, #Zones.Store do + if Zones.Store[i]["remove"] then + Zones.Store[i]:remove() + end + end + for i = 1, #Zones.ClothingRoom do + Zones.ClothingRoom[i]:remove() + end + for i = 1, #Zones.PlayerOutfitRoom do + Zones.PlayerOutfitRoom[i]:remove() + end +end + +local function lookupZoneIndexFromID(zones, id) + for i = 1, #zones do + if zones[i].id == id then + return i + end + end +end + +local function onStoreEnter(data) + local index = lookupZoneIndexFromID(Zones.Store, data.id) + local store = Config.Stores[index] + + local jobName = (store.job and client.job.name) or (store.gang and client.gang.name) + if jobName == (store.job or store.gang) then + currentZone = { + name = store.type, + index = index + } + local prefix = Config.UseRadialMenu and "" or "[E] " + if currentZone.name == "clothing" then + lib.showTextUI(prefix .. string.format(_L("textUI.clothing"), Config.ClothingCost), Config.TextUIOptions) + elseif currentZone.name == "barber" then + lib.showTextUI(prefix .. string.format(_L("textUI.barber"), Config.BarberCost), Config.TextUIOptions) + elseif currentZone.name == "tattoo" then + lib.showTextUI(prefix .. string.format(_L("textUI.tattoo"), Config.TattooCost), Config.TextUIOptions) + elseif currentZone.name == "surgeon" then + lib.showTextUI(prefix .. string.format(_L("textUI.surgeon"), Config.SurgeonCost), Config.TextUIOptions) + end + Radial.AddOption(currentZone) + end +end + +local function onClothingRoomEnter(data) + local index = lookupZoneIndexFromID(Zones.ClothingRoom, data.id) + local clothingRoom = Config.ClothingRooms[index] + + local jobName = clothingRoom.job and client.job.name or client.gang.name + if jobName == (clothingRoom.job or clothingRoom.gang) then + if CheckDuty() or clothingRoom.gang then + currentZone = { + name = "clothingRoom", + index = index + } + local prefix = Config.UseRadialMenu and "" or "[E] " + lib.showTextUI(prefix .. _L("textUI.clothingRoom"), Config.TextUIOptions) + Radial.AddOption(currentZone) + end + end +end + +local function onPlayerOutfitRoomEnter(data) + local index = lookupZoneIndexFromID(Zones.PlayerOutfitRoom, data.id) + local playerOutfitRoom = Config.PlayerOutfitRooms[index] + + local isAllowed = IsPlayerAllowedForOutfitRoom(playerOutfitRoom) + if isAllowed then + currentZone = { + name = "playerOutfitRoom", + index = index + } + local prefix = Config.UseRadialMenu and "" or "[E] " + lib.showTextUI(prefix .. _L("textUI.playerOutfitRoom"), Config.TextUIOptions) + Radial.AddOption(currentZone) + end +end + +local function onZoneExit() + currentZone = nil + Radial.RemoveOption() + lib.hideTextUI() +end + +local function SetupZone(store, onEnter, onExit) + if Config.RCoreTattoosCompatibility and store.type == "tattoo" then + return {} + end + + if Config.UseRadialMenu or store.usePoly then + return lib.zones.poly({ + points = store.points, + debug = Config.Debug, + onEnter = onEnter, + onExit = onExit + }) + end + + return lib.zones.box({ + coords = store.coords, + size = store.size, + rotation = store.rotation, + debug = Config.Debug, + onEnter = onEnter, + onExit = onExit + }) +end + +local function SetupStoreZones() + for _, v in pairs(Config.Stores) do + Zones.Store[#Zones.Store + 1] = SetupZone(v, onStoreEnter, onZoneExit) + end +end + +local function SetupClothingRoomZones() + for _, v in pairs(Config.ClothingRooms) do + Zones.ClothingRoom[#Zones.ClothingRoom + 1] = SetupZone(v, onClothingRoomEnter, onZoneExit) + end +end + +local function SetupPlayerOutfitRoomZones() + for _, v in pairs(Config.PlayerOutfitRooms) do + Zones.PlayerOutfitRoom[#Zones.PlayerOutfitRoom + 1] = SetupZone(v, onPlayerOutfitRoomEnter, onZoneExit) + end +end + +local function SetupZones() + SetupStoreZones() + SetupClothingRoomZones() + SetupPlayerOutfitRoomZones() +end + +local function ZonesLoop() + Wait(1000) + while true do + local sleep = 1000 + if currentZone then + sleep = 5 + if IsControlJustReleased(0, 38) then + if currentZone.name == "clothingRoom" then + local clothingRoom = Config.ClothingRooms[currentZone.index] + local outfits = GetPlayerJobOutfits(clothingRoom.job) + TriggerEvent("illenium-appearance:client:openJobOutfitsMenu", outfits) + elseif currentZone.name == "playerOutfitRoom" then + local outfitRoom = Config.PlayerOutfitRooms[currentZone.index] + OpenOutfitRoom(outfitRoom) + elseif currentZone.name == "clothing" then + TriggerEvent("illenium-appearance:client:openClothingShopMenu") + elseif currentZone.name == "barber" then + OpenBarberShop() + elseif currentZone.name == "tattoo" then + OpenTattooShop() + elseif currentZone.name == "surgeon" then + OpenSurgeonShop() + end + end + end + Wait(sleep) + end +end + + +CreateThread(function() + SetupZones() + if not Config.UseRadialMenu then + ZonesLoop() + end +end) + +AddEventHandler("onResourceStop", function(resource) + if resource == GetCurrentResourceName() then + RemoveZones() + end +end) + +RegisterNetEvent("illenium-appearance:client:OpenClothingRoom", function() + local clothingRoom = Config.ClothingRooms[currentZone.index] + local outfits = GetPlayerJobOutfits(clothingRoom.job) + TriggerEvent("illenium-appearance:client:openJobOutfitsMenu", outfits) +end) + +RegisterNetEvent("illenium-appearance:client:OpenPlayerOutfitRoom", function() + local outfitRoom = Config.PlayerOutfitRooms[currentZone.index] + OpenOutfitRoom(outfitRoom) +end) diff --git a/resources/[core]/illenium-appearance/fxmanifest.lua b/resources/[core]/illenium-appearance/fxmanifest.lua new file mode 100644 index 0000000..92b6afe --- /dev/null +++ b/resources/[core]/illenium-appearance/fxmanifest.lua @@ -0,0 +1,96 @@ +fx_version "cerulean" +game "gta5" + +author "snakewiz & iLLeniumStudios" +description "A flexible player customization script for FiveM servers." +repository "https://github.com/iLLeniumStudios/illenium-appearance" +version "v5.7.0" + +lua54 "yes" + +client_scripts { + "game/constants.lua", + "game/util.lua", + "game/customization.lua", + "game/nui.lua", + "client/outfits.lua", + "client/common.lua", + "client/zones.lua", + "client/framework/framework.lua", + "client/framework/qb/compatibility.lua", + "client/framework/qb/main.lua", + "client/framework/qb/migrate.lua", + "client/framework/esx/compatibility.lua", + "client/framework/esx/main.lua", + "client/framework/ox/main.lua", + "client/target/target.lua", + "client/target/qb.lua", + "client/target/ox.lua", + "client/management/management.lua", + "client/management/common.lua", + "client/management/qb.lua", + "client/management/qbx.lua", + "client/management/esx.lua", + "client/radial/radial.lua", + "client/radial/qb.lua", + "client/radial/ox.lua", + "client/stats.lua", + "client/defaults.lua", + "client/blips.lua", + "client/props.lua", + "client/client.lua", +} + +server_scripts { + "@oxmysql/lib/MySQL.lua", + "server/database/database.lua", + "server/database/jobgrades.lua", + "server/database/managementoutfits.lua", + "server/database/playeroutfitcodes.lua", + "server/database/playeroutfits.lua", + "server/database/players.lua", + "server/database/playerskins.lua", + "server/database/users.lua", + "server/framework/qb/main.lua", + "server/framework/qb/migrate.lua", + "server/framework/esx/main.lua", + "server/framework/esx/migrate.lua", + "server/framework/esx/callbacks.lua", + "server/framework/esx/management.lua", + "server/framework/ox/main.lua", + "server/util.lua", + "server/server.lua", + "server/permissions.lua" +} + +shared_scripts { + "shared/config.lua", + "shared/blacklist.lua", + "shared/peds.lua", + "shared/tattoos.lua", + "shared/theme.lua", + "shared/framework/framework.lua", + "shared/framework/esx/util.lua", + "locales/locales.lua", + "locales/ar.lua", + "locales/bg.lua", + "locales/cs.lua", + "locales/de.lua", + "locales/en.lua", + "locales/es-ES.lua", + "locales/fr.lua", + "locales/hu.lua", + "locales/it.lua", + "locales/nl.lua", + "locales/pt-BR.lua", + "locales/ro-RO.lua", + "locales/id.lua", + "@ox_lib/init.lua" +} + +files { + "web/dist/index.html", + "web/dist/assets/*.js" +} + +ui_page "web/dist/index.html" diff --git a/resources/[core]/illenium-appearance/game/constants.lua b/resources/[core]/illenium-appearance/game/constants.lua new file mode 100644 index 0000000..5317dba --- /dev/null +++ b/resources/[core]/illenium-appearance/game/constants.lua @@ -0,0 +1,366 @@ +constants = {} +constants.PED_COMPONENTS_IDS = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} +constants.PED_PROPS_IDS = {0, 1, 2, 6, 7} + +constants.FACE_FEATURES = { + "noseWidth", + "nosePeakHigh", + "nosePeakSize", + "noseBoneHigh", + "nosePeakLowering", + "noseBoneTwist", + "eyeBrownHigh", + "eyeBrownForward", + "cheeksBoneHigh", + "cheeksBoneWidth", + "cheeksWidth", + "eyesOpening", + "lipsThickness", + "jawBoneWidth", + "jawBoneBackSize", + "chinBoneLowering", + "chinBoneLenght", + "chinBoneSize", + "chinHole", + "neckThickness", +} + +constants.HEAD_OVERLAYS = { + "blemishes", + "beard", + "eyebrows", + "ageing", + "makeUp", + "blush", + "complexion", + "sunDamage", + "lipstick", + "moleAndFreckles", + "chestHair", + "bodyBlemishes", +} + +-- Thanks to rootcause for the eye colors names and hair decorations hashes. +constants.EYE_COLORS = { + "Green", + "Emerald", + "Light Blue", + "Ocean Blue", + "Light Brown", + "Dark Brown", + "Hazel", + "Dark Gray", + "Light Gray", + "Pink", + "Yellow", + "Purple", + "Blackout", + "Shades of Gray", + "Tequila Sunrise", + "Atomic", + "Warp", + "ECola", + "Space Ranger", + "Ying Yang", + "Bullseye", + "Lizard", + "Dragon", + "Extra Terrestrial", + "Goat", + "Smiley", + "Possessed", + "Demon", + "Infected", + "Alien", + "Undead", + "Zombie", +} + +constants.HAIR_DECORATIONS = { + male = { + [0] = { `mpbeach_overlays`, `FM_Hair_Fuzz` }, + [1] = { `multiplayer_overlays`, `NG_M_Hair_001` }, + [2] = { `multiplayer_overlays`, `NG_M_Hair_002` }, + [3] = { `multiplayer_overlays`, `NG_M_Hair_003` }, + [4] = { `multiplayer_overlays`, `NG_M_Hair_004` }, + [5] = { `multiplayer_overlays`, `NG_M_Hair_005` }, + [6] = { `multiplayer_overlays`, `NG_M_Hair_006` }, + [7] = { `multiplayer_overlays`, `NG_M_Hair_007` }, + [8] = { `multiplayer_overlays`, `NG_M_Hair_008` }, + [9] = { `multiplayer_overlays`, `NG_M_Hair_009` }, + [10] = { `multiplayer_overlays`, `NG_M_Hair_013` }, + [11] = { `multiplayer_overlays`, `NG_M_Hair_002` }, + [12] = { `multiplayer_overlays`, `NG_M_Hair_011` }, + [13] = { `multiplayer_overlays`, `NG_M_Hair_012` }, + [14] = { `multiplayer_overlays`, `NG_M_Hair_014` }, + [15] = { `multiplayer_overlays`, `NG_M_Hair_015` }, + [16] = { `multiplayer_overlays`, `NGBea_M_Hair_000` }, + [17] = { `multiplayer_overlays`, `NGBea_M_Hair_001` }, + [18] = { `multiplayer_overlays`, `NGBus_M_Hair_000` }, + [19] = { `multiplayer_overlays`, `NGBus_M_Hair_001` }, + [20] = { `multiplayer_overlays`, `NGHip_M_Hair_000` }, + [21] = { `multiplayer_overlays`, `NGHip_M_Hair_001` }, + [22] = { `multiplayer_overlays`, `NGInd_M_Hair_000` }, + [24] = { `mplowrider_overlays`, `LR_M_Hair_000` }, + [25] = { `mplowrider_overlays`, `LR_M_Hair_001` }, + [26] = { `mplowrider_overlays`, `LR_M_Hair_002` }, + [27] = { `mplowrider_overlays`, `LR_M_Hair_003` }, + [28] = { `mplowrider2_overlays`, `LR_M_Hair_004` }, + [29] = { `mplowrider2_overlays`, `LR_M_Hair_005` }, + [30] = { `mplowrider2_overlays`, `LR_M_Hair_006` }, + [31] = { `mpbiker_overlays`, `MP_Biker_Hair_000_M` }, + [32] = { `mpbiker_overlays`, `MP_Biker_Hair_001_M` }, + [33] = { `mpbiker_overlays`, `MP_Biker_Hair_002_M` }, + [34] = { `mpbiker_overlays`, `MP_Biker_Hair_003_M` }, + [35] = { `mpbiker_overlays`, `MP_Biker_Hair_004_M` }, + [36] = { `mpbiker_overlays`, `MP_Biker_Hair_005_M` }, + [37] = { `multiplayer_overlays`, `NG_M_Hair_001` }, + [38] = { `multiplayer_overlays`, `NG_M_Hair_002` }, + [39] = { `multiplayer_overlays`, `NG_M_Hair_003` }, + [40] = { `multiplayer_overlays`, `NG_M_Hair_004` }, + [41] = { `multiplayer_overlays`, `NG_M_Hair_005` }, + [42] = { `multiplayer_overlays`, `NG_M_Hair_006` }, + [43] = { `multiplayer_overlays`, `NG_M_Hair_007` }, + [44] = { `multiplayer_overlays`, `NG_M_Hair_008` }, + [45] = { `multiplayer_overlays`, `NG_M_Hair_009` }, + [46] = { `multiplayer_overlays`, `NG_M_Hair_013` }, + [47] = { `multiplayer_overlays`, `NG_M_Hair_002` }, + [48] = { `multiplayer_overlays`, `NG_M_Hair_011` }, + [49] = { `multiplayer_overlays`, `NG_M_Hair_012` }, + [50] = { `multiplayer_overlays`, `NG_M_Hair_014` }, + [51] = { `multiplayer_overlays`, `NG_M_Hair_015` }, + [52] = { `multiplayer_overlays`, `NGBea_M_Hair_000` }, + [53] = { `multiplayer_overlays`, `NGBea_M_Hair_001` }, + [54] = { `multiplayer_overlays`, `NGBus_M_Hair_000` }, + [55] = { `multiplayer_overlays`, `NGBus_M_Hair_001` }, + [56] = { `multiplayer_overlays`, `NGHip_M_Hair_000` }, + [57] = { `multiplayer_overlays`, `NGHip_M_Hair_001` }, + [58] = { `multiplayer_overlays`, `NGInd_M_Hair_000` }, + [59] = { `mplowrider_overlays`, `LR_M_Hair_000` }, + [60] = { `mplowrider_overlays`, `LR_M_Hair_001` }, + [61] = { `mplowrider_overlays`, `LR_M_Hair_002` }, + [62] = { `mplowrider_overlays`, `LR_M_Hair_003` }, + [63] = { `mplowrider2_overlays`, `LR_M_Hair_004` }, + [64] = { `mplowrider2_overlays`, `LR_M_Hair_005` }, + [65] = { `mplowrider2_overlays`, `LR_M_Hair_006` }, + [66] = { `mpbiker_overlays`, `MP_Biker_Hair_000_M` }, + [67] = { `mpbiker_overlays`, `MP_Biker_Hair_001_M` }, + [68] = { `mpbiker_overlays`, `MP_Biker_Hair_002_M` }, + [69] = { `mpbiker_overlays`, `MP_Biker_Hair_003_M` }, + [70] = { `mpbiker_overlays`, `MP_Biker_Hair_004_M` }, + [71] = { `mpbiker_overlays`, `MP_Biker_Hair_005_M` }, + [72] = { `mpgunrunning_overlays`, `MP_Gunrunning_Hair_M_000_M` }, + [73] = { `mpgunrunning_overlays`, `MP_Gunrunning_Hair_M_001_M` }, + [74] = { `mpVinewood_overlays`, `MP_Vinewood_Hair_M_000_M` }, + [75] = { `mptuner_overlays`, `MP_Tuner_Hair_001_M` }, + [76] = { `mpsecurity_overlays`, `MP_Security_Hair_001_M` }, + }, + + female = { + [0] = { `mpbeach_overlays`, `FM_Hair_Fuzz` }, + [1] = { `multiplayer_overlays`, `NG_F_Hair_001` }, + [2] = { `multiplayer_overlays`, `NG_F_Hair_002` }, + [3] = { `multiplayer_overlays`, `NG_F_Hair_003` }, + [4] = { `multiplayer_overlays`, `NG_F_Hair_004` }, + [5] = { `multiplayer_overlays`, `NG_F_Hair_005` }, + [6] = { `multiplayer_overlays`, `NG_F_Hair_006` }, + [7] = { `multiplayer_overlays`, `NG_F_Hair_007` }, + [8] = { `multiplayer_overlays`, `NG_F_Hair_008` }, + [9] = { `multiplayer_overlays`, `NG_F_Hair_009` }, + [10] = { `multiplayer_overlays`, `NG_F_Hair_010` }, + [11] = { `multiplayer_overlays`, `NG_F_Hair_011` }, + [12] = { `multiplayer_overlays`, `NG_F_Hair_012` }, + [13] = { `multiplayer_overlays`, `NG_F_Hair_013` }, + [14] = { `multiplayer_overlays`, `NG_M_Hair_014` }, + [15] = { `multiplayer_overlays`, `NG_M_Hair_015` }, + [16] = { `multiplayer_overlays`, `NGBea_F_Hair_000` }, + [17] = { `multiplayer_overlays`, `NGBea_F_Hair_001` }, + [18] = { `multiplayer_overlays`, `NG_F_Hair_007` }, + [19] = { `multiplayer_overlays`, `NGBus_F_Hair_000` }, + [20] = { `multiplayer_overlays`, `NGBus_F_Hair_001` }, + [21] = { `multiplayer_overlays`, `NGBea_F_Hair_001` }, + [22] = { `multiplayer_overlays`, `NGHip_F_Hair_000` }, + [23] = { `multiplayer_overlays`, `NGInd_F_Hair_000` }, + [25] = { `mplowrider_overlays`, `LR_F_Hair_000` }, + [26] = { `mplowrider_overlays`, `LR_F_Hair_001` }, + [27] = { `mplowrider_overlays`, `LR_F_Hair_002` }, + [28] = { `mplowrider2_overlays`, `LR_F_Hair_003` }, + [29] = { `mplowrider2_overlays`, `LR_F_Hair_003` }, + [30] = { `mplowrider2_overlays`, `LR_F_Hair_004` }, + [31] = { `mplowrider2_overlays`, `LR_F_Hair_006` }, + [32] = { `mpbiker_overlays`, `MP_Biker_Hair_000_F` }, + [33] = { `mpbiker_overlays`, `MP_Biker_Hair_001_F` }, + [34] = { `mpbiker_overlays`, `MP_Biker_Hair_002_F` }, + [35] = { `mpbiker_overlays`, `MP_Biker_Hair_003_F` }, + [36] = { `multiplayer_overlays`, `NG_F_Hair_003` }, + [37] = { `mpbiker_overlays`, `MP_Biker_Hair_006_F` }, + [38] = { `mpbiker_overlays`, `MP_Biker_Hair_004_F` }, + [39] = { `multiplayer_overlays`, `NG_F_Hair_001` }, + [40] = { `multiplayer_overlays`, `NG_F_Hair_002` }, + [41] = { `multiplayer_overlays`, `NG_F_Hair_003` }, + [42] = { `multiplayer_overlays`, `NG_F_Hair_004` }, + [43] = { `multiplayer_overlays`, `NG_F_Hair_005` }, + [44] = { `multiplayer_overlays`, `NG_F_Hair_006` }, + [45] = { `multiplayer_overlays`, `NG_F_Hair_007` }, + [46] = { `multiplayer_overlays`, `NG_F_Hair_008` }, + [47] = { `multiplayer_overlays`, `NG_F_Hair_009` }, + [48] = { `multiplayer_overlays`, `NG_F_Hair_010` }, + [49] = { `multiplayer_overlays`, `NG_F_Hair_011` }, + [50] = { `multiplayer_overlays`, `NG_F_Hair_012` }, + [51] = { `multiplayer_overlays`, `NG_F_Hair_013` }, + [52] = { `multiplayer_overlays`, `NG_M_Hair_014` }, + [53] = { `multiplayer_overlays`, `NG_M_Hair_015` }, + [54] = { `multiplayer_overlays`, `NGBea_F_Hair_000` }, + [55] = { `multiplayer_overlays`, `NGBea_F_Hair_001` }, + [56] = { `multiplayer_overlays`, `NG_F_Hair_007` }, + [57] = { `multiplayer_overlays`, `NGBus_F_Hair_000` }, + [58] = { `multiplayer_overlays`, `NGBus_F_Hair_001` }, + [59] = { `multiplayer_overlays`, `NGBea_F_Hair_001` }, + [60] = { `multiplayer_overlays`, `NGHip_F_Hair_000` }, + [61] = { `multiplayer_overlays`, `NGInd_F_Hair_000` }, + [62] = { `mplowrider_overlays`, `LR_F_Hair_000` }, + [63] = { `mplowrider_overlays`, `LR_F_Hair_001` }, + [64] = { `mplowrider_overlays`, `LR_F_Hair_002` }, + [65] = { `mplowrider2_overlays`, `LR_F_Hair_003` }, + [66] = { `mplowrider2_overlays`, `LR_F_Hair_003` }, + [67] = { `mplowrider2_overlays`, `LR_F_Hair_004` }, + [68] = { `mplowrider2_overlays`, `LR_F_Hair_006` }, + [69] = { `mpbiker_overlays`, `MP_Biker_Hair_000_F` }, + [70] = { `mpbiker_overlays`, `MP_Biker_Hair_001_F` }, + [71] = { `mpbiker_overlays`, `MP_Biker_Hair_002_F` }, + [72] = { `mpbiker_overlays`, `MP_Biker_Hair_003_F` }, + [73] = { `multiplayer_overlays`, `NG_F_Hair_003` }, + [74] = { `mpbiker_overlays`, `MP_Biker_Hair_006_F` }, + [75] = { `mpbiker_overlays`, `MP_Biker_Hair_004_F` }, + [76] = { `mpgunrunning_overlays`, `MP_Gunrunning_Hair_F_000_F` }, + [77] = { `mpgunrunning_overlays`, `MP_Gunrunning_Hair_F_001_F` }, + [78] = { `mpVinewood_overlays`, `MP_Vinewood_Hair_F_000_F` }, + [79] = { `mptuner_overlays`, `MP_Tuner_Hair_000_F` }, + [80] = { `mpsecurity_overlays`, `MP_Security_Hair_000_F` }, + }, +} + +constants.DATA_CLOTHES = { + head = { + animations = { + on = { + dict = "mp_masks@standard_car@ds@", + anim = "put_on_mask", + move = 51, + duration = 600 + }, + off = { + dict = "missheist_agency2ahelmet", + anim = "take_off_helmet_stand", + move = 51, + duration = 1200 + } + }, + components = { + male = { + {1, 0} + }, + female = { + {1, 0} + } + }, + props = { + male = { + {0, -1} + }, + female = {} + } + }, + body = { + animations = { + on = { + dict = "clothingtie", + anim = "try_tie_negative_a", + move = 51, + duration = 1200 + }, + off = { + dict = "clothingtie", + anim = "try_tie_negative_a", + move = 51, + duration = 1200 + } + }, + components = { + male = { + {11, 252}, + {3, 15}, + {8, 15}, + {10, 0}, + {5, 0} + }, + female = { + {11, 15}, + {8, 14}, + {3, 15}, + {10, 0}, + {5, 0} + } + }, + props = { + male = {}, + female = {} + } + }, + bottom = { + animations = { + on = { + dict = "re@construction", + anim = "out_of_breath", + move = 51, + duration = 1300 + }, + off = { + dict = "re@construction", + anim = "out_of_breath", + move = 51, + duration = 1300 + } + }, + components = { + male = { + {4, 61}, + {6, 34} + }, + female = { + {4, 15}, + {6, 35} + } + }, + props = { + male = {}, + female = {} + } + } +} + +constants.CAMERAS = { + default = { + vec3(0, 2.2, 0.2), + vec3(0, 0, -0.05), + }, + head = { + vec3(0, 0.9, 0.65), + vec3(0, 0, 0.6), + }, + body = { + vec3(0, 1.2, 0.2), + vec3(0, 0, 0.2), + }, + bottom = { + vec3(0, 0.98, -0.7), + vec3(0, 0, -0.9), + }, +} + +constants.OFFSETS = { + default = vec2(1.5, -1), + head = vec2(0.7, -0.45), + body = vec2(1.2, -0.45), + bottom = vec2(0.7, -0.45), +} diff --git a/resources/[core]/illenium-appearance/game/customization.lua b/resources/[core]/illenium-appearance/game/customization.lua new file mode 100644 index 0000000..f5d1fc3 --- /dev/null +++ b/resources/[core]/illenium-appearance/game/customization.lua @@ -0,0 +1,613 @@ +local reverseCamera + +local function getRgbColors() + local colors = { + hair = {}, + makeUp = {} + } + + for i = 0, GetNumHairColors() - 1 do + colors.hair[i+1] = {GetPedHairRgbColor(i)} + end + + for i = 0, GetNumMakeupColors() - 1 do + colors.makeUp[i+1] = {GetPedMakeupRgbColor(i)} + end + + return colors +end + +local playerAppearance + +local function getAppearance() + if not playerAppearance then + playerAppearance = client.getPedAppearance(cache.ped) + end + + return playerAppearance +end +client.getAppearance = getAppearance + +local function addToBlacklist(item, drawable, drawableId, blacklistSettings) + if drawable == drawableId and item.textures then + for i = 1, #item.textures do + blacklistSettings.textures[#blacklistSettings.textures + 1] = item.textures[i] + end + end + if not item.textures or #item.textures == 0 then + blacklistSettings.drawables[#blacklistSettings.drawables + 1] = drawable + end +end + +local function listContains(items, item) + for i = 1, #items do + if items[i] == item then + return true + end + end + return false +end + +local function listContainsAny(items, containedItems) + for i = 1, #items do + if listContains(containedItems, items[i]) then + return true + end + end + return false +end + +local function allowedForPlayer(item, allowedAces) + return (item.jobs and listContains(item.jobs, client.job.name)) or (item.gangs and listContains(item.gangs, client.gang.name)) or (item.aces and listContainsAny(item.aces, allowedAces) or (item.citizenids and listContains(item.citizenids, client.citizenid))) +end + +local function filterPedModelsForPlayer(pedConfigs) + local playerPeds = {} + local allowedAces = lib.callback.await("illenium-appearance:server:GetPlayerAces", false) + + for i = 1, #pedConfigs do + local config = pedConfigs[i] + if (not config.jobs and not config.gangs and not config.aces and not config.citizenids) or allowedForPlayer(config, allowedAces) then + for j = 1, #config.peds do + playerPeds[#playerPeds + 1] = config.peds[j] + end + end + end + return playerPeds +end + +local function filterTattoosByGender(tattoos) + local filtered = {} + local gender = client.getPedDecorationType() + for k, v in pairs(tattoos) do + filtered[k] = {} + for i = 1, #v do + local tattoo = v[i] + if tattoo["hash" .. gender:gsub("^%l", string.upper)] ~= "" then + filtered[k][#filtered[k] + 1] = tattoo + end + end + end + return filtered +end + +local function filterBlacklistSettings(items, drawableId) + local blacklistSettings = { + drawables = {}, + textures = {} + } + + local allowedAces = lib.callback.await("illenium-appearance:server:GetPlayerAces", false) + + for i = 1, #items do + local item = items[i] + if not allowedForPlayer(item, allowedAces) and item.drawables then + for j = 0, #item.drawables do + addToBlacklist(item, item.drawables[j], drawableId, blacklistSettings) + end + end + end + + return blacklistSettings +end + +local function componentBlacklistMap(gender, componentId) + local genderSettings = Config.Blacklist[gender].components + if componentId == 1 then + return genderSettings.masks + elseif componentId == 3 then + return genderSettings.upperBody + elseif componentId == 4 then + return genderSettings.lowerBody + elseif componentId == 5 then + return genderSettings.bags + elseif componentId == 6 then + return genderSettings.shoes + elseif componentId == 7 then + return genderSettings.scarfAndChains + elseif componentId == 8 then + return genderSettings.shirts + elseif componentId == 9 then + return genderSettings.bodyArmor + elseif componentId == 10 then + return genderSettings.decals + elseif componentId == 11 then + return genderSettings.jackets + end + + return {} +end + +local function propBlacklistMap(gender, propId) + local genderSettings = Config.Blacklist[gender].props + + if propId == 0 then + return genderSettings.hats + elseif propId == 1 then + return genderSettings.glasses + elseif propId == 2 then + return genderSettings.ear + elseif propId == 6 then + return genderSettings.watches + elseif propId == 7 then + return genderSettings.bracelets + end + + return {} +end + +local function getComponentSettings(ped, componentId) + local drawableId = GetPedDrawableVariation(ped, componentId) + local gender = client.getPedDecorationType() + + local blacklistSettings = { + drawables = {}, + textures = {} + } + + if client.isPedFreemodeModel(ped) then + blacklistSettings = filterBlacklistSettings(componentBlacklistMap(gender, componentId), drawableId) + end + + return { + component_id = componentId, + drawable = { + min = 0, + max = GetNumberOfPedDrawableVariations(ped, componentId) - 1 + }, + texture = { + min = 0, + max = GetNumberOfPedTextureVariations(ped, componentId, drawableId) - 1 + }, + blacklist = blacklistSettings + } +end +client.getComponentSettings = getComponentSettings + +local function getPropSettings(ped, propId) + local drawableId = GetPedPropIndex(ped, propId) + local gender = client.getPedDecorationType() + + local blacklistSettings = { + drawables = {}, + textures = {} + } + + if client.isPedFreemodeModel(ped) then + blacklistSettings = filterBlacklistSettings(propBlacklistMap(gender, propId), drawableId) + end + + local settings = { + prop_id = propId, + drawable = { + min = -1, + max = GetNumberOfPedPropDrawableVariations(ped, propId) - 1 + }, + texture = { + min = -1, + max = GetNumberOfPedPropTextureVariations(ped, propId, drawableId) - 1 + }, + blacklist = blacklistSettings + } + return settings +end +client.getPropSettings = getPropSettings + +local function getHairSettings(ped) + local colors = getRgbColors() + local gender = client.getPedDecorationType() + local blacklistSettings = { + drawables = {}, + textures = {} + } + + if client.isPedFreemodeModel(ped) then + blacklistSettings = filterBlacklistSettings(Config.Blacklist[gender].hair, GetPedDrawableVariation(ped, 2)) + end + + local settings = { + style = { + min = 0, + max = GetNumberOfPedDrawableVariations(ped, 2) - 1 + }, + color = { + items = colors.hair + }, + highlight = { + items = colors.hair + }, + texture = { + min = 0, + max = GetNumberOfPedTextureVariations(ped, 2, GetPedDrawableVariation(ped, 2)) - 1 + }, + blacklist = blacklistSettings + } + + return settings +end +client.getHairSettings = getHairSettings + +local function getAppearanceSettings() + local ped = { + model = { + items = filterPedModelsForPlayer(Config.Peds.pedConfig) + } + } + + local tattoos = { + items = filterTattoosByGender(Config.Tattoos), + opacity = { + min = 0.1, + max = 1, + factor = 0.1, + } + } + + local components = {} + for i = 1, #constants.PED_COMPONENTS_IDS do + components[i] = getComponentSettings(cache.ped, constants.PED_COMPONENTS_IDS[i]) + end + + local props = {} + for i = 1, #constants.PED_PROPS_IDS do + props[i] = getPropSettings(cache.ped, constants.PED_PROPS_IDS[i]) + end + + local headBlend = { + shapeFirst = { + min = 0, + max = 45 + }, + shapeSecond = { + min = 0, + max = 45 + }, + shapeThird = { + min = 0, + max = 45 + }, + skinFirst = { + min = 0, + max = 45 + }, + skinSecond = { + min = 0, + max = 45 + }, + skinThird = { + min = 0, + max = 45 + }, + shapeMix = { + min = 0, + max = 1, + factor = 0.1, + }, + skinMix = { + min = 0, + max = 1, + factor = 0.1, + }, + thirdMix = { + min = 0, + max = 1, + factor = 0.1, + } + } + + local size = #constants.FACE_FEATURES + local faceFeatures = table.create(0, size) + for i = 1, size do + local feature = constants.FACE_FEATURES[i] + faceFeatures[feature] = { min = -1, max = 1, factor = 0.1} + end + + local colors = getRgbColors() + + local colorMap = { + beard = colors.hair, + eyebrows = colors.hair, + chestHair = colors.hair, + makeUp = colors.makeUp, + blush = colors.makeUp, + lipstick = colors.makeUp, + } + + size = #constants.HEAD_OVERLAYS + local headOverlays = table.create(0, size) + + for i = 1, size do + local overlay = constants.HEAD_OVERLAYS[i] + local settings = { + style = { + min = 0, + max = GetPedHeadOverlayNum(i - 1) - 1 + }, + opacity = { + min = 0, + max = 1, + factor = 0.1, + } + } + + if colorMap[overlay] then + settings.color = { + items = colorMap[overlay] + } + end + + headOverlays[overlay] = settings + end + + local eyeColor = { + min = 0, + max = 30 + } + + return { + ped = ped, + components = components, + props = props, + headBlend = headBlend, + faceFeatures = faceFeatures, + headOverlays = headOverlays, + hair = getHairSettings(cache.ped), + eyeColor = eyeColor, + tattoos = tattoos + } +end +client.getAppearanceSettings = getAppearanceSettings + +local config +function client.getConfig() return config end + +local isCameraInterpolating +local currentCamera +local cameraHandle +local function setCamera(key) + if not isCameraInterpolating then + if key ~= "current" then + currentCamera = key + end + + local coords, point = table.unpack(constants.CAMERAS[currentCamera]) + local reverseFactor = reverseCamera and -1 or 1 + + if cameraHandle then + local camCoords = GetOffsetFromEntityInWorldCoords(cache.ped, coords.x * reverseFactor, coords.y * reverseFactor, coords.z * reverseFactor) + local camPoint = GetOffsetFromEntityInWorldCoords(cache.ped, point.x, point.y, point.z) + local tmpCamera = CreateCameraWithParams("DEFAULT_SCRIPTED_CAMERA", camCoords.x, camCoords.y, camCoords.z, 0.0, 0.0, 0.0, 49.0, false, 0) + + PointCamAtCoord(tmpCamera, camPoint.x, camPoint.y, camPoint.z) + SetCamActiveWithInterp(tmpCamera, cameraHandle, 1000, 1, 1) + + isCameraInterpolating = true + + CreateThread(function() + repeat Wait(500) + until not IsCamInterpolating(cameraHandle) and IsCamActive(tmpCamera) + DestroyCam(cameraHandle, false) + cameraHandle = tmpCamera + isCameraInterpolating = false + end) + else + local camCoords = GetOffsetFromEntityInWorldCoords(cache.ped, coords.x, coords.y, coords.z) + local camPoint = GetOffsetFromEntityInWorldCoords(cache.ped, point.x, point.y, point.z) + cameraHandle = CreateCameraWithParams("DEFAULT_SCRIPTED_CAMERA", camCoords.x, camCoords.y, camCoords.z, 0.0, 0.0, 0.0, 49.0, false, 0) + + PointCamAtCoord(cameraHandle, camPoint.x, camPoint.y, camPoint.z) + SetCamActive(cameraHandle, true) + end + end +end +client.setCamera = setCamera + +function client.rotateCamera(direction) + if not isCameraInterpolating then + local coords, point = table.unpack(constants.CAMERAS[currentCamera]) + local offset = constants.OFFSETS[currentCamera] + local sideFactor = direction == "left" and 1 or -1 + local reverseFactor = reverseCamera and -1 or 1 + + local camCoords = GetOffsetFromEntityInWorldCoords( + cache.ped, + (coords.x + offset.x) * sideFactor * reverseFactor, + (coords.y + offset.y) * reverseFactor, + coords.z + ) + + local camPoint = GetOffsetFromEntityInWorldCoords(cache.ped, point.x, point.y, point.z) + local tmpCamera = CreateCameraWithParams("DEFAULT_SCRIPTED_CAMERA", camCoords.x, camCoords.y, camCoords.z, 0.0, 0.0, 0.0, 49.0, false, 0) + + PointCamAtCoord(tmpCamera, camPoint.x, camPoint.y, camPoint.z) + SetCamActiveWithInterp(tmpCamera, cameraHandle, 1000, 1, 1) + + isCameraInterpolating = true + + CreateThread(function() + repeat Wait(500) + until not IsCamInterpolating(cameraHandle) and IsCamActive(tmpCamera) + DestroyCam(cameraHandle, false) + cameraHandle = tmpCamera + isCameraInterpolating = false + end) + end +end + +local playerCoords +local function pedTurn(ped, angle) + reverseCamera = not reverseCamera + local sequenceTaskId = OpenSequenceTask() + if sequenceTaskId then + TaskGoStraightToCoord(0, playerCoords.x, playerCoords.y, playerCoords.z, 8.0, -1, GetEntityHeading(ped) - angle, 0.1) + TaskStandStill(0, -1) + CloseSequenceTask(sequenceTaskId) + ClearPedTasks(ped) + TaskPerformSequence(ped, sequenceTaskId) + ClearSequenceTask(sequenceTaskId) + end +end +client.pedTurn = pedTurn + +local function wearClothes(data, typeClothes) + local dataClothes = constants.DATA_CLOTHES[typeClothes] + local animationsOn = dataClothes.animations.on + local components = dataClothes.components[client.getPedDecorationType()] + local appliedComponents = data.components + local props = dataClothes.props[client.getPedDecorationType()] + local appliedProps = data.props + + RequestAnimDict(animationsOn.dict) + while not HasAnimDictLoaded(animationsOn.dict) do + Wait(0) + end + + for i = 1, #components do + local componentId = components[i][1] + for j = 1, #appliedComponents do + local applied = appliedComponents[j] + if applied.component_id == componentId then + SetPedComponentVariation(cache.ped, componentId, applied.drawable, applied.texture, 2) + end + end + end + + for i = 1, #props do + local propId = props[i][1] + for j = 1, #appliedProps do + local applied = appliedProps[j] + if applied.prop_id == propId then + SetPedPropIndex(cache.ped, propId, applied.drawable, applied.texture, true) + end + end + end + + TaskPlayAnim(cache.ped, animationsOn.dict, animationsOn.anim, 3.0, 3.0, animationsOn.duration, animationsOn.move, 0, false, false, false) +end +client.wearClothes = wearClothes + +local function removeClothes(typeClothes) + local dataClothes = constants.DATA_CLOTHES[typeClothes] + local animationsOff = dataClothes.animations.off + local components = dataClothes.components[client.getPedDecorationType()] + local props = dataClothes.props[client.getPedDecorationType()] + + RequestAnimDict(animationsOff.dict) + while not HasAnimDictLoaded(animationsOff.dict) do + Wait(0) + end + + for i = 1, #components do + local component = components[i] + SetPedComponentVariation(cache.ped, component[1], component[2], 0, 2) + end + + for i = 1, #props do + ClearPedProp(cache.ped, props[i][1]) + end + + TaskPlayAnim(cache.ped, animationsOff.dict, animationsOff.anim, 3.0, 3.0, animationsOff.duration, animationsOff.move, 0, false, false, false) +end +client.removeClothes = removeClothes + +local playerHeading +function client.getHeading() return playerHeading end + +local callback +function client.startPlayerCustomization(cb, conf) + repeat Wait(0) until IsScreenFadedIn() and not IsPlayerTeleportActive() and not IsPlayerSwitchInProgress() + + playerAppearance = client.getPedAppearance(cache.ped) + playerCoords = GetEntityCoords(cache.ped, true) + playerHeading = GetEntityHeading(cache.ped) + + BackupPlayerStats() + + callback = cb + config = conf + reverseCamera = false + isCameraInterpolating = false + + setCamera("default") + SetNuiFocus(true, true) + SetNuiFocusKeepInput(false) + RenderScriptCams(true, false, 0, true, true) + SetEntityInvincible(cache.ped, Config.InvincibleDuringCustomization) + TaskStandStill(cache.ped, -1) + + if Config.HideRadar then DisplayRadar(false) end + + SendNuiMessage(json.encode({ + type = "appearance_display", + payload = { + asynchronous = Config.AsynchronousLoading + } + })) +end + +function client.exitPlayerCustomization(appearance) + RenderScriptCams(false, false, 0, true, true) + DestroyCam(cameraHandle, false) + SetNuiFocus(false, false) + + if Config.HideRadar then DisplayRadar(true) end + + ClearPedTasksImmediately(cache.ped) + SetEntityInvincible(cache.ped, false) + + SendNuiMessage(json.encode({ + type = "appearance_hide", + payload = {} + })) + + if not appearance then + client.setPlayerAppearance(getAppearance()) + else + client.setPedTattoos(cache.ped, appearance.tattoos) + end + + RestorePlayerStats() + + if callback then + callback(appearance) + end + + callback = nil + config = nil + playerAppearance = nil + playerCoords = nil + cameraHandle = nil + currentCamera = nil + reverseCamera = nil + isCameraInterpolating = nil + +end + +AddEventHandler("onResourceStop", function(resource) + if resource == GetCurrentResourceName() then + SetNuiFocus(false, false) + SetNuiFocusKeepInput(false) + end +end) + +exports("startPlayerCustomization", client.startPlayerCustomization) diff --git a/resources/[core]/illenium-appearance/game/nui.lua b/resources/[core]/illenium-appearance/game/nui.lua new file mode 100644 index 0000000..579fd86 --- /dev/null +++ b/resources/[core]/illenium-appearance/game/nui.lua @@ -0,0 +1,136 @@ +local client = client + +RegisterNUICallback("appearance_get_locales", function(_, cb) + cb(Locales[GetConvar("illenium-appearance:locale", "en")].UI) +end) + +RegisterNUICallback("appearance_get_settings", function(_, cb) + cb({ appearanceSettings = client.getAppearanceSettings() }) +end) + +RegisterNUICallback("appearance_get_data", function(_, cb) + Wait(250) + local appearanceData = client.getAppearance() + if appearanceData.tattoos then + client.setPedTattoos(cache.ped, appearanceData.tattoos) + end + cb({ config = client.getConfig(), appearanceData = appearanceData }) +end) + +RegisterNUICallback("appearance_set_camera", function(camera, cb) + cb(1) + client.setCamera(camera) +end) + +RegisterNUICallback("appearance_turn_around", function(_, cb) + cb(1) + client.pedTurn(cache.ped, 180.0) +end) + +RegisterNUICallback("appearance_rotate_camera", function(direction, cb) + cb(1) + client.rotateCamera(direction) +end) + +RegisterNUICallback("appearance_change_model", function(model, cb) + local playerPed = client.setPlayerModel(model) + + SetEntityHeading(cache.ped, client.getHeading()) + SetEntityInvincible(playerPed, true) + TaskStandStill(playerPed, -1) + + cb({ + appearanceSettings = client.getAppearanceSettings(), + appearanceData = client.getPedAppearance(playerPed) + }) +end) + +RegisterNUICallback("appearance_change_component", function(component, cb) + client.setPedComponent(cache.ped, component) + cb(client.getComponentSettings(cache.ped, component.component_id)) +end) + +RegisterNUICallback("appearance_change_prop", function(prop, cb) + client.setPedProp(cache.ped, prop) + cb(client.getPropSettings(cache.ped, prop.prop_id)) +end) + +RegisterNUICallback("appearance_change_head_blend", function(headBlend, cb) + cb(1) + client.setPedHeadBlend(cache.ped, headBlend) +end) + +RegisterNUICallback("appearance_change_face_feature", function(faceFeatures, cb) + cb(1) + client.setPedFaceFeatures(cache.ped, faceFeatures) +end) + +RegisterNUICallback("appearance_change_head_overlay", function(headOverlays, cb) + cb(1) + client.setPedHeadOverlays(cache.ped, headOverlays) +end) + +RegisterNUICallback("appearance_change_hair", function(hair, cb) + client.setPedHair(cache.ped, hair) + cb(client.getHairSettings(cache.ped)) +end) + +RegisterNUICallback("appearance_change_eye_color", function(eyeColor, cb) + cb(1) + client.setPedEyeColor(cache.ped, eyeColor) +end) + +RegisterNUICallback("appearance_apply_tattoo", function(data, cb) + local paid = not data.tattoo or not Config.ChargePerTattoo or lib.callback.await("illenium-appearance:server:payForTattoo", false, data.tattoo) + if paid then + client.addPedTattoo(cache.ped, data.updatedTattoos or data) + end + cb(paid) +end) + +RegisterNUICallback("appearance_preview_tattoo", function(previewTattoo, cb) + cb(1) + client.setPreviewTattoo(cache.ped, previewTattoo.data, previewTattoo.tattoo) +end) + +RegisterNUICallback("appearance_delete_tattoo", function(data, cb) + cb(1) + client.removePedTattoo(cache.ped, data) +end) + +RegisterNUICallback("appearance_wear_clothes", function(dataWearClothes, cb) + cb(1) + client.wearClothes(dataWearClothes.data, dataWearClothes.key) +end) + +RegisterNUICallback("appearance_remove_clothes", function(clothes, cb) + cb(1) + client.removeClothes(clothes) +end) + +RegisterNUICallback("appearance_save", function(appearance, cb) + cb(1) + client.wearClothes(appearance, "head") + client.wearClothes(appearance, "body") + client.wearClothes(appearance, "bottom") + client.exitPlayerCustomization(appearance) +end) + +RegisterNUICallback("appearance_exit", function(_, cb) + cb(1) + client.exitPlayerCustomization() +end) + +RegisterNUICallback("rotate_left", function(_, cb) + cb(1) + client.pedTurn(cache.ped, 10.0) +end) + +RegisterNUICallback("rotate_right", function(_, cb) + cb(1) + client.pedTurn(cache.ped, -10.0) +end) + +RegisterNUICallback("get_theme_configuration", function(_, cb) + cb(Config.Theme) +end) diff --git a/resources/[core]/illenium-appearance/game/util.lua b/resources/[core]/illenium-appearance/game/util.lua new file mode 100644 index 0000000..3081cb5 --- /dev/null +++ b/resources/[core]/illenium-appearance/game/util.lua @@ -0,0 +1,439 @@ +local hashesComputed = false +local PED_TATTOOS = {} +local pedModelsByHash = {} + +local function tofloat(num) + return num + 0.0 +end + +local function isPedFreemodeModel(ped) + local model = GetEntityModel(ped) + return model == `mp_m_freemode_01` or model == `mp_f_freemode_01` +end + +local function computePedModelsByHash() + for i = 1, #Config.Peds.pedConfig do + local peds = Config.Peds.pedConfig[i].peds + for j = 1, #peds do + pedModelsByHash[joaat(peds[j])] = peds[j] + end + end +end + +---@param ped number entity id +---@return string +--- Get the model name from an entity's model hash +local function getPedModel(ped) + if not hashesComputed then + computePedModelsByHash() + hashesComputed = true + end + return pedModelsByHash[GetEntityModel(ped)] +end + +---@param ped number entity id +---@return table> +local function getPedComponents(ped) + local size = #constants.PED_COMPONENTS_IDS + local components = table.create(size, 0) + + for i = 1, size do + local componentId = constants.PED_COMPONENTS_IDS[i] + components[i] = { + component_id = componentId, + drawable = GetPedDrawableVariation(ped, componentId), + texture = GetPedTextureVariation(ped, componentId), + } + end + + return components +end + +---@param ped number entity id +---@return table> +local function getPedProps(ped) + local size = #constants.PED_PROPS_IDS + local props = table.create(size, 0) + + for i = 1, size do + local propId = constants.PED_PROPS_IDS[i] + props[i] = { + prop_id = propId, + drawable = GetPedPropIndex(ped, propId), + texture = GetPedPropTextureIndex(ped, propId), + } + end + return props +end + +local function round(number, decimalPlaces) + return tonumber(string.format("%." .. (decimalPlaces or 0) .. "f", number)) +end + +---@param ped number entity id +---@return table +---``` +---{ shapeFirst, shapeSecond, shapeThird, skinFirst, skinSecond, skinThird, shapeMix, skinMix, thirdMix } +---``` +local function getPedHeadBlend(ped) + -- GET_PED_HEAD_BLEND_DATA + local shapeFirst, shapeSecond, shapeThird, skinFirst, skinSecond, skinThird, shapeMix, skinMix, thirdMix = Citizen.InvokeNative(0x2746BD9D88C5C5D0, ped, Citizen.PointerValueIntInitialized(0), Citizen.PointerValueIntInitialized(0), Citizen.PointerValueIntInitialized(0), Citizen.PointerValueIntInitialized(0), Citizen.PointerValueIntInitialized(0), Citizen.PointerValueIntInitialized(0), Citizen.PointerValueFloatInitialized(0), Citizen.PointerValueFloatInitialized(0), Citizen.PointerValueFloatInitialized(0)) + + shapeMix = tonumber(string.sub(shapeMix, 0, 4)) + if shapeMix > 1 then shapeMix = 1 end + + skinMix = tonumber(string.sub(skinMix, 0, 4)) + if skinMix > 1 then skinMix = 1 end + + if not thirdMix then + thirdMix = 0 + end + thirdMix = tonumber(string.sub(thirdMix, 0, 4)) + if thirdMix > 1 then thirdMix = 1 end + + + return { + shapeFirst = shapeFirst, + shapeSecond = shapeSecond, + shapeThird = shapeThird, + skinFirst = skinFirst, + skinSecond = skinSecond, + skinThird = skinThird, + shapeMix = shapeMix, + skinMix = skinMix, + thirdMix = thirdMix + } +end + +---@param ped number entity id +---@return table> +local function getPedFaceFeatures(ped) + local size = #constants.FACE_FEATURES + local faceFeatures = table.create(0, size) + + for i = 1, size do + local feature = constants.FACE_FEATURES[i] + faceFeatures[feature] = round(GetPedFaceFeature(ped, i-1), 1) + end + + return faceFeatures +end + +---@param ped number entity id +---@return table> +local function getPedHeadOverlays(ped) + local size = #constants.HEAD_OVERLAYS + local headOverlays = table.create(0, size) + + for i = 1, size do + local overlay = constants.HEAD_OVERLAYS[i] + local _, value, _, firstColor, secondColor, opacity = GetPedHeadOverlayData(ped, i-1) + + if value ~= 255 then + opacity = round(opacity, 1) + else + value = 0 + opacity = 0 + end + + headOverlays[overlay] = {style = value, opacity = opacity, color = firstColor, secondColor = secondColor} + end + + return headOverlays +end + +---@param ped number entity id +---@return table +local function getPedHair(ped) + return { + style = GetPedDrawableVariation(ped, 2), + color = GetPedHairColor(ped), + highlight = GetPedHairHighlightColor(ped), + texture = GetPedTextureVariation(ped, 2) + } +end + +local function getPedDecorationType() + local pedModel = GetEntityModel(cache.ped) + local decorationType + + if pedModel == `mp_m_freemode_01` then + decorationType = "male" + elseif pedModel == `mp_f_freemode_01` then + decorationType = "female" + else + decorationType = IsPedMale(cache.ped) and "male" or "female" + end + + return decorationType +end + +local function getPedAppearance(ped) + local eyeColor = GetPedEyeColor(ped) + + return { + model = getPedModel(ped) or "mp_m_freemode_01", + headBlend = getPedHeadBlend(ped), + faceFeatures = getPedFaceFeatures(ped), + headOverlays = getPedHeadOverlays(ped), + components = getPedComponents(ped), + props = getPedProps(ped), + hair = getPedHair(ped), + tattoos = client.getPedTattoos(), + eyeColor = eyeColor < #constants.EYE_COLORS and eyeColor or 0 + } +end + +local function setPlayerModel(model) + if type(model) == "string" then model = joaat(model) end + + if IsModelInCdimage(model) then + RequestModel(model) + while not HasModelLoaded(model) do Wait(0) end + + SetPlayerModel(cache.playerId, model) + Wait(150) + SetModelAsNoLongerNeeded(model) + + if isPedFreemodeModel(cache.ped) then + SetPedDefaultComponentVariation(cache.ped) + -- Check if the model is male or female, then change the face mix based on this. + if model == `mp_m_freemode_01` then + SetPedHeadBlendData(cache.ped, 0, 0, 0, 0, 0, 0, 0, 0, 0, false) + elseif model == `mp_f_freemode_01` then + SetPedHeadBlendData(cache.ped, 45, 21, 0, 20, 15, 0, 0.3, 0.1, 0, false) + end + end + + PED_TATTOOS = {} + return cache.ped + end + + return cache.playerId +end + +local function setPedHeadBlend(ped, headBlend) + if headBlend and isPedFreemodeModel(ped) then + SetPedHeadBlendData(ped, headBlend.shapeFirst, headBlend.shapeSecond, headBlend.shapeThird, headBlend.skinFirst, headBlend.skinSecond, headBlend.skinThird, tofloat(headBlend.shapeMix or 0), tofloat(headBlend.skinMix or 0), tofloat(headBlend.thirdMix or 0), false) + end +end + +local function setPedFaceFeatures(ped, faceFeatures) + if faceFeatures then + for k, v in pairs(constants.FACE_FEATURES) do + SetPedFaceFeature(ped, k-1, tofloat(faceFeatures[v])) + end + end +end + +local function setPedHeadOverlays(ped, headOverlays) + if headOverlays then + for k, v in pairs(constants.HEAD_OVERLAYS) do + local headOverlay = headOverlays[v] + SetPedHeadOverlay(ped, k-1, headOverlay.style, tofloat(headOverlay.opacity)) + + if headOverlay.color then + local colorType = 1 + if v == "blush" or v == "lipstick" or v == "makeUp" then + colorType = 2 + end + + SetPedHeadOverlayColor(ped, k-1, colorType, headOverlay.color, headOverlay.secondColor) + end + end + end +end + +local function applyAutomaticFade(ped, style) + local gender = getPedDecorationType() + local hairDecoration = constants.HAIR_DECORATIONS[gender][style] + + if(hairDecoration) then + AddPedDecorationFromHashes(ped, hairDecoration[1], hairDecoration[2]) + end +end + +local function setTattoos(ped, tattoos, style) + local isMale = client.getPedDecorationType() == "male" + ClearPedDecorations(ped) + if Config.AutomaticFade then + tattoos["ZONE_HAIR"] = {} + PED_TATTOOS["ZONE_HAIR"] = {} + applyAutomaticFade(ped, style or GetPedDrawableVariation(ped, 2)) + end + for k in pairs(tattoos) do + for i = 1, #tattoos[k] do + local tattoo = tattoos[k][i] + local tattooGender = isMale and tattoo.hashMale or tattoo.hashFemale + for _ = 1, (tattoo.opacity or 0.1) * 10 do + AddPedDecorationFromHashes(ped, joaat(tattoo.collection), joaat(tattooGender)) + end + end + end + if Config.RCoreTattoosCompatibility then + TriggerEvent("rcore_tattoos:applyOwnedTattoos") + end +end + +local function setPedHair(ped, hair, tattoos) + if hair then + SetPedComponentVariation(ped, 2, hair.style, hair.texture, 0) + SetPedHairColor(ped, hair.color, hair.highlight) + if isPedFreemodeModel(ped) then + setTattoos(ped, tattoos or PED_TATTOOS, hair.style) + end + end +end + +local function setPedEyeColor(ped, eyeColor) + if eyeColor then + SetPedEyeColor(ped, eyeColor) + end +end + +local function setPedComponent(ped, component) + if component then + if isPedFreemodeModel(ped) and (component.component_id == 0 or component.component_id == 2) then + return + end + + SetPedComponentVariation(ped, component.component_id, component.drawable, component.texture, 0) + end +end + +local function setPedComponents(ped, components) + if components then + for _, v in pairs(components) do + setPedComponent(ped, v) + end + end +end + +local function setPedProp(ped, prop) + if prop then + if prop.drawable == -1 then + ClearPedProp(ped, prop.prop_id) + else + SetPedPropIndex(ped, prop.prop_id, prop.drawable, prop.texture, false) + end + end +end + +local function setPedProps(ped, props) + if props then + for _, v in pairs(props) do + setPedProp(ped, v) + end + end +end + +local function setPedTattoos(ped, tattoos) + PED_TATTOOS = tattoos + setTattoos(ped, tattoos) +end + +local function getPedTattoos() + return PED_TATTOOS +end + +local function addPedTattoo(ped, tattoos) + setTattoos(ped, tattoos) +end + +local function removePedTattoo(ped, tattoos) + setTattoos(ped, tattoos) +end + +local function setPreviewTattoo(ped, tattoos, tattoo) + local isMale = client.getPedDecorationType() == "male" + local tattooGender = isMale and tattoo.hashMale or tattoo.hashFemale + + ClearPedDecorations(ped) + for _ = 1, (tattoo.opacity or 0.1) * 10 do + AddPedDecorationFromHashes(ped, joaat(tattoo.collection), tattooGender) + end + for k in pairs(tattoos) do + for i = 1, #tattoos[k] do + local aTattoo = tattoos[k][i] + if aTattoo.name ~= tattoo.name then + local aTattooGender = isMale and aTattoo.hashMale or aTattoo.hashFemale + for _ = 1, (aTattoo.opacity or 0.1) * 10 do + AddPedDecorationFromHashes(ped, joaat(aTattoo.collection), joaat(aTattooGender)) + end + end + end + end + if Config.AutomaticFade then + applyAutomaticFade(ped, GetPedDrawableVariation(ped, 2)) + end +end + +local function setPedAppearance(ped, appearance) + if appearance then + setPedComponents(ped, appearance.components) + setPedProps(ped, appearance.props) + + if appearance.headBlend and isPedFreemodeModel(ped) then setPedHeadBlend(ped, appearance.headBlend) end + if appearance.faceFeatures then setPedFaceFeatures(ped, appearance.faceFeatures) end + if appearance.headOverlays then setPedHeadOverlays(ped, appearance.headOverlays) end + if appearance.hair then setPedHair(ped, appearance.hair, appearance.tattoos) end + if appearance.eyeColor then setPedEyeColor(ped, appearance.eyeColor) end + if appearance.tattoos then setPedTattoos(ped, appearance.tattoos) end + end +end + +local function setPlayerAppearance(appearance) + if appearance then + setPlayerModel(appearance.model) + setPedAppearance(cache.ped, appearance) + end +end + +exports("getPedModel", getPedModel) +exports("getPedComponents", getPedComponents) +exports("getPedProps", getPedProps) +exports("getPedHeadBlend", getPedHeadBlend) +exports("getPedFaceFeatures", getPedFaceFeatures) +exports("getPedHeadOverlays", getPedHeadOverlays) +exports("getPedHair", getPedHair) +exports("getPedAppearance", getPedAppearance) + +exports("setPlayerModel", setPlayerModel) +exports("setPedHeadBlend", setPedHeadBlend) +exports("setPedFaceFeatures", setPedFaceFeatures) +exports("setPedHeadOverlays", setPedHeadOverlays) +exports("setPedHair", setPedHair) +exports("setPedEyeColor", setPedEyeColor) +exports("setPedComponent", setPedComponent) +exports("setPedComponents", setPedComponents) +exports("setPedProp", setPedProp) +exports("setPedProps", setPedProps) +exports("setPlayerAppearance", setPlayerAppearance) +exports("setPedAppearance", setPedAppearance) +exports("setPedTattoos", setPedTattoos) + +client = { + getPedAppearance = getPedAppearance, + setPlayerModel = setPlayerModel, + setPedHeadBlend = setPedHeadBlend, + setPedFaceFeatures = setPedFaceFeatures, + setPedHair = setPedHair, + setPedHeadOverlays = setPedHeadOverlays, + setPedEyeColor = setPedEyeColor, + setPedComponent = setPedComponent, + setPedProp = setPedProp, + setPlayerAppearance = setPlayerAppearance, + setPedAppearance = setPedAppearance, + getPedDecorationType = getPedDecorationType, + isPedFreemodeModel = isPedFreemodeModel, + setPreviewTattoo = setPreviewTattoo, + setPedTattoos = setPedTattoos, + getPedTattoos = getPedTattoos, + addPedTattoo = addPedTattoo, + removePedTattoo = removePedTattoo, + getPedModel = getPedModel, + setPedComponents = setPedComponents, + setPedProps = setPedProps, + getPedComponents = getPedComponents, + getPedProps = getPedProps +} diff --git a/resources/[core]/illenium-appearance/locales/bg.lua b/resources/[core]/illenium-appearance/locales/bg.lua new file mode 100644 index 0000000..18052b0 --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/bg.lua @@ -0,0 +1,367 @@ +Locales["bg"] = { + UI = { + modal = { + save = { + title = "Запазване на кустомизация", + description = "Ще бъдете запомнен грозен" + }, + exit = { + title = "Изход от кустомизация", + description = "Няма да бъдат запазени промените" + }, + accept = "Да", + decline = "Не" + }, + ped = { + title = "Пед", + model = "Модел" + }, + headBlend = { + title = "Генове", + shape = { + title = "Лице", + firstOption = "Баща", + secondOption = "Майка", + mix = "Микс" + }, + skin = { + title = "Кожа", + firstOption = "Баща", + secondOption = "Майка", + mix = "Микс" + }, + race = { + title = "Раса", + shape = "Вид", + skin = "Кожа", + mix = "Микс" + } + }, + faceFeatures = { + title = "Характеристики на лицето", + nose = { + title = "Нос", + width = "Ширина", + height = "Височина", + size = "Размер", + boneHeight = "Кост височина", + boneTwist = "Кост усукване", + peakHeight = "Връх височина" + }, + eyebrows = { + title = "Вежди", + height = "Височина", + depth = "Дълбочина" + }, + cheeks = { + title = "Бузи", + boneHeight = "Кост височина", + boneWidth = "Кост ширина", + width = "Ширина" + }, + eyesAndMouth = { + title = "Очи и уста", + eyesOpening = "Очи отваряне", + lipsThickness = "Устни дебелина" + }, + jaw = { + title = "Челюст", + width = "Ширина", + size = "Размер" + }, + chin = { + title = "Брадичка", + lowering = "Понижаване", + length = "Дължина", + size = "Размер", + hole = "Дупка размер" + }, + neck = { + title = "Врат", + thickness = "Дебелина" + } + }, + headOverlays = { + title = "Външен вид", + hair = { + title = "Коса", + style = "Стил", + color = "Цвят", + highlight = "Силно осветена точка", + texture = "Текстура", + fade = "Избледняване" + }, + opacity = "Непрозрачност", + style = "Стил", + color = "Цвят", + secondColor = "Втори цвят", + blemishes = "Петна", + beard = "Брада", + eyebrows = "Вежди", + ageing = "Състаряване", + makeUp = "Грим", + blush = "Изчервяване", + complexion = "Тен", + sunDamage = "Увреждане от слънцето", + lipstick = "Червило", + moleAndFreckles = "Бенки и лунички", + chestHair = "Косми по гърдите", + bodyBlemishes = "Петна по тялото", + eyeColor = "Цвят на очите" + }, + components = { + title = "Дрехи", + drawable = "Вид", + texture = "Текстура", + mask = "Маска", + upperBody = "Ръце", + lowerBody = "Крака", + bags = "Чанти и парашут", + shoes = "Обувки", + scarfAndChains = "Шал и вериги", + shirt = "Тениска", + bodyArmor = "Бронежилетка", + decals = "Ваденки", + jackets = "Якета", + head = "Глава" + }, + props = { + title = "Обекти", + drawable = "Вид", + texture = "Текстура", + hats = "Шапки и каски", + glasses = "Очила", + ear = "Обеци", + watches = "Часовници", + bracelets = "Гривни" + }, + tattoos = { + title = "Татуировки", + items = { + ZONE_TORSO = "Тяло", + ZONE_HEAD = "Глава", + ZONE_LEFT_ARM = "Лява ръка", + ZONE_RIGHT_ARM = "Дясна ръка", + ZONE_LEFT_LEG = "Ляв крак", + ZONE_RIGHT_LEG = "Десен крак" + }, + apply = "Прилагане", + delete = "Премахване", + deleteAll = "Премахване на всички татуировки", + opacity = "Непрозрачност" + } + }, + outfitManagement = { + title = "Управление на дрехите", + jobText = "Управление на дрехите за работа", + gangText = "Управление на дрехите за банда" + }, + cancelled = { + title = "Отменена персонализация", + description = "Персонализацията не е запазена" + }, + outfits = { + import = { + title = "Въведете код за дрехата", + menuTitle = "Импортиране на дрехата", + description = "Импортиране на дреха от код за споделяне", + name = { + label = "Име на дрехата", + placeholder = "Хубава дреха", + default = "Импортирана дреха" + }, + code = { + label = "Код за дрехата" + }, + success = { + title = "Дрехата е импортирана", + description = "Можете сега да се смените към дрехата, използвайки менюто за дрехите" + }, + failure = { + title = "Грешка при импортирането", + description = "Невалиден код за дрехата" + } + }, + generate = { + title = "Генериране на код за дрехата", + description = "Генериране на код за дреха за споделяне", + failure = { + title = "Нещо се обърка", + description = "Генерирането на код не бе успешно за дрехата" + }, + success = { + title = "Кодът за дрехата е генериран", + description = "Ето вашия код за дрехата" + } + }, + save = { + menuTitle = "Запазете текущата дреха", + menuDescription = "Запазете текущата ви дреха като %s дреха", + description = "Запазете текущата ви дреха", + title = "Именувайте вашата дреха", + managementTitle = "Управление на детайлите за дрехата", + name = { + label = "Име на дрехата", + placeholder = "Много хубава дреха" + }, + gender = { + label = "Пол", + male = "Мъж", + female = "Жена" + }, + rank = { + label = "Минимален ранг" + }, + failure = { + title = "Запазването е неуспешно", + description = "Дреха с това име вече съществува" + }, + success = { + title = "Успешно", + description = "Дреха %s е запазена" + } + }, + update = { + title = "Обновяване на дреха", + description = "Запазете текущото ви дрехоподобрение в съществуваща дреха", + failure = { + title = "Обновяването е неуспешно", + description = "Тази дреха не съществува" + }, + success = { + title = "Успешно", + description = "Дреха %s е обновена" + } + }, + change = { + title = "Смени дрехата", + description = "Изберете от вашите запазени %s дрехи", + pDescription = "Изберете от вашите запазени дрехи", + failure = { + title = "Нещо се обърка", + description = "Дрехата, която се опитвате да смените, няма базов вид", + } + }, + delete = { + title = "Изтрий дрехата", + description = "Изтрийте запазен %s дреха", + mDescription = "Изтрийте всяка от вашите запазени дрехи", + item = { + title = 'Изтрий "%s"', + description = "Модел: %s%s" + }, + success = { + title = "Успех", + description = "Дрехата е изтрита" + } + }, + manage = { + title = "👔 | Управлявай %s дрехи" + } + }, + jobOutfits = { + title = "Работни Облекла", + description = "Изберете от всяко едно от вашите работни облекла" + }, + menu = { + returnTitle = "Върни се", + title = "Облеклена Стая", + outfitsTitle = "Играчеви Облекла", + clothingShopTitle = "Магазин за Облекла", + barberShopTitle = "Магазин за Фризьорство", + tattooShopTitle = "Магазин за Татуси", + surgeonShopTitle = "Магазин за Хирургия" + }, + clothing = { + title = "Купуване на Облекла - $%d", + titleNoPrice = "Смяна на Облекло", + options = { + title = "👔 | Опции на Магазина за Облекла", + description = "Изберете от голямо разнообразие на предмети за обличане" + }, + outfits = { + title = "👔 | Опции на Костюмите", + civilian = { + title = "Граждански Костюм", + description = "Облечете се с вашите дрехи" + } + } + }, + commands = { + reloadskin = { + title = "Презареждане на вашият персонаж", + failure = { + title = "Грешка", + description = "В момента не може да използвате reloadskin" + } + }, + clearstuckprops = { + title = "Премахване на всички обекти, прикрепени към единицата", + failure = { + title = "Грешка", + description = "В момента не може да използвате clearstuckprops" + } + }, + pedmenu = { + title = "Отваряне / Даване на Меню за Облекла", + failure = { + title = "Грешка", + description = "Играчът не е на линия" + } + }, + joboutfits = { + title = "Отваря менюто за екипировка за работа" + }, + gangoutfits = { + title = "Отваря менюто Gang Outfits" + }, + bossmanagedoutfits = { + title = "Отваря менюто за управление на дрехи на шефа" + } + }, + textUI = { + clothing = "Магазин за Облекла - Цена: $%d", + barber = "Фризьор - Цена: $%d", + tattoo = "Магазин за Татуси - Цена: $%d", + surgeon = "Хирург - Цена: $%d", + clothingRoom = "Облеклена Стая", + playerOutfitRoom = "Костюми на Играча" + }, + migrate = { + success = { + title = "Успех", + description = "Миграцията завърши. Мигрирани са %s скина/скинове", + descriptionSingle = "Мигриран Скин" + }, + skip = { + title = "Информация", + description = "Пропуснат скин" + }, + typeError = { + title = "Грешка", + description = "Невалиден тип" + } + }, + purchase = { + tattoo = { + success = { + title = "Успех", + description = "Купен е татус %s за %s$" + }, + failure = { + title = "Неуспешно нанасяне на татус", + description = "Нямате достатъчно пари!" + } + }, + store = { + success = { + title = "Успех", + description = "Дадохте $%s на %s!" + }, + failure = { + title = "Експлоатация!", + description = "Нямате достатъчно пари! Опит за експлоатиране на системата!" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/cs.lua b/resources/[core]/illenium-appearance/locales/cs.lua new file mode 100644 index 0000000..cc35cc9 --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/cs.lua @@ -0,0 +1,367 @@ +Locales["cs"] = { + UI = { + modal = { + save = { + title = "Uložit přizpůsobení", + description = "Zůstanete ošklivý/á" + }, + exit = { + title = "Ukončit přizpůsobení", + description = "Změny nebudou uloženy" + }, + accept = "Ano", + decline = "Ne" + }, + ped = { + title = "Postava", + model = "Model" + }, + headBlend = { + title = "Dědičnost", + shape = { + title = "Obličej", + firstOption = "Otec", + secondOption = "Matka", + mix = "Smíchání" + }, + skin = { + title = "Kůže", + firstOption = "Otec", + secondOption = "Matka", + mix = "Smíchání" + }, + race = { + title = "Rasa", + shape = "Obličej", + skin = "Kůže", + mix = "Smíchání" + } + }, + faceFeatures = { + title = "Rysy obličeje", + nose = { + title = "Nos", + width = "Šířka", + height = "Výška", + size = "Velikost", + boneHeight = "Výška kosti", + boneTwist = "Otočení kosti", + peakHeight = "Výška hřbetu" + }, + eyebrows = { + title = "Obočí", + height = "Výška", + depth = "Hloubka" + }, + cheeks = { + title = "Tváře", + boneHeight = "Výška kosti", + boneWidth = "Šířka kosti", + width = "Šířka" + }, + eyesAndMouth = { + title = "Oči a ústa", + eyesOpening = "Otevření očí", + lipsThickness = "Tloušťka rtů" + }, + jaw = { + title = "Brada", + width = "Šířka", + size = "Velikost" + }, + chin = { + title = "Brada", + lowering = "Snižování", + length = "Délka", + size = "Velikost", + hole = "Velikost díry" + }, + neck = { + title = "Krk", + thickness = "Tloušťka" + } + }, + headOverlays = { + title = "Vzhled", + hair = { + title = "Vlasy", + style = "Styl", + color = "Barva", + highlight = "Zvýraznění", + texture = "Textura", + fade = "Blednutí" + }, + opacity = "Průhlednost", + style = "Styl", + color = "Barva", + secondColor = "Druhá barva", + blemishes = "Vady", + beard = "Vousy", + eyebrows = "Obočí", + ageing = "Stárnutí", + makeUp = "Líčení", + blush = "Rouge", + complexion = "Kožní vada", + sunDamage = "Poškození sluncem", + lipstick = "Rtěnka", + moleAndFreckles = "Mateřské znaménko a pihy", + chestHair = "Hrstka na hrudi", + bodyBlemishes = "Vady těla", + eyeColor = "Barva očí" + }, + components = { + title = "Oblečení", + drawable = "Vykreslování", + texture = "Textura", + mask = "Maska", + upperBody = "Horní část těla", + lowerBody = "Spodní část těla", + bags = "Tašky a padáky", + shoes = "Boty", + scarfAndChains = "Šála a řetízky", + shirt = "Košile", + bodyArmor = "Tělesná zbroj", + decals = "Nálepky", + jackets = "Bundy", + head = "Hlava" + }, + props = { + title = "Rekvizity", + drawable = "Vykreslování", + texture = "Textura", + hats = "Klobouky a přilby", + glasses = "Brýle", + ear = "Ucho", + watches = "Hodinky", + bracelets = "Náramky" + }, + tattoos = { + title = "Tetování", + items = { + ZONE_TORSO = "Tělo", + ZONE_HEAD = "Hlava", + ZONE_LEFT_ARM = "Levá paže", + ZONE_RIGHT_ARM = "Pravá paže", + ZONE_LEFT_LEG = "Levá noha", + ZONE_RIGHT_LEG = "Pravá noha" + }, + apply = "Aplikovat", + delete = "Odstranit", + deleteAll = "Odstranit všechna tetování", + opacity = "Průhlednost" + } + }, + outfitManagement = { + title = "Správa oděvů", + jobText = "Spravujte oděvy pro práci", + gangText = "Spravujte oděvy pro gang" + }, + cancelled = { + title = "Zrušené přizpůsobení", + description = "Přizpůsobení neuloženo" + }, + outfits = { + import = { + title = "Zadat kód oděvu", + menuTitle = "Importovat oděv", + description = "Importovat oděv pomocí sdíleného kódu", + name = { + label = "Pojmenujte oděv", + placeholder = "Pěkný oděv", + default = "Importovaný oděv" + }, + code = { + label = "Kód oděvu" + }, + success = { + title = "Oděv importován", + description = "Nyní můžete změnit oděv pomocí menu oděvů" + }, + failure = { + title = "Chyba importu", + description = "Neplatný kód oděvu" + } + }, + generate = { + title = "Generovat kód oděvu", + description = "Generovat kód oděvu pro sdílení", + failure = { + title = "Něco se pokazilo", + description = "Generace kódu oděvu selhala" + }, + success = { + title = "Kód oděvu vygenerován", + description = "Zde je váš kód oděvu" + } + }, + save = { + menuTitle = "Uložit aktuální oděv", + menuDescription = "Uložit aktuální oděv jako %s oděv", + description = "Uložit aktuální oděv", + title = "Pojmenujte svůj oděv", + managementTitle = "Podrobnosti o uloženém oděvu", + name = { + label = "Název oděvu", + placeholder = "Velmi pěkný oděv" + }, + gender = { + label = "Pohlaví", + male = "Muž", + female = "Žena" + }, + rank = { + label = "Minimální hodnost" + }, + failure = { + title = "Uložení selhalo", + description = "Oděv s tímto názvem již existuje" + }, + success = { + title = "Úspěch", + description = "Oděv %s byl uložen" + } + }, + update = { + title = "Aktualizovat oděv", + description = "Uložit aktuální oblečení do existujícího oděvu", + failure = { + title = "Aktualizace selhala", + description = "Tento oděv neexistuje" + }, + success = { + title = "Úspěch", + description = "Oděv %s byl aktualizován" + } + }, + change = { + title = "Změnit oděv", + description = "Vyberte si ze svých aktuálně uložených %s oděvů", + pDescription = "Vyberte si ze svých aktuálně uložených oděvů", + failure = { + title = "Něco se pokazilo", + description = "Oděv, který se pokoušíte změnit, nemá základní vzhled", + } + }, + delete = { + title = "Smazat oděv", + description = "Smazat uložený %s oděv", + mDescription = "Smazat libovolný uložený oděv", + item = { + title = 'Smazat "%s"', + description = "Model: %s%s" + }, + success = { + title = "Úspěch", + description = "Oděv byl smazán" + } + }, + manage = { + title = "👔 | Spravovat %s oděvů" + } + }, + jobOutfits = { + title = "Pracovní oděvy", + description = "Vyberte si z vašich pracovních oděvů" + }, + menu = { + returnTitle = "Zpět", + title = "Místnost s oblečením", + outfitsTitle = "Oděvy hráče", + clothingShopTitle = "Obchod s oblečením", + barberShopTitle = "Holičství", + tattooShopTitle = "Tattoo Studio", + surgeonShopTitle = "Plastická chirurgie" + }, + clothing = { + title = "Nákup oblečení - $%d", + titleNoPrice = "Změna oblečení", + options = { + title = "👔 | Možnosti obchodu s oblečením", + description = "Vyberte si z široké škály položek k nošení" + }, + outfits = { + title = "👔 | Možnosti oděvů", + civilian = { + title = "Civilní oděv", + description = "Oblečte se" + } + } + }, + commands = { + reloadskin = { + title = "Obnovení vaší postavy", + failure = { + title = "Chyba", + description = "Nemůžete použít příkaz 'reloadskin' v tuto chvíli" + } + }, + clearstuckprops = { + title = "Odstranění všech připevněných rekvizit k entitě", + failure = { + title = "Chyba", + description = "Nemůžete použít příkaz 'clearstuckprops' v tuto chvíli" + } + }, + pedmenu = { + title = "Otevřít / Dát menu oblečení", + failure = { + title = "Chyba", + description = "Hráč není online" + } + }, + joboutfits = { + title = "Otevřít menu pracovních oděvů" + }, + gangoutfits = { + title = "Otevřít menu oděvů gangu" + }, + bossmanagedoutfits = { + title = "Otevřít menu oděvů spravovaných bossem" + } + }, + textUI = { + clothing = "Obchod s oblečením - Cena: $%d", + barber = "Holičství - Cena: $%d", + tattoo = "Tattoo Studio - Cena: $%d", + surgeon = "Plastická chirurgie - Cena: $%d", + clothingRoom = "Místnost s oblečením", + playerOutfitRoom = "Oděvy hráče" + }, + migrate = { + success = { + title = "Úspěch", + description = "Migrace dokončena. Migrace %s skinů dokončena", + descriptionSingle = "Migrace skinu dokončena" + }, + skip = { + title = "Informace", + description = "Přeskočeno migrace skinu" + }, + typeError = { + title = "Chyba", + description = "Neplatný typ" + } + }, + purchase = { + tattoo = { + success = { + title = "Úspěch", + description = "Zakoupeno tetování %s za %s$" + }, + failure = { + title = "Chyba aplikace tetování", + description = "Nemáte dostatek peněz!" + } + }, + store = { + success = { + title = "Úspěch", + description = "Dali jste $%s komu: %s!" + }, + failure = { + title = "Exploit!", + description = "Neměli jste dost peněz! Pokusili jste se zneužít systém!" + } + } + } +} \ No newline at end of file diff --git a/resources/[core]/illenium-appearance/locales/en.lua b/resources/[core]/illenium-appearance/locales/en.lua new file mode 100644 index 0000000..a6de158 --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/en.lua @@ -0,0 +1,367 @@ +Locales["en"] = { + UI = { + modal = { + save = { + title = "Save customization", + description = "You will remain ugly" + }, + exit = { + title = "Exit customization", + description = "No changes will be saved" + }, + accept = "Yes", + decline = "No" + }, + ped = { + title = "Ped", + model = "Model" + }, + headBlend = { + title = "Inheritance", + shape = { + title = "Face", + firstOption = "Father", + secondOption = "Mother", + mix = "Mix" + }, + skin = { + title = "Skin", + firstOption = "Father", + secondOption = "Mother", + mix = "Mix" + }, + race = { + title = "Race", + shape = "Shape", + skin = "Skin", + mix = "Mix" + } + }, + faceFeatures = { + title = "Face Features", + nose = { + title = "Nose", + width = "Width", + height = "Height", + size = "Size", + boneHeight = "Bone height", + boneTwist = "Bone twist", + peakHeight = "Peak height" + }, + eyebrows = { + title = "Eyebrows", + height = "Height", + depth = "Depth" + }, + cheeks = { + title = "Cheeks", + boneHeight = "Bone height", + boneWidth = "Bone width", + width = "Width" + }, + eyesAndMouth = { + title = "Eyes and Mouth", + eyesOpening = "Eyes opening", + lipsThickness = "Lip thickness" + }, + jaw = { + title = "Jaw", + width = "Width", + size = "Size" + }, + chin = { + title = "Chin", + lowering = "Lowering", + length = "Length", + size = "Size", + hole = "Hole size" + }, + neck = { + title = "Neck", + thickness = "Thickness" + } + }, + headOverlays = { + title = "Appearance", + hair = { + title = "Hair", + style = "Style", + color = "Color", + highlight = "Highlight", + texture = "Texture", + fade = "Fade" + }, + opacity = "Opacity", + style = "Style", + color = "Color", + secondColor = "Secondary Color", + blemishes = "Blemishes", + beard = "Beard", + eyebrows = "Eyebrows", + ageing = "Ageing", + makeUp = "Make up", + blush = "Blush", + complexion = "Complexion", + sunDamage = "Sun damage", + lipstick = "Lipstick", + moleAndFreckles = "Mole and Freckles", + chestHair = "Chest hair", + bodyBlemishes = "Body blemishes", + eyeColor = "Eye color" + }, + components = { + title = "Clothes", + drawable = "Drawable", + texture = "Texture", + mask = "Mask", + upperBody = "Hands", + lowerBody = "Legs", + bags = "Bags and parachute", + shoes = "Shoes", + scarfAndChains = "Scarf and chains", + shirt = "Shirt", + bodyArmor = "Body armor", + decals = "Decals", + jackets = "Jackets", + head = "Head" + }, + props = { + title = "Props", + drawable = "Drawable", + texture = "Texture", + hats = "Hats and helmets", + glasses = "Glasses", + ear = "Ear", + watches = "Watches", + bracelets = "Bracelets" + }, + tattoos = { + title = "Tattoos", + items = { + ZONE_TORSO = "Torso", + ZONE_HEAD = "Head", + ZONE_LEFT_ARM = "Left arm", + ZONE_RIGHT_ARM = "Right arm", + ZONE_LEFT_LEG = "Left leg", + ZONE_RIGHT_LEG = "Right leg" + }, + apply = "Apply", + delete = "Remove", + deleteAll = "Remove all Tattoos", + opacity = "Opacity" + } + }, + outfitManagement = { + title = "Outfit Management", + jobText = "Manage outfits for Job", + gangText = "Manage outfits for Gang" + }, + cancelled = { + title = "Cancelled Customization", + description = "Customization not saved" + }, + outfits = { + import = { + title = "Enter outfit code", + menuTitle = "Import Outfit", + description = "Import an outfit from a sharing code", + name = { + label = "Name the Outfit", + placeholder = "A nice outfit", + default = "Imported Outfit" + }, + code = { + label = "Outfit Code" + }, + success = { + title = "Outfit Imported", + description = "You can now change to the outfit using the outfit menu" + }, + failure = { + title = "Import Failure", + description = "Invalid outfit code" + } + }, + generate = { + title = "Generate Outfit Code", + description = "Generate an outfit code for sharing", + failure = { + title = "Something went wrong", + description = "Code generation failed for the outfit" + }, + success = { + title = "Outfit Code Generated", + description = "Here is your outfit code" + } + }, + save = { + menuTitle = "Save current Outfit", + menuDescription = "Save your current outfit as %s outfit", + description = "Save your current outfit", + title = "Name your outfit", + managementTitle = "Management Outfit Details", + name = { + label = "Outfit Name", + placeholder = "Very cool outfit" + }, + gender = { + label = "Gender", + male = "Male", + female = "Female" + }, + rank = { + label = "Minimum Rank" + }, + failure = { + title = "Save Failed", + description = "Outfit with this name already exists" + }, + success = { + title = "Success", + description = "Outfit %s has been saved" + } + }, + update = { + title = "Update Outfit", + description = "Save your current clothing to an existing outfit", + failure = { + title = "Update Failed", + description = "That outfit does not exist" + }, + success = { + title = "Success", + description = "Outfit %s has been updated" + } + }, + change = { + title = "Change Outfit", + description = "Pick from any of your currently saved %s outfits", + pDescription = "Pick from any of your currently saved outfits", + failure = { + title = "Something went wrong", + description = "The outfit that you're trying to change to, does not have a base appearance", + } + }, + delete = { + title = "Delete Outfit", + description = "Delete a saved %s outfit", + mDescription = "Delete any of your saved outfits", + item = { + title = 'Delete "%s"', + description = "Model: %s%s" + }, + success = { + title = "Success", + description = "Outfit Deleted" + } + }, + manage = { + title = "👔 | Manage %s Outfits" + } + }, + jobOutfits = { + title = "Work Outfits", + description = "Pick from any of your work outfits" + }, + menu = { + returnTitle = "Return", + title = "Clothing Room", + outfitsTitle = "Player Outfits", + clothingShopTitle = "Clothing Shop", + barberShopTitle = "Barber Shop", + tattooShopTitle = "Tattoo Shop", + surgeonShopTitle = "Surgeon Shop" + }, + clothing = { + title = "Buy Clothing - $%d", + titleNoPrice = "Change Clothing", + options = { + title = "👔 | Clothing Store Options", + description = "Pick from a wide range of items to wear" + }, + outfits = { + title = "👔 | Outfit Options", + civilian = { + title = "Civilian Outfit", + description = "Put on your clothes" + } + } + }, + commands = { + reloadskin = { + title = "Reloads your character", + failure = { + title = "Error", + description = "You cannot use reloadskin right now" + } + }, + clearstuckprops = { + title = "Removes all the props attached to the entity", + failure = { + title = "Error", + description = "You cannot use clearstuckprops right now" + } + }, + pedmenu = { + title = "Open / Give Clothing Menu", + failure = { + title = "Error", + description = "Player not online" + } + }, + joboutfits = { + title = "Opens Job Outfits Menu" + }, + gangoutfits = { + title = "Opens Gang Outfits Menu" + }, + bossmanagedoutfits = { + title = "Opens Boss Managed Outfits Menu" + } + }, + textUI = { + clothing = "Clothing Store - Price: $%d", + barber = "Barber - Price: $%d", + tattoo = "Tattoo Shop - Price: $%d", + surgeon = "Plastic Surgeon - Price: $%d", + clothingRoom = "Clothing Room", + playerOutfitRoom = "Outfits" + }, + migrate = { + success = { + title = "Success", + description = "Migration finished. %s skins migrated", + descriptionSingle = "Migrated Skin" + }, + skip = { + title = "Information", + description = "Skipped skin" + }, + typeError = { + title = "Error", + description = "Invalid type" + } + }, + purchase = { + tattoo = { + success = { + title = "Success", + description = "Purchased %s tattoo for %s$" + }, + failure = { + title = "Tattoo apply failed", + description = "You don't have enough money!" + } + }, + store = { + success = { + title = "Success", + description = "Gave $%s to %s!" + }, + failure = { + title = "Exploit!", + description = "You didn't have enough money! Tried to exploit the system!" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/es-ES.lua b/resources/[core]/illenium-appearance/locales/es-ES.lua new file mode 100644 index 0000000..812bb7d --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/es-ES.lua @@ -0,0 +1,367 @@ +Locales["es-ES"] = { + UI = { + modal = { + save = { + title = "Guardar personalización", + description = "Seguirás siendo feo" + }, + exit = { + title = "Salir de la personalización", + description = "No se guardarán los cambios" + }, + accept = "Si", + decline = "No" + }, + ped = { + title = "Ped", + model = "Modelo" + }, + headBlend = { + title = "Herencia", + shape = { + title = "Rostro", + firstOption = "Padre", + secondOption = "Madre", + mix = "Mezcla" + }, + skin = { + title = "Piel", + firstOption = "Padre", + secondOption = "Madre", + mix = "Mezcla" + }, + race = { + title = "Raza", + shape = "Rostro", + skin = "Piel", + mix = "Mezcla" + } + }, + faceFeatures = { + title = "Características de la cara", + nose = { + title = "Nariz", + width = "Ancho", + height = "Altura", + size = "Tamaño", + boneHeight = "Altura del hueso", + boneTwist = "Girar hueso", + peakHeight = "Altura máxima" + }, + eyebrows = { + title = "Cejas", + height = "Altura", + depth = "Profundidad" + }, + cheeks = { + title = "Mejillas", + boneHeight = "Altura del hueso", + boneWidth = "Ancho del hueso", + width = "Ancho" + }, + eyesAndMouth = { + title = "Ojos y Boca", + eyesOpening = "Apertura de ojos", + lipsThickness = "Grosor del labio" + }, + jaw = { + title = "Mandíbula", + width = "Ancho", + size = "Tamaño" + }, + chin = { + title = "Barbilla", + lowering = "Bajar", + length = "Largo", + size = "Tamaño", + hole = "Tamaño del agujero" + }, + neck = { + title = "Cuello", + thickness = "Grosor" + } + }, + headOverlays = { + title = "Apariencia", + hair = { + title = "Pelo", + style = "Estilo", + color = "Color", + highlight = "Resalte", + texture = "Textura", + fade = "Degradado" + }, + opacity = "Opacidad", + style = "Estilo", + color = "Color", + secondColor = "Color secundario", + blemishes = "Manchas", + beard = "Barba", + eyebrows = "Cejas", + ageing = "Arrugas", + makeUp = "Maquillaje", + blush = "Rubor", + complexion = "Tez", + sunDamage = "Daño del sol", + lipstick = "Lápiz labial", + moleAndFreckles = "Huecos y Pecas", + chestHair = "Pelo en el pecho", + bodyBlemishes = "Manchas corporales", + eyeColor = "Color de ojos" + }, + components = { + title = "Ropa", + drawable = "Prenda", + texture = "Textura", + mask = "Máscaras", + upperBody = "Brazos", + lowerBody = "Piernas", + bags = "Bolsas y Paracaídas", + shoes = "Zapatos", + scarfAndChains = "Bufandas y Cadenas", + shirt = "Camisetas", + bodyArmor = "Chalecos", + decals = "Calcomanías", + jackets = "Chaquetas", + head = "Cabeza" + }, + props = { + title = "Accesorios", + drawable = "Prenda", + texture = "Textura", + hats = "Gorras y Cascos", + glasses = "Gafas", + ear = "Aretes", + watches = "Relojes", + bracelets = "Brazaletes" + }, + tattoos = { + title = "Tatuajes", + items = { + ZONE_TORSO = "Torso", + ZONE_HEAD = "Cabeza", + ZONE_LEFT_ARM = "Brazo izquierdo", + ZONE_RIGHT_ARM = "Brazo derecho", + ZONE_LEFT_LEG = "Pierna izquierda", + ZONE_RIGHT_LEG = "Pierna derecha" + }, + apply = "Aplicar", + delete = "Borrar", + deleteAll = "Borrar todo", + opacity = "Opacidad" + } + }, + outfitManagement = { + title = "Gestión de atuendos", + jobText = "Administrar atuendos para trabajo", + gangText = "Administrar atuendos de pandilla" + }, + cancelled = { + title = "Personalización cancelada", + description = "Personalización no guardada" + }, + outfits = { + import = { + title = "Ingresar código de atuendo", + menuTitle = "Importar atuendo", + description = "Importar un atuendo a partir de un código de intercambio", + name = { + label = "Nombrar el atuendo", + placeholder = "Un atuendo agradable", + default = "Atuendo importado" + }, + code = { + label = "Código de atuendo" + }, + success = { + title = "Atuendo importado", + description = "Ahora puedes cambiar al atuendo utilizando el menú de atuendos" + }, + failure = { + title = "Fallo en la importación", + description = "Código de atuendo no válido" + } + }, + generate = { + title = "Generar código de atuendo", + description = "Generar un código de atuendo para compartir", + failure = { + title = "Algo salió mal", + description = "La generación de código falló para el atuendo" + }, + success = { + title = "Código de atuendo generado", + description = "Aquí está tu código de atuendo" + } + }, + save = { + menuTitle = "Guardar Vestimenta Actual", + menuDescription = "Guarda tu vestimenta actual como %s", + description = "Guarda tu vestimenta actual", + title = "Nombre de la Vestimenta", + managementTitle = "Detalles de la Gestión de Vestimentas", + name = { + label = "Nombre de la Vestimenta", + placeholder = "Vestimenta muy elegante" + }, + gender = { + label = "Género", + male = "Masculino", + female = "Femenino" + }, + rank = { + label = "Rango Mínimo" + }, + failure = { + title = "Fallo al Guardar", + description = "Ya existe una vestimenta con este nombre" + }, + success = { + title = "Éxito", + description = "La vestimenta %s ha sido guardada" + } + }, + update = { + title = "Actualizar atuendo", + description = "Guarda tu ropa actual en un atuendo existente", + failure = { + title = "Error al actualizar", + description = "Ese atuendo no existe" + }, + success = { + title = "Éxito", + description = "El atuendo %s ha sido actualizado" + } + }, + change = { + title = "Cambiar atuendo", + description = "Elige de entre tus atuendos guardados actuales %s", + pDescription = "Elige de entre tus atuendos guardados actuales", + failure = { + title = "Algo salió mal", + description = "El atuendo que estás tratando de cambiar no tiene una apariencia base", + } + }, + delete = { + title = "Eliminar traje", + description = "Eliminar un %s traje guardado", + mDescription = "Eliminar cualquiera de tus trajes guardados", + item = { + title = 'Eliminar "%s"', + description = "Modelo: %s%s" + }, + success = { + title = "Éxito", + description = "Traje eliminado" + } + }, + manage = { + title = "👔 | Administrar trajes %s" + } + }, + jobOutfits = { + title = "Trajes de trabajo", + description = "Elige entre cualquiera de tus trajes de trabajo" + }, + menu = { + returnTitle = "Volver", + title = "Vestuario", + outfitsTitle = "Atuendos del Jugador", + clothingShopTitle = "Tienda de Ropa", + barberShopTitle = "Barbería", + tattooShopTitle = "Tienda de Tatuajes", + surgeonShopTitle = "Cirugía Estética" + }, + clothing = { + title = "Comprar Ropa - $%d", + titleNoPrice = "Cambiar Ropa", + options = { + title = "👔 | Opciones de la Tienda de Ropa", + description = "Elija entre una amplia gama de artículos para vestir" + }, + outfits = { + title = "👔 | Opciones de Atuendos", + civilian = { + title = "Atuendo Civil", + description = "Ponte tu ropa" + } + } + }, + commands = { + reloadskin = { + title = "Recarga a tu personaje", + failure = { + title = "Error", + description = "No puedes usar reloadskin en este momento" + } + }, + clearstuckprops = { + title = "Elimina todos los objetos atascados en la entidad", + failure = { + title = "Error", + description = "No puedes usar clearstuckprops en este momento" + } + }, + pedmenu = { + title = "Abrir / Dar menú de ropa", + failure = { + title = "Error", + description = "Jugador no en línea" + } + }, + joboutfits = { + title = "Abre el menú de atuendos de trabajo" + }, + gangoutfits = { + title = "Abre el menú de atuendos de pandillas" + }, + bossmanagedoutfits = { + title = "Abre el menú de conjuntos gestionados por el jefe" + } + }, + textUI = { + clothing = "Tienda de ropa - Precio: $%d", + barber = "Barbero - Precio: $%d", + tattoo = "Tienda de tatuajes - Precio: $%d", + surgeon = "Cirujano plástico - Precio: $%d", + clothingRoom = "Vestidor", + playerOutfitRoom = "Atuendos" + }, + migrate = { + success = { + title = "Éxito", + description = "Migración finalizada. Se migraron %s skins", + descriptionSingle = "Skin migrado" + }, + skip = { + title = "Información", + description = "Skin saltado" + }, + typeError = { + title = "Error", + description = "Tipo inválido" + } + }, + purchase = { + tattoo = { + success = { + title = "Éxito", + description = "Tatuaje %s comprado por %s$" + }, + failure = { + title = "Fallo en la aplicación del tatuaje", + description = "¡No tienes suficiente dinero!" + } + }, + store = { + success = { + title = "Éxito", + description = "¡Se entregaron $%s a %s!" + }, + failure = { + title = "¡Explotación!", + description = "¡No tienes suficiente dinero! Intentó explotar el sistema." + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/fr.lua b/resources/[core]/illenium-appearance/locales/fr.lua new file mode 100644 index 0000000..23bf2d2 --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/fr.lua @@ -0,0 +1,367 @@ +Locales["fr"] = { + UI = { + modal = { + save = { + title = "Enregistrer", + description = "tu resteras moche" + }, + exit = { + title = "Quitter", + description = "Aucun changement ne sera enregistré" + }, + accept = "Oui", + decline = "Non" + }, + ped = { + title = "Ped", + model = "Modèle" + }, + headBlend = { + title = "Héritage", + shape = { + title = "Visage", + firstOption = "Père", + secondOption = "Mère", + mix = "Mix" + }, + skin = { + title = "Peau", + firstOption = "Père", + secondOption = "Mère", + mix = "Mix" + }, + race = { + title = "Race", + shape = "Visage", + skin = "Peau", + mix = "Mix" + } + }, + faceFeatures = { + title = "Caractéristiques du visage", + nose = { + title = "Nez", + width = "Largeur", + height = "Hauteur", + size = "Taille", + boneHeight = "Hauteur", + boneTwist = "Torsion", + peakHeight = "Hauteur maximale" + }, + eyebrows = { + title = "Sourcils", + height = "Hauteur", + depth = "Profondeur" + }, + cheeks = { + title = "Joues", + boneHeight = "Hauteur", + boneWidth = "Largeur 1", + width = "Largeur 2" + }, + eyesAndMouth = { + title = "Yeux et bouche", + eyesOpening = "Ouverture des yeux", + lipsThickness = "Épaisseur des lèvres" + }, + jaw = { + title = "Mâchoire", + width = "Largeur", + size = "Taille" + }, + chin = { + title = "Menton", + lowering = "Abaissement", + length = "Longueur", + size = "Taille", + hole = "Taille du Creux" + }, + neck = { + title = "Cou", + thickness = "Épaisseur" + } + }, + headOverlays = { + title = "Apparence", + hair = { + title = "Cheveux", + style = "Style", + color = "Couleur", + highlight = "Highlight", + texture = "Texture", + fade = "Fade" + }, + opacity = "Opacité", + style = "Style", + color = "Couleur", + secondColor = "Couleur de base", + blemishes = "Imperfections", + beard = "Barbe", + eyebrows = "Sourcils", + ageing = "Vieillissement", + makeUp = "Maquillage", + blush = "Blush", + complexion = "Complexion", + sunDamage = "Dégâts du soleil", + lipstick = "Lipstick", + moleAndFreckles = "Taches de rousseur", + chestHair = "Poils du torse", + bodyBlemishes = "Imperfections corporelles", + eyeColor = "Couleur des yeux" + }, + components = { + title = "Vêtements", + drawable = "Drawable", + texture = "Texture", + mask = "Masque", + upperBody = "Haut du Corps", + lowerBody = "Bas du Corps", + bags = "Sacs et parachute", + shoes = "Chaussures", + scarfAndChains = "Écharpe et chaînes", + shirt = "T-Shirt", + bodyArmor = "Body armor", + decals = "Decals", + jackets = "Vestes", + head = "Tête" + }, + props = { + title = "Props", + drawable = "Drawable", + texture = "Texture", + hats = "Chapeaux et casques", + glasses = "Lunettes", + ear = "Accessoires d'oreille", + watches = "Montres", + bracelets = "Bracelets" + }, + tattoos = { + title = "Tattoos", + items = { + ZONE_TORSO = "Torso", + ZONE_HEAD = "Tête", + ZONE_LEFT_ARM = "Bras gauche", + ZONE_RIGHT_ARM = "Bras droit", + ZONE_LEFT_LEG = "Jambe gauche", + ZONE_RIGHT_LEG = "Jambe droite" + }, + apply = "Appliquer", + delete = "Supprimer", + deleteAll = "Supprimer tous les tatouages", + opacity = "Opacité" + } + }, + outfitManagement = { + title = "Gestion de tenues", + jobText = "Gérer les tenues pour le travail", + gangText = "Gérer les tenues pour le gang" + }, + cancelled = { + title = "Personnalisation annulée", + description = "Personnalisation non enregistrée" + }, + outfits = { + import = { + title = "Entrer le code de la tenue", + menuTitle = "Importer la tenue", + description = "Importer une tenue à partir d'un code de partage", + name = { + label = "Nom de la tenue", + placeholder = "Une belle tenue", + default = "Tenue importée" + }, + code = { + label = "Code de la tenue" + }, + success = { + title = "Tenue importée", + description = "Vous pouvez maintenant changer de tenue en utilisant le menu des tenues" + }, + failure = { + title = "Échec de l'importation", + description = "Code de tenue non valide" + } + }, + generate = { + title = "Générer un code de tenue", + description = "Générer un code de tenue pour le partage", + failure = { + title = "Quelque chose s'est mal passé", + description = "La génération du code a échoué pour la tenue" + }, + success = { + title = "Code de tenue généré", + description = "Voici votre code de tenue" + } + }, + save = { + menuTitle = "Enregistrer la tenue actuelle", + menuDescription = "Enregistrer votre tenue actuelle en tant que tenue %s", + description = "Enregistrer votre tenue actuelle", + title = "Nommez votre tenue", + managementTitle = "Détails de gestion des tenues", + name = { + label = "Nom de la tenue", + placeholder = "Tenue très cool" + }, + gender = { + label = "Genre", + male = "Homme", + female = "Femme" + }, + rank = { + label = "Rang minimum" + }, + failure = { + title = "Échec de l'enregistrement", + description = "Une tenue avec ce nom existe déjà" + }, + success = { + title = "Succès", + description = "Tenue %s enregistrée" + } + }, + update = { + title = "Mettre à jour la tenue", + description = "Enregistrer vos vêtements actuels dans une tenue existante", + failure = { + title = "Échec de la mise à jour", + description = "Cette tenue n'existe pas" + }, + success = { + title = "Succès", + description = "La tenue %s a été mise à jour" + } + }, + change = { + title = "Changer de tenue", + description = "Choisissez parmi toutes vos tenues %s enregistrées", + pDescription = "Choisissez parmi toutes vos tenues enregistrées", + failure = { + title = "Quelque chose s'est mal passé", + description = "La tenue que vous essayez de changer n'a pas d'apparence de base", + } + }, + delete = { + title = "Supprimer la tenue", + description = "Supprimer une tenue enregistrée %s", + mDescription = "Supprimer n'importe laquelle de vos tenues enregistrées", + item = { + title = 'Supprimer "%s"', + description = "Modèle : %s%s" + }, + success = { + title = "Succès", + description = "Tenue supprimée" + } + }, + manage = { + title = "👔 | Gérer les tenues %s" + } + }, + jobOutfits = { + title = "Tenues de travail", + description = "Choisissez parmi toutes vos tenues de travail" + }, + menu = { + returnTitle = "Retour", + title = "Chambre de vêtements", + outfitsTitle = "Tenues du joueur", + clothingShopTitle = "Magasin de vêtements", + barberShopTitle = "Salon de coiffure", + tattooShopTitle = "Salon de tatouage", + surgeonShopTitle = "Chirurgien esthétique" + }, + clothing = { + title = "Acheter des vêtements - %d $", + titleNoPrice = "Changer de vêtements", + options = { + title = "👔 | Options de magasin de vêtements", + description = "Choisissez parmi une large gamme d'articles à porter" + }, + outfits = { + title = "👔 | Options de tenue", + civilian = { + title = "Tenue civile", + description = "Mettre vos vêtements" + } + } + }, + commands = { + reloadskin = { + title = "Recharger votre personnage", + failure = { + title = "Erreur", + description = "Vous ne pouvez pas utiliser reloadskin pour le moment" + } + }, + clearstuckprops = { + title = "Supprimer tous les accessoires attachés à l'entité", + failure = { + title = "Erreur", + description = "Vous ne pouvez pas utiliser clearstuckprops pour le moment" + } + }, + pedmenu = { + title = "Ouvrir / Donner le menu de vêtements", + failure = { + title = "Erreur", + description = "Joueur non connecté" + } + }, + joboutfits = { + title = "Ouvre le menu des tenues de travail" + }, + gangoutfits = { + title = "Ouvre le menu des tenues de gang" + }, + bossmanagedoutfits = { + title = "Ouvre le menu des tenues gérées par le patron" + } + }, + textUI = { + clothing = "Magasin de vêtements - Prix : %s $", + barber = "Barbier - Prix : %s $", + tattoo = "Boutique de tatouages - Prix : %s $", + surgeon = "Chirurgien plasticien - Prix : %s $", + clothingRoom = "Chambre d'habillage", + playerOutfitRoom = "Tenues" + }, + migrate = { + success = { + title = "Succès", + description = "%s skins ont été migrées", + descriptionSingle = "Skin migré" + }, + skip = { + title = "Information", + description = "Skin ignoré" + }, + typeError = { + title = "Erreur", + description = "Type invalide" + } + }, + purchase = { + tattoo = { + success = { + title = "Succès", + description = "Tatouage %s acheté pour %s$" + }, + failure = { + title = "Échec de l'application du tatouage", + description = "Vous n'avez pas assez d'argent !" + } + }, + store = { + success = { + title = "Succès", + description = "Don de %s$ à %s !" + }, + failure = { + title = "Exploitation !", + description = "Vous n'avez pas assez d'argent ! Vous avez essayé d'exploiter le système !" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/hu.lua b/resources/[core]/illenium-appearance/locales/hu.lua new file mode 100644 index 0000000..292aeae --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/hu.lua @@ -0,0 +1,364 @@ +Locales["hu"] = { + UI = { + modal = { + save = { + title = "Változtatás Mentése", + description = "Csúnya maradtál" + }, + exit = { + title = "Kilépés a testreszabásból", + description = "Nincs változtatás elmentve" + }, + accept = "Igen", + decline = "Nem" + }, + ped = { + title = "Ped", + model = "Model" + }, + headBlend = { + title = "Öröklődés", + shape = { + title = "Arc", + firstOption = "Apa", + secondOption = "Anya", + mix = "Vegyes" + }, + skin = { + title = "Bőrszín", + firstOption = "Apa", + secondOption = "Anya", + mix = "Vegyes" + }, + race = { + title = "Rassz", + shape = "Alak", + skin = "Bőrszín", + mix = "Vegyes" + } + }, + faceFeatures = { + title = "Arci Jellemzők", + nose = { + title = "Orr", + width = "Szélesség", + height = "Magasság", + size = "Méret", + boneHeight = "Magasság", + boneTwist = "Csavarás", + peakHeight = "Maximális Magasság" + }, + eyebrows = { + title = "Szemöldök", + height = "Magasság", + depth = "Mélység" + }, + cheeks = { + title = "Száj", + boneHeight = "Magasság", + boneWidth = "Szélesség", + width = "Szélesség" + }, + eyesAndMouth = { + title = "Szemek és Száj", + eyesOpening = "Szem Kinyitása", + lipsThickness = "Száj Típusok" + }, + jaw = { + title = "Állkapocs", + width = "Szélesség", + size = "Méret" + }, + chin = { + title = "Áll", + lowering = "Leeresztés", + length = "Hosszúság", + size = "Méret", + hole = "Méret" + }, + neck = { + title = "Nyak", + thickness = "Vastagság" + } + }, + headOverlays = { + title = "Kinézet", + hair = { + title = "Haj", + style = "Stílus", + color = "Szín", + highlight = "Kiemelt", + texture = "Kinézet", + fade = "Halvány" + }, + opacity = "Átlátszóság", + style = "Stílus", + color = "Szín", + secondColor = "Másodlagos Szín", + blemishes = "Foltok", + beard = "Szakáll", + eyebrows = "Szemöldök", + ageing = "Öregedés", + makeUp = "Smink", + blush = "Elpirulás", + complexion = "Arcszín", + sunDamage = "Napfény okozta bőröregedés", + lipstick = "Rúzs", + moleAndFreckles = "Anyajegyek és Szeplők", + chestHair = "Mellszőrzet", + bodyBlemishes = "Bőrhibák", + eyeColor = "Szemszín" + }, + components = { + title = "Ruhák", + drawable = "Rajzolható", + texture = "Kinézet", + mask = "Maszk", + upperBody = "Kezek", + lowerBody = "Lábak", + bags = "Táskák és ejtőernyő", + shoes = "Cipők", + scarfAndChains = "Sál és Láncok", + shirt = "Póló", + bodyArmor = "Test páncél", + decals = "Matricák", + jackets = "Kabátok", + head = "Fej" + }, + props = { + title = "Kellékek", + drawable = "Rajzolható", + texture = "Kinézet", + hats = "Sapkák", + glasses = "Szemüvegek", + ear = "Fül", + watches = "órák", + bracelets = "Karkötők" + }, + tattoos = { + title = "Tetoválások", + items = { + ZONE_TORSO = "Törzs", + ZONE_HEAD = "Fej", + ZONE_LEFT_ARM = "Bal Kar", + ZONE_RIGHT_ARM = "Jobb Kar", + ZONE_LEFT_LEG = "Bal Láb", + ZONE_RIGHT_LEG = "Jobb Láb" + }, + apply = "Mentés", + delete = "Törlés", + deleteAll = "Összes tetkó törlése", + opacity = "Átlátszóság" + } + }, + outfitManagement = { + title = "Ruházat Kezelése", + jobText = "Munkaruha Kezelése", + gangText = "Bandaruha Kezelése" + }, + cancelled = { + title = "Testreszabás Visszavonva", + description = "Testreszabás Nincs Mentve" + }, + outfits = { + import = { + title = "Írd be az ruházat kódját", + menuTitle = "Ruházat Berakása", + description = "Ruházat importálása megosztási kóddal", + name = { + label = "Ruházat Elnevezése", + placeholder = "Egy szép öltözet", + default = "Berakot Ruházat" + }, + code = { + label = "Ruházat Kódja" + }, + success = { + title = "Ruházat Importálva", + description = "Most át tudsz öltözni az ruházat menü használatával" + }, + failure = { + title = "Sikertelen Importálás", + description = "Hibás ruházat kód" + } + }, + generate = { + title = "Ruházat kód generálása", + description = "Ruházat kód generálása megosztáshoz", + failure = { + title = "Hiba történt", + description = "Nem sikerült kódot létrehozni az ruházathoz" + }, + success = { + title = "Ruházat kód legenerálva", + description = "Itt az ruházat kódod" + } + }, + save = { + menuTitle = "Ruha mentése", + menuDescription = "Jelenlegi ruha mentése mint %s ruházat", + description = "Jelenlegi ruházat lementve", + title = "Ruházat elnevezése", + managementTitle = "Ruházat részletek kezelése", + name = { + label = "Ruházat Neve", + placeholder = "Nagyon szép ruházat" + }, + gender = { + label = "Nem", + male = "Férfi", + female = "Nő" + }, + rank = { + label = "Minimális Rang" + }, + failure = { + title = "Sikertelen Mentés", + description = "Ezzel a nével már létezik ruházat" + }, + success = { + title = "Sikeres", + description = "%s nevű ruházat mentve" + } + }, + update = { + title = "Ruházat Frissítése", + description = "Jelenlegi ruhák mentése egy meglévő ruházat helyére", + failure = { + title = "Frissités Sikertelen", + description = "Ez a ruházat nem létezik" + }, + success = { + title = "Sikeres", + description = "%s nevű ruházat frissítve" + } + }, + change = { + title = "Ruházat Megváltoztatása", + description = "Válasz a jelenlegi %s ruházatod közül", + pDescription = "Válasz a jelenlegi ruházataid közül", + failure = { + title = "Hiba történt", + description = "A ruházatnak, amibe próbálsz átöltözni, nincs alap megjelenítése", + } + }, + delete = { + title = "Ruházat Törlése", + description = "Egy mentett %s ruházat törlése", + mDescription = "Egy mentett ruházatod törlése", + item = { + title = '"%s" törlése', + description = "Model: %s%s" + }, + success = { + title = "Sikeres", + description = "Ruházat Törölve" + } + }, + manage = { + title = "👔 | %s Ruházatok Kezelése" + } + }, + jobOutfits = { + title = "Munkaruhák", + description = "Válasz egy munkaruhát" + }, + menu = { + returnTitle = "Vissza", + title = "Ruhatár", + outfitsTitle = "Játékos Ruházatok", + clothingShopTitle = "Ruhabolt", + barberShopTitle = "Fodrászat", + tattooShopTitle = "Tetováló Szalon", + surgeonShopTitle = "Sebészet" + }, + clothing = { + title = "Ruha Vásárlás - $%d", + titleNoPrice = "Ruha Váltása", + options = { + title = "👔 | Ruhabolt Beállítások", + description = "Válasszon a ruhák széles kínálatából" + }, + outfits = { + title = "👔 | Ruházat Beállítások", + civilian = { + title = "Civil Ruházat", + description = "Ruházat felvétele" + } + } + }, + commands = { + reloadskin = { + title = "Karakter újratöltése", + failure = { + title = "Hiba", + description = "Ezt most nem használhatod" + } + }, + clearstuckprops = { + title = "Eltávolítja az entitáshoz csatolt összes kelléket", + failure = { + title = "Hiba", + description = "Ezt most nem használhatod" + } + }, + pedmenu = { + title = "Ruházati Menü Megnyitása", + failure = { + title = "Hiba", + description = "A játékos nem online" + } + }, + joboutfits = { + title = "Munkaruházati menü megnyitása" + }, + gangoutfits = { + title = "Bandaruházati menü megnyitása" + } + }, + textUI = { + clothing = "Ruhabolt - Ár: $%d", + barber = "Fodrászat - Ár: $%d", + tattoo = "Tetováló Szalon - Ár: $d", + surgeon = "Sebészet - Ár: $%d", + clothingRoom = "Ruhatár", + playerOutfitRoom = "Ruházatok" + }, + migrate = { + success = { + title = "Sikeres", + description = "Áthelyezés sikeres. %s kinézet(ek) áthelyezve", + descriptionSingle = "Kinézet áthelyezve" + }, + skip = { + title = "Információ", + description = "Kinézet kihagyva" + }, + typeError = { + title = "Hiba", + description = "Nem létező típus" + } + }, + purchase = { + tattoo = { + success = { + title = "Sikeres", + description = "Megvásárolt %s tetoválás ennyiért: $%s" + }, + failure = { + title = "Tetoválás alkalmazása sikertelen", + description = "Nincs elég pénzed!" + } + }, + store = { + success = { + title = "Sikeres", + description = "Ennyit fizettél: $%s" --"Gave $100 to clothing" doesn't really make sense, I just removed the second %s + }, + failure = { + title = "Hiba", + description = "Nincs elég pénzed! Megpróbáltad kihasználni a rendszert!" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/id.lua b/resources/[core]/illenium-appearance/locales/id.lua new file mode 100644 index 0000000..9fb66ac --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/id.lua @@ -0,0 +1,367 @@ +Locales["id"] = { + UI = { + modal = { + save = { + title = "Simpan Perubahan", + description = "Kamu akan tetap jelek" + }, + exit = { + title = "Keluar", + description = "Tidak ada perubahan yang akan di simpan" + }, + accept = "Iya", + decline = "Tidak" + }, + ped = { + title = "Karakter", + model = "Pilihan" + }, + headBlend = { + title = "Bagian Kepala", + shape = { + title = "Muka", + firstOption = "Ayah", + secondOption = "Ibu", + mix = "Campuran" + }, + skin = { + title = "Kulit", + firstOption = "Ayah", + secondOption = "Ibu", + mix = "Campuran" + }, + race = { + title = "Ras", + shape = "Bentuk", + skin = "Kulit", + mix = "Campuran" + } + }, + faceFeatures = { + title = "Fitur Wajah", + nose = { + title = "Hidung", + width = "Lebar", + height = "Tinggi", + size = "Besar", + boneHeight = "Tinggi Tulang", + boneTwist = "Lengkuk Tulang", + peakHeight = "Kemancungan" + }, + eyebrows = { + title = "Alis", + height = "Tinggi", + depth = "Kedalaman" + }, + cheeks = { + title = "Pipi", + boneHeight = "Tinggi Tulang", + boneWidth = "Lebar Tulang", + width = "Lebar" + }, + eyesAndMouth = { + title = "Mata Dan Mulut", + eyesOpening = "Buka Mata", + lipsThickness = "Ketebalan Bibir" + }, + jaw = { + title = "Rahang", + width = "Lebar Rahang", + size = "Besar" + }, + chin = { + title = "Dagu", + lowering = "Penurunan", + length = "Panjang", + size = "Besar", + hole = "Ukuran Lubang" + }, + neck = { + title = "Leher", + thickness = "Ketebalan" + } + }, + headOverlays = { + title = "Penampilan", + hair = { + title = "Rambut", + style = "Gaya", + color = "Warna", + highlight = "Highlight", + texture = "Tekstur", + fade = "Memudar" + }, + opacity = "Kegelapan", + style = "Gaya", + color = "Warna", + secondColor = "Warna Sekunder", + blemishes = "Noda", + beard = "Jenggot", + eyebrows = "Alis", + ageing = "Penuaan", + makeUp = "Make up", + blush = "Kemerahan Pipi", + complexion = "Corak", + sunDamage = "Kersakan Muka Akibat Sinar Matahari", + lipstick = "Lipstik", + moleAndFreckles = "Tahi Lalat dan Bintik-bintik", + chestHair = "Bulu dada", + bodyBlemishes = "Noda tubuh", + eyeColor = "Warna mata" + }, + components = { + title = "Pakaian", + drawable = "Pilihan", + texture = "Tekstur Baju", + mask = "Masker", + upperBody = "Lengan", + lowerBody = "Celana", + bags = "Tas Dan Parasut", + shoes = "Sepatu", + scarfAndChains = "Syal Dan Kalung", + shirt = "Baju", + bodyArmor = "Bodi Armor", + decals = "Stiker", + jackets = "Jaket", + head = "Topi" + }, + props = { + title = "Atribut", + drawable = "Pilihan", + texture = "Tekstur", + hats = "Topi Dan Helm", + glasses = "Kacamata", + ear = "Aksesoris Telinga", + watches = "Jam", + bracelets = "Gelang" + }, + tattoos = { + title = "Tato", + items = { + ZONE_TORSO = "Badan", + ZONE_HEAD = "Kepala", + ZONE_LEFT_ARM = "Tangan Kiri", + ZONE_RIGHT_ARM = "Tangan Kanan", + ZONE_LEFT_LEG = "Kaki Kiri", + ZONE_RIGHT_LEG = "Kaki Kanan" + }, + apply = "Terapkan", + delete = "Hapus", + deleteAll = "Hapus Semua Tato", + opacity = "Kegelapan" + } + }, + outfitManagement = { + title = "Pakaian Pekerjaan", + jobText = "Atur pakaian untuk pekerja", + gangText = "Atur pakaian untuk anggota gang" + }, + cancelled = { + title = "Kostumisasi di batalkan", + description = "Kustomisasi tidak disimpan" + }, + outfits = { + import = { + title = "Mauskkan kode pakaian", + menuTitle = "Impor Pakaian", + description = "Impor pakaian dari kode yang di bagikan", + name = { + label = "Nama Pakaian", + placeholder = "Pakaian yang bagus", + default = "Pakaian Impor" + }, + code = { + label = "Kode Pakaian" + }, + success = { + title = "Berhasil", + description = "Anda sekarang dapat mengganti pakaian menggunakan menu pakaian" + }, + failure = { + title = "Gagal", + description = "Kode pakaian tidak valid" + } + }, + generate = { + title = "Lihat Kode Pakaian", + description = "Lihat kode pakaian untuk di bagikan.", + failure = { + title = "Ada yang salah", + description = "Pembuatan kode gagal untuk pakaian tersebut" + }, + success = { + title = "Kode Pakaian Dihasilkan", + description = "Ini kode pakaianmu" + } + }, + save = { + menuTitle = "Simpan Pakaian saat ini", + menuDescription = "Simpan pakaian Anda saat ini sebagai pakaian %s", + description = "Simpan pakaian Anda saat ini", + title = "Beri nama pakaian Anda", + managementTitle = "Detail Pakaian Pekerjaan", + name = { + label = "Nama Pakaian", + placeholder = "Pakaian yang bagus" + }, + gender = { + label = "Jenis Kelamin", + male = "Laki-Laki", + female = "Perempuan" + }, + rank = { + label = "Pangkat Minimal" + }, + failure = { + title = "Gagal Menyimpan", + description = "Pakaian dengan nama ini sudah ada" + }, + success = { + title = "Berhasil Menyimpan", + description = "Pakaian dengan nama %s berhasil di simpan" + } + }, + update = { + title = "Perbarui Pakaian", + description = "Simpan pakaian Anda saat ini ke pakaian yang sudah ada", + failure = { + title = "Gagal Memperbarui", + description = "Pakaian itu tidak ada" + }, + success = { + title = "Berhasil Memperbarui", + description = "Pakaian dengan nama %s telah di perbarui" + } + }, + change = { + title = "Ganti Pakaian", + description = "Pilih dari %s pakaian yang Anda simpan saat ini", + pDescription = "Pilih dari salah satu pakaian yang Anda simpan saat ini", + failure = { + title = "Ada yang salah", + description = "Pakaian yang ingin Anda ganti tidak memiliki tampilan dasar", + } + }, + delete = { + title = "Hapus Pakaian", + description = "Hapus pakaian %s yang disimpan", + mDescription = "Hapus semua pakaian yang Anda simpan", + item = { + title = 'Hapus "%s"', + description = "Model: %s%s" + }, + success = { + title = "Berhasil", + description = "Pakaian di hapus" + } + }, + manage = { + title = "👔 | Atur %s Pakaian" + } + }, + jobOutfits = { + title = "Pakaian Pekerjaan", + description = "Pilih dari salah satu pakaian kerja Anda" + }, + menu = { + returnTitle = "Kembali", + title = "Ruang Pakaian", + outfitsTitle = "Menu Pakaian", + clothingShopTitle = "Toko Pakaian", + barberShopTitle = "Toko Rambut", + tattooShopTitle = "Toko Tato", + surgeonShopTitle = "Operasi Plastik" + }, + clothing = { + title = "Beli Pakaian - $%d", + titleNoPrice = "Ganti Pakaian", + options = { + title = "👔 | Pilihan Toko Pakaian", + description = "Pilih dari beragam item untuk dikenakan" + }, + outfits = { + title = "👔 | Pilihan Pakaian", + civilian = { + title = "Pakaian Sipil", + description = "Pakai baju mu" + } + } + }, + commands = { + reloadskin = { + title = "Muat ulang karakter Anda", + failure = { + title = "Error", + description = "Anda tidak dapat menggunakan reloadskin saat ini" + } + }, + clearstuckprops = { + title = "Menghapus semua props yang melekat pada anda", + failure = { + title = "Error", + description = "Anda tidak dapat menggunakan clearstuckprops saat ini" + } + }, + pedmenu = { + title = "Buka / Berikan Menu Pakaian", + failure = { + title = "Error", + description = "Pemain tidak online" + } + }, + joboutfits = { + title = "Buka Menu Pakaian Pekerjaan" + }, + gangoutfits = { + title = "Buka Menu Pakaian Gang" + }, + bossmanagedoutfits = { + title = "Membuka Menu Pakaian yang Dikelola Bos" + } + }, + textUI = { + clothing = "Tokok Pakaian - Price: $%d", + barber = "Salon - Price: $%d", + tattoo = "Tato - Price: $%d", + surgeon = "Operasi Plastik - Price: $%d", + clothingRoom = "Ruang Pakaian", + playerOutfitRoom = "Pakaian" + }, + migrate = { + success = { + title = "Berhasil", + description = "Migrasi selesai. %s kulit bermigrasi", + descriptionSingle = "Kulit yang Bermigrasi" + }, + skip = { + title = "Informasi", + description = "Melewatkan kulit" + }, + typeError = { + title = "Error", + description = "Jenis tidak valid" + } + }, + purchase = { + tattoo = { + success = { + title = "Berhasil", + description = "Membuat %s tato dengan harga %s$" + }, + failure = { + title = "Penerapan Tato Gagal", + description = "Kamu tidak memiliki cukup uang!" + } + }, + store = { + success = { + title = "Berhasil", + description = "Telah memberi $%s ke %s!" + }, + failure = { + title = "Exploit!", + description = "Anda tidak punya cukup uang! Mencoba mengeksploitasi sistem!" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/it.lua b/resources/[core]/illenium-appearance/locales/it.lua new file mode 100644 index 0000000..db01e77 --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/it.lua @@ -0,0 +1,367 @@ +Locales["it"] = { + UI = { + modal = { + save = { + title = "Salva", + description = "Rimarrai sempre brutto" + }, + exit = { + title = "Esci", + description = "Nessun cambiamento verrà salvato" + }, + accept = "Si", + decline = "No" + }, + ped = { + title = "Ped", + model = "Modello" + }, + headBlend = { + title = "Eredità", + shape = { + title = "Faccia", + firstOption = "Padre", + secondOption = "Madre", + mix = "Mix" + }, + skin = { + title = "Pelle", + firstOption = "Padre", + secondOption = "Madre", + mix = "Mix" + }, + race = { + title = "Mix", + shape = "Forma", + skin = "Pelle", + mix = "Mix" + } + }, + faceFeatures = { + title = "Caratteristiche del viso", + nose = { + title = "Naso", + width = "Larghezza", + height = "Altezza", + size = "Dimensione", + boneHeight = "Altezza dell'osso", + boneTwist = "Torsione ossea", + peakHeight = "Altezza della punta" + }, + eyebrows = { + title = "Sopracciglia", + height = "Altezza", + depth = "Profondità" + }, + cheeks = { + title = "Guance", + boneHeight = "Altezza dell'osso", + boneWidth = "Larghezza dell'osso", + width = "Larghezza" + }, + eyesAndMouth = { + title = "Occhi e Bocca", + eyesOpening = "Apertura degli occhi", + lipsThickness = "Spessore delle labbra" + }, + jaw = { + title = "Mascella", + width = "Larghezza", + size = "Dimensione" + }, + chin = { + title = "Mento", + lowering = "Altezza", + length = "Lunghezza", + size = "Dimensione", + hole = "Mento a culo" + }, + neck = { + title = "Collo", + thickness = "Spessore" + } + }, + headOverlays = { + title = "Aspetto", + hair = { + title = "Capelli", + style = "Stile", + color = "Colore", + highlight = "Highlight", + texture = "Variante", + fade = "Sfumatura" + }, + opacity = "Opacità", + style = "Stile", + color = "Colore", + secondColor = "Colore Secondario", + blemishes = "Macchie", + beard = "Barba", + eyebrows = "Sopracciglia", + ageing = "Invecchiamento", + makeUp = "Trucco", + blush = "Arrossamento", + complexion = "Carnagione", + sunDamage = "Danno dal Sole", + lipstick = "Rossetto", + moleAndFreckles = "Lentigini", + chestHair = "Peli del Petto", + bodyBlemishes = "Inestetismi del Corpo", + eyeColor = "Colore degli Occhi" + }, + components = { + title = "Vestiti", + drawable = "Modello", + texture = "Variante", + mask = "Maschera", + upperBody = "Braccia", + lowerBody = "Pantaloni", + bags = "Borse", + shoes = "Scarpe", + scarfAndChains = "Sciarpa e Collane", + shirt = "Maglia", + bodyArmor = "Giubbotto", + decals = "Decalcomanie", + jackets = "Giacca", + head = "Capo" + }, + props = { + title = "Accessori", + drawable = "Modello", + texture = "Variante", + hats = "Cappelli e Caschi", + glasses = "Occhiali", + ear = "Orecchie", + watches = "Orologi", + bracelets = "Bracciali" + }, + tattoos = { + title = "Tatuaggi", + items = { + ZONE_TORSO = "Petto", + ZONE_HEAD = "Testa", + ZONE_LEFT_ARM = "Braccio Sinistro", + ZONE_RIGHT_ARM = "Braccio Destro", + ZONE_LEFT_LEG = "Gamba Sinistra", + ZONE_RIGHT_LEG = "Gamba Destra" + }, + apply = "Applica", + delete = "Rimuovi", + deleteAll = "Rimuovi tutti i Tatuaggi", + opacity = "Opacità" + } + }, + outfitManagement = { + title = "Gestione Outfit", + jobText = "Gestisci outfit per il Lavoro", + gangText = "Gestisci outfit per la Gang" + }, + cancelled = { + title = "Personalizzazione Annullata", + description = "Personalizzazione non salvata" + }, + outfits = { + import = { + title = "Inserisci il codice dell'abbigliamento", + menuTitle = "Importa l'abbigliamento", + description = "Importa un abbigliamento da un codice di condivisione", + name = { + label = "Nome dell'abbigliamento", + placeholder = "Un bel vestito", + default = "Vestito importato" + }, + code = { + label = "Codice abbigliamento" + }, + success = { + title = "Abbigliamento importato", + description = "Ora puoi cambiare l'abbigliamento utilizzando il menu dell'abbigliamento" + }, + failure = { + title = "Importazione fallita", + description = "Codice abbigliamento non valido" + } + }, + generate = { + title = "Genera il codice dell'abbigliamento", + description = "Genera un codice abbigliamento per la condivisione", + failure = { + title = "Qualcosa è andato storto", + description = "La generazione del codice per l'abbigliamento è fallita" + }, + success = { + title = "Codice abbigliamento generato", + description = "Ecco il tuo codice abbigliamento" + } + }, + save = { + menuTitle = "Salva l'abbigliamento attuale", + menuDescription = "Salva il tuo abbigliamento attuale come abbigliamento %s", + description = "Salva il tuo abbigliamento attuale", + title = "Dai un nome al tuo abbigliamento", + managementTitle = "Dettagli di gestione dell'abbigliamento", + name = { + label = "Nome abbigliamento", + placeholder = "Vestito molto bello" + }, + gender = { + label = "Genere", + male = "Maschio", + female = "Femmina" + }, + rank = { + label = "Grado minimo" + }, + failure = { + title = "Salvataggio fallito", + description = "L'abbigliamento con questo nome esiste già" + }, + success = { + title = "Successo", + description = "L'abbigliamento %s è stato salvato" + } + }, + update = { + title = "Aggiorna abbigliamento", + description = "Salva il tuo abbigliamento corrente in un abbigliamento esistente", + failure = { + title = "Aggiornamento fallito", + description = "Quell'abbigliamento non esiste" + }, + success = { + title = "Successo", + description = "L'abbigliamento %s è stato aggiornato" + } + }, + change = { + title = "Cambia abbigliamento", + description = "Scegli tra i tuoi abbigliamenti %s salvati", + pDescription = "Scegli tra i tuoi abbigliamenti salvati", + failure = { + title = "Qualcosa è andato storto", + description = "L'abbigliamento che stai cercando di cambiare non ha un aspetto di base", + } + }, + delete = { + title = "Elimina abbigliamento", + description = "Elimina un abbigliamento salvato %s", + mDescription = "Elimina qualsiasi outfit salvato", + item = { + title = 'Elimina "%s"', + description = "Modello: %s%s" + }, + success = { + title = "Successo", + description = "Outfit eliminato" + } + }, + manage = { + title = "👔 | Gestisci %s Outfits" + } + }, + jobOutfits = { + title = "Abbigliamento da lavoro", + description = "Scegli tra i tuoi abbigliamenti da lavoro" + }, + menu = { + returnTitle = "Indietro", + title = "Stanza dell'abbigliamento", + outfitsTitle = "Abbigliamenti del giocatore", + clothingShopTitle = "Negozio di abbigliamento", + barberShopTitle = "Barbiere", + tattooShopTitle = "Negozio di tatuaggi", + surgeonShopTitle = "Chirurgo plastico" + }, + clothing = { + title = "Acquista abbigliamento - %d $", + titleNoPrice = "Cambia abbigliamento", + options = { + title = "👔 | Opzioni del negozio di abbigliamento", + description = "Scegli tra una vasta gamma di oggetti da indossare" + }, + outfits = { + title = "👔 | Opzioni outfit", + civilian = { + title = "Abbigliamento civile", + description = "Metti i tuoi vestiti" + } + } + }, + commands = { + reloadskin = { + title = "Ricarica il tuo personaggio", + failure = { + title = "Errore", + description = "Non puoi usare reloadskin in questo momento" + } + }, + clearstuckprops = { + title = "Rimuovi tutti gli oggetti attaccati all'entità", + failure = { + title = "Errore", + description = "Non puoi usare clearstuckprops in questo momento" + } + }, + pedmenu = { + title = "Apri / Condividi menu abbigliamento", + failure = { + title = "Errore", + description = "Giocatore non connesso" + } + }, + joboutfits = { + title = "Apre il menu degli abiti da lavoro" + }, + gangoutfits = { + title = "Apre il menu degli abiti da gang" + }, + bossmanagedoutfits = { + title = "Apre il menu delle outfit gestite dal capo" + } + }, + textUI = { + clothing = "Negozio di abbigliamento - Prezzo: $%d", + barber = "Barbiere - Prezzo: $%d", + tattoo = "Negozio di tatuaggi - Prezzo: $%d", + surgeon = "Chirurgo plastico - Prezzo: $%d", + clothingRoom = "Sala degli abiti", + playerOutfitRoom = "Outfits" + }, + migrate = { + success = { + title = "Successo", + description = "Migrazione completata. %s skins migrate", + descriptionSingle = "Pelle migrata" + }, + skip = { + title = "Informazioni", + description = "Skin saltata" + }, + typeError = { + title = "Errore", + description = "Tipo non valido" + } + }, + purchase = { + tattoo = { + success = { + title = "Successo", + description = "Tatuaggio %s acquistato per %s$" + }, + failure = { + title = "Errore applicazione tatuaggio", + description = "Non hai abbastanza soldi!" + } + }, + store = { + success = { + title = "Successo", + description = "Hai dato $%s a %s!" + }, + failure = { + title = "Sfruttamento!", + description = "Non hai abbastanza soldi! Ha cercato di sfruttare il sistema!" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/locales.lua b/resources/[core]/illenium-appearance/locales/locales.lua new file mode 100644 index 0000000..b435465 --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/locales.lua @@ -0,0 +1,17 @@ +Locales = {} + +function _L(key) + local lang = GetConvar("illenium-appearance:locale", "en") + if not Locales[lang] then + lang = "en" + end + local value = Locales[lang] + for k in key:gmatch("[^.]+") do + value = value[k] + if not value then + print("Missing locale for: " .. key) + return "" + end + end + return value +end diff --git a/resources/[core]/illenium-appearance/locales/nl.lua b/resources/[core]/illenium-appearance/locales/nl.lua new file mode 100644 index 0000000..96082bc --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/nl.lua @@ -0,0 +1,367 @@ +Locales["nl"] = { + UI = { + modal = { + save = { + title = "Veranderingen Toepassen", + description = "Je blijft lelijk" + }, + exit = { + title = "Menu Verlaten", + description = "Veranderingen worden niet opgeslagen" + }, + accept = "Ja", + decline = "Nee" + }, + ped = { + title = "Persoon", + model = "Model" + }, + headBlend = { + title = "Erfenis", + shape = { + title = "Gezicht", + firstOption = "Vader", + secondOption = "Moeder", + mix = "Mix" + }, + skin = { + title = "Huid", + firstOption = "Vader", + secondOption = "Moeder", + mix = "Mix" + }, + race = { + title = "Ras", + shape = "Vorm", + skin = "Huid", + mix = "Mix" + } + }, + faceFeatures = { + title = "Gezichtskenmerken", + nose = { + title = "Neus", + width = "Breedte", + height = "Hoogte", + size = "Groote", + boneHeight = "Bot hoogte", + boneTwist = "Bot twist", + peakHeight = "Neus hoogte" + }, + eyebrows = { + title = "Wenkbrouwen", + height = "Hoogte", + depth = "Diepte" + }, + cheeks = { + title = "Wangen", + boneHeight = "Bot hoogte", + boneWidth = "Bone width", + width = "Breedte" + }, + eyesAndMouth = { + title = "Ogen en Mond", + eyesOpening = "Oog opening", + lipsThickness = "Lip dikte" + }, + jaw = { + title = "Kaak", + width = "Breedte", + size = "Groote" + }, + chin = { + title = "Kin", + lowering = "Verlaging", + length = "Lengte", + size = "Groote", + hole = "Gat groote" + }, + neck = { + title = "Nek", + thickness = "Dikte" + } + }, + headOverlays = { + title = "Uiterlijk", + hair = { + title = "Haar", + style = "Stijl", + color = "Kleur", + highlight = "Highlight", + texture = "Textuur", + fade = "Fade" + }, + opacity = "Helderheid", + style = "Stijl", + color = "Kleur", + secondColor = "Secundaire Kleur", + blemishes = "Vlekken", + beard = "Baard", + eyebrows = "Wenkbrouwen", + ageing = "Veroudering", + makeUp = "Make up", + blush = "Blush", + complexion = "Tint", + sunDamage = "Zonnebrand", + lipstick = "Lippenstift", + moleAndFreckles = "Wrat en Sproeten", + chestHair = "Borst haar", + bodyBlemishes = "Lichaamelijke vlekken", + eyeColor = "Oog kleur" + }, + components = { + title = "Kleding", + drawable = "Tekenbaar", + texture = "Textuur", + mask = "Masker", + upperBody = "Handen", + lowerBody = "Benen", + bags = "Tassen en parachute", + shoes = "Schoenen", + scarfAndChains = "Sjaal en kettingen", + shirt = "Shirt", + bodyArmor = "Vesten", + decals = "Stickers", + jackets = "Jassen", + head = "Hoofd" + }, + props = { + title = "Sieraden", + drawable = "Tekenbaar", + texture = "Textuur", + hats = "Hoeden en helmen", + glasses = "Brillen", + ear = "Oor", + watches = "Horloges", + bracelets = "Armbanden" + }, + tattoos = { + title = "Tattoos", + items = { + ZONE_TORSO = "Borstkas", + ZONE_HEAD = "Hoofd", + ZONE_LEFT_ARM = "Linker arm", + ZONE_RIGHT_ARM = "Rechter arm", + ZONE_LEFT_LEG = "Linker been", + ZONE_RIGHT_LEG = "Rechter been" + }, + apply = "Toepassen", + delete = "Verwijder", + deleteAll = "Verwijder alle Tattoos", + opacity = "Helderheid" + } + }, + outfitManagement = { + title = "Outfit Beheer", + jobText = "Beheer outfits voor Baan", + gangText = "Beheer outfits voor Bende" + }, + cancelled = { + title = "Customisatie Geannuleerd", + description = "Customisatie niet opgeslagen" + }, + outfits = { + import = { + title = "Voer outfit code in", + menuTitle = "Outfit Importeren", + description = "Importeer een outfit van een deelcode", + name = { + label = "Geef de outfit een naam", + placeholder = "Een mooie outfit", + default = "Geïmporteerde outfit" + }, + code = { + label = "Outfit code" + }, + success = { + title = "Outfit Geïmporteerd", + description = "Je kunt nu de outfit gebruiken via het outfit menu" + }, + failure = { + title = "Import Mislukt", + description = "Ongeldige outfit code" + } + }, + generate = { + title = "Genereer outfit-code", + description = "Genereer een outfit-code om te delen", + failure = { + title = "Er is iets fout gegaan", + description = "Generatie van code voor de outfit is mislukt" + }, + success = { + title = "Outfit-code gegenereerd", + description = "Hier is je outfit-code" + } + }, + save = { + menuTitle = "Huidige outfit opslaan", + menuDescription = "Sla je huidige outfit op als %s outfit", + description = "Sla je huidige outfit op", + title = "Geef je outfit een naam", + managementTitle = "Outfitbeheer details", + name = { + label = "Outfitnaam", + placeholder = "Heel gave outfit" + }, + gender = { + label = "Geslacht", + male = "Man", + female = "Vrouw" + }, + rank = { + label = "Minimumrang" + }, + failure = { + title = "Opslaan mislukt", + description = "Outfit met deze naam bestaat al" + }, + success = { + title = "Succes", + description = "Outfit %s is opgeslagen" + } + }, + update = { + title = "Outfit bijwerken", + description = "Sla je huidige kleding op naar een bestaande outfit", + failure = { + title = "Bijwerken mislukt", + description = "Die outfit bestaat niet" + }, + success = { + title = "Succes", + description = "Outfit %s is bijgewerkt" + } + }, + change = { + title = "Outfit wijzigen", + description = "Kies uit een van je momenteel opgeslagen %s outfits", + pDescription = "Kies uit een van je momenteel opgeslagen outfits", + failure = { + title = "Er is iets fout gegaan", + description = "De outfit waar je naar probeert te wijzigen, heeft geen basisuiterlijk", + } + }, + delete = { + title = "Outfit verwijderen", + description = "Verwijder een opgeslagen %s outfit", + mDescription = "Verwijder een van je opgeslagen outfits", + item = { + title = 'Verwijder "%s"', + description = "Model: %s%s" + }, + success = { + title = "Succes", + description = "Outfit verwijderd" + } + }, + manage = { + title = "👔 | Beheer %s outfits" + } + }, + jobOutfits = { + title = "Werkoutfits", + description = "Kies uit een van je werkoutfits" + }, + menu = { + returnTitle = "Terug", + title = "Kledingkamer", + outfitsTitle = "Speleroutfits", + clothingShopTitle = "Kledingwinkel", + barberShopTitle = "Kapper", + tattooShopTitle = "Tatoeëerder", + surgeonShopTitle = "Plastisch chirurg" + }, + clothing = { + title = "Kleding kopen - $%d", + titleNoPrice = "Kleding wijzigen", + options = { + title = "👔 | Opties kledingwinkel", + description = "Kies uit een breed scala aan kledingstukken om te dragen" + }, + outfits = { + title = "👔 | Opties outfit", + civilian = { + title = "Gewone outfit", + description = "Trek je eigen kleding aan" + } + } + }, + commands = { + reloadskin = { + title = "Laadt je personage opnieuw", + failure = { + title = "Fout", + description = "Je kunt reloadskin nu niet gebruiken" + } + }, + clearstuckprops = { + title = "Verwijdert alle props die aan de entiteit zijn bevestigd", + failure = { + title = "Fout", + description = "Je kunt clearstuckprops nu niet gebruiken" + } + }, + pedmenu = { + title = "Open / Geef kledingmenu", + failure = { + title = "Fout", + description = "Speler niet online" + } + }, + joboutfits = { + title = "Opent het menu Joboutfits" + }, + gangoutfits = { + title = "Opent het menu Bende-outfits" + }, + bossmanagedoutfits = { + title = "Opent het menu met door de baas beheerde outfits" + } + }, + textUI = { + clothing = "Kledingwinkel - Prijs: $%d", + barber = "Kapper - Prijs: $%d", + tattoo = "Tattooshop - Prijs: $%d", + surgeon = "Plastisch Chirurg - Prijs: $%d", + clothingRoom = "Kleedkamer", + playerOutfitRoom = "Outfits" + }, + migrate = { + success = { + title = "Succes", + description = "Migratie voltooid. %s skins gemigreerd", + descriptionSingle = "Gemigreerde huid" + }, + skip = { + title = "Informatie", + description = "Overgeslagen skin" + }, + typeError = { + title = "Fout", + description = "Ongeldig type" + } + }, + purchase = { + tattoo = { + success = { + title = "Succes", + description = "Gekocht %s tattoo voor %s$" + }, + failure = { + title = "Tatoeage toepassen mislukt", + description = "Je hebt niet genoeg geld!" + } + }, + store = { + success = { + title = "Succes", + description = "$%s gegeven aan %s!" + }, + failure = { + title = "Exploit!", + description = "Je had niet genoeg geld! Probeerde het systeem te misbruiken!" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/pt-BR.lua b/resources/[core]/illenium-appearance/locales/pt-BR.lua new file mode 100644 index 0000000..01895ab --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/pt-BR.lua @@ -0,0 +1,367 @@ +Locales["pt-BR"] = { + UI = { + modal = { + save = { + title = "Salvar customização", + description = "Você continuará feio." + }, + exit = { + title = "Sair da customização", + description = "Nenhuma mudança será salva" + }, + accept = "Sim", + decline = "Não" + }, + ped = { + title = "Ped", + model = "Modelo" + }, + headBlend = { + title = "Herança", + shape = { + title = "Face", + firstOption = "Pai", + secondOption = "Mãe", + mix = "Mistura" + }, + skin = { + title = "Pele", + firstOption = "Pai", + secondOption = "Mãe", + mix = "Mistura" + }, + race = { + title = "Raça", + shape = "Face", + skin = "Pele", + mix = "Mistura" + } + }, + faceFeatures = { + title = "Características faciais", + nose = { + title = "Nariz", + width = "Largura", + height = "Altura", + size = "Tamanho", + boneHeight = "Tamanho do osso", + boneTwist = "Desvio do osso", + peakHeight = "Altura da ponta" + }, + eyebrows = { + title = "Sobrancelhas", + height = "Altura", + depth = "Profundidade" + }, + cheeks = { + title = "Bochecha", + boneHeight = "Altura do osso", + boneWidth = "Largura do osso", + width = "Largura" + }, + eyesAndMouth = { + title = "Olhos e boca", + eyesOpening = "Abertura dos olhos", + lipsThickness = "Espesurra dos lábios" + }, + jaw = { + title = "Mandíbula", + width = "Largura", + size = "Tamanho" + }, + chin = { + title = "Queixo", + lowering = "Altura", + length = "Comprimento", + size = "Tamanho", + hole = "Tamanho do furo" + }, + neck = { + title = "Pescoço", + thickness = "Espessura" + } + }, + headOverlays = { + title = "Aparência", + hair = { + title = "Cabelo", + style = "Estilo", + color = "Cor", + highlight = "Reflexo", + texture = "Estilo", + fade = "Degradê" + }, + opacity = "Opacidade", + style = "Estilo", + color = "Cor", + secondColor = "Cor Secundária", + blemishes = "Manchas", + beard = "Barba", + eyebrows = "Sobrancelhas", + ageing = "Envelhecimento", + makeUp = "Maquiagem", + blush = "Blush", + complexion = "Aspecto", + sunDamage = "Dano solar", + lipstick = "Batom", + moleAndFreckles = "Verruga e sardas", + chestHair = "Cabelo do peito", + bodyBlemishes = "Manchas corporais", + eyeColor = "Cor dos olhos" + }, + components = { + title = "Roupas", + drawable = "Modelo", + texture = "Textura", + mask = "Máscaras", + upperBody = "Mãos", + lowerBody = "Pernas", + bags = "Mochilas e paraquedas", + shoes = "Sapatos", + scarfAndChains = "Lenços e correntes", + shirt = "Camisa", + bodyArmor = "Colete", + decals = "Decalques", + jackets = "Jaquetas", + head = "Cabeça" + }, + props = { + title = "Acessórios", + drawable = "Modelo", + texture = "Textura", + hats = "Chapéus e capacetes", + glasses = "Óculos", + ear = "Brincos", + watches = "Relógios", + bracelets = "Braceletes" + }, + tattoos = { + title = "Tatuagens", + items = { + ZONE_TORSO = "Tronco", + ZONE_HEAD = "Cabeça", + ZONE_LEFT_ARM = "Braço esquerdo", + ZONE_RIGHT_ARM = "Braço direito", + ZONE_LEFT_LEG = "Perna esquerda", + ZONE_RIGHT_LEG = "Perna direita" + }, + apply = "Aplicar", + delete = "Apagar", + deleteAll = "Apagar tudo", + opacity = "Opacidade" + } + }, + outfitManagement = { + title = "Gerenciamento de Roupas", + jobText = "Gerenciar roupas para trabalho", + gangText = "Gerenciar roupas para gangue" + }, + cancelled = { + title = "Personalização Cancelada", + description = "Personalização não salva" + }, + outfits = { + import = { + title = "Inserir código da roupa", + menuTitle = "Importar roupa", + description = "Importar uma roupa usando um código de compartilhamento", + name = { + label = "Nome da Roupa", + placeholder = "Uma roupa legal", + default = "Roupa Importada" + }, + code = { + label = "Código da Roupa" + }, + success = { + title = "Roupa Importada", + description = "Agora você pode trocar para a roupa usando o menu de roupas" + }, + failure = { + title = "Falha na Importação", + description = "Código da roupa inválido" + } + }, + generate = { + title = "Gerar Código de Roupa", + description = "Gerar um código para compartilhar sua roupa", + failure = { + title = "Algo deu errado", + description = "Falha na geração de código para a roupa" + }, + success = { + title = "Código de Roupa Gerado", + description = "Aqui está o código da sua roupa" + } + }, + save = { + menuTitle = "Salvar Outfit Atual", + menuDescription = "Salve seu outfit atual como um outfit %s", + description = "Salve seu outfit atual", + title = "Nomeie seu outfit", + managementTitle = "Detalhes do Outfit de Gerenciamento", + name = { + label = "Nome do Outfit", + placeholder = "Outfit muito legal" + }, + gender = { + label = "Gênero", + male = "Masculino", + female = "Feminino" + }, + rank = { + label = "Classificação Mínima" + }, + failure = { + title = "Falha ao Salvar", + description = "Outfit com este nome já existe" + }, + success = { + title = "Sucesso", + description = "Outfit %s foi salvo" + } + }, + update = { + title = "Atualizar Outfit", + description = "Salve sua roupa atual em um outfit existente", + failure = { + title = "Falha na Atualização", + description = "Aquele outfit não existe" + }, + success = { + title = "Sucesso", + description = "Outfit %s foi atualizado" + } + }, + change = { + title = "Mudar Outfit", + description = "Escolha entre seus %s outfits salvos atualmente", + pDescription = "Escolha entre seus outfits salvos atualmente", + failure = { + title = "Algo deu errado", + description = "O outfit que você está tentando mudar não tem uma aparência base", + } + }, + delete = { + title = "Deletar roupa", + description = "Deletar uma roupa salva %s", + mDescription = "Deletar qualquer roupa salva", + item = { + title = 'Deletar "%s"', + description = "Modelo: %s%s" + }, + success = { + title = "Sucesso", + description = "Roupa deletada" + } + }, + manage = { + title = "👔 | Gerenciar roupas %s" + }, + }, + jobOutfits = { + title = "Roupas de Trabalho", + description = "Escolha entre suas roupas de trabalho" + }, + menu = { + returnTitle = "Voltar", + title = "Vestuário", + outfitsTitle = "Roupas do Jogador", + clothingShopTitle = "Loja de Roupas", + barberShopTitle = "Barbearia", + tattooShopTitle = "Estúdio de Tatuagem", + surgeonShopTitle = "Cirurgião Plástico" + }, + clothing = { + title = "Comprar Roupas - $%d", + titleNoPrice = "Mudar Roupas", + options = { + title = "👔 | Opções da loja de roupas", + description = "Escolha entre uma ampla variedade de itens para vestir" + }, + outfits = { + title = "👔 | Opções de roupas", + civilian = { + title = "Roupa Civil", + description = "Vista suas roupas" + } + } + }, + commands = { + reloadskin = { + title = "Recarrega seu personagem", + failure = { + title = "Erro", + description = "Você não pode usar reloadskin agora" + } + }, + clearstuckprops = { + title = "Remove todos os acessórios presos à entidade", + failure = { + title = "Erro", + description = "Você não pode usar clearstuckprops agora" + } + }, + pedmenu = { + title = "Abrir / Dar Menu de Roupas", + failure = { + title = "Erro", + description = "Jogador não está online" + } + }, + joboutfits = { + title = "Abre o Menu de Trajes de Trabalho" + }, + gangoutfits = { + title = "Abre o menu de trajes de gangue" + }, + bossmanagedoutfits = { + title = "Abre o menu de roupas gerenciadas pelo chefe" + } + }, + textUI = { + clothing = "Loja de Roupas - Preço: $%d", + barber = "Barbeiro - Preço: $%d", + tattoo = "Tatuador - Preço: $%d", + surgeon = "Cirurgião Plástico - Preço: $%d", + clothingRoom = "Sala de Roupas", + playerOutfitRoom = "Trajes" + }, + migrate = { + success = { + title = "Sucesso", + description = "Migração finalizada. %s skins migradas", + descriptionSingle = "Pele migrada" + }, + skip = { + title = "Informação", + description = "Pele ignorada" + }, + typeError = { + title = "Erro", + description = "Tipo inválido" + } + }, + purchase = { + tattoo = { + success = { + title = "Sucesso", + description = "Comprado tatuagem %s por %s$" + }, + failure = { + title = "Falha na aplicação da tatuagem", + description = "Você não tem dinheiro suficiente!" + } + }, + store = { + success = { + title = "Sucesso", + description = "Deu $%s para %s!" + }, + failure = { + title = "Exploração!", + description = "Você não tinha dinheiro suficiente! Tentou explorar o sistema!" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/ro-RO.lua b/resources/[core]/illenium-appearance/locales/ro-RO.lua new file mode 100644 index 0000000..c4e8f58 --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/ro-RO.lua @@ -0,0 +1,367 @@ +Locales["ro-RO"] = { + UI = { + modal = { + save = { + title = "Salveaza modificarile", + description = "Arati mult mai bine acum :)" + }, + exit = { + title = "Iesi din meniul de customizare", + description = "Nicio schimbare nu o sa se salveze" + }, + accept = "Da", + decline = "Nu" + }, + ped = { + title = "Ped", + model = "Model" + }, + headBlend = { + title = "Aparente", + shape = { + title = "Fata", + firstOption = "Tata", + secondOption = "Mama", + mix = "Mix" + }, + skin = { + title = "Pielea", + firstOption = "Tata", + secondOption = "Mama", + mix = "Mix" + }, + race = { + title = "Rasă", + shape = "Fata", + skin = "Pielea", + mix = "Mix" + } + }, + faceFeatures = { + title = "Optiuni fizionomie", + nose = { + title = "Nas", + width = "Latime", + height = "Inaltime", + size = "Marime", + boneHeight = "Inaltimea nasului", + boneTwist = "Rasucire nasului", + peakHeight = "Varful nasului" + }, + eyebrows = { + title = "Sprancene", + height = "Inaltime", + depth = "Adancime" + }, + cheeks = { + title = "Pometi", + boneHeight = "Inaltime", + boneWidth = "Latime", + width = "Latime pometi" + }, + eyesAndMouth = { + title = "Ochi si gura", + eyesOpening = "Deschidere ochi", + lipsThickness = "Grosime buze" + }, + jaw = { + title = "Falca", + width = "Latime", + size = "Marime" + }, + chin = { + title = "Barbie", + lowering = "Latime", + length = "Lungime", + size = "Marime", + hole = "Marime gropita" + }, + neck = { + title = "Gatul", + thickness = "Grosimea gatului" + } + }, + headOverlays = { + title = "Optiuni aspect", + hair = { + title = "Par", + style = "Stil", + color = "Culoare", + highlight = "Highlight", + texture = "Textura", + fade = "Fade (tuns pierdut sau ras)" + }, + opacity = "Opacitate", + style = "Stil", + color = "Culoare", + secondColor = "A doua culoare", + blemishes = "Pete piele", + beard = "Barba", + eyebrows = "Sprancene", + ageing = "Varsta", + makeUp = "Machiaj", + blush = "Fard", + complexion = "Complexitate", + sunDamage = "Daune solare", + lipstick = "Ruj", + moleAndFreckles = "Alunite si pistrui", + chestHair = "Parul de pe piept", + bodyBlemishes = "Pete corporale", + eyeColor = "Culoare ochi" + }, + components = { + title = "Optiuni haine", + drawable = "Purtabile", + texture = "Texturi", + mask = "Masca", + upperBody = "Maini", + lowerBody = "Picioare", + bags = "Genti si parasute", + shoes = "Incaltaminte", + scarfAndChains = "Esarfe (gat) si optionale", + shirt = "Tricou", + bodyArmor = "Veste antiglont", + decals = "Imprimeuri", + jackets = "Jachete", + head = "Cap" + }, + props = { + title = "Optiuni recuzita", + drawable = "Purtabile", + texture = "Texturi", + hats = "Sepci, caciuli si casti", + glasses = "Ochelari", + ear = "Pentru urechi", + watches = "Ceasuri", + bracelets = "Bratari" + }, + tattoos = { + title = "Optiuni tatuaje", + items = { + ZONE_TORSO = "Pentru corp (fata-spate)", + ZONE_HEAD = "Pentru cap", + ZONE_LEFT_ARM = "Mana stanga", + ZONE_RIGHT_ARM = "Mana dreapta", + ZONE_LEFT_LEG = "Piciorul stang", + ZONE_RIGHT_LEG = "Piciorul drept" + }, + apply = "Aplica", + delete = "Sterge", + deleteAll = "Sterge toate tatuajele", + opacity = "Opacitate" + } + }, + outfitManagement = { + title = "Gestionarea outfit-urilor", + jobText = "Gestionați outfit-urile pentru job", + gangText = "Gestionați outfit-urile pentru bandă" + }, + cancelled = { + title = "Personalizare anulată", + description = "Personalizarea nu a fost salvată" + }, + outfits = { + import = { + title = "Introduceți codul outfit-ului", + menuTitle = "Importați outfit-ul", + description = "Importați un outfit folosind un cod de distribuire", + name = { + label = "Denumiți outfit-ul", + placeholder = "Un outfit frumos", + default = "Outfit importat" + }, + code = { + label = "Codul outfit-ului" + }, + success = { + title = "Outfit-ul a fost importat", + description = "Acum puteți schimba outfit-ul folosind meniul pentru outfit-uri" + }, + failure = { + title = "Eșec la importare", + description = "Cod de outfit invalid" + } + }, + generate = { + title = "Generează cod pentru outfit", + description = "Generează un cod pentru a distribui outfit-ul", + failure = { + title = "Ceva nu a mers bine", + description = "Generarea codului a eșuat pentru outfit" + }, + success = { + title = "Codul outfit-ului a fost generat", + description = "Aici este codul pentru outfit-ul tău" + } + }, + save = { + menuTitle = "Salvează outfit-ul curent", + menuDescription = "Salvează outfit-ul tău curent ca outfit %s", + description = "Salvează outfit-ul tău curent", + title = "Denumiți outfit-ul", + managementTitle = "Detalii de management outfit", + name = { + label = "Nume outfit", + placeholder = "Outfit foarte fain" + }, + gender = { + label = "Gen", + male = "Bărbat", + female = "Femeie" + }, + rank = { + label = "Rang minim" + }, + failure = { + title = "Salvarea a eșuat", + description = "Outfit-ul cu acest nume deja există" + }, + success = { + title = "Succes", + description = "Outfit-ul %s a fost salvat" + } + }, + update = { + title = "Actualizare outfit", + description = "Salvați îmbrăcămintea actuală într-un outfit existent", + failure = { + title = "Actualizare eșuată", + description = "Acel outfit nu există" + }, + success = { + title = "Succes", + description = "Outfit-ul %s a fost actualizat" + } + }, + change = { + title = "Schimbă outfit", + description = "Alegeți oricare dintre outfit-urile %s salvate", + pDescription = "Alegeți oricare dintre outfit-urile salvate", + failure = { + title = "Ceva nu a mers bine", + description = "Outfit-ul către care încercați să faceți schimb nu are un aspect de bază", + } + }, + delete = { + title = "Șterge outfit", + description = "Ștergeți un outfit %s salvat", + mDescription = "Ștergeți oricare dintre outfit-urile salvate", + item = { + title = 'Ștergeți "%s"', + description = "Model: %s%s" + }, + success = { + title = "Succes", + description = "Outfit-ul a fost șters" + } + }, + manage = { + title = "👔 | Gestionați outfit-urile %s" + } + }, + jobOutfits = { + title = "Outfit-uri de serviciu", + description = "Alegeți oricare din outfit-urile de serviciu" + }, + menu = { + returnTitle = "Înapoi", + title = "Cameră pentru haine", + outfitsTitle = "Outfit-uri ale jucătorului", + clothingShopTitle = "Magazin de haine", + barberShopTitle = "Frizerie", + tattooShopTitle = "Magazin de tatuaje", + surgeonShopTitle = "Cabinet de chirurgie plastică" + }, + clothing = { + title = "Cumpără haine - %d$", + titleNoPrice = "Schimbă hainele", + options = { + title = "👔 | Opțiuni magazin de haine", + description = "Alege dintr-o gamă largă de articole de îmbrăcăminte" + }, + outfits = { + title = "👔 | Opțiuni outfit-uri", + civilian = { + title = "Outfit civil", + description = "Pune-ți hainele" + } + } + }, + commands = { + reloadskin = { + title = "Reîncarcă personajul", + failure = { + title = "Eroare", + description = "Nu poți folosi reloadskin în acest moment" + } + }, + clearstuckprops = { + title = "Înlătură toate obiectele atașate de entitate", + failure = { + title = "Eroare", + description = "Nu poți folosi clearstuckprops în acest moment" + } + }, + pedmenu = { + title = "Deschide / Dă meniul pentru haine", + failure = { + title = "Eroare", + description = "Jucătorul nu este conectat" + } + }, + joboutfits = { + title = "Deschide meniul ținute pentru locuri de muncă" + }, + gangoutfits = { + title = "Deschide meniul Gang Outfits" + }, + bossmanagedoutfits = { + title = "Deschide meniul pentru outfit-urile administrate de șef" + } + }, + textUI = { + clothing = "Magazin de haine - Preț: %d$", + barber = "Frizerie - Preț: %d$", + tattoo = "Magazin de tatuaje - Preț: %d$", + surgeon = "Cabinet de chirurgie plastică - Preț: %d$", + clothingRoom = "Cameră pentru haine", + playerOutfitRoom = "Outfit-uri" + }, + migrate = { + success = { + title = "Succes", + description = "Migrația s-a încheiat. %s skin-uri au fost migrați", + descriptionSingle = "Un singur skin migrat" + }, + skip = { + title = "Informație", + description = "Skin omis" + }, + typeError = { + title = "Eroare", + description = "Tip invalid" + } + }, + purchase = { + tattoo = { + success = { + title = "Succes", + description = "Ai cumpărat tatuajul %s pentru %s$" + }, + failure = { + title = "Aplicarea tatuajului a eșuat", + description = "Nu ai destui bani!" + } + }, + store = { + success = { + title = "Succes", + description = "I-ai dat %s$ lui %s!" + }, + failure = { + title = "Exploit!", + description = "Nu ai destui bani! Ai încercat să exploatezi sistemul!" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/locales/zh-TW.lua b/resources/[core]/illenium-appearance/locales/zh-TW.lua new file mode 100644 index 0000000..4dc501f --- /dev/null +++ b/resources/[core]/illenium-appearance/locales/zh-TW.lua @@ -0,0 +1,367 @@ +Locales["zh-TW"] = { + UI = { + modal = { + save = { + title = "儲存客製化", + description = "您還是一樣醜" + }, + exit = { + title = "退出客製化", + description = "不會儲存任何更改" + }, + accept = "是", + decline = "否" + }, + ped = { + title = "角色", + model = "模型" + }, + headBlend = { + title = "遺傳", + shape = { + title = "臉部", + firstOption = "父親", + secondOption = "母親", + mix = "混合" + }, + skin = { + title = "膚色", + firstOption = "父親", + secondOption = "母親", + mix = "混合" + }, + race = { + title = "種族", + shape = "形狀", + skin = "膚色", + mix = "混合" + } + }, + faceFeatures = { + title = "臉部特徵", + nose = { + title = "鼻子", + width = "寬度", + height = "高度", + size = "大小", + boneHeight = "骨骼高度", + boneTwist = "骨骼扭曲", + peakHeight = "峰值高度" + }, + eyebrows = { + title = "眉毛", + height = "高度", + depth = "深度" + }, + cheeks = { + title = "臉頰", + boneHeight = "骨骼高度", + boneWidth = "骨骼寬度", + width = "寬度" + }, + eyesAndMouth = { + title = "眼睛和嘴巴", + eyesOpening = "眼睛張開", + lipsThickness = "嘴唇厚度" + }, + jaw = { + title = "下巴", + width = "寬度", + size = "大小" + }, + chin = { + title = "下顎", + lowering = "下降", + length = "長度", + size = "大小", + hole = "孔的大小" + }, + neck = { + title = "脖子", + thickness = "厚度" + } + }, + headOverlays = { + title = "外貌", + hair = { + title = "髮型", + style = "風格", + color = "顏色", + highlight = "亮色", + texture = "貼圖", + fade = "淡出" + }, + opacity = "透明度", + style = "風格", + color = "顏色", + secondColor = "次要顏色", + blemishes = "瑕疵", + beard = "鬍鬚", + eyebrows = "眉毛", + ageing = "衰老", + makeUp = "化妝", + blush = "腮紅", + complexion = "膚色", + sunDamage = "曬傷", + lipstick = "口紅", + moleAndFreckles = "痣和雀斑", + chestHair = "胸毛", + bodyBlemishes = "身體瑕疵", + eyeColor = "眼睛顏色" + }, + components = { + title = "服裝", + drawable = "服裝編號", + texture = "貼圖", + mask = "面具", + upperBody = "上身", + lowerBody = "下身", + bags = "背包和降落傘", + shoes = "鞋子", + scarfAndChains = "圍巾和鏈子", + shirt = "襯衫", + bodyArmor = "防彈衣", + decals = "貼花", + jackets = "夾克", + head = "頭部" + }, + props = { + title = "掛飾", + drawable = "掛飾編號", + texture = "貼圖", + hats = "帽子和頭盔", + glasses = "眼鏡", + ear = "耳朵", + watches = "手錶", + bracelets = "手鐲" + }, + tattoos = { + title = "紋身", + items = { + ZONE_TORSO = "軀幹", + ZONE_HEAD = "頭部", + ZONE_LEFT_ARM = "左臂", + ZONE_RIGHT_ARM = "右臂", + ZONE_LEFT_LEG = "左腿", + ZONE_RIGHT_LEG = "右腿" + }, + apply = "應用", + delete = "移除", + deleteAll = "移除所有紋身", + opacity = "透明度" + } + }, + outfitManagement = { + title = "服裝管理", + jobText = "管理職業服裝", + gangText = "管理幫派服裝" + }, + cancelled = { + title = "取消客製化", + description = "未儲存客製化" + }, + outfits = { + import = { + title = "輸入服裝代碼", + menuTitle = "匯入服裝", + description = "從共享代碼匯入服裝", + name = { + label = "命名服裝", + placeholder = "一個不錯的服裝", + default = "匯入的服裝" + }, + code = { + label = "服裝代碼" + }, + success = { + title = "匯入服裝成功", + description = "現在您可以使用服裝菜單切換到該服裝" + }, + failure = { + title = "匯入失敗", + description = "無效的服裝代碼" + } + }, + generate = { + title = "生成服裝代碼", + description = "生成一個共享的服裝代碼", + failure = { + title = "出現問題", + description = "生成服裝代碼失敗" + }, + success = { + title = "生成服裝代碼成功", + description = "這是您的服裝代碼" + } + }, + save = { + menuTitle = "儲存當前服裝", + menuDescription = "將當前服裝儲存為%s服裝", + description = "儲存當前服裝", + title = "命名您的服裝", + managementTitle = "管理服裝細節", + name = { + label = "服裝名稱", + placeholder = "非常酷的服裝" + }, + gender = { + label = "性別", + male = "男性", + female = "女性" + }, + rank = { + label = "最低等級" + }, + failure = { + title = "儲存失敗", + description = "同名的服裝已存在" + }, + success = { + title = "成功", + description = "已儲存服裝%s" + } + }, + update = { + title = "更新服裝", + description = "將當前服裝儲存到現有的服裝中", + failure = { + title = "更新失敗", + description = "該服裝不存在" + }, + success = { + title = "成功", + description = "已更新服裝%s" + } + }, + change = { + title = "切換服裝", + description = "從當前儲存的%s服裝中選擇", + pDescription = "從當前儲存的服裝中選擇", + failure = { + title = "出現問題", + description = "您嘗試切換到的服裝沒有基本外觀", + } + }, + delete = { + title = "刪除服裝", + description = "刪除儲存的%s服裝", + mDescription = "刪除任意儲存的服裝", + item = { + title = '刪除"%s"', + description = "模型:%s%s" + }, + success = { + title = "成功", + description = "已刪除服裝" + } + }, + manage = { + title = "👔 | 管理%s服裝" + } + }, + jobOutfits = { + title = "工作服裝", + description = "從您的工作服裝中選擇" + }, + menu = { + returnTitle = "返回", + title = "更衣室", + outfitsTitle = "玩家服裝", + clothingShopTitle = "服裝商店", + barberShopTitle = "理髮店", + tattooShopTitle = "紋身店", + surgeonShopTitle = "整容店" + }, + clothing = { + title = "購買服裝 - $%d", + titleNoPrice = "更換服裝", + options = { + title = "👔 | 服裝商店選項", + description = "從各種各樣的服裝中選擇" + }, + outfits = { + title = "👔 | 服裝選項", + civilian = { + title = "民用服裝", + description = "穿上您的衣服" + } + } + }, + commands = { + reloadskin = { + title = "重新加載您的角色", + failure = { + title = "錯誤", + description = "您現在不能重新加載角色" + } + }, + clearstuckprops = { + title = "移除附加到實體的所有道具", + failure = { + title = "錯誤", + description = "您現在不能移除掛飾" + } + }, + pedmenu = { + title = "打開/給予服裝菜單", + failure = { + title = "錯誤", + description = "玩家不在線" + } + }, + joboutfits = { + title = "打開工作服裝菜單" + }, + gangoutfits = { + title = "打開幫派服裝菜單" + }, + bossmanagedoutfits = { + title = "打開老闆管理的服裝菜單" + } + }, + textUI = { + clothing = "服裝商店 - 價格:%d$", + barber = "理髮店 - 價格:%d$", + tattoo = "紋身店 - 價格:%d$", + surgeon = "整容店 - 價格:%d$", + clothingRoom = "更衣室", + playerOutfitRoom = "服裝" + }, + migrate = { + success = { + title = "成功", + description = "遷移完成。已遷移%s個外觀", + descriptionSingle = "已遷移的外觀" + }, + skip = { + title = "信息", + description = "跳過外觀編輯" + }, + typeError = { + title = "錯誤", + description = "無效的類型" + } + }, + purchase = { + tattoo = { + success = { + title = "成功", + description = "購買%s紋身,價格%s$" + }, + failure = { + title = "紋身應用失敗", + description = "您沒有足夠的錢!" + } + }, + store = { + success = { + title = "成功", + description = "將%s$給予%s!" + }, + failure = { + title = "利用漏洞!", + description = "作弊夸技巧,貧賤露真貌,錢少心更擾,空贏世人笑。" + } + } + } +} diff --git a/resources/[core]/illenium-appearance/server/database/database.lua b/resources/[core]/illenium-appearance/server/database/database.lua new file mode 100644 index 0000000..92e5a8a --- /dev/null +++ b/resources/[core]/illenium-appearance/server/database/database.lua @@ -0,0 +1 @@ +Database = {} diff --git a/resources/[core]/illenium-appearance/server/database/jobgrades.lua b/resources/[core]/illenium-appearance/server/database/jobgrades.lua new file mode 100644 index 0000000..2de3752 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/database/jobgrades.lua @@ -0,0 +1,5 @@ +Database.JobGrades = {} + +function Database.JobGrades.GetByJobName(name) + return MySQL.query.await("SELECT grade,name,label FROM job_grades WHERE job_name = ?", {name}) +end diff --git a/resources/[core]/illenium-appearance/server/database/managementoutfits.lua b/resources/[core]/illenium-appearance/server/database/managementoutfits.lua new file mode 100644 index 0000000..8a9fb5b --- /dev/null +++ b/resources/[core]/illenium-appearance/server/database/managementoutfits.lua @@ -0,0 +1,30 @@ +Database.ManagementOutfits = {} + +function Database.ManagementOutfits.GetAllByJob(type, jobName, gender) + local query = "SELECT * FROM management_outfits WHERE type = ? AND job_name = ?" + local queryArgs = {type, jobName} + + if gender then + query = query .. " AND gender = ?" + queryArgs[#queryArgs + 1] = gender + end + + return MySQL.query.await(query, queryArgs) +end + +function Database.ManagementOutfits.Add(outfitData) + return MySQL.insert.await("INSERT INTO management_outfits (job_name, type, minrank, name, gender, model, props, components) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", { + outfitData.JobName, + outfitData.Type, + outfitData.MinRank, + outfitData.Name, + outfitData.Gender, + outfitData.Model, + json.encode(outfitData.Props), + json.encode(outfitData.Components) + }) +end + +function Database.ManagementOutfits.DeleteByID(id) + MySQL.query.await("DELETE FROM management_outfits WHERE id = ?", {id}) +end diff --git a/resources/[core]/illenium-appearance/server/database/playeroutfitcodes.lua b/resources/[core]/illenium-appearance/server/database/playeroutfitcodes.lua new file mode 100644 index 0000000..d691f64 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/database/playeroutfitcodes.lua @@ -0,0 +1,17 @@ +Database.PlayerOutfitCodes = {} + +function Database.PlayerOutfitCodes.GetByCode(code) + return MySQL.single.await("SELECT * FROM player_outfit_codes WHERE code = ?", {code}) +end + +function Database.PlayerOutfitCodes.GetByOutfitID(outfitID) + return MySQL.single.await("SELECT * FROM player_outfit_codes WHERE outfitID = ?", {outfitID}) +end + +function Database.PlayerOutfitCodes.Add(outfitID, code) + return MySQL.insert.await("INSERT INTO player_outfit_codes (outfitid, code) VALUES (?, ?)", {outfitID, code}) +end + +function Database.PlayerOutfitCodes.DeleteByOutfitID(id) + MySQL.query.await("DELETE FROM player_outfit_codes WHERE outfitid = ?", {id}) +end diff --git a/resources/[core]/illenium-appearance/server/database/playeroutfits.lua b/resources/[core]/illenium-appearance/server/database/playeroutfits.lua new file mode 100644 index 0000000..7a2aa1c --- /dev/null +++ b/resources/[core]/illenium-appearance/server/database/playeroutfits.lua @@ -0,0 +1,36 @@ +Database.PlayerOutfits = {} + +function Database.PlayerOutfits.GetAllByCitizenID(citizenid) + return MySQL.query.await("SELECT * FROM player_outfits WHERE citizenid = ?", {citizenid}) +end + +function Database.PlayerOutfits.GetByID(id) + return MySQL.single.await("SELECT * FROM player_outfits WHERE id = ?", {id}) +end + +function Database.PlayerOutfits.GetByOutfit(name, citizenid) -- for validate duplicate name before insert + return MySQL.single.await("SELECT * FROM player_outfits WHERE outfitname = ? AND citizenid = ?", {name, citizenid}) +end + +function Database.PlayerOutfits.Add(citizenID, outfitName, model, components, props) + return MySQL.insert.await("INSERT INTO player_outfits (citizenid, outfitname, model, components, props) VALUES (?, ?, ?, ?, ?)", { + citizenID, + outfitName, + model, + components, + props + }) +end + +function Database.PlayerOutfits.Update(outfitID, model, components, props) + return MySQL.update.await("UPDATE player_outfits SET model = ?, components = ?, props = ? WHERE id = ?", { + model, + components, + props, + outfitID + }) +end + +function Database.PlayerOutfits.DeleteByID(id) + MySQL.query.await("DELETE FROM player_outfits WHERE id = ?", {id}) +end diff --git a/resources/[core]/illenium-appearance/server/database/players.lua b/resources/[core]/illenium-appearance/server/database/players.lua new file mode 100644 index 0000000..fa487f0 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/database/players.lua @@ -0,0 +1,5 @@ +Database.Players = {} + +function Database.Players.GetAll() + return MySQL.query.await("SELECT * FROM players") +end diff --git a/resources/[core]/illenium-appearance/server/database/playerskins.lua b/resources/[core]/illenium-appearance/server/database/playerskins.lua new file mode 100644 index 0000000..1754619 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/database/playerskins.lua @@ -0,0 +1,34 @@ +Database.PlayerSkins = {} + +function Database.PlayerSkins.UpdateActiveField(citizenID, active) + MySQL.update.await("UPDATE playerskins SET active = ? WHERE citizenid = ?", {active, citizenID}) -- Make all the skins inactive / active +end + +function Database.PlayerSkins.DeleteByModel(citizenID, model) + MySQL.query.await("DELETE FROM playerskins WHERE citizenid = ? AND model = ?", {citizenID, model}) +end + +function Database.PlayerSkins.Add(citizenID, model, appearance, active) + MySQL.insert.await("INSERT INTO playerskins (citizenid, model, skin, active) VALUES (?, ?, ?, ?)", {citizenID, model, appearance, active}) +end + +function Database.PlayerSkins.GetByCitizenID(citizenID, model) + local query = "SELECT skin FROM playerskins WHERE citizenid = ?" + local queryArgs = {citizenID} + if model ~= nil then + query = query .. " AND model = ?" + queryArgs[#queryArgs + 1] = model + else + query = query .. " AND active = ?" + queryArgs[#queryArgs + 1] = 1 + end + return MySQL.scalar.await(query, queryArgs) +end + +function Database.PlayerSkins.DeleteByCitizenID(citizenID) + MySQL.query.await("DELETE FROM playerskins WHERE citizenid = ?", { citizenID }) +end + +function Database.PlayerSkins.GetAll() + return MySQL.query.await("SELECT * FROM playerskins") +end diff --git a/resources/[core]/illenium-appearance/server/database/users.lua b/resources/[core]/illenium-appearance/server/database/users.lua new file mode 100644 index 0000000..9319dc4 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/database/users.lua @@ -0,0 +1,13 @@ +Database.Users = {} + +function Database.Users.UpdateSkinForUser(citizenID, skin) + return MySQL.update.await("UPDATE users SET skin = ? WHERE identifier = ?", {skin, citizenID}) +end + +function Database.Users.GetSkinByCitizenID(citizenID) + return MySQL.single.await("SELECT skin FROM users WHERE identifier = ?", {citizenID}) +end + +function Database.Users.GetAll() + return MySQL.query.await("SELECT * FROM users") +end diff --git a/resources/[core]/illenium-appearance/server/framework/esx/callbacks.lua b/resources/[core]/illenium-appearance/server/framework/esx/callbacks.lua new file mode 100644 index 0000000..230c818 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/framework/esx/callbacks.lua @@ -0,0 +1,18 @@ +if not Framework.ESX() then return end + +local ESX = exports["es_extended"]:getSharedObject() + +ESX.RegisterServerCallback("esx_skin:getPlayerSkin", function(source, cb) + local Player = ESX.GetPlayerFromId(source) + + local appearance = Framework.GetAppearance(Player.identifier) + + cb(appearance, { + skin_male = Player.job.skin_male, + skin_female = Player.job.skin_female + }) +end) + +lib.callback.register("illenium-appearance:server:esx:getGradesForJob", function(_, jobName) + return Database.JobGrades.GetByJobName(jobName) +end) diff --git a/resources/[core]/illenium-appearance/server/framework/esx/main.lua b/resources/[core]/illenium-appearance/server/framework/esx/main.lua new file mode 100644 index 0000000..a638875 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/framework/esx/main.lua @@ -0,0 +1,63 @@ +if not Framework.ESX() then return end + +local ESX = exports["es_extended"]:getSharedObject() + +function Framework.GetPlayerID(src) + local Player = ESX.GetPlayerFromId(src) + if Player then + return Player.identifier + end +end + +function Framework.HasMoney(src, type, money) + if type == "cash" then + type = "money" + end + local Player = ESX.GetPlayerFromId(src) + return Player.getAccount(type).money >= money +end + +function Framework.RemoveMoney(src, type, money) + if type == "cash" then + type = "money" + end + local Player = ESX.GetPlayerFromId(src) + if Player.getAccount(type).money >= money then + Player.removeAccountMoney(type, money) + return true + end + return false +end + +function normalizeGrade(job) + job.grade = { + level = job.grade + } + return job +end + +function Framework.GetJob(src) + local Player = ESX.GetPlayerFromId(src) + return normalizeGrade(Player.getJob()) +end + +function Framework.GetGang(src) + local Player = ESX.GetPlayerFromId(src) + return normalizeGrade(Player.getJob()) +end + +function Framework.SaveAppearance(appearance, citizenID) + Database.Users.UpdateSkinForUser(citizenID, json.encode(appearance)) +end + +function Framework.GetAppearance(citizenID) + local user = Database.Users.GetSkinByCitizenID(citizenID) + if user then + local skin = json.decode(user.skin) + if skin then + skin.sex = skin.model == "mp_m_freemode_01" and 0 or 1 + return skin + end + end + return nil +end diff --git a/resources/[core]/illenium-appearance/server/framework/esx/management.lua b/resources/[core]/illenium-appearance/server/framework/esx/management.lua new file mode 100644 index 0000000..5cbec2e --- /dev/null +++ b/resources/[core]/illenium-appearance/server/framework/esx/management.lua @@ -0,0 +1,28 @@ +if not Framework.ESX() then return end + +if Config.BossManagedOutfits then + function isBoss(grades, grade) + local highestGrade = grades[1].grade + for i = 2, #grades do + if grades[i].grade > highestGrade then + highestGrade = grades[i].grade + end + end + return highestGrade == grade + end + lib.addCommand("bossmanagedoutfits", { help = _L("commands.bossmanagedoutfits.title"), }, function(source) + local job = Framework.GetJob(source) + local grades = Database.JobGrades.GetByJobName(job.name) + if not grades then + return + end + + if not isBoss(grades, job.grade.level) then + return + end + + TriggerClientEvent("illenium-appearance:client:OutfitManagementMenu", source, { + type = "Job" + }) + end) +end diff --git a/resources/[core]/illenium-appearance/server/framework/esx/migrate.lua b/resources/[core]/illenium-appearance/server/framework/esx/migrate.lua new file mode 100644 index 0000000..7f399b3 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/framework/esx/migrate.lua @@ -0,0 +1,156 @@ +if not Framework.ESX() then return end + +local function tofloat(num) + return num + 0.0 +end + +local function convertSkinToNewFormat(oldSkin, gender) + local skin = { + components = Framework.ConvertComponents(oldSkin), + eyeColor = oldSkin.eye_color, + faceFeatures = { + chinBoneLenght = tofloat((oldSkin.chin_2 or 0) / 10), + noseBoneTwist = tofloat((oldSkin.nose_6 or 0) / 10), + nosePeakHigh = tofloat((oldSkin.nose_2 or 0) / 10), + jawBoneWidth = tofloat((oldSkin.jaw_1 or 0) / 10), + cheeksWidth = tofloat((oldSkin.cheeks_3 or 0) / 10), + eyeBrownHigh = tofloat((oldSkin.eyebrows_5 or 0) / 10), + chinHole = tofloat((oldSkin.chin_4 or 0) / 10), + jawBoneBackSize = tofloat((oldSkin.jaw_2 or 0) / 10), + eyesOpening = tofloat((oldSkin.eye_squint or 0) / 10), + lipsThickness = tofloat((oldSkin.lip_thickness or 0) / 10), + nosePeakSize = tofloat((oldSkin.nose_3 or 0) / 10), + eyeBrownForward = tofloat((oldSkin.eyebrows_6 or 0) / 10), + neckThickness = tofloat((oldSkin.neck_thickness or 0) / 10), + chinBoneSize = tofloat((oldSkin.chin_3 or 0) / 10), + chinBoneLowering = tofloat((oldSkin.chin_1 or 0) / 10), + cheeksBoneWidth = tofloat((oldSkin.cheeks_2 or 0) / 10), + nosePeakLowering = tofloat((oldSkin.nose_5 or 0) / 10), + noseBoneHigh = tofloat((oldSkin.nose_4 or 0) / 10), + cheeksBoneHigh = tofloat((oldSkin.cheeks_1 or 0) / 10), + noseWidth = tofloat((oldSkin.nose_1 or 0) / 10) + }, + hair = { + highlight = oldSkin.hair_color_2 or 0, + texture = oldSkin.hair_2 or 0, + style = oldSkin.hair_1 or 0, + color = oldSkin.hair_color_1 or 0 + }, + headBlend = { + thirdMix = 0, + skinSecond = oldSkin.dad or 0, + skinMix = tofloat((oldSkin.skin_md_weight or 0) / 100), + skinThird = 0, + shapeFirst = oldSkin.mom or 0, + shapeThird = 0, + shapeMix = tofloat((oldSkin.face_md_weight or 0) / 100), + shapeSecond = oldSkin.dad or 0, + skinFirst = oldSkin.mom or 0 + }, + headOverlays = { + complexion = { + opacity = tofloat((oldSkin.complexion_2 or 0) / 10), + color = 0, + style = oldSkin.complexion_1 or 0, + secondColor = 0 + }, + lipstick = { + opacity = tofloat((oldSkin.lipstick_2 or 0) / 10), + color = oldSkin.lipstick_3 or 0, + style = oldSkin.lipstick_1 or 0, + secondColor = oldSkin.lipstick_4 or 0 + }, + eyebrows = { + opacity = tofloat((oldSkin.eyebrows_2 or 0) / 10), + color = oldSkin.eyebrows_3 or 0, + style = oldSkin.eyebrows_1 or 0, + secondColor = oldSkin.eyebrows_4 or 0 + }, + beard = { + opacity = tofloat((oldSkin.beard_2 or 0) / 10), + color = oldSkin.beard_3 or 0, + style = oldSkin.beard_1 or 0, + secondColor = oldSkin.beard_4 or 0 + }, + blush = { + opacity = tofloat((oldSkin.blush_2 or 0) / 10), + color = oldSkin.blush_3 or 0, + style = oldSkin.blush_1 or 0, + secondColor = oldSkin.blush_4 or 0 + }, + ageing = { + opacity = tofloat((oldSkin.age_2 or 0) / 10), + color = 0, + style = oldSkin.age_1 or 0, + secondColor = 0 + }, + blemishes = { + opacity = tofloat((oldSkin.blemishes_2 or 0) / 10), + color = 0, + style = oldSkin.blemishes_1 or 0, + secondColor = 0 + }, + chestHair = { + opacity = tofloat((oldSkin.chest_2 or 0) / 10), + color = oldSkin.chest_3 or 0, + style = oldSkin.chest_1 or 0, + secondColor = 0 + }, + bodyBlemishes = { + opacity = tofloat((oldSkin.bodyb_2 or 0) / 10), + color = oldSkin.bodyb_3 or 0, + style = oldSkin.bodyb_1 or 0, + secondColor = oldSkin.bodyb_4 or 0 + }, + moleAndFreckles = { + opacity = tofloat((oldSkin.moles_2 or 0) / 10), + color = 0, + style = oldSkin.moles_1 or 0, + secondColor = 0 + }, + sunDamage = { + opacity = tofloat((oldSkin.sun_2 or 0) / 10), + color = 0, + style = oldSkin.sun_1 or 0, + secondColor = 0 + }, + makeUp = { + opacity = tofloat((oldSkin.makeup_2 or 0) / 10), + color = oldSkin.makeup_3 or 0, + style = oldSkin.makeup_1 or 0, + secondColor = oldSkin.makeup_4 or 0 + } + }, + model = gender == "m" and "mp_m_freemode_01" or "mp_f_freemode_01", + props = Framework.ConvertProps(oldSkin), + tattoos = {} + } + + return skin +end + +lib.addCommand("migrateskins", { help = "Migrate skins", restricted = "group.admin" }, function(source) + local users = Database.Users.GetAll() + local convertedSkins = 0 + if users then + for i = 1, #users do + local user = users[i] + if user.skin then + local oldSkin = json.decode(user.skin) + if oldSkin.hair_1 then -- Convert only if its an old skin + local skin = json.encode(convertSkinToNewFormat(oldSkin, user.sex)) + local affectedRows = Database.Users.UpdateSkinForUser(user.identifier, skin) + if affectedRows then + convertedSkins += 1 + end + end + end + end + end + lib.notify(source, { + title = _L("migrate.success.title"), + description = string.format(_L("migrate.success.description"), tostring(convertedSkins)), + type = "success", + position = Config.NotifyOptions.position + }) +end) diff --git a/resources/[core]/illenium-appearance/server/framework/ox/main.lua b/resources/[core]/illenium-appearance/server/framework/ox/main.lua new file mode 100644 index 0000000..c151d29 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/framework/ox/main.lua @@ -0,0 +1,36 @@ +if not Framework.Ox() then return end + +local Ox = require '@ox_core.lib.init' + +function Framework.GetPlayerID(playerId) + return Ox.GetPlayer(playerId).charId +end + +function Framework.HasMoney(playerId, item, amount) + return exports.ox_inventory:GetItemCount(playerId, item) >= amount +end + +function Framework.RemoveMoney(playerId, type, amount) + return exports.ox_inventory:RemoveItem(playerId, type, amount) +end + +function Framework.GetJob() + return ---@todo +end + +function Framework.GetGang() + return ---@todo +end + +function Framework.SaveAppearance(appearance, charId) + Database.PlayerSkins.UpdateActiveField(charId, 0) + Database.PlayerSkins.DeleteByModel(charId, appearance.model) + Database.PlayerSkins.Add(charId, appearance.model, json.encode(appearance), 1) +end + +function Framework.GetAppearance(charId, model) + local result = Database.PlayerSkins.GetByCitizenID(charId, model) + if result then + return json.decode(result) + end +end diff --git a/resources/[core]/illenium-appearance/server/framework/qb/main.lua b/resources/[core]/illenium-appearance/server/framework/qb/main.lua new file mode 100644 index 0000000..715f033 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/framework/qb/main.lua @@ -0,0 +1,43 @@ +if not Framework.QBCore() then return end + +local QBCore = exports["qb-core"]:GetCoreObject() + +function Framework.GetPlayerID(src) + local Player = QBCore.Functions.GetPlayer(src) + if Player then + return Player.PlayerData.citizenid + end +end + +function Framework.HasMoney(src, type, money) + local Player = QBCore.Functions.GetPlayer(src) + return Player.PlayerData.money[type] >= money +end + +function Framework.RemoveMoney(src, type, money) + local Player = QBCore.Functions.GetPlayer(src) + return Player.Functions.RemoveMoney(type, money) +end + +function Framework.GetJob(src) + local Player = QBCore.Functions.GetPlayer(src) + return Player.PlayerData.job +end + +function Framework.GetGang(src) + local Player = QBCore.Functions.GetPlayer(src) + return Player.PlayerData.gang +end + +function Framework.SaveAppearance(appearance, citizenID) + Database.PlayerSkins.UpdateActiveField(citizenID, 0) + Database.PlayerSkins.DeleteByModel(citizenID, appearance.model) + Database.PlayerSkins.Add(citizenID, appearance.model, json.encode(appearance), 1) +end + +function Framework.GetAppearance(citizenID, model) + local result = Database.PlayerSkins.GetByCitizenID(citizenID, model) + if result then + return json.decode(result) + end +end diff --git a/resources/[core]/illenium-appearance/server/framework/qb/migrate.lua b/resources/[core]/illenium-appearance/server/framework/qb/migrate.lua new file mode 100644 index 0000000..4c2e82b --- /dev/null +++ b/resources/[core]/illenium-appearance/server/framework/qb/migrate.lua @@ -0,0 +1,97 @@ +if not Framework.QBCore() then return end + +local continue = false + +local function MigrateFivemAppearance(source) + local allPlayers = Database.Players.GetAll() + local playerSkins = {} + for i=1, #allPlayers, 1 do + if allPlayers[i].skin then + playerSkins[#playerSkins+1] = { + citizenID = allPlayers[i].citizenid, + skin = allPlayers[i].skin + } + end + end + + for i=1, #playerSkins, 1 do + Database.PlayerSkins.Add(playerSkins[i].citizenID, json.decode(playerSkins[i].skin).model, playerSkins[i].skin, 1) + end + lib.notify(source, { + title = _L("migrate.success.title"), + description = string.format(_L("migrate.success.description"), tostring(#playerSkins)), + type = "success", + position = Config.NotifyOptions.position + }) +end + +local function MigrateQBClothing(source) + local allPlayerSkins = Database.PlayerSkins.GetAll() + local migrated = 0 + for i=1, #allPlayerSkins, 1 do + if not tonumber(allPlayerSkins[i].model) then + lib.notify(source, { + title = _L("migrate.skip.title"), + description = _L("migrate.skip.description"), + type = "inform", + position = Config.NotifyOptions.position + }) + else + TriggerClientEvent("illenium-appearance:client:migration:load-qb-clothing-skin", source, allPlayerSkins[i]) + while not continue do + Wait(10) + end + continue = false + migrated = migrated + 1 + end + end + TriggerClientEvent("illenium-appearance:client:reloadSkin", source) + + lib.notify(source, { + title = _L("migrate.success.title"), + description = string.format(_L("migrate.success.description"), tostring(migrated)), + type = "success", + position = Config.NotifyOptions.position + }) +end + +RegisterNetEvent("illenium-appearance:server:migrate-qb-clothing-skin", function(citizenid, appearance) + local src = source + Database.PlayerSkins.DeleteByCitizenID(citizenid) + Database.PlayerSkins.Add(citizenid, appearance.model, json.encode(appearance), 1) + continue = true + lib.notify(src, { + id = "illenium_appearance_skin_migrated", + title = _L("migrate.success.title"), + description = _L("migrate.success.descriptionSingle"), + type = "success", + position = Config.NotifyOptions.position + }) +end) + +lib.addCommand("migrateskins", { + help = "Migrate skins", + params = { + { + name = "resourceName", + type = "string", + }, + }, + restricted = "group.god" +}, function(source, args) + local resourceName = args.resourceName + if resourceName == "fivem-appearance" then + MigrateFivemAppearance(source) + elseif resourceName == "qb-clothing" then + CreateThread(function() + MigrateQBClothing(source) + end) + else + lib.notify(source, { + title = _L("migrate.typeError.title"), + description = _L("migrate.typeError.description"), + type = "error", + position = Config.NotifyOptions.position + }) + end +end) diff --git a/resources/[core]/illenium-appearance/server/permissions.lua b/resources/[core]/illenium-appearance/server/permissions.lua new file mode 100644 index 0000000..5b8b284 --- /dev/null +++ b/resources/[core]/illenium-appearance/server/permissions.lua @@ -0,0 +1,11 @@ +lib.callback.register("illenium-appearance:server:GetPlayerAces", function() + local src = source + local allowedAces = {} + for i = 1, #Config.Aces do + local ace = Config.Aces[i] + if IsPlayerAceAllowed(src, ace) then + allowedAces[#allowedAces+1] = ace + end + end + return allowedAces +end) diff --git a/resources/[core]/illenium-appearance/server/server.lua b/resources/[core]/illenium-appearance/server/server.lua new file mode 100644 index 0000000..024906b --- /dev/null +++ b/resources/[core]/illenium-appearance/server/server.lua @@ -0,0 +1,354 @@ +local outfitCache = {} +local uniformCache = {} + +local function getMoneyForShop(shopType) + local money = 0 + if shopType == "clothing" then + money = Config.ClothingCost + elseif shopType == "barber" then + money = Config.BarberCost + elseif shopType == "tattoo" then + money = Config.TattooCost + elseif shopType == "surgeon" then + money = Config.SurgeonCost + end + + return money +end + +local function getOutfitsForPlayer(citizenid) + outfitCache[citizenid] = {} + local result = Database.PlayerOutfits.GetAllByCitizenID(citizenid) + for i = 1, #result, 1 do + outfitCache[citizenid][#outfitCache[citizenid] + 1] = { + id = result[i].id, + name = result[i].outfitname, + model = result[i].model, + components = json.decode(result[i].components), + props = json.decode(result[i].props) + } + end +end + +local function GenerateUniqueCode() + local code, exists + repeat + code = GenerateNanoID(Config.OutfitCodeLength) + exists = Database.PlayerOutfitCodes.GetByCode(code) + until not exists + return code +end + +-- Callback(s) + +lib.callback.register("illenium-appearance:server:generateOutfitCode", function(_, outfitID) + local existingOutfitCode = Database.PlayerOutfitCodes.GetByOutfitID(outfitID) + if not existingOutfitCode then + local code = GenerateUniqueCode() + local id = Database.PlayerOutfitCodes.Add(outfitID, code) + if not id then + print("Something went wrong while generating outfit code") + return + end + return code + end + return existingOutfitCode.code +end) + +lib.callback.register("illenium-appearance:server:importOutfitCode", function(source, outfitName, outfitCode) + local citizenID = Framework.GetPlayerID(source) + local existingOutfitCode = Database.PlayerOutfitCodes.GetByCode(outfitCode) + if not existingOutfitCode then + return nil + end + + local playerOutfit = Database.PlayerOutfits.GetByID(existingOutfitCode.outfitid) + if not playerOutfit then + return + end + + if playerOutfit.citizenid == citizenID then return end -- Validation when someone tried to duplicate own outfit + if Database.PlayerOutfits.GetByOutfit(outfitName, citizenID) then return end -- Validation duplicate outfit name, if validate on local id, someone can "spam error" server-sided + + local id = Database.PlayerOutfits.Add(citizenID, outfitName, playerOutfit.model, playerOutfit.components, playerOutfit.props) + + if not id then + print("Something went wrong while importing the outfit") + return + end + + outfitCache[citizenID][#outfitCache[citizenID] + 1] = { + id = id, + name = outfitName, + model = playerOutfit.model, + components = json.decode(playerOutfit.components), + props = json.decode(playerOutfit.props) + } + + return true +end) + +lib.callback.register("illenium-appearance:server:getAppearance", function(source, model) + local citizenID = Framework.GetPlayerID(source) + return Framework.GetAppearance(citizenID, model) +end) + +lib.callback.register("illenium-appearance:server:hasMoney", function(source, shopType) + local money = getMoneyForShop(shopType) + if Framework.HasMoney(source, "cash", money) then + return true, money + else + return false, money + end +end) + +lib.callback.register("illenium-appearance:server:payForTattoo", function(source, tattoo) + local src = source + local cost = tattoo.cost or Config.TattooCost + + if Framework.RemoveMoney(src, "cash", cost) then + lib.notify(src, { + title = _L("purchase.tattoo.success.title"), + description = string.format(_L("purchase.tattoo.success.description"), tattoo.label, cost), + type = "success", + position = Config.NotifyOptions.position + }) + return true + else + lib.notify(src, { + title = _L("purchase.tattoo.failure.title"), + description = _L("purchase.tattoo.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + return false + end +end) + +lib.callback.register("illenium-appearance:server:getOutfits", function(source) + local citizenID = Framework.GetPlayerID(source) + if outfitCache[citizenID] == nil then + getOutfitsForPlayer(citizenID) + end + return outfitCache[citizenID] +end) + +lib.callback.register("illenium-appearance:server:getManagementOutfits", function(source, mType, gender) + local job = Framework.GetJob(source) + if mType == "Gang" then + job = Framework.GetGang(source) + end + + local grade = tonumber(job.grade.level) + local managementOutfits = {} + local result = Database.ManagementOutfits.GetAllByJob(mType, job.name, gender) + + for i = 1, #result, 1 do + if grade >= result[i].minrank then + managementOutfits[#managementOutfits + 1] = { + id = result[i].id, + name = result[i].name, + model = result[i].model, + gender = result[i].gender, + components = json.decode(result[i].components), + props = json.decode(result[i].props) + } + end + end + return managementOutfits +end) + +lib.callback.register("illenium-appearance:server:getUniform", function(source) + return uniformCache[Framework.GetPlayerID(source)] +end) + +RegisterServerEvent("illenium-appearance:server:saveAppearance", function(appearance) + local src = source + local citizenID = Framework.GetPlayerID(src) + if appearance ~= nil then + Framework.SaveAppearance(appearance, citizenID) + end +end) + +RegisterServerEvent("illenium-appearance:server:chargeCustomer", function(shopType) + local src = source + local money = getMoneyForShop(shopType) + if Framework.RemoveMoney(src, "cash", money) then + lib.notify(src, { + title = _L("purchase.store.success.title"), + description = string.format(_L("purchase.store.success.description"), money, shopType), + type = "success", + position = Config.NotifyOptions.position + }) + else + lib.notify(src, { + title = _L("purchase.store.failure.title"), + description = _L("purchase.store.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + end +end) + +RegisterNetEvent("illenium-appearance:server:saveOutfit", function(name, model, components, props) + local src = source + local citizenID = Framework.GetPlayerID(src) + if outfitCache[citizenID] == nil then + getOutfitsForPlayer(citizenID) + end + if model and components and props then + local id = Database.PlayerOutfits.Add(citizenID, name, model, json.encode(components), json.encode(props)) + if not id then + return + end + outfitCache[citizenID][#outfitCache[citizenID] + 1] = { + id = id, + name = name, + model = model, + components = components, + props = props + } + lib.notify(src, { + title = _L("outfits.save.success.title"), + description = string.format(_L("outfits.save.success.description"), name), + type = "success", + position = Config.NotifyOptions.position + }) + end +end) + +RegisterNetEvent("illenium-appearance:server:updateOutfit", function(id, model, components, props) + local src = source + local citizenID = Framework.GetPlayerID(src) + if outfitCache[citizenID] == nil then + getOutfitsForPlayer(citizenID) + end + if model and components and props then + if not Database.PlayerOutfits.Update(id, model, json.encode(components), json.encode(props)) then return end + local outfitName = "" + for i = 1, #outfitCache[citizenID], 1 do + local outfit = outfitCache[citizenID][i] + if outfit.id == id then + outfit.model = model + outfit.components = components + outfit.props = props + outfitName = outfit.name + break + end + end + lib.notify(src, { + title = _L("outfits.update.success.title"), + description = string.format(_L("outfits.update.success.description"), outfitName), + type = "success", + position = Config.NotifyOptions.position + }) + end +end) + +RegisterNetEvent("illenium-appearance:server:saveManagementOutfit", function(outfitData) + local src = source + local id = Database.ManagementOutfits.Add(outfitData) + if not id then + return + end + + lib.notify(src, { + title = _L("outfits.save.success.title"), + description = string.format(_L("outfits.save.success.description"), outfitData.Name), + type = "success", + position = Config.NotifyOptions.position + }) +end) + +RegisterNetEvent("illenium-appearance:server:deleteManagementOutfit", function(id) + Database.ManagementOutfits.DeleteByID(id) +end) + +RegisterNetEvent("illenium-appearance:server:syncUniform", function(uniform) + local src = source + uniformCache[Framework.GetPlayerID(src)] = uniform +end) + +RegisterNetEvent("illenium-appearance:server:deleteOutfit", function(id) + local src = source + local citizenID = Framework.GetPlayerID(src) + Database.PlayerOutfitCodes.DeleteByOutfitID(id) + Database.PlayerOutfits.DeleteByID(id) + + for k, v in ipairs(outfitCache[citizenID]) do + if v.id == id then + table.remove(outfitCache[citizenID], k) + break + end + end +end) + +RegisterNetEvent("illenium-appearance:server:resetOutfitCache", function() + local src = source + local citizenID = Framework.GetPlayerID(src) + if citizenID then + outfitCache[citizenID] = nil + end +end) + +RegisterNetEvent("illenium-appearance:server:ChangeRoutingBucket", function() + local src = source + SetPlayerRoutingBucket(src, src) +end) + +RegisterNetEvent("illenium-appearance:server:ResetRoutingBucket", function() + local src = source + SetPlayerRoutingBucket(src, 0) +end) + +if Config.EnablePedMenu then + lib.addCommand("pedmenu", { + help = _L("commands.pedmenu.title"), + params = { + { + name = "playerID", + type = "number", + help = "Target player's server id", + optional = true + }, + }, + restricted = Config.PedMenuGroup + }, function(source, args) + local target = source + if args.playerID then + local citizenID = Framework.GetPlayerID(args.playerID) + if citizenID then + target = args.playerID + else + lib.notify(source, { + title = _L("commands.pedmenu.failure.title"), + description = _L("commands.pedmenu.failure.description"), + type = "error", + position = Config.NotifyOptions.position + }) + return + end + end + TriggerClientEvent("illenium-appearance:client:openClothingShopMenu", target, true) + end) +end + +if Config.EnableJobOutfitsCommand then + lib.addCommand("joboutfits", { help = _L("commands.joboutfits.title"), }, function(source) + TriggerClientEvent("illenium-apearance:client:outfitsCommand", source, true) + end) + + lib.addCommand("gangoutfits", { help = _L("commands.gangoutfits.title"), }, function(source) + TriggerClientEvent("illenium-apearance:client:outfitsCommand", source) + end) +end + +lib.addCommand("reloadskin", { help = _L("commands.reloadskin.title") }, function(source) + TriggerClientEvent("illenium-appearance:client:reloadSkin", source) +end) + +lib.addCommand("clearstuckprops", { help = _L("commands.clearstuckprops.title") }, function(source) + TriggerClientEvent("illenium-appearance:client:ClearStuckProps", source) +end) + +lib.versionCheck("iLLeniumStudios/illenium-appearance") diff --git a/resources/[core]/illenium-appearance/server/util.lua b/resources/[core]/illenium-appearance/server/util.lua new file mode 100644 index 0000000..83a16ff --- /dev/null +++ b/resources/[core]/illenium-appearance/server/util.lua @@ -0,0 +1,12 @@ +math.randomseed(os.time()) + +local urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict" + +function GenerateNanoID(size) + local id = "" + for _ = 1, size do + local randomIndex = math.random(64) + id = id .. urlAlphabet:sub(randomIndex,randomIndex) + end + return id +end diff --git a/resources/[core]/illenium-appearance/shared/blacklist.lua b/resources/[core]/illenium-appearance/shared/blacklist.lua new file mode 100644 index 0000000..08b3890 --- /dev/null +++ b/resources/[core]/illenium-appearance/shared/blacklist.lua @@ -0,0 +1,46 @@ +Config.Blacklist = { + male = { + hair = {}, + components = { + masks = {}, + upperBody = {}, + lowerBody = {}, + bags = {}, + shoes = {}, + scarfAndChains = {}, + shirts = {}, + bodyArmor = {}, + decals = {}, + jackets = {} + }, + props = { + hats = {}, + glasses = {}, + ear = {}, + watches = {}, + bracelets = {} + } + }, + female = { + hair = {}, + components = { + masks = {}, + upperBody = {}, + lowerBody = {}, + bags = {}, + shoes = {}, + scarfAndChains = {}, + shirts = {}, + bodyArmor = {}, + decals = {}, + jackets = {} + }, + props = { + hats = {}, + glasses = {}, + ear = {}, + watches = {}, + bracelets = {} + } + } +} diff --git a/resources/[core]/illenium-appearance/shared/config.lua b/resources/[core]/illenium-appearance/shared/config.lua new file mode 100644 index 0000000..dad6769 --- /dev/null +++ b/resources/[core]/illenium-appearance/shared/config.lua @@ -0,0 +1,1137 @@ +Config = {} + +Config.Debug = false + +Config.ClothingCost = 100 +Config.BarberCost = 100 +Config.TattooCost = 100 +Config.SurgeonCost = 100 + +Config.ChargePerTattoo = true -- Charge players per tattoo. Config.TattooCost will become the cost of 1 tattoo. The cost can be overridden by adding `cost` key in shared/tattoos.lua for specific tattoos + +-- Only set this to true if you're using rcore_tattoos +Config.RCoreTattoosCompatibility = false + +Config.AsynchronousLoading = false -- Change this to false if you want the NUI data to load before displaying the appearance UI + +Config.UseTarget = false + +Config.TextUIOptions = { + position = "left-center" +} + +Config.NotifyOptions = { + position = "top-right" +} + +Config.OutfitCodeLength = 10 + +Config.UseRadialMenu = false +Config.UseOxRadial = false -- Set to true to use ox_lib radial menu, both this and UseRadialMenu must be true + +Config.EnablePedsForShops = true +Config.EnablePedsForClothingRooms = true +Config.EnablePedsForPlayerOutfitRooms = true + +Config.EnablePedMenu = true +Config.PedMenuGroup = "group.admin" + +Config.EnableJobOutfitsCommand = false -- Enables /joboutfits and /gangoutfits commands + +Config.ShowNearestShopOnly = false +Config.HideRadar = false -- Hides the minimap while the appearance menu is open +Config.NearestShopBlipUpdateDelay = 10000 + +Config.InvincibleDuringCustomization = true + +Config.PreventTrackerRemoval = true -- Disables "Scarf and Chains" section if the player has tracker +Config.TrackerClothingOptions = { + drawable = 13, + texture = 0 +} + +Config.NewCharacterSections = { + Ped = true, + HeadBlend = true, + FaceFeatures = true, + HeadOverlays = true, + Components = true, + Props = true, + Tattoos = true +} + +Config.GenderBasedOnPed = true + +Config.AlwaysKeepProps = false + +Config.PersistUniforms = false -- Keeps Job / Gang Outfits on player reconnects / logout +Config.OnDutyOnlyClothingRooms = false -- Set to `true` to make the clothing rooms accessible only to players who are On Duty + +Config.BossManagedOutfits = false -- Allows Job / Gang bosses to manage their own job / gang outfits + +Config.ReloadSkinCooldown = 5000 + +Config.AutomaticFade = false -- Enables automatic fading and hides the Fade section from Hair + +Config.DisableComponents = { + Masks = false, + UpperBody = false, + LowerBody = false, + Bags = false, + Shoes = false, + ScarfAndChains = false, + BodyArmor = false, + Shirts = false, + Decals = false, + Jackets = false +} + +Config.DisableProps = { + Hats = false, + Glasses = false, + Ear = false, + Watches = false, + Bracelets = false +} + +---@type string[] +Config.Aces = {} -- list of ace permissions used for blacklisting + +Config.Blips = { + ["clothing"] = { + Show = true, + Sprite = 366, + Color = 47, + Scale = 0.7, + Name = "Clothing Store", + }, + ["barber"] = { + Show = true, + Sprite = 71, + Color = 0, + Scale = 0.7, + Name = "Barber", + }, + ["tattoo"] = { + Show = true, + Sprite = 75, + Color = 4, + Scale = 0.7, + Name = "Tattoo Shop", + }, + ["surgeon"] = { + Show = true, + Sprite = 102, + Color = 4, + Scale = 0.7, + Name = "Plastic Surgeon", + } +} + +Config.TargetConfig = { + ["clothing"] = { + model = "s_f_m_shop_high", + scenario = "WORLD_HUMAN_STAND_MOBILE", + icon = "fas fa-tshirt", + label = "Open Clothing Store", + distance = 3 + }, + ["barber"] = { + model = "s_m_m_hairdress_01", + scenario = "WORLD_HUMAN_STAND_MOBILE", + icon = "fas fa-scissors", + label = "Open Barber Shop", + distance = 3 + }, + ["tattoo"] = { + model = "u_m_y_tattoo_01", + scenario = "WORLD_HUMAN_STAND_MOBILE", + icon = "fas fa-pen", + label = "Open Tattoo Shop", + distance = 3 + }, + ["surgeon"] = { + model = "s_m_m_doctor_01", + scenario = "WORLD_HUMAN_STAND_MOBILE", + icon = "fas fa-scalpel", + label = "Open Surgeon", + distance = 3 + }, + ["clothingroom"] = { + model = "mp_g_m_pros_01", + scenario = "WORLD_HUMAN_STAND_MOBILE", + icon = "fas fa-sign-in-alt", + label = "Open Job / Gang Clothes Menu", + distance = 3 + }, + ["playeroutfitroom"] = { + model = "mp_g_m_pros_01", + scenario = "WORLD_HUMAN_STAND_MOBILE", + icon = "fas fa-sign-in-alt", + label = "Open Outfits Menu", + distance = 3 + }, +} + +Config.Stores = { + { + type = "clothing", + coords = vector4(1693.2, 4828.11, 42.07, 188.66), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, -- false => uses the size + rotation to create the zone | true => uses points to create the zone + showBlip = true, -- overrides the blip visibilty configured above for the group + --targetModel = "s_m_m_doctor_01", -- overrides the target ped configured for the group + --targetScenario = "" -- overrides the target scenario configure for the group + points = { + vector3(1686.9018554688, 4829.8330078125, 42.07), + vector3(1698.8566894531, 4831.4604492188, 42.07), + vector3(1700.2448730469, 4817.7734375, 42.07), + vector3(1688.3682861328, 4816.2954101562, 42.07) + } + }, + { + type = "clothing", + coords = vector4(-705.5, -149.22, 37.42, 122), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-719.86212158203, -147.83151245117, 37.42), + vector3(-709.10491943359, -141.53076171875, 37.42), + vector3(-699.94342041016, -157.44494628906, 37.42), + vector3(-710.68774414062, -163.64665222168, 37.42) + } + }, + { + type = "clothing", + coords = vector4(-1192.61, -768.4, 17.32, 216.6), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-1206.9552001953, -775.06304931641, 17.32), + vector3(-1190.6080322266, -764.03198242188, 17.32), + vector3(-1184.5672607422, -772.16949462891, 17.32), + vector3(-1199.24609375, -783.07928466797, 17.32) + } + }, + { + type = "clothing", + coords = vector4(425.91, -801.03, 29.49, 177.79), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(419.55020141602, -798.36547851562, 29.49), + vector3(431.61773681641, -798.31909179688, 29.49), + vector3(431.19784545898, -812.07122802734, 29.49), + vector3(419.140625, -812.03594970703, 29.49) + } + }, + { + type = "clothing", + coords = vector4(-168.73, -301.41, 39.73, 238.67), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-160.82145690918, -313.85919189453, 39.73), + vector3(-172.56513977051, -309.82858276367, 39.73), + vector3(-166.5775604248, -292.48077392578, 39.73), + vector3(-154.84906005859, -296.51647949219, 39.73) + } + }, + { + type = "clothing", + coords = vector4(75.39, -1398.28, 29.38, 6.73), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(81.406135559082, -1400.7791748047, 29.38), + vector3(69.335029602051, -1400.8251953125, 29.38), + vector3(69.754981994629, -1387.078125, 29.38), + vector3(81.500122070312, -1387.3002929688, 29.38) + } + }, + { + type = "clothing", + coords = vector4(-827.39, -1075.93, 11.33, 294.31), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-826.26251220703, -1082.6293945312, 11.33), + vector3(-832.27856445312, -1072.2819824219, 11.33), + vector3(-820.16442871094, -1065.7727050781, 11.33), + vector3(-814.08953857422, -1076.1878662109, 11.33) + } + }, + { + type = "clothing", + coords = vector4(-1445.86, -240.78, 49.82, 36.17), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-1448.4829101562, -226.39401245117, 49.82), + vector3(-1439.2475585938, -234.70428466797, 49.82), + vector3(-1451.5389404297, -248.33193969727, 49.82), + vector3(-1460.7554931641, -240.02815246582, 49.82) + } + }, + { + type = "clothing", + coords = vector4(9.22, 6515.74, 31.88, 131.27), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(6.4955291748047, 6522.205078125, 31.88), + vector3(14.737417221069, 6513.3872070312, 31.88), + vector3(4.3691010475159, 6504.3452148438, 31.88), + vector3(-3.5187695026398, 6513.1538085938, 31.88) + } + }, + { + type = "clothing", + coords = vector4(615.35, 2762.72, 42.09, 170.51), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(612.58312988281, 2747.2814941406, 42.09), + vector3(612.26214599609, 2767.0520019531, 42.09), + vector3(622.37548828125, 2767.7614746094, 42.09), + vector3(623.66833496094, 2749.5180664062, 42.09) + } + }, + { + type = "clothing", + coords = vector4(1191.61, 2710.91, 38.22, 269.96), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(1188.7923583984, 2704.2021484375, 38.22), + vector3(1188.7498779297, 2716.2661132812, 38.22), + vector3(1202.4979248047, 2715.8479003906, 38.22), + vector3(1202.3558349609, 2703.9294433594, 38.22) + } + }, + { + type = "clothing", + coords = vector4(-3171.32, 1043.56, 20.86, 334.3), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-3162.0075683594, 1056.7303466797, 20.86), + vector3(-3170.8247070312, 1039.0412597656, 20.86), + vector3(-3180.0979003906, 1043.1201171875, 20.86), + vector3(-3172.7292480469, 1059.8623046875, 20.86) + } + }, + { + type = "clothing", + coords = vector4(-1105.52, 2707.79, 19.11, 317.19), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-1103.3004150391, 2700.8195800781, 19.11), + vector3(-1111.3771972656, 2709.884765625, 19.11), + vector3(-1100.8548583984, 2718.638671875, 19.11), + vector3(-1093.1976318359, 2709.7365722656, 19.11) + } + }, + { + type = "clothing", + coords = vector4(-1119.24, -1440.6, 5.23, 300.5), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-1124.5535888672, -1444.5367431641, 5.23), + vector3(-1118.7023925781, -1441.0450439453, 5.23), + vector3(-1121.2891845703, -1434.8474121094, 5.23), + vector3(-1128.4727783203, -1439.8254394531, 5.23) + } + }, + { + type = "clothing", + coords = vector4(124.82, -224.36, 54.56, 335.41), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(133.60948181152, -210.31390380859, 54.56), + vector3(125.8349609375, -228.48097229004, 54.56), + vector3(116.3140335083, -225.02020263672, 54.56), + vector3(122.56930541992, -207.83396911621, 54.56) + } + }, + { + type = "barber", + coords = vector4(-814.22, -183.7, 37.57, 116.91), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-825.06127929688, -182.67497253418, 37.57), + vector3(-808.82415771484, -179.19134521484, 37.57), + vector3(-808.55261230469, -184.9720916748, 37.57), + vector3(-819.77899169922, -191.81831359863, 37.57) + } + }, + { + type = "barber", + coords = vector4(136.78, -1708.4, 29.29, 144.19), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(132.57008361816, -1710.5053710938, 29.29), + vector3(138.77899169922, -1702.6778564453, 29.29), + vector3(142.73052978516, -1705.6853027344, 29.29), + vector3(135.49719238281, -1712.9750976562, 29.29) + } + }, + { + type = "barber", + coords = vector4(-1282.57, -1116.84, 6.99, 89.25), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-1287.4735107422, -1115.4364013672, 6.99), + vector3(-1277.5638427734, -1115.1229248047, 6.99), + vector3(-1277.2469482422, -1120.1147460938, 6.99), + vector3(-1287.4561767578, -1119.2506103516, 6.99) + } + }, + { + type = "barber", + coords = vector4(1931.41, 3729.73, 32.84, 212.08), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(1932.4931640625, 3725.3374023438, 32.84), + vector3(1927.2720947266, 3733.7663574219, 32.84), + vector3(1931.4379882812, 3736.5327148438, 32.84), + vector3(1936.0697021484, 3727.2839355469, 32.84) + } + }, + { + type = "barber", + coords = vector4(1212.8, -472.9, 65.2, 60.94), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(1208.3327636719, -469.84338378906, 65.2), + vector3(1217.9066162109, -472.40216064453, 65.2), + vector3(1216.9870605469, -477.00939941406, 65.2), + vector3(1206.1077880859, -473.83499145508, 65.2) + } + }, + { + type = "barber", + coords = vector4(-32.9, -152.3, 56.1, 335.22), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-29.730783462524, -148.67495727539, 56.1), + vector3(-32.919719696045, -158.04254150391, 56.1), + vector3(-37.612594604492, -156.62759399414, 56.1), + vector3(-33.30192565918, -147.31649780273, 56.1) + } + }, + { + type = "barber", + coords = vector4(-278.1, 6228.5, 30.7, 49.32), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-280.29818725586, 6232.7265625, 30.7), + vector3(-273.06427001953, 6225.9692382812, 30.7), + vector3(-276.25280761719, 6222.4013671875, 30.7), + vector3(-282.98211669922, 6230.015625, 30.7) + } + }, + { + type = "tattoo", + coords = vector4(1322.6, -1651.9, 51.2, 42.47), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(1323.9360351562, -1649.2370605469, 51.2), + vector3(1328.0186767578, -1654.3087158203, 51.2), + vector3(1322.5780029297, -1657.7045898438, 51.2), + vector3(1319.2043457031, -1653.0885009766, 51.2) + } + }, + { + type = "tattoo", + coords = vector4(-1154.01, -1425.31, 4.95, 23.21), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-1152.7110595703, -1422.8382568359, 4.95), + vector3(-1149.0043945312, -1428.1975097656, 4.95), + vector3(-1154.6730957031, -1431.1898193359, 4.95), + vector3(-1157.7064208984, -1426.3433837891, 4.95) + } + }, + { + type = "tattoo", + coords = vector4(322.62, 180.34, 103.59, 156.2), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(319.28741455078, 179.9383392334, 103.59), + vector3(321.537109375, 186.04516601562, 103.59), + vector3(327.24526977539, 183.12303161621, 103.59), + vector3(325.01351928711, 177.8542175293, 103.59) + } + }, + { + type = "tattoo", + coords = vector4(-3169.52, 1074.86, 20.83, 253.29), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-3169.5861816406, 1072.3740234375, 20.83), + vector3(-3175.4802246094, 1075.0703125, 20.83), + vector3(-3172.2041015625, 1080.5860595703, 20.83), + vector3(-3167.076171875, 1078.0391845703, 20.83) + } + }, + { + type = "tattoo", + coords = vector4(1864.1, 3747.91, 33.03, 17.23), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(1860.2752685547, 3750.1608886719, 33.03), + vector3(1866.390625, 3752.8081054688, 33.03), + vector3(1868.6164550781, 3747.3562011719, 33.03), + vector3(1863.65234375, 3744.5034179688, 33.03) + } + }, + { + type = "tattoo", + coords = vector4(-294.24, 6200.12, 31.49, 195.72), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(-289.42239379883, 6198.68359375, 31.49), + vector3(-294.69515991211, 6194.5366210938, 31.49), + vector3(-298.23013305664, 6199.2451171875, 31.49), + vector3(-294.1501159668, 6203.2700195312, 31.49) + } + }, + { + type = "surgeon", + coords = vector4(298.78, -572.81, 43.26, 114.27), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(298.84417724609, -572.92205810547, 43.26), + vector3(296.39556884766, -575.65942382812, 43.26), + vector3(293.56317138672, -572.60675048828, 43.26), + vector3(296.28656005859, -570.330078125, 43.26) + } + } +} + + +Config.ClothingRooms = { + { + job = "police", + coords = vector4(454.91, -990.89, 30.69, 193.4), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(460.41918945312, -993.11444091797, 30.69), + vector3(449.39508056641, -993.60614013672, 30.69), + vector3(449.88696289062, -990.23779296875, 30.69), + vector3(450.97882080078, -989.71411132812, 30.69), + vector3(451.0325012207, -987.89904785156, 30.69), + vector3(453.47863769531, -987.76928710938, 30.69), + vector3(454.35513305664, -988.46459960938, 30.69), + vector3(460.4231262207, -987.94573974609, 30.69) + } + } +} + + +Config.PlayerOutfitRooms = { + -- Sample outfit room config +--[[ { + job = "police", + coords = vector4(287.28, -573.41, 43.16, 79.61), + size = vector3(4, 4, 4), + rotation = 45, + usePoly = false, + points = { + vector3(284.83, -574.01, 43.16), + vector3(286.33, -570.03, 43.16), + vector3(290.33, -571.74, 43.16), + vector3(289.0, -574.75, 43.16) + }, + citizenIDs = { + "BHH65156" + } + }]]-- +} + +Config.Outfits = { + ["police"] = { + ["Male"] = { + { + name = "Short Sleeve", + outfitData = { + ["pants"] = {item = 24, texture = 0}, -- Pants + ["arms"] = {item = 19, texture = 0}, -- Arms + ["t-shirt"] = {item = 58, texture = 0}, -- T Shirt + ["vest"] = {item = 0, texture = 0}, -- Body Vest + ["torso2"] = {item = 55, texture = 0}, -- Jacket + ["shoes"] = {item = 51, texture = 0}, -- Shoes + ["accessory"] = {item = 0, texture = 0}, -- Neck Accessory + ["bag"] = {item = 0, texture = 0}, -- Bag + ["hat"] = {item = -1, texture = -1}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 0, texture = 0} -- Mask + }, + grades = {0, 1, 2, 3, 4}, + }, + { + name = "Trooper Tan", + outfitData = { + ["pants"] = {item = 24, texture = 0}, -- Pants + ["arms"] = {item = 20, texture = 0}, -- Arms + ["t-shirt"] = {item = 58, texture = 0}, -- T Shirt + ["vest"] = {item = 0, texture = 0}, -- Body Vest + ["torso2"] = {item = 317, texture = 3}, -- Jacket + ["shoes"] = {item = 51, texture = 0}, -- Shoes + ["accessory"] = {item = 0, texture = 0}, -- Neck Accessory + ["bag"] = {item = 0, texture = 0}, -- Bag + ["hat"] = {item = 58, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 0, texture = 0} -- Mask + }, + grades = {0, 1, 2, 3, 4}, + }, + { + name = "Long Sleeve", + outfitData = { + ["pants"] = {item = 24, texture = 0}, -- Pants + ["arms"] = {item = 20, texture = 0}, -- Arms + ["t-shirt"] = {item = 58, texture = 0}, -- T Shirt + ["vest"] = {item = 0, texture = 0}, -- Body Vest + ["torso2"] = {item = 317, texture = 0}, -- Jacket + ["shoes"] = {item = 51, texture = 0}, -- Shoes + ["accessory"] = {item = 0, texture = 0}, -- Neck Accessory + ["bag"] = {item = 0, texture = 0}, -- Bag + ["hat"] = {item = -1, texture = -1}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 0, texture = 0} -- Mask + }, + grades = {1, 2, 3, 4}, + }, + { + name = "Trooper Black", + outfitData = { + ["pants"] = {item = 24, texture = 0}, -- Pants + ["arms"] = {item = 20, texture = 0}, -- Arms + ["t-shirt"] = {item = 58, texture = 0}, -- T Shirt + ["vest"] = {item = 0, texture = 0}, -- Body Vest + ["torso2"] = {item = 317, texture = 8}, -- Jacket + ["shoes"] = {item = 51, texture = 0}, -- Shoes + ["accessory"] = {item = 0, texture = 0}, -- Neck Accessory + ["bag"] = {item = 0, texture = 0}, -- Bag + ["hat"] = {item = 58, texture = 3}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 0, texture = 0} -- Mask + }, + grades = {2, 3, 4}, + }, + { + name = "SWAT", + outfitData = { + ["pants"] = {item = 130, texture = 1}, -- Pants + ["arms"] = {item = 172, texture = 0}, -- Arms + ["t-shirt"] = {item = 15, texture = 0}, -- T Shirt + ["vest"] = {item = 15, texture = 2}, -- Body Vest + ["torso2"] = {item = 336, texture = 3}, -- Jacket + ["shoes"] = {item = 24, texture = 0}, -- Shoes + ["accessory"] = {item = 133, texture = 0}, -- Neck Accessory + ["hat"] = {item = 150, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 52, texture = 0} -- Mask + }, + grades = {3, 4}, + } + }, + ["Female"] = { + { + name = "Short Sleeve", + outfitData = { + ["pants"] = {item = 133, texture = 0}, -- Pants + ["arms"] = {item = 31, texture = 0}, -- Arms + ["t-shirt"] = {item = 35, texture = 0}, -- T Shirt + ["vest"] = {item = 34, texture = 0}, -- Body Vest + ["torso2"] = {item = 48, texture = 0}, -- Jacket + ["shoes"] = {item = 52, texture = 0}, -- Shoes + ["accessory"] = {item = 0, texture = 0}, -- Neck Accessory + ["bag"] = {item = 0, texture = 0}, -- Bag + ["hat"] = {item = 0, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 0, texture = 0} -- Mask + }, + grades = {0, 1, 2, 3, 4}, + }, + { + name = "Trooper Tan", + outfitData = { + ["pants"] = {item = 133, texture = 0}, -- Pants + ["arms"] = {item = 31, texture = 0}, -- Arms + ["t-shirt"] = {item = 35, texture = 0}, -- T Shirt + ["vest"] = {item = 34, texture = 0}, -- Body Vest + ["torso2"] = {item = 327, texture = 3}, -- Jacket + ["shoes"] = {item = 52, texture = 0}, -- Shoes + ["accessory"] = {item = 0, texture = 0}, -- Neck Accessory + ["bag"] = {item = 0, texture = 0}, -- Bag + ["hat"] = {item = 0, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 0, texture = 0} -- Mask + }, + grades = {0, 1, 2, 3, 4}, + }, + { + name = "Long Sleeve", + outfitData = { + ["pants"] = {item = 133, texture = 0}, -- Pants + ["arms"] = {item = 31, texture = 0}, -- Arms + ["t-shirt"] = {item = 35, texture = 0}, -- T Shirt + ["vest"] = {item = 34, texture = 0}, -- Body Vest + ["torso2"] = {item = 327, texture = 0}, -- Jacket + ["shoes"] = {item = 52, texture = 0}, -- Shoes + ["accessory"] = {item = 0, texture = 0}, -- Neck Accessory + ["bag"] = {item = 0, texture = 0}, -- Bag + ["hat"] = {item = 0, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 0, texture = 0} -- Mask + }, + grades = {1, 2, 3, 4}, + }, + { + name = "Trooper Black", + outfitData = { + ["pants"] = {item = 133, texture = 0}, -- Pants + ["arms"] = {item = 31, texture = 0}, -- Arms + ["t-shirt"] = {item = 35, texture = 0}, -- T Shirt + ["vest"] = {item = 34, texture = 0}, -- Body Vest + ["torso2"] = {item = 327, texture = 8}, -- Jacket + ["shoes"] = {item = 52, texture = 0}, -- Shoes + ["accessory"] = {item = 0, texture = 0}, -- Neck Accessory + ["bag"] = {item = 0, texture = 0}, -- Bag + ["hat"] = {item = 0, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 0, texture = 0} -- Mask + }, + grades = {2, 3, 4}, + }, + { + name = "SWAT", + outfitData = { + ["pants"] = {item = 135, texture = 1}, -- Pants + ["arms"] = {item = 213, texture = 0}, -- Arms + ["t-shirt"] = {item = 0, texture = 0}, -- T Shirt + ["vest"] = {item = 17, texture = 2}, -- Body Vest + ["torso2"] = {item = 327, texture = 8}, -- Jacket + ["shoes"] = {item = 52, texture = 0}, -- Shoes + ["accessory"] = {item = 102, texture = 0}, -- Neck Accessory + ["bag"] = {item = 0, texture = 0}, -- Bag + ["hat"] = {item = 149, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["mask"] = {item = 35, texture = 0} -- Mask + }, + grades = {3, 4}, + } + } + }, + ["realestate"] = { + ["Male"] = { + { + -- Outfits + name = "Worker", + outfitData = { + ["pants"] = { item = 28, texture = 0}, -- Pants + ["arms"] = { item = 1, texture = 0}, -- Arms + ["t-shirt"] = { item = 31, texture = 0}, -- T Shirt + ["vest"] = { item = 0, texture = 0}, -- Body Vest + ["torso2"] = { item = 294, texture = 0}, -- Jacket + ["shoes"] = { item = 10, texture = 0}, -- Shoes + ["accessory"] = { item = 0, texture = 0}, -- Neck Accessory + ["bag"] = { item = 0, texture = 0}, -- Bag + ["hat"] = { item = 12, texture = -1}, -- Hat + ["glass"] = { item = 0, texture = 0}, -- Glasses + ["mask"] = { item = 0, texture = 0}, -- Mask + }, + grades = {0, 1, 2, 3, 4}, + } + }, + ["Female"] = { + { + name = "Worker", + outfitData = { + ["pants"] = { item = 57, texture = 2}, -- Pants + ["arms"] = { item = 0, texture = 0}, -- Arms + ["t-shirt"] = { item = 34, texture = 0}, -- T Shirt + ["vest"] = { item = 0, texture = 0}, -- Body Vest + ["torso2"] = { item = 105, texture = 7}, -- Jacket + ["shoes"] = { item = 8, texture = 5}, -- Shoes + ["accessory"] = { item = 11, texture = 3}, -- Neck Accessory + ["bag"] = { item = 0, texture = 0}, -- Bag + ["hat"] = { item = -1, texture = -1}, -- Hat + ["glass"] = { item = 0, texture = 0}, -- Glasses + ["mask"] = { item = 0, texture = 0}, -- Mask + }, + grades = {0, 1, 2, 3, 4}, + } + } + }, + ["ambulance"] = { + ["Male"] = { + { + name = "T-Shirt", + outfitData = { + ["arms"] = {item = 85, texture = 0}, -- Arms + ["t-shirt"] = {item = 129, texture = 0}, -- T-Shirt + ["torso2"] = {item = 250, texture = 0}, -- Jackets + ["vest"] = {item = 0, texture = 0}, -- Vest + ["decals"] = {item = 58, texture = 0}, -- Decals + ["accessory"] = {item = 127, texture = 0}, -- Neck + ["bag"] = {item = 0, texture = 0}, -- Bag + ["pants"] = {item = 96, texture = 0}, -- Pants + ["shoes"] = {item = 54, texture = 0}, -- Shoes + ["mask"] = {item = 121, texture = 0}, -- Mask + ["hat"] = {item = 122, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["ear"] = {item = 0, texture = 0} -- Ear accessories + }, + grades = {0, 1, 2, 3, 4}, + }, + { + name = "Polo", + outfitData = { + ["arms"] = {item = 90, texture = 0}, -- Arms + ["t-shirt"] = {item = 15, texture = 0}, -- T-Shirt + ["torso2"] = {item = 249, texture = 0}, -- Jackets + ["vest"] = {item = 0, texture = 0}, -- Vest + ["decals"] = {item = 57, texture = 0}, -- Decals + ["accessory"] = {item = 126, texture = 0}, -- Neck + ["bag"] = {item = 0, texture = 0}, -- Bag + ["pants"] = {item = 96, texture = 0}, -- Pants + ["shoes"] = {item = 54, texture = 0}, -- Shoes + ["mask"] = {item = 121, texture = 0}, -- Mask + ["hat"] = {item = 122, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["ear"] = {item = 0, texture = 0} -- Ear accessories + }, + grades = {2, 3, 4}, + }, + { + name = "Doctor", + outfitData = { + ["arms"] = {item = 93, texture = 0}, -- Arms + ["t-shirt"] = {item = 32, texture = 3}, -- T-Shirt + ["torso2"] = {item = 31, texture = 7}, -- Jackets + ["vest"] = {item = 0, texture = 0}, -- Vest + ["decals"] = {item = 0, texture = 0}, -- Decals + ["accessory"] = {item = 126, texture = 0}, -- Neck + ["bag"] = {item = 0, texture = 0}, -- Bag + ["pants"] = {item = 28, texture = 0}, -- Pants + ["shoes"] = {item = 10, texture = 0}, -- Shoes + ["mask"] = {item = 0, texture = 0}, -- Mask + ["hat"] = {item = -1, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["ear"] = {item = 0, texture = 0} -- Ear accessories + }, + grades = {3, 4}, + } + }, + ["Female"] = { + { + name = "T-Shirt", + outfitData = { + ["arms"] = {item = 109, texture = 0}, -- Arms + ["t-shirt"] = {item = 159, texture = 0}, -- T-Shirt + ["torso2"] = {item = 258, texture = 0}, -- Jackets + ["vest"] = {item = 0, texture = 0}, -- Vest + ["decals"] = {item = 66, texture = 0}, -- Decals + ["accessory"] = {item = 97, texture = 0}, -- Neck + ["bag"] = {item = 0, texture = 0}, -- Bag + ["pants"] = {item = 99, texture = 0}, -- Pants + ["shoes"] = {item = 55, texture = 0}, -- Shoes + ["mask"] = {item = 121, texture = 0}, -- Mask + ["hat"] = {item = 121, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["ear"] = {item = 0, texture = 0} -- Ear accessories + }, + grades = {0, 1, 2, 3, 4}, + }, + { + name = "Polo", + outfitData = { + ["arms"] = {item = 105, texture = 0}, -- Arms + ["t-shirt"] = {item = 13, texture = 0}, -- T-Shirt + ["torso2"] = {item = 257, texture = 0}, -- Jackets + ["vest"] = {item = 0, texture = 0}, -- Vest + ["decals"] = {item = 65, texture = 0}, -- Decals + ["accessory"] = {item = 96, texture = 0}, -- Neck + ["bag"] = {item = 0, texture = 0}, -- Bag + ["pants"] = {item = 99, texture = 0}, -- Pants + ["shoes"] = {item = 55, texture = 0}, -- Shoes + ["mask"] = {item = 121, texture = 0}, -- Mask + ["hat"] = {item = 121, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["ear"] = {item = 0, texture = 0} -- Ear accessories + }, + grades = {2, 3, 4}, + }, + { + name = "Doctor", + outfitData = { + ["arms"] = {item = 105, texture = 0}, -- Arms + ["t-shirt"] = {item = 39, texture = 3}, -- T-Shirt + ["torso2"] = {item = 7, texture = 1}, -- Jackets + ["vest"] = {item = 0, texture = 0}, -- Vest + ["decals"] = {item = 0, texture = 0}, -- Decals + ["accessory"] = {item = 96, texture = 0}, -- Neck + ["bag"] = {item = 0, texture = 0}, -- Bag + ["pants"] = {item = 34, texture = 0}, -- Pants + ["shoes"] = {item = 29, texture = 0}, -- Shoes + ["mask"] = {item = 0, texture = 0}, -- Mask + ["hat"] = {item = -1, texture = 0}, -- Hat + ["glass"] = {item = 0, texture = 0}, -- Glasses + ["ear"] = {item = 0, texture = 0} -- Ear accessories + }, + grades = {3, 4}, + } + } + } +} + +Config.InitialPlayerClothes = { + Male = { + Model = "mp_m_freemode_01", + Components = { + { + component_id = 0, -- Face + drawable = 0, + texture = 0 + }, + { + component_id = 1, -- Mask + drawable = 0, + texture = 0 + }, + { + component_id = 2, -- Hair + drawable = 0, + texture = 0 + }, + { + component_id = 3, -- Upper Body + drawable = 0, + texture = 0 + }, + { + component_id = 4, -- Lower Body + drawable = 0, + texture = 0 + }, + { + component_id = 5, -- Bag + drawable = 0, + texture = 0 + }, + { + component_id = 6, -- Shoes + drawable = 0, + texture = 0 + }, + { + component_id = 7, -- Scarf & Chains + drawable = 0, + texture = 0 + }, + { + component_id = 8, -- Shirt + drawable = 0, + texture = 0 + }, + { + component_id = 9, -- Body Armor + drawable = 0, + texture = 0 + }, + { + component_id = 10, -- Decals + drawable = 0, + texture = 0 + }, + { + component_id = 11, -- Jacket + drawable = 0, + texture = 0 + } + }, + Props = { + { + prop_id = 0, -- Hat + drawable = -1, + texture = -1 + }, + { + prop_id = 1, -- Glasses + drawable = -1, + texture = -1 + }, + { + prop_id = 2, -- Ear + drawable = -1, + texture = -1 + }, + { + prop_id = 6, -- Watch + drawable = -1, + texture = -1 + }, + { + prop_id = 7, -- Bracelet + drawable = -1, + texture = -1 + } + }, + Hair = { + color = 0, + highlight = 0, + style = 0, + texture = 0 + } + }, + Female = { + Model = "mp_f_freemode_01", + Components = { + { + component_id = 0, -- Face + drawable = 0, + texture = 0 + }, + { + component_id = 1, -- Mask + drawable = 0, + texture = 0 + }, + { + component_id = 2, -- Hair + drawable = 0, + texture = 0 + }, + { + component_id = 3, -- Upper Body + drawable = 0, + texture = 0 + }, + { + component_id = 4, -- Lower Body + drawable = 0, + texture = 0 + }, + { + component_id = 5, -- Bag + drawable = 0, + texture = 0 + }, + { + component_id = 6, -- Shoes + drawable = 0, + texture = 0 + }, + { + component_id = 7, -- Scarf & Chains + drawable = 0, + texture = 0 + }, + { + component_id = 8, -- Shirt + drawable = 0, + texture = 0 + }, + { + component_id = 9, -- Body Armor + drawable = 0, + texture = 0 + }, + { + component_id = 10, -- Decals + drawable = 0, + texture = 0 + }, + { + component_id = 11, -- Jacket + drawable = 0, + texture = 0 + } + }, + Props = { + { + prop_id = 0, -- Hat + drawable = -1, + texture = -1 + }, + { + prop_id = 1, -- Glasses + drawable = -1, + texture = -1 + }, + { + prop_id = 2, -- Ear + drawable = -1, + texture = -1 + }, + { + prop_id = 6, -- Watch + drawable = -1, + texture = -1 + }, + { + prop_id = 7, -- Bracelet + drawable = -1, + texture = -1 + } + }, + Hair = { + color = 0, + highlight = 0, + style = 0, + texture = 0 + } + } +} diff --git a/resources/[core]/illenium-appearance/shared/framework/esx/util.lua b/resources/[core]/illenium-appearance/shared/framework/esx/util.lua new file mode 100644 index 0000000..9b710af --- /dev/null +++ b/resources/[core]/illenium-appearance/shared/framework/esx/util.lua @@ -0,0 +1,96 @@ +if not Framework.ESX() then return end + +function Framework.ConvertComponents(oldSkin, components) + return { + { + component_id = 0, + drawable = (components and components[1].drawable) or 0, + texture = (components and components[1].texture) or 0 + }, + { + component_id = 1, + drawable = oldSkin.mask_1 or (components and components[2].drawable) or 0, + texture = oldSkin.mask_2 or (components and components[2].texture) or 0 + }, + { + component_id = 2, + drawable = (components and components[3].drawable) or 0, + texture = (components and components[3].texture) or 0 + }, + { + component_id = 3, + drawable = oldSkin.arms or (components and components[4].drawable) or 0, + texture = oldSkin.arms_2 or (components and components[4].texture) or 0, + }, + { + component_id = 4, + drawable = oldSkin.pants_1 or (components and components[5].drawable) or 0, + texture = oldSkin.pants_2 or (components and components[5].texture) or 0 + }, + { + component_id = 5, + drawable = oldSkin.bags_1 or (components and components[6].drawable) or 0, + texture = oldSkin.bags_2 or (components and components[6].texture) or 0 + }, + { + component_id = 6, + drawable = oldSkin.shoes_1 or (components and components[7].drawable) or 0, + texture = oldSkin.shoes_2 or (components and components[7].texture) or 0 + }, + { + component_id = 7, + drawable = oldSkin.chain_1 or (components and components[8].drawable) or 0, + texture = oldSkin.chain_2 or (components and components[8].texture) or 0 + }, + { + component_id = 8, + drawable = oldSkin.tshirt_1 or (components and components[9].drawable) or 0, + texture = oldSkin.tshirt_2 or (components and components[9].texture) or 0 + }, + { + component_id = 9, + drawable = oldSkin.bproof_1 or (components and components[10].drawable) or 0, + texture = oldSkin.bproof_2 or (components and components[10].texture) or 0 + }, + { + component_id = 10, + drawable = oldSkin.decals_1 or (components and components[11].drawable) or 0, + texture = oldSkin.decals_2 or (components and components[11].texture) or 0 + }, + { + component_id = 11, + drawable = oldSkin.torso_1 or (components and components[12].drawable) or 0, + texture = oldSkin.torso_2 or (components and components[12].texture) or 0 + } + } +end + +function Framework.ConvertProps(oldSkin, props) + return { + { + texture = oldSkin.helmet_2 or (props and props[1].texture) or -1, + drawable = oldSkin.helmet_1 or (props and props[1].drawable) or -1, + prop_id = 0 + }, + { + texture = oldSkin.glasses_2 or (props and props[2].texture) or -1, + drawable = oldSkin.glasses_1 or (props and props[2].drawable) or -1, + prop_id = 1 + }, + { + texture = oldSkin.ears_2 or (props and props[3].texture) or -1, + drawable = oldSkin.ears_1 or (props and props[3].drawable) or -1, + prop_id = 2 + }, + { + texture = oldSkin.watches_2 or (props and props[4].texture) or -1, + drawable = oldSkin.watches_1 or (props and props[4].drawable) or -1, + prop_id = 6 + }, + { + texture = oldSkin.bracelets_2 or (props and props[5].texture) or -1, + drawable = oldSkin.bracelets_1 or (props and props[5].drawable) or -1, + prop_id = 7 + } + } +end diff --git a/resources/[core]/illenium-appearance/shared/framework/framework.lua b/resources/[core]/illenium-appearance/shared/framework/framework.lua new file mode 100644 index 0000000..fb84f77 --- /dev/null +++ b/resources/[core]/illenium-appearance/shared/framework/framework.lua @@ -0,0 +1,13 @@ +Framework = {} + +function Framework.ESX() + return GetResourceState("es_extended") ~= "missing" +end + +function Framework.QBCore() + return GetResourceState("qb-core") ~= "missing" +end + +function Framework.Ox() + return GetResourceState("ox_core") ~= "missing" +end diff --git a/resources/[core]/illenium-appearance/shared/peds.lua b/resources/[core]/illenium-appearance/shared/peds.lua new file mode 100644 index 0000000..b20d3cf --- /dev/null +++ b/resources/[core]/illenium-appearance/shared/peds.lua @@ -0,0 +1,1059 @@ +Config.Peds = { + pedConfig = { + { + peds = { + "a_c_boar", + "a_c_boar_02", + "a_c_cat_01", + "a_c_chickenhawk", + "a_c_chimp", + "a_c_chimp_02", + "a_c_chop", + "a_c_chop_02", + "a_c_cormorant", + "a_c_cow", + "a_c_coyote", + "a_c_coyote_02", + "a_c_crow", + "a_c_deer", + "a_c_deer_02", + "a_c_dolphin", + "a_c_fish", + "a_c_hen", + "a_c_humpback", + "a_c_husky", + "a_c_killerwhale", + "a_c_mtlion", + "a_c_mtlion_02", + "a_c_panther", + "a_c_pig", + "a_c_pigeon", + "a_c_poodle", + "a_c_pug", + "a_c_pug_02", + "a_c_rabbit_01", + "a_c_rabbit_02", + "a_c_rat", + "a_c_retriever", + "a_c_rhesus", + "a_c_rottweiler", + "a_c_seagull", + "a_c_sharkhammer", + "a_c_sharktiger", + "a_c_shepherd", + "a_c_stingray", + "a_c_westy", + "a_f_m_beach_01", + "a_f_m_bevhills_01", + "a_f_m_bevhills_02", + "a_f_m_bodybuild_01", + "a_f_m_business_02", + "a_f_m_downtown_01", + "a_f_m_eastsa_01", + "a_f_m_eastsa_02", + "a_f_m_fatbla_01", + "a_f_m_fatcult_01", + "a_f_m_fatwhite_01", + "a_f_m_genbiker_01", + "a_f_m_genstreet_01", + "a_f_m_ktown_01", + "a_f_m_ktown_02", + "a_f_m_prolhost_01", + "a_f_m_salton_01", + "a_f_m_skidrow_01", + "a_f_m_soucent_01", + "a_f_m_soucent_02", + "a_f_m_soucentmc_01", + "a_f_m_tourist_01", + "a_f_m_tramp_01", + "a_f_m_trampbeac_01", + "a_f_o_genstreet_01", + "a_f_o_indian_01", + "a_f_o_ktown_01", + "a_f_o_salton_01", + "a_f_o_soucent_01", + "a_f_o_soucent_02", + "a_f_y_beach_01", + "a_f_y_beach_02", + "a_f_y_bevhills_01", + "a_f_y_bevhills_02", + "a_f_y_bevhills_03", + "a_f_y_bevhills_04", + "a_f_y_bevhills_05", + "a_f_y_business_01", + "a_f_y_business_02", + "a_f_y_business_03", + "a_f_y_business_04", + "a_f_y_carclub_01", + "a_f_y_clubcust_01", + "a_f_y_clubcust_02", + "a_f_y_clubcust_03", + "a_f_y_clubcust_04", + "a_f_y_eastsa_01", + "a_f_y_eastsa_02", + "a_f_y_eastsa_03", + "a_f_y_epsilon_01", + "a_f_y_femaleagent", + "a_f_y_fitness_01", + "a_f_y_fitness_02", + "a_f_y_gencaspat_01", + "a_f_y_genhot_01", + "a_f_y_golfer_01", + "a_f_y_hiker_01", + "a_f_y_hippie_01", + "a_f_y_hipster_01", + "a_f_y_hipster_02", + "a_f_y_hipster_03", + "a_f_y_hipster_04", + "a_f_y_indian_01", + "a_f_y_juggalo_01", + "a_f_y_runner_01", + "a_f_y_rurmeth_01", + "a_f_y_scdressy_01", + "a_f_y_skater_01", + "a_f_y_smartcaspat_01", + "a_f_y_soucent_01", + "a_f_y_soucent_02", + "a_f_y_soucent_03", + "a_f_y_studioparty_01", + "a_f_y_studioparty_02", + "a_f_y_tennis_01", + "a_f_y_topless_01", + "a_f_y_tourist_01", + "a_f_y_tourist_02", + "a_f_y_vinewood_01", + "a_f_y_vinewood_02", + "a_f_y_vinewood_03", + "a_f_y_vinewood_04", + "a_f_y_yoga_01", + "a_m_m_acult_01", + "a_m_m_afriamer_01", + "a_m_m_bankrobber_01", + "a_m_m_beach_01", + "a_m_m_beach_02", + "a_m_m_bevhills_01", + "a_m_m_bevhills_02", + "a_m_m_business_01", + "a_m_m_eastsa_01", + "a_m_m_eastsa_02", + "a_m_m_farmer_01", + "a_m_m_fatlatin_01", + "a_m_m_genbiker_01", + "a_m_m_genfat_01", + "a_m_m_genfat_02", + "a_m_m_golfer_01", + "a_m_m_hasjew_01", + "a_m_m_hillbilly_01", + "a_m_m_hillbilly_02", + "a_m_m_indian_01", + "a_m_m_ktown_01", + "a_m_m_malibu_01", + "a_m_m_mexcntry_01", + "a_m_m_mexlabor_01", + "a_m_m_mlcrisis_01", + "a_m_m_og_boss_01", + "a_m_m_paparazzi_01", + "a_m_m_polynesian_01", + "a_m_m_prolhost_01", + "a_m_m_rurmeth_01", + "a_m_m_salton_01", + "a_m_m_salton_02", + "a_m_m_salton_03", + "a_m_m_salton_04", + "a_m_m_skater_01", + "a_m_m_skidrow_01", + "a_m_m_socenlat_01", + "a_m_m_soucent_01", + "a_m_m_soucent_02", + "a_m_m_soucent_03", + "a_m_m_soucent_04", + "a_m_m_stlat_02", + "a_m_m_studioparty_01", + "a_m_m_tennis_01", + "a_m_m_tourist_01", + "a_m_m_tramp_01", + "a_m_m_trampbeac_01", + "a_m_m_tranvest_01", + "a_m_m_tranvest_02", + "a_m_o_acult_01", + "a_m_o_acult_02", + "a_m_o_beach_01", + "a_m_o_beach_02", + "a_m_o_genstreet_01", + "a_m_o_ktown_01", + "a_m_o_salton_01", + "a_m_o_soucent_01", + "a_m_o_soucent_02", + "a_m_o_soucent_03", + "a_m_o_tramp_01", + "a_m_y_acult_01", + "a_m_y_acult_02", + "a_m_y_beach_01", + "a_m_y_beach_02", + "a_m_y_beach_03", + "a_m_y_beach_04", + "a_m_y_beachvesp_01", + "a_m_y_beachvesp_02", + "a_m_y_bevhills_01", + "a_m_y_bevhills_02", + "a_m_y_breakdance_01", + "a_m_y_busicas_01", + "a_m_y_business_01", + "a_m_y_business_02", + "a_m_y_business_03", + "a_m_y_carclub_01", + "a_m_y_clubcust_01", + "a_m_y_clubcust_02", + "a_m_y_clubcust_03", + "a_m_y_clubcust_04", + "a_m_y_cyclist_01", + "a_m_y_dhill_01", + "a_m_y_downtown_01", + "a_m_y_eastsa_01", + "a_m_y_eastsa_02", + "a_m_y_epsilon_01", + "a_m_y_epsilon_02", + "a_m_y_gay_01", + "a_m_y_gay_02", + "a_m_y_gencaspat_01", + "a_m_y_genstreet_01", + "a_m_y_genstreet_02", + "a_m_y_golfer_01", + "a_m_y_hasjew_01", + "a_m_y_hiker_01", + "a_m_y_hippy_01", + "a_m_y_hipster_01", + "a_m_y_hipster_02", + "a_m_y_hipster_03", + "a_m_y_indian_01", + "a_m_y_jetski_01", + "a_m_y_juggalo_01", + "a_m_y_ktown_01", + "a_m_y_ktown_02", + "a_m_y_latino_01", + "a_m_y_methhead_01", + "a_m_y_mexthug_01", + "a_m_y_motox_01", + "a_m_y_motox_02", + "a_m_y_musclbeac_01", + "a_m_y_musclbeac_02", + "a_m_y_polynesian_01", + "a_m_y_roadcyc_01", + "a_m_y_runner_01", + "a_m_y_runner_02", + "a_m_y_salton_01", + "a_m_y_skater_01", + "a_m_y_skater_02", + "a_m_y_smartcaspat_01", + "a_m_y_soucent_01", + "a_m_y_soucent_02", + "a_m_y_soucent_03", + "a_m_y_soucent_04", + "a_m_y_stbla_01", + "a_m_y_stbla_02", + "a_m_y_stlat_01", + "a_m_y_studioparty_01", + "a_m_y_stwhi_01", + "a_m_y_stwhi_02", + "a_m_y_sunbathe_01", + "a_m_y_surfer_01", + "a_m_y_tattoocust_01", + "a_m_y_vindouche_01", + "a_m_y_vinewood_01", + "a_m_y_vinewood_02", + "a_m_y_vinewood_03", + "a_m_y_vinewood_04", + "a_m_y_yoga_01", + "cs_amandatownley", + "cs_andreas", + "cs_ashley", + "cs_bankman", + "cs_barry", + "cs_beverly", + "cs_brad", + "cs_bradcadaver", + "cs_carbuyer", + "cs_casey", + "cs_chengsr", + "cs_chrisformage", + "cs_clay", + "cs_dale", + "cs_davenorton", + "cs_debra", + "cs_denise", + "cs_devin", + "cs_dom", + "cs_dreyfuss", + "cs_drfriedlander", + "cs_drfriedlander_02", + "cs_fabien", + "cs_fbisuit_01", + "cs_floyd", + "cs_guadalope", + "cs_gurk", + "cs_hunter", + "cs_janet", + "cs_jewelass", + "cs_jimmyboston", + "cs_jimmydisanto", + "cs_jimmydisanto2", + "cs_joeminuteman", + "cs_johnnyklebitz", + "cs_josef", + "cs_josh", + "cs_karen_daniels", + "cs_lamardavis", + "cs_lamardavis_02", + "cs_lazlow", + "cs_lazlow_2", + "cs_lestercrest", + "cs_lestercrest_2", + "cs_lestercrest_3", + "cs_lifeinvad_01", + "cs_magenta", + "cs_manuel", + "cs_marnie", + "cs_martinmadrazo", + "cs_maryann", + "cs_michelle", + "cs_milton", + "cs_molly", + "cs_movpremf_01", + "cs_movpremmale", + "cs_mrk", + "cs_mrs_thornhill", + "cs_mrsphillips", + "cs_natalia", + "cs_nervousron", + "cs_nervousron_02", + "cs_nigel", + "cs_old_man1a", + "cs_old_man2", + "cs_omega", + "cs_orleans", + "cs_paper", + "cs_patricia", + "cs_patricia_02", + "cs_priest", + "cs_prolsec_02", + "cs_russiandrunk", + "cs_siemonyetarian", + "cs_solomon", + "cs_stevehains", + "cs_stretch", + "cs_tanisha", + "cs_taocheng", + "cs_taocheng2", + "cs_taostranslator", + "cs_taostranslator2", + "cs_tenniscoach", + "cs_terry", + "cs_tom", + "cs_tomepsilon", + "cs_tracydisanto", + "cs_wade", + "cs_zimbor", + "csb_abigail", + "csb_agatha", + "csb_agent", + "csb_alan", + "csb_anita", + "csb_anton", + "csb_ary", + "csb_ary_02", + "csb_avery", + "csb_avischwartzman_02", + "csb_avischwartzman_03", + "csb_avon", + "csb_ballas_leader", + "csb_ballasog", + "csb_billionaire", + "csb_bogdan", + "csb_bride", + "csb_brucie2", + "csb_bryony", + "csb_burgerdrug", + "csb_callgirl_01", + "csb_callgirl_02", + "csb_car3guy1", + "csb_car3guy2", + "csb_celeb_01", + "csb_charlie_reed", + "csb_chef", + "csb_chef_03", + "csb_chef2", + "csb_chin_goon", + "csb_cletus", + "csb_cop", + "csb_customer", + "csb_dax", + "csb_denise_friend", + "csb_dix", + "csb_djblamadon", + "csb_drugdealer", + "csb_englishdave", + "csb_englishdave_02", + "csb_fos_rep", + "csb_g", + "csb_georginacheng", + "csb_golfer_a", + "csb_golfer_b", + "csb_groom", + "csb_grove_str_dlr", + "csb_gustavo", + "csb_hao", + "csb_hao_02", + "csb_helmsmanpavel", + "csb_huang", + "csb_hugh", + "csb_imani", + "csb_imran", + "csb_isldj_00", + "csb_isldj_01", + "csb_isldj_02", + "csb_isldj_03", + "csb_isldj_04", + "csb_jackhowitzer", + "csb_jamalamir", + "csb_janitor", + "csb_jio", + "csb_jio_02", + "csb_johnny_guns", + "csb_juanstrickler", + "csb_labrat", + "csb_luchadora", + "csb_maude", + "csb_miguelmadrazo", + "csb_mimi", + "csb_mjo", + "csb_mjo_02", + "csb_money", + "csb_moodyman_02", + "csb_mp_agent14", + "csb_mrs_r", + "csb_musician_00", + "csb_mweather", + "csb_ortega", + "csb_oscar", + "csb_paige", + "csb_party_promo", + "csb_popov", + "csb_porndudes", + "csb_prologuedriver", + "csb_prolsec", + "csb_ramp_gang", + "csb_ramp_hic", + "csb_ramp_hipster", + "csb_ramp_marine", + "csb_ramp_mex", + "csb_rashcosvki", + "csb_reporter", + "csb_req_officer", + "csb_roccopelosi", + "csb_screen_writer", + "csb_security_a", + "csb_sessanta", + "csb_sol", + "csb_soundeng_00", + "csb_sss", + "csb_stripper_01", + "csb_stripper_02", + "csb_talcc", + "csb_talmm", + "csb_thornton", + "csb_tomcasino", + "csb_tonya", + "csb_tonyprince", + "csb_trafficwarden", + "csb_undercover", + "csb_vagos_leader", + "csb_vagspeak", + "csb_vernon", + "csb_vincent", + "csb_vincent_2", + "csb_vincent_4", + "csb_wendy", + "csb_yusufamir", + "g_f_importexport_01", + "g_f_m_fooliganz_01", + "g_f_y_ballas_01", + "g_f_y_families_01", + "g_f_y_lost_01", + "g_f_y_vagos_01", + "g_m_importexport_01", + "g_m_m_armboss_01", + "g_m_m_armgoon_01", + "g_m_m_armlieut_01", + "g_m_m_cartelgoons_01", + "g_m_m_cartelguards_01", + "g_m_m_cartelguards_02", + "g_m_m_casrn_01", + "g_m_m_chemwork_01", + "g_m_m_chiboss_01", + "g_m_m_chicold_01", + "g_m_m_chigoon_01", + "g_m_m_chigoon_02", + "g_m_m_fooliganz_01", + "g_m_m_friedlandergoons_01", + "g_m_m_genthug_01", + "g_m_m_goons_01", + "g_m_m_korboss_01", + "g_m_m_maragrande_01", + "g_m_m_mexboss_01", + "g_m_m_mexboss_02", + "g_m_m_prisoners_01", + "g_m_m_slasher_01", + "g_m_y_armgoon_02", + "g_m_y_azteca_01", + "g_m_y_ballaeast_01", + "g_m_y_ballaorig_01", + "g_m_y_ballasout_01", + "g_m_y_famca_01", + "g_m_y_famdnf_01", + "g_m_y_famfor_01", + "g_m_y_korean_01", + "g_m_y_korean_02", + "g_m_y_korlieut_01", + "g_m_y_lost_01", + "g_m_y_lost_02", + "g_m_y_lost_03", + "g_m_y_mexgang_01", + "g_m_y_mexgoon_01", + "g_m_y_mexgoon_02", + "g_m_y_mexgoon_03", + "g_m_y_pologoon_01", + "g_m_y_pologoon_02", + "g_m_y_salvaboss_01", + "g_m_y_salvagoon_01", + "g_m_y_salvagoon_02", + "g_m_y_salvagoon_03", + "g_m_y_strpunk_01", + "g_m_y_strpunk_02", + "hc_driver", + "hc_gunman", + "hc_hacker", + "ig_abigail", + "ig_acidlabcook", + "ig_agatha", + "ig_agent", + "ig_agent_02", + "ig_ahronward", + "ig_amandatownley", + "ig_andreas", + "ig_ary", + "ig_ary_02", + "ig_ashley", + "ig_avery", + "ig_avischwartzman_02", + "ig_avischwartzman_03", + "ig_avon", + "ig_ballas_leader", + "ig_ballasog", + "ig_bankman", + "ig_barry", + "ig_benny", + "ig_benny_02", + "ig_bestmen", + "ig_beverly", + "ig_billionaire", + "ig_brad", + "ig_bride", + "ig_brucie2", + "ig_callgirl_01", + "ig_callgirl_02", + "ig_car3guy1", + "ig_car3guy2", + "ig_casey", + "ig_celeb_01", + "ig_charlie_reed", + "ig_chef", + "ig_chef_03", + "ig_chef2", + "ig_chengsr", + "ig_chrisformage", + "ig_clay", + "ig_claypain", + "ig_cletus", + "ig_dale", + "ig_davenorton", + "ig_dax", + "ig_denise", + "ig_devin", + "ig_dix", + "ig_djblamadon", + "ig_djblamrupert", + "ig_djblamryanh", + "ig_djblamryans", + "ig_djdixmanager", + "ig_djgeneric_01", + "ig_djsolfotios", + "ig_djsoljakob", + "ig_djsolmanager", + "ig_djsolmike", + "ig_djsolrobt", + "ig_djtalaurelia", + "ig_djtalignazio", + "ig_dom", + "ig_dreyfuss", + "ig_drfriedlander", + "ig_drfriedlander_02", + "ig_drugdealer", + "ig_englishdave", + "ig_englishdave_02", + "ig_entourage_a", + "ig_entourage_b", + "ig_fabien", + "ig_fbisuit_01", + "ig_floyd", + "ig_fooliganz_01", + "ig_fooliganz_02", + "ig_furry", + "ig_g", + "ig_georginacheng", + "ig_golfer_a", + "ig_golfer_b", + "ig_groom", + "ig_gunvanseller", + "ig_gustavo", + "ig_hao", + "ig_hao_02", + "ig_helmsmanpavel", + "ig_hippyleader", + "ig_huang", + "ig_hunter", + "ig_imani", + "ig_isldj_00", + "ig_isldj_01", + "ig_isldj_02", + "ig_isldj_03", + "ig_isldj_04", + "ig_isldj_04_d_01", + "ig_isldj_04_d_02", + "ig_isldj_04_e_01", + "ig_jackie", + "ig_jamalamir", + "ig_janet", + "ig_jay_norris", + "ig_jaywalker", + "ig_jewelass", + "ig_jimmyboston", + "ig_jimmyboston_02", + "ig_jimmydisanto", + "ig_jimmydisanto2", + "ig_jio", + "ig_jio_02", + "ig_joeminuteman", + "ig_johnny_guns", + "ig_johnnyklebitz", + "ig_josef", + "ig_josh", + "ig_juanstrickler", + "ig_karen_daniels", + "ig_kaylee", + "ig_kerrymcintosh", + "ig_kerrymcintosh_02", + "ig_labrat", + "ig_lacey_jones_02", + "ig_lamardavis", + "ig_lamardavis_02", + "ig_lazlow", + "ig_lazlow_2", + "ig_lestercrest", + "ig_lestercrest_2", + "ig_lestercrest_3", + "ig_lifeinvad_01", + "ig_lifeinvad_02", + "ig_lildee", + "ig_luchadora", + "ig_magenta", + "ig_malc", + "ig_manuel", + "ig_marnie", + "ig_maryann", + "ig_mason_duggan", + "ig_maude", + "ig_mechanic_01", + "ig_mechanic_02", + "ig_michelle", + "ig_miguelmadrazo", + "ig_milton", + "ig_mimi", + "ig_mjo", + "ig_mjo_02", + "ig_molly", + "ig_money", + "ig_moodyman_02", + "ig_mp_agent14", + "ig_mrk", + "ig_mrs_thornhill", + "ig_mrsphillips", + "ig_musician_00", + "ig_natalia", + "ig_nervousron", + "ig_nervousron_02", + "ig_nigel", + "ig_old_man1a", + "ig_old_man2", + "ig_oldrichguy", + "ig_omega", + "ig_oneil", + "ig_orleans", + "ig_ortega", + "ig_paige", + "ig_paper", + "ig_party_promo", + "ig_patricia", + "ig_patricia_02", + "ig_pernell_moss", + "ig_pilot", + "ig_pilot_02", + "ig_popov", + "ig_priest", + "ig_prolsec_02", + "ig_ramp_gang", + "ig_ramp_hic", + "ig_ramp_hipster", + "ig_ramp_mex", + "ig_rashcosvki", + "ig_req_officer", + "ig_roccopelosi", + "ig_roostermccraw", + "ig_russiandrunk", + "ig_sacha", + "ig_screen_writer", + "ig_security_a", + "ig_sessanta", + "ig_siemonyetarian", + "ig_sol", + "ig_solomon", + "ig_soundeng_00", + "ig_sss", + "ig_stevehains", + "ig_stretch", + "ig_subcrewhead", + "ig_talcc", + "ig_talina", + "ig_talmm", + "ig_tanisha", + "ig_taocheng", + "ig_taocheng2", + "ig_taostranslator", + "ig_taostranslator2", + "ig_tenniscoach", + "ig_terry", + "ig_thornton", + "ig_tomcasino", + "ig_tomepsilon", + "ig_tonya", + "ig_tonyprince", + "ig_tracydisanto", + "ig_trafficwarden", + "ig_tylerdix", + "ig_tylerdix_02", + "ig_vagos_leader", + "ig_vagspeak", + "ig_vernon", + "ig_vincent", + "ig_vincent_2", + "ig_vincent_3", + "ig_vincent_4", + "ig_wade", + "ig_warehouseboss", + "ig_wendy", + "ig_yusufamir", + "ig_zimbor", + "mp_f_bennymech_01", + "mp_f_boatstaff_01", + "mp_f_cardesign_01", + "mp_f_chbar_01", + "mp_f_cocaine_01", + "mp_f_counterfeit_01", + "mp_f_deadhooker", + "mp_f_execpa_01", + "mp_f_execpa_02", + "mp_f_forgery_01", + "mp_f_freemode_01", + "mp_f_helistaff_01", + "mp_f_meth_01", + "mp_f_misty_01", + "mp_f_stripperlite", + "mp_f_weed_01", + "mp_g_m_pros_01", + "mp_headtargets", + "mp_m_avongoon", + "mp_m_boatstaff_01", + "mp_m_bogdangoon", + "mp_m_claude_01", + "mp_m_cocaine_01", + "mp_m_counterfeit_01", + "mp_m_exarmy_01", + "mp_m_execpa_01", + "mp_m_famdd_01", + "mp_m_fibsec_01", + "mp_m_forgery_01", + "mp_m_freemode_01", + "mp_m_g_vagfun_01", + "mp_m_marston_01", + "mp_m_meth_01", + "mp_m_niko_01", + "mp_m_securoguard_01", + "mp_m_shopkeep_01", + "mp_m_waremech_01", + "mp_m_weapexp_01", + "mp_m_weapwork_01", + "mp_m_weed_01", + "mp_s_m_armoured_01", + "p_franklin_02", + "player_one", + "player_two", + "player_zero", + "s_f_m_autoshop_01", + "s_f_m_fembarber", + "s_f_m_maid_01", + "s_f_m_retailstaff_01", + "s_f_m_shop_high", + "s_f_m_studioassist_01", + "s_f_m_sweatshop_01", + "s_f_m_warehouse_01", + "s_f_y_airhostess_01", + "s_f_y_bartender_01", + "s_f_y_baywatch_01", + "s_f_y_beachbarstaff_01", + "s_f_y_casino_01", + "s_f_y_clubbar_01", + "s_f_y_clubbar_02", + "s_f_y_cop_01", + "s_f_y_factory_01", + "s_f_y_hooker_01", + "s_f_y_hooker_02", + "s_f_y_hooker_03", + "s_f_y_migrant_01", + "s_f_y_movprem_01", + "s_f_y_ranger_01", + "s_f_y_scrubs_01", + "s_f_y_sheriff_01", + "s_f_y_shop_low", + "s_f_y_shop_mid", + "s_f_y_stripper_01", + "s_f_y_stripper_02", + "s_f_y_stripperlite", + "s_f_y_sweatshop_01", + "s_m_m_ammucountry", + "s_m_m_armoured_01", + "s_m_m_armoured_02", + "s_m_m_autoshop_01", + "s_m_m_autoshop_02", + "s_m_m_autoshop_03", + "s_m_m_bouncer_01", + "s_m_m_bouncer_02", + "s_m_m_ccrew_01", + "s_m_m_ccrew_02", + "s_m_m_ccrew_03", + "s_m_m_chemsec_01", + "s_m_m_ciasec_01", + "s_m_m_cntrybar_01", + "s_m_m_cop_01", + "s_m_m_dockwork_01", + "s_m_m_doctor_01", + "s_m_m_drugprocess_01", + "s_m_m_fiboffice_01", + "s_m_m_fiboffice_02", + "s_m_m_fibsec_01", + "s_m_m_fieldworker_01", + "s_m_m_gaffer_01", + "s_m_m_gardener_01", + "s_m_m_gentransport", + "s_m_m_hairdress_01", + "s_m_m_hazmatworker_01", + "s_m_m_highsec_01", + "s_m_m_highsec_02", + "s_m_m_highsec_03", + "s_m_m_highsec_04", + "s_m_m_highsec_05", + "s_m_m_janitor", + "s_m_m_lathandy_01", + "s_m_m_lifeinvad_01", + "s_m_m_linecook", + "s_m_m_lsmetro_01", + "s_m_m_mariachi_01", + "s_m_m_marine_01", + "s_m_m_marine_02", + "s_m_m_migrant_01", + "s_m_m_movalien_01", + "s_m_m_movprem_01", + "s_m_m_movspace_01", + "s_m_m_paramedic_01", + "s_m_m_pilot_01", + "s_m_m_pilot_02", + "s_m_m_postal_01", + "s_m_m_postal_02", + "s_m_m_prisguard_01", + "s_m_m_raceorg_01", + "s_m_m_scientist_01", + "s_m_m_security_01", + "s_m_m_snowcop_01", + "s_m_m_strperf_01", + "s_m_m_strpreach_01", + "s_m_m_strvend_01", + "s_m_m_studioassist_02", + "s_m_m_studioprod_01", + "s_m_m_studiosoueng_02", + "s_m_m_subcrew_01", + "s_m_m_tattoo_01", + "s_m_m_trucker_01", + "s_m_m_ups_01", + "s_m_m_ups_02", + "s_m_m_warehouse_01", + "s_m_o_busker_01", + "s_m_y_airworker", + "s_m_y_ammucity_01", + "s_m_y_armymech_01", + "s_m_y_autopsy_01", + "s_m_y_barman_01", + "s_m_y_baywatch_01", + "s_m_y_blackops_01", + "s_m_y_blackops_02", + "s_m_y_blackops_03", + "s_m_y_busboy_01", + "s_m_y_casino_01", + "s_m_y_chef_01", + "s_m_y_clown_01", + "s_m_y_clubbar_01", + "s_m_y_construct_01", + "s_m_y_construct_02", + "s_m_y_cop_01", + "s_m_y_dealer_01", + "s_m_y_devinsec_01", + "s_m_y_dockwork_01", + "s_m_y_doorman_01", + "s_m_y_dwservice_01", + "s_m_y_dwservice_02", + "s_m_y_factory_01", + "s_m_y_fireman_01", + "s_m_y_garbage", + "s_m_y_grip_01", + "s_m_y_hwaycop_01", + "s_m_y_marine_01", + "s_m_y_marine_02", + "s_m_y_marine_03", + "s_m_y_mime", + "s_m_y_pestcont_01", + "s_m_y_pilot_01", + "s_m_y_prismuscl_01", + "s_m_y_prisoner_01", + "s_m_y_ranger_01", + "s_m_y_robber_01", + "s_m_y_sheriff_01", + "s_m_y_shop_mask", + "s_m_y_strvend_01", + "s_m_y_swat_01", + "s_m_y_uscg_01", + "s_m_y_valet_01", + "s_m_y_waiter_01", + "s_m_y_waretech_01", + "s_m_y_westsec_01", + "s_m_y_westsec_02", + "s_m_y_winclean_01", + "s_m_y_xmech_01", + "s_m_y_xmech_02", + "s_m_y_xmech_02_mp", + "u_f_m_casinocash_01", + "u_f_m_casinoshop_01", + "u_f_m_corpse_01", + "u_f_m_debbie_01", + "u_f_m_drowned_01", + "u_f_m_miranda", + "u_f_m_miranda_02", + "u_f_m_promourn_01", + "u_f_o_carol", + "u_f_o_eileen", + "u_f_o_moviestar", + "u_f_o_prolhost_01", + "u_f_y_beth", + "u_f_y_bikerchic", + "u_f_y_comjane", + "u_f_y_corpse_01", + "u_f_y_corpse_02", + "u_f_y_danceburl_01", + "u_f_y_dancelthr_01", + "u_f_y_dancerave_01", + "u_f_y_hotposh_01", + "u_f_y_jewelass_01", + "u_f_y_lauren", + "u_f_y_mistress", + "u_f_y_poppymich", + "u_f_y_poppymich_02", + "u_f_y_princess", + "u_f_y_spyactress", + "u_f_y_taylor", + "u_m_m_aldinapoli", + "u_m_m_bankman", + "u_m_m_bikehire_01", + "u_m_m_blane", + "u_m_m_curtis", + "u_m_m_doa_01", + "u_m_m_edtoh", + "u_m_m_fibarchitect", + "u_m_m_filmdirector", + "u_m_m_glenstank_01", + "u_m_m_griff_01", + "u_m_m_jesus_01", + "u_m_m_jewelsec_01", + "u_m_m_jewelthief", + "u_m_m_juggernaut_03", + "u_m_m_markfost", + "u_m_m_partytarget", + "u_m_m_prolsec_01", + "u_m_m_promourn_01", + "u_m_m_rivalpap", + "u_m_m_spyactor", + "u_m_m_streetart_01", + "u_m_m_vince", + "u_m_m_willyfist", + "u_m_m_yeti", + "u_m_m_yulemonster", + "u_m_o_dean", + "u_m_o_filmnoir", + "u_m_o_finguru_01", + "u_m_o_taphillbilly", + "u_m_o_tramp_01", + "u_m_y_abner", + "u_m_y_antonb", + "u_m_y_babyd", + "u_m_y_baygor", + "u_m_y_burgerdrug_01", + "u_m_y_caleb", + "u_m_y_chip", + "u_m_y_corpse_01", + "u_m_y_croupthief_01", + "u_m_y_cyclist_01", + "u_m_y_danceburl_01", + "u_m_y_dancelthr_01", + "u_m_y_dancerave_01", + "u_m_y_fibmugger_01", + "u_m_y_gabriel", + "u_m_y_guido_01", + "u_m_y_gunvend_01", + "u_m_y_hippie_01", + "u_m_y_imporage", + "u_m_y_juggernaut_01", + "u_m_y_juggernaut_02", + "u_m_y_justin", + "u_m_y_mani", + "u_m_y_militarybum", + "u_m_y_paparazzi", + "u_m_y_party_01", + "u_m_y_pogo_01", + "u_m_y_prisoner_01", + "u_m_y_proldriver_01", + "u_m_y_rsranger_01", + "u_m_y_sbike", + "u_m_y_smugmech_01", + "u_m_y_staggrm_01", + "u_m_y_tattoo_01", + "u_m_y_ushi", + "u_m_y_zombie_01", + } + } + } +} diff --git a/resources/[core]/illenium-appearance/shared/tattoos.lua b/resources/[core]/illenium-appearance/shared/tattoos.lua new file mode 100644 index 0000000..85f3f12 --- /dev/null +++ b/resources/[core]/illenium-appearance/shared/tattoos.lua @@ -0,0 +1,6968 @@ +Config.Tattoos = { + ZONE_TORSO = { + { + name = "TAT_AR_000", + label = "Turbulence", + hashMale = "MP_Airraces_Tattoo_000_M", + hashFemale = "MP_Airraces_Tattoo_000_F", + zone = "ZONE_TORSO", + collection = "mpairraces_overlays" + }, + { + name = "TAT_AR_001", + label = "Pilot Skull", + hashMale = "MP_Airraces_Tattoo_001_M", + hashFemale = "MP_Airraces_Tattoo_001_F", + zone = "ZONE_TORSO", + collection = "mpairraces_overlays" + }, + { + name = "TAT_AR_002", + label = "Winged Bombshell", + hashMale = "MP_Airraces_Tattoo_002_M", + hashFemale = "MP_Airraces_Tattoo_002_F", + zone = "ZONE_TORSO", + collection = "mpairraces_overlays" + }, + { + name = "TAT_AR_004", + label = "Balloon Pioneer", + hashMale = "MP_Airraces_Tattoo_004_M", + hashFemale = "MP_Airraces_Tattoo_004_F", + zone = "ZONE_TORSO", + collection = "mpairraces_overlays" + }, + { + name = "TAT_AR_005", + label = "Parachute Belle", + hashMale = "MP_Airraces_Tattoo_005_M", + hashFemale = "MP_Airraces_Tattoo_005_F", + zone = "ZONE_TORSO", + collection = "mpairraces_overlays" + }, + { + name = "TAT_AR_006", + label = "Bombs Away", + hashMale = "MP_Airraces_Tattoo_006_M", + hashFemale = "MP_Airraces_Tattoo_006_F", + zone = "ZONE_TORSO", + collection = "mpairraces_overlays" + }, + { + name = "TAT_AR_007", + label = "Eagle Eyes", + hashMale = "MP_Airraces_Tattoo_007_M", + hashFemale = "MP_Airraces_Tattoo_007_F", + zone = "ZONE_TORSO", + collection = "mpairraces_overlays" + }, + { + name = "TAT_BB_018", + label = "Ship Arms", + hashMale = "MP_Bea_M_Back_000", + hashFemale = "", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_019", + label = "Tribal Hammerhead", + hashMale = "MP_Bea_M_Chest_000", + hashFemale = "", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_020", + label = "Tribal Shark", + hashMale = "MP_Bea_M_Chest_001", + hashFemale = "", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_023", + label = "Swordfish", + hashMale = "MP_Bea_M_Stom_000", + hashFemale = "", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_032", + label = "Wheel", + hashMale = "MP_Bea_M_Stom_001", + hashFemale = "", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_003", + label = "Rock Solid", + hashMale = "", + hashFemale = "MP_Bea_F_Back_000", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_001", + label = "Hibiscus Flower Duo", + hashMale = "", + hashFemale = "MP_Bea_F_Back_001", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_005", + label = "Shrimp", + hashMale = "", + hashFemale = "MP_Bea_F_Back_002", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_012", + label = "Anchor", + hashMale = "", + hashFemale = "MP_Bea_F_Chest_000", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_013", + label = "Anchor", + hashMale = "", + hashFemale = "MP_Bea_F_Chest_001", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_000", + label = "Los Santos Wreath", + hashMale = "", + hashFemale = "MP_Bea_F_Chest_002", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_006", + label = "Love Dagger", + hashMale = "", + hashFemale = "MP_Bea_F_RSide_000", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_011", + label = "Sea Horses", + hashMale = "", + hashFemale = "MP_Bea_F_Should_000", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_004", + label = "Catfish", + hashMale = "", + hashFemale = "MP_Bea_F_Should_001", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_014", + label = "Swallow", + hashMale = "", + hashFemale = "MP_Bea_F_Stom_000", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_009", + label = "Hibiscus Flower", + hashMale = "", + hashFemale = "MP_Bea_F_Stom_001", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_010", + label = "Dolphin", + hashMale = "", + hashFemale = "MP_Bea_F_Stom_002", + zone = "ZONE_TORSO", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BI_000", + label = "Demon Rider", + hashMale = "MP_MP_Biker_Tat_000_M", + hashFemale = "MP_MP_Biker_Tat_000_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_001", + label = "Both Barrels", + hashMale = "MP_MP_Biker_Tat_001_M", + hashFemale = "MP_MP_Biker_Tat_001_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_003", + label = "Web Rider", + hashMale = "MP_MP_Biker_Tat_003_M", + hashFemale = "MP_MP_Biker_Tat_003_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_005", + label = "Made In America", + hashMale = "MP_MP_Biker_Tat_005_M", + hashFemale = "MP_MP_Biker_Tat_005_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_006", + label = "Chopper Freedom", + hashMale = "MP_MP_Biker_Tat_006_M", + hashFemale = "MP_MP_Biker_Tat_006_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_008", + label = "Freedom Wheels", + hashMale = "MP_MP_Biker_Tat_008_M", + hashFemale = "MP_MP_Biker_Tat_008_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_010", + label = "Skull Of Taurus", + hashMale = "MP_MP_Biker_Tat_010_M", + hashFemale = "MP_MP_Biker_Tat_010_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_011", + label = "R.I.P. My Brothers", + hashMale = "MP_MP_Biker_Tat_011_M", + hashFemale = "MP_MP_Biker_Tat_011_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_013", + label = "Demon Crossbones", + hashMale = "MP_MP_Biker_Tat_013_M", + hashFemale = "MP_MP_Biker_Tat_013_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_017", + label = "Clawed Beast", + hashMale = "MP_MP_Biker_Tat_017_M", + hashFemale = "MP_MP_Biker_Tat_017_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_018", + label = "Skeletal Chopper", + hashMale = "MP_MP_Biker_Tat_018_M", + hashFemale = "MP_MP_Biker_Tat_018_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_019", + label = "Gruesome Talons", + hashMale = "MP_MP_Biker_Tat_019_M", + hashFemale = "MP_MP_Biker_Tat_019_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_021", + label = "Flaming Reaper", + hashMale = "MP_MP_Biker_Tat_021_M", + hashFemale = "MP_MP_Biker_Tat_021_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_023", + label = "Western MC", + hashMale = "MP_MP_Biker_Tat_023_M", + hashFemale = "MP_MP_Biker_Tat_023_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_026", + label = "American Dream", + hashMale = "MP_MP_Biker_Tat_026_M", + hashFemale = "MP_MP_Biker_Tat_026_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_029", + label = "Bone Wrench", + hashMale = "MP_MP_Biker_Tat_029_M", + hashFemale = "MP_MP_Biker_Tat_029_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_030", + label = "Brothers For Life", + hashMale = "MP_MP_Biker_Tat_030_M", + hashFemale = "MP_MP_Biker_Tat_030_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_031", + label = "Gear Head", + hashMale = "MP_MP_Biker_Tat_031_M", + hashFemale = "MP_MP_Biker_Tat_031_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_032", + label = "Western Eagle", + hashMale = "MP_MP_Biker_Tat_032_M", + hashFemale = "MP_MP_Biker_Tat_032_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_034", + label = "Brotherhood of Bikes", + hashMale = "MP_MP_Biker_Tat_034_M", + hashFemale = "MP_MP_Biker_Tat_034_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_039", + label = "Gas Guzzler", + hashMale = "MP_MP_Biker_Tat_039_M", + hashFemale = "MP_MP_Biker_Tat_039_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_041", + label = "No Regrets", + hashMale = "MP_MP_Biker_Tat_041_M", + hashFemale = "MP_MP_Biker_Tat_041_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_043", + label = "Ride Forever", + hashMale = "MP_MP_Biker_Tat_043_M", + hashFemale = "MP_MP_Biker_Tat_043_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_050", + label = "Unforgiven", + hashMale = "MP_MP_Biker_Tat_050_M", + hashFemale = "MP_MP_Biker_Tat_050_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_052", + label = "Biker Mount", + hashMale = "MP_MP_Biker_Tat_052_M", + hashFemale = "MP_MP_Biker_Tat_052_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_058", + label = "Reaper Vulture", + hashMale = "MP_MP_Biker_Tat_058_M", + hashFemale = "MP_MP_Biker_Tat_058_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_059", + label = "Faggio", + hashMale = "MP_MP_Biker_Tat_059_M", + hashFemale = "MP_MP_Biker_Tat_059_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_060", + label = "We Are The Mods!", + hashMale = "MP_MP_Biker_Tat_060_M", + hashFemale = "MP_MP_Biker_Tat_060_F", + zone = "ZONE_TORSO", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BUS_011", + label = "Refined Hustler", + hashMale = "MP_Buis_M_Stomach_000", + hashFemale = "", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_001", + label = "Rich", + hashMale = "MP_Buis_M_Chest_000", + hashFemale = "", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_002", + label = "$$$", + hashMale = "MP_Buis_M_Chest_001", + hashFemale = "", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_000", + label = "Makin' Paper", + hashMale = "MP_Buis_M_Back_000", + hashFemale = "", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_002", + label = "High Roller", + hashMale = "", + hashFemale = "MP_Buis_F_Chest_000", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_003", + label = "Makin' Money", + hashMale = "", + hashFemale = "MP_Buis_F_Chest_001", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_004", + label = "Love Money", + hashMale = "", + hashFemale = "MP_Buis_F_Chest_002", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_011", + label = "Diamond Back", + hashMale = "", + hashFemale = "MP_Buis_F_Stom_000", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_012", + label = "Santo Capra Logo", + hashMale = "", + hashFemale = "MP_Buis_F_Stom_001", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_013", + label = "Money Bag", + hashMale = "", + hashFemale = "MP_Buis_F_Stom_002", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_000", + label = "Respect", + hashMale = "", + hashFemale = "MP_Buis_F_Back_000", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_001", + label = "Gold Digger", + hashMale = "", + hashFemale = "MP_Buis_F_Back_001", + zone = "ZONE_TORSO", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_H27_000", + label = "Thor & Goblin", + hashMale = "MP_Christmas2017_Tattoo_000_M", + hashFemale = "MP_Christmas2017_Tattoo_000_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_002", + label = "Kabuto", + hashMale = "MP_Christmas2017_Tattoo_002_M", + hashFemale = "MP_Christmas2017_Tattoo_002_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_003", + label = "Native Warrior", + hashMale = "MP_Christmas2017_Tattoo_003_M", + hashFemale = "MP_Christmas2017_Tattoo_003_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_005", + label = "Ghost Dragon", + hashMale = "MP_Christmas2017_Tattoo_005_M", + hashFemale = "MP_Christmas2017_Tattoo_005_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_008", + label = "Spartan Warrior", + hashMale = "MP_Christmas2017_Tattoo_008_M", + hashFemale = "MP_Christmas2017_Tattoo_008_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_009", + label = "Norse Rune", + hashMale = "MP_Christmas2017_Tattoo_009_M", + hashFemale = "MP_Christmas2017_Tattoo_009_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_010", + label = "Spartan Shield", + hashMale = "MP_Christmas2017_Tattoo_010_M", + hashFemale = "MP_Christmas2017_Tattoo_010_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_011", + label = "Weathered Skull", + hashMale = "MP_Christmas2017_Tattoo_011_M", + hashFemale = "MP_Christmas2017_Tattoo_011_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_015", + label = "Samurai Combat", + hashMale = "MP_Christmas2017_Tattoo_015_M", + hashFemale = "MP_Christmas2017_Tattoo_015_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_016", + label = "Odin & Raven", + hashMale = "MP_Christmas2017_Tattoo_016_M", + hashFemale = "MP_Christmas2017_Tattoo_016_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_019", + label = "Strike Force", + hashMale = "MP_Christmas2017_Tattoo_019_M", + hashFemale = "MP_Christmas2017_Tattoo_019_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_020", + label = "Medusa's Gaze", + hashMale = "MP_Christmas2017_Tattoo_020_M", + hashFemale = "MP_Christmas2017_Tattoo_020_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_021", + label = "Spartan & Lion", + hashMale = "MP_Christmas2017_Tattoo_021_M", + hashFemale = "MP_Christmas2017_Tattoo_021_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_022", + label = "Spartan & Horse", + hashMale = "MP_Christmas2017_Tattoo_022_M", + hashFemale = "MP_Christmas2017_Tattoo_022_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_024", + label = "Dragon Slayer", + hashMale = "MP_Christmas2017_Tattoo_024_M", + hashFemale = "MP_Christmas2017_Tattoo_024_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_026", + label = "Spartan Skull", + hashMale = "MP_Christmas2017_Tattoo_026_M", + hashFemale = "MP_Christmas2017_Tattoo_026_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_027", + label = "Molon Labe", + hashMale = "MP_Christmas2017_Tattoo_027_M", + hashFemale = "MP_Christmas2017_Tattoo_027_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_AW_000", + label = "???", + hashMale = "MP_Christmas2018_Tat_000_M", + hashFemale = "MP_Christmas2018_Tat_000_F", + zone = "ZONE_TORSO", + collection = "mpchristmas2018_overlays" + }, + { + name = "TAT_X2_005", + label = "Carp Outline", + hashMale = "MP_Xmas2_M_Tat_005", + hashFemale = "MP_Xmas2_F_Tat_005", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_006", + label = "Carp Shaded", + hashMale = "MP_Xmas2_M_Tat_006", + hashFemale = "MP_Xmas2_F_Tat_006", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_009", + label = "Time To Die", + hashMale = "MP_Xmas2_M_Tat_009", + hashFemale = "MP_Xmas2_F_Tat_009", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_011", + label = "Roaring Tiger", + hashMale = "MP_Xmas2_M_Tat_011", + hashFemale = "MP_Xmas2_F_Tat_011", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_013", + label = "Lizard", + hashMale = "MP_Xmas2_M_Tat_013", + hashFemale = "MP_Xmas2_F_Tat_013", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_015", + label = "Japanese Warrior", + hashMale = "MP_Xmas2_M_Tat_015", + hashFemale = "MP_Xmas2_F_Tat_015", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_016", + label = "Loose Lips Outline", + hashMale = "MP_Xmas2_M_Tat_016", + hashFemale = "MP_Xmas2_F_Tat_016", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_017", + label = "Loose Lips Color", + hashMale = "MP_Xmas2_M_Tat_017", + hashFemale = "MP_Xmas2_F_Tat_017", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_018", + label = "Royal Dagger Outline", + hashMale = "MP_Xmas2_M_Tat_018", + hashFemale = "MP_Xmas2_F_Tat_018", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_019", + label = "Royal Dagger Color", + hashMale = "MP_Xmas2_M_Tat_019", + hashFemale = "MP_Xmas2_F_Tat_019", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_028", + label = "Executioner", + hashMale = "MP_Xmas2_M_Tat_028", + hashFemale = "MP_Xmas2_F_Tat_028", + zone = "ZONE_TORSO", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_GR_000", + label = "Bullet Proof", + hashMale = "MP_Gunrunning_Tattoo_000_M", + hashFemale = "MP_Gunrunning_Tattoo_000_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_001", + label = "Crossed Weapons", + hashMale = "MP_Gunrunning_Tattoo_001_M", + hashFemale = "MP_Gunrunning_Tattoo_001_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_009", + label = "Butterfly Knife", + hashMale = "MP_Gunrunning_Tattoo_009_M", + hashFemale = "MP_Gunrunning_Tattoo_009_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_010", + label = "Cash Money", + hashMale = "MP_Gunrunning_Tattoo_010_M", + hashFemale = "MP_Gunrunning_Tattoo_010_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_012", + label = "Dollar Daggers", + hashMale = "MP_Gunrunning_Tattoo_012_M", + hashFemale = "MP_Gunrunning_Tattoo_012_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_013", + label = "Wolf Insignia", + hashMale = "MP_Gunrunning_Tattoo_013_M", + hashFemale = "MP_Gunrunning_Tattoo_013_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_014", + label = "Backstabber", + hashMale = "MP_Gunrunning_Tattoo_014_M", + hashFemale = "MP_Gunrunning_Tattoo_014_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_017", + label = "Dog Tags", + hashMale = "MP_Gunrunning_Tattoo_017_M", + hashFemale = "MP_Gunrunning_Tattoo_017_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_018", + label = "Dual Wield Skull", + hashMale = "MP_Gunrunning_Tattoo_018_M", + hashFemale = "MP_Gunrunning_Tattoo_018_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_019", + label = "Pistol Wings", + hashMale = "MP_Gunrunning_Tattoo_019_M", + hashFemale = "MP_Gunrunning_Tattoo_019_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_020", + label = "Crowned Weapons", + hashMale = "MP_Gunrunning_Tattoo_020_M", + hashFemale = "MP_Gunrunning_Tattoo_020_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_022", + label = "Explosive Heart", + hashMale = "MP_Gunrunning_Tattoo_022_M", + hashFemale = "MP_Gunrunning_Tattoo_022_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_028", + label = "Micro SMG Chain", + hashMale = "MP_Gunrunning_Tattoo_028_M", + hashFemale = "MP_Gunrunning_Tattoo_028_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_029", + label = "Win Some Lose Some", + hashMale = "MP_Gunrunning_Tattoo_029_M", + hashFemale = "MP_Gunrunning_Tattoo_029_F", + zone = "ZONE_TORSO", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_H3_023", + label = "Bigfoot", + hashMale = "mpHeist3_Tat_023_M", + hashFemale = "mpHeist3_Tat_023_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_024", + label = "Mount Chiliad", + hashMale = "mpHeist3_Tat_024_M", + hashFemale = "mpHeist3_Tat_024_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_025", + label = "Davis", + hashMale = "mpHeist3_Tat_025_M", + hashFemale = "mpHeist3_Tat_025_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_026", + label = "Dignity", + hashMale = "mpHeist3_Tat_026_M", + hashFemale = "mpHeist3_Tat_026_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_027", + label = "Epsilon", + hashMale = "mpHeist3_Tat_027_M", + hashFemale = "mpHeist3_Tat_027_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_028", + label = "Bananas Gone Bad", + hashMale = "mpHeist3_Tat_028_M", + hashFemale = "mpHeist3_Tat_028_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_029", + label = "Fatal Incursion", + hashMale = "mpHeist3_Tat_029_M", + hashFemale = "mpHeist3_Tat_029_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_030", + label = "Howitzer", + hashMale = "mpHeist3_Tat_030_M", + hashFemale = "mpHeist3_Tat_030_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_033", + label = "LS City", + hashMale = "mpHeist3_Tat_033_M", + hashFemale = "mpHeist3_Tat_033_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_035", + label = "LS Panic", + hashMale = "mpHeist3_Tat_035_M", + hashFemale = "mpHeist3_Tat_035_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_036", + label = "LS Shield", + hashMale = "mpHeist3_Tat_036_M", + hashFemale = "mpHeist3_Tat_036_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_037", + label = "Ladybug", + hashMale = "mpHeist3_Tat_037_M", + hashFemale = "mpHeist3_Tat_037_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_038", + label = "Robot Bubblegum", + hashMale = "mpHeist3_Tat_038_M", + hashFemale = "mpHeist3_Tat_038_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_039", + label = "Space Rangers", + hashMale = "mpHeist3_Tat_039_M", + hashFemale = "mpHeist3_Tat_039_F", + zone = "ZONE_TORSO", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H4_004", + label = "Skeleton Breeze", + hashMale = "MP_Heist4_Tat_004_M", + hashFemale = "MP_Heist4_Tat_004_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_013", + label = "Wild Dancers", + hashMale = "MP_Heist4_Tat_013_M", + hashFemale = "MP_Heist4_Tat_013_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_014", + label = "Paradise Nap", + hashMale = "MP_Heist4_Tat_014_M", + hashFemale = "MP_Heist4_Tat_014_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_015", + label = "Paradise Ukulele", + hashMale = "MP_Heist4_Tat_015_M", + hashFemale = "MP_Heist4_Tat_015_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_016", + label = "Rose Panther", + hashMale = "MP_Heist4_Tat_016_M", + hashFemale = "MP_Heist4_Tat_016_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_017", + label = "Tropical Sorcerer", + hashMale = "MP_Heist4_Tat_017_M", + hashFemale = "MP_Heist4_Tat_017_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_018", + label = "Record Head", + hashMale = "MP_Heist4_Tat_018_M", + hashFemale = "MP_Heist4_Tat_018_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_019", + label = "Record Shot", + hashMale = "MP_Heist4_Tat_019_M", + hashFemale = "MP_Heist4_Tat_019_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_020", + label = "Speaker Tower", + hashMale = "MP_Heist4_Tat_020_M", + hashFemale = "MP_Heist4_Tat_020_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_021", + label = "Skull Surfer", + hashMale = "MP_Heist4_Tat_021_M", + hashFemale = "MP_Heist4_Tat_021_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_022", + label = "Paradise Sirens", + hashMale = "MP_Heist4_Tat_022_M", + hashFemale = "MP_Heist4_Tat_022_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_023", + label = "Techno Glitch", + hashMale = "MP_Heist4_Tat_023_M", + hashFemale = "MP_Heist4_Tat_023_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_030", + label = "Radio Tape", + hashMale = "MP_Heist4_Tat_030_M", + hashFemale = "MP_Heist4_Tat_030_F", + zone = "ZONE_TORSO", + collection = "mpheist4_overlays" + }, + { + name = "TAT_HP_000", + label = "Crossed Arrows", + hashMale = "FM_Hip_M_Tat_000", + hashFemale = "FM_Hip_F_Tat_000", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_002", + label = "Chemistry", + hashMale = "FM_Hip_M_Tat_002", + hashFemale = "FM_Hip_F_Tat_002", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_006", + label = "Feather Birds", + hashMale = "FM_Hip_M_Tat_006", + hashFemale = "FM_Hip_F_Tat_006", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_011", + label = "Infinity", + hashMale = "FM_Hip_M_Tat_011", + hashFemale = "FM_Hip_F_Tat_011", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_012", + label = "Antlers", + hashMale = "FM_Hip_M_Tat_012", + hashFemale = "FM_Hip_F_Tat_012", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_013", + label = "Boombox", + hashMale = "FM_Hip_M_Tat_013", + hashFemale = "FM_Hip_F_Tat_013", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_024", + label = "Pyramid", + hashMale = "FM_Hip_M_Tat_024", + hashFemale = "FM_Hip_F_Tat_024", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_025", + label = "Watch Your Step", + hashMale = "FM_Hip_M_Tat_025", + hashFemale = "FM_Hip_F_Tat_025", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_029", + label = "Sad", + hashMale = "FM_Hip_M_Tat_029", + hashFemale = "FM_Hip_F_Tat_029", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_030", + label = "Shark Fin", + hashMale = "FM_Hip_M_Tat_030", + hashFemale = "FM_Hip_F_Tat_030", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_031", + label = "Skateboard", + hashMale = "FM_Hip_M_Tat_031", + hashFemale = "FM_Hip_F_Tat_031", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_032", + label = "Paper Plane", + hashMale = "FM_Hip_M_Tat_032", + hashFemale = "FM_Hip_F_Tat_032", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_033", + label = "Stag", + hashMale = "FM_Hip_M_Tat_033", + hashFemale = "FM_Hip_F_Tat_033", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_035", + label = "Sewn Heart", + hashMale = "FM_Hip_M_Tat_035", + hashFemale = "FM_Hip_F_Tat_035", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_041", + label = "Tooth", + hashMale = "FM_Hip_M_Tat_041", + hashFemale = "FM_Hip_F_Tat_041", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_046", + label = "Triangles", + hashMale = "FM_Hip_M_Tat_046", + hashFemale = "FM_Hip_F_Tat_046", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_047", + label = "Cassette", + hashMale = "FM_Hip_M_Tat_047", + hashFemale = "FM_Hip_F_Tat_047", + zone = "ZONE_TORSO", + collection = "mphipster_overlays" + }, + { + name = "TAT_IE_000", + label = "Block Back", + hashMale = "MP_MP_ImportExport_Tat_000_M", + hashFemale = "MP_MP_ImportExport_Tat_000_F", + zone = "ZONE_TORSO", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_IE_001", + label = "Power Plant", + hashMale = "MP_MP_ImportExport_Tat_001_M", + hashFemale = "MP_MP_ImportExport_Tat_001_F", + zone = "ZONE_TORSO", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_IE_002", + label = "Tuned to Death", + hashMale = "MP_MP_ImportExport_Tat_002_M", + hashFemale = "MP_MP_ImportExport_Tat_002_F", + zone = "ZONE_TORSO", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_IE_009", + label = "Serpents of Destruction", + hashMale = "MP_MP_ImportExport_Tat_009_M", + hashFemale = "MP_MP_ImportExport_Tat_009_F", + zone = "ZONE_TORSO", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_IE_010", + label = "Take the Wheel", + hashMale = "MP_MP_ImportExport_Tat_010_M", + hashFemale = "MP_MP_ImportExport_Tat_010_F", + zone = "ZONE_TORSO", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_IE_011", + label = "Talk Shit Get Hit", + hashMale = "MP_MP_ImportExport_Tat_011_M", + hashFemale = "MP_MP_ImportExport_Tat_011_F", + zone = "ZONE_TORSO", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_S2_000", + label = "SA Assault", + hashMale = "MP_LR_Tat_000_M", + hashFemale = "MP_LR_Tat_000_F", + zone = "ZONE_TORSO", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_008", + label = "Love the Game", + hashMale = "MP_LR_Tat_008_M", + hashFemale = "MP_LR_Tat_008_F", + zone = "ZONE_TORSO", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_011", + label = "Lady Liberty", + hashMale = "MP_LR_Tat_011_M", + hashFemale = "MP_LR_Tat_011_F", + zone = "ZONE_TORSO", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_012", + label = "Royal Kiss", + hashMale = "MP_LR_Tat_012_M", + hashFemale = "MP_LR_Tat_012_F", + zone = "ZONE_TORSO", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_016", + label = "Two Face", + hashMale = "MP_LR_Tat_016_M", + hashFemale = "MP_LR_Tat_016_F", + zone = "ZONE_TORSO", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_019", + label = "Death Behind", + hashMale = "MP_LR_Tat_019_M", + hashFemale = "MP_LR_Tat_019_F", + zone = "ZONE_TORSO", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_031", + label = "Dead Pretty", + hashMale = "MP_LR_Tat_031_M", + hashFemale = "MP_LR_Tat_031_F", + zone = "ZONE_TORSO", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_032", + label = "Reign Over", + hashMale = "MP_LR_Tat_032_M", + hashFemale = "MP_LR_Tat_032_F", + zone = "ZONE_TORSO", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S1_001", + label = "King Fight", + hashMale = "MP_LR_Tat_001_M", + hashFemale = "MP_LR_Tat_001_F", + zone = "ZONE_TORSO", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_002", + label = "Holy Mary", + hashMale = "MP_LR_Tat_002_M", + hashFemale = "MP_LR_Tat_002_F", + zone = "ZONE_TORSO", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_004", + label = "Gun Mic", + hashMale = "MP_LR_Tat_004_M", + hashFemale = "MP_LR_Tat_004_F", + zone = "ZONE_TORSO", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_009", + label = "Amazon", + hashMale = "MP_LR_Tat_009_M", + hashFemale = "MP_LR_Tat_009_F", + zone = "ZONE_TORSO", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_010", + label = "Bad Angel", + hashMale = "MP_LR_Tat_010_M", + hashFemale = "MP_LR_Tat_010_F", + zone = "ZONE_TORSO", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_013", + label = "Love Gamble", + hashMale = "MP_LR_Tat_013_M", + hashFemale = "MP_LR_Tat_013_F", + zone = "ZONE_TORSO", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_014", + label = "Love is Blind", + hashMale = "MP_LR_Tat_014_M", + hashFemale = "MP_LR_Tat_014_F", + zone = "ZONE_TORSO", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_021", + label = "Sad Angel", + hashMale = "MP_LR_Tat_021_M", + hashFemale = "MP_LR_Tat_021_F", + zone = "ZONE_TORSO", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_026", + label = "Royal Takeover", + hashMale = "MP_LR_Tat_026_M", + hashFemale = "MP_LR_Tat_026_F", + zone = "ZONE_TORSO", + collection = "mplowrider_overlays" + }, + { + name = "TAT_L2_002", + label = "The Howler", + hashMale = "MP_LUXE_TAT_002_M", + hashFemale = "MP_LUXE_TAT_002_F", + zone = "ZONE_TORSO", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_012", + label = "Geometric Galaxy", + hashMale = "MP_LUXE_TAT_012_M", + hashFemale = "MP_LUXE_TAT_012_F", + zone = "ZONE_TORSO", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_022", + label = "Cloaked Angel", + hashMale = "MP_LUXE_TAT_022_M", + hashFemale = "MP_LUXE_TAT_022_F", + zone = "ZONE_TORSO", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_025", + label = "Reaper Sway", + hashMale = "MP_LUXE_TAT_025_M", + hashFemale = "MP_LUXE_TAT_025_F", + zone = "ZONE_TORSO", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_027", + label = "Cobra Dawn", + hashMale = "MP_LUXE_TAT_027_M", + hashFemale = "MP_LUXE_TAT_027_F", + zone = "ZONE_TORSO", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_029", + label = "Geometric Design", + hashMale = "MP_LUXE_TAT_029_M", + hashFemale = "MP_LUXE_TAT_029_F", + zone = "ZONE_TORSO", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_LX_003", + label = "Abstract Skull", + hashMale = "MP_LUXE_TAT_003_M", + hashFemale = "MP_LUXE_TAT_003_F", + zone = "ZONE_TORSO", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_006", + label = "Adorned Wolf", + hashMale = "MP_LUXE_TAT_006_M", + hashFemale = "MP_LUXE_TAT_006_F", + zone = "ZONE_TORSO", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_007", + label = "Eye of the Griffin", + hashMale = "MP_LUXE_TAT_007_M", + hashFemale = "MP_LUXE_TAT_007_F", + zone = "ZONE_TORSO", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_008", + label = "Flying Eye", + hashMale = "MP_LUXE_TAT_008_M", + hashFemale = "MP_LUXE_TAT_008_F", + zone = "ZONE_TORSO", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_014", + label = "Ancient Queen", + hashMale = "MP_LUXE_TAT_014_M", + hashFemale = "MP_LUXE_TAT_014_F", + zone = "ZONE_TORSO", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_015", + label = "Smoking Sisters", + hashMale = "MP_LUXE_TAT_015_M", + hashFemale = "MP_LUXE_TAT_015_F", + zone = "ZONE_TORSO", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_024", + label = "Feather Mural", + hashMale = "MP_LUXE_TAT_024_M", + hashFemale = "MP_LUXE_TAT_024_F", + zone = "ZONE_TORSO", + collection = "mpluxe_overlays" + }, + { + name = "TAT_FX_004", + label = "Hood Heart", + hashMale = "MP_Security_Tat_004_M", + hashFemale = "MP_Security_Tat_004_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_008", + label = "Los Santos Tag", + hashMale = "MP_Security_Tat_008_M", + hashFemale = "MP_Security_Tat_008_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_013", + label = "Blessed Boombox", + hashMale = "MP_Security_Tat_013_M", + hashFemale = "MP_Security_Tat_013_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_014", + label = "Chamberlain Hills", + hashMale = "MP_Security_Tat_014_M", + hashFemale = "MP_Security_Tat_014_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_015", + label = "Smoking Barrels", + hashMale = "MP_Security_Tat_015_M", + hashFemale = "MP_Security_Tat_015_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_016", + label = "All From The Same Tree", + hashMale = "MP_Security_Tat_016_M", + hashFemale = "MP_Security_Tat_016_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_017", + label = "King of the Jungle", + hashMale = "MP_Security_Tat_017_M", + hashFemale = "MP_Security_Tat_017_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_018", + label = "Night Owl", + hashMale = "MP_Security_Tat_018_M", + hashFemale = "MP_Security_Tat_018_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_024", + label = "Beatbox Silhouette", + hashMale = "MP_Security_Tat_024_M", + hashFemale = "MP_Security_Tat_024_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_025", + label = "Davis Flames", + hashMale = "MP_Security_Tat_025_M", + hashFemale = "MP_Security_Tat_025_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_026", + label = "Dollar Guns Crossed", + hashMale = "MP_Security_Tat_026_M", + hashFemale = "MP_Security_Tat_026_F", + zone = "ZONE_TORSO", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_SM_000", + label = "Bless The Dead", + hashMale = "MP_Smuggler_Tattoo_000_M", + hashFemale = "MP_Smuggler_Tattoo_000_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_002", + label = "Dead Lies", + hashMale = "MP_Smuggler_Tattoo_002_M", + hashFemale = "MP_Smuggler_Tattoo_002_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_003", + label = "Give Nothing Back", + hashMale = "MP_Smuggler_Tattoo_003_M", + hashFemale = "MP_Smuggler_Tattoo_003_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_006", + label = "Never Surrender", + hashMale = "MP_Smuggler_Tattoo_006_M", + hashFemale = "MP_Smuggler_Tattoo_006_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_007", + label = "No Honor", + hashMale = "MP_Smuggler_Tattoo_007_M", + hashFemale = "MP_Smuggler_Tattoo_007_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_009", + label = "Tall Ship Conflict", + hashMale = "MP_Smuggler_Tattoo_009_M", + hashFemale = "MP_Smuggler_Tattoo_009_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_010", + label = "See You In Hell", + hashMale = "MP_Smuggler_Tattoo_010_M", + hashFemale = "MP_Smuggler_Tattoo_010_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_013", + label = "Torn Wings", + hashMale = "MP_Smuggler_Tattoo_013_M", + hashFemale = "MP_Smuggler_Tattoo_013_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_015", + label = "Jolly Roger", + hashMale = "MP_Smuggler_Tattoo_015_M", + hashFemale = "MP_Smuggler_Tattoo_015_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_016", + label = "Skull Compass", + hashMale = "MP_Smuggler_Tattoo_016_M", + hashFemale = "MP_Smuggler_Tattoo_016_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_017", + label = "Framed Tall Ship", + hashMale = "MP_Smuggler_Tattoo_017_M", + hashFemale = "MP_Smuggler_Tattoo_017_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_018", + label = "Finders Keepers", + hashMale = "MP_Smuggler_Tattoo_018_M", + hashFemale = "MP_Smuggler_Tattoo_018_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_019", + label = "Lost At Sea", + hashMale = "MP_Smuggler_Tattoo_019_M", + hashFemale = "MP_Smuggler_Tattoo_019_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_021", + label = "Dead Tales", + hashMale = "MP_Smuggler_Tattoo_021_M", + hashFemale = "MP_Smuggler_Tattoo_021_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_022", + label = "X Marks The Spot", + hashMale = "MP_Smuggler_Tattoo_022_M", + hashFemale = "MP_Smuggler_Tattoo_022_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_024", + label = "Pirate Captain", + hashMale = "MP_Smuggler_Tattoo_024_M", + hashFemale = "MP_Smuggler_Tattoo_024_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_025", + label = "Claimed By The Beast", + hashMale = "MP_Smuggler_Tattoo_025_M", + hashFemale = "MP_Smuggler_Tattoo_025_F", + zone = "ZONE_TORSO", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_ST_011", + label = "Wheels of Death", + hashMale = "MP_MP_Stunt_tat_011_M", + hashFemale = "MP_MP_Stunt_tat_011_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_012", + label = "Punk Biker", + hashMale = "MP_MP_Stunt_tat_012_M", + hashFemale = "MP_MP_Stunt_tat_012_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_014", + label = "Bat Cat of Spades", + hashMale = "MP_MP_Stunt_tat_014_M", + hashFemale = "MP_MP_Stunt_tat_014_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_018", + label = "Vintage Bully", + hashMale = "MP_MP_Stunt_tat_018_M", + hashFemale = "MP_MP_Stunt_tat_018_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_019", + label = "Engine Heart", + hashMale = "MP_MP_Stunt_tat_019_M", + hashFemale = "MP_MP_Stunt_tat_019_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_024", + label = "Road Kill", + hashMale = "MP_MP_Stunt_tat_024_M", + hashFemale = "MP_MP_Stunt_tat_024_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_026", + label = "Winged Wheel", + hashMale = "MP_MP_Stunt_tat_026_M", + hashFemale = "MP_MP_Stunt_tat_026_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_027", + label = "Punk Road Hog", + hashMale = "MP_MP_Stunt_tat_027_M", + hashFemale = "MP_MP_Stunt_tat_027_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_029", + label = "Majestic Finish", + hashMale = "MP_MP_Stunt_tat_029_M", + hashFemale = "MP_MP_Stunt_tat_029_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_030", + label = "Man's Ruin", + hashMale = "MP_MP_Stunt_tat_030_M", + hashFemale = "MP_MP_Stunt_tat_030_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_033", + label = "Sugar Skull Trucker", + hashMale = "MP_MP_Stunt_tat_033_M", + hashFemale = "MP_MP_Stunt_tat_033_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_034", + label = "Feather Road Kill", + hashMale = "MP_MP_Stunt_tat_034_M", + hashFemale = "MP_MP_Stunt_tat_034_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_037", + label = "Big Grills", + hashMale = "MP_MP_Stunt_tat_037_M", + hashFemale = "MP_MP_Stunt_tat_037_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_040", + label = "Monkey Chopper", + hashMale = "MP_MP_Stunt_tat_040_M", + hashFemale = "MP_MP_Stunt_tat_040_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_041", + label = "Brapp", + hashMale = "MP_MP_Stunt_tat_041_M", + hashFemale = "MP_MP_Stunt_tat_041_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_044", + label = "Ram Skull", + hashMale = "MP_MP_Stunt_tat_044_M", + hashFemale = "MP_MP_Stunt_tat_044_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_046", + label = "Full Throttle", + hashMale = "MP_MP_Stunt_tat_046_M", + hashFemale = "MP_MP_Stunt_tat_046_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_048", + label = "Racing Doll", + hashMale = "MP_MP_Stunt_tat_048_M", + hashFemale = "MP_MP_Stunt_tat_048_F", + zone = "ZONE_TORSO", + collection = "mpstunt_overlays" + }, + { + name = "TAT_VW_000", + label = "In the Pocket", + hashMale = "MP_Vinewood_Tat_000_M", + hashFemale = "MP_Vinewood_Tat_000_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_001", + label = "Jackpot", + hashMale = "MP_Vinewood_Tat_001_M", + hashFemale = "MP_Vinewood_Tat_001_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_003", + label = "Royal Flush", + hashMale = "MP_Vinewood_Tat_003_M", + hashFemale = "MP_Vinewood_Tat_003_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_006", + label = "Wheel of Suits", + hashMale = "MP_Vinewood_Tat_006_M", + hashFemale = "MP_Vinewood_Tat_006_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_007", + label = "777", + hashMale = "MP_Vinewood_Tat_007_M", + hashFemale = "MP_Vinewood_Tat_007_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_008", + label = "Snake Eyes", + hashMale = "MP_Vinewood_Tat_008_M", + hashFemale = "MP_Vinewood_Tat_008_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_009", + label = "Till Death Do Us Part", + hashMale = "MP_Vinewood_Tat_009_M", + hashFemale = "MP_Vinewood_Tat_009_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_010", + label = "Photo Finish", + hashMale = "MP_Vinewood_Tat_010_M", + hashFemale = "MP_Vinewood_Tat_010_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_011", + label = "Life's a Gamble", + hashMale = "MP_Vinewood_Tat_011_M", + hashFemale = "MP_Vinewood_Tat_011_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_012", + label = "Skull of Suits", + hashMale = "MP_Vinewood_Tat_012_M", + hashFemale = "MP_Vinewood_Tat_012_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_015", + label = "The Jolly Joker", + hashMale = "MP_Vinewood_Tat_015_M", + hashFemale = "MP_Vinewood_Tat_015_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_016", + label = "Rose & Aces", + hashMale = "MP_Vinewood_Tat_016_M", + hashFemale = "MP_Vinewood_Tat_016_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_017", + label = "Roll the Dice", + hashMale = "MP_Vinewood_Tat_017_M", + hashFemale = "MP_Vinewood_Tat_017_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_021", + label = "Show Your Hand", + hashMale = "MP_Vinewood_Tat_021_M", + hashFemale = "MP_Vinewood_Tat_021_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_022", + label = "Blood Money", + hashMale = "MP_Vinewood_Tat_022_M", + hashFemale = "MP_Vinewood_Tat_022_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_023", + label = "Lucky 7s", + hashMale = "MP_Vinewood_Tat_023_M", + hashFemale = "MP_Vinewood_Tat_023_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_024", + label = "Cash Mouth", + hashMale = "MP_Vinewood_Tat_024_M", + hashFemale = "MP_Vinewood_Tat_024_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_029", + label = "The Table", + hashMale = "MP_Vinewood_Tat_029_M", + hashFemale = "MP_Vinewood_Tat_029_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_030", + label = "The Royals", + hashMale = "MP_Vinewood_Tat_030_M", + hashFemale = "MP_Vinewood_Tat_030_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_031", + label = "Gambling Royalty", + hashMale = "MP_Vinewood_Tat_031_M", + hashFemale = "MP_Vinewood_Tat_031_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_032", + label = "Play Your Ace", + hashMale = "MP_Vinewood_Tat_032_M", + hashFemale = "MP_Vinewood_Tat_032_F", + zone = "ZONE_TORSO", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_FM_011", + label = "Blackjack", + hashMale = "FM_Tat_Award_M_003", + hashFemale = "FM_Tat_Award_F_003", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_012", + label = "Hustler", + hashMale = "FM_Tat_Award_M_004", + hashFemale = "FM_Tat_Award_F_004", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_013", + label = "Angel", + hashMale = "FM_Tat_Award_M_005", + hashFemale = "FM_Tat_Award_F_005", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_016", + label = "Los Santos Customs", + hashMale = "FM_Tat_Award_M_008", + hashFemale = "FM_Tat_Award_F_008", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_019", + label = "Blank Scroll", + hashMale = "FM_Tat_Award_M_011", + hashFemale = "FM_Tat_Award_F_011", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_020", + label = "Embellished Scroll", + hashMale = "FM_Tat_Award_M_012", + hashFemale = "FM_Tat_Award_F_012", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_021", + label = "Seven Deadly Sins", + hashMale = "FM_Tat_Award_M_013", + hashFemale = "FM_Tat_Award_F_013", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_022", + label = "Trust No One", + hashMale = "FM_Tat_Award_M_014", + hashFemale = "FM_Tat_Award_F_014", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_024", + label = "Clown", + hashMale = "FM_Tat_Award_M_016", + hashFemale = "FM_Tat_Award_F_016", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_025", + label = "Clown and Gun", + hashMale = "FM_Tat_Award_M_017", + hashFemale = "FM_Tat_Award_F_017", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_026", + label = "Clown Dual Wield", + hashMale = "FM_Tat_Award_M_018", + hashFemale = "FM_Tat_Award_F_018", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_027", + label = "Clown Dual Wield Dollars", + hashMale = "FM_Tat_Award_M_019", + hashFemale = "FM_Tat_Award_F_019", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_219", + label = "Faith", + hashMale = "FM_Tat_M_004", + hashFemale = "FM_Tat_F_004", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_213", + label = "Skull on the Cross", + hashMale = "FM_Tat_M_009", + hashFemale = "FM_Tat_F_009", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_218", + label = "LS Flames", + hashMale = "FM_Tat_M_010", + hashFemale = "FM_Tat_F_010", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_214", + label = "LS Script", + hashMale = "FM_Tat_M_011", + hashFemale = "FM_Tat_F_011", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_220", + label = "Los Santos Bills", + hashMale = "FM_Tat_M_012", + hashFemale = "FM_Tat_F_012", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_215", + label = "Eagle and Serpent", + hashMale = "FM_Tat_M_013", + hashFemale = "FM_Tat_F_013", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_216", + label = "Evil Clown", + hashMale = "FM_Tat_M_016", + hashFemale = "FM_Tat_F_016", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_217", + label = "The Wages of Sin", + hashMale = "FM_Tat_M_019", + hashFemale = "FM_Tat_F_019", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_221", + label = "Dragon", + hashMale = "FM_Tat_M_020", + hashFemale = "FM_Tat_F_020", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_225", + label = "Flaming Cross", + hashMale = "FM_Tat_M_024", + hashFemale = "FM_Tat_F_024", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_226", + label = "LS Bold", + hashMale = "FM_Tat_M_025", + hashFemale = "FM_Tat_F_025", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_230", + label = "Trinity Knot", + hashMale = "FM_Tat_M_029", + hashFemale = "FM_Tat_F_029", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_231", + label = "Lucky Celtic Dogs", + hashMale = "FM_Tat_M_030", + hashFemale = "FM_Tat_F_030", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_235", + label = "Flaming Shamrock", + hashMale = "FM_Tat_M_034", + hashFemale = "FM_Tat_F_034", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_237", + label = "Way of the Gun", + hashMale = "FM_Tat_M_036", + hashFemale = "FM_Tat_F_036", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_245", + label = "Stone Cross", + hashMale = "FM_Tat_M_044", + hashFemale = "FM_Tat_F_044", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_246", + label = "Skulls and Rose", + hashMale = "FM_Tat_M_045", + hashFemale = "FM_Tat_F_045", + zone = "ZONE_TORSO", + collection = "multiplayer_overlays" + }, + { + name = "TAT_SB_057", + label = "Gray Demon", + hashMale = "MP_Sum2_Tat_057_M", + hashFemale = "MP_Sum2_Tat_057_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_058", + label = "Shrieking Dragon", + hashMale = "MP_Sum2_Tat_058_M", + hashFemale = "MP_Sum2_Tat_058_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_059", + label = "Swords & City", + hashMale = "MP_Sum2_Tat_059_M", + hashFemale = "MP_Sum2_Tat_059_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_060", + label = "Blaine County", + hashMale = "MP_Sum2_Tat_060_M", + hashFemale = "MP_Sum2_Tat_060_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_061", + label = "Angry Possum", + hashMale = "MP_Sum2_Tat_061_M", + hashFemale = "MP_Sum2_Tat_061_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_062", + label = "Floral Demon", + hashMale = "MP_Sum2_Tat_062_M", + hashFemale = "MP_Sum2_Tat_062_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_003", + label = "Bullet Mouth", + hashMale = "MP_Sum2_Tat_003_M", + hashFemale = "MP_Sum2_Tat_003_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_004", + label = "Smoking Barrel", + hashMale = "MP_Sum2_Tat_004_M", + hashFemale = "MP_Sum2_Tat_004_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_005", + label = "Concealed", + hashMale = "MP_Sum2_Tat_005_M", + hashFemale = "MP_Sum2_Tat_005_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_006", + label = "Painted Micro SMG", + hashMale = "MP_Sum2_Tat_006_M", + hashFemale = "MP_Sum2_Tat_006_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_007", + label = "Weapon King", + hashMale = "MP_Sum2_Tat_007_M", + hashFemale = "MP_Sum2_Tat_007_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_035", + label = "Sniff Sniff", + hashMale = "MP_Sum2_Tat_035_M", + hashFemale = "MP_Sum2_Tat_035_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_036", + label = "Charm Pattern", + hashMale = "MP_Sum2_Tat_036_M", + hashFemale = "MP_Sum2_Tat_036_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_037", + label = "Witch & Skull", + hashMale = "MP_Sum2_Tat_037_M", + hashFemale = "MP_Sum2_Tat_037_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_038", + label = "Pumpkin Bug", + hashMale = "MP_Sum2_Tat_038_M", + hashFemale = "MP_Sum2_Tat_038_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_039", + label = "Sinner", + hashMale = "MP_Sum2_Tat_039_M", + hashFemale = "MP_Sum2_Tat_039_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_040", + label = "Carved Pumpkin", + hashMale = "MP_Sum2_Tat_040_M", + hashFemale = "MP_Sum2_Tat_040_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_041", + label = "Branched Werewolf", + hashMale = "MP_Sum2_Tat_041_M", + hashFemale = "MP_Sum2_Tat_041_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_042", + label = "Winged Skull", + hashMale = "MP_Sum2_Tat_042_M", + hashFemale = "MP_Sum2_Tat_042_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_043", + label = "Cursed Saki", + hashMale = "MP_Sum2_Tat_043_M", + hashFemale = "MP_Sum2_Tat_043_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_044", + label = "Smouldering Bat & Skull", + hashMale = "MP_Sum2_Tat_044_M", + hashFemale = "MP_Sum2_Tat_044_F", + zone = "ZONE_TORSO", + collection = "mpsum2_overlays" + }, + { + name = "TAT_X6_004", + label = "Herbal Bouquet", + hashMale = "MP_Christmas3_Tat_004_M", + hashFemale = "MP_Christmas3_Tat_004_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_005", + label = "Cash Krampus", + hashMale = "MP_Christmas3_Tat_005_M", + hashFemale = "MP_Christmas3_Tat_005_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_006", + label = "All In One Night", + hashMale = "MP_Christmas3_Tat_006_M", + hashFemale = "MP_Christmas3_Tat_006_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_007", + label = "A Little Present For You", + hashMale = "MP_Christmas3_Tat_007_M", + hashFemale = "MP_Christmas3_Tat_007_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_014", + label = "Masked Machete Killer", + hashMale = "MP_Christmas3_Tat_014_M", + hashFemale = "MP_Christmas3_Tat_014_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_015", + label = "Killer", + hashMale = "MP_Christmas3_Tat_015_M", + hashFemale = "MP_Christmas3_Tat_015_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_016", + label = "Powwer", + hashMale = "MP_Christmas3_Tat_016_M", + hashFemale = "MP_Christmas3_Tat_016_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_017", + label = "Two Headed Beast", + hashMale = "MP_Christmas3_Tat_017_M", + hashFemale = "MP_Christmas3_Tat_017_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_018", + label = "Dudes", + hashMale = "MP_Christmas3_Tat_018_M", + hashFemale = "MP_Christmas3_Tat_018_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_019", + label = "Fooligan Jester", + hashMale = "MP_Christmas3_Tat_019_M", + hashFemale = "MP_Christmas3_Tat_019_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_020", + label = "Vile Smile", + hashMale = "MP_Christmas3_Tat_020_M", + hashFemale = "MP_Christmas3_Tat_020_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_021", + label = "Demon Skull Jester", + hashMale = "MP_Christmas3_Tat_021_M", + hashFemale = "MP_Christmas3_Tat_021_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_022", + label = "Fatal Incursion Outline", + hashMale = "MP_Christmas3_Tat_022_M", + hashFemale = "MP_Christmas3_Tat_022_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_023", + label = "Many-Headed Beast", + hashMale = "MP_Christmas3_Tat_023_M", + hashFemale = "MP_Christmas3_Tat_023_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_024", + label = "Demon Stitches", + hashMale = "MP_Christmas3_Tat_024_M", + hashFemale = "MP_Christmas3_Tat_024_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_025", + label = "Collector", + hashMale = "MP_Christmas3_Tat_025_M", + hashFemale = "MP_Christmas3_Tat_025_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_040", + label = "Monkey", + hashMale = "MP_Christmas3_Tat_040_M", + hashFemale = "MP_Christmas3_Tat_040_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_041", + label = "Dragon", + hashMale = "MP_Christmas3_Tat_041_M", + hashFemale = "MP_Christmas3_Tat_041_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_042", + label = "Snake", + hashMale = "MP_Christmas3_Tat_042_M", + hashFemale = "MP_Christmas3_Tat_042_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_043", + label = "Goat", + hashMale = "MP_Christmas3_Tat_043_M", + hashFemale = "MP_Christmas3_Tat_043_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_044", + label = "Rat", + hashMale = "MP_Christmas3_Tat_044_M", + hashFemale = "MP_Christmas3_Tat_044_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_045", + label = "Rabbit", + hashMale = "MP_Christmas3_Tat_045_M", + hashFemale = "MP_Christmas3_Tat_045_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_046", + label = "Ox", + hashMale = "MP_Christmas3_Tat_046_M", + hashFemale = "MP_Christmas3_Tat_046_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_047", + label = "Pig", + hashMale = "MP_Christmas3_Tat_047_M", + hashFemale = "MP_Christmas3_Tat_047_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_048", + label = "Rooster", + hashMale = "MP_Christmas3_Tat_048_M", + hashFemale = "MP_Christmas3_Tat_048_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_049", + label = "Dog", + hashMale = "MP_Christmas3_Tat_049_M", + hashFemale = "MP_Christmas3_Tat_049_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_050", + label = "Horse", + hashMale = "MP_Christmas3_Tat_050_M", + hashFemale = "MP_Christmas3_Tat_050_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_051", + label = "Tiger", + hashMale = "MP_Christmas3_Tat_051_M", + hashFemale = "MP_Christmas3_Tat_051_F", + zone = "ZONE_TORSO", + collection = "mpchristmas3_overlays" + } + }, + ZONE_LEFT_ARM = { + { + name = "TAT_AR_003", + label = "Toxic Trails", + hashMale = "MP_Airraces_Tattoo_003_M", + hashFemale = "MP_Airraces_Tattoo_003_F", + zone = "ZONE_LEFT_ARM", + collection = "mpairraces_overlays" + }, + { + name = "TAT_BB_024", + label = "Tiki Tower", + hashMale = "MP_Bea_M_LArm_000", + hashFemale = "", + zone = "ZONE_LEFT_ARM", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_017", + label = "Mermaid L.S.", + hashMale = "MP_Bea_M_LArm_001", + hashFemale = "", + zone = "ZONE_LEFT_ARM", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_002", + label = "Tribal Flower", + hashMale = "", + hashFemale = "MP_Bea_F_LArm_000", + zone = "ZONE_LEFT_ARM", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_016", + label = "Parrot", + hashMale = "", + hashFemale = "MP_Bea_F_LArm_001", + zone = "ZONE_LEFT_ARM", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BI_012", + label = "Urban Stunter", + hashMale = "MP_MP_Biker_Tat_012_M", + hashFemale = "MP_MP_Biker_Tat_012_F", + zone = "ZONE_LEFT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_016", + label = "Macabre Tree", + hashMale = "MP_MP_Biker_Tat_016_M", + hashFemale = "MP_MP_Biker_Tat_016_F", + zone = "ZONE_LEFT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_020", + label = "Cranial Rose", + hashMale = "MP_MP_Biker_Tat_020_M", + hashFemale = "MP_MP_Biker_Tat_020_F", + zone = "ZONE_LEFT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_024", + label = "Live to Ride", + hashMale = "MP_MP_Biker_Tat_024_M", + hashFemale = "MP_MP_Biker_Tat_024_F", + zone = "ZONE_LEFT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_025", + label = "Good Luck", + hashMale = "MP_MP_Biker_Tat_025_M", + hashFemale = "MP_MP_Biker_Tat_025_F", + zone = "ZONE_LEFT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_035", + label = "Chain Fist", + hashMale = "MP_MP_Biker_Tat_035_M", + hashFemale = "MP_MP_Biker_Tat_035_F", + zone = "ZONE_LEFT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_045", + label = "Ride Hard Die Fast", + hashMale = "MP_MP_Biker_Tat_045_M", + hashFemale = "MP_MP_Biker_Tat_045_F", + zone = "ZONE_LEFT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_053", + label = "Muffler Helmet", + hashMale = "MP_MP_Biker_Tat_053_M", + hashFemale = "MP_MP_Biker_Tat_053_F", + zone = "ZONE_LEFT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_055", + label = "Poison Scorpion", + hashMale = "MP_MP_Biker_Tat_055_M", + hashFemale = "MP_MP_Biker_Tat_055_F", + zone = "ZONE_LEFT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BUS_003", + label = "$100 Bill", + hashMale = "MP_Buis_M_LeftArm_000", + hashFemale = "", + zone = "ZONE_LEFT_ARM", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_004", + label = "All-Seeing Eye", + hashMale = "MP_Buis_M_LeftArm_001", + hashFemale = "", + zone = "ZONE_LEFT_ARM", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_005", + label = "Greed is Good", + hashMale = "", + hashFemale = "MP_Buis_F_LArm_000", + zone = "ZONE_LEFT_ARM", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_H27_001", + label = "Viking Warrior", + hashMale = "MP_Christmas2017_Tattoo_001_M", + hashFemale = "MP_Christmas2017_Tattoo_001_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_004", + label = "Tiger & Mask", + hashMale = "MP_Christmas2017_Tattoo_004_M", + hashFemale = "MP_Christmas2017_Tattoo_004_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_007", + label = "Spartan Combat", + hashMale = "MP_Christmas2017_Tattoo_007_M", + hashFemale = "MP_Christmas2017_Tattoo_007_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_013", + label = "Katana", + hashMale = "MP_Christmas2017_Tattoo_013_M", + hashFemale = "MP_Christmas2017_Tattoo_013_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_025", + label = "Winged Serpent", + hashMale = "MP_Christmas2017_Tattoo_025_M", + hashFemale = "MP_Christmas2017_Tattoo_025_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_029", + label = "Cerberus", + hashMale = "MP_Christmas2017_Tattoo_029_M", + hashFemale = "MP_Christmas2017_Tattoo_029_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_X2_000", + label = "Skull Rider", + hashMale = "MP_Xmas2_M_Tat_000", + hashFemale = "MP_Xmas2_F_Tat_000", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_010", + label = "Electric Snake", + hashMale = "MP_Xmas2_M_Tat_010", + hashFemale = "MP_Xmas2_F_Tat_010", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_012", + label = "8 Ball Skull", + hashMale = "MP_Xmas2_M_Tat_012", + hashFemale = "MP_Xmas2_F_Tat_012", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_020", + label = "Time's Up Outline", + hashMale = "MP_Xmas2_M_Tat_020", + hashFemale = "MP_Xmas2_F_Tat_020", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_021", + label = "Time's Up Color", + hashMale = "MP_Xmas2_M_Tat_021", + hashFemale = "MP_Xmas2_F_Tat_021", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_GR_004", + label = "Sidearm", + hashMale = "MP_Gunrunning_Tattoo_004_M", + hashFemale = "MP_Gunrunning_Tattoo_004_F", + zone = "ZONE_LEFT_ARM", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_008", + label = "Bandolier", + hashMale = "MP_Gunrunning_Tattoo_008_M", + hashFemale = "MP_Gunrunning_Tattoo_008_F", + zone = "ZONE_LEFT_ARM", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_015", + label = "Spiked Skull", + hashMale = "MP_Gunrunning_Tattoo_015_M", + hashFemale = "MP_Gunrunning_Tattoo_015_F", + zone = "ZONE_LEFT_ARM", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_016", + label = "Blood Money", + hashMale = "MP_Gunrunning_Tattoo_016_M", + hashFemale = "MP_Gunrunning_Tattoo_016_F", + zone = "ZONE_LEFT_ARM", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_025", + label = "Praying Skull", + hashMale = "MP_Gunrunning_Tattoo_025_M", + hashFemale = "MP_Gunrunning_Tattoo_025_F", + zone = "ZONE_LEFT_ARM", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_027", + label = "Serpent Revolver", + hashMale = "MP_Gunrunning_Tattoo_027_M", + hashFemale = "MP_Gunrunning_Tattoo_027_F", + zone = "ZONE_LEFT_ARM", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_H3_040", + label = "Tiger Heart", + hashMale = "mpHeist3_Tat_040_M", + hashFemale = "mpHeist3_Tat_040_F", + zone = "ZONE_LEFT_ARM", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_041", + label = "Mighty Thog", + hashMale = "mpHeist3_Tat_041_M", + hashFemale = "mpHeist3_Tat_041_F", + zone = "ZONE_LEFT_ARM", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H4_009", + label = "Scratch Panther", + hashMale = "MP_Heist4_Tat_009_M", + hashFemale = "MP_Heist4_Tat_009_F", + zone = "ZONE_LEFT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_HP_003", + label = "Diamond Sparkle", + hashMale = "FM_Hip_M_Tat_003", + hashFemale = "FM_Hip_F_Tat_003", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_007", + label = "Bricks", + hashMale = "FM_Hip_M_Tat_007", + hashFemale = "FM_Hip_F_Tat_007", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_015", + label = "Mustache", + hashMale = "FM_Hip_M_Tat_015", + hashFemale = "FM_Hip_F_Tat_015", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_016", + label = "Lightning Bolt", + hashMale = "FM_Hip_M_Tat_016", + hashFemale = "FM_Hip_F_Tat_016", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_026", + label = "Pizza", + hashMale = "FM_Hip_M_Tat_026", + hashFemale = "FM_Hip_F_Tat_026", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_027", + label = "Padlock", + hashMale = "FM_Hip_M_Tat_027", + hashFemale = "FM_Hip_F_Tat_027", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_028", + label = "Thorny Rose", + hashMale = "FM_Hip_M_Tat_028", + hashFemale = "FM_Hip_F_Tat_028", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_034", + label = "Stop", + hashMale = "FM_Hip_M_Tat_034", + hashFemale = "FM_Hip_F_Tat_034", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_037", + label = "Sunrise", + hashMale = "FM_Hip_M_Tat_037", + hashFemale = "FM_Hip_F_Tat_037", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_039", + label = "Sleeve", + hashMale = "FM_Hip_M_Tat_039", + hashFemale = "FM_Hip_F_Tat_039", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_043", + label = "Triangle White", + hashMale = "FM_Hip_M_Tat_043", + hashFemale = "FM_Hip_F_Tat_043", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_048", + label = "Peace", + hashMale = "FM_Hip_M_Tat_048", + hashFemale = "FM_Hip_F_Tat_048", + zone = "ZONE_LEFT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_IE_004", + label = "Piston Sleeve", + hashMale = "MP_MP_ImportExport_Tat_004_M", + hashFemale = "MP_MP_ImportExport_Tat_004_F", + zone = "ZONE_LEFT_ARM", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_IE_008", + label = "Scarlett", + hashMale = "MP_MP_ImportExport_Tat_008_M", + hashFemale = "MP_MP_ImportExport_Tat_008_F", + zone = "ZONE_LEFT_ARM", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_S2_006", + label = "Love Hustle", + hashMale = "MP_LR_Tat_006_M", + hashFemale = "MP_LR_Tat_006_F", + zone = "ZONE_LEFT_ARM", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_018", + label = "Skeleton Party", + hashMale = "MP_LR_Tat_018_M", + hashFemale = "MP_LR_Tat_018_F", + zone = "ZONE_LEFT_ARM", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_022", + label = "My Crazy Life", + hashMale = "MP_LR_Tat_022_M", + hashFemale = "MP_LR_Tat_022_F", + zone = "ZONE_LEFT_ARM", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S1_005", + label = "No Evil", + hashMale = "MP_LR_Tat_005_M", + hashFemale = "MP_LR_Tat_005_F", + zone = "ZONE_LEFT_ARM", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_027", + label = "Los Santos Life", + hashMale = "MP_LR_Tat_027_M", + hashFemale = "MP_LR_Tat_027_F", + zone = "ZONE_LEFT_ARM", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_033", + label = "City Sorrow", + hashMale = "MP_LR_Tat_033_M", + hashFemale = "MP_LR_Tat_033_F", + zone = "ZONE_LEFT_ARM", + collection = "mplowrider_overlays" + }, + { + name = "TAT_L2_005", + label = "Fatal Dagger", + hashMale = "MP_LUXE_TAT_005_M", + hashFemale = "MP_LUXE_TAT_005_F", + zone = "ZONE_LEFT_ARM", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_016", + label = "Egyptian Mural", + hashMale = "MP_LUXE_TAT_016_M", + hashFemale = "MP_LUXE_TAT_016_F", + zone = "ZONE_LEFT_ARM", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_018", + label = "Divine Goddess", + hashMale = "MP_LUXE_TAT_018_M", + hashFemale = "MP_LUXE_TAT_018_F", + zone = "ZONE_LEFT_ARM", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_028", + label = "Python Skull", + hashMale = "MP_LUXE_TAT_028_M", + hashFemale = "MP_LUXE_TAT_028_F", + zone = "ZONE_LEFT_ARM", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_031", + label = "Geometric Design", + hashMale = "MP_LUXE_TAT_031_M", + hashFemale = "MP_LUXE_TAT_031_F", + zone = "ZONE_LEFT_ARM", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_LX_009", + label = "Floral Symmetry", + hashMale = "MP_LUXE_TAT_009_M", + hashFemale = "MP_LUXE_TAT_009_F", + zone = "ZONE_LEFT_ARM", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_020", + label = "Archangel & Mary", + hashMale = "MP_LUXE_TAT_020_M", + hashFemale = "MP_LUXE_TAT_020_F", + zone = "ZONE_LEFT_ARM", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_021", + label = "Gabriel", + hashMale = "MP_LUXE_TAT_021_M", + hashFemale = "MP_LUXE_TAT_021_F", + zone = "ZONE_LEFT_ARM", + collection = "mpluxe_overlays" + }, + { + name = "TAT_FX_006", + label = "Skeleton Shot", + hashMale = "MP_Security_Tat_006_M", + hashFemale = "MP_Security_Tat_006_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_010", + label = "Music Is The Remedy", + hashMale = "MP_Security_Tat_010_M", + hashFemale = "MP_Security_Tat_010_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_011", + label = "Serpent Mic", + hashMale = "MP_Security_Tat_011_M", + hashFemale = "MP_Security_Tat_011_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_019", + label = "Weed Knuckles", + hashMale = "MP_Security_Tat_019_M", + hashFemale = "MP_Security_Tat_019_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_SM_004", + label = "Honor", + hashMale = "MP_Smuggler_Tattoo_004_M", + hashFemale = "MP_Smuggler_Tattoo_004_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_008", + label = "Horrors Of The Deep", + hashMale = "MP_Smuggler_Tattoo_008_M", + hashFemale = "MP_Smuggler_Tattoo_008_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_014", + label = "Mermaid's Curse", + hashMale = "MP_Smuggler_Tattoo_014_M", + hashFemale = "MP_Smuggler_Tattoo_014_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_ST_001", + label = "8 Eyed Skull", + hashMale = "MP_MP_Stunt_tat_001_M", + hashFemale = "MP_MP_Stunt_tat_001_F", + zone = "ZONE_LEFT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_002", + label = "Big Cat", + hashMale = "MP_MP_Stunt_tat_002_M", + hashFemale = "MP_MP_Stunt_tat_002_F", + zone = "ZONE_LEFT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_008", + label = "Moonlight Ride", + hashMale = "MP_MP_Stunt_tat_008_M", + hashFemale = "MP_MP_Stunt_tat_008_F", + zone = "ZONE_LEFT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_022", + label = "Piston Head", + hashMale = "MP_MP_Stunt_tat_022_M", + hashFemale = "MP_MP_Stunt_tat_022_F", + zone = "ZONE_LEFT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_023", + label = "Tanked", + hashMale = "MP_MP_Stunt_tat_023_M", + hashFemale = "MP_MP_Stunt_tat_023_F", + zone = "ZONE_LEFT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_035", + label = "Stuntman's End", + hashMale = "MP_MP_Stunt_tat_035_M", + hashFemale = "MP_MP_Stunt_tat_035_F", + zone = "ZONE_LEFT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_039", + label = "Kaboom", + hashMale = "MP_MP_Stunt_tat_039_M", + hashFemale = "MP_MP_Stunt_tat_039_F", + zone = "ZONE_LEFT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_043", + label = "Engine Arm", + hashMale = "MP_MP_Stunt_tat_043_M", + hashFemale = "MP_MP_Stunt_tat_043_F", + zone = "ZONE_LEFT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_VW_002", + label = "Suits", + hashMale = "MP_Vinewood_Tat_002_M", + hashFemale = "MP_Vinewood_Tat_002_F", + zone = "ZONE_LEFT_ARM", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_005", + label = "Get Lucky", + hashMale = "MP_Vinewood_Tat_005_M", + hashFemale = "MP_Vinewood_Tat_005_F", + zone = "ZONE_LEFT_ARM", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_014", + label = "Vice", + hashMale = "MP_Vinewood_Tat_014_M", + hashFemale = "MP_Vinewood_Tat_014_F", + zone = "ZONE_LEFT_ARM", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_019", + label = "Can't Win Them All", + hashMale = "MP_Vinewood_Tat_019_M", + hashFemale = "MP_Vinewood_Tat_019_F", + zone = "ZONE_LEFT_ARM", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_026", + label = "Banknote Rose", + hashMale = "MP_Vinewood_Tat_026_M", + hashFemale = "MP_Vinewood_Tat_026_F", + zone = "ZONE_LEFT_ARM", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_FM_009", + label = "Burning Heart", + hashMale = "FM_Tat_Award_M_001", + hashFemale = "FM_Tat_Award_F_001", + zone = "ZONE_LEFT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_015", + label = "Racing Blonde", + hashMale = "FM_Tat_Award_M_007", + hashFemale = "FM_Tat_Award_F_007", + zone = "ZONE_LEFT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_023", + label = "Racing Brunette", + hashMale = "FM_Tat_Award_M_015", + hashFemale = "FM_Tat_Award_F_015", + zone = "ZONE_LEFT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_201", + label = "Serpents", + hashMale = "FM_Tat_M_005", + hashFemale = "FM_Tat_F_005", + zone = "ZONE_LEFT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_202", + label = "Oriental Mural", + hashMale = "FM_Tat_M_006", + hashFemale = "FM_Tat_F_006", + zone = "ZONE_LEFT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_203", + label = "Zodiac Skull", + hashMale = "FM_Tat_M_015", + hashFemale = "FM_Tat_F_015", + zone = "ZONE_LEFT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_232", + label = "Lady M", + hashMale = "FM_Tat_M_031", + hashFemale = "FM_Tat_F_031", + zone = "ZONE_LEFT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_242", + label = "Dope Skull", + hashMale = "FM_Tat_M_041", + hashFemale = "FM_Tat_F_041", + zone = "ZONE_LEFT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_SB_008", + label = "Bigness Chimp", + hashMale = "MP_Sum2_Tat_008_M", + hashFemale = "MP_Sum2_Tat_008_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_009", + label = "Up-n-Atomizer Design", + hashMale = "MP_Sum2_Tat_009_M", + hashFemale = "MP_Sum2_Tat_009_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_010", + label = "Rocket Launcher Girl", + hashMale = "MP_Sum2_Tat_010_M", + hashFemale = "MP_Sum2_Tat_010_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_028", + label = "Laser Eyes Skull", + hashMale = "MP_Sum2_Tat_028_M", + hashFemale = "MP_Sum2_Tat_028_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_029", + label = "Classic Vampire", + hashMale = "MP_Sum2_Tat_029_M", + hashFemale = "MP_Sum2_Tat_029_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_049", + label = "Demon Drummer", + hashMale = "MP_Sum2_Tat_049_M", + hashFemale = "MP_Sum2_Tat_049_F", + zone = "ZONE_LEFT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_X6_000", + label = "The Christmas Spirit", + hashMale = "MP_Christmas3_Tat_000_M", + hashFemale = "MP_Christmas3_Tat_000_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_001", + label = "Festive Reaper", + hashMale = "MP_Christmas3_Tat_001_M", + hashFemale = "MP_Christmas3_Tat_001_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_026", + label = "Fooligan Clown", + hashMale = "MP_Christmas3_Tat_026_M", + hashFemale = "MP_Christmas3_Tat_026_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_028", + label = "Dude Outline", + hashMale = "MP_Christmas3_Tat_028_M", + hashFemale = "MP_Christmas3_Tat_028_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_030", + label = "Dude Jester", + hashMale = "MP_Christmas3_Tat_030_M", + hashFemale = "MP_Christmas3_Tat_030_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_033", + label = "Fooligan Impotent Rage", + hashMale = "MP_Christmas3_Tat_033_M", + hashFemale = "MP_Christmas3_Tat_033_F", + zone = "ZONE_LEFT_ARM", + collection = "mpchristmas3_overlays" + } + }, + ZONE_HEAD = { + { + name = "TAT_BB_021", + label = "Pirate Skull", + hashMale = "MP_Bea_M_Head_000", + hashFemale = "", + zone = "ZONE_HEAD", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_022", + label = "Surf LS", + hashMale = "MP_Bea_M_Head_001", + hashFemale = "", + zone = "ZONE_HEAD", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_031", + label = "Shark", + hashMale = "MP_Bea_M_Head_002", + hashFemale = "", + zone = "ZONE_HEAD", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_028", + label = "Little Fish", + hashMale = "MP_Bea_M_Neck_000", + hashFemale = "", + zone = "ZONE_HEAD", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_029", + label = "Surfs Up", + hashMale = "MP_Bea_M_Neck_001", + hashFemale = "", + zone = "ZONE_HEAD", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_008", + label = "Tribal Butterfly", + hashMale = "", + hashFemale = "MP_Bea_F_Neck_000", + zone = "ZONE_HEAD", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BI_009", + label = "Morbid Arachnid", + hashMale = "MP_MP_Biker_Tat_009_M", + hashFemale = "MP_MP_Biker_Tat_009_F", + zone = "ZONE_HEAD", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_038", + label = "FTW", + hashMale = "MP_MP_Biker_Tat_038_M", + hashFemale = "MP_MP_Biker_Tat_038_F", + zone = "ZONE_HEAD", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_051", + label = "Western Stylized", + hashMale = "MP_MP_Biker_Tat_051_M", + hashFemale = "MP_MP_Biker_Tat_051_F", + zone = "ZONE_HEAD", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BUS_005", + label = "Cash is King", + hashMale = "MP_Buis_M_Neck_000", + hashFemale = "", + zone = "ZONE_HEAD", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_006", + label = "Bold Dollar Sign", + hashMale = "MP_Buis_M_Neck_001", + hashFemale = "", + zone = "ZONE_HEAD", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_007", + label = "Script Dollar Sign", + hashMale = "MP_Buis_M_Neck_002", + hashFemale = "", + zone = "ZONE_HEAD", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_008", + label = "$100", + hashMale = "MP_Buis_M_Neck_003", + hashFemale = "", + zone = "ZONE_HEAD", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_007", + label = "Val-de-Grace Logo", + hashMale = "", + hashFemale = "MP_Buis_F_Neck_000", + zone = "ZONE_HEAD", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_008", + label = "Money Rose", + hashMale = "", + hashFemale = "MP_Buis_F_Neck_001", + zone = "ZONE_HEAD", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_X2_007", + label = "Los Muertos", + hashMale = "MP_Xmas2_M_Tat_007", + hashFemale = "MP_Xmas2_F_Tat_007", + zone = "ZONE_HEAD", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_024", + label = "Snake Head Outline", + hashMale = "MP_Xmas2_M_Tat_024", + hashFemale = "MP_Xmas2_F_Tat_024", + zone = "ZONE_HEAD", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_025", + label = "Snake Head Color", + hashMale = "MP_Xmas2_M_Tat_025", + hashFemale = "MP_Xmas2_F_Tat_025", + zone = "ZONE_HEAD", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_029", + label = "Beautiful Death", + hashMale = "MP_Xmas2_M_Tat_029", + hashFemale = "MP_Xmas2_F_Tat_029", + zone = "ZONE_HEAD", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_GR_003", + label = "Lock & Load", + hashMale = "MP_Gunrunning_Tattoo_003_M", + hashFemale = "MP_Gunrunning_Tattoo_003_F", + zone = "ZONE_HEAD", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_H3_000", + label = "Five Stars", + hashMale = "mpHeist3_Tat_000_M", + hashFemale = "mpHeist3_Tat_000_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_001", + label = "Ace of Spades", + hashMale = "mpHeist3_Tat_001_M", + hashFemale = "mpHeist3_Tat_001_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_002", + label = "Animal", + hashMale = "mpHeist3_Tat_002_M", + hashFemale = "mpHeist3_Tat_002_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_003", + label = "Assault Rifle", + hashMale = "mpHeist3_Tat_003_M", + hashFemale = "mpHeist3_Tat_003_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_004", + label = "Bandage", + hashMale = "mpHeist3_Tat_004_M", + hashFemale = "mpHeist3_Tat_004_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_005", + label = "Spades", + hashMale = "mpHeist3_Tat_005_M", + hashFemale = "mpHeist3_Tat_005_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_006", + label = "Crowned", + hashMale = "mpHeist3_Tat_006_M", + hashFemale = "mpHeist3_Tat_006_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_007", + label = "Two Horns", + hashMale = "mpHeist3_Tat_007_M", + hashFemale = "mpHeist3_Tat_007_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_008", + label = "Ice Cream", + hashMale = "mpHeist3_Tat_008_M", + hashFemale = "mpHeist3_Tat_008_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_009", + label = "Knifed", + hashMale = "mpHeist3_Tat_009_M", + hashFemale = "mpHeist3_Tat_009_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_010", + label = "Green Leaf", + hashMale = "mpHeist3_Tat_010_M", + hashFemale = "mpHeist3_Tat_010_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_011", + label = "Lipstick Kiss", + hashMale = "mpHeist3_Tat_011_M", + hashFemale = "mpHeist3_Tat_011_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_012", + label = "Razor Pop", + hashMale = "mpHeist3_Tat_012_M", + hashFemale = "mpHeist3_Tat_012_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_013", + label = "LS Star", + hashMale = "mpHeist3_Tat_013_M", + hashFemale = "mpHeist3_Tat_013_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_014", + label = "LS Wings", + hashMale = "mpHeist3_Tat_014_M", + hashFemale = "mpHeist3_Tat_014_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_015", + label = "On/Off", + hashMale = "mpHeist3_Tat_015_M", + hashFemale = "mpHeist3_Tat_015_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_016", + label = "Sleepy", + hashMale = "mpHeist3_Tat_016_M", + hashFemale = "mpHeist3_Tat_016_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_017", + label = "Space Monkey", + hashMale = "mpHeist3_Tat_017_M", + hashFemale = "mpHeist3_Tat_017_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_018", + label = "Stitches", + hashMale = "mpHeist3_Tat_018_M", + hashFemale = "mpHeist3_Tat_018_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_019", + label = "Teddy Bear", + hashMale = "mpHeist3_Tat_019_M", + hashFemale = "mpHeist3_Tat_019_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_020", + label = "UFO", + hashMale = "mpHeist3_Tat_020_M", + hashFemale = "mpHeist3_Tat_020_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_021", + label = "Wanted", + hashMale = "mpHeist3_Tat_021_M", + hashFemale = "mpHeist3_Tat_021_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_022", + label = "Thog's Sword", + hashMale = "mpHeist3_Tat_022_M", + hashFemale = "mpHeist3_Tat_022_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_042", + label = "Hearts", + hashMale = "mpHeist3_Tat_042_M", + hashFemale = "mpHeist3_Tat_042_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_043", + label = "Diamonds", + hashMale = "mpHeist3_Tat_043_M", + hashFemale = "mpHeist3_Tat_043_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H3_044", + label = "Clubs", + hashMale = "mpHeist3_Tat_044_M", + hashFemale = "mpHeist3_Tat_044_F", + zone = "ZONE_HEAD", + collection = "mpheist3_overlays" + }, + { + name = "TAT_HP_005", + label = "Beautiful Eye", + hashMale = "FM_Hip_M_Tat_005", + hashFemale = "FM_Hip_F_Tat_005", + zone = "ZONE_HEAD", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_021", + label = "Geo Fox", + hashMale = "FM_Hip_M_Tat_021", + hashFemale = "FM_Hip_F_Tat_021", + zone = "ZONE_HEAD", + collection = "mphipster_overlays" + }, + { + name = "TAT_FX_001", + label = "Bright Diamond", + hashMale = "MP_Security_Tat_001_M", + hashFemale = "MP_Security_Tat_001_F", + zone = "ZONE_HEAD", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_002", + label = "Hustle", + hashMale = "MP_Security_Tat_002_M", + hashFemale = "MP_Security_Tat_002_F", + zone = "ZONE_HEAD", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_027", + label = "Black Widow", + hashMale = "MP_Security_Tat_027_M", + hashFemale = "MP_Security_Tat_027_F", + zone = "ZONE_HEAD", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_SM_011", + label = "Sinner", + hashMale = "MP_Smuggler_Tattoo_011_M", + hashFemale = "MP_Smuggler_Tattoo_011_F", + zone = "ZONE_HEAD", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_012", + label = "Thief", + hashMale = "MP_Smuggler_Tattoo_012_M", + hashFemale = "MP_Smuggler_Tattoo_012_F", + zone = "ZONE_HEAD", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_ST_000", + label = "Stunt Skull", + hashMale = "MP_MP_Stunt_Tat_000_M", + hashFemale = "MP_MP_Stunt_Tat_000_F", + zone = "ZONE_HEAD", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_004", + label = "Scorpion", + hashMale = "MP_MP_Stunt_tat_004_M", + hashFemale = "MP_MP_Stunt_tat_004_F", + zone = "ZONE_HEAD", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_006", + label = "Toxic Spider", + hashMale = "MP_MP_Stunt_tat_006_M", + hashFemale = "MP_MP_Stunt_tat_006_F", + zone = "ZONE_HEAD", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_017", + label = "Bat Wheel", + hashMale = "MP_MP_Stunt_tat_017_M", + hashFemale = "MP_MP_Stunt_tat_017_F", + zone = "ZONE_HEAD", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_042", + label = "Flaming Quad", + hashMale = "MP_MP_Stunt_tat_042_M", + hashFemale = "MP_MP_Stunt_tat_042_F", + zone = "ZONE_HEAD", + collection = "mpstunt_overlays" + }, + { + name = "TAT_FM_008", + label = "Skull", + hashMale = "FM_Tat_Award_M_000", + hashFemale = "FM_Tat_Award_F_000", + zone = "ZONE_HEAD", + collection = "multiplayer_overlays" + }, + { + name = "TAT_SB_000", + label = "Live Fast Mono", + hashMale = "MP_Sum2_Tat_000_M", + hashFemale = "MP_Sum2_Tat_000_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_001", + label = "Live Fast Color", + hashMale = "MP_Sum2_Tat_001_M", + hashFemale = "MP_Sum2_Tat_001_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_018", + label = "Branched Skull", + hashMale = "MP_Sum2_Tat_018_M", + hashFemale = "MP_Sum2_Tat_018_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_019", + label = "Scythed Corpse", + hashMale = "MP_Sum2_Tat_019_M", + hashFemale = "MP_Sum2_Tat_019_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_020", + label = "Scythed Corpse & Reaper", + hashMale = "MP_Sum2_Tat_020_M", + hashFemale = "MP_Sum2_Tat_020_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_021", + label = "Third Eye", + hashMale = "MP_Sum2_Tat_021_M", + hashFemale = "MP_Sum2_Tat_021_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_022", + label = "Pierced Third Eye", + hashMale = "MP_Sum2_Tat_022_M", + hashFemale = "MP_Sum2_Tat_022_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_023", + label = "Lip Drip", + hashMale = "MP_Sum2_Tat_023_M", + hashFemale = "MP_Sum2_Tat_023_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_024", + label = "Skin Mask", + hashMale = "MP_Sum2_Tat_024_M", + hashFemale = "MP_Sum2_Tat_024_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_025", + label = "Webbed Scythe", + hashMale = "MP_Sum2_Tat_025_M", + hashFemale = "MP_Sum2_Tat_025_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_026", + label = "Oni Demon", + hashMale = "MP_Sum2_Tat_026_M", + hashFemale = "MP_Sum2_Tat_026_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_027", + label = "Bat Wings", + hashMale = "MP_Sum2_Tat_027_M", + hashFemale = "MP_Sum2_Tat_027_F", + zone = "ZONE_HEAD", + collection = "mpsum2_overlays" + }, + { + name = "TAT_X6_010", + label = "Dude", + hashMale = "MP_Christmas3_Tat_010_M", + hashFemale = "MP_Christmas3_Tat_010_F", + zone = "ZONE_HEAD", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_011", + label = "Fooligan Tribal", + hashMale = "MP_Christmas3_Tat_011_M", + hashFemale = "MP_Christmas3_Tat_011_F", + zone = "ZONE_HEAD", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_012", + label = "Skull Jester", + hashMale = "MP_Christmas3_Tat_012_M", + hashFemale = "MP_Christmas3_Tat_012_F", + zone = "ZONE_HEAD", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_013", + label = "Budonk-adonk!", + hashMale = "MP_Christmas3_Tat_013_M", + hashFemale = "MP_Christmas3_Tat_013_F", + zone = "ZONE_HEAD", + collection = "mpchristmas3_overlays" + } + }, + ZONE_LEFT_LEG = { + { + name = "TAT_BB_027", + label = "Tribal Star", + hashMale = "MP_Bea_M_Lleg_000", + hashFemale = "", + zone = "ZONE_LEFT_LEG", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BI_002", + label = "Rose Tribute", + hashMale = "MP_MP_Biker_Tat_002_M", + hashFemale = "MP_MP_Biker_Tat_002_F", + zone = "ZONE_LEFT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_015", + label = "Ride or Die", + hashMale = "MP_MP_Biker_Tat_015_M", + hashFemale = "MP_MP_Biker_Tat_015_F", + zone = "ZONE_LEFT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_027", + label = "Bad Luck", + hashMale = "MP_MP_Biker_Tat_027_M", + hashFemale = "MP_MP_Biker_Tat_027_F", + zone = "ZONE_LEFT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_036", + label = "Engulfed Skull", + hashMale = "MP_MP_Biker_Tat_036_M", + hashFemale = "MP_MP_Biker_Tat_036_F", + zone = "ZONE_LEFT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_037", + label = "Scorched Soul", + hashMale = "MP_MP_Biker_Tat_037_M", + hashFemale = "MP_MP_Biker_Tat_037_F", + zone = "ZONE_LEFT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_044", + label = "Ride Free", + hashMale = "MP_MP_Biker_Tat_044_M", + hashFemale = "MP_MP_Biker_Tat_044_F", + zone = "ZONE_LEFT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_056", + label = "Bone Cruiser", + hashMale = "MP_MP_Biker_Tat_056_M", + hashFemale = "MP_MP_Biker_Tat_056_F", + zone = "ZONE_LEFT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_057", + label = "Laughing Skull", + hashMale = "MP_MP_Biker_Tat_057_M", + hashFemale = "MP_MP_Biker_Tat_057_F", + zone = "ZONE_LEFT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BUS_F_006", + label = "Single", + hashMale = "", + hashFemale = "MP_Buis_F_LLeg_000", + zone = "ZONE_LEFT_LEG", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_X2_001", + label = "Spider Outline", + hashMale = "MP_Xmas2_M_Tat_001", + hashFemale = "MP_Xmas2_F_Tat_001", + zone = "ZONE_LEFT_LEG", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_002", + label = "Spider Color", + hashMale = "MP_Xmas2_M_Tat_002", + hashFemale = "MP_Xmas2_F_Tat_002", + zone = "ZONE_LEFT_LEG", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_GR_005", + label = "Patriot Skull", + hashMale = "MP_Gunrunning_Tattoo_005_M", + hashFemale = "MP_Gunrunning_Tattoo_005_F", + zone = "ZONE_LEFT_LEG", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_007", + label = "Stylized Tiger", + hashMale = "MP_Gunrunning_Tattoo_007_M", + hashFemale = "MP_Gunrunning_Tattoo_007_F", + zone = "ZONE_LEFT_LEG", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_011", + label = "Death Skull", + hashMale = "MP_Gunrunning_Tattoo_011_M", + hashFemale = "MP_Gunrunning_Tattoo_011_F", + zone = "ZONE_LEFT_LEG", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_023", + label = "Rose Revolver", + hashMale = "MP_Gunrunning_Tattoo_023_M", + hashFemale = "MP_Gunrunning_Tattoo_023_F", + zone = "ZONE_LEFT_LEG", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_H3_032", + label = "Love Fist", + hashMale = "mpHeist3_Tat_032_M", + hashFemale = "mpHeist3_Tat_032_F", + zone = "ZONE_LEFT_LEG", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H4_010", + label = "Tropical Serpent", + hashMale = "MP_Heist4_Tat_010_M", + hashFemale = "MP_Heist4_Tat_010_F", + zone = "ZONE_LEFT_LEG", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_024", + label = "Pineapple Skull", + hashMale = "MP_Heist4_Tat_024_M", + hashFemale = "MP_Heist4_Tat_024_F", + zone = "ZONE_LEFT_LEG", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_025", + label = "Glow Princess", + hashMale = "MP_Heist4_Tat_025_M", + hashFemale = "MP_Heist4_Tat_025_F", + zone = "ZONE_LEFT_LEG", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_028", + label = "Skull Waters", + hashMale = "MP_Heist4_Tat_028_M", + hashFemale = "MP_Heist4_Tat_028_F", + zone = "ZONE_LEFT_LEG", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_029", + label = "Soundwaves", + hashMale = "MP_Heist4_Tat_029_M", + hashFemale = "MP_Heist4_Tat_029_F", + zone = "ZONE_LEFT_LEG", + collection = "mpheist4_overlays" + }, + { + name = "TAT_HP_009", + label = "Squares", + hashMale = "FM_Hip_M_Tat_009", + hashFemale = "FM_Hip_F_Tat_009", + zone = "ZONE_LEFT_LEG", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_019", + label = "Charm", + hashMale = "FM_Hip_M_Tat_019", + hashFemale = "FM_Hip_F_Tat_019", + zone = "ZONE_LEFT_LEG", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_040", + label = "Black Anchor", + hashMale = "FM_Hip_M_Tat_040", + hashFemale = "FM_Hip_F_Tat_040", + zone = "ZONE_LEFT_LEG", + collection = "mphipster_overlays" + }, + { + name = "TAT_S2_029", + label = "Death Us Do Part", + hashMale = "MP_LR_Tat_029_M", + hashFemale = "MP_LR_Tat_029_F", + zone = "ZONE_LEFT_LEG", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S1_007", + label = "LS Serpent", + hashMale = "MP_LR_Tat_007_M", + hashFemale = "MP_LR_Tat_007_F", + zone = "ZONE_LEFT_LEG", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_020", + label = "Presidents", + hashMale = "MP_LR_Tat_020_M", + hashFemale = "MP_LR_Tat_020_F", + zone = "ZONE_LEFT_LEG", + collection = "mplowrider_overlays" + }, + { + name = "TAT_L2_011", + label = "Cross of Roses", + hashMale = "MP_LUXE_TAT_011_M", + hashFemale = "MP_LUXE_TAT_011_F", + zone = "ZONE_LEFT_LEG", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_LX_000", + label = "Serpent of Death", + hashMale = "MP_LUXE_TAT_000_M", + hashFemale = "MP_LUXE_TAT_000_F", + zone = "ZONE_LEFT_LEG", + collection = "mpluxe_overlays" + }, + { + name = "TAT_FX_022", + label = "LS Smoking Cartridges", + hashMale = "MP_Security_Tat_022_M", + hashFemale = "MP_Security_Tat_022_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_023", + label = "Trust", + hashMale = "MP_Security_Tat_023_M", + hashFemale = "MP_Security_Tat_023_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_ST_007", + label = "Dagger Devil", + hashMale = "MP_MP_Stunt_tat_007_M", + hashFemale = "MP_MP_Stunt_tat_007_F", + zone = "ZONE_LEFT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_013", + label = "Dirt Track Hero", + hashMale = "MP_MP_Stunt_tat_013_M", + hashFemale = "MP_MP_Stunt_tat_013_F", + zone = "ZONE_LEFT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_021", + label = "Golden Cobra", + hashMale = "MP_MP_Stunt_tat_021_M", + hashFemale = "MP_MP_Stunt_tat_021_F", + zone = "ZONE_LEFT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_028", + label = "Quad Goblin", + hashMale = "MP_MP_Stunt_tat_028_M", + hashFemale = "MP_MP_Stunt_tat_028_F", + zone = "ZONE_LEFT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_031", + label = "Stunt Jesus", + hashMale = "MP_MP_Stunt_tat_031_M", + hashFemale = "MP_MP_Stunt_tat_031_F", + zone = "ZONE_LEFT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_VW_013", + label = "One-armed Bandit", + hashMale = "MP_Vinewood_Tat_013_M", + hashFemale = "MP_Vinewood_Tat_013_F", + zone = "ZONE_LEFT_LEG", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_027", + label = "8-Ball Rose", + hashMale = "MP_Vinewood_Tat_027_M", + hashFemale = "MP_Vinewood_Tat_027_F", + zone = "ZONE_LEFT_LEG", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_FM_017", + label = "Dragon and Dagger", + hashMale = "FM_Tat_Award_M_009", + hashFemale = "FM_Tat_Award_F_009", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_209", + label = "Melting Skull", + hashMale = "FM_Tat_M_002", + hashFemale = "FM_Tat_F_002", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_211", + label = "Dragon Mural", + hashMale = "FM_Tat_M_008", + hashFemale = "FM_Tat_F_008", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_222", + label = "Serpent Skull", + hashMale = "FM_Tat_M_021", + hashFemale = "FM_Tat_F_021", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_224", + label = "Hottie", + hashMale = "FM_Tat_M_023", + hashFemale = "FM_Tat_F_023", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_227", + label = "Smoking Dagger", + hashMale = "FM_Tat_M_026", + hashFemale = "FM_Tat_F_026", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_233", + label = "Faith", + hashMale = "FM_Tat_M_032", + hashFemale = "FM_Tat_F_032", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_234", + label = "Chinese Dragon", + hashMale = "FM_Tat_M_033", + hashFemale = "FM_Tat_F_033", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_236", + label = "Dragon", + hashMale = "FM_Tat_M_035", + hashFemale = "FM_Tat_F_035", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_238", + label = "Grim Reaper", + hashMale = "FM_Tat_M_037", + hashFemale = "FM_Tat_F_037", + zone = "ZONE_LEFT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_SB_053", + label = "Mobster Skull", + hashMale = "MP_Sum2_Tat_053_M", + hashFemale = "MP_Sum2_Tat_053_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_054", + label = "Wounded Head", + hashMale = "MP_Sum2_Tat_054_M", + hashFemale = "MP_Sum2_Tat_054_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_055", + label = "Stabbed Skull", + hashMale = "MP_Sum2_Tat_055_M", + hashFemale = "MP_Sum2_Tat_055_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_056", + label = "Tiger Blade", + hashMale = "MP_Sum2_Tat_056_M", + hashFemale = "MP_Sum2_Tat_056_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_002", + label = "Cobra Biker", + hashMale = "MP_Sum2_Tat_002_M", + hashFemale = "MP_Sum2_Tat_002_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_014", + label = "Minimal SMG", + hashMale = "MP_Sum2_Tat_014_M", + hashFemale = "MP_Sum2_Tat_014_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_015", + label = "Minimal Advanced Rifle", + hashMale = "MP_Sum2_Tat_015_M", + hashFemale = "MP_Sum2_Tat_015_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_016", + label = "Minimal Sniper Rifle", + hashMale = "MP_Sum2_Tat_016_M", + hashFemale = "MP_Sum2_Tat_016_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_032", + label = "Many-eyed Goat", + hashMale = "MP_Sum2_Tat_032_M", + hashFemale = "MP_Sum2_Tat_032_F", + zone = "ZONE_LEFT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_X6_009", + label = "Naughty Snow Globe", + hashMale = "MP_Christmas3_Tat_009_M", + hashFemale = "MP_Christmas3_Tat_009_F", + zone = "ZONE_LEFT_LEG", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_034", + label = "Zombie Head", + hashMale = "MP_Christmas3_Tat_034_M", + hashFemale = "MP_Christmas3_Tat_034_F", + zone = "ZONE_LEFT_LEG", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_037", + label = "Orang-O-Tang Grenade", + hashMale = "MP_Christmas3_Tat_037_M", + hashFemale = "MP_Christmas3_Tat_037_F", + zone = "ZONE_LEFT_LEG", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_038", + label = "Fool", + hashMale = "MP_Christmas3_Tat_038_M", + hashFemale = "MP_Christmas3_Tat_038_F", + zone = "ZONE_LEFT_LEG", + collection = "mpchristmas3_overlays" + } + }, + ZONE_RIGHT_LEG = { + { + name = "TAT_BB_025", + label = "Tribal Tiki Tower", + hashMale = "MP_Bea_M_Rleg_000", + hashFemale = "", + zone = "ZONE_RIGHT_LEG", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_007", + label = "School of Fish", + hashMale = "", + hashFemale = "MP_Bea_F_RLeg_000", + zone = "ZONE_RIGHT_LEG", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BI_004", + label = "Dragon's Fury", + hashMale = "MP_MP_Biker_Tat_004_M", + hashFemale = "MP_MP_Biker_Tat_004_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_022", + label = "Western Insignia", + hashMale = "MP_MP_Biker_Tat_022_M", + hashFemale = "MP_MP_Biker_Tat_022_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_028", + label = "Dusk Rider", + hashMale = "MP_MP_Biker_Tat_028_M", + hashFemale = "MP_MP_Biker_Tat_028_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_040", + label = "American Made", + hashMale = "MP_MP_Biker_Tat_040_M", + hashFemale = "MP_MP_Biker_Tat_040_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_048", + label = "STFU", + hashMale = "MP_MP_Biker_Tat_048_M", + hashFemale = "MP_MP_Biker_Tat_048_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BUS_F_010", + label = "Diamond Crown", + hashMale = "", + hashFemale = "MP_Buis_F_RLeg_000", + zone = "ZONE_RIGHT_LEG", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_X2_014", + label = "Floral Dagger", + hashMale = "MP_Xmas2_M_Tat_014", + hashFemale = "MP_Xmas2_F_Tat_014", + zone = "ZONE_RIGHT_LEG", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_GR_006", + label = "Combat Skull", + hashMale = "MP_Gunrunning_Tattoo_006_M", + hashFemale = "MP_Gunrunning_Tattoo_006_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_026", + label = "Restless Skull", + hashMale = "MP_Gunrunning_Tattoo_026_M", + hashFemale = "MP_Gunrunning_Tattoo_026_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_030", + label = "Pistol Ace", + hashMale = "MP_Gunrunning_Tattoo_030_M", + hashFemale = "MP_Gunrunning_Tattoo_030_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_H3_031", + label = "Kifflom", + hashMale = "mpHeist3_Tat_031_M", + hashFemale = "mpHeist3_Tat_031_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H4_027", + label = "Skullphones", + hashMale = "MP_Heist4_Tat_027_M", + hashFemale = "MP_Heist4_Tat_027_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpheist4_overlays" + }, + { + name = "TAT_HP_038", + label = "Grub", + hashMale = "FM_Hip_M_Tat_038", + hashFemale = "FM_Hip_F_Tat_038", + zone = "ZONE_RIGHT_LEG", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_042", + label = "Sparkplug", + hashMale = "FM_Hip_M_Tat_042", + hashFemale = "FM_Hip_F_Tat_042", + zone = "ZONE_RIGHT_LEG", + collection = "mphipster_overlays" + }, + { + name = "TAT_S2_030", + label = "San Andreas Prayer", + hashMale = "MP_LR_Tat_030_M", + hashFemale = "MP_LR_Tat_030_F", + zone = "ZONE_RIGHT_LEG", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S1_017", + label = "Ink Me", + hashMale = "MP_LR_Tat_017_M", + hashFemale = "MP_LR_Tat_017_F", + zone = "ZONE_RIGHT_LEG", + collection = "mplowrider_overlays" + }, + { + name = "TAT_S1_023", + label = "Dance of Hearts", + hashMale = "MP_LR_Tat_023_M", + hashFemale = "MP_LR_Tat_023_F", + zone = "ZONE_RIGHT_LEG", + collection = "mplowrider_overlays" + }, + { + name = "TAT_L2_023", + label = "Starmetric", + hashMale = "MP_LUXE_TAT_023_M", + hashFemale = "MP_LUXE_TAT_023_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_LX_001", + label = "Elaborate Los Muertos", + hashMale = "MP_LUXE_TAT_001_M", + hashFemale = "MP_LUXE_TAT_001_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpluxe_overlays" + }, + { + name = "TAT_FX_003", + label = "Bandana Knife", + hashMale = "MP_Security_Tat_003_M", + hashFemale = "MP_Security_Tat_003_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_021", + label = "Graffiti Skull", + hashMale = "MP_Security_Tat_021_M", + hashFemale = "MP_Security_Tat_021_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_SM_020", + label = "Homeward Bound", + hashMale = "MP_Smuggler_Tattoo_020_M", + hashFemale = "MP_Smuggler_Tattoo_020_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_ST_005", + label = "Demon Spark Plug", + hashMale = "MP_MP_Stunt_tat_005_M", + hashFemale = "MP_MP_Stunt_tat_005_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_015", + label = "Praying Gloves", + hashMale = "MP_MP_Stunt_tat_015_M", + hashFemale = "MP_MP_Stunt_tat_015_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_020", + label = "Piston Angel", + hashMale = "MP_MP_Stunt_tat_020_M", + hashFemale = "MP_MP_Stunt_tat_020_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_025", + label = "Speed Freak", + hashMale = "MP_MP_Stunt_tat_025_M", + hashFemale = "MP_MP_Stunt_tat_025_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_032", + label = "Wheelie Mouse", + hashMale = "MP_MP_Stunt_tat_032_M", + hashFemale = "MP_MP_Stunt_tat_032_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_045", + label = "Severed Hand", + hashMale = "MP_MP_Stunt_tat_045_M", + hashFemale = "MP_MP_Stunt_tat_045_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_047", + label = "Brake Knife", + hashMale = "MP_MP_Stunt_tat_047_M", + hashFemale = "MP_MP_Stunt_tat_047_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpstunt_overlays" + }, + { + name = "TAT_VW_020", + label = "Cash is King", + hashMale = "MP_Vinewood_Tat_020_M", + hashFemale = "MP_Vinewood_Tat_020_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_FM_014", + label = "Skull and Sword", + hashMale = "FM_Tat_Award_M_006", + hashFemale = "FM_Tat_Award_F_006", + zone = "ZONE_RIGHT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_210", + label = "The Warrior", + hashMale = "FM_Tat_M_007", + hashFemale = "FM_Tat_F_007", + zone = "ZONE_RIGHT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_212", + label = "Tribal", + hashMale = "FM_Tat_M_017", + hashFemale = "FM_Tat_F_017", + zone = "ZONE_RIGHT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_223", + label = "Fiery Dragon", + hashMale = "FM_Tat_M_022", + hashFemale = "FM_Tat_F_022", + zone = "ZONE_RIGHT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_240", + label = "Broken Skull", + hashMale = "FM_Tat_M_039", + hashFemale = "FM_Tat_F_039", + zone = "ZONE_RIGHT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_241", + label = "Flaming Skull", + hashMale = "FM_Tat_M_040", + hashFemale = "FM_Tat_F_040", + zone = "ZONE_RIGHT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_243", + label = "Flaming Scorpion", + hashMale = "FM_Tat_M_042", + hashFemale = "FM_Tat_F_042", + zone = "ZONE_RIGHT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_244", + label = "Indian Ram", + hashMale = "FM_Tat_M_043", + hashFemale = "FM_Tat_F_043", + zone = "ZONE_RIGHT_LEG", + collection = "multiplayer_overlays" + }, + { + name = "TAT_SB_050", + label = "Gold Gun", + hashMale = "MP_Sum2_Tat_050_M", + hashFemale = "MP_Sum2_Tat_050_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_051", + label = "Blue Serpent", + hashMale = "MP_Sum2_Tat_051_M", + hashFemale = "MP_Sum2_Tat_051_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_052", + label = "Night Demon", + hashMale = "MP_Sum2_Tat_052_M", + hashFemale = "MP_Sum2_Tat_052_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_033", + label = "Three-eyed Demon", + hashMale = "MP_Sum2_Tat_033_M", + hashFemale = "MP_Sum2_Tat_033_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_034", + label = "Smoldering Reaper", + hashMale = "MP_Sum2_Tat_034_M", + hashFemale = "MP_Sum2_Tat_034_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_017", + label = "Skull Grenade", + hashMale = "MP_Sum2_Tat_017_M", + hashFemale = "MP_Sum2_Tat_017_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpsum2_overlays" + }, + { + name = "TAT_X6_008", + label = "Gingerbread Steed", + hashMale = "MP_Christmas3_Tat_008_M", + hashFemale = "MP_Christmas3_Tat_008_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_035", + label = "Erupting Skeleton", + hashMale = "MP_Christmas3_Tat_035_M", + hashFemale = "MP_Christmas3_Tat_035_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_036", + label = "B'Donk Now Crank It Later", + hashMale = "MP_Christmas3_Tat_036_M", + hashFemale = "MP_Christmas3_Tat_036_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_039", + label = "Jack Me", + hashMale = "MP_Christmas3_Tat_039_M", + hashFemale = "MP_Christmas3_Tat_039_F", + zone = "ZONE_RIGHT_LEG", + collection = "mpchristmas3_overlays" + } + }, + ZONE_RIGHT_ARM = { + { + name = "TAT_BB_026", + label = "Tribal Sun", + hashMale = "MP_Bea_M_RArm_000", + hashFemale = "", + zone = "ZONE_RIGHT_ARM", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_030", + label = "Vespucci Beauty", + hashMale = "MP_Bea_M_RArm_001", + hashFemale = "", + zone = "ZONE_RIGHT_ARM", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BB_015", + label = "Tribal Fish", + hashMale = "", + hashFemale = "MP_Bea_F_RArm_001", + zone = "ZONE_RIGHT_ARM", + collection = "mpbeach_overlays" + }, + { + name = "TAT_BI_007", + label = "Swooping Eagle", + hashMale = "MP_MP_Biker_Tat_007_M", + hashFemale = "MP_MP_Biker_Tat_007_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_014", + label = "Lady Mortality", + hashMale = "MP_MP_Biker_Tat_014_M", + hashFemale = "MP_MP_Biker_Tat_014_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_033", + label = "Eagle Emblem", + hashMale = "MP_MP_Biker_Tat_033_M", + hashFemale = "MP_MP_Biker_Tat_033_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_042", + label = "Grim Rider", + hashMale = "MP_MP_Biker_Tat_042_M", + hashFemale = "MP_MP_Biker_Tat_042_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_046", + label = "Skull Chain", + hashMale = "MP_MP_Biker_Tat_046_M", + hashFemale = "MP_MP_Biker_Tat_046_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_047", + label = "Snake Bike", + hashMale = "MP_MP_Biker_Tat_047_M", + hashFemale = "MP_MP_Biker_Tat_047_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_049", + label = "These Colors Don't Run", + hashMale = "MP_MP_Biker_Tat_049_M", + hashFemale = "MP_MP_Biker_Tat_049_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BI_054", + label = "Mum", + hashMale = "MP_MP_Biker_Tat_054_M", + hashFemale = "MP_MP_Biker_Tat_054_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpbiker_overlays" + }, + { + name = "TAT_BUS_009", + label = "Dollar Skull", + hashMale = "MP_Buis_M_RightArm_000", + hashFemale = "", + zone = "ZONE_RIGHT_ARM", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_010", + label = "Green", + hashMale = "MP_Buis_M_RightArm_001", + hashFemale = "", + zone = "ZONE_RIGHT_ARM", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_BUS_F_009", + label = "Dollar Sign", + hashMale = "", + hashFemale = "MP_Buis_F_RArm_000", + zone = "ZONE_RIGHT_ARM", + collection = "mpbusiness_overlays" + }, + { + name = "TAT_H27_006", + label = "Medusa", + hashMale = "MP_Christmas2017_Tattoo_006_M", + hashFemale = "MP_Christmas2017_Tattoo_006_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_012", + label = "Tiger Headdress", + hashMale = "MP_Christmas2017_Tattoo_012_M", + hashFemale = "MP_Christmas2017_Tattoo_012_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_014", + label = "Celtic Band", + hashMale = "MP_Christmas2017_Tattoo_014_M", + hashFemale = "MP_Christmas2017_Tattoo_014_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_017", + label = "Feather Sleeve", + hashMale = "MP_Christmas2017_Tattoo_017_M", + hashFemale = "MP_Christmas2017_Tattoo_017_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_018", + label = "Muscle Tear", + hashMale = "MP_Christmas2017_Tattoo_018_M", + hashFemale = "MP_Christmas2017_Tattoo_018_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_023", + label = "Samurai Tallship", + hashMale = "MP_Christmas2017_Tattoo_023_M", + hashFemale = "MP_Christmas2017_Tattoo_023_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_H27_028", + label = "Spartan Mural", + hashMale = "MP_Christmas2017_Tattoo_028_M", + hashFemale = "MP_Christmas2017_Tattoo_028_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2017_overlays" + }, + { + name = "TAT_X2_003", + label = "Snake Outline", + hashMale = "MP_Xmas2_M_Tat_003", + hashFemale = "MP_Xmas2_F_Tat_003", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_004", + label = "Snake Shaded", + hashMale = "MP_Xmas2_M_Tat_004", + hashFemale = "MP_Xmas2_F_Tat_004", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_008", + label = "Death Before Dishonor", + hashMale = "MP_Xmas2_M_Tat_008", + hashFemale = "MP_Xmas2_F_Tat_008", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_022", + label = "You're Next Outline", + hashMale = "MP_Xmas2_M_Tat_022", + hashFemale = "MP_Xmas2_F_Tat_022", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_023", + label = "You're Next Color", + hashMale = "MP_Xmas2_M_Tat_023", + hashFemale = "MP_Xmas2_F_Tat_023", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_026", + label = "Fuck Luck Outline", + hashMale = "MP_Xmas2_M_Tat_026", + hashFemale = "MP_Xmas2_F_Tat_026", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_X2_027", + label = "Fuck Luck Color", + hashMale = "MP_Xmas2_M_Tat_027", + hashFemale = "MP_Xmas2_F_Tat_027", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas2_overlays" + }, + { + name = "TAT_GR_002", + label = "Grenade", + hashMale = "MP_Gunrunning_Tattoo_002_M", + hashFemale = "MP_Gunrunning_Tattoo_002_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_021", + label = "Have a Nice Day", + hashMale = "MP_Gunrunning_Tattoo_021_M", + hashFemale = "MP_Gunrunning_Tattoo_021_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_GR_024", + label = "Combat Reaper", + hashMale = "MP_Gunrunning_Tattoo_024_M", + hashFemale = "MP_Gunrunning_Tattoo_024_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpgunrunning_overlays" + }, + { + name = "TAT_H3_034", + label = "LS Monogram", + hashMale = "mpHeist3_Tat_034_M", + hashFemale = "mpHeist3_Tat_034_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist3_overlays" + }, + { + name = "TAT_H4_000", + label = "Headphone Splat", + hashMale = "MP_Heist4_Tat_000_M", + hashFemale = "MP_Heist4_Tat_000_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_001", + label = "Tropical Dude", + hashMale = "MP_Heist4_Tat_001_M", + hashFemale = "MP_Heist4_Tat_001_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_002", + label = "Jellyfish Shades", + hashMale = "MP_Heist4_Tat_002_M", + hashFemale = "MP_Heist4_Tat_002_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_003", + label = "Lighthouse", + hashMale = "MP_Heist4_Tat_003_M", + hashFemale = "MP_Heist4_Tat_003_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_005", + label = "LSUR", + hashMale = "MP_Heist4_Tat_005_M", + hashFemale = "MP_Heist4_Tat_005_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_006", + label = "Music Locker", + hashMale = "MP_Heist4_Tat_006_M", + hashFemale = "MP_Heist4_Tat_006_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_007", + label = "Skeleton DJ", + hashMale = "MP_Heist4_Tat_007_M", + hashFemale = "MP_Heist4_Tat_007_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_008", + label = "Smiley Glitch", + hashMale = "MP_Heist4_Tat_008_M", + hashFemale = "MP_Heist4_Tat_008_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_011", + label = "Soulwax", + hashMale = "MP_Heist4_Tat_011_M", + hashFemale = "MP_Heist4_Tat_011_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_012", + label = "Still Slipping", + hashMale = "MP_Heist4_Tat_012_M", + hashFemale = "MP_Heist4_Tat_012_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_026", + label = "Shark Water", + hashMale = "MP_Heist4_Tat_026_M", + hashFemale = "MP_Heist4_Tat_026_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_031", + label = "Octopus Shades", + hashMale = "MP_Heist4_Tat_031_M", + hashFemale = "MP_Heist4_Tat_031_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_H4_032", + label = "K.U.L.T. 99.1 FM", + hashMale = "MP_Heist4_Tat_032_M", + hashFemale = "MP_Heist4_Tat_032_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpheist4_overlays" + }, + { + name = "TAT_HP_001", + label = "Single Arrow", + hashMale = "FM_Hip_M_Tat_001", + hashFemale = "FM_Hip_F_Tat_001", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_004", + label = "Bone", + hashMale = "FM_Hip_M_Tat_004", + hashFemale = "FM_Hip_F_Tat_004", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_008", + label = "Cube", + hashMale = "FM_Hip_M_Tat_008", + hashFemale = "FM_Hip_F_Tat_008", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_010", + label = "Horseshoe", + hashMale = "FM_Hip_M_Tat_010", + hashFemale = "FM_Hip_F_Tat_010", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_014", + label = "Spray Can", + hashMale = "FM_Hip_M_Tat_014", + hashFemale = "FM_Hip_F_Tat_014", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_017", + label = "Eye Triangle", + hashMale = "FM_Hip_M_Tat_017", + hashFemale = "FM_Hip_F_Tat_017", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_018", + label = "Origami", + hashMale = "FM_Hip_M_Tat_018", + hashFemale = "FM_Hip_F_Tat_018", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_020", + label = "Geo Pattern", + hashMale = "FM_Hip_M_Tat_020", + hashFemale = "FM_Hip_F_Tat_020", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_022", + label = "Pencil", + hashMale = "FM_Hip_M_Tat_022", + hashFemale = "FM_Hip_F_Tat_022", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_023", + label = "Smiley", + hashMale = "FM_Hip_M_Tat_023", + hashFemale = "FM_Hip_F_Tat_023", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_036", + label = "Shapes", + hashMale = "FM_Hip_M_Tat_036", + hashFemale = "FM_Hip_F_Tat_036", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_044", + label = "Triangle Black", + hashMale = "FM_Hip_M_Tat_044", + hashFemale = "FM_Hip_F_Tat_044", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_HP_045", + label = "Mesh Band", + hashMale = "FM_Hip_M_Tat_045", + hashFemale = "FM_Hip_F_Tat_045", + zone = "ZONE_RIGHT_ARM", + collection = "mphipster_overlays" + }, + { + name = "TAT_IE_003", + label = "Mechanical Sleeve", + hashMale = "MP_MP_ImportExport_Tat_003_M", + hashFemale = "MP_MP_ImportExport_Tat_003_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_IE_005", + label = "Dialed In", + hashMale = "MP_MP_ImportExport_Tat_005_M", + hashFemale = "MP_MP_ImportExport_Tat_005_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_IE_006", + label = "Engulfed Block", + hashMale = "MP_MP_ImportExport_Tat_006_M", + hashFemale = "MP_MP_ImportExport_Tat_006_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_IE_007", + label = "Drive Forever", + hashMale = "MP_MP_ImportExport_Tat_007_M", + hashFemale = "MP_MP_ImportExport_Tat_007_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpimportexport_overlays" + }, + { + name = "TAT_S2_003", + label = "Lady Vamp", + hashMale = "MP_LR_Tat_003_M", + hashFemale = "MP_LR_Tat_003_F", + zone = "ZONE_RIGHT_ARM", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_028", + label = "Loving Los Muertos", + hashMale = "MP_LR_Tat_028_M", + hashFemale = "MP_LR_Tat_028_F", + zone = "ZONE_RIGHT_ARM", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S2_035", + label = "Black Tears", + hashMale = "MP_LR_Tat_035_M", + hashFemale = "MP_LR_Tat_035_F", + zone = "ZONE_RIGHT_ARM", + collection = "mplowrider2_overlays" + }, + { + name = "TAT_S1_015", + label = "Seductress", + hashMale = "MP_LR_Tat_015_M", + hashFemale = "MP_LR_Tat_015_F", + zone = "ZONE_RIGHT_ARM", + collection = "mplowrider_overlays" + }, + { + name = "TAT_L2_010", + label = "Intrometric", + hashMale = "MP_LUXE_TAT_010_M", + hashFemale = "MP_LUXE_TAT_010_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_017", + label = "Heavenly Deity", + hashMale = "MP_LUXE_TAT_017_M", + hashFemale = "MP_LUXE_TAT_017_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_026", + label = "Floral Print", + hashMale = "MP_LUXE_TAT_026_M", + hashFemale = "MP_LUXE_TAT_026_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_L2_030", + label = "Geometric Design", + hashMale = "MP_LUXE_TAT_030_M", + hashFemale = "MP_LUXE_TAT_030_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpluxe2_overlays" + }, + { + name = "TAT_LX_004", + label = "Floral Raven", + hashMale = "MP_LUXE_TAT_004_M", + hashFemale = "MP_LUXE_TAT_004_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_013", + label = "Mermaid Harpist", + hashMale = "MP_LUXE_TAT_013_M", + hashFemale = "MP_LUXE_TAT_013_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpluxe_overlays" + }, + { + name = "TAT_LX_019", + label = "Geisha Bloom", + hashMale = "MP_LUXE_TAT_019_M", + hashFemale = "MP_LUXE_TAT_019_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpluxe_overlays" + }, + { + name = "TAT_FX_000", + label = "Hood Skeleton", + hashMale = "MP_Security_Tat_000_M", + hashFemale = "MP_Security_Tat_000_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_005", + label = "Peacock", + hashMale = "MP_Security_Tat_005_M", + hashFemale = "MP_Security_Tat_005_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_007", + label = "Ballas 4 Life", + hashMale = "MP_Security_Tat_007_M", + hashFemale = "MP_Security_Tat_007_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_009", + label = "Ascension", + hashMale = "MP_Security_Tat_009_M", + hashFemale = "MP_Security_Tat_009_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_012", + label = "Zombie Rhymes", + hashMale = "MP_Security_Tat_012_M", + hashFemale = "MP_Security_Tat_012_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_FX_020", + label = "Dog Fist", + hashMale = "MP_Security_Tat_020_M", + hashFemale = "MP_Security_Tat_020_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsecurity_overlays" + }, + { + name = "TAT_SM_001", + label = "Crackshot", + hashMale = "MP_Smuggler_Tattoo_001_M", + hashFemale = "MP_Smuggler_Tattoo_001_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_005", + label = "Mutiny", + hashMale = "MP_Smuggler_Tattoo_005_M", + hashFemale = "MP_Smuggler_Tattoo_005_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_SM_023", + label = "Stylized Kraken", + hashMale = "MP_Smuggler_Tattoo_023_M", + hashFemale = "MP_Smuggler_Tattoo_023_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsmuggler_overlays" + }, + { + name = "TAT_ST_003", + label = "Poison Wrench", + hashMale = "MP_MP_Stunt_tat_003_M", + hashFemale = "MP_MP_Stunt_tat_003_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_009", + label = "Arachnid of Death", + hashMale = "MP_MP_Stunt_tat_009_M", + hashFemale = "MP_MP_Stunt_tat_009_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_010", + label = "Grave Vulture", + hashMale = "MP_MP_Stunt_tat_010_M", + hashFemale = "MP_MP_Stunt_tat_010_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_016", + label = "Coffin Racer", + hashMale = "MP_MP_Stunt_tat_016_M", + hashFemale = "MP_MP_Stunt_tat_016_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_036", + label = "Biker Stallion", + hashMale = "MP_MP_Stunt_tat_036_M", + hashFemale = "MP_MP_Stunt_tat_036_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_038", + label = "One Down Five Up", + hashMale = "MP_MP_Stunt_tat_038_M", + hashFemale = "MP_MP_Stunt_tat_038_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_ST_049", + label = "Seductive Mechanic", + hashMale = "MP_MP_Stunt_tat_049_M", + hashFemale = "MP_MP_Stunt_tat_049_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpstunt_overlays" + }, + { + name = "TAT_VW_004", + label = "Lady Luck", + hashMale = "MP_Vinewood_Tat_004_M", + hashFemale = "MP_Vinewood_Tat_004_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_018", + label = "The Gambler's Life", + hashMale = "MP_Vinewood_Tat_018_M", + hashFemale = "MP_Vinewood_Tat_018_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_025", + label = "Queen of Roses", + hashMale = "MP_Vinewood_Tat_025_M", + hashFemale = "MP_Vinewood_Tat_025_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_VW_028", + label = "Skull & Aces", + hashMale = "MP_Vinewood_Tat_028_M", + hashFemale = "MP_Vinewood_Tat_028_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpvinewood_overlays" + }, + { + name = "TAT_FM_010", + label = "Grim Reaper Smoking Gun", + hashMale = "FM_Tat_Award_M_002", + hashFemale = "FM_Tat_Award_F_002", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_018", + label = "Ride or Die", + hashMale = "FM_Tat_Award_M_010", + hashFemale = "FM_Tat_Award_F_010", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_204", + label = "Brotherhood", + hashMale = "FM_Tat_M_000", + hashFemale = "FM_Tat_F_000", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_205", + label = "Dragons", + hashMale = "FM_Tat_M_001", + hashFemale = "FM_Tat_F_001", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_206", + label = "Dragons and Skull", + hashMale = "FM_Tat_M_003", + hashFemale = "FM_Tat_F_003", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_207", + label = "Flower Mural", + hashMale = "FM_Tat_M_014", + hashFemale = "FM_Tat_F_014", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_208", + label = "Serpent Skull", + hashMale = "FM_Tat_M_018", + hashFemale = "FM_Tat_F_018", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_228", + label = "Virgin Mary", + hashMale = "FM_Tat_M_027", + hashFemale = "FM_Tat_F_027", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_229", + label = "Mermaid", + hashMale = "FM_Tat_M_028", + hashFemale = "FM_Tat_F_028", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_239", + label = "Dagger", + hashMale = "FM_Tat_M_038", + hashFemale = "FM_Tat_F_038", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_FM_247", + label = "Lion", + hashMale = "FM_Tat_M_047", + hashFemale = "FM_Tat_F_047", + zone = "ZONE_RIGHT_ARM", + collection = "multiplayer_overlays" + }, + { + name = "TAT_SB_011", + label = "Nothing Mini About It", + hashMale = "MP_Sum2_Tat_011_M", + hashFemale = "MP_Sum2_Tat_011_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_012", + label = "Snake Revolver", + hashMale = "MP_Sum2_Tat_012_M", + hashFemale = "MP_Sum2_Tat_012_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_013", + label = "Weapon Sleeve", + hashMale = "MP_Sum2_Tat_013_M", + hashFemale = "MP_Sum2_Tat_013_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_030", + label = "Centipede", + hashMale = "MP_Sum2_Tat_030_M", + hashFemale = "MP_Sum2_Tat_030_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_031", + label = "Fleshy Eye", + hashMale = "MP_Sum2_Tat_031_M", + hashFemale = "MP_Sum2_Tat_031_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_045", + label = "Armored Arm", + hashMale = "MP_Sum2_Tat_045_M", + hashFemale = "MP_Sum2_Tat_045_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_046", + label = "Demon Smile", + hashMale = "MP_Sum2_Tat_046_M", + hashFemale = "MP_Sum2_Tat_046_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_047", + label = "Angel & Devil", + hashMale = "MP_Sum2_Tat_047_M", + hashFemale = "MP_Sum2_Tat_047_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_SB_048", + label = "Death Is Certain", + hashMale = "MP_Sum2_Tat_048_M", + hashFemale = "MP_Sum2_Tat_048_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpsum2_overlays" + }, + { + name = "TAT_X6_002", + label = "Skull Bauble", + hashMale = "MP_Christmas3_Tat_002_M", + hashFemale = "MP_Christmas3_Tat_002_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_003", + label = "Bony Snowman", + hashMale = "MP_Christmas3_Tat_003_M", + hashFemale = "MP_Christmas3_Tat_003_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_027", + label = "Orang-O-Tang Dude", + hashMale = "MP_Christmas3_Tat_027_M", + hashFemale = "MP_Christmas3_Tat_027_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_029", + label = "Orang-O-Tang Gray", + hashMale = "MP_Christmas3_Tat_029_M", + hashFemale = "MP_Christmas3_Tat_029_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_031", + label = "Sailor Fuku Killer", + hashMale = "MP_Christmas3_Tat_031_M", + hashFemale = "MP_Christmas3_Tat_031_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas3_overlays" + }, + { + name = "TAT_X6_032", + label = "Fooligan", + hashMale = "MP_Christmas3_Tat_032_M", + hashFemale = "MP_Christmas3_Tat_032_F", + zone = "ZONE_RIGHT_ARM", + collection = "mpchristmas3_overlays" + } + }, + ZONE_HAIR = { + { + name = "hair-0-186", + label = "hair-0-186", + hashMale = "FM_M_Hair_003_a", + hashFemale = "FM_F_Hair_003_a", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-187", + label = "hair-0-187", + hashMale = "FM_M_Hair_003_b", + hashFemale = "FM_F_Hair_003_b", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-188", + label = "hair-0-188", + hashMale = "FM_M_Hair_003_c", + hashFemale = "FM_F_Hair_003_c", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-189", + label = "hair-0-189", + hashMale = "FM_M_Hair_003_d", + hashFemale = "FM_F_Hair_003_d", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-190", + label = "hair-0-190", + hashMale = "FM_M_Hair_003_e", + hashFemale = "FM_F_Hair_003_e", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-156", + label = "hair-0-156", + hashMale = "FM_M_Hair_005_a", + hashFemale = "FM_F_Hair_005_a", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-157", + label = "hair-0-157", + hashMale = "FM_M_Hair_005_b", + hashFemale = "FM_F_Hair_005_b", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-158", + label = "hair-0-158", + hashMale = "FM_M_Hair_005_c", + hashFemale = "FM_F_Hair_005_c", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-159", + label = "hair-0-159", + hashMale = "FM_M_Hair_005_d", + hashFemale = "FM_F_Hair_005_d", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-160", + label = "hair-0-160", + hashMale = "FM_M_Hair_005_e", + hashFemale = "FM_F_Hair_005_e", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-191", + label = "hair-0-191", + hashMale = "FM_M_Hair_006_a", + hashFemale = "FM_F_Hair_006_a", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-192", + label = "hair-0-192", + hashMale = "FM_M_Hair_006_b", + hashFemale = "FM_F_Hair_006_b", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-193", + label = "hair-0-193", + hashMale = "FM_M_Hair_006_c", + hashFemale = "FM_F_Hair_006_c", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-194", + label = "hair-0-194", + hashMale = "FM_M_Hair_006_d", + hashFemale = "FM_F_Hair_006_d", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-195", + label = "hair-0-195", + hashMale = "FM_M_Hair_006_e", + hashFemale = "FM_F_Hair_006_e", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-166", + label = "hair-0-166", + hashMale = "FM_M_Hair_013_a", + hashFemale = "FM_F_Hair_013_a", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-167", + label = "hair-0-167", + hashMale = "FM_M_Hair_013_b", + hashFemale = "FM_F_Hair_013_b", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-168", + label = "hair-0-168", + hashMale = "FM_M_Hair_013_c", + hashFemale = "FM_F_Hair_013_c", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-169", + label = "hair-0-169", + hashMale = "FM_M_Hair_013_d", + hashFemale = "FM_F_Hair_013_d", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-170", + label = "hair-0-170", + hashMale = "FM_M_Hair_013_e", + hashFemale = "FM_F_Hair_013_e", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-171", + label = "hair-0-171", + hashMale = "FM_M_Hair_014_a", + hashFemale = "FM_F_Hair_014_a", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-172", + label = "hair-0-172", + hashMale = "FM_M_Hair_014_b", + hashFemale = "FM_F_Hair_014_b", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-173", + label = "hair-0-173", + hashMale = "FM_M_Hair_014_c", + hashFemale = "FM_F_Hair_014_c", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-174", + label = "hair-0-174", + hashMale = "FM_M_Hair_014_d", + hashFemale = "FM_F_Hair_014_d", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-175", + label = "hair-0-175", + hashMale = "FM_M_Hair_014_e", + hashFemale = "FM_F_Hair_014_e", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-201", + label = "hair-0-201", + hashMale = "FM_M_Hair_long_a", + hashFemale = "FM_F_Hair_long_a", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-202", + label = "hair-0-202", + hashMale = "FM_M_Hair_long_b", + hashFemale = "FM_F_Hair_long_b", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-203", + label = "hair-0-203", + hashMale = "FM_M_Hair_long_c", + hashFemale = "FM_F_Hair_long_c", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-204", + label = "hair-0-204", + hashMale = "FM_M_Hair_long_d", + hashFemale = "FM_F_Hair_long_d", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-205", + label = "hair-0-205", + hashMale = "FM_M_Hair_long_e", + hashFemale = "FM_F_Hair_long_e", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-181", + label = "hair-0-181", + hashMale = "FM_M_Hair_001_a", + hashFemale = "FM_F_Hair_001_a", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-182", + label = "hair-0-182", + hashMale = "FM_M_Hair_001_b", + hashFemale = "FM_F_Hair_001_b", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-183", + label = "hair-0-183", + hashMale = "FM_M_Hair_001_c", + hashFemale = "FM_F_Hair_001_c", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-184", + label = "hair-0-184", + hashMale = "FM_M_Hair_001_d", + hashFemale = "FM_F_Hair_001_d", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-185", + label = "hair-0-185", + hashMale = "FM_M_Hair_001_e", + hashFemale = "FM_F_Hair_001_e", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-196", + label = "hair-0-196", + hashMale = "FM_M_Hair_008_a", + hashFemale = "FM_F_Hair_008_a", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-197", + label = "hair-0-197", + hashMale = "FM_M_Hair_008_b", + hashFemale = "FM_F_Hair_008_b", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-198", + label = "hair-0-198", + hashMale = "FM_M_Hair_008_c", + hashFemale = "FM_F_Hair_008_c", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-199", + label = "hair-0-199", + hashMale = "FM_M_Hair_008_d", + hashFemale = "FM_F_Hair_008_d", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-200", + label = "hair-0-200", + hashMale = "FM_M_Hair_008_e", + hashFemale = "FM_F_Hair_008_e", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-304", + label = "hair-0-304", + hashMale = "NG_M_Hair_001", + hashFemale = "NG_F_Hair_001", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-305", + label = "hair-0-305", + hashMale = "NG_M_Hair_002", + hashFemale = "NG_F_Hair_002", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-306", + label = "hair-0-306", + hashMale = "NG_M_Hair_003", + hashFemale = "NG_F_Hair_003", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-307", + label = "hair-0-307", + hashMale = "NG_M_Hair_004", + hashFemale = "NG_F_Hair_004", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-308", + label = "hair-0-308", + hashMale = "NG_M_Hair_005", + hashFemale = "NG_F_Hair_005", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-309", + label = "hair-0-309", + hashMale = "NG_M_Hair_006", + hashFemale = "NG_F_Hair_006", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-310", + label = "hair-0-310", + hashMale = "NG_M_Hair_007", + hashFemale = "NG_F_Hair_007", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-311", + label = "hair-0-311", + hashMale = "NG_M_Hair_008", + hashFemale = "NG_F_Hair_008", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-312", + label = "hair-0-312", + hashMale = "NG_M_Hair_009", + hashFemale = "NG_F_Hair_009", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-313", + label = "hair-0-313", + hashMale = "NG_M_Hair_010", + hashFemale = "NG_F_Hair_010", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-314", + label = "hair-0-314", + hashMale = "NG_M_Hair_011", + hashFemale = "NG_F_Hair_011", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-315", + label = "hair-0-315", + hashMale = "NG_M_Hair_012", + hashFemale = "NG_F_Hair_012", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-316", + label = "hair-0-316", + hashMale = "NG_M_Hair_013", + hashFemale = "NG_F_Hair_013", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-317", + label = "hair-0-317", + hashMale = "NG_M_Hair_014", + hashFemale = "NG_F_Hair_014", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-318", + label = "hair-0-318", + hashMale = "NG_M_Hair_015", + hashFemale = "NG_F_Hair_015", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-319", + label = "hair-0-319", + hashMale = "NGBea_M_Hair_000", + hashFemale = "NGBea_F_Hair_000", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-320", + label = "hair-0-320", + hashMale = "NGBea_M_Hair_001", + hashFemale = "NGBea_F_Hair_001", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-321", + label = "hair-0-321", + hashMale = "NGBus_M_Hair_000", + hashFemale = "NGBus_F_Hair_000", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-322", + label = "hair-0-322", + hashMale = "NGBus_M_Hair_001", + hashFemale = "NGBus_F_Hair_001", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-323", + label = "hair-0-323", + hashMale = "NGHip_M_Hair_000", + hashFemale = "NGHip_F_Hair_000", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-324", + label = "hair-0-324", + hashMale = "NGHip_M_Hair_001", + hashFemale = "NGHip_F_Hair_001", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-0-325", + label = "hair-0-325", + hashMale = "NGInd_M_Hair_000", + hashFemale = "NGInd_F_Hair_000", + zone = "ZONE_HAIR", + collection = "multiplayer_overlays" + }, + { + name = "hair-3-33", + label = "hair-3-33", + hashMale = "FM_Hair_Muzz", + hashFemale = "FM_Hair_Fuzz", + zone = "ZONE_HAIR", + collection = "mpBeach_overlays" + }, + { + name = "hair-4-30", + label = "hair-4-30", + hashMale = "FM_Bus_M_Hair_a", + hashFemale = "FM_Bus_F_Hair_a", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-31", + label = "hair-4-31", + hashMale = "FM_Bus_M_Hair_b", + hashFemale = "FM_Bus_F_Hair_b", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-32", + label = "hair-4-32", + hashMale = "FM_Bus_M_Hair_c", + hashFemale = "FM_Bus_F_Hair_c", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-33", + label = "hair-4-33", + hashMale = "FM_Bus_M_Hair_d", + hashFemale = "FM_Bus_F_Hair_d", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-34", + label = "hair-4-34", + hashMale = "FM_Bus_M_Hair_e", + hashFemale = "FM_Bus_F_Hair_e", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-35", + label = "hair-4-35", + hashMale = "FM_Bus_M_Hair_000_a", + hashFemale = "FM_Bus_F_Hair_000_a", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-36", + label = "hair-4-36", + hashMale = "FM_Bus_M_Hair_000_b", + hashFemale = "FM_Bus_F_Hair_000_b", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-37", + label = "hair-4-37", + hashMale = "FM_Bus_M_Hair_000_c", + hashFemale = "FM_Bus_F_Hair_000_c", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-38", + label = "hair-4-38", + hashMale = "FM_Bus_M_Hair_000_d", + hashFemale = "FM_Bus_F_Hair_000_d", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-39", + label = "hair-4-39", + hashMale = "FM_Bus_M_Hair_000_e", + hashFemale = "FM_Bus_F_Hair_000_e", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-40", + label = "hair-4-40", + hashMale = "FM_Bus_M_Hair_001_a", + hashFemale = "FM_Bus_F_Hair_001_a", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-41", + label = "hair-4-41", + hashMale = "FM_Bus_M_Hair_001_b", + hashFemale = "FM_Bus_F_Hair_001_b", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-42", + label = "hair-4-42", + hashMale = "FM_Bus_M_Hair_001_c", + hashFemale = "FM_Bus_F_Hair_001_c", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-43", + label = "hair-4-43", + hashMale = "FM_Bus_M_Hair_001_d", + hashFemale = "FM_Bus_F_Hair_001_d", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-4-44", + label = "hair-4-44", + hashMale = "FM_Bus_M_Hair_001_e", + hashFemale = "FM_Bus_F_Hair_001_e", + zone = "ZONE_HAIR", + collection = "mpBusiness_overlays" + }, + { + name = "hair-9-10", + label = "hair-9-10", + hashMale = "FM_Hip_M_Hair_000_a", + hashFemale = "FM_Hip_F_Hair_000_a", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-11", + label = "hair-9-11", + hashMale = "FM_Hip_M_Hair_000_b", + hashFemale = "FM_Hip_F_Hair_000_b", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-12", + label = "hair-9-12", + hashMale = "FM_Hip_M_Hair_000_c", + hashFemale = "FM_Hip_F_Hair_000_c", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-13", + label = "hair-9-13", + hashMale = "FM_Hip_M_Hair_000_d", + hashFemale = "FM_Hip_F_Hair_000_d", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-14", + label = "hair-9-14", + hashMale = "FM_Hip_M_Hair_000_e", + hashFemale = "FM_Hip_F_Hair_000_e", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-5", + label = "hair-9-5", + hashMale = "FM_Hip_M_Hair_001_a", + hashFemale = "FM_Hip_F_Hair_001_a", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-6", + label = "hair-9-6", + hashMale = "FM_Hip_M_Hair_001_b", + hashFemale = "FM_Hip_F_Hair_001_b", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-7", + label = "hair-9-7", + hashMale = "FM_Hip_M_Hair_001_c", + hashFemale = "FM_Hip_F_Hair_001_c", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-8", + label = "hair-9-8", + hashMale = "FM_Hip_M_Hair_001_d", + hashFemale = "FM_Hip_F_Hair_001_d", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-9", + label = "hair-9-9", + hashMale = "FM_Hip_M_Hair_001_e", + hashFemale = "FM_Hip_F_Hair_001_e", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-187", + label = "hair-9-187", + hashMale = "FM_M_Hair_017_a", + hashFemale = "FM_F_Hair_017_a", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-188", + label = "hair-9-188", + hashMale = "FM_M_Hair_017_b", + hashFemale = "FM_F_Hair_017_b", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-189", + label = "hair-9-189", + hashMale = "FM_M_Hair_017_c", + hashFemale = "FM_F_Hair_017_c", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-190", + label = "hair-9-190", + hashMale = "FM_M_Hair_017_d", + hashFemale = "FM_F_Hair_017_d", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-191", + label = "hair-9-191", + hashMale = "FM_M_Hair_017_e", + hashFemale = "FM_F_Hair_017_e", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-192", + label = "hair-9-192", + hashMale = "FM_M_Hair_020_a", + hashFemale = "FM_F_Hair_020_a", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-193", + label = "hair-9-193", + hashMale = "FM_M_Hair_020_b", + hashFemale = "FM_F_Hair_020_b", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-194", + label = "hair-9-194", + hashMale = "FM_M_Hair_020_c", + hashFemale = "FM_F_Hair_020_c", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-195", + label = "hair-9-195", + hashMale = "FM_M_Hair_020_d", + hashFemale = "FM_F_Hair_020_d", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-196", + label = "hair-9-196", + hashMale = "FM_M_Hair_020_e", + hashFemale = "FM_F_Hair_020_e", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-197", + label = "hair-9-197", + hashMale = "FM_Disc_M_Hair_001_a", + hashFemale = "FM_Disc_F_Hair_001_a", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-198", + label = "hair-9-198", + hashMale = "FM_Disc_M_Hair_001_b", + hashFemale = "FM_Disc_F_Hair_001_b", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-199", + label = "hair-9-199", + hashMale = "FM_Disc_M_Hair_001_c", + hashFemale = "FM_Disc_F_Hair_001_c", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-200", + label = "hair-9-200", + hashMale = "FM_Disc_M_Hair_001_d", + hashFemale = "FM_Disc_F_Hair_001_d", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-9-201", + label = "hair-9-201", + hashMale = "FM_Disc_M_Hair_001_e", + hashFemale = "FM_Disc_F_Hair_001_e", + zone = "ZONE_HAIR", + collection = "mpHipster_overlays" + }, + { + name = "hair-18-81", + label = "hair-18-81", + hashMale = "LR_M_Hair_000", + hashFemale = "LR_F_Hair_000", + zone = "ZONE_HAIR", + collection = "mpLowrider_overlays" + }, + { + name = "hair-18-82", + label = "hair-18-82", + hashMale = "LR_M_Hair_001", + hashFemale = "LR_F_Hair_001", + zone = "ZONE_HAIR", + collection = "mpLowrider_overlays" + }, + { + name = "hair-18-83", + label = "hair-18-83", + hashMale = "LR_M_Hair_002", + hashFemale = "LR_F_Hair_002", + zone = "ZONE_HAIR", + collection = "mpLowrider_overlays" + }, + { + name = "hair-19-88", + label = "hair-19-88", + hashMale = "LR_M_Hair_003", + hashFemale = "LR_F_Hair_003", + zone = "ZONE_HAIR", + collection = "mpLowrider2_overlays" + }, + { + name = "hair-19-91", + label = "hair-19-91", + hashMale = "LR_M_Hair_004", + hashFemale = "LR_F_Hair_004", + zone = "ZONE_HAIR", + collection = "mpLowrider2_overlays" + }, + { + name = "hair-19-93", + label = "hair-19-93", + hashMale = "LR_M_Hair_006", + hashFemale = "LR_F_Hair_006", + zone = "ZONE_HAIR", + collection = "mpLowrider2_overlays" + }, + { + name = "hair-19-92", + label = "hair-19-92", + hashMale = "LR_M_Hair_005", + hashFemale = "LR_F_Hair_005", + zone = "ZONE_HAIR", + collection = "mpLowrider2_overlays" + }, + { + name = "hair-24-5", + label = "hair-24-5", + hashMale = "MP_Biker_Hair_000_M", + hashFemale = "MP_Biker_Hair_000_F", + zone = "ZONE_HAIR", + collection = "mpBiker_overlays" + }, + { + name = "hair-24-7", + label = "hair-24-7", + hashMale = "MP_Biker_Hair_001_M", + hashFemale = "MP_Biker_Hair_001_F", + zone = "ZONE_HAIR", + collection = "mpBiker_overlays" + }, + { + name = "hair-24-9", + label = "hair-24-9", + hashMale = "MP_Biker_Hair_002_M", + hashFemale = "MP_Biker_Hair_002_F", + zone = "ZONE_HAIR", + collection = "mpBiker_overlays" + }, + { + name = "hair-24-11", + label = "hair-24-11", + hashMale = "MP_Biker_Hair_003_M", + hashFemale = "MP_Biker_Hair_003_F", + zone = "ZONE_HAIR", + collection = "mpBiker_overlays" + }, + { + name = "hair-24-13", + label = "hair-24-13", + hashMale = "MP_Biker_Hair_004_M", + hashFemale = "MP_Biker_Hair_004_F", + zone = "ZONE_HAIR", + collection = "mpBiker_overlays" + }, + { + name = "hair-24-15", + label = "hair-24-15", + hashMale = "MP_Biker_Hair_005_M", + hashFemale = "MP_Biker_Hair_005_F", + zone = "ZONE_HAIR", + collection = "mpBiker_overlays" + }, + { + name = "hair-24-17", + label = "hair-24-17", + hashMale = "MP_Biker_Hair_006_M", + hashFemale = "MP_Biker_Hair_006_F", + zone = "ZONE_HAIR", + collection = "mpBiker_overlays" + }, + { + name = "hair-25-52", + label = "hair-25-52", + hashMale = "MP_Gunrunning_Hair_M_000_M", + hashFemale = "MP_Gunrunning_Hair_F_000_M", + zone = "ZONE_HAIR", + collection = "mpGunrunning_overlays" + }, + { + name = "hair-25-53", + label = "hair-25-53", + hashMale = "MP_Gunrunning_Hair_M_001_M", + hashFemale = "MP_Gunrunning_Hair_F_001_M", + zone = "ZONE_HAIR", + collection = "mpGunrunning_overlays" + }, + { + name = "hair-25-54", + label = "hair-25-54", + hashMale = "MP_Gunrunning_Hair_M_000_F", + hashFemale = "MP_Gunrunning_Hair_F_000_F", + zone = "ZONE_HAIR", + collection = "mpGunrunning_overlays" + }, + { + name = "hair-25-55", + label = "hair-25-55", + hashMale = "MP_Gunrunning_Hair_M_001_F", + hashFemale = "MP_Gunrunning_Hair_F_001_F", + zone = "ZONE_HAIR", + collection = "mpGunrunning_overlays" + }, + { + name = "hair-29-0", + label = "hair-29-0", + hashMale = "MP_Vinewood_Hair_M_000_M", + hashFemale = "MP_Vinewood_Hair_F_000_M", + zone = "ZONE_HAIR", + collection = "mpVinewood_overlays" + }, + { + name = "hair-29-1", + label = "hair-29-1", + hashMale = "MP_Vinewood_Hair_M_000_F", + hashFemale = "MP_Vinewood_Hair_F_000_F", + zone = "ZONE_HAIR", + collection = "mpVinewood_overlays" + }, + { + name = "hair-31-0", + label = "hair-31-0", + hashMale = "MP_Tuner_Hair_000_M", + hashFemale = "MP_Tuner_Hair_000_F", + zone = "ZONE_HAIR", + collection = "mpTuner_overlays" + }, + { + name = "hair-31-1", + label = "hair-31-1", + hashMale = "MP_Tuner_Hair_001_M", + hashFemale = "MP_Tuner_Hair_001_F", + zone = "ZONE_HAIR", + collection = "mpTuner_overlays" + }, + { + name = "hair-32-4", + label = "hair-32-4", + hashMale = "MP_Security_Hair_000_M", + hashFemale = "MP_Security_Hair_000_F", + zone = "ZONE_HAIR", + collection = "mpSecurity_overlays" + } + } +} diff --git a/resources/[core]/illenium-appearance/shared/theme.lua b/resources/[core]/illenium-appearance/shared/theme.lua new file mode 100644 index 0000000..7ce1990 --- /dev/null +++ b/resources/[core]/illenium-appearance/shared/theme.lua @@ -0,0 +1,61 @@ +Config.Theme = { + currentTheme = "qb-core", + themes = { + { + id = "default", + borderRadius = "4px", + fontColor = "255, 255, 255", + fontColorHover = "255, 255, 255", + fontColorSelected = "0, 0, 0", + fontFamily = "Inter", + primaryBackground = "0, 0, 0", + primaryBackgroundSelected = "255, 255, 255", + secondaryBackground = "0, 0, 0", + scaleOnHover = false, + sectionFontWeight = "normal", + smoothBackgroundTransition = false + }, + { + id = "qb-core", + borderRadius = "3vh", + fontColor = "255, 255, 255", + fontColorHover = "255, 255, 255", + fontColorSelected = "255, 255, 255", + fontFamily = "Poppins", + primaryBackground = "220, 20, 60", + primaryBackgroundSelected = "220, 20, 60", + secondaryBackground = "23, 23, 23", + scaleOnHover = true, + sectionFontWeight = "bold", + smoothBackgroundTransition = true + }, + { + id = "project-sloth", + borderRadius = "6vh", + fontColor = "255, 255, 255", + fontColorHover = "255, 255, 255", + fontColorSelected = "255, 255, 255", + fontFamily = "Inter", + primaryBackground = "2, 241, 181", + primaryBackgroundSelected = "2, 241, 181", + secondaryBackground = "27, 24, 69", + scaleOnHover = true, + sectionFontWeight = "bold", + smoothBackgroundTransition = false + }, + { + id = "not-heavily-inspired", + borderRadius = "10vh", + fontColor = "255, 255, 255", + fontColorHover = "255, 255, 255", + fontColorSelected = "255, 255, 255", + fontFamily = "Inter", + primaryBackground = "149, 239, 119", + primaryBackgroundSelected = "242, 163, 101", + secondaryBackground = "25, 46, 70", + scaleOnHover = true, + sectionFontWeight = "bold", + smoothBackgroundTransition = false + } + } +} diff --git a/resources/[core]/illenium-appearance/sql/management_outfits.sql b/resources/[core]/illenium-appearance/sql/management_outfits.sql new file mode 100644 index 0000000..4519a49 --- /dev/null +++ b/resources/[core]/illenium-appearance/sql/management_outfits.sql @@ -0,0 +1,12 @@ +CREATE TABLE IF NOT EXISTS `management_outfits` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `job_name` varchar(50) NOT NULL, + `type` varchar(50) NOT NULL, + `minrank` int(11) NOT NULL DEFAULT 0, + `name` varchar(50) NOT NULL DEFAULT 'Cool Outfit', + `gender` varchar(50) NOT NULL DEFAULT 'male', + `model` varchar(50) DEFAULT NULL, + `props` varchar(1000) DEFAULT NULL, + `components` varchar(1500) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4; diff --git a/resources/[core]/illenium-appearance/sql/player_outfit_codes.sql b/resources/[core]/illenium-appearance/sql/player_outfit_codes.sql new file mode 100644 index 0000000..26a7aae --- /dev/null +++ b/resources/[core]/illenium-appearance/sql/player_outfit_codes.sql @@ -0,0 +1,22 @@ +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET NAMES utf8 */; +/*!50503 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +CREATE TABLE IF NOT EXISTS `player_outfit_codes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `outfitid` int(11) NOT NULL, + `code` varchar(50) NOT NULL DEFAULT '', + PRIMARY KEY (`id`), + KEY `FK_player_outfit_codes_player_outfits` (`outfitid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +/*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */; +/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; +/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */; diff --git a/resources/[core]/illenium-appearance/sql/player_outfits.sql b/resources/[core]/illenium-appearance/sql/player_outfits.sql new file mode 100644 index 0000000..cdc5d05 --- /dev/null +++ b/resources/[core]/illenium-appearance/sql/player_outfits.sql @@ -0,0 +1,24 @@ +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET NAMES utf8 */; +/*!50503 SET NAMES utf8mb4 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +CREATE TABLE IF NOT EXISTS `player_outfits` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `citizenid` varchar(50) DEFAULT NULL, + `outfitname` varchar(50) NOT NULL DEFAULT '0', + `model` varchar(50) DEFAULT NULL, + `props` varchar(1000) DEFAULT NULL, + `components` varchar(1500) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `citizenid_outfitname_model` (`citizenid`,`outfitname`,`model`), + KEY `citizenid` (`citizenid`) +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4; + + +/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; +/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */; diff --git a/resources/[core]/illenium-appearance/sql/playerskins.sql b/resources/[core]/illenium-appearance/sql/playerskins.sql new file mode 100644 index 0000000..ca93ce0 --- /dev/null +++ b/resources/[core]/illenium-appearance/sql/playerskins.sql @@ -0,0 +1,10 @@ +CREATE TABLE IF NOT EXISTS `playerskins` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `citizenid` varchar(255) NOT NULL, + `model` varchar(255) NOT NULL, + `skin` text NOT NULL, + `active` tinyint(4) NOT NULL DEFAULT 1, + PRIMARY KEY (`id`), + KEY `citizenid` (`citizenid`), + KEY `active` (`active`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; diff --git a/resources/[core]/illenium-appearance/web/dist/assets/index.b8e72b46.js b/resources/[core]/illenium-appearance/web/dist/assets/index.b8e72b46.js new file mode 100644 index 0000000..395939c --- /dev/null +++ b/resources/[core]/illenium-appearance/web/dist/assets/index.b8e72b46.js @@ -0,0 +1,599 @@ +function Gm(e,t){return t.forEach(function(n){n&&typeof n!="string"&&!Array.isArray(n)&&Object.keys(n).forEach(function(r){if(r!=="default"&&!(r in e)){var i=Object.getOwnPropertyDescriptor(n,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return n[r]}})}})}),Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}const Qm=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerpolicy&&(o.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?o.credentials="include":i.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}};Qm();var b={exports:{}},se={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Mi=Symbol.for("react.element"),Ym=Symbol.for("react.portal"),Km=Symbol.for("react.fragment"),Xm=Symbol.for("react.strict_mode"),Zm=Symbol.for("react.profiler"),qm=Symbol.for("react.provider"),Jm=Symbol.for("react.context"),e0=Symbol.for("react.forward_ref"),t0=Symbol.for("react.suspense"),n0=Symbol.for("react.memo"),r0=Symbol.for("react.lazy"),sc=Symbol.iterator;function i0(e){return e===null||typeof e!="object"?null:(e=sc&&e[sc]||e["@@iterator"],typeof e=="function"?e:null)}var dd={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},pd=Object.assign,hd={};function Rr(e,t,n){this.props=e,this.context=t,this.refs=hd,this.updater=n||dd}Rr.prototype.isReactComponent={};Rr.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Rr.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function md(){}md.prototype=Rr.prototype;function Ks(e,t,n){this.props=e,this.context=t,this.refs=hd,this.updater=n||dd}var Xs=Ks.prototype=new md;Xs.constructor=Ks;pd(Xs,Rr.prototype);Xs.isPureReactComponent=!0;var uc=Array.isArray,vd=Object.prototype.hasOwnProperty,Zs={current:null},gd={key:!0,ref:!0,__self:!0,__source:!0};function yd(e,t,n){var r,i={},o=null,a=null;if(t!=null)for(r in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(o=""+t.key),t)vd.call(t,r)&&!gd.hasOwnProperty(r)&&(i[r]=t[r]);var l=arguments.length-2;if(l===1)i.children=n;else if(1>>1,P=V[oe];if(0>>1;oei(W,B))Ci(q,W)?(V[oe]=q,V[C]=B,oe=C):(V[oe]=W,V[N]=B,oe=N);else if(Ci(q,B))V[oe]=q,V[C]=B,oe=C;else break e}}return z}function i(V,z){var B=V.sortIndex-z.sortIndex;return B!==0?B:V.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var a=Date,l=a.now();e.unstable_now=function(){return a.now()-l}}var s=[],u=[],c=1,f=null,p=3,g=!1,v=!1,x=!1,S=typeof setTimeout=="function"?setTimeout:null,h=typeof clearTimeout=="function"?clearTimeout:null,d=typeof setImmediate!="undefined"?setImmediate:null;typeof navigator!="undefined"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function m(V){for(var z=n(u);z!==null;){if(z.callback===null)r(u);else if(z.startTime<=V)r(u),z.sortIndex=z.expirationTime,t(s,z);else break;z=n(u)}}function k(V){if(x=!1,m(V),!v)if(n(s)!==null)v=!0,ee(E);else{var z=n(u);z!==null&&X(k,z.startTime-V)}}function E(V,z){v=!1,x&&(x=!1,h(F),F=-1),g=!0;var B=p;try{for(m(z),f=n(s);f!==null&&(!(f.expirationTime>z)||V&&!j());){var oe=f.callback;if(typeof oe=="function"){f.callback=null,p=f.priorityLevel;var P=oe(f.expirationTime<=z);z=e.unstable_now(),typeof P=="function"?f.callback=P:f===n(s)&&r(s),m(z)}else r(s);f=n(s)}if(f!==null)var T=!0;else{var N=n(u);N!==null&&X(k,N.startTime-z),T=!1}return T}finally{f=null,p=B,g=!1}}var w=!1,O=null,F=-1,M=5,L=-1;function j(){return!(e.unstable_now()-LV||125oe?(V.sortIndex=B,t(u,V),n(s)===null&&V===n(u)&&(x?(h(F),F=-1):x=!0,X(k,B-oe))):(V.sortIndex=P,t(s,V),v||g||(v=!0,ee(E))),V},e.unstable_shouldYield=j,e.unstable_wrapCallback=function(V){var z=p;return function(){var B=p;p=z;try{return V.apply(this,arguments)}finally{p=B}}}})(wd);xd.exports=wd;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Sd=b.exports,wt=xd.exports;function _(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nt}return!1}function st(e,t,n,r,i,o,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var Ze={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Ze[e]=new st(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Ze[t]=new st(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Ze[e]=new st(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Ze[e]=new st(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Ze[e]=new st(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Ze[e]=new st(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Ze[e]=new st(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Ze[e]=new st(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Ze[e]=new st(e,5,!1,e.toLowerCase(),null,!1,!1)});var eu=/[\-:]([a-z])/g;function tu(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(eu,tu);Ze[t]=new st(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(eu,tu);Ze[t]=new st(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(eu,tu);Ze[t]=new st(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Ze[e]=new st(e,1,!1,e.toLowerCase(),null,!1,!1)});Ze.xlinkHref=new st("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Ze[e]=new st(e,1,!1,e.toLowerCase(),null,!0,!0)});function nu(e,t,n,r){var i=Ze.hasOwnProperty(t)?Ze[t]:null;(i!==null?i.type!==0:r||!(2l||i[a]!==o[l]){var s=` +`+i[a].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=a&&0<=l);break}}}finally{el=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Zr(e):""}function p0(e){switch(e.tag){case 5:return Zr(e.type);case 16:return Zr("Lazy");case 13:return Zr("Suspense");case 19:return Zr("SuspenseList");case 0:case 2:case 15:return e=tl(e.type,!1),e;case 11:return e=tl(e.type.render,!1),e;case 1:return e=tl(e.type,!0),e;default:return""}}function Wl(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case ir:return"Fragment";case rr:return"Portal";case jl:return"Profiler";case ru:return"StrictMode";case Hl:return"Suspense";case Ul:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Cd:return(e.displayName||"Context")+".Consumer";case bd:return(e._context.displayName||"Context")+".Provider";case iu:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ou:return t=e.displayName||null,t!==null?t:Wl(e.type)||"Memo";case dn:t=e._payload,e=e._init;try{return Wl(e(t))}catch{}}return null}function h0(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Wl(t);case 8:return t===ru?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function An(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Od(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function m0(e){var t=Od(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n!="undefined"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){r=""+a,o.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Hi(e){e._valueTracker||(e._valueTracker=m0(e))}function Pd(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Od(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function To(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch{return e.body}}function Gl(e,t){var n=t.checked;return Fe({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n!=null?n:e._wrapperState.initialChecked})}function mc(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=An(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Ad(e,t){t=t.checked,t!=null&&nu(e,"checked",t,!1)}function Ql(e,t){Ad(e,t);var n=An(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Yl(e,t.type,n):t.hasOwnProperty("defaultValue")&&Yl(e,t.type,An(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function vc(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Yl(e,t,n){(t!=="number"||To(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var qr=Array.isArray;function gr(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=Ui.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function hi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ti={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},v0=["Webkit","ms","Moz","O"];Object.keys(ti).forEach(function(e){v0.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ti[t]=ti[e]})});function Td(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ti.hasOwnProperty(e)&&ti[e]?(""+t).trim():t+"px"}function Id(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=Td(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var g0=Fe({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Zl(e,t){if(t){if(g0[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(_(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(_(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(_(61))}if(t.style!=null&&typeof t.style!="object")throw Error(_(62))}}function ql(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Jl=null;function au(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var es=null,yr=null,xr=null;function xc(e){if(e=Ni(e)){if(typeof es!="function")throw Error(_(280));var t=e.stateNode;t&&(t=wa(t),es(e.stateNode,e.type,t))}}function Md(e){yr?xr?xr.push(e):xr=[e]:yr=e}function Rd(){if(yr){var e=yr,t=xr;if(xr=yr=null,xc(e),t)for(e=0;e>>=0,e===0?32:31-(A0(e)/F0|0)|0}var Wi=64,Gi=4194304;function Jr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Lo(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,a=n&268435455;if(a!==0){var l=a&~i;l!==0?r=Jr(l):(o&=a,o!==0&&(r=Jr(o)))}else a=n&~i,a!==0?r=Jr(a):o!==0&&(r=Jr(o));if(r===0)return 0;if(t!==0&&t!==r&&(t&i)===0&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Ri(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-zt(t),e[t]=n}function I0(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=ri),Ac=String.fromCharCode(32),Fc=!1;function tp(e,t){switch(e){case"keyup":return l1.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function np(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var or=!1;function u1(e,t){switch(e){case"compositionend":return np(t);case"keypress":return t.which!==32?null:(Fc=!0,Ac);case"textInput":return e=t.data,e===Ac&&Fc?null:e;default:return null}}function c1(e,t){if(or)return e==="compositionend"||!hu&&tp(e,t)?(e=Jd(),go=fu=vn=null,or=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Ic(n)}}function ap(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ap(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function lp(){for(var e=window,t=To();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=To(e.document)}return t}function mu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function x1(e){var t=lp(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&ap(n.ownerDocument.documentElement,n)){if(r!==null&&mu(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=Mc(n,o);var a=Mc(n,r);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,ar=null,as=null,oi=null,ls=!1;function Rc(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ls||ar==null||ar!==To(r)||(r=ar,"selectionStart"in r&&mu(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),oi&&wi(oi,r)||(oi=r,r=Do(as,"onSelect"),0ur||(e.current=ps[ur],ps[ur]=null,ur--)}function Se(e,t){ur++,ps[ur]=e.current,e.current=t}var Fn={},it=_n(Fn),ft=_n(!1),Hn=Fn;function Er(e,t){var n=e.type.contextTypes;if(!n)return Fn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function dt(e){return e=e.childContextTypes,e!=null}function Bo(){be(ft),be(it)}function jc(e,t,n){if(it.current!==Fn)throw Error(_(168));Se(it,t),Se(ft,n)}function vp(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(_(108,h0(e)||"Unknown",i));return Fe({},n,r)}function jo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Fn,Hn=it.current,Se(it,e),Se(ft,ft.current),!0}function Hc(e,t,n){var r=e.stateNode;if(!r)throw Error(_(169));n?(e=vp(e,t,Hn),r.__reactInternalMemoizedMergedChildContext=e,be(ft),be(it),Se(it,e)):be(ft),Se(ft,n)}var Jt=null,Sa=!1,ml=!1;function gp(e){Jt===null?Jt=[e]:Jt.push(e)}function _1(e){Sa=!0,gp(e)}function Tn(){if(!ml&&Jt!==null){ml=!0;var e=0,t=xe;try{var n=Jt;for(xe=1;e>=a,i-=a,en=1<<32-zt(t)+i|n<F?(M=O,O=null):M=O.sibling;var L=p(h,O,m[F],k);if(L===null){O===null&&(O=M);break}e&&O&&L.alternate===null&&t(h,O),d=o(L,d,F),w===null?E=L:w.sibling=L,w=L,O=M}if(F===m.length)return n(h,O),Ee&&Rn(h,F),E;if(O===null){for(;FF?(M=O,O=null):M=O.sibling;var j=p(h,O,L.value,k);if(j===null){O===null&&(O=M);break}e&&O&&j.alternate===null&&t(h,O),d=o(j,d,F),w===null?E=j:w.sibling=j,w=j,O=M}if(L.done)return n(h,O),Ee&&Rn(h,F),E;if(O===null){for(;!L.done;F++,L=m.next())L=f(h,L.value,k),L!==null&&(d=o(L,d,F),w===null?E=L:w.sibling=L,w=L);return Ee&&Rn(h,F),E}for(O=r(h,O);!L.done;F++,L=m.next())L=g(O,h,F,L.value,k),L!==null&&(e&&L.alternate!==null&&O.delete(L.key===null?F:L.key),d=o(L,d,F),w===null?E=L:w.sibling=L,w=L);return e&&O.forEach(function(H){return t(h,H)}),Ee&&Rn(h,F),E}function S(h,d,m,k){if(typeof m=="object"&&m!==null&&m.type===ir&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case ji:e:{for(var E=m.key,w=d;w!==null;){if(w.key===E){if(E=m.type,E===ir){if(w.tag===7){n(h,w.sibling),d=i(w,m.props.children),d.return=h,h=d;break e}}else if(w.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===dn&&Xc(E)===w.type){n(h,w.sibling),d=i(w,m.props),d.ref=Wr(h,w,m),d.return=h,h=d;break e}n(h,w);break}else t(h,w);w=w.sibling}m.type===ir?(d=Bn(m.props.children,h.mode,k,m.key),d.return=h,h=d):(k=Eo(m.type,m.key,m.props,null,h.mode,k),k.ref=Wr(h,d,m),k.return=h,h=k)}return a(h);case rr:e:{for(w=m.key;d!==null;){if(d.key===w)if(d.tag===4&&d.stateNode.containerInfo===m.containerInfo&&d.stateNode.implementation===m.implementation){n(h,d.sibling),d=i(d,m.children||[]),d.return=h,h=d;break e}else{n(h,d);break}else t(h,d);d=d.sibling}d=bl(m,h.mode,k),d.return=h,h=d}return a(h);case dn:return w=m._init,S(h,d,w(m._payload),k)}if(qr(m))return v(h,d,m,k);if($r(m))return x(h,d,m,k);Ji(h,m)}return typeof m=="string"&&m!==""||typeof m=="number"?(m=""+m,d!==null&&d.tag===6?(n(h,d.sibling),d=i(d,m),d.return=h,h=d):(n(h,d),d=kl(m,h.mode,k),d.return=h,h=d),a(h)):n(h,d)}return S}var Pr=Ep(!0),Op=Ep(!1),zi={},Yt=_n(zi),Ci=_n(zi),Ei=_n(zi);function Dn(e){if(e===zi)throw Error(_(174));return e}function Cu(e,t){switch(Se(Ei,t),Se(Ci,e),Se(Yt,zi),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Xl(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Xl(t,e)}be(Yt),Se(Yt,t)}function Ar(){be(Yt),be(Ci),be(Ei)}function Pp(e){Dn(Ei.current);var t=Dn(Yt.current),n=Xl(t,e.type);t!==n&&(Se(Ci,e),Se(Yt,n))}function Eu(e){Ci.current===e&&(be(Yt),be(Ci))}var Pe=_n(0);function Yo(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var vl=[];function Ou(){for(var e=0;en?n:4,e(!0);var r=gl.transition;gl.transition={};try{e(!1),t()}finally{xe=n,gl.transition=r}}function Hp(){return Ft().memoizedState}function R1(e,t,n){var r=Cn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Up(e))Wp(t,n);else if(n=Sp(e,t,n,r),n!==null){var i=at();Dt(n,e,r,i),Gp(n,t,r)}}function L1(e,t,n){var r=Cn(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Up(e))Wp(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var a=t.lastRenderedState,l=o(a,n);if(i.hasEagerState=!0,i.eagerState=l,Bt(l,a)){var s=t.interleaved;s===null?(i.next=i,ku(t)):(i.next=s.next,s.next=i),t.interleaved=i;return}}catch{}finally{}n=Sp(e,t,i,r),n!==null&&(i=at(),Dt(n,e,r,i),Gp(n,t,r))}}function Up(e){var t=e.alternate;return e===Ae||t!==null&&t===Ae}function Wp(e,t){ai=Ko=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Gp(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,su(e,n)}}var Xo={readContext:At,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},N1={readContext:At,useCallback:function(e,t){return Ht().memoizedState=[e,t===void 0?null:t],e},useContext:At,useEffect:qc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,So(4194308,4,zp.bind(null,t,e),n)},useLayoutEffect:function(e,t){return So(4194308,4,e,t)},useInsertionEffect:function(e,t){return So(4,2,e,t)},useMemo:function(e,t){var n=Ht();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ht();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=R1.bind(null,Ae,e),[r.memoizedState,e]},useRef:function(e){var t=Ht();return e={current:e},t.memoizedState=e},useState:Zc,useDebugValue:_u,useDeferredValue:function(e){return Ht().memoizedState=e},useTransition:function(){var e=Zc(!1),t=e[0];return e=M1.bind(null,e[1]),Ht().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Ae,i=Ht();if(Ee){if(n===void 0)throw Error(_(407));n=n()}else{if(n=t(),Ue===null)throw Error(_(349));(Wn&30)!==0||Vp(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,qc(Tp.bind(null,r,o,e),[e]),r.flags|=2048,Ai(9,_p.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Ht(),t=Ue.identifierPrefix;if(Ee){var n=tn,r=en;n=(r&~(1<<32-zt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Oi++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Gt]=t,e[bi]=r,th(e,t,!1,!1),t.stateNode=e;e:{switch(a=ql(n,r),n){case"dialog":ke("cancel",e),ke("close",e),i=r;break;case"iframe":case"object":case"embed":ke("load",e),i=r;break;case"video":case"audio":for(i=0;iVr&&(t.flags|=128,r=!0,Gr(o,!1),t.lanes=4194304)}else{if(!r)if(e=Yo(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Gr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!Ee)return tt(t),null}else 2*Ie()-o.renderingStartTime>Vr&&n!==1073741824&&(t.flags|=128,r=!0,Gr(o,!1),t.lanes=4194304);o.isBackwards?(a.sibling=t.child,t.child=a):(n=o.last,n!==null?n.sibling=a:t.child=a,o.last=a)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Ie(),t.sibling=null,n=Pe.current,Se(Pe,r?n&1|2:n&1),t):(tt(t),null);case 22:case 23:return Nu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(mt&1073741824)!==0&&(tt(t),t.subtreeFlags&6&&(t.flags|=8192)):tt(t),null;case 24:return null;case 25:return null}throw Error(_(156,t.tag))}function W1(e,t){switch(gu(t),t.tag){case 1:return dt(t.type)&&Bo(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ar(),be(ft),be(it),Ou(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Eu(t),null;case 13:if(be(Pe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(_(340));Or()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return be(Pe),null;case 4:return Ar(),null;case 10:return Su(t.type._context),null;case 22:case 23:return Nu(),null;case 24:return null;default:return null}}var to=!1,rt=!1,G1=typeof WeakSet=="function"?WeakSet:Set,$=null;function pr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){_e(e,t,r)}else n.current=null}function Es(e,t,n){try{n()}catch(r){_e(e,t,r)}}var sf=!1;function Q1(e,t){if(ss=No,e=lp(),mu(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var a=0,l=-1,s=-1,u=0,c=0,f=e,p=null;t:for(;;){for(var g;f!==n||i!==0&&f.nodeType!==3||(l=a+i),f!==o||r!==0&&f.nodeType!==3||(s=a+r),f.nodeType===3&&(a+=f.nodeValue.length),(g=f.firstChild)!==null;)p=f,f=g;for(;;){if(f===e)break t;if(p===n&&++u===i&&(l=a),p===o&&++c===r&&(s=a),(g=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=g}n=l===-1||s===-1?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(us={focusedElem:e,selectionRange:n},No=!1,$=t;$!==null;)if(t=$,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,$=e;else for(;$!==null;){t=$;try{var v=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var x=v.memoizedProps,S=v.memoizedState,h=t.stateNode,d=h.getSnapshotBeforeUpdate(t.elementType===t.type?x:Tt(t.type,x),S);h.__reactInternalSnapshotBeforeUpdate=d}break;case 3:var m=t.stateNode.containerInfo;m.nodeType===1?m.textContent="":m.nodeType===9&&m.documentElement&&m.removeChild(m.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(_(163))}}catch(k){_e(t,t.return,k)}if(e=t.sibling,e!==null){e.return=t.return,$=e;break}$=t.return}return v=sf,sf=!1,v}function li(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&Es(t,n,o)}i=i.next}while(i!==r)}}function Ca(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Os(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function ih(e){var t=e.alternate;t!==null&&(e.alternate=null,ih(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Gt],delete t[bi],delete t[ds],delete t[F1],delete t[V1])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function oh(e){return e.tag===5||e.tag===3||e.tag===4}function uf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||oh(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ps(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=$o));else if(r!==4&&(e=e.child,e!==null))for(Ps(e,t,n),e=e.sibling;e!==null;)Ps(e,t,n),e=e.sibling}function As(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(As(e,t,n),e=e.sibling;e!==null;)As(e,t,n),e=e.sibling}var Qe=null,It=!1;function cn(e,t,n){for(n=n.child;n!==null;)ah(e,t,n),n=n.sibling}function ah(e,t,n){if(Qt&&typeof Qt.onCommitFiberUnmount=="function")try{Qt.onCommitFiberUnmount(va,n)}catch{}switch(n.tag){case 5:rt||pr(n,t);case 6:var r=Qe,i=It;Qe=null,cn(e,t,n),Qe=r,It=i,Qe!==null&&(It?(e=Qe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Qe.removeChild(n.stateNode));break;case 18:Qe!==null&&(It?(e=Qe,n=n.stateNode,e.nodeType===8?hl(e.parentNode,n):e.nodeType===1&&hl(e,n),yi(e)):hl(Qe,n.stateNode));break;case 4:r=Qe,i=It,Qe=n.stateNode.containerInfo,It=!0,cn(e,t,n),Qe=r,It=i;break;case 0:case 11:case 14:case 15:if(!rt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,a=o.destroy;o=o.tag,a!==void 0&&((o&2)!==0||(o&4)!==0)&&Es(n,t,a),i=i.next}while(i!==r)}cn(e,t,n);break;case 1:if(!rt&&(pr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){_e(n,t,l)}cn(e,t,n);break;case 21:cn(e,t,n);break;case 22:n.mode&1?(rt=(r=rt)||n.memoizedState!==null,cn(e,t,n),rt=r):cn(e,t,n);break;default:cn(e,t,n)}}function cf(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new G1),t.forEach(function(r){var i=nv.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function _t(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=a),r&=~o}if(r=i,r=Ie()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*K1(r/1960))-r,10e?16:e,gn===null)var r=!1;else{if(e=gn,gn=null,Jo=0,(me&6)!==0)throw Error(_(331));var i=me;for(me|=4,$=e.current;$!==null;){var o=$,a=o.child;if(($.flags&16)!==0){var l=o.deletions;if(l!==null){for(var s=0;sIe()-Ru?$n(e,0):Mu|=n),pt(e,t)}function hh(e,t){t===0&&((e.mode&1)===0?t=1:(t=Gi,Gi<<=1,(Gi&130023424)===0&&(Gi=4194304)));var n=at();e=an(e,t),e!==null&&(Ri(e,t,n),pt(e,n))}function tv(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),hh(e,n)}function nv(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(_(314))}r!==null&&r.delete(t),hh(e,n)}var mh;mh=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ft.current)ct=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return ct=!1,H1(e,t,n);ct=(e.flags&131072)!==0}else ct=!1,Ee&&(t.flags&1048576)!==0&&yp(t,Uo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;ko(e,t),e=t.pendingProps;var i=Er(t,it.current);Sr(t,n),i=Au(null,t,r,e,i,n);var o=Fu();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,dt(r)?(o=!0,jo(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,bu(t),i.updater=ka,t.stateNode=i,i._reactInternals=t,ys(t,r,e,n),t=Ss(null,t,r,!0,o,n)):(t.tag=0,Ee&&o&&vu(t),ot(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(ko(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=iv(r),e=Tt(r,e),i){case 0:t=ws(null,t,r,e,n);break e;case 1:t=of(null,t,r,e,n);break e;case 11:t=nf(null,t,r,e,n);break e;case 14:t=rf(null,t,r,Tt(r.type,e),n);break e}throw Error(_(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Tt(r,i),ws(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Tt(r,i),of(e,t,r,i,n);case 3:e:{if(qp(t),e===null)throw Error(_(387));r=t.pendingProps,o=t.memoizedState,i=o.element,kp(e,t),Qo(t,r,null,n);var a=t.memoizedState;if(r=a.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=Fr(Error(_(423)),t),t=af(e,t,r,n,i);break e}else if(r!==i){i=Fr(Error(_(424)),t),t=af(e,t,r,n,i);break e}else for(gt=Sn(t.stateNode.containerInfo.firstChild),yt=t,Ee=!0,Mt=null,n=Op(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Or(),r===i){t=ln(e,t,n);break e}ot(e,t,r,n)}t=t.child}return t;case 5:return Pp(t),e===null&&ms(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,a=i.children,cs(r,i)?a=null:o!==null&&cs(r,o)&&(t.flags|=32),Zp(e,t),ot(e,t,a,n),t.child;case 6:return e===null&&ms(t),null;case 13:return Jp(e,t,n);case 4:return Cu(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Pr(t,null,r,n):ot(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Tt(r,i),nf(e,t,r,i,n);case 7:return ot(e,t,t.pendingProps,n),t.child;case 8:return ot(e,t,t.pendingProps.children,n),t.child;case 12:return ot(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,a=i.value,Se(Wo,r._currentValue),r._currentValue=a,o!==null)if(Bt(o.value,a)){if(o.children===i.children&&!ft.current){t=ln(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var l=o.dependencies;if(l!==null){a=o.child;for(var s=l.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=nn(-1,n&-n),s.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?s.next=s:(s.next=c.next,c.next=s),u.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),vs(o.return,n,t),l.lanes|=n;break}s=s.next}}else if(o.tag===10)a=o.type===t.type?null:o.child;else if(o.tag===18){if(a=o.return,a===null)throw Error(_(341));a.lanes|=n,l=a.alternate,l!==null&&(l.lanes|=n),vs(a,n,t),a=o.sibling}else a=o.child;if(a!==null)a.return=o;else for(a=o;a!==null;){if(a===t){a=null;break}if(o=a.sibling,o!==null){o.return=a.return,a=o;break}a=a.return}o=a}ot(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Sr(t,n),i=At(i),r=r(i),t.flags|=1,ot(e,t,r,n),t.child;case 14:return r=t.type,i=Tt(r,t.pendingProps),i=Tt(r.type,i),rf(e,t,r,i,n);case 15:return Kp(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Tt(r,i),ko(e,t),t.tag=1,dt(r)?(e=!0,jo(t)):e=!1,Sr(t,n),Cp(t,r,i),ys(t,r,i,n),Ss(null,t,r,!0,e,n);case 19:return eh(e,t,n);case 22:return Xp(e,t,n)}throw Error(_(156,t.tag))};function vh(e,t){return jd(e,t)}function rv(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ot(e,t,n,r){return new rv(e,t,n,r)}function Du(e){return e=e.prototype,!(!e||!e.isReactComponent)}function iv(e){if(typeof e=="function")return Du(e)?1:0;if(e!=null){if(e=e.$$typeof,e===iu)return 11;if(e===ou)return 14}return 2}function En(e,t){var n=e.alternate;return n===null?(n=Ot(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Eo(e,t,n,r,i,o){var a=2;if(r=e,typeof e=="function")Du(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case ir:return Bn(n.children,i,o,t);case ru:a=8,i|=8;break;case jl:return e=Ot(12,n,t,i|2),e.elementType=jl,e.lanes=o,e;case Hl:return e=Ot(13,n,t,i),e.elementType=Hl,e.lanes=o,e;case Ul:return e=Ot(19,n,t,i),e.elementType=Ul,e.lanes=o,e;case Ed:return Oa(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case bd:a=10;break e;case Cd:a=9;break e;case iu:a=11;break e;case ou:a=14;break e;case dn:a=16,r=null;break e}throw Error(_(130,e==null?e:typeof e,""))}return t=Ot(a,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function Bn(e,t,n,r){return e=Ot(7,e,r,t),e.lanes=n,e}function Oa(e,t,n,r){return e=Ot(22,e,r,t),e.elementType=Ed,e.lanes=n,e.stateNode={isHidden:!1},e}function kl(e,t,n){return e=Ot(6,e,null,t),e.lanes=n,e}function bl(e,t,n){return t=Ot(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function ov(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=rl(0),this.expirationTimes=rl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=rl(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function $u(e,t,n,r,i,o,a,l,s){return e=new ov(e,t,n,l,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Ot(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},bu(o),e}function av(e,t,n){var r=3{const[t,n]=b.exports.useState(gv),r=b.exports.useCallback(a=>{n(l=>({...l,display:{...a}}))},[n]),i=b.exports.useCallback(a=>{n(l=>({...l,locales:a}))},[n]),o={display:t.display,setDisplay:r,locales:t.locales,setLocales:i};return y(bh.Provider,{value:o,children:e})};function un(){return b.exports.useContext(bh)}var Ia={exports:{}},we={};/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var We=typeof Symbol=="function"&&Symbol.for,Uu=We?Symbol.for("react.element"):60103,Wu=We?Symbol.for("react.portal"):60106,Ma=We?Symbol.for("react.fragment"):60107,Ra=We?Symbol.for("react.strict_mode"):60108,La=We?Symbol.for("react.profiler"):60114,Na=We?Symbol.for("react.provider"):60109,za=We?Symbol.for("react.context"):60110,Gu=We?Symbol.for("react.async_mode"):60111,Da=We?Symbol.for("react.concurrent_mode"):60111,$a=We?Symbol.for("react.forward_ref"):60112,Ba=We?Symbol.for("react.suspense"):60113,xv=We?Symbol.for("react.suspense_list"):60120,ja=We?Symbol.for("react.memo"):60115,Ha=We?Symbol.for("react.lazy"):60116,wv=We?Symbol.for("react.block"):60121,Sv=We?Symbol.for("react.fundamental"):60117,kv=We?Symbol.for("react.responder"):60118,bv=We?Symbol.for("react.scope"):60119;function bt(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case Uu:switch(e=e.type,e){case Gu:case Da:case Ma:case La:case Ra:case Ba:return e;default:switch(e=e&&e.$$typeof,e){case za:case $a:case Ha:case ja:case Na:return e;default:return t}}case Wu:return t}}}function Ch(e){return bt(e)===Da}we.AsyncMode=Gu;we.ConcurrentMode=Da;we.ContextConsumer=za;we.ContextProvider=Na;we.Element=Uu;we.ForwardRef=$a;we.Fragment=Ma;we.Lazy=Ha;we.Memo=ja;we.Portal=Wu;we.Profiler=La;we.StrictMode=Ra;we.Suspense=Ba;we.isAsyncMode=function(e){return Ch(e)||bt(e)===Gu};we.isConcurrentMode=Ch;we.isContextConsumer=function(e){return bt(e)===za};we.isContextProvider=function(e){return bt(e)===Na};we.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===Uu};we.isForwardRef=function(e){return bt(e)===$a};we.isFragment=function(e){return bt(e)===Ma};we.isLazy=function(e){return bt(e)===Ha};we.isMemo=function(e){return bt(e)===ja};we.isPortal=function(e){return bt(e)===Wu};we.isProfiler=function(e){return bt(e)===La};we.isStrictMode=function(e){return bt(e)===Ra};we.isSuspense=function(e){return bt(e)===Ba};we.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===Ma||e===Da||e===La||e===Ra||e===Ba||e===xv||typeof e=="object"&&e!==null&&(e.$$typeof===Ha||e.$$typeof===ja||e.$$typeof===Na||e.$$typeof===za||e.$$typeof===$a||e.$$typeof===Sv||e.$$typeof===kv||e.$$typeof===bv||e.$$typeof===wv)};we.typeOf=bt;Ia.exports=we;function Cv(e){function t(P,T,N,W,C){for(var q=0,I=0,pe=0,ce=0,fe,Z,Te=0,Le=0,ae,Ne=ae=fe=0,he=0,A=0,K=0,D=0,ne=N.length,Ge=ne-1,Ce,U="",ye="",In="",Vt="",Je;hefe)&&(D=(U=U.replace(" ",":")).length),0W&&(W=(T=T.trim()).charCodeAt(0)),W){case 38:return T.replace(h,"$1"+P.trim());case 58:return P.trim()+T.replace(h,"$1"+P.trim());default:if(0<1*N&&0I.charCodeAt(8))break;case 115:C=C.replace(I,"-webkit-"+I)+";"+C;break;case 207:case 102:C=C.replace(I,"-webkit-"+(102N.charCodeAt(0)&&(N=N.trim()),oe=N,N=[oe],01?t-1:0),r=1;r0?" Args: "+n.join(", "):""))}var Nv=function(){function e(n){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=n}var t=e.prototype;return t.indexOfGroup=function(n){for(var r=0,i=0;i=this.groupSizes.length){for(var i=this.groupSizes,o=i.length,a=o;n>=a;)(a<<=1)<0&&Yn(16,""+n);this.groupSizes=new Uint32Array(a),this.groupSizes.set(i),this.length=a;for(var l=o;l=this.length||this.groupSizes[n]===0)return r;for(var i=this.groupSizes[n],o=this.indexOfGroup(n),a=o+i,l=o;l=ci&&(ci=t+1),Oo.set(e,t),ia.set(t,e)},$v="style["+Tr+'][data-styled-version="5.3.11"]',Bv=new RegExp("^"+Tr+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),jv=function(e,t,n){for(var r,i=n.split(","),o=0,a=i.length;o=0;u--){var c=s[u];if(c&&c.nodeType===1&&c.hasAttribute(Tr))return c}}(n),o=i!==void 0?i.nextSibling:null;r.setAttribute(Tr,"active"),r.setAttribute("data-styled-version","5.3.11");var a=Uv();return a&&r.setAttribute("nonce",a),n.insertBefore(r,o),r},Wv=function(){function e(n){var r=this.element=Ah(n);r.appendChild(document.createTextNode("")),this.sheet=function(i){if(i.sheet)return i.sheet;for(var o=document.styleSheets,a=0,l=o.length;a=0){var i=document.createTextNode(r),o=this.nodes[n];return this.element.insertBefore(i,o||null),this.length++,!0}return!1},t.deleteRule=function(n){this.element.removeChild(this.nodes[n]),this.length--},t.getRule=function(n){return n0&&(f+=p+",")}),o+=""+u+c+'{content:"'+f+`"}/*!sc*/ +`}}}return o}(this)},e}(),Kv=/(a)(d)/gi,Of=function(e){return String.fromCharCode(e+(e>25?39:97))};function Ms(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=Of(t%52)+n;return(Of(t%52)+n).replace(Kv,"$1-$2")}var mr=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},Fh=function(e){return mr(5381,e)};function Vh(e){for(var t=0;t>>0);if(!n.hasNameForId(i,l)){var s=r(a,"."+l,void 0,i);n.insertRules(i,l,s)}o.push(l),this.staticRulesId=l}else{for(var u=this.rules.length,c=mr(this.baseHash,r.hash),f="",p=0;p>>0);if(!n.hasNameForId(i,S)){var h=r(f,"."+S,void 0,i);n.insertRules(i,S,h)}o.push(S)}}return o.join(" ")},e}(),qv=/^\s*\/\/.*$/gm,Jv=[":","[",".","#"];function eg(e){var t,n,r,i,o=e===void 0?On:e,a=o.options,l=a===void 0?On:a,s=o.plugins,u=s===void 0?ra:s,c=new Cv(l),f=[],p=function(x){function S(h){if(h)try{x(h+"}")}catch{}}return function(h,d,m,k,E,w,O,F,M,L){switch(h){case 1:if(M===0&&d.charCodeAt(0)===64)return x(d+";"),"";break;case 2:if(F===0)return d+"/*|*/";break;case 3:switch(F){case 102:case 112:return x(m[0]+d),"";default:return d+(L===0?"/*|*/":"")}case-2:d.split("/*|*/}").forEach(S)}}}(function(x){f.push(x)}),g=function(x,S,h){return S===0&&Jv.indexOf(h[n.length])!==-1||h.match(i)?x:"."+t};function v(x,S,h,d){d===void 0&&(d="&");var m=x.replace(qv,""),k=S&&h?h+" "+S+" { "+m+" }":m;return t=d,n=S,r=new RegExp("\\"+n+"\\b","g"),i=new RegExp("(\\"+n+"\\b){2,}"),c(h||!S?"":S,k)}return c.use([].concat(u,[function(x,S,h){x===2&&h.length&&h[0].lastIndexOf(n)>0&&(h[0]=h[0].replace(r,g))},p,function(x){if(x===-2){var S=f;return f=[],S}}])),v.hash=u.length?u.reduce(function(x,S){return S.name||Yn(15),mr(x,S.name)},5381).toString():"",v}var _h=He.createContext();_h.Consumer;var Th=He.createContext(),tg=(Th.Consumer,new oa),Rs=eg();function Ih(){return b.exports.useContext(_h)||tg}function Mh(){return b.exports.useContext(Th)||Rs}var ng=function(){function e(t,n){var r=this;this.inject=function(i,o){o===void 0&&(o=Rs);var a=r.name+o.hash;i.hasNameForId(r.id,a)||i.insertRules(r.id,a,o(r.rules,a,"@keyframes"))},this.toString=function(){return Yn(12,String(r.name))},this.name=t,this.id="sc-keyframes-"+t,this.rules=n}return e.prototype.getName=function(t){return t===void 0&&(t=Rs),this.name+t.hash},e}(),rg=/([A-Z])/,ig=/([A-Z])/g,og=/^ms-/,ag=function(e){return"-"+e.toLowerCase()};function Pf(e){return rg.test(e)?e.replace(ig,ag).replace(og,"-ms-"):e}var Af=function(e){return e==null||e===!1||e===""};function Kn(e,t,n,r){if(Array.isArray(e)){for(var i,o=[],a=0,l=e.length;a1?t-1:0),r=1;r?@[\\\]^`{|}~-]+/g,sg=/(^-|-$)/g;function Cl(e){return e.replace(lg,"-").replace(sg,"")}var Lh=function(e){return Ms(Fh(e)>>>0)};function oo(e){return typeof e=="string"&&!0}var Ls=function(e){return typeof e=="function"||typeof e=="object"&&e!==null&&!Array.isArray(e)},ug=function(e){return e!=="__proto__"&&e!=="constructor"&&e!=="prototype"};function cg(e,t,n){var r=e[n];Ls(t)&&Ls(r)?Nh(r,t):e[n]=t}function Nh(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(L[F]=w[F]);return L}(t,["componentId"]),E=m&&m+"-"+(oo(d)?d:Cl(Cf(d)));return zh(d,Lt({},k,{attrs:p,componentId:E}),n)},Object.defineProperty(v,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(d){this._foldedDefaultProps=r?Nh({},e.defaultProps,d):d}}),Object.defineProperty(v,"toString",{value:function(){return"."+v.styledComponentId}}),i&&Mv(v,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),v}var Ns=function(e){return function t(n,r,i){if(i===void 0&&(i=On),!Ia.exports.isValidElementType(r))return Yn(1,String(r));var o=function(){return n(r,i,Di.apply(void 0,arguments))};return o.withConfig=function(a){return t(n,r,Lt({},i,{},a))},o.attrs=function(a){return t(n,r,Lt({},i,{attrs:Array.prototype.concat(i.attrs,a).filter(Boolean)}))},o}(zh,e)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","textPath","tspan"].forEach(function(e){Ns[e]=Ns(e)});var dg=function(){function e(n,r){this.rules=n,this.componentId=r,this.isStatic=Vh(n),oa.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(n,r,i,o){var a=o(Kn(this.rules,r,i,o).join(""),""),l=this.componentId+n;i.insertRules(l,l,a)},t.removeStyles=function(n,r){r.clearRules(this.componentId+n)},t.renderStyles=function(n,r,i,o){n>2&&oa.registerId(this.componentId+n),this.removeStyles(n,i),this.createStyles(n,r,i,o)},e}();function pg(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;re.theme.fontFamily}', sans-serif; + } + + body { + background: transparent; + -webkit-font-smoothing: antialiased; + overflow: hidden; + /* background: url('https://cdn.discordapp.com/attachments/694641187901931601/786575235734437938/unknown.png'); */ + } + + button { + cursor: pointer; + outline: 0; + } +`;function Q(){return Q=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[i]=e[i]);return n}const ie={arr:Array.isArray,obj:e=>Object.prototype.toString.call(e)==="[object Object]",fun:e=>typeof e=="function",str:e=>typeof e=="string",num:e=>typeof e=="number",und:e=>e===void 0,nul:e=>e===null,set:e=>e instanceof Set,map:e=>e instanceof Map,equ(e,t){if(typeof e!=typeof t)return!1;if(ie.str(e)||ie.num(e))return e===t;if(ie.obj(e)&&ie.obj(t)&&Object.keys(e).length+Object.keys(t).length===0)return!0;let n;for(n in e)if(!(n in t))return!1;for(n in t)if(e[n]!==t[n])return!1;return ie.und(n)?e===t:!0}};function mg(e,t){return t===void 0&&(t=!0),n=>(ie.arr(n)?n:Object.keys(n)).reduce((r,i)=>{const o=t?i[0].toLowerCase()+i.substring(1):i;return r[o]=e(o),r},e)}function Dh(){const e=b.exports.useState(!1),t=e[1];return b.exports.useCallback(()=>t(r=>!r),[])}function Mn(e,t){return ie.und(e)||ie.nul(e)?t:e}function vr(e){return ie.und(e)?[]:ie.arr(e)?e:[e]}function vt(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;rie.und(t[i])?Q({},r,{[i]:e[i]}):r,{});return Q({to:t},n)}function gg(e,t){return t&&(ie.fun(t)?t(e):ie.obj(t)&&(t.current=e)),e}class Rt{constructor(){this.payload=void 0,this.children=[]}getAnimatedValue(){return this.getValue()}getPayload(){return this.payload||this}attach(){}detach(){}getChildren(){return this.children}addChild(t){this.children.length===0&&this.attach(),this.children.push(t)}removeChild(t){const n=this.children.indexOf(t);this.children.splice(n,1),this.children.length===0&&this.detach()}}class zs extends Rt{constructor(){super(...arguments),this.payload=[],this.attach=()=>this.payload.forEach(t=>t instanceof Rt&&t.addChild(this)),this.detach=()=>this.payload.forEach(t=>t instanceof Rt&&t.removeChild(this))}}class $h extends Rt{constructor(){super(...arguments),this.payload={},this.attach=()=>Object.values(this.payload).forEach(t=>t instanceof Rt&&t.addChild(this)),this.detach=()=>Object.values(this.payload).forEach(t=>t instanceof Rt&&t.removeChild(this))}getValue(t){t===void 0&&(t=!1);const n={};for(const r in this.payload){const i=this.payload[r];t&&!(i instanceof Rt)||(n[r]=i instanceof Rt?i[t?"getAnimatedValue":"getValue"]():i)}return n}getAnimatedValue(){return this.getValue(!0)}}let Zu;function yg(e,t){Zu={fn:e,transform:t}}let Bh;function xg(e){Bh=e}let jh=e=>typeof window!="undefined"?window.requestAnimationFrame(e):-1,aa;function wg(e){aa=e}let Hh=()=>Date.now(),Sg=e=>e.current,Uh;function kg(e){Uh=e}class bg extends $h{constructor(t,n){super(),this.update=void 0,this.payload=t.style?Q({},t,{style:Uh(t.style)}):t,this.update=n,this.attach()}}const Cg=e=>ie.fun(e)&&!(e.prototype instanceof He.Component),Eg=e=>b.exports.forwardRef((n,r)=>{const i=Dh(),o=b.exports.useRef(!0),a=b.exports.useRef(null),l=b.exports.useRef(null),s=b.exports.useCallback(p=>{const g=a.current,v=()=>{let x=!1;l.current&&(x=Zu.fn(l.current,a.current.getAnimatedValue())),(!l.current||x===!1)&&i()};a.current=new bg(p,v),g&&g.detach()},[]);b.exports.useEffect(()=>()=>{o.current=!1,a.current&&a.current.detach()},[]),b.exports.useImperativeHandle(r,()=>Sg(l)),s(n);const u=a.current.getValue();u.scrollTop,u.scrollLeft;const c=$t(u,["scrollTop","scrollLeft"]),f=Cg(e)?void 0:p=>l.current=gg(p,r);return y(e,{...c,ref:f})});let fi=!1;const jn=new Set,Wh=()=>{if(!fi)return!1;let e=Hh();for(let t of jn){let n=!1;for(let r=0;r=s.startTime+i.duration;else if(i.decay)f=u+g/(1-.998)*(1-Math.exp(-(1-.998)*(e-s.startTime))),o=Math.abs(s.lastPosition-f)<.1,o&&(c=f);else{a=s.lastTime!==void 0?s.lastTime:e,g=s.lastVelocity!==void 0?s.lastVelocity:i.initialVelocity,e>a+64&&(a=e);let v=Math.floor(e-a);for(let d=0;dc:f{jn.has(e)||jn.add(e),fi||(fi=!0,jh(Wh))},Pg=e=>{jn.has(e)&&jn.delete(e)};function la(e,t,n){if(typeof e=="function")return e;if(Array.isArray(e))return la({range:e,output:t,extrapolate:n});if(aa&&typeof e.output[0]=="string")return aa(e);const r=e,i=r.output,o=r.range||[0,1],a=r.extrapolateLeft||r.extrapolate||"extend",l=r.extrapolateRight||r.extrapolate||"extend",s=r.easing||(u=>u);return u=>{const c=Fg(u,o);return Ag(u,o[c],o[c+1],i[c],i[c+1],s,a,l,r.map)}}function Ag(e,t,n,r,i,o,a,l,s){let u=s?s(e):e;if(un){if(l==="identity")return u;l==="clamp"&&(u=n)}return r===i?r:t===n?e<=t?r:i:(t===-1/0?u=-u:n===1/0?u=u-t:u=(u-t)/(n-t),u=o(u),r===-1/0?u=-u:i===1/0?u=u+r:u=u*(i-r)+r,u)}function Fg(e,t){for(var n=1;n=e);++n);return n-1}class Vi extends zs{constructor(t,n,r,i){super(),this.calc=void 0,this.payload=t instanceof zs&&!(t instanceof Vi)?t.getPayload():Array.isArray(t)?t:[t],this.calc=la(n,r,i)}getValue(){return this.calc(...this.payload.map(t=>t.getValue()))}updateConfig(t,n,r){this.calc=la(t,n,r)}interpolate(t,n,r){return new Vi(this,t,n,r)}}function Gh(e,t){"update"in e?t.add(e):e.getChildren().forEach(n=>Gh(n,t))}class Ds extends Rt{constructor(t){var n;super(),n=this,this.animatedStyles=new Set,this.value=void 0,this.startPosition=void 0,this.lastPosition=void 0,this.lastVelocity=void 0,this.startTime=void 0,this.lastTime=void 0,this.done=!1,this.setValue=function(r,i){i===void 0&&(i=!0),n.value=r,i&&n.flush()},this.value=t,this.startPosition=t,this.lastPosition=t}flush(){this.animatedStyles.size===0&&Gh(this,this.animatedStyles),this.animatedStyles.forEach(t=>t.update())}clearStyles(){this.animatedStyles.clear()}getValue(){return this.value}interpolate(t,n,r){return new Vi(this,t,n,r)}}class Vg extends zs{constructor(t){super(),this.payload=t.map(n=>new Ds(n))}setValue(t,n){n===void 0&&(n=!0),Array.isArray(t)?t.length===this.payload.length&&t.forEach((r,i)=>this.payload[i].setValue(r,n)):this.payload.forEach(r=>r.setValue(t,n))}getValue(){return this.payload.map(t=>t.getValue())}interpolate(t,n){return new Vi(this,t,n)}}let _g=0;class Qh{constructor(){this.id=void 0,this.idle=!0,this.hasChanged=!1,this.guid=0,this.local=0,this.props={},this.merged={},this.animations={},this.interpolations={},this.values={},this.configs=[],this.listeners=[],this.queue=[],this.localQueue=void 0,this.getValues=()=>this.interpolations,this.id=_g++}update(t){if(!t)return this;const n=Ol(t),r=n.delay,i=r===void 0?0:r,o=n.to,a=$t(n,["delay","to"]);if(ie.arr(o)||ie.fun(o))this.queue.push(Q({},a,{delay:i,to:o}));else if(o){let l={};Object.entries(o).forEach(s=>{let u=s[0],c=s[1];const f=Q({to:{[u]:c},delay:vt(i,u)},a),p=l[f.delay]&&l[f.delay].to;l[f.delay]=Q({},l[f.delay],f,{to:Q({},p,f.to)})}),this.queue=Object.values(l)}return this.queue=this.queue.sort((l,s)=>l.delay-s.delay),this.diff(a),this}start(t){if(this.queue.length){this.idle=!1,this.localQueue&&this.localQueue.forEach(i=>{let o=i.from,a=o===void 0?{}:o,l=i.to,s=l===void 0?{}:l;ie.obj(a)&&(this.merged=Q({},a,this.merged)),ie.obj(s)&&(this.merged=Q({},this.merged,s))});const n=this.local=++this.guid,r=this.localQueue=this.queue;this.queue=[],r.forEach((i,o)=>{let a=i.delay,l=$t(i,["delay"]);const s=c=>{o===r.length-1&&n===this.guid&&c&&(this.idle=!0,this.props.onRest&&this.props.onRest(this.merged)),t&&t()};let u=ie.arr(l.to)||ie.fun(l.to);a?setTimeout(()=>{n===this.guid&&(u?this.runAsync(l,s):this.diff(l).start(s))},a):u?this.runAsync(l,s):this.diff(l).start(s)})}else ie.fun(t)&&this.listeners.push(t),this.props.onStart&&this.props.onStart(),Og(this);return this}stop(t){return this.listeners.forEach(n=>n(t)),this.listeners=[],this}pause(t){return this.stop(!0),t&&Pg(this),this}runAsync(t,n){var r=this;t.delay;let i=$t(t,["delay"]);const o=this.local;let a=Promise.resolve(void 0);if(ie.arr(i.to))for(let l=0;l{if(o===this.guid)return new Promise(c=>this.diff(u).start(c))})}else if(ie.fun(i.to)){let l=0,s;a=a.then(()=>i.to(u=>{const c=Q({},i,Ol(u));if(ie.arr(c.config)&&(c.config=c.config[l]),l++,o===this.guid)return s=new Promise(f=>this.diff(c).start(f))},function(u){return u===void 0&&(u=!0),r.stop(u)}).then(()=>s))}a.then(n)}diff(t){this.props=Q({},this.props,t);let n=this.props,r=n.from,i=r===void 0?{}:r,o=n.to,a=o===void 0?{}:o,l=n.config,s=l===void 0?{}:l,u=n.reverse,c=n.attach,f=n.reset,p=n.immediate;if(u){var g=[a,i];i=g[0],a=g[1]}this.merged=Q({},i,this.merged,a),this.hasChanged=!1;let v=c&&c(this);if(this.animations=Object.entries(this.merged).reduce((x,S)=>{let h=S[0],d=S[1],m=x[h]||{};const k=ie.num(d),E=ie.str(d)&&!d.startsWith("#")&&!/\d/.test(d)&&!Bh[d],w=ie.arr(d),O=!k&&!w&&!E;let F=ie.und(i[h])?d:i[h],M=k||w||E?d:1,L=vt(s,h);v&&(M=v.animations[h].parent);let j=m.parent,H=m.interpolation,re=vr(v?M.getPayload():M),ue,te=d;O&&(te=aa({range:[0,1],output:[d,d]})(1));let ee=H&&H.getValue();const V=!ie.und(j)&&m.animatedValues.some(P=>!P.done),z=!ie.equ(te,ee),B=!ie.equ(te,m.previous),oe=!ie.equ(L,m.config);if(f||B&&z||oe){if(k||E)j=H=m.parent||new Ds(F);else if(w)j=H=m.parent||new Vg(F);else if(O){let P=m.interpolation&&m.interpolation.calc(m.parent.value);P=P!==void 0&&!f?P:F,m.parent?(j=m.parent,j.setValue(0,!1)):j=new Ds(0);const T={output:[P,d]};m.interpolation?(H=m.interpolation,m.interpolation.updateConfig(T)):H=j.interpolate(T)}return re=vr(v?M.getPayload():M),ue=vr(j.getPayload()),f&&!O&&j.setValue(F,!1),this.hasChanged=!0,ue.forEach(P=>{P.startPosition=P.value,P.lastPosition=P.value,P.lastVelocity=V?P.lastVelocity:void 0,P.lastTime=V?P.lastTime:void 0,P.startTime=Hh(),P.done=!1,P.animatedStyles.clear()}),vt(p,h)&&j.setValue(O?M:d,!1),Q({},x,{[h]:Q({},m,{name:h,parent:j,interpolation:H,animatedValues:ue,toValues:re,previous:te,config:L,fromValues:vr(j.getValue()),immediate:vt(p,h),initialVelocity:Mn(L.velocity,0),clamp:Mn(L.clamp,!1),precision:Mn(L.precision,.01),tension:Mn(L.tension,170),friction:Mn(L.friction,26),mass:Mn(L.mass,1),duration:L.duration,easing:Mn(L.easing,P=>P),decay:L.decay})})}else return z?x:(O&&(j.setValue(1,!1),H.updateConfig({output:[te,te]})),j.done=!0,this.hasChanged=!0,Q({},x,{[h]:Q({},x[h],{previous:te})}))},this.animations),this.hasChanged){this.configs=Object.values(this.animations),this.values={},this.interpolations={};for(let x in this.animations)this.interpolations[x]=this.animations[x].interpolation,this.values[x]=this.animations[x].interpolation.getValue()}return this}destroy(){this.stop(),this.props={},this.merged={},this.animations={},this.interpolations={},this.values={},this.configs=[],this.local=0}}const Tg=(e,t)=>{const n=b.exports.useRef(!1),r=b.exports.useRef(),i=ie.fun(t),o=b.exports.useMemo(()=>{r.current&&(r.current.map(f=>f.destroy()),r.current=void 0);let c;return[new Array(e).fill().map((f,p)=>{const g=new Qh,v=i?vt(t,p,g):t[p];return p===0&&(c=v.ref),g.update(v),c||g.start(),g}),c]},[e]),a=o[0],l=o[1];r.current=a,b.exports.useImperativeHandle(l,()=>({start:()=>Promise.all(r.current.map(c=>new Promise(f=>c.start(f)))),stop:c=>r.current.forEach(f=>f.stop(c)),get controllers(){return r.current}}));const s=b.exports.useMemo(()=>c=>r.current.map((f,p)=>{f.update(i?vt(c,p,f):c[p]),l||f.start()}),[e]);b.exports.useEffect(()=>{n.current?i||s(t):l||r.current.forEach(c=>c.start())}),b.exports.useEffect(()=>(n.current=!0,()=>r.current.forEach(c=>c.destroy())),[]);const u=r.current.map(c=>c.getValues());return i?[u,s,c=>r.current.forEach(f=>f.pause(c))]:u},Ig=e=>{const t=ie.fun(e),n=Tg(1,t?e:[e]),r=n[0],i=n[1],o=n[2];return t?[r[0],i,o]:r};let Mg=0;const Po="enter",Pl="leave",Al="update",Rg=(e,t)=>(typeof t=="function"?e.map(t):vr(t)).map(String),$s=e=>{let t=e.items,n=e.keys,r=n===void 0?o=>o:n,i=$t(e,["items","keys"]);return t=vr(t!==void 0?t:null),Q({items:t,keys:Rg(t,r)},i)};function Fl(e,t,n){const r=Q({items:e,keys:t||(d=>d)},n),i=$s(r),o=i.lazy,a=o===void 0?!1:o;i.unique;const l=i.reset,s=l===void 0?!1:l;i.enter,i.leave,i.update;const u=i.onDestroyed;i.keys,i.items;const c=i.onFrame,f=i.onRest,p=i.onStart,g=i.ref,v=$t(i,["lazy","unique","reset","enter","leave","update","onDestroyed","keys","items","onFrame","onRest","onStart","ref"]),x=Dh(),S=b.exports.useRef(!1),h=b.exports.useRef({mounted:!1,first:!0,deleted:[],current:{},transitions:[],prevProps:{},paused:!!r.ref,instances:!S.current&&new Map,forceUpdate:x});return b.exports.useImperativeHandle(r.ref,()=>({start:()=>Promise.all(Array.from(h.current.instances).map(d=>{let m=d[1];return new Promise(k=>m.start(k))})),stop:d=>Array.from(h.current.instances).forEach(m=>m[1].stop(d)),get controllers(){return Array.from(h.current.instances).map(d=>d[1])}})),h.current=Lg(h.current,r),h.current.changed&&h.current.transitions.forEach(d=>{const m=d.slot,k=d.from,E=d.to,w=d.config,O=d.trail,F=d.key,M=d.item;h.current.instances.has(F)||h.current.instances.set(F,new Qh);const L=h.current.instances.get(F),j=Q({},v,{to:E,from:k,config:w,ref:g,onRest:H=>{h.current.mounted&&(d.destroyed&&(!g&&!a&&Vf(h,F),u&&u(M)),!Array.from(h.current.instances).some(te=>!te[1].idle)&&(g||a)&&h.current.deleted.length>0&&Vf(h),f&&f(M,m,H))},onStart:p&&(()=>p(M,m)),onFrame:c&&(H=>c(M,m,H)),delay:O,reset:s&&m===Po});L.update(j),h.current.paused||L.start()}),b.exports.useEffect(()=>(h.current.mounted=S.current=!0,()=>{h.current.mounted=S.current=!1,Array.from(h.current.instances).map(d=>d[1].destroy()),h.current.instances.clear()}),[]),h.current.transitions.map(d=>{let m=d.item,k=d.slot,E=d.key;return{item:m,key:E,state:k,props:h.current.instances.get(E).getValues()}})}function Vf(e,t){const n=e.current.deleted;for(let r of n){let i=r.key;const o=a=>a.key!==i;(ie.und(t)||t===i)&&(e.current.instances.delete(i),e.current.transitions=e.current.transitions.filter(o),e.current.deleted=e.current.deleted.filter(o))}e.current.forceUpdate()}function Lg(e,t){let n=e.first,r=e.prevProps,i=$t(e,["first","prevProps"]),o=$s(t),a=o.items,l=o.keys,s=o.initial,u=o.from,c=o.enter,f=o.leave,p=o.update,g=o.trail,v=g===void 0?0:g,x=o.unique,S=o.config,h=o.order,d=h===void 0?[Po,Pl,Al]:h,m=$s(r),k=m.keys,E=m.items,w=Q({},i.current),O=[...i.deleted],F=Object.keys(w),M=new Set(F),L=new Set(l),j=l.filter(ee=>!M.has(ee)),H=i.transitions.filter(ee=>!ee.destroyed&&!L.has(ee.originalKey)).map(ee=>ee.originalKey),re=l.filter(ee=>M.has(ee)),ue=-v;for(;d.length;)switch(d.shift()){case Po:{j.forEach((X,V)=>{x&&O.find(P=>P.originalKey===X)&&(O=O.filter(P=>P.originalKey!==X));const z=l.indexOf(X),B=a[z],oe=n&&s!==void 0?"initial":Po;w[X]={slot:oe,originalKey:X,key:x?String(X):Mg++,item:B,trail:ue=ue+v,config:vt(S,B,oe),from:vt(n&&s!==void 0?s||{}:u,B),to:vt(c,B)}});break}case Pl:{H.forEach(X=>{const V=k.indexOf(X),z=E[V],B=Pl;O.unshift(Q({},w[X],{slot:B,destroyed:!0,left:k[Math.max(0,V-1)],right:k[Math.min(k.length,V+1)],trail:ue=ue+v,config:vt(S,z,B),to:vt(f,z)})),delete w[X]});break}case Al:{re.forEach(X=>{const V=l.indexOf(X),z=a[V],B=Al;w[X]=Q({},w[X],{item:z,slot:B,trail:ue=ue+v,config:vt(S,z,B),to:vt(p,z)})});break}}let te=l.map(ee=>w[ee]);return O.forEach(ee=>{let X=ee.left;ee.right;let V=$t(ee,["left","right"]),z;(z=te.findIndex(B=>B.originalKey===X))!==-1&&(z+=1),z=Math.max(0,z),te=[...te.slice(0,z),V,...te.slice(z)]}),Q({},i,{changed:j.length||H.length||re.length,first:n&&j.length===0,transitions:te,current:w,deleted:O,prevProps:t})}class Ng extends $h{constructor(t){t===void 0&&(t={}),super(),t.transform&&!(t.transform instanceof Rt)&&(t=Zu.transform(t)),this.payload=t}}const sa={transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199},Nt="[-+]?\\d*\\.?\\d+",ua=Nt+"%";function Ua(){for(var e=arguments.length,t=new Array(e),n=0;n>>0===e&&e>=0&&e<=4294967295?e:null:(t=Ug.exec(e))?parseInt(t[1]+"ff",16)>>>0:sa.hasOwnProperty(e)?sa[e]:(t=zg.exec(e))?(tr(t[1])<<24|tr(t[2])<<16|tr(t[3])<<8|255)>>>0:(t=Dg.exec(e))?(tr(t[1])<<24|tr(t[2])<<16|tr(t[3])<<8|If(t[4]))>>>0:(t=jg.exec(e))?parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3]+"ff",16)>>>0:(t=Wg.exec(e))?parseInt(t[1],16)>>>0:(t=Hg.exec(e))?parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3]+t[4]+t[4],16)>>>0:(t=$g.exec(e))?(_f(Tf(t[1]),ao(t[2]),ao(t[3]))|255)>>>0:(t=Bg.exec(e))?(_f(Tf(t[1]),ao(t[2]),ao(t[3]))|If(t[4]))>>>0:null}function Vl(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function _f(e,t,n){const r=n<.5?n*(1+t):n+t-n*t,i=2*n-r,o=Vl(i,r,e+1/3),a=Vl(i,r,e),l=Vl(i,r,e-1/3);return Math.round(o*255)<<24|Math.round(a*255)<<16|Math.round(l*255)<<8}function tr(e){const t=parseInt(e,10);return t<0?0:t>255?255:t}function Tf(e){return(parseFloat(e)%360+360)%360/360}function If(e){const t=parseFloat(e);return t<0?0:t>1?255:Math.round(t*255)}function ao(e){const t=parseFloat(e);return t<0?0:t>100?1:t/100}function Mf(e){let t=Gg(e);if(t===null)return e;t=t||0;let n=(t&4278190080)>>>24,r=(t&16711680)>>>16,i=(t&65280)>>>8,o=(t&255)/255;return`rgba(${n}, ${r}, ${i}, ${o})`}const lo=/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,Qg=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi,Yg=new RegExp(`(${Object.keys(sa).join("|")})`,"g"),Kg=e=>{const t=e.output.map(i=>i.replace(Qg,Mf)).map(i=>i.replace(Yg,Mf)),n=t[0].match(lo).map(()=>[]);t.forEach(i=>{i.match(lo).forEach((o,a)=>n[a].push(+o))});const r=t[0].match(lo).map((i,o)=>la(Q({},e,{output:n[o]})));return i=>{let o=0;return t[0].replace(lo,()=>r[o++](i)).replace(/rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi,(a,l,s,u,c)=>`rgba(${Math.round(l)}, ${Math.round(s)}, ${Math.round(u)}, ${c})`)}};let di={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0};const Xg=(e,t)=>e+t.charAt(0).toUpperCase()+t.substring(1),Zg=["Webkit","Ms","Moz","O"];di=Object.keys(di).reduce((e,t)=>(Zg.forEach(n=>e[Xg(n,t)]=e[t]),e),di);function qg(e,t,n){return t==null||typeof t=="boolean"||t===""?"":!n&&typeof t=="number"&&t!==0&&!(di.hasOwnProperty(e)&&di[e])?t+"px":(""+t).trim()}const Rf={};kg(e=>new Ng(e));wg(Kg);xg(sa);yg((e,t)=>{if(e.nodeType&&e.setAttribute!==void 0){const i=t.style,o=t.children,a=t.scrollTop,l=t.scrollLeft,s=$t(t,["style","children","scrollTop","scrollLeft"]),u=e.nodeName==="filter"||e.parentNode&&e.parentNode.nodeName==="filter";a!==void 0&&(e.scrollTop=a),l!==void 0&&(e.scrollLeft=l),o!==void 0&&(e.textContent=o);for(let c in i)if(!!i.hasOwnProperty(c)){var n=c.indexOf("--")===0,r=qg(c,i[c],n);c==="float"&&(c="cssFloat"),n?e.style.setProperty(c,r):e.style[c]=r}for(let c in s){const f=u?c:Rf[c]||(Rf[c]=c.replace(/([A-Z])/g,p=>"-"+p.toLowerCase()));typeof e.getAttribute(f)!="undefined"&&e.setAttribute(f,s[c])}return}else return!1},e=>e);const Jg=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"],ey=mg(Eg,!1),Ao=ey(Jg),ca={};async function ty(e,t={}){const{timeout:n=15e3}=t,r=new AbortController,i=setTimeout(()=>r.abort(),n),o=await fetch(e,{...t,signal:r.signal});return clearTimeout(i),o}async function Yh(e,t={},n=1){try{return await ty(e,t)}catch(r){if(r.name==="AbortError"&&n>0)return console.log(`Request Failed due to timeout: ${e}`),Yh(e,t,n-1)}return new Response(null,{status:408,statusText:"Request Timeout",headers:{"Content-Length":"0"}})}async function ny(e,t={}){const n=`https://${GetParentResourceName()}/${e}`;return(await Yh(n,{method:"post",headers:{"Content-type":"application/json; charset=UTF-8"},body:JSON.stringify(t)},5)).json()}function ry(e,t){if(ca[e]){console.log(`[Nui] Event ${e} is already declared.`);return}ca[e]=t}function iy(e,t){window.dispatchEvent(new MessageEvent("message",{data:{type:e,payload:t}}))}const de={post:ny,onEvent:ry,emitEvent:iy},oy=()=>(window.addEventListener("message",e=>{!ca[e.data.type]||ca[e.data.type](e.data.payload)}),window.addEventListener("keydown",e=>{e.key==="d"?de.post("rotate_right"):e.key==="a"&&de.post("rotate_left")}),null),Lf={model:"mp_m_freemode_01",tattoos:{},components:[{component_id:0,drawable:15,texture:0},{component_id:1,drawable:15,texture:0},{component_id:2,drawable:15,texture:0},{component_id:3,drawable:15,texture:0},{component_id:4,drawable:15,texture:0},{component_id:5,drawable:15,texture:0},{component_id:6,drawable:15,texture:0},{component_id:7,drawable:15,texture:0},{component_id:8,drawable:15,texture:0},{component_id:9,drawable:15,texture:0},{component_id:10,drawable:15,texture:0},{component_id:11,drawable:15,texture:0}],props:[{prop_id:0,drawable:-1,texture:0},{prop_id:1,drawable:-1,texture:0},{prop_id:2,drawable:-1,texture:0},{prop_id:6,drawable:-1,texture:0},{prop_id:7,drawable:-1,texture:0}],headBlend:{shapeFirst:0,shapeSecond:0,shapeThird:0,shapeMix:0,skinFirst:0,skinSecond:0,skinThird:0,skinMix:0,thirdMix:0},faceFeatures:{noseWidth:0,nosePeakHigh:0,nosePeakSize:0,noseBoneHigh:0,nosePeakLowering:0,noseBoneTwist:0,eyeBrownHigh:0,eyeBrownForward:0,cheeksBoneHigh:0,cheeksBoneWidth:0,cheeksWidth:0,eyesOpening:0,lipsThickness:0,jawBoneWidth:0,jawBoneBackSize:0,chinBoneLowering:0,chinBoneLenght:0,chinBoneSize:0,chinHole:0,neckThickness:0},headOverlays:{blemishes:{style:0,opacity:0},beard:{style:0,opacity:0,color:0},eyebrows:{style:0,opacity:0,color:0},ageing:{style:0,opacity:0},makeUp:{style:0,opacity:0,color:0,secondColor:0},blush:{style:0,opacity:0,color:0},complexion:{style:0,opacity:0},sunDamage:{style:0,opacity:0},lipstick:{style:0,opacity:0,color:0},moleAndFreckles:{style:0,opacity:0},chestHair:{style:0,opacity:0,color:0},bodyBlemishes:{style:0,opacity:0}},hair:{style:0,color:0,highlight:0,texture:0},eyeColor:0},ay={ped:{model:{items:["mp_m_freemode_01","mp_f_freemode_01","player_zero"]}},tattoos:{items:{},opacity:{min:0,max:1,factor:.1}},components:[{component_id:0,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:1,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:2,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:3,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:4,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:5,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:6,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:7,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:8,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:9,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:10,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{component_id:11,drawable:{min:0,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}}],props:[{prop_id:0,drawable:{min:-1,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{prop_id:1,drawable:{min:-1,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{prop_id:2,drawable:{min:-1,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{prop_id:6,drawable:{min:-1,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},{prop_id:7,drawable:{min:-1,max:255},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}}],headBlend:{shapeFirst:{min:0,max:45},shapeSecond:{min:0,max:45},shapeThird:{min:0,max:45},skinFirst:{min:0,max:45},skinSecond:{min:0,max:45},skinThird:{min:0,max:45},shapeMix:{min:0,max:10,factor:.1},skinMix:{min:0,max:10,factor:.1},thirdMix:{min:0,max:10,factor:.1}},faceFeatures:{noseWidth:{min:-10,max:10,factor:.1},nosePeakHigh:{min:-10,max:10,factor:.1},nosePeakSize:{min:-10,max:10,factor:.1},noseBoneHigh:{min:-10,max:10,factor:.1},nosePeakLowering:{min:-10,max:10,factor:.1},noseBoneTwist:{min:-10,max:10,factor:.1},eyeBrownHigh:{min:-10,max:10,factor:.1},eyeBrownForward:{min:-10,max:10,factor:.1},cheeksBoneHigh:{min:-10,max:10,factor:.1},cheeksBoneWidth:{min:-10,max:10,factor:.1},cheeksWidth:{min:-10,max:10,factor:.1},eyesOpening:{min:-10,max:10,factor:.1},lipsThickness:{min:-10,max:10,factor:.1},jawBoneWidth:{min:-10,max:10,factor:.1},jawBoneBackSize:{min:-10,max:10,factor:.1},chinBoneLowering:{min:-10,max:10,factor:.1},chinBoneLenght:{min:-10,max:10,factor:.1},chinBoneSize:{min:-10,max:10,factor:.1},chinHole:{min:-10,max:10,factor:.1},neckThickness:{min:-10,max:10,factor:.1}},headOverlays:{blemishes:{style:{min:0,max:23},opacity:{min:0,max:10,factor:.1}},beard:{style:{min:0,max:28},opacity:{min:0,max:10,factor:.1},color:{items:[[255,0,0],[0,255,0],[0,0,255]]}},eyebrows:{style:{min:0,max:33},opacity:{min:0,max:10,factor:.1},color:{items:[[255,0,0],[0,255,0],[0,0,255]]}},ageing:{style:{min:0,max:14},opacity:{min:0,max:10,factor:.1}},makeUp:{style:{min:0,max:74},opacity:{min:0,max:10,factor:.1},color:{items:[[255,0,0],[0,255,0],[0,0,255]]}},blush:{style:{min:0,max:6},opacity:{min:0,max:10,factor:.1},color:{items:[[255,0,0],[0,255,0],[0,0,255]]}},complexion:{style:{min:0,max:11},opacity:{min:0,max:10,factor:.1}},sunDamage:{style:{min:0,max:10},opacity:{min:0,max:10,factor:.1}},lipstick:{style:{min:0,max:9},opacity:{min:0,max:10,factor:.1},color:{items:[[255,0,0],[0,255,0],[0,0,255]]}},moleAndFreckles:{style:{min:0,max:17},opacity:{min:0,max:10,factor:.1}},chestHair:{style:{min:0,max:16},opacity:{min:0,max:10,factor:.1},color:{items:[[255,0,0],[0,255,0],[0,0,255]]}},bodyBlemishes:{style:{min:0,max:11},opacity:{min:0,max:10,factor:.1}}},hair:{style:{min:0,max:255},color:{items:[[255,0,0],[0,255,0],[0,0,255]]},highlight:{items:[[255,0,0],[0,255,0],[0,0,255]]},texture:{min:0,max:255},blacklist:{drawables:[],textures:[]}},eyeColor:{min:0,max:30}},_l={head:!1,body:!1,bottom:!1},Tl={left:!1,right:!1},ly={head:!1,body:!1,bottom:!1};var Kh={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Nf=He.createContext&&He.createContext(Kh),Pn=globalThis&&globalThis.__assign||function(){return Pn=Object.assign||function(e){for(var t,n=1,r=arguments.length;ne.theme.fontColor||"255, 255, 255"}, 1); + + user-select: none; + + & + div { + margin-top: 10px; + } +`,my=Ve.div` + width: 100%; + height: 40px; + + display: flex; + align-items: center; + justify-content: space-between; + + padding: 0 10px; + border-radius: ${e=>e.theme.borderRadius||"4px"}; + + z-index: 2; + + background: rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, ${({active:e})=>e?"0.9":"0.7"}); + + box-shadow: 0px 0px 5px rgb(0, 0, 0, 0.2); + + transition: background 0.1s; + + &:hover { + background: rgba(${e=>e.theme.primaryBackground||"0, 0, 0"}, 0.9); + transform: scale(1.05); + transition: background 0.2s; + cursor: pointer; + } + + ${({active:e})=>e&&Di` + background: rgba(${t=>t.theme.primaryBackground||"0, 0, 0"}, 1); + &:hover { + ${t=>t.theme.smoothBackgroundTransition?"transition: background 0.2s;":""} + background: rgba(${t=>t.theme.primaryBackground||"0, 0, 0"}, 1); + } + `} + + span { + font-size: 15px; + font-weight: ${e=>e.theme.sectionFontWeight||"normal"}; + } +`,vy=Ve.div` + padding: 0 2px 5px 2px; + + overflow: hidden; +`,Jn=({children:e,title:t,deps:n=[]})=>{const[r,i]=b.exports.useState(!1),[o,a]=b.exports.useState(0),l=b.exports.useRef(null),s=Ig({height:r?o:0,opacity:r?1:0});return b.exports.useEffect(()=>{l.current&&a(l.current.offsetHeight)},[l,a]),b.exports.useEffect(()=>{l.current&&a(l.current.offsetHeight)},[l,a,n]),R(hy,{children:[R(my,{active:r,onClick:()=>i(u=>!u),children:[y("span",{children:t}),r?y(py,{size:30}):y(cy,{size:30})]}),y(Ao.div,{style:{...s,overflow:"hidden"},children:y(vy,{ref:l,children:e})})]})},gy=Ve.div` + margin-top: 0.5rem; + + display: flex; + flex-direction: column; + + padding: 10px; + border-radius: 2px; + + background: rgba(${e=>e.theme.secondayBackground||"0, 0, 0"}, 0.3); + + span { + color: rgba(${e=>e.theme.fontColor||"255, 255, 255"}, 1); + font-size: 14px; + } +`,yy=Ve.div` + width: 100%; + display: inline-flex; + flex-wrap: wrap; + + margin-top: 10px; + + > div { + & + div { + margin-top: 10px; + } + } +`,J=({children:e,title:t})=>R(gy,{children:[t&&y("span",{children:t}),y(yy,{children:e})]});function xy(e){if(e.sheet)return e.sheet;for(var t=0;t0?Ye(zr,--ht):0,Ir--,Me===10&&(Ir=1,Ga--),Me}function xt(){return Me=ht2||Ti(Me)>3?"":" "}function Ty(e,t){for(;--t&&xt()&&!(Me<48||Me>102||Me>57&&Me<65||Me>70&&Me<97););return $i(e,Fo()+(t<6&&Kt()==32&&xt()==32))}function js(e){for(;xt();)switch(Me){case e:return ht;case 34:case 39:e!==34&&e!==39&&js(Me);break;case 40:e===41&&js(e);break;case 92:xt();break}return ht}function Iy(e,t){for(;xt()&&e+Me!==47+10;)if(e+Me===42+42&&Kt()===47)break;return"/*"+$i(t,ht-1)+"*"+Wa(e===47?e:xt())}function My(e){for(;!Ti(Kt());)xt();return $i(e,ht)}function Ry(e){return nm(_o("",null,null,null,[""],e=tm(e),0,[0],e))}function _o(e,t,n,r,i,o,a,l,s){for(var u=0,c=0,f=a,p=0,g=0,v=0,x=1,S=1,h=1,d=0,m="",k=i,E=o,w=r,O=m;S;)switch(v=d,d=xt()){case 40:if(v!=108&&Ye(O,f-1)==58){Bs(O+=ge(Vo(d),"&","&\f"),"&\f")!=-1&&(h=-1);break}case 34:case 39:case 91:O+=Vo(d);break;case 9:case 10:case 13:case 32:O+=_y(v);break;case 92:O+=Ty(Fo()-1,7);continue;case 47:switch(Kt()){case 42:case 47:so(Ly(Iy(xt(),Fo()),t,n),s);break;default:O+="/"}break;case 123*x:l[u++]=Ut(O)*h;case 125*x:case 59:case 0:switch(d){case 0:case 125:S=0;case 59+c:h==-1&&(O=ge(O,/\f/g,"")),g>0&&Ut(O)-f&&so(g>32?Df(O+";",r,n,f-1):Df(ge(O," ","")+";",r,n,f-2),s);break;case 59:O+=";";default:if(so(w=zf(O,t,n,u,c,i,l,m,k=[],E=[],f),o),d===123)if(c===0)_o(O,t,w,w,k,o,f,l,E);else switch(p===99&&Ye(O,3)===110?100:p){case 100:case 108:case 109:case 115:_o(e,w,w,r&&so(zf(e,w,w,0,0,i,l,m,i,k=[],f),E),i,E,f,l,r?k:E);break;default:_o(O,w,w,w,[""],E,0,l,E)}}u=c=g=0,x=h=1,m=O="",f=a;break;case 58:f=1+Ut(O),g=v;default:if(x<1){if(d==123)--x;else if(d==125&&x++==0&&Vy()==125)continue}switch(O+=Wa(d),d*x){case 38:h=c>0?1:(O+="\f",-1);break;case 44:l[u++]=(Ut(O)-1)*h,h=1;break;case 64:Kt()===45&&(O+=Vo(xt())),p=Kt(),c=f=Ut(m=O+=My(Fo())),d++;break;case 45:v===45&&Ut(O)==2&&(x=0)}}return o}function zf(e,t,n,r,i,o,a,l,s,u,c){for(var f=i-1,p=i===0?o:[""],g=ec(p),v=0,x=0,S=0;v0?p[h]+" "+d:ge(d,/&\f/g,p[h])))&&(s[S++]=m);return Qa(e,t,n,i===0?qu:l,s,u,c)}function Ly(e,t,n){return Qa(e,t,n,Zh,Wa(Fy()),_i(e,2,-2),0)}function Df(e,t,n,r){return Qa(e,t,n,Ju,_i(e,0,r),_i(e,r+1,-1),r)}function br(e,t){for(var n="",r=ec(e),i=0;i6)switch(Ye(e,t+1)){case 109:if(Ye(e,t+4)!==45)break;case 102:return ge(e,/(.+:)(.+)-([^]+)/,"$1"+ve+"$2-$3$1"+fa+(Ye(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~Bs(e,"stretch")?rm(ge(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(Ye(e,t+1)!==115)break;case 6444:switch(Ye(e,Ut(e)-3-(~Bs(e,"!important")&&10))){case 107:return ge(e,":",":"+ve)+e;case 101:return ge(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+ve+(Ye(e,14)===45?"inline-":"")+"box$3$1"+ve+"$2$3$1"+nt+"$2box$3")+e}break;case 5936:switch(Ye(e,t+11)){case 114:return ve+e+nt+ge(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return ve+e+nt+ge(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return ve+e+nt+ge(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return ve+e+nt+e+e}return e}var Wy=function(t,n,r,i){if(t.length>-1&&!t.return)switch(t.type){case Ju:t.return=rm(t.value,t.length);break;case qh:return br([Yr(t,{value:ge(t.value,"@","@"+ve)})],i);case qu:if(t.length)return Ay(t.props,function(o){switch(Py(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return br([Yr(t,{props:[ge(o,/:(read-\w+)/,":"+fa+"$1")]})],i);case"::placeholder":return br([Yr(t,{props:[ge(o,/:(plac\w+)/,":"+ve+"input-$1")]}),Yr(t,{props:[ge(o,/:(plac\w+)/,":"+fa+"$1")]}),Yr(t,{props:[ge(o,/:(plac\w+)/,nt+"input-$1")]})],i)}return""})}},Gy=[Wy],Qy=function(t){var n=t.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(x){var S=x.getAttribute("data-emotion");S.indexOf(" ")!==-1&&(document.head.appendChild(x),x.setAttribute("data-s",""))})}var i=t.stylisPlugins||Gy,o={},a,l=[];a=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(x){for(var S=x.getAttribute("data-emotion").split(" "),h=1;h=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var Xy={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},Zy=/[A-Z]|^ms/g,qy=/_EMO_([^_]+?)_([^]*?)_EMO_/g,am=function(t){return t.charCodeAt(1)===45},Bf=function(t){return t!=null&&typeof t!="boolean"},Il=Eh(function(e){return am(e)?e:e.replace(Zy,"-$&").toLowerCase()}),jf=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(qy,function(r,i,o){return Wt={name:i,styles:o,next:Wt},i})}return Xy[t]!==1&&!am(t)&&typeof n=="number"&&n!==0?n+"px":n};function Ii(e,t,n){if(n==null)return"";if(n.__emotion_styles!==void 0)return n;switch(typeof n){case"boolean":return"";case"object":{if(n.anim===1)return Wt={name:n.name,styles:n.styles,next:Wt},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)Wt={name:r.name,styles:r.styles,next:Wt},r=r.next;var i=n.styles+";";return i}return Jy(e,t,n)}case"function":{if(e!==void 0){var o=Wt,a=n(e);return Wt=o,Ii(e,t,a)}break}}if(t==null)return n;var l=t[n];return l!==void 0?l:n}function Jy(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i=0)&&(!Object.prototype.propertyIsEnumerable.call(e,r)||(n[r]=e[r]))}return n}function Mr(e){return Mr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mr(e)}var fm={},dm={exports:{}},d2="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",p2=d2,h2=p2;function pm(){}function hm(){}hm.resetWarningCache=pm;var m2=function(){function e(r,i,o,a,l,s){if(s!==h2){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:hm,resetWarningCache:pm};return n.PropTypes=n,n};dm.exports=m2();Object.defineProperty(fm,"__esModule",{value:!0});var Ml=Object.assign||function(e){for(var t=1;t=0||!Object.prototype.hasOwnProperty.call(e,r)||(n[r]=e[r]);return n}function y2(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function x2(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t&&(typeof t=="object"||typeof t=="function")?t:e}function w2(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var Wf={position:"absolute",top:0,left:0,visibility:"hidden",height:0,overflow:"scroll",whiteSpace:"pre"},S2=["extraWidth","injectStyles","inputClassName","inputRef","inputStyle","minWidth","onAutosize","placeholderIsMinWidth"],k2=function(t){return S2.forEach(function(n){return delete t[n]}),t},Gf=function(t,n){n.style.fontSize=t.fontSize,n.style.fontFamily=t.fontFamily,n.style.fontWeight=t.fontWeight,n.style.fontStyle=t.fontStyle,n.style.letterSpacing=t.letterSpacing,n.style.textTransform=t.textTransform},gm=typeof window!="undefined"&&window.navigator?/MSIE |Trident\/|Edge\//.test(window.navigator.userAgent):!1,Qf=function(){return gm?"_"+Math.random().toString(36).substr(2,12):void 0},oc=function(e){w2(t,e),Uf(t,null,[{key:"getDerivedStateFromProps",value:function(r,i){var o=r.id;return o!==i.prevId?{inputId:o||Qf(),prevId:o}:null}}]);function t(n){y2(this,t);var r=x2(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n));return r.inputRef=function(i){r.input=i,typeof r.props.inputRef=="function"&&r.props.inputRef(i)},r.placeHolderSizerRef=function(i){r.placeHolderSizer=i},r.sizerRef=function(i){r.sizer=i},r.state={inputWidth:n.minWidth,inputId:n.id||Qf(),prevId:n.id},r}return Uf(t,[{key:"componentDidMount",value:function(){this.mounted=!0,this.copyInputStyles(),this.updateInputWidth()}},{key:"componentDidUpdate",value:function(r,i){i.inputWidth!==this.state.inputWidth&&typeof this.props.onAutosize=="function"&&this.props.onAutosize(this.state.inputWidth),this.updateInputWidth()}},{key:"componentWillUnmount",value:function(){this.mounted=!1}},{key:"copyInputStyles",value:function(){if(!(!this.mounted||!window.getComputedStyle)){var r=this.input&&window.getComputedStyle(this.input);!r||(Gf(r,this.sizer),this.placeHolderSizer&&Gf(r,this.placeHolderSizer))}}},{key:"updateInputWidth",value:function(){if(!(!this.mounted||!this.sizer||typeof this.sizer.scrollWidth=="undefined")){var r=void 0;this.props.placeholder&&(!this.props.value||this.props.value&&this.props.placeholderIsMinWidth)?r=Math.max(this.sizer.scrollWidth,this.placeHolderSizer.scrollWidth)+2:r=this.sizer.scrollWidth+2;var i=this.props.type==="number"&&this.props.extraWidth===void 0?16:parseInt(this.props.extraWidth)||0;r+=i,r-1}function wm(e){return ac(e)?window.pageYOffset:e.scrollTop}function ha(e,t){if(ac(e)){window.scrollTo(0,t);return}e.scrollTop=t}function _2(e){var t=getComputedStyle(e),n=t.position==="absolute",r=/(auto|scroll)/,i=document.documentElement;if(t.position==="fixed")return i;for(var o=e;o=o.parentElement;)if(t=getComputedStyle(o),!(n&&t.position==="static")&&r.test(t.overflow+t.overflowY+t.overflowX))return o;return i}function T2(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function uo(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:200,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:pa,i=wm(e),o=t-i,a=10,l=0;function s(){l+=a;var u=T2(l,i,o,n);ha(e,u),ln.bottom?ha(e,Math.min(t.offsetTop+t.clientHeight-e.offsetHeight+i,e.scrollHeight)):r.top-i=x)return{placement:"bottom",maxHeight:t};if(L>=x&&!a)return o&&uo(u,j,re),{placement:"bottom",maxHeight:t};if(!a&&L>=r||a&&F>=r){o&&uo(u,j,re);var ue=a?F-E:L-E;return{placement:"bottom",maxHeight:ue}}if(i==="auto"||a){var te=t,ee=a?O:M;return ee>=r&&(te=Math.min(ee-E-s.controlHeight,t)),{placement:"top",maxHeight:te}}if(i==="bottom")return o&&ha(u,j),{placement:"bottom",maxHeight:t};break;case"top":if(O>=x)return{placement:"top",maxHeight:t};if(M>=x&&!a)return o&&uo(u,H,re),{placement:"top",maxHeight:t};if(!a&&M>=r||a&&O>=r){var X=t;return(!a&&M>=r||a&&O>=r)&&(X=a?O-w:M-w),o&&uo(u,H,re),{placement:"top",maxHeight:X}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'.concat(i,'".'))}return c}function D2(e){var t={bottom:"top",top:"bottom"};return e?t[e]:"bottom"}var Ws=function(t){return t==="auto"?"bottom":t},$2=function(t){var n,r=t.placement,i=t.theme,o=i.borderRadius,a=i.spacing,l=i.colors;return n={label:"menu"},Xt(n,D2(r),"100%"),Xt(n,"backgroundColor",l.neutral0),Xt(n,"borderRadius",o),Xt(n,"boxShadow","0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)"),Xt(n,"marginBottom",a.menuGutter),Xt(n,"marginTop",a.menuGutter),Xt(n,"position","absolute"),Xt(n,"width","100%"),Xt(n,"zIndex",1),n},km=b.exports.createContext({getPortalPlacement:null}),bm=function(e){Xa(n,e);var t=Za(n);function n(){var r;Ya(this,n);for(var i=arguments.length,o=new Array(i),a=0;ae.length)&&(t=e.length);for(var n=0,r=new Array(t);n-1}};function Qx(e){e.in,e.out,e.onExited,e.appear,e.enter,e.exit;var t=e.innerRef;e.emotion;var n=Dr(e,["in","out","onExited","appear","enter","exit","innerRef","emotion"]);return Y("input",Q({ref:t},n,{css:ic({label:"dummyInput",background:0,border:0,fontSize:"inherit",outline:0,padding:0,width:1,color:"transparent",left:-100,opacity:0,position:"relative",transform:"scale(0)"},"","")}))}var Yx=function(t){t.preventDefault(),t.stopPropagation()};function Kx(e){var t=e.isEnabled,n=e.onBottomArrive,r=e.onBottomLeave,i=e.onTopArrive,o=e.onTopLeave,a=b.exports.useRef(!1),l=b.exports.useRef(!1),s=b.exports.useRef(0),u=b.exports.useRef(null),c=b.exports.useCallback(function(S,h){if(u.current!==null){var d=u.current,m=d.scrollTop,k=d.scrollHeight,E=d.clientHeight,w=u.current,O=h>0,F=k-E-m,M=!1;F>h&&a.current&&(r&&r(S),a.current=!1),O&&l.current&&(o&&o(S),l.current=!1),O&&h>F?(n&&!a.current&&n(S),w.scrollTop=k,M=!0,a.current=!0):!O&&-h>m&&(i&&!l.current&&i(S),w.scrollTop=0,M=!0,l.current=!0),M&&Yx(S)}},[]),f=b.exports.useCallback(function(S){c(S,S.deltaY)},[c]),p=b.exports.useCallback(function(S){s.current=S.changedTouches[0].clientY},[]),g=b.exports.useCallback(function(S){var h=s.current-S.changedTouches[0].clientY;c(S,h)},[c]),v=b.exports.useCallback(function(S){if(!!S){var h=N2?{passive:!1}:!1;typeof S.addEventListener=="function"&&S.addEventListener("wheel",f,h),typeof S.addEventListener=="function"&&S.addEventListener("touchstart",p,h),typeof S.addEventListener=="function"&&S.addEventListener("touchmove",g,h)}},[g,p,f]),x=b.exports.useCallback(function(S){!S||(typeof S.removeEventListener=="function"&&S.removeEventListener("wheel",f,!1),typeof S.removeEventListener=="function"&&S.removeEventListener("touchstart",p,!1),typeof S.removeEventListener=="function"&&S.removeEventListener("touchmove",g,!1))},[g,p,f]);return b.exports.useEffect(function(){if(!!t){var S=u.current;return v(S),function(){x(S)}}},[t,v,x]),function(S){u.current=S}}var td=["boxSizing","height","overflow","paddingRight","position"],nd={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"};function rd(e){e.preventDefault()}function id(e){e.stopPropagation()}function od(){var e=this.scrollTop,t=this.scrollHeight,n=e+this.offsetHeight;e===0?this.scrollTop=1:n===t&&(this.scrollTop=e-1)}function ad(){return"ontouchstart"in window||navigator.maxTouchPoints}var ld=!!(typeof window!="undefined"&&window.document&&window.document.createElement),Xr=0,nr={capture:!1,passive:!1};function Xx(e){var t=e.isEnabled,n=e.accountForScrollbars,r=n===void 0?!0:n,i=b.exports.useRef({}),o=b.exports.useRef(null),a=b.exports.useCallback(function(s){if(!!ld){var u=document.body,c=u&&u.style;if(r&&td.forEach(function(v){var x=c&&c[v];i.current[v]=x}),r&&Xr<1){var f=parseInt(i.current.paddingRight,10)||0,p=document.body?document.body.clientWidth:0,g=window.innerWidth-p+f||0;Object.keys(nd).forEach(function(v){var x=nd[v];c&&(c[v]=x)}),c&&(c.paddingRight="".concat(g,"px"))}u&&ad()&&(u.addEventListener("touchmove",rd,nr),s&&(s.addEventListener("touchstart",od,nr),s.addEventListener("touchmove",id,nr))),Xr+=1}},[]),l=b.exports.useCallback(function(s){if(!!ld){var u=document.body,c=u&&u.style;Xr=Math.max(Xr-1,0),r&&Xr<1&&td.forEach(function(f){var p=i.current[f];c&&(c[f]=p)}),u&&ad()&&(u.removeEventListener("touchmove",rd,nr),s&&(s.removeEventListener("touchstart",od,nr),s.removeEventListener("touchmove",id,nr)))}},[]);return b.exports.useEffect(function(){if(!!t){var s=o.current;return a(s),function(){l(s)}}},[t,a,l]),function(s){o.current=s}}var Zx=function(){return document.activeElement&&document.activeElement.blur()},qx={name:"1kfdb0e",styles:"position:fixed;left:0;bottom:0;right:0;top:0"};function Jx(e){var t=e.children,n=e.lockEnabled,r=e.captureEnabled,i=r===void 0?!0:r,o=e.onBottomArrive,a=e.onBottomLeave,l=e.onTopArrive,s=e.onTopLeave,u=Kx({isEnabled:i,onBottomArrive:o,onBottomLeave:a,onTopArrive:l,onTopLeave:s}),c=Xx({isEnabled:n}),f=function(g){u(g),c(g)};return Y(He.Fragment,null,n&&Y("div",{onClick:Zx,css:qx}),t(f))}var ew=function(t){return t.label},tw=function(t){return t.label},nw=function(t){return t.value},rw=function(t){return!!t.isDisabled},iw={clearIndicator:rx,container:Y2,control:ux,dropdownIndicator:tx,group:fx,groupHeading:px,indicatorsContainer:q2,indicatorSeparator:ox,input:mx,loadingIndicator:sx,loadingMessage:W2,menu:$2,menuList:j2,menuPortal:G2,multiValue:yx,multiValueLabel:xx,multiValueRemove:wx,noOptionsMessage:U2,option:Cx,placeholder:Ox,singleValue:Ax,valueContainer:X2},ow={primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},aw=4,Lm=4,lw=38,sw=Lm*2,uw={baseUnit:Lm,controlHeight:lw,menuGutter:sw},Dl={borderRadius:aw,colors:ow,spacing:uw},cw={"aria-live":"polite",backspaceRemovesValue:!0,blurInputOnSelect:Zf(),captureMenuScroll:!Zf(),closeMenuOnSelect:!0,closeMenuOnScroll:!1,components:{},controlShouldRenderValue:!0,escapeClearsValue:!1,filterOption:Gx(),formatGroupLabel:ew,getOptionLabel:tw,getOptionValue:nw,isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:rw,loadingMessage:function(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!R2(),noOptionsMessage:function(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function(t){var n=t.count;return"".concat(n," result").concat(n!==1?"s":""," available")},styles:{},tabIndex:"0",tabSelectsValue:!0};function sd(e,t,n,r){var i=$m(e,t,n),o=Bm(e,t,n),a=Dm(e,t),l=ma(e,t);return{type:"option",data:t,isDisabled:i,isSelected:o,label:a,value:l,index:r}}function Nm(e,t){return e.options.map(function(n,r){if(n.options){var i=n.options.map(function(a,l){return sd(e,a,t,l)}).filter(function(a){return ud(e,a)});return i.length>0?{type:"group",data:n,options:i,index:r}:void 0}var o=sd(e,n,t,r);return ud(e,o)?o:void 0}).filter(function(n){return!!n})}function zm(e){return e.reduce(function(t,n){return n.type==="group"?t.push.apply(t,Im(n.options.map(function(r){return r.data}))):t.push(n.data),t},[])}function fw(e,t){return zm(Nm(e,t))}function ud(e,t){var n=e.inputValue,r=n===void 0?"":n,i=t.data,o=t.isSelected,a=t.label,l=t.value;return(!Hm(e)||!o)&&jm(e,{label:a,value:l,data:i},r)}function dw(e,t){var n=e.focusedValue,r=e.selectValue,i=r.indexOf(n);if(i>-1){var o=t.indexOf(n);if(o>-1)return n;if(i-1?n:t[0]}var Dm=function(t,n){return t.getOptionLabel(n)},ma=function(t,n){return t.getOptionValue(n)};function $m(e,t,n){return typeof e.isOptionDisabled=="function"?e.isOptionDisabled(t,n):!1}function Bm(e,t,n){if(n.indexOf(t)>-1)return!0;if(typeof e.isOptionSelected=="function")return e.isOptionSelected(t,n);var r=ma(e,t);return n.some(function(i){return ma(e,i)===r})}function jm(e,t,n){return e.filterOption?e.filterOption(t,n):!0}var Hm=function(t){var n=t.hideSelectedOptions,r=t.isMulti;return n===void 0?r:n},hw=1,Um=function(e){Xa(n,e);var t=Za(n);function n(r){var i;return Ya(this,n),i=t.call(this,r),i.state={ariaSelection:null,focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,selectValue:[],clearFocusValueOnUpdate:!1,inputIsHiddenAfterUpdate:void 0,prevProps:void 0},i.blockOptionHover=!1,i.isComposing=!1,i.commonProps=void 0,i.initialTouchX=0,i.initialTouchY=0,i.instancePrefix="",i.openAfterFocus=!1,i.scrollToFocusedOptionOnUpdate=!1,i.userIsDragging=void 0,i.controlRef=null,i.getControlRef=function(o){i.controlRef=o},i.focusedOptionRef=null,i.getFocusedOptionRef=function(o){i.focusedOptionRef=o},i.menuListRef=null,i.getMenuListRef=function(o){i.menuListRef=o},i.inputRef=null,i.getInputRef=function(o){i.inputRef=o},i.focus=i.focusInput,i.blur=i.blurInput,i.onChange=function(o,a){var l=i.props,s=l.onChange,u=l.name;a.name=u,i.ariaOnChange(o,a),s(o,a)},i.setValue=function(o){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"set-value",l=arguments.length>2?arguments[2]:void 0,s=i.props,u=s.closeMenuOnSelect,c=s.isMulti;i.onInputChange("",{action:"set-value"}),u&&(i.setState({inputIsHiddenAfterUpdate:!c}),i.onMenuClose()),i.setState({clearFocusValueOnUpdate:!0}),i.onChange(o,{action:a,option:l})},i.selectOption=function(o){var a=i.props,l=a.blurInputOnSelect,s=a.isMulti,u=a.name,c=i.state.selectValue,f=s&&i.isOptionSelected(o,c),p=i.isOptionDisabled(o,c);if(f){var g=i.getOptionValue(o);i.setValue(c.filter(function(v){return i.getOptionValue(v)!==g}),"deselect-option",o)}else if(!p)s?i.setValue([].concat(Im(c),[o]),"select-option",o):i.setValue(o,"select-option");else{i.ariaOnChange(o,{action:"select-option",name:u});return}l&&i.blurInput()},i.removeValue=function(o){var a=i.props.isMulti,l=i.state.selectValue,s=i.getOptionValue(o),u=l.filter(function(f){return i.getOptionValue(f)!==s}),c=a?u:u[0]||null;i.onChange(c,{action:"remove-value",removedValue:o}),i.focusInput()},i.clearValue=function(){var o=i.state.selectValue;i.onChange(i.props.isMulti?[]:null,{action:"clear",removedValues:o})},i.popValue=function(){var o=i.props.isMulti,a=i.state.selectValue,l=a[a.length-1],s=a.slice(0,a.length-1),u=o?s:s[0]||null;i.onChange(u,{action:"pop-value",removedValue:l})},i.getValue=function(){return i.state.selectValue},i.cx=function(){for(var o=arguments.length,a=new Array(o),l=0;lc||u>c}},i.onTouchEnd=function(o){i.userIsDragging||(i.controlRef&&!i.controlRef.contains(o.target)&&i.menuListRef&&!i.menuListRef.contains(o.target)&&i.blurInput(),i.initialTouchX=0,i.initialTouchY=0)},i.onControlTouchEnd=function(o){i.userIsDragging||i.onControlMouseDown(o)},i.onClearIndicatorTouchEnd=function(o){i.userIsDragging||i.onClearIndicatorMouseDown(o)},i.onDropdownIndicatorTouchEnd=function(o){i.userIsDragging||i.onDropdownIndicatorMouseDown(o)},i.handleInputChange=function(o){var a=o.currentTarget.value;i.setState({inputIsHiddenAfterUpdate:!1}),i.onInputChange(a,{action:"input-change"}),i.props.menuIsOpen||i.onMenuOpen()},i.onInputFocus=function(o){i.props.onFocus&&i.props.onFocus(o),i.setState({inputIsHiddenAfterUpdate:!1,isFocused:!0}),(i.openAfterFocus||i.props.openMenuOnFocus)&&i.openMenu("first"),i.openAfterFocus=!1},i.onInputBlur=function(o){if(i.menuListRef&&i.menuListRef.contains(document.activeElement)){i.inputRef.focus();return}i.props.onBlur&&i.props.onBlur(o),i.onInputChange("",{action:"input-blur"}),i.onMenuClose(),i.setState({focusedValue:null,isFocused:!1})},i.onOptionHover=function(o){i.blockOptionHover||i.state.focusedOption===o||i.setState({focusedOption:o})},i.shouldHideSelectedOptions=function(){return Hm(i.props)},i.onKeyDown=function(o){var a=i.props,l=a.isMulti,s=a.backspaceRemovesValue,u=a.escapeClearsValue,c=a.inputValue,f=a.isClearable,p=a.isDisabled,g=a.menuIsOpen,v=a.onKeyDown,x=a.tabSelectsValue,S=a.openMenuOnFocus,h=i.state,d=h.focusedOption,m=h.focusedValue,k=h.selectValue;if(!p&&!(typeof v=="function"&&(v(o),o.defaultPrevented))){switch(i.blockOptionHover=!0,o.key){case"ArrowLeft":if(!l||c)return;i.focusValue("previous");break;case"ArrowRight":if(!l||c)return;i.focusValue("next");break;case"Delete":case"Backspace":if(c)return;if(m)i.removeValue(m);else{if(!s)return;l?i.popValue():f&&i.clearValue()}break;case"Tab":if(i.isComposing||o.shiftKey||!g||!x||!d||S&&i.isOptionSelected(d,k))return;i.selectOption(d);break;case"Enter":if(o.keyCode===229)break;if(g){if(!d||i.isComposing)return;i.selectOption(d);break}return;case"Escape":g?(i.setState({inputIsHiddenAfterUpdate:!1}),i.onInputChange("",{action:"menu-close"}),i.onMenuClose()):f&&u&&i.clearValue();break;case" ":if(c)return;if(!g){i.openMenu("first");break}if(!d)return;i.selectOption(d);break;case"ArrowUp":g?i.focusOption("up"):i.openMenu("last");break;case"ArrowDown":g?i.focusOption("down"):i.openMenu("first");break;case"PageUp":if(!g)return;i.focusOption("pageup");break;case"PageDown":if(!g)return;i.focusOption("pagedown");break;case"Home":if(!g)return;i.focusOption("first");break;case"End":if(!g)return;i.focusOption("last");break;default:return}o.preventDefault()}},i.instancePrefix="react-select-"+(i.props.instanceId||++hw),i.state.selectValue=Xf(r.value),i}return Ka(n,[{key:"componentDidMount",value:function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput()}},{key:"componentDidUpdate",value:function(i){var o=this.props,a=o.isDisabled,l=o.menuIsOpen,s=this.state.isFocused;(s&&!a&&i.isDisabled||s&&l&&!i.menuIsOpen)&&this.focusInput(),s&&a&&!i.isDisabled&&this.setState({isFocused:!1},this.onMenuClose),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(I2(this.menuListRef,this.focusedOptionRef),this.scrollToFocusedOptionOnUpdate=!1)}},{key:"componentWillUnmount",value:function(){this.stopListeningComposition(),this.stopListeningToTouch(),document.removeEventListener("scroll",this.onScroll,!0)}},{key:"onMenuOpen",value:function(){this.props.onMenuOpen()}},{key:"onMenuClose",value:function(){this.onInputChange("",{action:"menu-close"}),this.props.onMenuClose()}},{key:"onInputChange",value:function(i,o){this.props.onInputChange(i,o)}},{key:"focusInput",value:function(){!this.inputRef||this.inputRef.focus()}},{key:"blurInput",value:function(){!this.inputRef||this.inputRef.blur()}},{key:"openMenu",value:function(i){var o=this,a=this.state,l=a.selectValue,s=a.isFocused,u=this.buildFocusableOptions(),c=i==="first"?0:u.length-1;if(!this.props.isMulti){var f=u.indexOf(l[0]);f>-1&&(c=f)}this.scrollToFocusedOptionOnUpdate=!(s&&this.menuListRef),this.setState({inputIsHiddenAfterUpdate:!1,focusedValue:null,focusedOption:u[c]},function(){return o.onMenuOpen()})}},{key:"focusValue",value:function(i){var o=this.state,a=o.selectValue,l=o.focusedValue;if(!!this.props.isMulti){this.setState({focusedOption:null});var s=a.indexOf(l);l||(s=-1);var u=a.length-1,c=-1;if(!!a.length){switch(i){case"previous":s===0?c=0:s===-1?c=u:c=s-1;break;case"next":s>-1&&s0&&arguments[0]!==void 0?arguments[0]:"first",o=this.props.pageSize,a=this.state.focusedOption,l=this.getFocusableOptions();if(!!l.length){var s=0,u=l.indexOf(a);a||(u=-1),i==="up"?s=u>0?u-1:l.length-1:i==="down"?s=(u+1)%l.length:i==="pageup"?(s=u-o,s<0&&(s=0)):i==="pagedown"?(s=u+o,s>l.length-1&&(s=l.length-1)):i==="last"&&(s=l.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:l[s],focusedValue:null})}}},{key:"getTheme",value:function(){return this.props.theme?typeof this.props.theme=="function"?this.props.theme(Dl):Ke(Ke({},Dl),this.props.theme):Dl}},{key:"getCommonProps",value:function(){var i=this.clearValue,o=this.cx,a=this.getStyles,l=this.getValue,s=this.selectOption,u=this.setValue,c=this.props,f=c.isMulti,p=c.isRtl,g=c.options,v=this.hasValue();return{clearValue:i,cx:o,getStyles:a,getValue:l,hasValue:v,isMulti:f,isRtl:p,options:g,selectOption:s,selectProps:c,setValue:u,theme:this.getTheme()}}},{key:"hasValue",value:function(){var i=this.state.selectValue;return i.length>0}},{key:"hasOptions",value:function(){return!!this.getFocusableOptions().length}},{key:"isClearable",value:function(){var i=this.props,o=i.isClearable,a=i.isMulti;return o===void 0?a:o}},{key:"isOptionDisabled",value:function(i,o){return $m(this.props,i,o)}},{key:"isOptionSelected",value:function(i,o){return Bm(this.props,i,o)}},{key:"filterOption",value:function(i,o){return jm(this.props,i,o)}},{key:"formatOptionLabel",value:function(i,o){if(typeof this.props.formatOptionLabel=="function"){var a=this.props.inputValue,l=this.state.selectValue;return this.props.formatOptionLabel(i,{context:o,inputValue:a,selectValue:l})}else return this.getOptionLabel(i)}},{key:"formatGroupLabel",value:function(i){return this.props.formatGroupLabel(i)}},{key:"startListeningComposition",value:function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))}},{key:"stopListeningComposition",value:function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))}},{key:"startListeningToTouch",value:function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))}},{key:"stopListeningToTouch",value:function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))}},{key:"renderInput",value:function(){var i=this.props,o=i.isDisabled,a=i.isSearchable,l=i.inputId,s=i.inputValue,u=i.tabIndex,c=i.form,f=this.getComponents(),p=f.Input,g=this.state.inputIsHidden,v=this.commonProps,x=l||this.getElementId("input"),S={"aria-autocomplete":"list","aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"]};return a?y(p,{...v,autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",id:x,innerRef:this.getInputRef,isDisabled:o,isHidden:g,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,spellCheck:"false",tabIndex:u,form:c,type:"text",value:s,...S}):y(Qx,{id:x,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:pa,onFocus:this.onInputFocus,readOnly:!0,disabled:o,tabIndex:u,form:c,value:"",...S})}},{key:"renderPlaceholderOrValue",value:function(){var i=this,o=this.getComponents(),a=o.MultiValue,l=o.MultiValueContainer,s=o.MultiValueLabel,u=o.MultiValueRemove,c=o.SingleValue,f=o.Placeholder,p=this.commonProps,g=this.props,v=g.controlShouldRenderValue,x=g.isDisabled,S=g.isMulti,h=g.inputValue,d=g.placeholder,m=this.state,k=m.selectValue,E=m.focusedValue,w=m.isFocused;if(!this.hasValue()||!v)return h?null:b.exports.createElement(f,{...p,key:"placeholder",isDisabled:x,isFocused:w},d);if(S){var O=k.map(function(M,L){var j=M===E;return b.exports.createElement(a,{...p,components:{Container:l,Label:s,Remove:u},isFocused:j,isDisabled:x,key:"".concat(i.getOptionValue(M)).concat(L),index:L,removeProps:{onClick:function(){return i.removeValue(M)},onTouchEnd:function(){return i.removeValue(M)},onMouseDown:function(re){re.preventDefault(),re.stopPropagation()}},data:M},i.formatOptionLabel(M,"value"))});return O}if(h)return null;var F=k[0];return y(c,{...p,data:F,isDisabled:x,children:this.formatOptionLabel(F,"value")})}},{key:"renderClearIndicator",value:function(){var i=this.getComponents(),o=i.ClearIndicator,a=this.commonProps,l=this.props,s=l.isDisabled,u=l.isLoading,c=this.state.isFocused;if(!this.isClearable()||!o||s||!this.hasValue()||u)return null;var f={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return y(o,{...a,innerProps:f,isFocused:c})}},{key:"renderLoadingIndicator",value:function(){var i=this.getComponents(),o=i.LoadingIndicator,a=this.commonProps,l=this.props,s=l.isDisabled,u=l.isLoading,c=this.state.isFocused;if(!o||!u)return null;var f={"aria-hidden":"true"};return y(o,{...a,innerProps:f,isDisabled:s,isFocused:c})}},{key:"renderIndicatorSeparator",value:function(){var i=this.getComponents(),o=i.DropdownIndicator,a=i.IndicatorSeparator;if(!o||!a)return null;var l=this.commonProps,s=this.props.isDisabled,u=this.state.isFocused;return y(a,{...l,isDisabled:s,isFocused:u})}},{key:"renderDropdownIndicator",value:function(){var i=this.getComponents(),o=i.DropdownIndicator;if(!o)return null;var a=this.commonProps,l=this.props.isDisabled,s=this.state.isFocused,u={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return y(o,{...a,innerProps:u,isDisabled:l,isFocused:s})}},{key:"renderMenu",value:function(){var i=this,o=this.getComponents(),a=o.Group,l=o.GroupHeading,s=o.Menu,u=o.MenuList,c=o.MenuPortal,f=o.LoadingMessage,p=o.NoOptionsMessage,g=o.Option,v=this.commonProps,x=this.state.focusedOption,S=this.props,h=S.captureMenuScroll,d=S.inputValue,m=S.isLoading,k=S.loadingMessage,E=S.minMenuHeight,w=S.maxMenuHeight,O=S.menuIsOpen,F=S.menuPlacement,M=S.menuPosition,L=S.menuPortalTarget,j=S.menuShouldBlockScroll,H=S.menuShouldScrollIntoView,re=S.noOptionsMessage,ue=S.onMenuScrollToTop,te=S.onMenuScrollToBottom;if(!O)return null;var ee=function(T,N){var W=T.type,C=T.data,q=T.isDisabled,I=T.isSelected,pe=T.label,ce=T.value,fe=x===C,Z=q?void 0:function(){return i.onOptionHover(C)},Te=q?void 0:function(){return i.selectOption(C)},Le="".concat(i.getElementId("option"),"-").concat(N),ae={id:Le,onClick:Te,onMouseMove:Z,onMouseOver:Z,tabIndex:-1};return b.exports.createElement(g,{...v,innerProps:ae,data:C,isDisabled:q,isSelected:I,key:Le,label:pe,type:W,value:ce,isFocused:fe,innerRef:fe?i.getFocusedOptionRef:void 0},i.formatOptionLabel(T.data,"menu"))},X;if(this.hasOptions())X=this.getCategorizedOptions().map(function(P){if(P.type==="group"){var T=P.data,N=P.options,W=P.index,C="".concat(i.getElementId("group"),"-").concat(W),q="".concat(C,"-heading");return b.exports.createElement(a,{...v,key:C,data:T,options:N,Heading:l,headingProps:{id:q,data:P.data},label:i.formatGroupLabel(P.data)},P.options.map(function(I){return ee(I,"".concat(W,"-").concat(I.index))}))}else if(P.type==="option")return ee(P,"".concat(P.index))});else if(m){var V=k({inputValue:d});if(V===null)return null;X=y(f,{...v,children:V})}else{var z=re({inputValue:d});if(z===null)return null;X=y(p,{...v,children:z})}var B={minMenuHeight:E,maxMenuHeight:w,menuPlacement:F,menuPosition:M,menuShouldScrollIntoView:H},oe=y(bm,{...v,...B,children:function(P){var T=P.ref,N=P.placerProps,W=N.placement,C=N.maxHeight;return y(s,{...v,...B,innerRef:T,innerProps:{onMouseDown:i.onMenuMouseDown,onMouseMove:i.onMenuMouseMove},isLoading:m,placement:W,children:y(Jx,{captureEnabled:h,onTopArrive:ue,onBottomArrive:te,lockEnabled:j,children:function(q){return y(u,{...v,innerRef:function(pe){i.getMenuListRef(pe),q(pe)},isLoading:m,maxHeight:C,focusedOption:x,children:X})}})})}});return L||M==="fixed"?y(c,{...v,appendTo:L,controlElement:this.controlRef,menuPlacement:F,menuPosition:M,children:oe}):oe}},{key:"renderFormField",value:function(){var i=this,o=this.props,a=o.delimiter,l=o.isDisabled,s=o.isMulti,u=o.name,c=this.state.selectValue;if(!(!u||l))if(s)if(a){var f=c.map(function(v){return i.getOptionValue(v)}).join(a);return y("input",{name:u,type:"hidden",value:f})}else{var p=c.length>0?c.map(function(v,x){return y("input",{name:u,type:"hidden",value:i.getOptionValue(v)},"i-".concat(x))}):y("input",{name:u,type:"hidden"});return y("div",{children:p})}else{var g=c[0]?this.getOptionValue(c[0]):"";return y("input",{name:u,type:"hidden",value:g})}}},{key:"renderLiveRegion",value:function(){var i=this.commonProps,o=this.state,a=o.ariaSelection,l=o.focusedOption,s=o.focusedValue,u=o.isFocused,c=o.selectValue,f=this.getFocusableOptions();return y(jx,{...i,ariaSelection:a,focusedOption:l,focusedValue:s,isFocused:u,selectValue:c,focusableOptions:f})}},{key:"render",value:function(){var i=this.getComponents(),o=i.Control,a=i.IndicatorsContainer,l=i.SelectContainer,s=i.ValueContainer,u=this.props,c=u.className,f=u.id,p=u.isDisabled,g=u.menuIsOpen,v=this.state.isFocused,x=this.commonProps=this.getCommonProps();return R(l,{...x,className:c,innerProps:{id:f,onKeyDown:this.onKeyDown},isDisabled:p,isFocused:v,children:[this.renderLiveRegion(),R(o,{...x,innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:p,isFocused:v,menuIsOpen:g,children:[R(s,{...x,isDisabled:p,children:[this.renderPlaceholderOrValue(),this.renderInput()]}),R(a,{...x,isDisabled:p,children:[this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator()]})]}),this.renderMenu(),this.renderFormField()]})}}],[{key:"getDerivedStateFromProps",value:function(i,o){var a=o.prevProps,l=o.clearFocusValueOnUpdate,s=o.inputIsHiddenAfterUpdate,u=i.options,c=i.value,f=i.menuIsOpen,p=i.inputValue,g={};if(a&&(c!==a.value||u!==a.options||f!==a.menuIsOpen||p!==a.inputValue)){var v=Xf(c),x=f?fw(i,v):[],S=l?dw(o,v):null,h=pw(o,x);g={selectValue:v,focusedOption:h,focusedValue:S,clearFocusValueOnUpdate:!1}}var d=s!=null&&i!==a?{inputIsHidden:s,inputIsHiddenAfterUpdate:void 0}:{};return Ke(Ke(Ke({},g),d),{},{prevProps:i})}}]),n}(b.exports.Component);Um.defaultProps=cw;var mw={defaultInputValue:"",defaultMenuIsOpen:!1,defaultValue:null},vw=function(t){var n,r;return r=n=function(i){Xa(a,i);var o=Za(a);function a(){var l;Ya(this,a);for(var s=arguments.length,u=new Array(s),c=0;c1?c-1:0),p=1;p span { + width: 100%; + + display: flex; + justify-content: space-between; + font-weight: 200; + } +`,fo={control:e=>({...e,marginTop:"10px",background:"rgba(23, 23, 23, 0.8)",fontSize:"14px",color:"#fff",border:"none",outline:"none",boxShadow:"none"}),placeholder:e=>({...e,fontSize:"14px",color:"#fff"}),input:e=>({...e,fontSize:"14px",color:"#fff"}),singleValue:e=>({...e,fontSize:"14px",color:"#fff",border:"none",outline:"none"}),indicatorContainer:e=>({...e,borderColor:"#fff",color:"#fff"}),dropdownIndicator:e=>({...e,borderColor:"#fff",color:"#fff"}),menuPortal:e=>({...e,color:"#fff",zIndex:9999}),menu:e=>({...e,background:"rgba(23, 23, 23, 0.8)",position:"absolute",marginBottom:"10px",borderRadius:"4px"}),menuList:e=>({...e,background:"rgba(23, 23, 23, 0.8)",borderRadius:"4px","&::-webkit-scrollbar":{width:"10px"},"&::-webkit-scrollbar-track":{background:"none"},"&::-webkit-scrollbar-thumb":{borderRadius:"4px",background:"#fff"}}),option:(e,{isFocused:t})=>({...e,borderRadius:"4px",width:"97%",marginLeft:"auto",marginRight:"auto",background:t?"rgba(255, 255, 255, 0.1)":"none"})},xw=({title:e,items:t,defaultValue:n,clientValue:r,onChange:i})=>{const o=b.exports.useRef(null),a=(u,{action:c})=>{c==="select-option"&&i(u.value)},l=()=>{setTimeout(()=>{const u=document.getElementsByClassName("Select"+e+"__option--is-selected")[0];u&&u.scrollIntoView({behavior:"auto",block:"start",inline:"nearest"})},100)},s=b.exports.useContext(Xn);return fo.control.background=`rgba(${s.secondaryBackground||"0, 0, 0"}, 0.8)`,fo.menu.background=`rgba(${s.secondaryBackground||"0, 0, 0"}, 0.8)`,fo.menuList.background=`rgba(${s.secondaryBackground||"0, 0, 0"}, 0.8)`,R(yw,{children:[R("span",{children:[y("small",{children:e}),y("small",{children:r})]}),y(Wm,{ref:o,styles:fo,options:t.map(u=>({value:u,label:u})),value:{value:n,label:n},onChange:a,onMenuOpen:l,className:"Select"+e,classNamePrefix:"Select"+e,menuPortalTarget:document.body})]})},ww=({settings:e,storedData:t,data:n,handleModelChange:r})=>{const{locales:i}=un();return i?y(Jn,{title:i.ped.title,children:y(J,{children:y(xw,{title:i.ped.model,items:e.model.items,defaultValue:n,clientValue:t,onChange:o=>r(o)})})}):null},Sw=Ve.div` + min-width: 0; + + display: flex; + flex-direction: column; + flex-grow: 1; + + margin-top: ${({title:e})=>e?"5px":"0"}; + + > span { + width: 100%; + + display: flex; + justify-content: space-between; + font-weight: 200; + } + + > div { + min-width: 0; + height: 30px; + + display: flex; + align-items: center; + + margin-top: 10px; + + button { + height: 100%; + min-width: 30px; + + display: flex; + align-items: center; + justify-content: center; + + color: rgba(${e=>e.theme.fontColor||"255, 255, 255"}, 1); + + outline: 0; + border: none; + border-radius: 2px; + + background: rgba(23, 23, 23, 0.5); + + &:hover { + color: rgba(${e=>e.theme.fontColorHover||"255, 255, 255"}, 1); + background: rgba(${e=>e.theme.primaryBackground||"0, 0, 0"}, 0.9); + ${e=>e.theme.smoothBackgroundTransition?"transition: background 0.2s;":""} + ${e=>e.theme.scaleOnHover?"transform: scale(1.1);":""} + } + } + + input { + min-width: 0; + height: 100%; + + flex-grow: 1; + flex-shrink: 1; + + text-align: center; + font-size: 14px; + color: rgba(${e=>e.theme.fontColor||"255, 255, 255"}, 1); + + border: none; + border-radius: 2px; + margin: 0 2px; + + background: rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, 0.8); + + &::-webkit-outer-spin-button, + &::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } + } + } +`,G=({title:e,min:t=0,max:n=255,blacklisted:r=[],defaultValue:i,clientValue:o,onChange:a})=>{const l=b.exports.useRef(null),s=b.exports.useCallback(()=>{l.current&&l.current.focus()},[l]),u=function(v,x){for(var S=0;Sn&&(v=t),v},f=function(v,x,S){if(S===0){if(!u(v,x))return c(v);S=v>i?1:-1}do v=c(v+S);while(u(v,x));return v},p=b.exports.useCallback((v,x)=>f(v,r,x),[t,n,r]),g=b.exports.useCallback((v,x)=>{let S;if(!v&&v!==0||Number.isNaN(v))return;typeof v=="string"?S=parseInt(v):S=v;const h=p(S,x);a(h)},[p,a]);return R(Sw,{onClick:s,children:[R("span",{children:[y("small",{children:e}),R("small",{children:[o," / ",n]})]}),R("div",{children:[y("button",{type:"button",onClick:()=>g(i,-1),children:y(fy,{strokeWidth:5})}),y("input",{type:"number",ref:l,value:i,onChange:v=>g(v.target.value,0)}),y("button",{type:"button",onClick:()=>g(i,1),children:y(dy,{strokeWidth:5})})]})]})},kw=Ve.div` + width: 100%; + + > span { + width: 100%; + + display: flex; + justify-content: space-between; + font-weight: 200; + } + + > div { + display: flex; + align-items: center; + + position: relative; + + margin-top: 10px; + + > small { + font-weight: 200; + font-size: 8px; + } + } + + input[type='range'] { + -webkit-appearance: none; + appearance: none; + width: 100%; + height: 15px; + background: rgba(${e=>e.theme.secondayBackground||"0, 0, 0"}, 0.8); + outline: none; + opacity: 1; + border-radius: 2px; + margin: 0 10px; + } + + input[type='range']::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 17px; + height: 17px; + background: #eeeeee; + cursor: pointer; + border-radius: 2px; + } +`,le=({min:e,max:t,factor:n=1,title:r,defaultValue:i=1,clientValue:o,onChange:a})=>{const l=b.exports.useRef(null),s=b.exports.useCallback(()=>{l.current&&l.current.focus()},[l]),u=b.exports.useCallback(c=>{const f=parseFloat(c.target.value);a(f)},[a]);return R(kw,{onClick:s,children:[R("span",{children:[R("small",{children:[r,": ",i]}),y("small",{children:o})]}),R("div",{children:[y("small",{children:e}),y("input",{type:"range",ref:l,value:i,min:e,max:t,step:n,onChange:u}),y("small",{children:t})]})]})},bw=({settings:e,storedData:t,data:n,handleHeadBlendChange:r})=>{const{locales:i}=un();return i?R(Jn,{title:i.headBlend.title,children:[R(J,{title:i.headBlend.shape.title,children:[y(G,{title:i.headBlend.shape.firstOption,min:e.shapeFirst.min,max:e.shapeFirst.max,defaultValue:n.shapeFirst,clientValue:t.shapeFirst,onChange:o=>r("shapeFirst",o)}),y(G,{title:i.headBlend.shape.secondOption,min:e.shapeSecond.min,max:e.shapeSecond.max,defaultValue:n.shapeSecond,clientValue:t.shapeSecond,onChange:o=>r("shapeSecond",o)}),y(le,{title:i.headBlend.shape.mix,min:e.shapeMix.min,max:e.shapeMix.max,factor:e.shapeMix.factor,defaultValue:n.shapeMix,clientValue:t.shapeMix,onChange:o=>r("shapeMix",o)})]}),R(J,{title:i.headBlend.skin.title,children:[y(G,{title:i.headBlend.skin.firstOption,min:e.skinFirst.min,max:e.skinFirst.max,defaultValue:n.skinFirst,clientValue:t.skinFirst,onChange:o=>r("skinFirst",o)}),y(G,{title:i.headBlend.skin.secondOption,min:e.skinSecond.min,max:e.skinSecond.max,defaultValue:n.skinSecond,clientValue:t.skinSecond,onChange:o=>r("skinSecond",o)}),y(le,{title:i.headBlend.skin.mix,min:e.skinMix.min,max:e.skinMix.max,factor:e.skinMix.factor,defaultValue:n.skinMix,clientValue:t.skinMix,onChange:o=>r("skinMix",o)})]}),R(J,{title:i.headBlend.race.title,children:[y(G,{title:i.headBlend.race.shape,min:e.shapeThird.min,max:e.shapeThird.max,defaultValue:n.shapeThird,clientValue:t.shapeThird,onChange:o=>r("shapeThird",o)}),y(G,{title:i.headBlend.race.skin,min:e.skinThird.min,max:e.skinThird.max,defaultValue:n.skinThird,clientValue:t.skinThird,onChange:o=>r("skinThird",o)}),y(le,{title:i.headBlend.race.mix,min:e.thirdMix.min,max:e.thirdMix.max,factor:e.thirdMix.factor,defaultValue:n.thirdMix,clientValue:t.thirdMix,onChange:o=>r("thirdMix",o)})]})]}):null},Cw=({settings:e,storedData:t,data:n,handleFaceFeatureChange:r})=>{const{locales:i}=un();return i?R(Jn,{title:i.faceFeatures.title,children:[R(J,{title:i.faceFeatures.nose.title,children:[y(le,{title:i.faceFeatures.nose.width,min:e.noseWidth.min,max:e.noseWidth.max,factor:e.noseWidth.factor,defaultValue:n.noseWidth,clientValue:t.noseWidth,onChange:o=>r("noseWidth",o)}),y(le,{title:i.faceFeatures.nose.height,min:e.nosePeakHigh.min,max:e.nosePeakHigh.max,factor:e.nosePeakHigh.factor,defaultValue:n.nosePeakHigh,clientValue:t.nosePeakHigh,onChange:o=>r("nosePeakHigh",o)}),y(le,{title:i.faceFeatures.nose.size,min:e.nosePeakSize.min,max:e.nosePeakSize.max,factor:e.nosePeakSize.factor,defaultValue:n.nosePeakSize,clientValue:t.nosePeakSize,onChange:o=>r("nosePeakSize",o)}),y(le,{title:i.faceFeatures.nose.boneHeight,min:e.noseBoneHigh.min,max:e.noseBoneHigh.max,factor:e.noseBoneHigh.factor,defaultValue:n.noseBoneHigh,clientValue:t.noseBoneHigh,onChange:o=>r("noseBoneHigh",o)}),y(le,{title:i.faceFeatures.nose.peakHeight,min:e.nosePeakLowering.min,max:e.nosePeakLowering.max,factor:e.nosePeakLowering.factor,defaultValue:n.nosePeakLowering,clientValue:t.nosePeakLowering,onChange:o=>r("nosePeakLowering",o)}),y(le,{title:i.faceFeatures.nose.boneTwist,min:e.noseBoneTwist.min,max:e.noseBoneTwist.max,factor:e.noseBoneTwist.factor,defaultValue:n.noseBoneTwist,clientValue:t.noseBoneTwist,onChange:o=>r("noseBoneTwist",o)})]}),R(J,{title:i.faceFeatures.eyebrows.title,children:[y(le,{title:i.faceFeatures.eyebrows.height,min:e.eyeBrownHigh.min,max:e.eyeBrownHigh.max,factor:e.eyeBrownHigh.factor,defaultValue:n.eyeBrownHigh,clientValue:t.eyeBrownHigh,onChange:o=>r("eyeBrownHigh",o)}),y(le,{title:i.faceFeatures.eyebrows.depth,min:e.eyeBrownForward.min,max:e.eyeBrownForward.max,factor:e.eyeBrownForward.factor,defaultValue:n.eyeBrownForward,clientValue:t.eyeBrownForward,onChange:o=>r("eyeBrownForward",o)})]}),R(J,{title:i.faceFeatures.cheeks.title,children:[y(le,{title:i.faceFeatures.cheeks.boneHeight,min:e.cheeksBoneHigh.min,max:e.cheeksBoneHigh.max,factor:e.cheeksBoneHigh.factor,defaultValue:n.cheeksBoneHigh,clientValue:t.cheeksBoneHigh,onChange:o=>r("cheeksBoneHigh",o)}),y(le,{title:i.faceFeatures.cheeks.boneWidth,min:e.cheeksBoneWidth.min,max:e.cheeksBoneWidth.max,factor:e.cheeksBoneWidth.factor,defaultValue:n.cheeksBoneWidth,clientValue:t.cheeksBoneWidth,onChange:o=>r("cheeksBoneWidth",o)}),y(le,{title:i.faceFeatures.cheeks.width,min:e.cheeksWidth.min,max:e.cheeksWidth.max,factor:e.cheeksWidth.factor,defaultValue:n.cheeksWidth,clientValue:t.cheeksWidth,onChange:o=>r("cheeksWidth",o)})]}),R(J,{title:i.faceFeatures.eyesAndMouth.title,children:[y(le,{title:i.faceFeatures.eyesAndMouth.eyesOpening,min:e.eyesOpening.min,max:e.eyesOpening.max,factor:e.eyesOpening.factor,defaultValue:n.eyesOpening,clientValue:t.eyesOpening,onChange:o=>r("eyesOpening",o)}),y(le,{title:i.faceFeatures.eyesAndMouth.lipsThickness,min:e.lipsThickness.min,max:e.lipsThickness.max,factor:e.lipsThickness.factor,defaultValue:n.lipsThickness,clientValue:t.lipsThickness,onChange:o=>r("lipsThickness",o)})]}),R(J,{title:i.faceFeatures.jaw.title,children:[y(le,{title:i.faceFeatures.jaw.width,min:e.jawBoneWidth.min,max:e.jawBoneWidth.max,factor:e.jawBoneWidth.factor,defaultValue:n.jawBoneWidth,clientValue:t.jawBoneWidth,onChange:o=>r("jawBoneWidth",o)}),y(le,{title:i.faceFeatures.jaw.size,min:e.jawBoneBackSize.min,max:e.jawBoneBackSize.max,factor:e.jawBoneBackSize.factor,defaultValue:n.jawBoneBackSize,clientValue:t.jawBoneBackSize,onChange:o=>r("jawBoneBackSize",o)})]}),R(J,{title:i.faceFeatures.chin.title,children:[y(le,{title:i.faceFeatures.chin.lowering,min:e.chinBoneLowering.min,max:e.chinBoneLowering.max,factor:e.chinBoneLowering.factor,defaultValue:n.chinBoneLowering,clientValue:t.chinBoneLowering,onChange:o=>r("chinBoneLowering",o)}),y(le,{title:i.faceFeatures.chin.length,min:e.chinBoneLenght.min,max:e.chinBoneLenght.max,factor:e.chinBoneLenght.factor,defaultValue:n.chinBoneLenght,clientValue:t.chinBoneLenght,onChange:o=>r("chinBoneLenght",o)}),y(le,{title:i.faceFeatures.chin.size,min:e.chinBoneSize.min,max:e.chinBoneSize.max,factor:e.chinBoneSize.factor,defaultValue:n.chinBoneSize,clientValue:t.chinBoneSize,onChange:o=>r("chinBoneSize",o)}),y(le,{title:i.faceFeatures.chin.hole,min:e.chinHole.min,max:e.chinHole.max,factor:e.chinHole.factor,defaultValue:n.chinHole,clientValue:t.chinHole,onChange:o=>r("chinHole",o)})]}),y(J,{title:i.faceFeatures.neck.title,children:y(le,{title:i.faceFeatures.neck.thickness,min:e.neckThickness.min,max:e.neckThickness.max,factor:e.neckThickness.factor,defaultValue:n.neckThickness,clientValue:t.neckThickness,onChange:o=>r("neckThickness",o)})})]}):null},Ew=Ve.div` + width: 100%; + + > span { + width: 100%; + + display: flex; + justify-content: space-between; + font-weight: 200; + } + + > div { + width: 100%; + + display: flex; + flex-wrap: wrap; + align-items: flex-start; + justify-content: flex-start; + + margin-top: 10px; + } +`,Ow=Ve.button` + height: 20px; + width: 20px; + + border: 2px solid rgba(0, 0, 0, 0.2); + + margin: 1px; + + &:hover { + border: 2px solid rgba(255, 255, 255, 0.5); + ${e=>e.theme.smoothBackgroundTransition?"transition: background 0.2s;":""} + ${e=>e.theme.scaleOnHover?"transform: scale(1.1);":""} + } + + ${({selected:e})=>e&&Di` + border: 2px solid rgba(255, 255, 255, 1); + `} +`,Zt=({title:e,colors:t=[],defaultValue:n,clientValue:r,onChange:i})=>{const o=b.exports.useCallback(a=>{i(a)},[i]);return R(Ew,{children:[R("span",{children:[y("small",{children:`${e}: ${n}`}),y("small",{children:r})]}),y("div",{children:t.map((a,l)=>y(Ow,{style:{backgroundColor:`rgb(${a[0]}, ${a[1]}, ${a[2]})`},selected:n===l,onClick:()=>o(l)},l))})]})},Pw=({settings:e,storedData:t,data:n,isPedFreemodeModel:r,handleHairChange:i,handleHeadOverlayChange:o,handleEyeColorChange:a,handleChangeFade:l,automaticFade:s})=>{var p,g,v,x,S,h,d,m,k,E;const{locales:u}=un();if(!u)return null;const c=b.exports.useCallback(()=>{var O;const w=(O=e==null?void 0:e.fade)==null?void 0:O.findIndex(F=>{var M;return F.name===((M=n.fade)==null?void 0:M.name)});return w>=0?w:0},[(p=n.fade)==null?void 0:p.name])(),f=b.exports.useCallback(()=>{var O;const w=(O=e==null?void 0:e.fade)==null?void 0:O.findIndex(F=>{var M;return F.name===((M=t.fade)==null?void 0:M.name)});return w>=0?w:0},[(g=t.fade)==null?void 0:g.name])();return R(Jn,{title:u.headOverlays.title,deps:[e],children:[R(J,{title:u.headOverlays.hair.title,children:[y(G,{title:u.headOverlays.hair.style,min:e.hair.style.min,max:e.hair.style.max,blacklisted:e.hair.blacklist.drawables,defaultValue:n.hair.style,clientValue:t.hair.style,onChange:w=>i("style",w)}),y(G,{title:u.headOverlays.hair.texture,min:e.hair.texture.min,max:e.hair.texture.max,blacklisted:e.hair.blacklist.textures,defaultValue:n.hair.texture,clientValue:t.hair.texture,onChange:w=>i("texture",w)}),r&&R(na,{children:[!s&&y(G,{title:u.headOverlays.hair.fade,min:0,max:((v=e==null?void 0:e.fade)==null?void 0:v.length)-1,defaultValue:c,clientValue:f,onChange:w=>l(w)}),y(Zt,{title:u.headOverlays.hair.color,colors:e.hair.color.items,defaultValue:n.hair.color,clientValue:t.hair.color,onChange:w=>i("color",w)}),y(Zt,{title:u.headOverlays.hair.highlight,colors:e.hair.highlight.items,defaultValue:n.hair.highlight,onChange:w=>i("highlight",w)})]})]}),r&&R(na,{children:[R(J,{title:u.headOverlays.eyebrows,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.eyebrows.opacity.min,max:e.headOverlays.eyebrows.opacity.max,factor:e.headOverlays.eyebrows.opacity.factor,defaultValue:n.headOverlays.eyebrows.opacity,clientValue:t.headOverlays.eyebrows.opacity,onChange:w=>o("eyebrows","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.eyebrows.style.min,max:e.headOverlays.eyebrows.style.max,defaultValue:n.headOverlays.eyebrows.style,clientValue:t.headOverlays.eyebrows.style,onChange:w=>o("eyebrows","style",w)}),y(Zt,{title:u.headOverlays.color,colors:(x=e.headOverlays.eyebrows.color)==null?void 0:x.items,defaultValue:n.headOverlays.eyebrows.color,clientValue:t.headOverlays.eyebrows.color,onChange:w=>o("eyebrows","color",w)})]}),y(J,{title:u.headOverlays.eyeColor,children:y(G,{title:u.headOverlays.style,min:e.eyeColor.min,max:e.eyeColor.max,defaultValue:n.eyeColor,clientValue:t.eyeColor,onChange:w=>a(w)})}),R(J,{title:u.headOverlays.makeUp,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.makeUp.opacity.min,max:e.headOverlays.makeUp.opacity.max,factor:e.headOverlays.makeUp.opacity.factor,defaultValue:n.headOverlays.makeUp.opacity,clientValue:t.headOverlays.makeUp.opacity,onChange:w=>o("makeUp","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.makeUp.style.min,max:e.headOverlays.makeUp.style.max,defaultValue:n.headOverlays.makeUp.style,clientValue:t.headOverlays.makeUp.style,onChange:w=>o("makeUp","style",w)}),y(Zt,{title:u.headOverlays.color,colors:(S=e.headOverlays.makeUp.color)==null?void 0:S.items,defaultValue:n.headOverlays.makeUp.color,clientValue:t.headOverlays.makeUp.color,onChange:w=>o("makeUp","color",w)}),y(Zt,{title:u.headOverlays.secondColor,colors:(h=e.headOverlays.makeUp.color)==null?void 0:h.items,defaultValue:n.headOverlays.makeUp.secondColor,clientValue:t.headOverlays.makeUp.secondColor,onChange:w=>o("makeUp","secondColor",w)})]}),R(J,{title:u.headOverlays.blush,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.blush.opacity.min,max:e.headOverlays.blush.opacity.max,factor:e.headOverlays.blush.opacity.factor,defaultValue:n.headOverlays.blush.opacity,clientValue:t.headOverlays.blush.opacity,onChange:w=>o("blush","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.blush.style.min,max:e.headOverlays.blush.style.max,defaultValue:n.headOverlays.blush.style,clientValue:t.headOverlays.blush.style,onChange:w=>o("blush","style",w)}),y(Zt,{title:u.headOverlays.color,colors:(d=e.headOverlays.blush.color)==null?void 0:d.items,defaultValue:n.headOverlays.blush.color,clientValue:t.headOverlays.blush.color,onChange:w=>o("blush","color",w)})]}),R(J,{title:u.headOverlays.lipstick,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.lipstick.opacity.min,max:e.headOverlays.lipstick.opacity.max,factor:e.headOverlays.lipstick.opacity.factor,defaultValue:n.headOverlays.lipstick.opacity,clientValue:t.headOverlays.lipstick.opacity,onChange:w=>o("lipstick","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.lipstick.style.min,max:e.headOverlays.lipstick.style.max,defaultValue:n.headOverlays.lipstick.style,clientValue:t.headOverlays.lipstick.style,onChange:w=>o("lipstick","style",w)}),y(Zt,{title:u.headOverlays.color,colors:(m=e.headOverlays.lipstick.color)==null?void 0:m.items,defaultValue:n.headOverlays.lipstick.color,clientValue:t.headOverlays.lipstick.color,onChange:w=>o("lipstick","color",w)})]}),R(J,{title:u.headOverlays.beard,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.beard.opacity.min,max:e.headOverlays.beard.opacity.max,factor:e.headOverlays.beard.opacity.factor,defaultValue:n.headOverlays.beard.opacity,clientValue:t.headOverlays.beard.opacity,onChange:w=>o("beard","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.beard.style.min,max:e.headOverlays.beard.style.max,defaultValue:n.headOverlays.beard.style,clientValue:t.headOverlays.beard.style,onChange:w=>o("beard","style",w)}),y(Zt,{title:u.headOverlays.color,colors:(k=e.headOverlays.beard.color)==null?void 0:k.items,defaultValue:n.headOverlays.beard.color,clientValue:t.headOverlays.beard.color,onChange:w=>o("beard","color",w)})]}),R(J,{title:u.headOverlays.blemishes,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.blemishes.opacity.min,max:e.headOverlays.blemishes.opacity.max,factor:e.headOverlays.blemishes.opacity.factor,defaultValue:n.headOverlays.blemishes.opacity,clientValue:t.headOverlays.blemishes.opacity,onChange:w=>o("blemishes","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.blemishes.style.min,max:e.headOverlays.blemishes.style.max,defaultValue:n.headOverlays.blemishes.style,clientValue:t.headOverlays.blemishes.style,onChange:w=>o("blemishes","style",w)})]}),R(J,{title:u.headOverlays.ageing,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.ageing.opacity.min,max:e.headOverlays.ageing.opacity.max,factor:e.headOverlays.ageing.opacity.factor,defaultValue:n.headOverlays.ageing.opacity,clientValue:t.headOverlays.ageing.opacity,onChange:w=>o("ageing","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.ageing.style.min,max:e.headOverlays.ageing.style.max,defaultValue:n.headOverlays.ageing.style,clientValue:t.headOverlays.ageing.style,onChange:w=>o("ageing","style",w)})]}),R(J,{title:u.headOverlays.complexion,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.complexion.opacity.min,max:e.headOverlays.complexion.opacity.max,factor:e.headOverlays.complexion.opacity.factor,defaultValue:n.headOverlays.complexion.opacity,clientValue:t.headOverlays.complexion.opacity,onChange:w=>o("complexion","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.complexion.style.min,max:e.headOverlays.complexion.style.max,defaultValue:n.headOverlays.complexion.style,clientValue:t.headOverlays.complexion.style,onChange:w=>o("complexion","style",w)})]}),R(J,{title:u.headOverlays.sunDamage,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.sunDamage.opacity.min,max:e.headOverlays.sunDamage.opacity.max,factor:e.headOverlays.sunDamage.opacity.factor,defaultValue:n.headOverlays.sunDamage.opacity,clientValue:t.headOverlays.sunDamage.opacity,onChange:w=>o("sunDamage","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.sunDamage.style.min,max:e.headOverlays.sunDamage.style.max,defaultValue:n.headOverlays.sunDamage.style,clientValue:t.headOverlays.sunDamage.style,onChange:w=>o("sunDamage","style",w)})]}),R(J,{title:u.headOverlays.moleAndFreckles,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.moleAndFreckles.opacity.min,max:e.headOverlays.moleAndFreckles.opacity.max,factor:e.headOverlays.moleAndFreckles.opacity.factor,defaultValue:n.headOverlays.moleAndFreckles.opacity,clientValue:t.headOverlays.moleAndFreckles.opacity,onChange:w=>o("moleAndFreckles","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.moleAndFreckles.style.min,max:e.headOverlays.moleAndFreckles.style.max,defaultValue:n.headOverlays.moleAndFreckles.style,clientValue:t.headOverlays.moleAndFreckles.style,onChange:w=>o("moleAndFreckles","style",w)})]}),R(J,{title:u.headOverlays.chestHair,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.chestHair.opacity.min,max:e.headOverlays.chestHair.opacity.max,factor:e.headOverlays.chestHair.opacity.factor,defaultValue:n.headOverlays.chestHair.opacity,clientValue:t.headOverlays.chestHair.opacity,onChange:w=>o("chestHair","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.chestHair.style.min,max:e.headOverlays.chestHair.style.max,defaultValue:n.headOverlays.chestHair.style,clientValue:t.headOverlays.chestHair.style,onChange:w=>o("chestHair","style",w)}),y(Zt,{title:u.headOverlays.color,colors:(E=e.headOverlays.chestHair.color)==null?void 0:E.items,defaultValue:n.headOverlays.chestHair.color,clientValue:t.headOverlays.chestHair.color,onChange:w=>o("chestHair","color",w)})]}),R(J,{title:u.headOverlays.bodyBlemishes,children:[y(le,{title:u.headOverlays.opacity,min:e.headOverlays.bodyBlemishes.opacity.min,max:e.headOverlays.bodyBlemishes.opacity.max,factor:e.headOverlays.bodyBlemishes.opacity.factor,defaultValue:n.headOverlays.bodyBlemishes.opacity,clientValue:t.headOverlays.bodyBlemishes.opacity,onChange:w=>o("bodyBlemishes","opacity",w)}),y(G,{title:u.headOverlays.style,min:e.headOverlays.bodyBlemishes.style.min,max:e.headOverlays.bodyBlemishes.style.max,defaultValue:n.headOverlays.bodyBlemishes.style,clientValue:t.headOverlays.bodyBlemishes.style,onChange:w=>o("bodyBlemishes","style",w)})]})]})]})},Aw=Ve.div` + height: 100vh; + width: 100vw; + + display: flex; + align-items: flex-start; + justify-content: flex-start; + overflow: hidden; +`,Fw=Ve.div` + height: 100%; + width: 20%; + max-width: 400px; + + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + + padding: 40px 10px; + + background: linear-gradient( + to right, + rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, 0.8), + rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, 0) + ); + + overflow-y: scroll; + + ::-webkit-scrollbar { + width: 0px; + } + + ::-webkit-scrollbar-track { + background: rgba(${e=>e.theme.primaryBackground||"0, 0, 0"}, 0.2); + } + + ::-webkit-scrollbar-thumb { + background: rgba(${e=>e.theme.primaryBackground||"0, 0, 0"}, 0.2); + border-radius: 3vh; + } + + ::-webkit-scrollbar-thumb:hover { + background: rgba(${e=>e.theme.primaryBackground||"0, 0, 0"}, 0.2); + } +`,Be=Ve.div` + width: 100%; + + display: flex; + + > div { + & + div { + margin-left: 10px; + } + } +`,Vw=({settings:e,data:t,storedData:n,handleComponentDrawableChange:r,handleComponentTextureChange:i,componentConfig:o,hasTracker:a,isPedFreemodeModel:l})=>{const{locales:s}=un(),u=e.reduce((p,{component_id:g,drawable:v,texture:x,blacklist:S})=>({...p,[g]:{drawable:v,texture:x,blacklist:S}}),{}),c=t.reduce((p,{component_id:g,drawable:v,texture:x})=>({...p,[g]:{drawable:v,texture:x}}),{}),f=n.reduce((p,{component_id:g,drawable:v,texture:x})=>({...p,[g]:{drawable:v,texture:x}}),{});return s?R(Jn,{title:s.components.title,children:[!l&&y(J,{title:s.components.head,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[0].drawable.min,max:u[0].drawable.max,blacklisted:u[0].blacklist.drawables,defaultValue:c[0].drawable,clientValue:f[0].drawable,onChange:p=>r(0,p)}),y(G,{title:s.components.texture,min:u[0].texture.min,max:u[0].texture.max,blacklisted:u[0].blacklist.textures,defaultValue:c[0].texture,clientValue:f[0].texture,onChange:p=>i(0,p)})]})}),o.masks&&y(J,{title:s.components.mask,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[1].drawable.min,max:u[1].drawable.max,blacklisted:u[1].blacklist.drawables,defaultValue:c[1].drawable,clientValue:f[1].drawable,onChange:p=>r(1,p)}),y(G,{title:s.components.texture,min:u[1].texture.min,max:u[1].texture.max,blacklisted:u[1].blacklist.textures,defaultValue:c[1].texture,clientValue:f[1].texture,onChange:p=>i(1,p)})]})}),o.scarfAndChains&&!a&&y(J,{title:s.components.scarfAndChains,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[7].drawable.min,max:u[7].drawable.max,blacklisted:u[7].blacklist.drawables,defaultValue:c[7].drawable,clientValue:f[7].drawable,onChange:p=>r(7,p)}),y(G,{title:s.components.texture,min:u[7].texture.min,max:u[7].texture.max,blacklisted:u[7].blacklist.textures,defaultValue:c[7].texture,clientValue:f[7].texture,onChange:p=>i(7,p)})]})}),o.jackets&&y(J,{title:s.components.jackets,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[11].drawable.min,max:u[11].drawable.max,blacklisted:u[11].blacklist.drawables,defaultValue:c[11].drawable,clientValue:f[11].drawable,onChange:p=>r(11,p)}),y(G,{title:s.components.texture,min:u[11].texture.min,max:u[11].texture.max,blacklisted:u[11].blacklist.textures,defaultValue:c[11].texture,clientValue:f[11].texture,onChange:p=>i(11,p)})]})}),o.shirts&&y(J,{title:s.components.shirt,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[8].drawable.min,max:u[8].drawable.max,blacklisted:u[8].blacklist.drawables,defaultValue:c[8].drawable,clientValue:f[8].drawable,onChange:p=>r(8,p)}),y(G,{title:s.components.texture,min:u[8].texture.min,max:u[8].texture.max,blacklisted:u[8].blacklist.textures,defaultValue:c[8].texture,clientValue:f[8].texture,onChange:p=>i(8,p)})]})}),o.bodyArmor&&y(J,{title:s.components.bodyArmor,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[9].drawable.min,max:u[9].drawable.max,blacklisted:u[9].blacklist.drawables,defaultValue:c[9].drawable,clientValue:f[9].drawable,onChange:p=>r(9,p)}),y(G,{title:s.components.texture,min:u[9].texture.min,max:u[9].texture.max,blacklisted:u[9].blacklist.textures,defaultValue:c[9].texture,clientValue:f[9].texture,onChange:p=>i(9,p)})]})}),o.bags&&y(J,{title:s.components.bags,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[5].drawable.min,max:u[5].drawable.max,blacklisted:u[5].blacklist.drawables,defaultValue:c[5].drawable,clientValue:f[5].drawable,onChange:p=>r(5,p)}),y(G,{title:s.components.texture,min:u[5].texture.min,max:u[5].texture.max,blacklisted:u[5].blacklist.textures,defaultValue:c[5].texture,clientValue:f[5].texture,onChange:p=>i(5,p)})]})}),o.upperBody&&y(J,{title:s.components.upperBody,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[3].drawable.min,max:u[3].drawable.max,blacklisted:u[3].blacklist.drawables,defaultValue:c[3].drawable,clientValue:f[3].drawable,onChange:p=>r(3,p)}),y(G,{title:s.components.texture,min:u[3].texture.min,max:u[3].texture.max,blacklisted:u[3].blacklist.textures,defaultValue:c[3].texture,clientValue:f[3].texture,onChange:p=>i(3,p)})]})}),o.lowerBody&&y(J,{title:s.components.lowerBody,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[4].drawable.min,max:u[4].drawable.max,blacklisted:u[4].blacklist.drawables,defaultValue:c[4].drawable,clientValue:f[4].drawable,onChange:p=>r(4,p)}),y(G,{title:s.components.texture,min:u[4].texture.min,max:u[4].texture.max,blacklisted:u[4].blacklist.textures,defaultValue:c[4].texture,clientValue:f[4].texture,onChange:p=>i(4,p)})]})}),o.shoes&&y(J,{title:s.components.shoes,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[6].drawable.min,max:u[6].drawable.max,blacklisted:u[6].blacklist.drawables,defaultValue:c[6].drawable,clientValue:f[6].drawable,onChange:p=>r(6,p)}),y(G,{title:s.components.texture,min:u[6].texture.min,max:u[6].texture.max,blacklisted:u[6].blacklist.textures,defaultValue:c[6].texture,clientValue:f[6].texture,onChange:p=>i(6,p)})]})}),o.decals&&y(J,{title:s.components.decals,children:R(Be,{children:[y(G,{title:s.components.drawable,min:u[10].drawable.min,max:u[10].drawable.max,blacklisted:u[10].blacklist.drawables,defaultValue:c[10].drawable,clientValue:f[10].drawable,onChange:p=>r(10,p)}),y(G,{title:s.components.texture,min:u[10].texture.min,max:u[10].texture.max,blacklisted:u[10].blacklist.textures,defaultValue:c[10].texture,clientValue:f[10].texture,onChange:p=>i(10,p)})]})})]}):null},_w=({settings:e,data:t,storedData:n,handlePropDrawableChange:r,handlePropTextureChange:i,propConfig:o})=>{const{locales:a}=un(),l=e.reduce((c,{prop_id:f,drawable:p,texture:g,blacklist:v})=>({...c,[f]:{drawable:p,texture:g,blacklist:v}}),{}),s=t.reduce((c,{prop_id:f,drawable:p,texture:g})=>({...c,[f]:{drawable:p,texture:g}}),{}),u=n.reduce((c,{prop_id:f,drawable:p,texture:g})=>({...c,[f]:{drawable:p,texture:g}}),{});return a?R(Jn,{title:a.props.title,children:[o.hats&&y(J,{title:a.props.hats,children:R(Be,{children:[y(G,{title:a.props.drawable,min:l[0].drawable.min,max:l[0].drawable.max,defaultValue:s[0].drawable,clientValue:u[0].drawable,blacklisted:l[0].blacklist.drawables,onChange:c=>r(0,c)}),y(G,{title:a.props.texture,min:l[0].texture.min,max:l[0].texture.max,defaultValue:s[0].texture,clientValue:u[0].texture,blacklisted:l[0].blacklist.textures,onChange:c=>i(0,c)})]})}),o.glasses&&y(J,{title:a.props.glasses,children:R(Be,{children:[y(G,{title:a.props.drawable,min:l[1].drawable.min,max:l[1].drawable.max,defaultValue:s[1].drawable,clientValue:u[1].drawable,blacklisted:l[1].blacklist.drawables,onChange:c=>r(1,c)}),y(G,{title:a.props.texture,min:l[1].texture.min,max:l[1].texture.max,defaultValue:s[1].texture,clientValue:u[1].texture,blacklisted:l[1].blacklist.textures,onChange:c=>i(1,c)})]})}),o.ear&&y(J,{title:a.props.ear,children:R(Be,{children:[y(G,{title:a.props.drawable,min:l[2].drawable.min,max:l[2].drawable.max,defaultValue:s[2].drawable,clientValue:u[2].drawable,blacklisted:l[2].blacklist.drawables,onChange:c=>r(2,c)}),y(G,{title:a.props.texture,min:l[2].texture.min,max:l[2].texture.max,defaultValue:s[2].texture,clientValue:u[2].texture,blacklisted:l[2].blacklist.textures,onChange:c=>i(2,c)})]})}),o.watches&&y(J,{title:a.props.watches,children:R(Be,{children:[y(G,{title:a.props.drawable,min:l[6].drawable.min,max:l[6].drawable.max,defaultValue:s[6].drawable,clientValue:u[6].drawable,blacklisted:l[6].blacklist.drawables,onChange:c=>r(6,c)}),y(G,{title:a.props.texture,min:l[6].texture.min,max:l[6].texture.max,defaultValue:s[6].texture,clientValue:u[6].texture,blacklisted:l[6].blacklist.textures,onChange:c=>i(6,c)})]})}),o.bracelets&&y(J,{title:a.props.bracelets,children:R(Be,{children:[y(G,{title:a.props.drawable,min:l[7].drawable.min,max:l[7].drawable.max,defaultValue:s[7].drawable,clientValue:u[7].drawable,blacklisted:l[7].blacklist.drawables,onChange:c=>r(7,c)}),y(G,{title:a.props.texture,min:l[7].texture.min,max:l[7].texture.max,defaultValue:s[7].texture,clientValue:u[7].texture,blacklisted:l[7].blacklist.textures,onChange:c=>i(7,c)})]})})]}):null};function Tw(e){return qe({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z"}}]})(e)}function Iw(e){return qe({tag:"svg",attr:{viewBox:"0 0 192 512"},child:[{tag:"path",attr:{d:"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z"}}]})(e)}function Mw(e){return qe({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"}}]})(e)}function Rw(e){return qe({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"}}]})(e)}function Lw(e){return qe({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z"}}]})(e)}function Nw(e){return qe({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"}}]})(e)}function zw(e){return qe({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z"}}]})(e)}function Dw(e){return qe({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z"}}]})(e)}function $w(e){return qe({tag:"svg",attr:{viewBox:"0 0 352 512"},child:[{tag:"path",attr:{d:"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"}}]})(e)}function Bw(e){return qe({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z"}}]})(e)}function jw(e){return qe({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"}}]})(e)}function Hw(e){return qe({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z"}}]})(e)}function Uw(e){return qe({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M133.3 33.41L77.89 47.25 34.6 148.3l33.29 22.2 27.46-54.9 17.05 4.9-15.07 150.1H245.2l9.2-87.9.9-8.1h4.5l-5.4-54.1 17.1-4.9 27.4 54.9 33.3-22.2-43.3-101.05-55.4-13.84c-5.5 3.87-12.2 6.21-19.5 7.95-9.4 2.21-20 3.24-30.6 3.24-10.6 0-21.2-1.03-30.6-3.24-7.3-1.74-14-4.07-19.5-7.95zM271.5 192.6l-1.5 14h178.8l-1.5-14zm-3.4 32l-26.7 254h62.7l46.5-216.9h17.6l46.5 216.9h62.7l-26.7-254z"}}]})(e)}const Ww=Ve.div` + height: 100vh; + + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + + padding: 40px 0; + + > * { + & + * { + margin-top: 10px; + } + } +`,Gw=Ve.button` + height: 40px; + width: 40px; + + display: flex; + align-items: center; + justify-content: center; + + border: 0; + border-radius: ${e=>e.theme.borderRadius||"4px"}; + + box-shadow: 0px 0px 5px rgb(0, 0, 0, 0.2); + + transition: all 0.2s; + + color: rgba(${e=>e.theme.fontColor||"255, 255, 255"}, 0.9); + background: rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, 0.7); + + &:hover { + color: rgba(${e=>e.theme.fontColor||"255, 255, 255"}, 1); + background: rgba(${e=>e.theme.primaryBackground||"0, 0, 0"}, 0.9); + ${e=>e.theme.smoothBackgroundTransition?"transition: background 0.2s;":""} + ${e=>e.theme.scaleOnHover?"transform: scale(1.05);":""} + } + + &:active { + transform: scale(0.8); + } + + ${({active:e})=>e&&Di` + color: rgba(${t=>t.theme.fontColorSelected||"0, 0, 0"}, 0.7); + background: rgba(${t=>t.theme.primaryBackgroundSelected||"255, 255, 255"}, 1); + + &:hover { + color: rgba(${t=>t.theme.fontColorSelected||"0, 0, 0"}, 0.9); + background: rgba(${t=>t.theme.primaryBackgroundSelected||"255, 255, 255"}, 1); + ${t=>t.theme.smoothBackgroundTransition?"transition: background 0.2s;":""} + } + `} +`,$l=Ve.button` + height: 40px; + width: 40px; + + position: relative; + + display: flex; + align-items: center; + justify-content: center; + + flex-shrink: 0; + + border: 0; + border-radius: ${e=>e.theme.borderRadius||"4px"}; + + box-shadow: 0px 0px 5px rgb(0, 0, 0, 0.2); + + transition: all 0.1s; + + color: rgba(${e=>e.theme.fontColor||"255, 255, 255"}, 0.9); + background: rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, 0.7); + + &:hover { + color: rgba(${e=>e.theme.fontColorHover||"255, 255, 255"}, 1); + background: rgba(${e=>e.theme.primaryBackground||"0, 0, 0"}, 0.9); + ${e=>e.theme.smoothBackgroundTransition?"transition: background 0.2s;":""} + ${e=>e.theme.scaleOnHover?"transform: scale(1.05);":""} + } + + &:active { + transform: scale(0.8); + color: rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, 0.7); + background: rgba(${e=>e.theme.primaryBackgroundSelected||"255, 255, 255"}, 1); + } +`,Qw=Ve.div` + height: 40px; + + display: flex; + align-items: flex-start; + justify-content: flex-start; + + width: ${({width:e})=>`${e+40}px`}; + + transition: width 0.3s; + + overflow: hidden; +`,Yw=Ve.div` + height: 40px; + width: 40px; + + display: flex; + align-items: center; + justify-content: center; + + flex-shrink: 0; + + border: 0; + border-radius: ${e=>e.theme.borderRadius||"4px"}; + + color: rgba(${e=>e.theme.fontColor||"255, 255, 255"}, 0.9); + background: rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, 0.7); +`,Kw=Ve.div` + display: flex; + align-items: flex-start; + justify-content: flex-start; + + padding-left: 10px; + + > * { + & + * { + margin-left: 10px; + } + } +`,fn=({children:e,active:t,onClick:n})=>y(Gw,{type:"button",active:t,onClick:n,children:e}),cd=({children:e,icon:t})=>{const[n,r]=b.exports.useState(!0),[i,o]=b.exports.useState(0),a=b.exports.useRef(null);b.exports.useEffect(()=>{a.current&&(o(a.current.offsetWidth),r(!1))},[a,o]);const l=b.exports.useCallback(()=>{r(!0)},[r]),s=b.exports.useCallback(()=>{r(!1)},[r]);return R(Qw,{width:n?i:0,onMouseEnter:l,onMouseLeave:s,children:[y(Yw,{children:t}),y(Kw,{ref:a,children:e})]})},Xw=({camera:e,rotate:t,clothes:n,handleSetClothes:r,handleSetCamera:i,handleTurnAround:o,handleRotateLeft:a,handleRotateRight:l,handleExit:s,handleSave:u,enableExit:c})=>R(Ww,{children:[R(cd,{icon:y(Hw,{size:20}),children:[y(fn,{active:e.head,onClick:()=>i("head"),children:y(Nw,{size:20})}),y(fn,{active:e.body,onClick:()=>i("body"),children:y(Iw,{size:20})}),y(fn,{active:e.bottom,onClick:()=>i("bottom"),children:y(Lw,{size:20})})]}),R(cd,{icon:y(Uw,{size:20}),children:[y(fn,{active:n.head,onClick:()=>r("head"),children:y(Tw,{size:20})}),y(fn,{active:n.body,onClick:()=>r("body"),children:y(Bw,{size:20})}),y(fn,{active:n.bottom,onClick:()=>r("bottom"),children:y(zw,{size:20})})]}),y($l,{onClick:o,children:y(Dw,{size:20})}),y(fn,{active:t.left,onClick:a,children:y(Mw,{size:20})}),y(fn,{active:t.right,onClick:l,children:y(jw,{size:20})}),y($l,{onClick:u,children:y(Rw,{size:20})}),c&&y($l,{onClick:s,children:y($w,{size:20})})]}),Zw=Ve.div` + width: 100vw; + height: 100vh; + + position: absolute; + + left: 0; + top: 0; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + user-select: none; + + font-size: 1.5rem; + color: rgba(255, 255, 255, 1); + text-align: center; + text-transform: uppercase; + text-shadow: 3px 3px rgba(0, 0, 0, 0.5); + + background: rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, 0.9); + + span { + font-size: 1rem; + opacity: 0.5; + } +`,qw=Ve.div` + display: flex; + justify-content: center; + align-items: center; + + margin-top: 100px; + + button { + height: 40px; + width: 100px; + margin: 0 50px; + border-radius: ${e=>e.theme.borderRadius||"0px"}; + + display: flex; + justify-content: center; + align-items: center; + + color: rgba(${e=>e.theme.fontColor||"255, 255, 255"}, 1);; + font-size: 1.5rem; + font-weight: 400; + text-transform: uppercase; + + opacity: 0.8; + transition: all 0.2s; + + background: none; + border: 0; + + &:hover { + transform: scale(1.1); + opacity: 1; + text-shadow: 0px 2px 2px rgba(251, 255, 190, 0.2); + background: rgba(${e=>e.theme.primaryBackground||"0, 0, 0"}, 0.9); + } + } +`,fd=({title:e,description:t,accept:n,decline:r,handleAccept:i,handleDecline:o})=>R(Zw,{children:[y("p",{children:e}),y("span",{children:t}),R(qw,{children:[y("button",{type:"button",onClick:i,children:n}),y("button",{type:"button",onClick:o,children:r})]})]}),Jw=Ve.span` + padding: 5px 12px; + margin: ${e=>(e==null?void 0:e.margin)||"0px"}; + width: ${e=>(e==null?void 0:e.width)||"auto"}; + color: rgba(${e=>e.theme.fontColor||"255, 255, 255"}, 0.9); + background-color: rgba(${e=>e.theme.secondaryBackground||"0, 0, 0"}, 0.7); + text-align: center; + border-radius: ${e=>e.theme.borderRadius||"4px"}; + display: flex; + justify-content: center; + align-items: center; + gap: 5px; + font-weight: 200; + cursor: pointer; +`,Ys=({children:e,onClick:t,margin:n,width:r})=>y(Jw,{onClick:t,margin:n,width:r,children:e}),eS=Ve.div` + min-width: 0; + + display: flex; + flex-direction: column; + flex-grow: 1; + gap: 10px; + + > section { + width: 100%; + display: flex; + justify-content: flex-end; + } +`,po={control:e=>({...e,marginTop:"10px",background:"rgba(23, 23, 23, 0.8)",fontSize:"14px",color:"#fff",border:"none",outline:"none",boxShadow:"none"}),placeholder:e=>({...e,fontSize:"14px",color:"#fff"}),input:e=>({...e,fontSize:"14px",color:"#fff"}),singleValue:e=>({...e,fontSize:"14px",color:"#fff",border:"none",outline:"none"}),indicatorContainer:e=>({...e,borderColor:"#fff",color:"#fff"}),dropdownIndicator:e=>({...e,borderColor:"#fff",color:"#fff"}),menuPortal:e=>({...e,color:"#fff",zIndex:9999}),menu:e=>({...e,background:"rgba(23, 23, 23, 0.8)",position:"absolute",marginBottom:"10px",borderRadius:"4px"}),menuList:e=>({...e,background:"rgba(23, 23, 23, 0.8)",borderRadius:"4px","&::-webkit-scrollbar":{width:"10px"},"&::-webkit-scrollbar-track":{background:"none"},"&::-webkit-scrollbar-thumb":{borderRadius:"4px",background:"#fff"}}),option:(e,{isFocused:t})=>({...e,borderRadius:"4px",width:"97%",marginLeft:"auto",marginRight:"auto",background:t?"rgba(255, 255, 255, 0.1)":"none"})},tS=({items:e,tattoosApplied:t,handleApplyTattoo:n,handlePreviewTattoo:r,handleDeleteTattoo:i,settings:o})=>{const l=b.exports.useRef(null),[s,u]=b.exports.useState(e[0]),[c,f]=b.exports.useState(.1),{label:p}=s,{locales:g}=un(),v=b.exports.useCallback(()=>{var E;if(!t)return .1;const{name:k}=s;for(let w=0;w{f(v)},[v]);const x=(k,{action:E})=>{E==="select-option"&&(r(k.value,c),u(k.value))},S=b.exports.useCallback(k=>{f(k),r(s,k)},[s]),h=()=>{setTimeout(()=>{const k=document.getElementsByClassName("TattooDropdown"+e[0].zone+"__option--is-selected")[0];k&&k.scrollIntoView({behavior:"auto",block:"start",inline:"nearest"})},100)},d=b.exports.useCallback(()=>{if(!t)return!1;const{name:k}=s;for(let E=0;E({value:k,label:k.label})),value:{value:s,label:p},onChange:x,onMenuOpen:h,className:"TattooDropdown"+e[0].zone,classNamePrefix:"TattooDropdown"+e[0].zone,menuPortalTarget:document.body,menuShouldScrollIntoView:!0}),y(le,{title:g.tattoos.opacity,min:o.opacity.min,max:o.opacity.max,factor:o.opacity.factor,defaultValue:c,clientValue:v,onChange:k=>S(k)}),y("section",{children:d?y(Ys,{onClick:()=>i(s),children:g.tattoos.delete}):y(Ys,{onClick:()=>n(s,c),children:g.tattoos.apply})})]})},nS=({settings:e,data:t,storedData:n,handleApplyTattoo:r,handlePreviewTattoo:i,handleDeleteTattoo:o,handleClearTattoos:a})=>{const{locales:l}=un(),{items:s}=e,u=Object.keys(s);return l?R(Jn,{title:l.tattoos.title,children:[u.map(c=>{var f;return c!=="ZONE_HAIR"&&y(J,{title:l.tattoos.items[c],children:y(Be,{children:y(tS,{handlePreviewTattoo:i,handleApplyTattoo:r,handleDeleteTattoo:o,items:s[c],tattoosApplied:(f=t[c])!=null?f:null,settings:e})})},c)}),y(J,{children:y(Be,{children:y(Ys,{onClick:()=>a(),width:"100%",children:l.tattoos.deleteAll})})})]}):null},rS=()=>{const[e,t]=b.exports.useState(),[n,r]=b.exports.useState(),[i,o]=b.exports.useState(),[a,l]=b.exports.useState(),[s,u]=b.exports.useState(_l),[c,f]=b.exports.useState(Tl),[p,g]=b.exports.useState(ly),[v,x]=b.exports.useState(!1),[S,h]=b.exports.useState(!1),{display:d,setDisplay:m,locales:k,setLocales:E}=un(),w=Fl(d.appearance,null,{from:{transform:"translateX(-50px)",opacity:0},enter:{transform:"translateY(0)",opacity:1},leave:{transform:"translateX(-50px)",opacity:0}}),O=Fl(v,null,{from:{opacity:0},enter:{opacity:1},leave:{opacity:0}}),F=Fl(S,null,{from:{opacity:0},enter:{opacity:1},leave:{opacity:0}}),M=b.exports.useCallback(()=>{de.post("appearance_turn_around")},[]),L=b.exports.useCallback(A=>{g({...p,[A]:!p[A]}),p[A]?de.post("appearance_wear_clothes",{data:n,key:A}):de.post("appearance_remove_clothes",A)},[n,p,g]),j=b.exports.useCallback(A=>{u({..._l,[A]:!s[A]}),f(Tl),s[A]?de.post("appearance_set_camera","default"):de.post("appearance_set_camera",A)},[s,u,f]),H=b.exports.useCallback(()=>{f({left:!c.left,right:!1}),c.left?de.post("appearance_set_camera","current"):de.post("appearance_rotate_camera","left")},[f,c]),re=b.exports.useCallback(()=>{f({left:!1,right:!c.right}),c.right?de.post("appearance_set_camera","current"):de.post("appearance_rotate_camera","right")},[f,c]),ue=b.exports.useCallback(()=>{x(!0)},[x]),te=b.exports.useCallback(()=>{h(!0)},[h]),ee=b.exports.useCallback(async A=>{A&&await de.post("appearance_save",n),x(!1)},[x,n]),X=b.exports.useCallback(async A=>{A&&await de.post("appearance_exit"),h(!1)},[h]),V=b.exports.useCallback(async A=>{const{appearanceSettings:K,appearanceData:D}=await de.post("appearance_change_model",A);l(K),r(D)},[r,l]),z=b.exports.useCallback((A,K)=>{if(!n)return;const D={...n.headBlend,[A]:K},ne={...n,headBlend:D};r(ne),de.post("appearance_change_head_blend",D)},[n,r]),B=b.exports.useCallback((A,K)=>{if(!n)return;const D={...n.faceFeatures,[A]:K},ne={...n,faceFeatures:D};r(ne),de.post("appearance_change_face_feature",D)},[n,r]),oe=b.exports.useCallback(async(A,K)=>{if(!n||!a)return;const D={...n.hair,[A]:K},ne={...n,hair:D};r(ne);const Ge=await de.post("appearance_change_hair",D),Ce={...a,hair:Ge};l(Ce)},[n,r,a,l]),P=b.exports.useCallback(async A=>{if(!n||!a)return;const{tattoos:K}=n,D={...K},ne=a.tattoos.items.ZONE_HAIR[A];D[ne.zone]||(D[ne.zone]=[]),D[ne.zone]=[ne],await de.post("appearance_apply_tattoo",D),r({...n,tattoos:D})},[a,n,r]),T=b.exports.useCallback((A,K,D)=>{if(!n)return;const ne={...n.headOverlays[A],[K]:D},Ge={...n,headOverlays:{...n.headOverlays,[A]:ne}};r(Ge),de.post("appearance_change_head_overlay",{...n.headOverlays,[A]:ne})},[n,r]),N=b.exports.useCallback(A=>{if(!n)return;const K={...n,eyeColor:A};r(K),de.post("appearance_change_eye_color",A)},[n,r]),W=b.exports.useCallback(async(A,K)=>{if(!n||!a)return;const D=n.components.find(Oe=>Oe.component_id===A);if(!D)return;const ne={...D,drawable:K,texture:0},Ce=[...n.components.filter(Oe=>Oe.component_id!==A),ne],U={...n,components:Ce};r(U);const ye=await de.post("appearance_change_component",ne),Vt=[...a.components.filter(Oe=>Oe.component_id!==A),ye],Je={...a,components:Vt};l(Je)},[n,r,a,l]),C=b.exports.useCallback(async(A,K)=>{if(!n||!a)return;const D=n.components.find(Oe=>Oe.component_id===A);if(!D)return;const ne={...D,texture:K},Ce=[...n.components.filter(Oe=>Oe.component_id!==A),ne],U={...n,components:Ce};r(U);const ye=await de.post("appearance_change_component",ne),Vt=[...a.components.filter(Oe=>Oe.component_id!==A),ye],Je={...a,components:Vt};l(Je)},[n,r,a,l]),q=b.exports.useCallback(async(A,K)=>{if(!n||!a)return;const D=n.props.find(Oe=>Oe.prop_id===A);if(!D)return;const ne={...D,drawable:K,texture:0},Ce=[...n.props.filter(Oe=>Oe.prop_id!==A),ne],U={...n,props:Ce};r(U);const ye=await de.post("appearance_change_prop",ne),Vt=[...a.props.filter(Oe=>Oe.prop_id!==A),ye],Je={...a,props:Vt};l(Je)},[n,r,a,l]),I=b.exports.useCallback(async(A,K)=>{if(!n||!a)return;const D=n.props.find(Oe=>Oe.prop_id===A);if(!D)return;const ne={...D,texture:K},Ce=[...n.props.filter(Oe=>Oe.prop_id!==A),ne],U={...n,props:Ce};r(U);const ye=await de.post("appearance_change_prop",ne),Vt=[...a.props.filter(Oe=>Oe.prop_id!==A),ye],Je={...a,props:Vt};l(Je)},[n,r,a,l]),pe=b.exports.useMemo(()=>{if(!!n)return n.model==="mp_m_freemode_01"||n.model==="mp_f_freemode_01"},[n]),ce=b.exports.useMemo(()=>{if(!!n)return n.model==="mp_m_freemode_01"},[n]),fe=A=>{for(const K in A.items)A.items[K]=A.items[K].filter(D=>{if(ce&&D.hashMale!=="")return D;if(!ce&&D.hashFemale!=="")return D});return A},Z=b.exports.useCallback(async(A,K)=>{if(!n)return;A.opacity=K;const{tattoos:D}=n,ne=JSON.parse(JSON.stringify({...D}));ne[A.zone]||(ne[A.zone]=[]),ne[A.zone].push(A),await de.post("appearance_apply_tattoo",{tattoo:A,updatedTattoos:ne})&&r({...n,tattoos:ne})},[n,r]),Te=b.exports.useCallback((A,K)=>{if(!n)return;A.opacity=K;const{tattoos:D}=n;de.post("appearance_preview_tattoo",{data:D,tattoo:A})},[n]),Le=b.exports.useCallback(async A=>{if(!n)return;const{tattoos:K}=n,D=K;D[A.zone]=D[A.zone].filter(ne=>ne.name!==A.name),await de.post("appearance_delete_tattoo",D),r({...n,tattoos:D})},[n,r]),ae=b.exports.useCallback(async()=>{if(!n)return;const{tattoos:A}=n,K={...A};for(var D in K)D!=="ZONE_HAIR"&&(K[D]=[]);await de.post("appearance_delete_tattoo",K),r({...n,tattoos:K})},[n,r]);b.exports.useEffect(()=>{k||de.post("appearance_get_locales").then(A=>E(A)),de.onEvent("appearance_display",A=>{m({appearance:!0,asynchronous:A.asynchronous})}),de.onEvent("appearance_hide",()=>{m({appearance:!1,asynchronous:!1}),r(Lf),o(Lf),u(_l),f(Tl)})},[]);const Ne=b.exports.useCallback(async()=>{const A=await de.post("appearance_get_data");t(A.config),o(A.appearanceData),r(A.appearanceData)},[]),he=b.exports.useCallback(async()=>{if(a===void 0||a===ay){const A=await de.post("appearance_get_settings");l(A.appearanceSettings)}},[]);return b.exports.useEffect(()=>{d.appearance&&(d.asynchronous?(async()=>(await he(),await Ne()))():(he().catch(console.error),Ne().catch(console.error)))},[d.appearance]),!d.appearance||!e||!a||!n||!i||!k?null:R(na,{children:[w.map(({item:A,key:K,props:D})=>{var ne,Ge,Ce,U;return A&&y(Ao.div,{style:D,children:R(Aw,{children:[R(Fw,{children:[e.ped&&y(ww,{settings:a.ped,storedData:i.model,data:n.model,handleModelChange:V}),a&&R(na,{children:[pe&&e.headBlend&&y(bw,{settings:a.headBlend,storedData:i.headBlend,data:n.headBlend,handleHeadBlendChange:z}),pe&&e.faceFeatures&&y(Cw,{settings:a.faceFeatures,storedData:i.faceFeatures,data:n.faceFeatures,handleFaceFeatureChange:B}),e.headOverlays&&y(Pw,{settings:{hair:a.hair,headOverlays:a.headOverlays,eyeColor:a.eyeColor,fade:a.tattoos.items.ZONE_HAIR},storedData:{hair:i.hair,headOverlays:i.headOverlays,eyeColor:i.eyeColor,fade:((Ge=(ne=i.tattoos)==null?void 0:ne.ZONE_HAIR)==null?void 0:Ge.length)>0?i.tattoos.ZONE_HAIR[0]:null},data:{hair:n.hair,headOverlays:n.headOverlays,eyeColor:n.eyeColor,fade:((U=(Ce=n.tattoos)==null?void 0:Ce.ZONE_HAIR)==null?void 0:U.length)>0?n.tattoos.ZONE_HAIR[0]:null},isPedFreemodeModel:pe,handleHairChange:oe,handleHeadOverlayChange:T,handleEyeColorChange:N,handleChangeFade:P,automaticFade:e.automaticFade})]}),e.components&&y(Vw,{settings:a.components,data:n.components,storedData:i.components,handleComponentDrawableChange:W,handleComponentTextureChange:C,componentConfig:e.componentConfig,hasTracker:e.hasTracker,isPedFreemodeModel:pe}),e.props&&y(_w,{settings:a.props,data:n.props,storedData:i.props,handlePropDrawableChange:q,handlePropTextureChange:I,propConfig:e.propConfig}),pe&&e.tattoos&&y(nS,{settings:fe(a.tattoos),data:n.tattoos,storedData:i.tattoos,handleApplyTattoo:Z,handlePreviewTattoo:Te,handleDeleteTattoo:Le,handleClearTattoos:ae})]}),y(Xw,{camera:s,rotate:c,clothes:p,handleSetClothes:L,handleSetCamera:j,handleTurnAround:M,handleRotateLeft:H,handleRotateRight:re,handleSave:ue,handleExit:te,enableExit:e.enableExit})]})},K)}),O.map(({item:A,key:K,props:D})=>A&&y(Ao.div,{style:D,children:y(fd,{title:k.modal.save.title,description:k.modal.save.description,accept:k.modal.accept,decline:k.modal.decline,handleAccept:()=>ee(!0),handleDecline:()=>ee(!1)})},K)),F.map(({item:A,key:K,props:D})=>A&&y(Ao.div,{style:D,children:y(fd,{title:k.modal.exit.title,description:k.modal.exit.description,accept:k.modal.accept,decline:k.modal.decline,handleAccept:()=>X(!0),handleDecline:()=>X(!1)})},K))]})},iS={id:"default",borderRadius:"4px",fontColor:"255, 255, 255",fontColorHover:"255, 255, 255",fontColorSelected:"0, 0, 0",fontFamily:"Inter",primaryBackground:"0, 0, 0",primaryBackgroundSelected:"255, 255, 255",secondaryBackground:"0, 0, 0",scaleOnHover:!1,sectionFontWeight:"normal",smoothBackgroundTransition:!1},oS=()=>{const[e,t]=b.exports.useState(iS),n=i=>{for(let o=0;o{const i=await de.post("get_theme_configuration");t(n(i))},[]);return b.exports.useEffect(()=>{r().catch(console.error)},[r]),y(yv,{children:R(fg,{theme:e,children:[y(rS,{}),y(hg,{})]})})},aS=document.getElementById("root"),lS=Sh(aS);lS.render(R(He.StrictMode,{children:[y(oS,{}),y(oy,{})]})); diff --git a/resources/[core]/illenium-appearance/web/dist/index.html b/resources/[core]/illenium-appearance/web/dist/index.html new file mode 100644 index 0000000..a94e11e --- /dev/null +++ b/resources/[core]/illenium-appearance/web/dist/index.html @@ -0,0 +1,17 @@ + + + + + + + + UI + + + + +
+ + + + \ No newline at end of file diff --git a/resources/[core]/menuv/.gitattributes b/resources/[core]/menuv/.gitattributes new file mode 100644 index 0000000..fcb2246 --- /dev/null +++ b/resources/[core]/menuv/.gitattributes @@ -0,0 +1,11 @@ +# Auto detect text files and perform LF normalization +* text=auto + +*.sh text eol=lf +*.bat text eol=crlf + +*.ytd binary +*.jpeg binary +*.jpg binary +*.png binary +*.psd binary diff --git a/resources/[core]/menuv/.gitignore b/resources/[core]/menuv/.gitignore new file mode 100644 index 0000000..764e5d2 --- /dev/null +++ b/resources/[core]/menuv/.gitignore @@ -0,0 +1,210 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/vscode,lua,vue,vuejs,node,yarn +# Edit at https://www.toptal.com/developers/gitignore?templates=vscode,lua,vue,vuejs,node,yarn + +### Lua ### +# Compiled Lua sources +luac.out + +# luarocks build files +*.src.rock +*.zip +*.tar.gz + +# Object files +*.o +*.os +*.ko +*.obj +*.elf + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo +*.def +*.exp + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +package-lock.json + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release +build/* +build/ + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test +.env*.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +### vscode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +### IntelliJ ### +.idea + +### Vue ### +# gitignore template for Vue.js projects +# +# Recommended template: Node.gitignore + +# TODO: where does this rule come from? +docs/_book + +# TODO: where does this rule come from? +test/ + +### Vuejs ### +# Recommended template: Node.gitignore + +dist/ +npm-debug.log +yarn-error.log + +### yarn ### +# https://yarnpkg.com/advanced/qa#which-files-should-be-gitignored + +.yarn/* +!.yarn/releases +!.yarn/plugins +!.yarn/sdks +!.yarn/versions +.yarn.installed + +# if you are NOT using Zero-installs, then: +# comment the following lines +!.yarn/cache +yarn.lock +*.lock + +# and uncomment the following lines +# .pnp.* + +# End of https://www.toptal.com/developers/gitignore/api/vscode,lua,vue,vuejs,node,yarn \ No newline at end of file diff --git a/resources/[core]/menuv/LICENSE b/resources/[core]/menuv/LICENSE new file mode 100644 index 0000000..e72bfdd --- /dev/null +++ b/resources/[core]/menuv/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/resources/[core]/menuv/README.md b/resources/[core]/menuv/README.md new file mode 100644 index 0000000..518dbef --- /dev/null +++ b/resources/[core]/menuv/README.md @@ -0,0 +1,124 @@ +# MenuV | Standalone Menu for FiveM | NUI Menu +[![N|CoreV](https://i.imgur.com/iq1llQG.jpg)](https://github.com/ThymonA/menuv) + +[![Issues](https://img.shields.io/github/issues/ThymonA/menuv.svg?style=for-the-badge)](https://github.com/ThymonA/menuv/issues) +[![License](https://img.shields.io/github/license/ThymonA/menuv.svg?style=for-the-badge)](https://github.com/ThymonA/menuv/blob/master/LICENSE) +[![Forks](https://img.shields.io/github/forks/ThymonA/menuv.svg?style=for-the-badge)](https://github.com/ThymonA/menuv) +[![Stars](https://img.shields.io/github/stars/ThymonA/menuv.svg?style=for-the-badge)](https://github.com/ThymonA/menuv) +[![Discord](https://img.shields.io/badge/discord-Tigo%239999-7289da?style=for-the-badge&logo=discord)](https://discordapp.com/users/733686533873467463) + +--- + +**[MenuV](https://github.com/ThymonA/menuv)** is a library written for **[FiveM](https://fivem.net/)** and only uses NUI functionalities. This library allows you to create menus in **[FiveM](https://fivem.net/)**. This project is open-source and you must respect the [license](https://github.com/ThymonA/menuv/blob/master/LICENSE) and the hard work. + +## Features +- Support for simple buttons, sliders, checkboxes, lists and confirms +- Support for emojis on items +- Support for custom colors (RGB) +- Support for all screen resolutions. +- Item descriptions +- Rebindable keys +- Event-based callbacks +- Uses `2 msec` while menu open and idle. +- Documentation on [menuv.fivem.io/api/](https://menuv.fivem.io/api/) +- Themes: **[default](https://i.imgur.com/xGagIBm.png)** or **[native](https://i.imgur.com/KSkeiQm.png)** + +## Compile files +**[MenuV](https://github.com/ThymonA/menuv)** uses **[VueJS](https://vuejs.org/v2/guide/installation.html#NPM)** and **[TypeScript](https://www.npmjs.com/package/typescript)** with **[NodeJS](https://nodejs.org/en/)**. If you want to use the **`master`** files, you need to build the hole project by doing: + +```sh +npm install +``` +After you have downloaded/loaded all dependencies, you can build **[MenuV](https://github.com/ThymonA/menuv)** files by executing the following command: +```sh +npm run build +``` + +After the command is executed you will see a `build` folder containing all the resource files. +Copy those files to a resource folder called `menuv` or create a symbolic link like that: + +### Windows + +```batch +mklink /J "repositoryPath\build" "fxResourcesPath\menuv" +``` + +### Linux + +```sh +ln -s "repositoryPath\build" "fxResourcesPath\menuv" +``` + +You can also check this tutorial on how to make a link: +[https://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/](https://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/) + +**When your downloading a [release](https://github.com/ThymonA/menuv/releases), you don't have to follow this step, because all [release](https://github.com/ThymonA/menuv/releases) version are build version.** + +## How to use? +> ⚠️ **example.lua** can't be added in the **menuv** fxmanifest, you must make an seperate resource like: **[menuv_example](https://github.com/ThymonA/menuv/tree/master/example)** +1. Add `start menuv` to your **server.cfg** before the resources that's uses **menuv** +2. To use **[MenuV](https://github.com/ThymonA/menuv)** you must add **@menuv/menuv.lua** in your **fxmanifest.lua** file. + +```lua +client_scripts { + '@menuv/menuv.lua', + 'example.lua' +} +``` + +### Create a menu +Create a menu by calling the **MenuV:CreateMenu** function. +```ts +MenuV:CreateMenu(title: string, subtitle: string, position: string, red: number, green: number, blue: number, texture: string, disctionary: string, namespace: string, theme: string) +``` +**Example:** +```lua +local menu = MenuV:CreateMenu('MenuV', 'Welcome to MenuV', 'topleft', 255, 0, 0, 'size-125', 'default', 'menuv', 'example_namespace', 'native') +``` + +### Create menu items +Create a item by calling **AddButton**, **AddConfirm**, **AddRange**, **AddCheckbox** or **AddSlider** in the created menu +```ts +/** CREATE A BUTTON */ +menu:AddButton({ icon: string, label: string, description: string, value: any, disabled: boolean }); + +/** CREATE A CONFIRM */ +menu:AddConfirm({ icon: string, label: string, description: string, value: boolean, disabled: boolean }); + +/** CREATE A RANGE */ +menu:AddRange({ icon: string, label: string, description: string, value: number, min: number, max: number, disabled: boolean }); + +/** CREATE A CHECKBOX */ +menu:AddCheckbox({ icon: string, label: string, description: string, value: boolean, disabled: boolean }); + +/** CREATE A SLIDER */ +menu:AddSlider({ icon: string, label: string, description: string, value: number, values: [] { label: string, value: any, description: string }, disabled: boolean }); +``` +To see example in practice, see [example.lua](https://github.com/ThymonA/menuv/blob/master/example/example.lua) + +### Events +In **[MenuV](https://github.com/ThymonA/menuv)** you can register event-based callbacks on menu and/or items. +```ts +/** REGISTER A EVENT ON MENU */ +menu:On(event: string, callback: function); + +/** REGISTER A EVENT ON ANY ITEM */ +item:On(event: string, callback: function); +``` + +## Documentation +Read **[MenuV documentation](https://menuv.fivem.io/api/)** + +## License +Project is written by **[ThymonA](https://github.com/ThymonA/)** and published under +**GNU General Public License v3.0** +[Read License](https://github.com/ThymonA/menuv/blob/master/LICENSE) + +## Screenshot +**How is this menu made?** see **[example.lua](https://github.com/ThymonA/menuv/blob/master/example/example.lua)** + + +Default | Native +:-------|:-------- +![MenuV Default](https://i.imgur.com/xGagIBm.png) | ![MenuV Native](https://i.imgur.com/KSkeiQm.png) +[Default Theme](https://i.imgur.com/xGagIBm.png) | [Native Theme](https://i.imgur.com/KSkeiQm.png) diff --git a/resources/[core]/menuv/build.js b/resources/[core]/menuv/build.js new file mode 100644 index 0000000..863e7e3 --- /dev/null +++ b/resources/[core]/menuv/build.js @@ -0,0 +1,163 @@ +/** +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +*/ + +const process = require("process"); +const colors = require('colors/safe'); +const { exec } = require('child_process'); +const fs = require('fs'); +const fse = require('fs-extra'); +const path = require('path'); +const recursive = require('recursive-readdir'); +const args = process.argv.slice(2); + +const DEBUG = { + PRINT: function(msg) { + console.log(colors.bgBlack(`[${colors.bold(colors.blue('MenuV'))}][${colors.bold(colors.green('BUILD'))}] ${colors.bold(colors.white(msg))}`)); + }, + ERROR: function(msg) { + console.log(colors.bgBlack(`[${colors.bold(colors.blue('MenuV'))}][${colors.bold(colors.green('BUILD'))}][${colors.bold(colors.red('ERROR'))}] ${colors.bold(colors.white(msg))}`)); + } +} + +const PATHS = { + SOURCE: path.resolve(`${__dirname}/source`), + BUILD: path.resolve(`${__dirname}/build`), + VERSION: path.resolve(`${__dirname}/source/VERSION`), + APP: path.resolve(`${__dirname}/source/app`), + MENUV: path.resolve(`${__dirname}/source/menuv.lua`) +} + +const version = fs.readFileSync(PATHS.VERSION, { encoding: 'utf8' }); +const COPY_FILES = [ + { from: `${__dirname}/source/VERSION`, to: `${PATHS.BUILD}/VERSION`, type: 'file' }, + { from: `${__dirname}/README.md`, to: `${PATHS.BUILD}/README.md`, type: 'file' }, + { from: `${PATHS.APP}/menuv.lua`, to: `${PATHS.BUILD}/menuv/menuv.lua`, type: 'file' }, + { from: `${PATHS.APP}/fxmanifest.lua`, to: `${PATHS.BUILD}/fxmanifest.lua`, type: 'file' }, + { from: `${__dirname}/LICENSE`, to: `${PATHS.BUILD}/LICENSE`, type: 'file' }, + { from: `${__dirname}/example`, to: `${PATHS.BUILD}/menuv_example`, type: 'dir' }, + { from: `${__dirname}/source/config.lua`, to: `${PATHS.BUILD}/config.lua`, type: 'file' }, + { from: `${__dirname}/templates`, to: `${PATHS.BUILD}/templates`, type: 'dir' }, + { from: `${__dirname}/templates/menuv.ytd`, to: `${PATHS.BUILD}/stream/menuv.ytd`, type: 'file' }, + { from: `${__dirname}/source/languages`, to: `${PATHS.BUILD}/languages`, type: 'dir' }, + { from: `${__dirname}/dist`, to: `${PATHS.BUILD}/dist`, type: 'dir', deleteAfter: true }, + { from: `${PATHS.APP}/lua_components`, to: `${PATHS.BUILD}/menuv/components`, type: 'dir' } +]; + +DEBUG.PRINT(`Building ${colors.yellow('MenuV')} version ${colors.yellow(version)}...`) + +for (var i = 0; i < args.length; i++) { + if (args[i].startsWith("--mode=")) { + const configuration = args[i].substr(7).toLowerCase(); + + switch (configuration) { + case "production": + case "release": + args[i] = '--mode=production'; + break; + case "development": + case "debug": + args[i] = '--mode=development'; + break; + default: + args[i] = '--mode=none'; + break; + } + } +} + +let argumentString = args.join(" "); + +if (argumentString.length > 0) { + argumentString = ` ${argumentString}`; +} else { + argumentString = ` --mode=production`; +} + +exec(`npx webpack${argumentString}`, (err, stdout, stderr) => { + if (err) { + DEBUG.ERROR(err.stack); + return; + } + + if (!fs.existsSync(PATHS.BUILD)) { + fs.mkdirSync(PATHS.BUILD, { recursive: true }); + } + + fse.emptyDirSync(PATHS.BUILD); + + for (var i = 0; i < COPY_FILES.length; i++) { + const copy_file = COPY_FILES[i]; + const from_file_path = path.resolve(copy_file.from); + const to_file_path = path.resolve(copy_file.to); + + if (copy_file.type == 'file') { + const to_file_path_directory = path.dirname(to_file_path); + + if (!fs.existsSync(to_file_path_directory)) + fs.mkdirSync(to_file_path_directory, { recursive: true }); + + fs.copyFileSync(from_file_path, to_file_path) + } else { + if (!fs.existsSync(to_file_path)) + fs.mkdirSync(to_file_path, { recursive: true }); + + fse.copySync(from_file_path, to_file_path, { recursive: true }); + } + + if (copy_file.deleteAfter) + fse.rmdirSync(from_file_path, { recursive: true }); + } + + let menuv_file = fs.readFileSync(PATHS.MENUV, { encoding: 'utf8' }); + const regex = /---@load '(.*?)'/gm; + + let m; + + while ((m = regex.exec(menuv_file)) != null) { + if (m.index === regex.lastIndex) { + regex.lastIndex++; + } + + m.forEach((match, groupIndex) => { + if (groupIndex == 1) { + const content_path = path.resolve(`${PATHS.SOURCE}/${match}`); + + if (fs.existsSync(content_path)) { + const content = fs.readFileSync(content_path, { encoding: 'utf8' }); + const content_regex = new RegExp(`---@load '${match}'`, 'g'); + + menuv_file = menuv_file.replace(content_regex, content); + } + } + }); + } + + const final_menuv_path = path.resolve(`${PATHS.BUILD}/menuv.lua`); + + fs.writeFileSync(final_menuv_path, menuv_file); + + recursive(PATHS.BUILD, ['*.woff', '*.ytd', '*.png', '*.psd'], function (err, files) { + const version_regex = /Version: 1\.0\.0/g + const version_regex2 = /version '1\.0\.0'/g + + for(var i = 0; i < files.length; i++) { + const file = path.resolve(files[i]); + const file_content = fs.readFileSync(file, { encoding: 'utf8' }) + .replace(version_regex, `Version: ${version}`) + .replace(version_regex2, `version '${version}'`); + + fs.writeFileSync(file, file_content); + } + + DEBUG.PRINT(`${colors.yellow('MenuV')} version ${colors.yellow(version)} successfully build\n${colors.bold('Location: ')} ${PATHS.BUILD}`); + }); +}); \ No newline at end of file diff --git a/resources/[core]/menuv/example/example.lua b/resources/[core]/menuv/example/example.lua new file mode 100644 index 0000000..1d5cf6f --- /dev/null +++ b/resources/[core]/menuv/example/example.lua @@ -0,0 +1,45 @@ +--- MenuV Menu +---@type Menu +local menu = MenuV:CreateMenu(false, 'Welcome to MenuV', 'topleft', 255, 0, 0, 'size-125', 'example', 'menuv', 'example_namespace') +local menu2 = MenuV:CreateMenu('Demo 2', 'Open this demo menu in MenuV', 'topleft', 255, 0, 0) + +local menu_button = menu:AddButton({ icon = '😃', label = 'Open Demo 2 Menu', value = menu2, description = 'YEA :D from first menu' }) +local menu2_button = menu2:AddButton({ icon = '😃', label = 'Open First Menu', value = menu, description = 'YEA :D from second menu' }) +local confirm = menu:AddConfirm({ icon = '🔥', label = 'Confirm', value = 'no' }) +local range = menu:AddRange({ icon = '⚽', label = 'Range Item', min = 0, max = 10, value = 0, saveOnUpdate = true }) +local checkbox = menu:AddCheckbox({ icon = '💡', label = 'Checkbox Item', value = 'n' }) +local checkbox_disabled = menu:AddCheckbox({ icon = '💡', label = 'Checkbox Disabled', value = 'n', disabled = true }) +local slider = menu:AddSlider({ icon = '❤️', label = 'Slider', value = 'demo', values = { + { label = 'Demo Item', value = 'demo', description = 'Demo Item 1' }, + { label = 'Demo Item 2', value = 'demo2', description = 'Demo Item 2' }, + { label = 'Demo Item 3', value = 'demo3', description = 'Demo Item 3' }, + { label = 'Demo Item 4', value = 'demo4', description = 'Demo Item 4' } +}}) + +--- Events +confirm:On('confirm', function(item) print('YOU ACCEPTED THE TERMS') end) +confirm:On('deny', function(item) print('YOU DENIED THE TERMS') end) + +range:On('select', function(item, value) print(('FROM %s to %s YOU SELECTED %s'):format(item.Min, item.Max, value)) end) +range:On('change', function(item, newValue, oldValue) + menu.Title = ('MenuV %s'):format(newValue) +end) + +slider:On('select', function(item, value) print(('YOU SELECTED %s'):format(value)) end) + +confirm:On('enter', function(item) print('YOU HAVE NOW A CONFIRM ACTIVE') end) +confirm:On('leave', function(item) print('YOU LEFT OUR CONFIRM :(') end) + +menu:On('switch', function(item, currentItem, prevItem) print(('YOU HAVE SWITCH THE ITEMS FROM %s TO %s'):format(prevItem.__type, currentItem.__type)) end) + +menu2:On('open', function(m) + m:ClearItems() + + for i = 1, 10, 1 do + math.randomseed(GetGameTimer() + i) + + m:AddButton({ ignoreUpdate = i ~= 10, icon = '❤️', label = ('Open Menu %s'):format(math.random(0, 1000)), value = menu, description = ('YEA! ANOTHER RANDOM NUMBER: %s'):format(math.random(0, 1000)), select = function(i) print('YOU CLICKED ON THIS ITEM!!!!') end }) + end +end) + +menu:OpenWith('KEYBOARD', 'F1') -- Press F1 to open Menu \ No newline at end of file diff --git a/resources/[core]/menuv/example/fxmanifest.lua b/resources/[core]/menuv/example/fxmanifest.lua new file mode 100644 index 0000000..2339a17 --- /dev/null +++ b/resources/[core]/menuv/example/fxmanifest.lua @@ -0,0 +1,28 @@ +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu libarary for creating menu's +----------------------- [ MenuV ] ----------------------- + +fx_version 'cerulean' +game 'gta5' + +name 'MenuV' +version '1.0.0' +description 'FiveM menu libarary for creating menu\'s' +author 'ThymonA' +contact 'contact@arens.io' +url 'https://github.com/ThymonA/menuv/' + +client_scripts { + '@menuv/menuv.lua', + 'example.lua' +} + +dependencies { + 'menuv' +} \ No newline at end of file diff --git a/resources/[core]/menuv/package.json b/resources/[core]/menuv/package.json new file mode 100644 index 0000000..e4da5be --- /dev/null +++ b/resources/[core]/menuv/package.json @@ -0,0 +1,46 @@ +{ + "name": "menuv", + "version": "1.0.0", + "description": "FiveM menu library for creating menu's", + "main": "index.js", + "scripts": { + "build": "node ./build.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ThymonA/menuv.git" + }, + "keywords": [ + "menuv", + "fivem", + "library", + "thymona", + "tigodevelopment" + ], + "author": "ThymonA", + "license": "GPL-3.0-or-later", + "bugs": { + "url": "https://github.com/ThymonA/menuv/issues" + }, + "homepage": "https://github.com/ThymonA/menuv#readme", + "dependencies": { + "colors": "^1.4.0", + "copy-webpack-plugin": "^7.0.0", + "css-loader": "^5.0.1", + "fs-extra": "^9.0.1", + "html-webpack-plugin": "^4.5.1", + "recursive-readdir": "^2.2.2", + "ts-loader": "^8.0.14", + "typescript": "^4.1.3", + "vue": "^2.6.12", + "vue-loader": "^15.9.6", + "vue-scrollto": "^2.20.0", + "vue-template-compiler": "^2.6.12" + }, + "devDependencies": { + "command-line-args": "^5.1.1", + "webpack": "^5.12.3", + "webpack-cli": "^4.3.1", + "webpack-dev-server": "^3.10.3" + } +} diff --git a/resources/[core]/menuv/source/VERSION b/resources/[core]/menuv/source/VERSION new file mode 100644 index 0000000..325d5ae --- /dev/null +++ b/resources/[core]/menuv/source/VERSION @@ -0,0 +1 @@ +1.5-beta \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/fxmanifest.lua b/resources/[core]/menuv/source/app/fxmanifest.lua new file mode 100644 index 0000000..f563f0f --- /dev/null +++ b/resources/[core]/menuv/source/app/fxmanifest.lua @@ -0,0 +1,37 @@ +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +fx_version 'cerulean' +game 'gta5' +lua54 'yes' + +name 'MenuV' +version '1.0.0' +description 'FiveM menu library for creating menu\'s' +author 'ThymonA' +contact 'contact@arens.io' +url 'https://github.com/ThymonA/menuv/' + +files { + 'menuv.lua', + 'menuv/components/*.lua', + 'dist/*.html', + 'dist/assets/css/*.css', + 'dist/assets/js/*.js', + 'dist/assets/fonts/*.woff', + 'languages/*.json' +} + +ui_page 'dist/menuv.html' + +client_scripts { + 'config.lua', + 'menuv/components/utilities.lua', + 'menuv/menuv.lua' +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/html/assets/css/main.css b/resources/[core]/menuv/source/app/html/assets/css/main.css new file mode 100644 index 0000000..3b389a3 --- /dev/null +++ b/resources/[core]/menuv/source/app/html/assets/css/main.css @@ -0,0 +1,487 @@ +/* +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +*/ +@import url('https://fonts.googleapis.com/css2?family=Epilogue:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); + +html, +body { + overflow: hidden; + font-family: 'Epilogue', sans-serif; + color: white; + background-color: transparent; +} + +* .hide, +html .hide, +body .hide, +div .hide, +.menuv.default.hide { + display: none !important; + opacity: 0; +} + +.menuv.default { + min-width: 20em; + max-width: 20em; + max-height: 90vh; + margin-top: 1em; + margin-left: 1em; + font-size: 0.85em; +} + +.menuv.default.topcenter { + margin-left: auto; + margin-right: auto; +} + +.menuv.default.topright { + margin-right: 1em; + margin-left: auto; +} + +.menuv.default.centerleft { + position: absolute; + top: 50%; + transform: translateY(-50%); +} + +.menuv.default.center { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.menuv.default.centerright { + position: absolute; + top: 50%; + right: 1em; + transform: translateY(-50%); +} + +.menuv.default.bottomleft { + position: absolute; + bottom: 1em; +} + +.menuv.default.bottomcenter { + position: absolute; + bottom: 1em; + left: 50%; + transform: translateX(-50%); +} + +.menuv.default.bottomright { + position: absolute; + bottom: 1em; + right: 1em; +} + +.menuv.default.size-100 { + zoom: 1; +} +.menuv.default.size-110 { + zoom: 1.1; +} +.menuv.default.size-125 { + zoom: 1.25; +} +.menuv.default.size-150 { + zoom: 1.50; +} +.menuv.default.size-175 { + zoom: 1.75; +} +.menuv.default.size-200 { + zoom: 2; +} + +.menuv.default .menuv-header { + height: 3.5em; + max-height: 3.5em; + line-height: 3.5em; + width: 100%; + text-align: center; + letter-spacing: 0.25em; + font-size: 1.5em; + font-weight: 700; + background-color: black; + overflow: hidden; +} + +.menuv.default .menuv-header strong { + position: relative; + z-index: 1; + color: white; +} + +.menuv.default .menuv-header .menuv-bg-icon { + display: flex; + position: fixed; + max-height: 3.5em; + max-width: 3.5em; + overflow: hidden; + top: 0.6em; + margin-left: 9.8em; +} + +.menuv.default .menuv-header .menuv-bg-icon i, +.menuv.default .menuv-header .menuv-bg-icon svg { + font-size: 5em; + opacity: 0.5; + color: blue; +} + +.menuv.default .menuv-subheader { + background-color: blue; + text-align: left; + font-weight: 700; + font-size: 0.9em; + line-height: 2.5em; + text-transform: uppercase; + padding-left: 1em; + height: 2.5em; + max-height: 2.5em; +} + +.menuv.default .menuv-items { + background-color: rgba(0, 0, 0, 0.65); + padding-top: 0.5em; + padding-bottom: 0.5em; + max-height: 50.75vh; + overflow: hidden; + color: white; +} + +.menuv.default.size-100 .menuv-items { + max-height: 66.1vh; +} + +.menuv.default.size-110 .menuv-items { + max-height: 59.2vh; +} + +.menuv.default.size-125 .menuv-items { + max-height: 50.2vh; +} + +.menuv.default.size-150 .menuv-items { + max-height: 45.8vh; +} + +.menuv.default.size-175 .menuv-items { + max-height: 39vh; +} + +.menuv.default.size-200 .menuv-items { + max-height: 32.2vh; +} + +.menuv.default .menuv-items .menuv-item { + padding: 0.25em 0.50em; + margin: 0; + font-size: 0.9em; + max-height: auto; + height: auto; + min-height: 2em; + vertical-align: middle; + line-height: normal; + color: white; + width: 100%; + min-width: 20em; + max-width: 30em; + border-top: none !important; +} + +.menuv.default .menuv-items .menuv-item i, +.menuv.default .menuv-items .menuv-item svg { + float: right; + margin-top: 0.125em; + font-size: 1.2em; +} + +.menuv.default .menuv-items .menuv-item.active { + padding-right: 0; + padding-left: 0; +} + +.menuv.default .menuv-items .menuv-item.disabled { + opacity: 0.75; + background: #383838; + text-decoration: line-through; +} + +.menuv.default .menuv-items .menuv-item.active i, +.menuv.default .menuv-items .menuv-item.active svg { + color: black; +} + +.menuv.default .menuv-items .item-title { + word-break: break-all; +} + +.menuv.default .menuv-items .menuv-item.active .item-title { + font-weight: bold; +} + +.menuv.default .menuv-items span.menuv-icon { + margin-left: 2.5px; + margin-right: 5px; + border-right: 1px solid white; + padding-right: 5px; + float: left; + width: 2em; + text-align: center; +} + +.menuv.default .menuv-items .flex-left { + justify-content: left; +} + +.menuv.default .menuv-items span.menuv-title { + word-break: break-all; + display: inline-block; + overflow: hidden; + max-height: 2em; + white-space: nowrap; + text-overflow: ellipsis; + max-width: 14em; +} + +.menuv.default .menuv-items .item-icon { + width: 2.5em; + max-width: 2.5em; + margin-right: 5px; +} + +.menuv.default .menuv-items .menuv-item { + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + + align-items: center; + border-top: none !important; +} + +.menuv.default .menuv-items .menuv-item.active span.menuv-icon { + border-right: 1px solid black; +} + +.menuv.default .menuv-items span.menuv-options { + float: right; + font-size: 0.9em; + line-height: 1.85em; + text-transform: uppercase; +} + +.menuv.default .menuv-items .menuv-item.active span.menuv-options { + font-weight: 700; +} + +.menuv.default .menuv-items span.menuv-options i, +.menuv.default .menuv-items span.menuv-options svg { + float: unset; + font-size: unset; +} + +.menuv.default .menuv-items span.menuv-options i:first-child, +.menuv.default .menuv-items span.menuv-options svg:first-child { + margin-right: 0.25em; +} + +.menuv.default .menuv-items span.menuv-options i:last-child, +.menuv.default .menuv-items span.menuv-options svg:last-child { + margin-left: 0.25em; +} + +.menuv.default .menuv-items span.menuv-options span.menuv-btn { + background-color: white; + color: black; + padding: 0.25em 0.5em; + margin: 0.125em; + font-weight: bold; + font-weight: 500; + border-radius: 0.125em; +} + +.menuv.default .menuv-items .menuv-item span.menuv-options span.menuv-btn { + background-color: transparent; + color: white; +} + +.menuv.default .menuv-items .menuv-item.active span.menuv-options span.menuv-btn { + background-color: black; + color: white; +} + +.menuv.default .menuv-items span.menuv-options span.menuv-btn.active { + background-color: blue; + color: white; + font-weight: 700; +} + +.menuv.default .menuv-items .menuv-item.active span.menuv-options span.menuv-btn.active { + background-color: blue; + color: white; +} + +.menuv.default .menuv-items input[type="range"] { + display: flex; + float: right; + -webkit-appearance: none; + max-width: 6.5em; +} + +.menuv.default .menuv-items input[type="range"]:focus { + outline: none; +} + +.menuv.default .menuv-items input[type="range"]::-webkit-slider-runnable-track { + width: 100%; + height: 5px; + cursor: pointer; + box-shadow: 0px 0px 0px #000000; + background: blue; + border-radius: 0; + border: 0px solid #000000; +} + +.menuv.default .menuv-items .menuv-item.active input[type="range"]::-webkit-slider-runnable-track { + background: black; +} + +.menuv.default .menuv-items input[type="range"]::-webkit-slider-thumb { + box-shadow: 0px 0px 0px #000000; + height: 18px; + width: 5px; + border-radius: 0; + border: 1px solid white; + background: rgba(255, 255, 255, 1); + cursor: pointer; + -webkit-appearance: none; + margin-top: -7px; +} + +.menuv.default .menuv-items .menuv-item.active input[type="range"]::-webkit-slider-thumb { + background: blue; + border: 1px solid rgba(0, 0, 255, 0.25); +} + +.menuv.default .menuv-items input[type="range"]:focus::-webkit-slider-runnable-track { + background: blue; +} + +.menuv.default .menuv-items .menuv-item.active input[type="range"]:focus::-webkit-slider-runnable-track { + background: black; +} + +.menuv.default .menuv-items .menuv-desc { + display: none; + opacity: 0; + background-color: rgba(0, 0, 0, 0.65); + color: white; + position: absolute; + width: 100%; + max-width: 17.5em; + margin-left: 17.5em; + margin-top: -0.25em; + font-weight: 400; + font-size: 0.9em; + padding: 0.75em 1em; + line-height: 1.25em; + border-left: 0.375em solid blue; +} + +.menuv.default .menuv-items .menuv-item.active .menuv-desc { + display: initial; + opacity: 1; +} + +.menuv.default .menuv-items .menuv-desc strong { + color: white; +} + +.menuv.default .menuv-items .menuv-desc table { + margin-left: -0.75em; + width: calc(100% + 0.75em); +} + +.menuv.default .menuv-items .menuv-desc table th { + color: white; + padding: 2px 5px; +} + +.menuv.default .menuv-items .menuv-desc table td { + padding: 2px 5px; +} + +.menuv.default .menuv-items .menuv-label { + float: right; + font-size: 1.125em; + font-weight: 800; +} + +.menuv.default .menuv-pagination { + padding: 0.5em; + max-width: 20em; + width: 100%; + text-align: center; + position: relative; + border-top: 2px solid white; + margin-top: 1em; +} + +.menuv.default .menuv-pagination .menu-pagination-option { + display: inline-block; + height: 1.5em; + width: 3em; + background-color: white; + color: black; + text-align: center; + border-radius: 2.5px; + margin-left: 0.25em; + margin-right: 0.25em; + font-size: 0.8em; +} + +.menuv.default .menuv-pagination .menu-pagination-option.active { + background-color: red; + color: white; +} + +.menuv.default .menuv-pagination .menu-pagination-ellipsis { + display: inline-block; + height: 1.5em; + width: 1.5em; + background-color: transparent; + color: white; + text-align: center; +} + +.menuv.default .menuv-description { + background-color: rgba(0, 0, 0, 0.65); + width: 100%; + max-width: 20em; + padding: 0.5em 1em; + margin-top: 0.5em; + text-align: center; + text-transform: uppercase; +} + +.menuv.default .menuv-description strong { + color: white; + font-size: 0.8em; + font-weight: 400; +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/html/assets/css/native_theme.css b/resources/[core]/menuv/source/app/html/assets/css/native_theme.css new file mode 100644 index 0000000..ab5db19 --- /dev/null +++ b/resources/[core]/menuv/source/app/html/assets/css/native_theme.css @@ -0,0 +1,507 @@ +/* +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +*/ +@font-face { + font-family: 'SignPainter'; + font-style: normal; + font-weight: normal; + src: local('../fonts/SignPainter'), url('../fonts/SignPainterHouseScript.woff') format('woff'); +} + +@font-face { + font-family: 'TTCommons'; + font-style: normal; + font-weight: normal; + src: local('../fonts/TTCommons'), url('../fonts/TTCommons.woff') format('woff'); +} + +html, +body { + overflow: hidden; + color: white; + background-color: transparent; +} + +* .hide, +html .hide, +body .hide, +div .hide, +.menuv.native.hide { + display: none !important; + opacity: 0; +} + +.menuv.native { + min-width: 30em; + max-width: 30em; + max-height: 90vh; + margin-top: 1em; + margin-left: 1em; + font-size: 0.85em; +} + +.menuv.native.topcenter { + margin-left: auto; + margin-right: auto; +} + +.menuv.native.topright { + margin-right: 1em; + margin-left: auto; +} + +.menuv.native.centerleft { + position: absolute; + top: 50%; + transform: translateY(-50%); +} + +.menuv.native.center { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.menuv.native.centerright { + position: absolute; + top: 50%; + right: 1em; + transform: translateY(-50%); +} + +.menuv.native.bottomleft { + position: absolute; + bottom: 1em; +} + +.menuv.native.bottomcenter { + position: absolute; + bottom: 1em; + left: 50%; + transform: translateX(-50%); +} + +.menuv.native.bottomright { + position: absolute; + bottom: 1em; + right: 1em; +} + +.menuv.native.size-100 { + zoom: 1; +} +.menuv.native.size-110 { + zoom: 1.1; +} +.menuv.native.size-125 { + zoom: 1.25; +} +.menuv.native.size-150 { + zoom: 1.50; +} +.menuv.native.size-175 { + zoom: 1.75; +} +.menuv.native.size-200 { + zoom: 2; +} + +.menuv.native .menuv-header { + height: 2em; + max-height: 4.25em; + line-height: 2.25em; + width: 100%; + text-align: center; + letter-spacing: auto; + font-size: 3.5em; + font-weight: normal; + font-family: 'SignPainter'; + background-color: black; + overflow: hidden; +} + +.menuv.native .menuv-header strong { + position: relative; + z-index: 1; + color: white; + max-width: 1em; + font-weight: normal; +} + +.menuv.native .menuv-header .menuv-bg-icon { + display: flex; + position: fixed; + max-height: 4.25em; + max-width: 4.25em; + overflow: hidden; + top: 0.6em; + margin-left: 9.8em; +} + +.menuv.native .menuv-header .menuv-bg-icon i, +.menuv.native .menuv-header .menuv-bg-icon svg { + font-size: 5em; + opacity: 0.5; + color: blue; +} + +.menuv.native .menuv-subheader { + background-color: black !important; + text-align: left; + font-weight: 500; + font-size: 1.125em; + line-height: auto; + text-transform: uppercase; + padding-top: 0.125em; + padding-bottom: 0.375em; + padding-left: 0.5em; + height: auto; + color: #2e69bb !important; +} + +.menuv.native .menuv-items { + background-color: rgba(0, 0, 0, 0.65); + padding-bottom: 0.5em; + max-height: 50.75vh; + overflow: hidden; + color: white; +} + +.menuv.native.size-100 .menuv-items { + max-height: 66.1vh; +} + +.menuv.native.size-110 .menuv-items { + max-height: 59.2vh; +} + +.menuv.native.size-125 .menuv-items { + max-height: 50.2vh; +} + +.menuv.native.size-150 .menuv-items { + max-height: 45.8vh; +} + +.menuv.native.size-175 .menuv-items { + max-height: 39vh; +} + +.menuv.native.size-200 .menuv-items { + max-height: 32.2vh; +} + +.menuv.native .menuv-items .menuv-item { + padding: 0.25em 0.50em; + margin: 0; + font-size: 1em; + max-height: auto; + height: auto; + line-height: 1.25em; + color: white; + width: 100%; + min-width: 100%; + max-width: 30em; +} + +.menuv.native .menuv-items .flex-left { + justify-content: left; +} + +.menuv.native .menuv-items .item-title { + font-family: 'TTCommons'; + font-weight: 400; + font-size: 1.35em; + padding-top: 0.25em; + word-break: break-all; +} + +.menuv.native .menuv-items .item-icon { + width: 2.5em; + max-width: 2.5em; + margin-right: 5px; +} + +.menuv.native .menuv-items .menuv-item.disabled .item-icon { + text-decoration: none !important; +} + +.menuv.native .menuv-items .menuv-item i, +.menuv.native .menuv-items .menuv-item svg { + float: right; + margin-top: 0.125em; + font-size: 1.2em; +} + +.menuv.native .menuv-items .menuv-item.active { + padding-right: 0; + padding-left: 0; +} + +.menuv.native .menuv-items .menuv-item.disabled { + opacity: 0.75; + background: #383838; +} + +.menuv.native .menuv-items .menuv-item.active i, +.menuv.native .menuv-items .menuv-item.active svg { + color: black; +} + +.menuv.native .menuv-items span.menuv-icon { + margin-left: 2.5px; + margin-right: 5px; + border-right: 1px solid white; + padding-right: 5px; + float: left; + width: 2em; + text-align: center; +} + +.menuv.native .menuv-items span.menuv-title { + word-break: break-all; + display: inline-block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 1.25em; + font-weight: 600; + letter-spacing: normal; + padding: none; + margin: none; +} + +.menuv.native .menuv-items .menuv-item.active span.menuv-icon { + border-right: 1px solid black; +} + +.menuv.native .menuv-items .menuv-item { + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + + align-items: center; + border-top: none !important; +} + +.menuv.native .menuv-items span.menuv-options { + float: right; + font-size: 0.9em; + vertical-align: middle; + text-transform: uppercase; +} + +.menuv.native .menuv-items .menuv-item.active span.menuv-options { + font-weight: 700; +} + +.menuv.native .menuv-items span.menuv-options i, +.menuv.native .menuv-items span.menuv-options svg { + float: unset; + font-size: unset; +} + +.menuv.native .menuv-items span.menuv-options i:first-child, +.menuv.native .menuv-items span.menuv-options svg:first-child { + margin-right: 0.25em; +} + +.menuv.native .menuv-items span.menuv-options i:last-child, +.menuv.native .menuv-items span.menuv-options svg:last-child { + margin-left: 0.25em; +} + +.menuv.native .menuv-items span.menuv-options span.menuv-btn { + background-color: white; + color: black; + padding: 0.25em 0.5em; + margin: 0.125em; + font-weight: bold; + font-weight: 500; + border-radius: 0.125em; +} + +.menuv.native .menuv-items .menuv-item span.menuv-options span.menuv-btn { + background-color: transparent; + color: white; +} + +.menuv.native .menuv-items .menuv-item.active span.menuv-options span.menuv-btn { + background-color: black; + color: white; +} + +.menuv.native .menuv-items span.menuv-options span.menuv-btn.active { + background-color: blue; + color: white; + font-weight: 700; +} + +.menuv.native .menuv-items .menuv-item.active span.menuv-options span.menuv-btn.active { + background-color: blue; + color: white; +} + +.menuv.native .menuv-items input[type="range"] { + display: flex; + float: right; + -webkit-appearance: none; + max-width: 6.5em; + margin-top: 0.15em; +} + +.menuv.native .menuv-items input[type="range"]:focus { + outline: none; +} + +.menuv.native .menuv-items input[type="range"]::-webkit-slider-runnable-track { + width: 100%; + height: 5px; + cursor: pointer; + box-shadow: 0px 0px 0px #000000; + background: blue; + border-radius: 0; + border: 0px solid #000000; +} + +.menuv.native .menuv-items .menuv-item.active input[type="range"]::-webkit-slider-runnable-track { + background: black; +} + +.menuv.native .menuv-items input[type="range"]::-webkit-slider-thumb { + box-shadow: 0px 0px 0px #000000; + height: 18px; + width: 5px; + border-radius: 0; + border: 1px solid white; + background: rgba(255, 255, 255, 1); + cursor: pointer; + -webkit-appearance: none; + margin-top: -7px; +} + +.menuv.native .menuv-items .menuv-item.active input[type="range"]::-webkit-slider-thumb { + background: blue; + border: 1px solid rgba(0, 0, 255, 0.25); +} + +.menuv.native .menuv-items input[type="range"]:focus::-webkit-slider-runnable-track { + background: blue; +} + +.menuv.native .menuv-items .menuv-item.active input[type="range"]:focus::-webkit-slider-runnable-track { + background: black; +} + +.menuv.native .menuv-items .menuv-desc { + display: none; + opacity: 0; + background-color: rgba(0, 0, 0, 0.65); + color: white; + position: absolute; + width: 100%; + max-width: 17.5em; + margin-left: 17.5em; + margin-top: -0.25em; + font-weight: 400; + font-size: 0.9em; + padding: 0.75em 1em; + line-height: 1.25em; + border-left: 0.375em solid blue; +} + +.menuv.native .menuv-items .menuv-item.active .menuv-desc { + display: initial; + opacity: 1; +} + +.menuv.native .menuv-items .menuv-desc strong { + color: white; +} + +.menuv.native .menuv-items .menuv-desc table { + margin-left: -0.75em; + width: calc(100% + 0.75em); +} + +.menuv.native .menuv-items .menuv-desc table th { + color: white; + padding: 2px 5px; +} + +.menuv.native .menuv-items .menuv-desc table td { + padding: 2px 5px; +} + +.menuv.native .menuv-items .menuv-label { + float: right; + font-size: 1.125em; + font-weight: 800; +} + +.menuv.native .menuv-pagination { + padding: 0.5em; + max-width: 20em; + width: 100%; + text-align: center; + position: relative; + border-top: 2px solid white; + margin-top: 1em; +} + +.menuv.native .menuv-pagination .menu-pagination-option { + display: inline-block; + height: 1.5em; + width: 3em; + background-color: white; + color: black; + text-align: center; + border-radius: 2.5px; + margin-left: 0.25em; + margin-right: 0.25em; + font-size: 0.8em; +} + +.menuv.native .menuv-pagination .menu-pagination-option.active { + background-color: red; + color: white; +} + +.menuv.native .menuv-pagination .menu-pagination-ellipsis { + display: inline-block; + height: 1.5em; + width: 1.5em; + background-color: transparent; + color: white; + text-align: center; +} + +.menuv.native .menuv-description { + border-top: 2px solid black; + background-color: rgba(0, 0, 0, 0.65); + width: 100%; + max-width: 30em; + padding: 0.5em 1em; + margin-top: 0.5em; + text-align: left; +} + +.menuv.native .menuv-description strong { + color: white; + font-family: 'TTCommons'; + font-weight: 400; + font-size: 1.15em; +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/html/assets/fonts/SignPainterHouseScript.woff b/resources/[core]/menuv/source/app/html/assets/fonts/SignPainterHouseScript.woff new file mode 100644 index 0000000..3cc8ffb Binary files /dev/null and b/resources/[core]/menuv/source/app/html/assets/fonts/SignPainterHouseScript.woff differ diff --git a/resources/[core]/menuv/source/app/html/assets/fonts/TTCommons.woff b/resources/[core]/menuv/source/app/html/assets/fonts/TTCommons.woff new file mode 100644 index 0000000..0b4fb47 Binary files /dev/null and b/resources/[core]/menuv/source/app/html/assets/fonts/TTCommons.woff differ diff --git a/resources/[core]/menuv/source/app/html/menuv.html b/resources/[core]/menuv/source/app/html/menuv.html new file mode 100644 index 0000000..5248057 --- /dev/null +++ b/resources/[core]/menuv/source/app/html/menuv.html @@ -0,0 +1,34 @@ + + + + + + MenuV + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/index.d.ts b/resources/[core]/menuv/source/app/index.d.ts new file mode 100644 index 0000000..dbc9e98 --- /dev/null +++ b/resources/[core]/menuv/source/app/index.d.ts @@ -0,0 +1,16 @@ +/** +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +*/ +declare module '*.vue' { + import VUE from 'vue'; + + export default VUE +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/load.ts b/resources/[core]/menuv/source/app/load.ts new file mode 100644 index 0000000..d38a602 --- /dev/null +++ b/resources/[core]/menuv/source/app/load.ts @@ -0,0 +1,18 @@ +/** +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +*/ +import VUE from 'vue'; +import menuv from './vue_templates/menuv.vue'; + +const instance = new VUE({ + el: '#menuv', + render: h => h(menuv) +}); \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/lua_components/item.lua b/resources/[core]/menuv/source/app/lua_components/item.lua new file mode 100644 index 0000000..626098a --- /dev/null +++ b/resources/[core]/menuv/source/app/lua_components/item.lua @@ -0,0 +1,273 @@ +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +local assert = assert +---@type Utilities +local U = assert(Utilities) +local type = assert(type) +local pairs = assert(pairs) +local lower = assert(string.lower) +local upper = assert(string.upper) +local sub = assert(string.sub) +local pack = assert(table.pack) +local unpack = assert(table.unpack) +local insert = assert(table.insert) +local rawset = assert(rawset) +local rawget = assert(rawget) +local setmetatable = assert(setmetatable) + +--- FiveM globals +local CreateThread = assert(Citizen.CreateThread) + +--- Create a new menu item +---@param info table Menu information +---@return Item New item +function CreateMenuItem(info) + info = U:Ensure(info, {}) + + local item = { + ---@type Menu|nil + __menu = U:Ensure(info.__Menu or info.__menu, { __class = 'Menu', __type = 'Menu' }, true) or nil, + ---@type string + __event = U:Ensure(info.PrimaryEvent or info.primaryEvent, 'unknown'), + ---@type string + UUID = U:UUID(), + ---@type string + Icon = U:Ensure(info.Icon or info.icon, 'none'), + ---@type string + Label = U:Ensure(info.Label or info.label, ''), + ---@type string + Description = U:Ensure(info.Description or info.description, ''), + ---@type any + Value = info.Value or info.value, + ---@type table[] + Values = {}, + ---@type number + Min = U:Ensure(info.Min or info.min, 0), + ---@type number + Max = U:Ensure(info.Max or info.max, 0), + ---@type boolean + Disabled = U:Ensure(info.Disabled or info.disabled, false), + ---@type table + Events = U:Ensure(info.Events or info.events, {}), + ---@type boolean + SaveOnUpdate = U:Ensure(info.SaveOnUpdate or info.saveOnUpdate, false), + ---@param t Item + ---@param event string Name of Event + Trigger = function(t, event, ...) + event = lower(U:Ensure(event, 'unknown')) + + if (event == 'unknown') then return end + if (U:StartsWith(event, 'on')) then + event = 'On' .. sub(event, 3):gsub('^%l', upper) + else + event = 'On' .. event:gsub('^%l', upper) + end + + if (not U:Any(event, (t.Events or {}), 'key')) then + return + end + + local args = pack(...) + + for _, v in pairs(t.Events[event]) do + CreateThread(function() + v(t, unpack(args)) + end) + end + end, + ---@param t Item + ---@param event string Name of event + ---@param func function|Menu Function or Menu to trigger + On = function(t, event, func) + event = lower(U:Ensure(event, 'unknown')) + + if (event == 'unknown') then return end + if (U:StartsWith(event, 'on')) then + event = 'On' .. sub(event, 3):gsub('^%l', upper) + else + event = 'On' .. event:gsub('^%l', upper) + end + + if (not U:Any(event, (t.Events or {}), 'key')) then + return + end + + local _type = U:Typeof(func) + + if (_type == 'Menu') then + local menu_t = { + __class = 'function', + __type = 'function', + func = function(t) MenuV:OpenMenu(t.uuid) end, + uuid = func.UUID or func.uuid or U:UUID() + } + local menu_mt = { __index = menu_t, __call = function(t) t:func() end } + local menu_item = setmetatable(menu_t, menu_mt) + + insert(t.Events[event], menu_item) + + return + end + + func = U:Ensure(func, function() end) + + insert(t.Events[event], func) + end, + ---@param t Item + ---@param k string + ---@param v string + Validate = U:Ensure(info.Validate or info.validate, function(t, k, v) + return true + end), + ---@param t Item + ---@param k string + ---@param v string + Parser = U:Ensure(info.Parser or info.parser, function(t, k, v) + return v + end), + ---@param t Item + ---@param k string + ---@param v string + NewIndex = U:Ensure(info.NewIndex or info.newIndex, function(t, k, v) + end), + ---@param t Item + ---@return any + GetValue = function(t) + local itemType = U:Ensure(t.__type, 'unknown') + + if (itemType == 'button' or itemType == 'menu' or itemType == 'unknown') then + return t.Value + end + + if (itemType == 'checkbox' or itemType == 'confirm') then + return U:Ensure(t.Value, false) + end + + if (itemType == 'slider') then + for _, item in pairs(t.Values) do + if (item.Value == t.Value) then + return item.Value + end + end + + return nil + end + + if (itemType == 'range') then + local rawValue = U:Ensure(t.Value, 0) + + if (t.Min > rawValue) then + return t.Min + end + + if (t.Max < rawValue) then + return t.Max + end + + return rawValue + end + end, + ---@return Menu|nil + GetParentMenu = function(t) + return t.__menu or nil + end + } + + item.Events.OnEnter = {} + item.Events.OnLeave = {} + item.Events.OnUpdate = {} + item.Events.OnDestroy = {} + + local mt = { + __index = function(t, k) + return rawget(t.data, k) + end, + __tostring = function(t) + return t.UUID + end, + __call = function(t, ...) + if (t.Trigger ~= nil and type(t.Trigger) == 'function') then + t:Trigger(t.__event, ...) + end + end, + __newindex = function(t, k, v) + local key = U:Ensure(k, 'unknown') + local oldValue = rawget(t.data, k) + local checkInput = t.Validate ~= nil and type(t.Validate) == 'function' + local inputParser = t.Parser ~= nil and type(t.Parser) == 'function' + local updateIndexTrigger = t.NewIndex ~= nil and type(t.NewIndex) == 'function' + + if (checkInput) then + local result = t:Validate(key, v) + result = U:Ensure(result, true) + + if (not result) then + return + end + end + + if (inputParser) then + local parsedValue = t:Parser(key, v) + + v = parsedValue or v + end + + rawset(t.data, k, v) + + if (updateIndexTrigger) then + t:NewIndex(key, v) + end + + if (t.__menu ~= nil and U:Typeof(t.__menu) == 'Menu' and t.__menu.Trigger ~= nil and U:Typeof( t.__menu.Trigger) == 'function') then + t.__menu:Trigger('update', 'UpdateItem', t) + end + + if (key == 'Value' and t.Trigger ~= nil and type(t.Trigger) == 'function') then + t:Trigger('update', key, v, oldValue) + end + end, + __metatable = 'MenuV' + } + + ---@class Item + ---@filed private __event string Name of primary event + ---@field public UUID string UUID of Item + ---@field public Icon string Icon/Emoji for Item + ---@field public Label string Label of Item + ---@field public Description string Description of Item + ---@field public Value any Value of Item + ---@field public Values table[] List of values + ---@field public Min number Min range value + ---@field public Max number Max range value + ---@field public Disabled boolean Disabled state of Item + ---@field public SaveOnUpdate boolean Save on `update` + ---@field private Events table List of registered `on` events + ---@field public Trigger fun(t: Item, event: string) + ---@field public On fun(t: Item, event: string, func: function|Menu) + ---@field public Validate fun(t: Item, k: string, v:any) + ---@field public NewIndex fun(t: Item, k: string, v: any) + ---@field public Parser fun(t: Item, k: string, v: any) + ---@field public GetValue fun(t: Item):any + ---@field public GetParentMenu func(t: Item):Menu|nil + local i = setmetatable({ data = item, __class = 'Item', __type = U:Ensure(info.Type or info.type, 'unknown') }, mt) + + for k, v in pairs(info or {}) do + local key = U:Ensure(k, 'unknown') + + if (key == 'unknown') then return end + + i:On(key, v) + end + + return i +end + +_ENV.CreateMenuItem = CreateMenuItem +_G.CreateMenuItem = CreateMenuItem \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/lua_components/menu.lua b/resources/[core]/menuv/source/app/lua_components/menu.lua new file mode 100644 index 0000000..7055997 --- /dev/null +++ b/resources/[core]/menuv/source/app/lua_components/menu.lua @@ -0,0 +1,1080 @@ +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +local assert = assert +---@type Utilities +local U = assert(Utilities) +local type = assert(type) +local next = assert(next) +local pairs = assert(pairs) +local ipairs = assert(ipairs) +local lower = assert(string.lower) +local upper = assert(string.upper) +local sub = assert(string.sub) +local insert = assert(table.insert) +local remove = assert(table.remove) +local pack = assert(table.pack) +local unpack = assert(table.unpack) +local encode = assert(json.encode) +local rawset = assert(rawset) +local rawget = assert(rawget) +local setmetatable = assert(setmetatable) + +--- FiveM globals +local GET_CURRENT_RESOURCE_NAME = assert(GetCurrentResourceName) +local GET_INVOKING_RESOURCE = assert(GetInvokingResource) +local HAS_STREAMED_TEXTURE_DICT_LOADED = assert(HasStreamedTextureDictLoaded) +local REQUEST_STREAMED_TEXTURE_DICT = assert(RequestStreamedTextureDict) + +--- MenuV local variable +local current_resource = GET_CURRENT_RESOURCE_NAME() + +--- Returns default empty table for items +---@returns items +function CreateEmptyItemsTable(data) + data = U:Ensure(data, {}) + data.ToTable = function(t) + local tempTable = {} + local index = 0 + + for _, option in pairs(t) do + index = index + 1 + + tempTable[index] = { + index = index, + type = option.__type, + uuid = U:Ensure(option.UUID, 'unknown'), + icon = U:Ensure(option.Icon, 'none'), + label = U:Ensure(option.Label, 'Unknown'), + description = U:Ensure(option.Description, ''), + value = 'none', + values = {}, + min = U:Ensure(option.Min, 0), + max = U:Ensure(option.Max, 0), + disabled = U:Ensure(option.Disabled, false) + } + + if (option.__type == 'button' or option.__type == 'menu') then + tempTable[index].value = 'none' + elseif (option.__type == 'checkbox' or option.__type == 'confirm') then + tempTable[index].value = U:Ensure(option.Value, false) + elseif (option.__type == 'range') then + tempTable[index].value = U:Ensure(option.Value, 0) + + if (tempTable[index].value <= tempTable[index].min) then + tempTable[index].value = tempTable[index].min + elseif (tempTable[index].value >= tempTable[index].max) then + tempTable[index].value = tempTable[index].max + end + elseif (option.__type == 'slider') then + tempTable[index].value = 0 + end + + local _values = U:Ensure(option.Values, {}) + local vIndex = 0 + + for valueIndex, value in pairs(_values) do + vIndex = vIndex + 1 + + tempTable[index].values[vIndex] = { + label = U:Ensure(value.Label, 'Option'), + description = U:Ensure(value.Description, ''), + value = vIndex + } + + if (option.__type == 'slider') then + if (U:Ensure(option.Value, 0) == valueIndex) then + tempTable[index].value = (valueIndex - 1) + end + end + end + end + + return tempTable + end + data.ItemToTable = function(t, i) + local tempTable = {} + local index = 0 + local uuid = U:Typeof(i) == 'Item' and i.UUID or U:Ensure(i, '00000000-0000-0000-0000-000000000000') + + for _, option in pairs(t) do + index = index + 1 + + if (option.UUID == uuid) then + tempTable = { + index = index, + type = option.__type, + uuid = U:Ensure(option.UUID, 'unknown'), + icon = U:Ensure(option.Icon, 'none'), + label = U:Ensure(option.Label, 'Unknown'), + description = U:Ensure(option.Description, ''), + value = 'none', + values = {}, + min = U:Ensure(option.Min, 0), + max = U:Ensure(option.Max, 0), + disabled = U:Ensure(option.Disabled, false) + } + + if (option.__type == 'button' or option.__type == 'menu') then + tempTable.value = 'none' + elseif (option.__type == 'checkbox' or option.__type == 'confirm') then + tempTable.value = U:Ensure(option.Value, false) + elseif (option.__type == 'range') then + tempTable.value = U:Ensure(option.Value, 0) + + if (tempTable.value <= tempTable.min) then + tempTable.value = tempTable.min + elseif (tempTable.value >= tempTable.max) then + tempTable.value = tempTable.max + end + elseif (option.__type == 'slider') then + tempTable.value = 0 + end + + local _values = U:Ensure(option.Values, {}) + local vIndex = 0 + + for valueIndex, value in pairs(_values) do + vIndex = vIndex + 1 + + tempTable.values[vIndex] = { + label = U:Ensure(value.Label, 'Option'), + description = U:Ensure(value.Description, ''), + value = vIndex + } + + if (option.__type == 'slider') then + if (U:Ensure(option.Value, 0) == valueIndex) then + tempTable.value = (valueIndex - 1) + end + end + end + + return tempTable + end + end + + return tempTable + end + data.AddItem = function(t, item) + if (U:Typeof(item) == 'Item') then + local newIndex = #(U:Ensure(rawget(t, 'data'), {})) + 1 + + rawset(t.data, newIndex, item) + + if (t.Trigger ~= nil and type(t.Trigger) == 'function') then + t:Trigger('update', 'AddItem', item) + end + end + + return U:Ensure(rawget(t, 'data'), {}) + end + + local item_pairs = function(t, k) + local _k, _v = next((rawget(t, 'data') or {}), k) + + if (_v ~= nil and type(_v) ~= 'table') then + return item_pairs(t, _k) + end + + return _k, _v + end + + local item_ipairs = function(t, k) + local _k, _v = next((rawget(t, 'data') or {}), k) + + if (_v ~= nil and (type(_v) ~= 'table' or type(_k) ~= 'number')) then + return item_ipairs(t, _k) + end + + return _k, _v + end + + _G.item_pairs = item_pairs + _ENV.item_pairs = item_pairs + + ---@class items + return setmetatable({ data = data, Trigger = nil }, { + __index = function(t, k) + return rawget(t.data, k) + end, + __newindex = function(t, k, v) + local oldValue = rawget(t.data, k) + + rawset(t.data, k, v) + + if (t.Trigger ~= nil and type(t.Trigger) == 'function') then + if (oldValue == nil) then + t:Trigger('update', 'AddItem', v) + elseif (oldValue ~= nil and v == nil) then + t:Trigger('update', 'RemoveItem', oldValue) + elseif (oldValue ~= v) then + t:Trigger('update', 'UpdateItem', v, oldValue) + end + end + end, + __call = function(t, func) + rawset(t, 'Trigger', U:Ensure(func, function() end)) + end, + __pairs = function(t) + local k = nil + + return function() + local v + + k, v = item_pairs(t, k) + + return k, v + end, t, nil + end, + __ipairs = function(t) + local k = nil + + return function() + local v + + k, v = item_ipairs(t, k) + + return k, v + end, t, 0 + end, + __len = function(t) + local items = U:Ensure(rawget(t, 'data'), {}) + local itemCount = 0 + + for _, v in pairs(items) do + if (U:Typeof(v) == 'Item') then + itemCount = itemCount + 1 + end + end + + return itemCount + end + }) +end + +--- Load a texture dictionary if not already loaded +---@param textureDictionary string Name of texture dictionary +local function LoadTextureDictionary(textureDictionary) + textureDictionary = U:Ensure(textureDictionary, 'menuv') + + if (HAS_STREAMED_TEXTURE_DICT_LOADED(textureDictionary)) then return end + + REQUEST_STREAMED_TEXTURE_DICT(textureDictionary, true) +end + +--- Create a new menu item +---@param info table Menu information +---@return Menu New item +function CreateMenu(info) + info = U:Ensure(info, {}) + + local namespace = U:Ensure(info.Namespace or info.namespace, 'unknown') + local namespace_available = MenuV:IsNamespaceAvailable(namespace) + + if (not namespace_available) then + error(("[MenuV] Namespace '%s' is already taken, make sure it is unique."):format(namespace)) + end + + local theme = lower(U:Ensure(info.Theme or info.theme, 'default')) + + if (theme ~= 'default' and theme ~= 'native') then + theme = 'default' + end + + if (theme == 'native') then + info.R, info.G, info.B = 255, 255, 255 + info.r, info.g, info.b = 255, 255, 255 + end + + local item = { + ---@type string + Namespace = namespace, + ---@type boolean + IsOpen = false, + ---@type string + UUID = U:UUID(), + ---@type string + Title = not (info.Title or info.title) and '‏‏‎ ‎' or U:Ensure(info.Title or info.title, 'MenuV'), + ---@type string + Subtitle = U:Ensure(info.Subtitle or info.subtitle, ''), + ---@type string | "'topleft'" | "'topcenter'" | "'topright'" | "'centerleft'" | "'center'" | "'centerright'" | "'bottomleft'" | "'bottomcenter'" | "'bottomright'" + Position = U:Ensure(info.Position or info.position, 'topleft'), + ---@type table + Color = { + R = U:Ensure(info.R or info.r, 0), + G = U:Ensure(info.G or info.g, 0), + B = U:Ensure(info.B or info.b, 255) + }, + ---@type string | "'size-100'" | "'size-110'" | "'size-125'" | "'size-150'" | "'size-175'" | "'size-200'" + Size = U:Ensure(info.Size or info.size, 'size-110'), + ---@type string + Dictionary = U:Ensure(info.Dictionary or info.dictionary, 'menuv'), + ---@type string + Texture = U:Ensure(info.Texture or info.texture, 'default'), + ---@type table + Events = U:Ensure(info.Events or info.events, {}), + ---@type string + Theme = theme, + ---@type Item[] + Items = CreateEmptyItemsTable({}), + ---@param t Menu + ---@param event string Name of Event + Trigger = function(t, event, ...) + event = lower(U:Ensure(event, 'unknown')) + + if (event == 'unknown') then return end + if (U:StartsWith(event, 'on')) then + event = 'On' .. sub(event, 3):gsub('^%l', upper) + else + event = 'On' .. event:gsub('^%l', upper) + end + + if (not U:Any(event, (t.Events or {}), 'key')) then + return + end + + if (event == 'OnOpen') then rawset(t, 'IsOpen', true) + elseif (event == 'OnClose') then rawset(t, 'IsOpen', false) end + + local args = pack(...) + + for _, v in pairs(t.Events[event]) do + if (type(v) == 'table' and U:Typeof(v.func) == 'function') then + CreateThread(function() + if (event == 'OnClose') then + v.func(t, unpack(args)) + else + local threadId = coroutine.running() + + if (threadId ~= nil) then + insert(t.data.Threads, threadId) + + v.func(t, unpack(args)) + + for i = 0, #(t.data.Threads or {}), 1 do + if (t.data.Threads[i] == threadId) then + remove(t.data.Threads, i) + return + end + end + end + end + end) + end + end + end, + ---@type thread[] + Threads = {}, + ---@param t Menu + DestroyThreads = function(t) + for _, threadId in pairs(t.data.Threads or {}) do + local threadStatus = coroutine.status(threadId) + + if (threadStatus ~= nil and threadStatus ~= 'dead') then + coroutine.close(threadId) + end + end + + t.data.Threads = {} + end, + ---@param t Menu + ---@param event string Name of event + ---@param func function|Menu Function or Menu to trigger + ---@return string UUID of event + On = function(t, event, func) + local ir = GET_INVOKING_RESOURCE() + local resource = U:Ensure(ir, current_resource) + + event = lower(U:Ensure(event, 'unknown')) + + if (event == 'unknown') then return end + if (U:StartsWith(event, 'on')) then + event = 'On' .. sub(event, 3):gsub('^%l', upper) + else + event = 'On' .. event:gsub('^%l', upper) + end + + if (not U:Any(event, (t.Events or {}), 'key')) then + return + end + + func = U:Ensure(func, function() end) + + local uuid = U:UUID() + + insert(t.Events[event], { + __uuid = uuid, + __resource = resource, + func = func + }) + + return uuid + end, + ---@param t Menu + ---@param event string Name of event + ---@param uuid string UUID of event + RemoveOnEvent = function(t, event, uuid) + local ir = GET_INVOKING_RESOURCE() + local resource = U:Ensure(ir, current_resource) + + event = lower(U:Ensure(event, 'unknown')) + + if (event == 'unknown') then return end + if (U:StartsWith(event, 'on')) then + event = 'On' .. sub(event, 3):gsub('^%l', upper) + else + event = 'On' .. event:gsub('^%l', upper) + end + + if (not U:Any(event, (t.Events or {}), 'key')) then + return + end + + uuid = U:Ensure(uuid, '00000000-0000-0000-0000-000000000000') + + for i = 1, #t.Events[event], 1 do + if (t.Events[event][i] ~= nil and + t.Events[event][i].__uuid == uuid and + t.Events[event][i].__resource == resource) then + remove(t.Events[event], i) + end + end + end, + ---@param t Item + ---@param k string + ---@param v string + Validate = U:Ensure(info.Validate or info.validate, function(t, k, v) + return true + end), + ---@param t Item + ---@param k string + ---@param v string + Parser = function(t, k, v) + if (k == 'Position' or k == 'position') then + local position = lower(U:Ensure(v, 'topleft')) + + if (U:Any(position, {'topleft', 'topcenter', 'topright', 'centerleft', 'center', 'centerright', 'bottomleft', 'bottomcenter', 'bottomright'}, 'value')) then + return position + else + return 'topleft' + end + end + + return v + end, + ---@param t Item + ---@param k string + ---@param v string + NewIndex = U:Ensure(info.NewIndex or info.newIndex, function(t, k, v) + end), + ---@type function + ---@param t Menu MenuV menu + ---@param info table Information about button + ---@return Item New item + AddButton = function(t, info) + info = U:Ensure(info, {}) + + info.Type = 'button' + info.Events = { OnSelect = {} } + info.PrimaryEvent = 'OnSelect' + info.TriggerUpdate = not U:Ensure(info.IgnoreUpdate or info.ignoreUpdate, false) + info.__menu = t + + if (U:Typeof(info.Value or info.value) == 'Menu') then + info.Type = 'menu' + end + + local item = CreateMenuItem(info) + + if (info.Type == 'menu') then + item:On('select', function() item.Value() end) + end + + if (info.TriggerUpdate) then + t.Items:AddItem(item) + else + local items = rawget(t.data, 'Items') + + if (items) then + local newIndex = #items + 1 + + rawset(items.data, newIndex, item) + + return items.data[newIndex] or item + end + end + + return t.Items[#t.Items] or item + end, + ---@type function + ---@param t Menu MenuV menu + ---@param info table Information about checkbox + ---@return Item New item + AddCheckbox = function(t, info) + info = U:Ensure(info, {}) + + info.Type = 'checkbox' + info.Value = U:Ensure(info.Value or info.value, false) + info.Events = { OnChange = {}, OnCheck = {}, OnUncheck = {} } + info.PrimaryEvent = 'OnCheck' + info.TriggerUpdate = not U:Ensure(info.IgnoreUpdate or info.ignoreUpdate, false) + info.__menu = t + info.NewIndex = function(t, k, v) + if (k == 'Value') then + local value = U:Ensure(v, false) + + if (value) then + t:Trigger('check', t) + else + t:Trigger('uncheck', t) + end + end + end + + local item = CreateMenuItem(info) + + if (info.TriggerUpdate) then + t.Items:AddItem(item) + else + local items = rawget(t.data, 'Items') + + if (items) then + local newIndex = #items + 1 + + rawset(items.data, newIndex, item) + + return items.data[newIndex] or item + end + end + + return t.Items[#t.Items] or item + end, + ---@type function + ---@param t Menu MenuV menu + ---@param info table Information about slider + ---@return SliderItem New slider item + AddSlider = function(t, info) + info = U:Ensure(info, {}) + + info.Type = 'slider' + info.Events = { OnChange = {}, OnSelect = {} } + info.PrimaryEvent = 'OnSelect' + info.TriggerUpdate = not U:Ensure(info.IgnoreUpdate or info.ignoreUpdate, false) + info.__menu = t + + ---@class SliderItem : Item + ---@filed private __event string Name of primary event + ---@field public UUID string UUID of Item + ---@field public Icon string Icon/Emoji for Item + ---@field public Label string Label of Item + ---@field public Description string Description of Item + ---@field public Value any Value of Item + ---@field public Values table[] List of values + ---@field public Min number Min range value + ---@field public Max number Max range value + ---@field public Disabled boolean Disabled state of Item + ---@field private Events table List of registered `on` events + ---@field public Trigger fun(t: Item, event: string) + ---@field public On fun(t: Item, event: string, func: function) + ---@field public Validate fun(t: Item, k: string, v:any) + ---@field public NewIndex fun(t: Item, k: string, v: any) + ---@field public GetValue fun(t: Item):any + ---@field public AddValue fun(t: Item, info: table) + ---@field public AddValues fun(t: Item) + local item = CreateMenuItem(info) + + --- Add a value to slider + ---@param info table Information about slider + function item:AddValue(info) + info = U:Ensure(info, {}) + + local value = { + Label = U:Ensure(info.Label or info.label, 'Value'), + Description = U:Ensure(info.Description or info.description, ''), + Value = info.Value or info.value + } + + insert(self.Values, value) + end + + --- Add values to slider + ---@vararg table[] List of values + function item:AddValues(...) + local arguments = pack(...) + + for _, argument in pairs(arguments) do + if (U:Typeof(argument) == 'table') then + local hasIndex = argument[1] or nil + + if (hasIndex and U:Typeof(hasIndex) == 'table') then + self:AddValues(unpack(argument)) + else + self:AddValue(argument) + end + end + end + end + + local values = U:Ensure(info.Values or info.values, {}) + + if (#values > 0) then + item:AddValues(values) + end + + if (info.TriggerUpdate) then + t.Items:AddItem(item) + else + local items = rawget(t.data, 'Items') + + if (items) then + local newIndex = #items + 1 + + rawset(items.data, newIndex, item) + + return items.data[newIndex] or item + end + end + + return t.Items[#t.Items] or item + end, + ---@type function + ---@param t Menu MenuV menu + ---@param info table Information about range + ---@return RangeItem New Range item + AddRange = function(t, info) + info = U:Ensure(info, {}) + + info.Type = 'range' + info.Events = { OnChange = {}, OnSelect = {}, OnMin = {}, OnMax = {} } + info.PrimaryEvent = 'OnSelect' + info.TriggerUpdate = not U:Ensure(info.IgnoreUpdate or info.ignoreUpdate, false) + info.__menu = t + info.Value = U:Ensure(info.Value or info.value, 0) + info.Min = U:Ensure(info.Min or info.min, 0) + info.Max = U:Ensure(info.Max or info.max, 0) + info.Validate = function(t, k, v) + if (k == 'Value' or k == 'value') then + v = U:Ensure(v, 0) + + if (t.Min > v) then return false end + if (t.Max < v) then return false end + end + + return true + end + + if (info.Min > info.Max) then + local min = info.Min + local max = info.Max + + info.Min = min + info.Max = max + end + + if (info.Value < info.Min) then info.Value = info.Min end + if (info.Value > info.Max) then info.Value = info.Max end + + ---@class RangeItem : Item + ---@filed private __event string Name of primary event + ---@field public UUID string UUID of Item + ---@field public Icon string Icon/Emoji for Item + ---@field public Label string Label of Item + ---@field public Description string Description of Item + ---@field public Value any Value of Item + ---@field public Values table[] List of values + ---@field public Min number Min range value + ---@field public Max number Max range value + ---@field public Disabled boolean Disabled state of Item + ---@field private Events table List of registered `on` events + ---@field public Trigger fun(t: Item, event: string) + ---@field public On fun(t: Item, event: string, func: function) + ---@field public Validate fun(t: Item, k: string, v:any) + ---@field public NewIndex fun(t: Item, k: string, v: any) + ---@field public GetValue fun(t: Item):any + ---@field public SetMinValue fun(t: any) + ---@field public SetMaxValue fun(t: any) + local item = CreateMenuItem(info) + + --- Update min value of range + ---@param input number Minimum value of Range + function item:SetMinValue(input) + input = U:Ensure(input, 0) + + self.Min = input + + if (self.Value < self.Min) then + self.Value = self.Min + end + + if (self.Min > self.Max) then + self.Max = self.Min + end + end + + --- Update max value of range + ---@param input number Minimum value of Range + function item:SetMaxValue(input) + input = U:Ensure(input, 0) + + self.Min = input + + if (self.Value > self.Max) then + self.Value = self.Max + end + + if (self.Min < self.Max) then + self.Min = self.Max + end + end + + if (info.TriggerUpdate) then + t.Items:AddItem(item) + else + local items = rawget(t.data, 'Items') + + if (items) then + local newIndex = #items + 1 + + rawset(items.data, newIndex, item) + + return items.data[newIndex] or item + end + end + + return t.Items[#t.Items] or item + end, + ---@type function + ---@param t Menu MenuV menu + ---@param info table Information about confirm + ---@return ConfirmItem New Confirm item + AddConfirm = function(t, info) + info = U:Ensure(info, {}) + + info.Type = 'confirm' + info.Value = U:Ensure(info.Value or info.value, false) + info.Events = { OnConfirm = {}, OnDeny = {}, OnChange = {} } + info.PrimaryEvent = 'OnConfirm' + info.TriggerUpdate = not U:Ensure(info.IgnoreUpdate or info.ignoreUpdate, false) + info.__menu = t + info.NewIndex = function(t, k, v) + if (k == 'Value') then + local value = U:Ensure(v, false) + + if (value) then + t:Trigger('confirm', t) + else + t:Trigger('deny', t) + end + end + end + + ---@class ConfirmItem : Item + ---@filed private __event string Name of primary event + ---@field public UUID string UUID of Item + ---@field public Icon string Icon/Emoji for Item + ---@field public Label string Label of Item + ---@field public Description string Description of Item + ---@field public Value any Value of Item + ---@field public Values table[] List of values + ---@field public Min number Min range value + ---@field public Max number Max range value + ---@field public Disabled boolean Disabled state of Item + ---@field private Events table List of registered `on` events + ---@field public Trigger fun(t: Item, event: string) + ---@field public On fun(t: Item, event: string, func: function) + ---@field public Validate fun(t: Item, k: string, v:any) + ---@field public NewIndex fun(t: Item, k: string, v: any) + ---@field public GetValue fun(t: Item):any + ---@field public Confirm fun(t: Item) + ---@field public Deny fun(t: Item) + local item = CreateMenuItem(info) + + --- Confirm this item + function item:Confirm() item.Value = true end + --- Deny this item + function item:Deny() item.Value = false end + + if (info.TriggerUpdate) then + t.Items:AddItem(item) + else + local items = rawget(t.data, 'Items') + + if (items) then + local newIndex = #items + 1 + + rawset(items.data, newIndex, item) + + return items.data[newIndex] or item + end + end + + return t.Items[#t.Items] or item + end, + --- Create child menu from properties of this object + ---@param t Menu|string MenuV menu + ---@param overrides table Properties to override in menu object (ignore parent) + ---@param namespace string Namespace of menu + InheritMenu = function(t, overrides, namespace) + return MenuV:InheritMenu(t, overrides, namespace) + end, + --- Add control key for specific menu + ---@param t Menu|string MenuV menu + ---@param action string Name of action + ---@param func function This will be executed + ---@param description string Key description + ---@param defaultType string Default key type + ---@param defaultKey string Default key + AddControlKey = function(t, action, func, description, defaultType, defaultKey) + if (U:Typeof(t.Namespace) ~= 'string' or t.Namespace == 'unknown') then + error('[MenuV] Namespace is required for assigning keys.') + return + end + + MenuV:AddControlKey(t, action, func, description, defaultType, defaultKey) + end, + --- Assign key for opening this menu + ---@param t Menu|string MenuV menu + ---@param defaultType string Default key type + ---@param defaultKey string Default key + OpenWith = function(t, defaultType, defaultKey) + t:AddControlKey('open', function(m) + MenuV:CloseAll(function() + MenuV:OpenMenu(m) + end) + end, MenuV:T('open_menu'):format(t.Namespace), defaultType, defaultKey) + end, + --- Change title of menu + ---@param t Menu + ---@param title string Title of menu + SetTitle = function(t, title) + t.Title = U:Ensure(title, 'MenuV') + end, + --- Change subtitle of menu + ---@param t Menu + ---@param subtitle string Subtitle of menu + SetSubtitle = function(t, subtitle) + t.Subtitle = U:Ensure(subtitle, '') + end, + --- Change subtitle of menu + ---@param t Menu + ---@param position string | "'topleft'" | "'topcenter'" | "'topright'" | "'centerleft'" | "'center'" | "'centerright'" | "'bottomleft'" | "'bottomcenter'" | "'bottomright'" + SetPosition = function(t, position) + t.Position = U:Ensure(position, 'topleft') + end, + --- Clear all Menu items + ---@param t Menu + ClearItems = function(t, update) + update = U:Ensure(update, true) + + local items = CreateEmptyItemsTable({}) + + items(function(_, trigger, key, index, value, oldValue) + t:Trigger(trigger, key, index, value, oldValue) + end) + + rawset(t.data, 'Items', items) + + if (update and t.Trigger ~= nil and type(t.Trigger) == 'function') then + t:Trigger('update', 'Items', items) + end + end, + Open = function(t) + MenuV:OpenMenu(t) + end, + Close = function(t) + MenuV:CloseMenu(t) + end, + --- @see Menu to @see table + ---@param t Menu + ---@return table + ToTable = function(t) + local tempTable = { + theme = U:Ensure(t.Theme, 'default'), + uuid = U:Ensure(t.UUID, '00000000-0000-0000-0000-000000000000'), + title = U:Ensure(t.Title, 'MenuV'), + subtitle = U:Ensure(t.Subtitle, ''), + position = U:Ensure(t.Position, 'topleft'), + size = U:Ensure(t.Size, 'size-110'), + dictionary = U:Ensure(t.Dictionary, 'menuv'), + texture = U:Ensure(t.Texture, 'default'), + color = { + r = U:Ensure(t.Color.R, 0), + g = U:Ensure(t.Color.G, 0), + b = U:Ensure(t.Color.B, 255) + }, + items = {} + } + + local items = rawget(t.data, 'Items') + + if (items ~= nil and items.ToTable ~= nil) then + tempTable.items = items:ToTable() + end + + if (tempTable.color.r <= 0) then tempTable.color.r = 0 end + if (tempTable.color.r >= 255) then tempTable.color.r = 255 end + if (tempTable.color.g <= 0) then tempTable.color.g = 0 end + if (tempTable.color.g >= 255) then tempTable.color.g = 255 end + if (tempTable.color.b <= 0) then tempTable.color.b = 0 end + if (tempTable.color.b >= 255) then tempTable.color.b = 255 end + + return tempTable + end + } + + if (lower(item.Texture) == 'default' and lower(item.Dictionary) == 'menuv' and theme == 'native') then + item.Texture = 'default_native' + end + + item.Events.OnOpen = {} + item.Events.OnClose = {} + item.Events.OnSelect = {} + item.Events.OnUpdate = {} + item.Events.OnSwitch = {} + item.Events.OnChange = {} + item.Events.OnIChange = {} + + if (not U:Any(item.Size, { 'size-100', 'size-110', 'size-125', 'size-150', 'size-175', 'size-200' }, 'value')) then + item.Size = 'size-110' + end + + local mt = { + __index = function(t, k) + return rawget(t.data, k) + end, + ---@param t Menu + __tostring = function(t) + return encode(t:ToTable()) + end, + __call = function(t) + MenuV:OpenMenu(t) + end, + __newindex = function(t, k, v) + local whitelisted = { 'Title', 'Subtitle', 'Position', 'Color', 'R', 'G', 'B', 'Size', 'Dictionary', 'Texture', 'Theme' } + local key = U:Ensure(k, 'unknown') + local oldValue = rawget(t.data, k) + + if (not U:Any(key, whitelisted, 'value') and oldValue ~= nil) then + return + end + + local checkInput = t.Validate ~= nil and type(t.Validate) == 'function' + local inputParser = t.Parser ~= nil and type(t.Parser) == 'function' + local updateIndexTrigger = t.NewIndex ~= nil and type(t.NewIndex) == 'function' + + if (checkInput) then + local result = t:Validate(key, v) + result = U:Ensure(result, true) + + if (not result) then + return + end + end + + if (inputParser) then + local parsedValue = t:Parser(key, v) + + v = parsedValue or v + end + + rawset(t.data, k, v) + + if (key == 'Theme' or key == 'theme') then + local theme_value = string.lower(U:Ensure(v, 'default')) + + if (theme_value == 'native') then + rawset(t.data, 'color', { R = 255, G = 255, B = 255 }) + + local texture = U:Ensure(rawget(t.data, 'Texture'), 'default') + + if (texture == 'default') then + rawset(t.data, 'Texture', 'default_native') + end + elseif (theme_value == 'default') then + local texture = U:Ensure(rawget(t.data, 'Texture'), 'default') + + if (texture == 'default_native') then + rawset(t.data, 'Texture', 'default') + end + end + end + + if (updateIndexTrigger) then + t:NewIndex(key, v) + end + + if (t.Trigger ~= nil and type(t.Trigger) == 'function') then + t:Trigger('update', key, v, oldValue) + end + end, + __len = function(t) + return #t.Items + end, + __pairs = function(t) + return pairs(rawget(t.data, 'Items') or {}) + end, + __ipairs = function(t) + return ipairs(rawget(t.data, 'Items') or {}) + end, + __metatable = 'MenuV', + } + + ---@class Menu + ---@field public IsOpen boolean `true` if menu is open, otherwise `false` + ---@field public UUID string UUID of Menu + ---@field public Title string Title of Menu + ---@field public Subtitle string Subtitle of Menu + ---@field public Position string | "'topleft'" | "'topcenter'" | "'topright'" | "'centerleft'" | "'center'" | "'centerright'" | "'bottomleft'" | "'bottomcenter'" | "'bottomright'" + ---@field public Texture string Name of texture example: "default" + ---@field public Dictionary string Name of dictionary example: "menuv" + ---@field public Color table Color of Menu + ---@field private Events table List of registered `on` events + ---@field public Items Item[] List of items + ---@field public Trigger fun(t: Item, event: string) + ---@field public On fun(t: Menu, event: string, func: function|Menu): string + ---@field public RemoveOnEvent fun(t: Menu, event: string, uuid: string) + ---@field public Validate fun(t: Menu, k: string, v:any) + ---@field public NewIndex fun(t: Menu, k: string, v: any) + ---@field public Parser fun(t: Menu, k: string, v: any) + ---@field public AddButton fun(t: Menu, info: table):Item + ---@field public AddCheckbox fun(t: Menu, info: table):Item + ---@field public AddSlider fun(t: Menu, info: table):SliderItem + ---@field public AddRange fun(t: Menu, info: table):RangeItem + ---@field public AddConfirm fun(t: Menu, info: table):ConfirmItem + ---@field public AddControlKey fun(t: Menu, action: string, func: function, description: string, defaultType: string, defaultKey: string) + ---@field public OpenWith fun(t: Menu, defaultType: string, defaultKey: string) + ---@field public SetTitle fun(t: Menu, title: string) + ---@field public SetSubtitle fun(t: Menu, subtitle: string) + ---@field public SetPosition fun(t: Menu, position: string) + ---@field public ClearItems fun(t: Menu) + ---@field public Open fun(t: Menu) + ---@field public Close fun(t: Menu) + ---@field public ToTable fun(t: Menu):table + local menu = setmetatable({ data = item, __class = 'Menu', __type = 'Menu' }, mt) + + menu.Items(function(items, trigger, key, index, value, oldValue) + menu:Trigger(trigger, key, index, value, oldValue) + end) + + for k, v in pairs(info or {}) do + local key = U:Ensure(k, 'unknown') + + if (key == 'unknown') then return end + + menu:On(key, v) + end + + LoadTextureDictionary(menu.Dictionary) + + return menu +end + +_ENV.CreateMenu = CreateMenu +_G.CreateMenu = CreateMenu diff --git a/resources/[core]/menuv/source/app/lua_components/translations.lua b/resources/[core]/menuv/source/app/lua_components/translations.lua new file mode 100644 index 0000000..b6df8bd --- /dev/null +++ b/resources/[core]/menuv/source/app/lua_components/translations.lua @@ -0,0 +1,35 @@ +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +local assert = assert +local decode = assert(json.decode) + +--- FiveM globals +local LoadResourceFile = assert(LoadResourceFile) + +--- MenuV globals +---@type Utilities +local Utilities = assert(Utilities) + +--- Empty translations table +local translations = {} + +--- Load all translations +local lang = Utilities:Ensure((Config or {}).Language, 'en') +local translations_path = ('languages/%s.json'):format(lang) +local translations_raw = LoadResourceFile('menuv', translations_path) + +if (translations_raw) then + local transFile = decode(translations_raw) + + if (transFile) then translations = Utilities:Ensure(transFile.translations, {}) end +end + +_ENV.translations = translations +_G.translations = translations \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/lua_components/utilities.lua b/resources/[core]/menuv/source/app/lua_components/utilities.lua new file mode 100644 index 0000000..f3832e7 --- /dev/null +++ b/resources/[core]/menuv/source/app/lua_components/utilities.lua @@ -0,0 +1,427 @@ +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +local assert = assert +local type = assert(type) +local tonumber = assert(tonumber) +local tostring = assert(tostring) +local lower = assert(string.lower) +local upper = assert(string.upper) +local sub = assert(string.sub) +local encode = assert(json.encode) +local decode = assert(json.decode) +local floor = assert(math.floor) +local random = assert(math.random) +local randomseed = assert(math.randomseed) +local rawget = assert(rawget) +local setmetatable = assert(setmetatable) + +--- FiveM globals +local GET_GAME_TIMER = assert(GetGameTimer) +local GET_CURRENT_RESOURCE_NAME = assert(GetCurrentResourceName) + +--- Utilities for MenuV +---@class Utilities +local Utilities = setmetatable({ __class = 'Utilities' }, {}) + +--- Returns `true` if `input` starts with `start`, otherwise `false` +---@param input string Checks if this string starts with `start` +---@param start string Checks if `input` starts with this +---@return boolean `true` if `input` starts with `start`, otherwise `false` +function Utilities:StartsWith(input, start) + if (self:Typeof(input) ~= 'string') then return false end + if (self:Typeof(start) == 'number') then start = tostring(start) end + if (self:Typeof(start) ~= 'string') then return false end + + return sub(input, 1, #start) == start +end + +--- Returns `true` if `input` ends with `ends`, otherwise `false` +---@param input string Checks if this string ends with `ends` +---@param ends string Checks if `input` ends with this +---@return boolean `true` if `input` ends with `ends`, otherwise `false` +function Utilities:EndsWith(input, ends) + if (self:Typeof(input) ~= 'string') then return false end + if (self:Typeof(ends) == 'number') then ends = tostring(ends) end + if (self:Typeof(ends) ~= 'string') then return false end + + return sub(input, -#ends) == ends +end + +--- Returns the type of given `input` +---@param input any Any input +---@return string Type of given input +function Utilities:Typeof(input) + if (input == nil) then return 'nil' end + + local rawType = type(input) or 'nil' + + if (rawType ~= 'table') then return rawType end + + local isFXFunction = rawget(input, '__cfx_functionReference') ~= nil or + rawget(input, '__cfx_async_retval') ~= nil + + if (isFXFunction) then return 'function' end + if (rawget(input, '__cfx_functionSource') ~= nil) then return 'number' end + + local rawClass = rawget(input, '__class') + + if (rawClass ~= nil) then return type(rawClass) == 'string' and rawClass or 'class' end + + local rawTableType = rawget(input, '__type') + + if (rawTableType ~= nil) then return type(rawTableType) == 'string' and rawTableType or 'table' end + + return rawType +end + +local INPUT_GROUPS = { + [0] = "KEYBOARD", + [2] = "CONTROLLER" +} + +local INPUT_TYPE_GROUPS = { + ["KEYBOARD"] = 0, + ["MOUSE_ABSOLUTEAXIS"] = 0, + ["MOUSE_CENTEREDAXIS"] = 0, + ["MOUSE_RELATIVEAXIS"] = 0, + ["MOUSE_SCALEDAXIS"] = 0, + ["MOUSE_NORMALIZED"] = 0, + ["MOUSE_WHEEL"] = 0, + ["MOUSE_BUTTON"] = 0, + ["MOUSE_BUTTONANY"] = 0, + ["MKB_AXIS"] = 0, + ["PAD_AXIS"] = 2, + ["PAD_DIGITALBUTTON"] = 2, + ["PAD_DIGITALBUTTONANY"] = 2, + ["PAD_ANALOGBUTTON"] = 2, + ["JOYSTICK_POV"] = 2, + ["JOYSTICK_POV_AXIS"] = 2, + ["JOYSTICK_BUTTON"] = 2, + ["JOYSTICK_AXIS"] = 2, + ["JOYSTICK_IAXIS"] = 2, + ["JOYSTICK_AXIS_NEGATIVE"] = 2, + ["JOYSTICK_AXIS_POSITIVE"] = 2, + ["PAD_DEBUGBUTTON"] = 2, + ["GAME_CONTROLLED"] = 2, + ["DIGITALBUTTON_AXIS"] = 2, +} + +function Utilities:GetInputTypeGroup(inputType) + return INPUT_TYPE_GROUPS[inputType] or 0 +end + +function Utilities:GetInputGroupName(inputTypeGroup) + return INPUT_GROUPS[inputTypeGroup] or "KEYBOARD" +end + +--- Transform any `input` to the same type as `defaultValue` +---@type function +---@param input any Transform this `input` to `defaultValue`'s type +---@param defaultValue any Returns this if `input` can't transformed to this type +---@param ignoreDefault boolean Don't return default value if this is true +---@return any Returns `input` matches the `defaultValue` type or `defaultValue` +function Utilities:Ensure(input, defaultValue, ignoreDefault) + ignoreDefault = type(ignoreDefault) == 'boolean' and ignoreDefault or false + + if (defaultValue == nil) then return nil end + + local requiredType = self:Typeof(defaultValue) + + if (requiredType == 'nil') then return nil end + + local inputType = self:Typeof(input) + + if (inputType == requiredType) then return input end + if (inputType == 'nil') then return defaultValue end + + if (requiredType == 'number') then + if (inputType == 'boolean') then return input and 1 or 0 end + + return tonumber(input) or (not ignoreDefault and defaultValue or nil) + end + + if (requiredType == 'string') then + if (inputType == 'boolean') then return input and 'yes' or 'no' end + if (inputType == 'vector3') then return encode({ x = input.x, y = input.y, z = input.z }) or (not ignoreDefault and defaultValue or nil) end + if (inputType == 'vector2') then return encode({ x = input.x, y = input.y }) or (not ignoreDefault and defaultValue or nil) end + if (inputType == 'table') then return encode(input) or (not ignoreDefault and defaultValue or nil) end + + local result = tostring(input) + + if (result == 'nil') then + return not ignoreDefault and defaultValue or 'nil' + end + + return result + end + + if (requiredType == 'boolean') then + if (inputType == 'string') then + input = lower(input) + + if (input == 'true' or input == '1' or input == 'yes' or input == 'y') then return true end + if (input == 'false' or input == '0' or input == 'no' or input == 'n') then return false end + + return (not ignoreDefault and defaultValue or nil) + end + + if (inputType == 'number') then + if (input == 1) then return true end + if (input == 0) then return false end + + return (not ignoreDefault and defaultValue or nil) + end + + return (not ignoreDefault and defaultValue or nil) + end + + if (requiredType == 'table') then + if (inputType == 'string') then + if (self:StartsWith(input, '{') and self:EndsWith(input, '}')) then + return decode(input) or (not ignoreDefault and defaultValue or nil) + end + + if (self:StartsWith(input, '[') and self:EndsWith(input, ']')) then + return decode(input) or (not ignoreDefault and defaultValue or nil) + end + + return (not ignoreDefault and defaultValue or nil) + end + + if (inputType == 'vector3') then return { x = input.x or 0, y = input.y or 0, z = input.z or 0 } end + if (inputType == 'vector2') then return { x = input.x or 0, y = input.y or 0 } end + + return (not ignoreDefault and defaultValue or nil) + end + + if (requiredType == 'vector3') then + if (inputType == 'table') then + local _x = self:Ensure(input.x, defaultValue.x) + local _y = self:Ensure(input.y, defaultValue.y) + local _z = self:Ensure(input.z, defaultValue.z) + + return vector3(_x, _y, _z) + end + + if (inputType == 'vector2') then + local _x = self:Ensure(input.x, defaultValue.x) + local _y = self:Ensure(input.y, defaultValue.y) + + return vector3(_x, _y, 0) + end + + if (inputType == 'number') then + return vector3(input, input, input) + end + + return (not ignoreDefault and defaultValue or nil) + end + + if (requiredType == 'vector2') then + if (inputType == 'table') then + local _x = self:Ensure(input.x, defaultValue.x) + local _y = self:Ensure(input.y, defaultValue.y) + + return vector2(_x, _y) + end + + if (inputType == 'vector3') then + local _x = self:Ensure(input.x, defaultValue.x) + local _y = self:Ensure(input.y, defaultValue.y) + + return vector2(_x, _y) + end + + if (inputType == 'number') then + return vector2(input, input) + end + + return (not ignoreDefault and defaultValue or nil) + end + + return (not ignoreDefault and defaultValue or nil) +end + +--- Checks if input exists in inputs +--- '0' and 0 are both the same '0' == 0 equals `true` +--- 'yes' and true are both the same 'yes' == true equals `true` +---@param input any Any input +---@param inputs any[] Any table +---@param checkType string | "'value'" | "'key'" | "'both'" +---@return boolean Returns `true` if input has been found as `key` and/or `value` +function Utilities:Any(input, inputs, checkType) + if (input == nil) then return false end + if (inputs == nil) then return false end + + inputs = self:Ensure(inputs, {}) + checkType = lower(self:Ensure(checkType, 'value')) + + local checkMethod = 1 + + if (checkType == 'value' or checkType == 'v') then + checkMethod = 1 + elseif (checkType == 'key' or checkType == 'k') then + checkMethod = -1 + elseif (checkType == 'both' or checkType == 'b') then + checkMethod = 0 + end + + for k, v in pairs(inputs) do + if (checkMethod == 0 or checkMethod == -1) then + local checkK = self:Ensure(input, k, true) + + if (checkK ~= nil and checkK == k) then return true end + end + + if (checkMethod == 0 or checkMethod == 1) then + local checkV = self:Ensure(input, v, true) + + if (checkV ~= nil and checkV == v) then return true end + end + end + + return false +end + +--- Round any `value` +---@param value number Round this value +---@param decimal number Number of decimals +---@return number Rounded number +function Utilities:Round(value, decimal) + value = self:Ensure(value, 0) + decimal = self:Ensure(decimal, 0) + + if (decimal > 0) then + return floor((value * 10 ^ decimal) + 0.5) / (10 ^ decimal) + end + + return floor(value + 0.5) +end + +--- Checks if `item1` equals `item2` +---@param item1 any Item1 +---@param item2 any Item2 +---@return boolean `true` if both are equal, otherwise `false` +function Utilities:Equal(item1, item2) + if (item1 == nil and item2 == nil) then return true end + if (item1 == nil or item2 == nil) then return false end + + if (type(item1) == 'table') then + local item1EQ = rawget(item1, '__eq') + + if (item1EQ ~= nil and self:Typeof(item1EQ) == 'function') then + return item1EQ(item1, item2) + end + + return item1 == item2 + end + + if (type(item2) == 'table') then + local item2EQ = rawget(item2, '__eq') + + if (item2EQ ~= nil and self:Typeof(item2EQ) == 'function') then + return item2EQ(item2, item1) + end + + return item2 == item1 + end + + return item1 == item2 +end + +local function tohex(x) + x = Utilities:Ensure(x, 32) + + local s, base, d = '', 16 + + while x > 0 do + d = x % base + 1 + x = floor(x / base) + s = sub('0123456789abcdef', d, d) .. s + end + + while #s < 2 do s = ('0%s'):format(s) end + + return s +end + +local function bitwise(x, y, matrix) + x = Utilities:Ensure(x, 32) + y = Utilities:Ensure(y, 16) + matrix = Utilities:Ensure(matrix, {{0,0}, {0, 1}}) + + local z, pow = 0, 1 + + while x > 0 or y > 0 do + z = z + (matrix[x %2 + 1][y %2 + 1] * pow) + pow = pow * 2 + x = floor(x / 2) + y = floor(y / 2) + end + + return z +end + +--- Generates a random UUID like: 00000000-0000-0000-0000-000000000000 +---@return string Random generated UUID +function Utilities:UUID() + randomseed(GET_GAME_TIMER() + random(30720, 92160)) + + ---@type number[] + local bytes = { + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255), + random(0, 255) + } + + bytes[7] = bitwise(bytes[7], 0x0f, {{0,0},{0,1}}) + bytes[7] = bitwise(bytes[7], 0x40, {{0,1},{1,1}}) + bytes[9] = bitwise(bytes[7], 0x3f, {{0,0},{0,1}}) + bytes[9] = bitwise(bytes[7], 0x80, {{0,1},{1,1}}) + + return upper(('%s%s%s%s-%s%s-%s%s-%s%s-%s%s%s%s%s%s'):format( + tohex(bytes[1]), tohex(bytes[2]), tohex(bytes[3]), tohex(bytes[4]), + tohex(bytes[5]), tohex(bytes[6]), + tohex(bytes[7]), tohex(bytes[8]), + tohex(bytes[9]), tohex(bytes[10]), + tohex(bytes[11]), tohex(bytes[12]), tohex(bytes[13]), tohex(bytes[14]), tohex(bytes[15]), tohex(bytes[16]) + )) +end + +--- Replace a string that contains `this` to `that` +---@param str string String where to replace in +---@param this string Word that's need to be replaced +---@param that string Replace `this` whit given string +---@return string String where `this` has been replaced with `that` +function Utilities:Replace(str, this, that) + local b, e = str:find(this, 1, true) + + if b == nil then + return str + else + return str:sub(1, b - 1) .. that .. self:Replace(str:sub(e + 1), this, that) + end +end + +_G.Utilities = Utilities +_ENV.Utilities = Utilities \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/menuv.lua b/resources/[core]/menuv/source/app/menuv.lua new file mode 100644 index 0000000..d4cfb8c --- /dev/null +++ b/resources/[core]/menuv/source/app/menuv.lua @@ -0,0 +1,293 @@ +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +local assert = assert +local load = assert(load) +local xpcall = assert(xpcall) +local lower = assert(string.lower) +local upper = assert(string.upper) +local rawget = assert(rawget) +local rawset = assert(rawset) +local traceback = assert(debug.traceback) +local setmetatable = assert(setmetatable) + +--- FiveM globals +local GetInvokingResource = assert(GetInvokingResource) +local LoadResourceFile = assert(LoadResourceFile) +local RegisterKeyMapping = assert(RegisterKeyMapping) +local RegisterCommand = assert(RegisterCommand) +local SendNUIMessage = assert(SendNUIMessage) +local RegisterNUICallback = assert(RegisterNUICallback) +local IsScreenFadedOut = assert(IsScreenFadedOut) +local IsPauseMenuActive = assert(IsPauseMenuActive) +local PlaySoundFrontend = assert(PlaySoundFrontend) +local CreateThread = assert(Citizen.CreateThread) +local Wait = assert(Citizen.Wait) +local exports = assert(exports) + +--- MenuV globals +---@type Utilities +local Utilities = assert(Utilities) + +--- Load a file from `menuv` +---@param path string Path in `menuv` +---@return any|nil Results of nil +local function load_file(path) + if (path == nil or type(path) ~= 'string') then return nil end + + local raw_file = LoadResourceFile('menuv', path) + + if (raw_file) then + local raw_func, _ = load(raw_file, ('menuv/%s'):format(path), 't', _ENV) + + if (raw_func) then + local ok, result = xpcall(raw_func, traceback) + + if (ok) then + return result + end + end + end + + return nil +end + +load_file('menuv/components/translations.lua') + +local MenuV = setmetatable({ + ---@type string + __class = 'MenuV', + ---@type string + __type = 'MenuV', + ---@type boolean + Loaded = false, + ---@type number + ThreadWait = Utilities:Ensure((Config or {}).HideInterval, 250), + ---@type table + Translations = translations or {}, + ---@type table + Sounds = Utilities:Ensure((Config or {}).Sounds, {}), + ---@type boolean + Hidden = false +}, {}) + +MenuV.Keys = setmetatable({ data = {}, __class = 'MenuVKeys', __type = 'keys' }, { + __index = function(t, k) + return rawget(t.data, k) + end, + __newindex = function(t, k, v) + k = Utilities:Ensure(k, 'unknown') + + if (k == 'unknown') then return end + + local rawKey = rawget(t.data, k) + local keyExists = rawKey ~= nil + local prevState = Utilities:Ensure((rawKey or {}).status, false) + local newState = Utilities:Ensure(v, false) + + if (keyExists and not MenuV.Hidden) then + rawset(t.data[k], 'status', newState) + + if (prevState ~= newState) then + local action = newState and not prevState and 'KEY_PRESSED' or 'KEY_RELEASED' + local key = Utilities:Ensure(rawKey.action, 'UNKNOWN') + + SendNUIMessage({ action = action, key = key }) + end + end + end, + __call = function(t, k, a, inputType) + k = Utilities:Ensure(k, 'unknown') + a = Utilities:Ensure(a, 'UNKNOWN') + inputType = Utilities:Ensure(inputType, 0) + + if (k == 'unknown') then return end + + local rawKey = rawget(t.data, k) + local keyExists = rawKey ~= nil + + if (keyExists) then + if not rawKey.inputTypes[inputType] then + rawKey.inputTypes[inputType] = true + end + + return + end + + rawset(t.data, k, { status = false, action = a, inputTypes = { [inputType] = true } }) + end +}) + +--- Register a `action` with custom keybind +---@param action string Action like: UP, DOWN, LEFT... +---@param description string Description of keybind +---@param defaultType string Type like: keyboard, mouse etc. +---@param defaultKey string Default key for this keybind +function MenuV:RegisterKey(action, description, defaultType, defaultKey) + action = Utilities:Ensure(action, 'UNKNOWN') + description = Utilities:Ensure(description, 'unknown') + defaultType = Utilities:Ensure(defaultType, 'KEYBOARD') + defaultType = upper(defaultType) + defaultKey = Utilities:Ensure(defaultKey, 'F12') + + action = Utilities:Replace(action, ' ', '_') + action = upper(action) + + local typeGroup = Utilities:GetInputTypeGroup(defaultType) + + if (self.Keys[action] and self.Keys[action].inputTypes[typeGroup]) then return end + + self.Keys(action, action, typeGroup) + + local k = lower(action) + + if typeGroup > 0 then + local inputGroupName = Utilities:GetInputGroupName(typeGroup) + k = ('%s_%s'):format(lower(inputGroupName), k) + end + + k = ('menuv_%s'):format(k) + + RegisterKeyMapping(('+%s'):format(k), description, defaultType, defaultKey) + RegisterCommand(('+%s'):format(k), function() MenuV.Keys[action] = true end) + RegisterCommand(('-%s'):format(k), function() MenuV.Keys[action] = false end) +end + +--- Load translation +---@param k string Translation key +---@return string Translation or 'MISSING TRANSLATION' +local function T(k) + k = Utilities:Ensure(k, 'unknown') + + return Utilities:Ensure(MenuV.Translations[k], 'MISSING TRANSLATION') +end + +RegisterNUICallback('loaded', function(_, cb) + MenuV.Loaded = true + cb('ok') +end) + +RegisterNUICallback('sound', function(info, cb) + local key = upper(Utilities:Ensure(info.key, 'UNKNOWN')) + + if (MenuV.Sounds == nil and MenuV.Sounds[key] == nil) then cb('ok') return end + + local sound = Utilities:Ensure(MenuV.Sounds[key], {}) + local soundType = lower(Utilities:Ensure(sound.type, 'unknown')) + + if (soundType == 'native') then + local name = Utilities:Ensure(sound.name, 'UNKNOWN') + local library = Utilities:Ensure(sound.library, 'UNKNOWN') + + PlaySoundFrontend(-1, name, library, true) + end + + cb('ok') +end) + +--- Trigger the NUICallback for the right resource +---@param name string Name of callback +---@param info table Info returns from callback +---@param cb function Trigger this when callback is done +local function TriggerResourceCallback(name, info, cb) + local r = Utilities:Ensure(info.r, 'menuv') + + if (r == 'menuv') then cb('ok') return end + + local resource = exports[r] or nil + + if (resource == nil) then cb('ok') return end + + local nuiCallback = resource['NUICallback'] or nil + + if (nuiCallback == nil) then cb('ok') return end + + exports[r]:NUICallback(name, info, cb) +end + +RegisterNUICallback('submit', function(info, cb) TriggerResourceCallback('submit', info, cb) end) +RegisterNUICallback('close', function(info, cb) TriggerResourceCallback('close', info, cb) end) +RegisterNUICallback('switch', function(info, cb) TriggerResourceCallback('switch', info, cb) end) +RegisterNUICallback('update', function(info, cb) TriggerResourceCallback('update', info, cb) end) +RegisterNUICallback('open', function(info, cb) TriggerResourceCallback('open', info, cb) end) +RegisterNUICallback('opened', function(info, cb) TriggerResourceCallback('opened', info, cb) end) +RegisterNUICallback('close_all', function(info, cb) TriggerResourceCallback('close_all', info, cb) end) + +--- MenuV exports +exports('IsLoaded', function(cb) + cb = Utilities:Ensure(cb, function() end) + + if (MenuV.Loaded) then + cb() + return + end + + CreateThread(function() + local callback = cb + + repeat Wait(0) until MenuV.Loaded + + callback() + end) +end) + +exports('SendNUIMessage', function(input) + local r = Utilities:Ensure(GetInvokingResource(), 'menuv') + + if (Utilities:Typeof(input) == 'table') then + if (input.menu) then + rawset(input.menu, 'resource', r) + rawset(input.menu, 'defaultSounds', MenuV.Sounds) + rawset(input.menu, 'hidden', MenuV.Hidden) + end + + SendNUIMessage(input) + end +end) + +--- Register `MenuV` keybinds +MenuV:RegisterKey('UP', T('keybind_key_up'), 'KEYBOARD', 'UP') +MenuV:RegisterKey('DOWN', T('keybind_key_down'), 'KEYBOARD', 'DOWN') +MenuV:RegisterKey('LEFT', T('keybind_key_left'), 'KEYBOARD', 'LEFT') +MenuV:RegisterKey('RIGHT', T('keybind_key_right'), 'KEYBOARD', 'RIGHT') +MenuV:RegisterKey('ENTER', T('keybind_key_enter'), 'KEYBOARD', 'RETURN') +MenuV:RegisterKey('CLOSE', T('keybind_key_close'), 'KEYBOARD', 'BACK') +MenuV:RegisterKey('CLOSE_ALL', T('keybind_key_close_all'), 'KEYBOARD', 'PLUS') + +MenuV:RegisterKey('UP', ('%s - %s'):format(T('controller'), T('keybind_key_up')), 'PAD_ANALOGBUTTON', 'LUP_INDEX') +MenuV:RegisterKey('DOWN', ('%s - %s'):format(T('controller'), T('keybind_key_down')), 'PAD_ANALOGBUTTON', 'LDOWN_INDEX') +MenuV:RegisterKey('LEFT', ('%s - %s'):format(T('controller'), T('keybind_key_left')), 'PAD_ANALOGBUTTON', 'LLEFT_INDEX') +MenuV:RegisterKey('RIGHT', ('%s - %s'):format(T('controller'), T('keybind_key_right')), 'PAD_ANALOGBUTTON', 'LRIGHT_INDEX') +MenuV:RegisterKey('ENTER', ('%s - %s'):format(T('controller'), T('keybind_key_enter')), 'PAD_ANALOGBUTTON', 'RDOWN_INDEX') +MenuV:RegisterKey('CLOSE', ('%s - %s'):format(T('controller'), T('keybind_key_close')), 'PAD_ANALOGBUTTON', 'RRIGHT_INDEX') +MenuV:RegisterKey('CLOSE_ALL', ('%s - %s'):format(T('controller'), T('keybind_key_close_all')), 'PAD_ANALOGBUTTON', 'R3_INDEX') + +--- Hide menu when screen is faded out or pause menu ia active +CreateThread(function() + MenuV.Hidden = false + + while true do + repeat Wait(0) until MenuV.Loaded + + local new_state = IsScreenFadedOut() or IsPauseMenuActive() + + if (MenuV.Hidden ~= new_state) then + SendNUIMessage({ action = 'UPDATE_STATUS', status = not new_state }) + end + + MenuV.Hidden = new_state + + Wait(MenuV.ThreadWait) + end +end) + +--- When resource is stopped +AddEventHandler('onResourceStop', function(resourceName) + SendNUIMessage({ action = 'RESOURCE_STOPPED', resource = resourceName }) +end) \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/menuv.ts b/resources/[core]/menuv/source/app/menuv.ts new file mode 100644 index 0000000..c25db9f --- /dev/null +++ b/resources/[core]/menuv/source/app/menuv.ts @@ -0,0 +1,826 @@ +/** +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +*/ +import VUE from 'vue'; +import STYLE from './vue_components/style'; +import * as VueScrollTo from 'vue-scrollto'; + +VUE.use(VueScrollTo.default, { + container: 'ul.menuv-items', + duration: 500, + easing: 'ease-in', + offset: -25, + force: true, + cancelable: false, + onStart: false, + onDone: false, + onCancel: false, + x: false, + y: true +}); + +export interface Sounds { + type: 'native' | 'custom'; + name: string; + library: string; +} + +export interface Option { + label: string; + description: string; + value: number; +} + +export interface Item { + index: number; + type: 'button' | 'menu' | 'checkbox' | 'confirm' | 'range' | 'slider' | 'label' | 'unknown'; + uuid: string; + icon: string; + label: string; + description: string; + value: any; + prev_value: any; + values: Option[]; + min: number; + max: number; + disabled: boolean; +} + +export interface Menu { + hidden: boolean; + theme: 'default' | 'native'; + resource: string; + uuid: string; + title: string; + subtitle: string; + position: 'topleft' | 'topcenter' | 'topright' | 'centerleft' | 'center' | 'centerright' | 'bottomleft' | 'bottomcenter' | 'bottomright'; + size: 'size-100' | 'size-110' | 'size-125' | 'size-150' | 'size-175' | 'size-200'; + color: { + r: number, + g: number, + b: number + }; + items: Item[]; + texture: string; + dictionary: string; + defaultSounds: Record<'UP' | 'DOWN' | 'LEFT' | 'RIGHT' | 'ENTER' | 'CLOSE', Sounds>; +} + +export default VUE.extend({ + template: '#menuv_template', + name: 'menuv', + components: { + STYLE + }, + data() { + return { + theme: 'default', + resource: 'menuv', + uuid: '', + menu: false, + show: false, + title: 'MenuV', + subtitle: '', + position: 'topleft', + size: 'size-110', + texture: 'none', + dictionary: 'none', + color: { + r: 0, + g: 0, + b: 255 + }, + items: [] as Item[], + listener: (event: MessageEvent) => {}, + index: 0, + sounds: {} as Record<'UP' | 'DOWN' | 'LEFT' | 'RIGHT' | 'ENTER' | 'CLOSE', Sounds>, + cached_indexes: {} as Record + } + }, + destroyed() { + window.removeEventListener('message', this.listener) + }, + mounted() { + this.listener = (event: MessageEvent) => { + const data: any = event.data ||(event).detail; + + if (!data || !data.action) { return; } + + const typeRef = data.action as 'UPDATE_STATUS' | 'OPEN_MENU' | 'CLOSE_MENU' | 'UPDATE_TITLE' | 'UPDATE_SUBTITLE' | 'KEY_PRESSED' | 'RESOURCE_STOPPED' | 'UPDATE_ITEMS' | 'UPDATE_ITEM' | 'REFRESH_MENU' + + if (this[typeRef]) { + this[typeRef](data); + } + }; + + window.addEventListener('message', this.listener); + + this.POST('https://menuv/loaded', {}); + }, + watch: { + theme() {}, + title() {}, + subtitle() {}, + position() {}, + color() {}, + options() {}, + menu() {}, + show() {}, + size() {}, + index(newValue, oldValue) { + let prev_uuid = null; + let next_uuid = null; + + if (oldValue >= 0 && oldValue < this.items.length) { + prev_uuid = this.items[oldValue].uuid; + } + + if (newValue >= 0 && newValue < this.items.length) { + next_uuid = this.items[newValue].uuid; + } + + this.cached_indexes[this.uuid] = newValue; + this.POST(`https://menuv/switch`, { prev: prev_uuid, next: next_uuid, r: this.resource }); + }, + items: { + deep: true, + handler(newValue: Item[], oldValue: Item[]) { + if (this.index >= newValue.length || this.index < 0) { return; } + + let sameItem = null; + const currentItem = newValue[this.index]; + + if (currentItem == null) { return; } + + for (var i = 0; i < oldValue.length; i++) { + if (currentItem.uuid == oldValue[i].uuid) { + sameItem = oldValue[i]; + } + } + + if (sameItem == null || currentItem.value == currentItem.prev_value) { return; } + + currentItem.prev_value = currentItem.value; + + this.POST(`https://menuv/update`, { uuid: currentItem.uuid, prev: sameItem.value, now: currentItem.value, r: this.resource }); + } + } + }, + updated: function() { + if (this.index < 0) { return; } + + const el = document.getElementsByTagName('li'); + + for (var i = 0; i < el.length; i++) { + const index = el[i].getAttribute('index') + + if (index === null) { continue; } + + const idx = parseInt(index); + + if (idx == this.index) { + this.$scrollTo(`li[index="${this.index}"]`, 0, {}); + } + } + }, + computed: {}, + methods: { + UPDATE_STATUS({ status }: { status: boolean }) { + if (this.menu) { this.show = status; } + }, + OPEN_MENU({ menu, reopen }: { menu: Menu, reopen: boolean }) { + this.POST(`https://menuv/open`, { uuid: this.uuid, new_uuid: menu.uuid, r: this.resource }); + this.RESET_MENU(); + + this.theme = this.ENSURE(menu.theme, 'default'); + this.resource = this.ENSURE(menu.resource, 'menuv'); + this.uuid = this.ENSURE(menu.uuid, '00000000-0000-0000-0000-000000000000'); + this.title = this.ENSURE(menu.title, this.title); + this.subtitle = this.ENSURE(menu.subtitle, this.subtitle); + this.position = this.ENSURE(menu.position, 'topleft'); + this.size = this.ENSURE(menu.size, 'size-110'); + this.texture = this.ENSURE(menu.texture, 'none'); + this.dictionary = this.ENSURE(menu.dictionary, 'none'); + this.color = menu.color || this.color; + this.sounds = menu.defaultSounds || this.sounds; + this.show = !(menu.hidden || false); + this.menu = true; + + const _items = this.items = menu.items || []; + + for (var i = 0; i < _items.length; i++) { + _items[i].prev_value = _items[i].value; + } + + this.items = _items.sort((item1, item2) => { + if (item1.index > item2.index) { return 1; } + if (item1.index < item2.index) { return -1; } + + return 0; + }); + + const index = (reopen || false) ? (this.cached_indexes[this.uuid] || 0) : 0; + const nextIndex = this.NEXT_INDEX(index); + const prevIndex = this.PREV_INDEX(nextIndex); + + this.index = prevIndex; + this.cached_indexes[this.uuid] = prevIndex; + this.POST(`https://menuv/opened`, { uuid: this.uuid, r: this.resource }); + }, + REFRESH_MENU({ menu }: { menu: Menu }) { + const current_index = this.index + 0; + + this.RESET_MENU(); + + this.theme = this.ENSURE(menu.theme, 'default'); + this.resource = this.ENSURE(menu.resource, 'menuv'); + this.uuid = this.ENSURE(menu.uuid, '00000000-0000-0000-0000-000000000000'); + this.title = this.ENSURE(menu.title, this.title); + this.subtitle = this.ENSURE(menu.subtitle, this.subtitle); + this.position = this.ENSURE(menu.position, 'topleft'); + this.size = this.ENSURE(menu.size, 'size-110'); + this.texture = this.ENSURE(menu.texture, 'none'); + this.dictionary = this.ENSURE(menu.dictionary, 'none'); + this.color = menu.color || this.color; + this.sounds = menu.defaultSounds || this.sounds; + this.show = !(menu.hidden || false); + this.menu = true; + + const _items = this.items = menu.items || []; + + for (var i = 0; i < _items.length; i++) { + _items[i].prev_value = _items[i].value; + } + + this.items = this.items = _items.sort((item1, item2) => { + if (item1.index > item2.index) { return 1; } + if (item1.index < item2.index) { return -1; } + + return 0; + }); + + const nextIndex = this.NEXT_INDEX(current_index); + const prevIndex = this.PREV_INDEX(nextIndex); + + this.index = prevIndex; + }, + CLOSE_MENU({ uuid }: { uuid: string }) { + if (this.uuid == uuid) { + this.RESET_MENU(); + } + }, + UPDATE_TITLE({ title, __uuid }: { title: string, __uuid: string }) { + if (__uuid != this.uuid) { return; } + + this.title = title || this.title; + }, + UPDATE_SUBTITLE({ subtitle, __uuid }: { subtitle: string, __uuid: string }) { + if (__uuid != this.uuid) { return; } + + this.subtitle = subtitle || this.subtitle; + }, + UPDATE_ITEMS({ items, __uuid }: { items: Item[], __uuid: string }) { + if (__uuid != this.uuid) { return; } + + const _items = items || this.items; + + for (var i = 0; i < _items.length; i++) { + _items[i].prev_value = _items[i].value; + } + + this.items = _items; + + const nextIndex = this.NEXT_INDEX(this.index); + const prevIndex = this.PREV_INDEX(nextIndex); + + this.index = prevIndex; + }, + UPDATE_ITEM({ item, __uuid }: { item: Item, __uuid: string }) { + if (__uuid != this.uuid || item == null || typeof item == "undefined") { return; } + + for (var i = 0; i < this.items.length; i++) { + if (this.items[i].uuid == item.uuid) { + this.items[i].icon = item.icon || this.items[i].icon; + this.items[i].label = item.label || this.items[i].label; + this.items[i].description = item.description || this.items[i].description; + this.items[i].value = item.value || this.items[i].value; + this.items[i].values = item.values || this.items[i].values; + this.items[i].min = item.min || this.items[i].min; + this.items[i].max = item.max || this.items[i].max; + this.items[i].disabled = item.disabled || this.items[i].disabled; + + if ((this.index == i && this.items[i].disabled) || (this.index < 0 && !this.items[i].disabled)) { + this.index = this.NEXT_INDEX(this.index); + } + + return; + } + } + }, + ADD_ITEM({ item, index, __uuid }: { item: Item, index?: number, __uuid: string }) { + if (__uuid != this.uuid) { return; } + + item.prev_value = item.value; + + for (var i = 0; i < this.items.length; i++) { + if (this.items[i].uuid == item.uuid) { + this.UPDATE_ITEM({ item: item, __uuid: __uuid }); + return; + } + } + + const _items = this.items; + + if (typeof index == 'undefined' || index == null || index < 0 || index >= _items.length) { + _items.push(item); + } else { + _items.splice(index, 0, item); + } + + this.items = _items.sort((item1, item2) => { + if (item1.index > item2.index) { return 1; } + if (item1.index < item2.index) { return -1; } + + return 0; + }); + + if (this.index < 0 && !item.disabled) { this.index = this.NEXT_INDEX(this.index); } + }, + REMOVE_ITEM({ uuid, __uuid }: { uuid: string, __uuid: string }) { + if (__uuid != this.uuid || typeof uuid != 'string' || uuid == '') { return } + + const _items = this.items; + + for (var i = 0; i < _items.length; i++) { + if (_items[i].uuid == uuid) { + _items.splice(i, 1); + } + + if (i == this.index) { + this.index = this.PREV_INDEX(this.index); + } + } + + this.items = _items.sort((item1, item2) => { + if (item1.index > item2.index) { return 1; } + if (item1.index < item2.index) { return -1; } + + return 0; + }); + }, + RESET_MENU() { + this.theme = 'default' + this.resource = 'menuv'; + this.menu = false; + this.show = false; + this.uuid = '00000000-0000-0000-0000-000000000000'; + this.title = 'MenuV'; + this.subtitle = ''; + this.position = 'topleft'; + this.size = 'size-110'; + this.texture = 'none'; + this.dictionary = 'none'; + this.color.r = 0; + this.color.g = 0; + this.color.b = 255; + this.items = []; + this.sounds['UP'] = { type: 'custom', name: 'unknown', library: 'unknown' } as Sounds; + this.sounds['DOWN'] = { type: 'custom', name: 'unknown', library: 'unknown' } as Sounds; + this.sounds['LEFT'] = { type: 'custom', name: 'unknown', library: 'unknown' } as Sounds; + this.sounds['RIGHT'] = { type: 'custom', name: 'unknown', library: 'unknown' } as Sounds; + this.sounds['ENTER'] = { type: 'custom', name: 'unknown', library: 'unknown' } as Sounds; + this.sounds['CLOSE'] = { type: 'custom', name: 'unknown', library: 'unknown' } as Sounds; + }, + GET_SLIDER_LABEL({ uuid }: { uuid: string }) { + for (var i = 0; i < this.items.length; i++) { + if (this.items[i].uuid == uuid && this.items[i].type == 'slider') { + const currentValue = this.items[i].value as number; + const values = this.items[i].values; + + if (values.length == 0) { return ''; } + + if (currentValue < 0 || currentValue >= values.length) { + return this.FORMAT_TEXT(values[0].label || 'Unknown'); + } + + return this.FORMAT_TEXT(values[currentValue].label || 'Unknown'); + } + } + + return ''; + }, + GET_CURRENT_DESCRIPTION() { + const index = this.index || 0; + + if (index >= 0 && index < this.items.length) { + return this.FORMAT_TEXT(this.NL2BR(this.ENSURE(this.items[index].description, ''), true, false)); + } + + return ''; + }, + ENSURE: function(input: any, output: T): T { + const inputType = typeof input; + const outputType = typeof output; + + if (inputType == 'undefined') { return output as T; } + + if (outputType == 'string') { + if (inputType == 'string') { + const isEmpty = input == null || (input as string) == 'nil' || (input as string) == ''; + + if (isEmpty) { return output as T; } + + return input as T; + } + + if (inputType == 'number') { return (input as number).toString() as unknown as T || output as T; } + + return output as T; + } + + if (outputType == 'number') { + if (inputType == 'string') { + const isEmpty = input == null || (input as string) == 'nil' || (input as string) == ''; + + if (isEmpty) { return output as T; } + + return Number(input as string) as unknown as T || output as T; + } + + if (inputType == 'number') { return input as T; } + + return output as T; + } + + return output as T; + }, + TEXT_COLOR: function(r: number, g: number, b: number, o: number): string { + o = o || 1.0 + + if (o > 1.0) { o = 1.0; } + if (o < 0.0) { o = 0.0; } + + const luminance = ( 0.299 * r + 0.587 * g + 0.114 * b)/255; + + if (luminance > 0.5) { + return `rgba(0, 0, 0, ${o})`; + } + + return `rgba(255, 255, 255, ${o})`; + }, + IS_DEFAULT: function(input: any): boolean { + if (typeof input == 'string') { + return input == null || (input as string) == 'nil' || (input as string) == ''; + } + + if (typeof input == 'number') { + return (input as number) == 0 + } + + if (typeof input == 'boolean') { + return (input as boolean) == false + } + + return false; + }, + KEY_PRESSED({ key }: { key: string }) { + if (!this.menu || !this.show) { return; } + + const k = key as 'UP' | 'DOWN' | 'LEFT' | 'RIGHT' | 'ENTER' | 'CLOSE' + + if (typeof k == 'undefined' || k == null) { + return + } + + const keyRef = `KEY_${k}` as 'KEY_UP' | 'KEY_DOWN' | 'KEY_LEFT' | 'KEY_RIGHT' | 'KEY_ENTER' | 'KEY_CLOSE' | 'KEY_CLOSE_ALL'; + + if (this[keyRef]) { + this[keyRef](); + } + }, + RESOURCE_STOPPED({ resource }: { resource: string }) { + if (!this.menu) { return; } + + if (this.resource == resource) { + this.RESET_MENU(); + } + }, + KEY_UP: function() { + const newIndex = this.PREV_INDEX(this.index); + + if (this.index != newIndex) { + this.index = newIndex; + + if (this.sounds['UP'] && this.sounds['UP'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'UP' }); + } + } + }, + KEY_DOWN: function() { + const newIndex = this.NEXT_INDEX(this.index); + + if (this.index != newIndex) { + this.index = newIndex; + + if (this.sounds['DOWN'] && this.sounds['DOWN'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'DOWN' }); + } + } + }, + KEY_LEFT: function() { + if (this.index < 0 || this.items.length <= this.index || this.items[this.index].disabled) { return; } + + const item = this.items[this.index]; + + if (item.type == 'button' || item.type == 'menu' || item.type == 'label' || item.type == 'unknown') { return; } + + switch(item.type) { + case 'confirm': + case 'checkbox': + const boolean_value = item.value as boolean; + + this.items[this.index].value = !boolean_value; + + if (this.sounds['LEFT'] && this.sounds['LEFT'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'LEFT' }); + } + + break; + case 'range': + let new_range_index = null; + let range_value = item.value as number; + + if ((range_value - 1) <= item.min) { new_range_index = item.min; } + else if ((range_value - 1) >= item.max) { new_range_index = item.max; } + else { new_range_index = (this.items[this.index].value - 1); } + + if (new_range_index != this.items[this.index].value) { + this.items[this.index].value = new_range_index; + + if (this.sounds['LEFT'] && this.sounds['LEFT'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'LEFT' }); + } + } + + break; + case 'slider': + let new_slider_index = null; + const slider_value = item.value as number; + const slider_values = item.values || []; + + if (slider_values.length <= 0) { return; } + if ((slider_value - 1) < 0 || (slider_value - 1) >= slider_values.length) { new_slider_index = (slider_values.length - 1); } + else { new_slider_index = (this.items[this.index].value - 1); } + + if (new_slider_index != this.items[this.index].value) { + this.items[this.index].value = new_slider_index; + + if (this.sounds['LEFT'] && this.sounds['LEFT'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'LEFT' }); + } + } + + break; + } + }, + KEY_RIGHT: function() { + if (this.index < 0 || this.items.length <= this.index || this.items[this.index].disabled) { return; } + + const item = this.items[this.index]; + + if (item.type == 'button' || item.type == 'menu' || item.type == 'label' || item.type == 'unknown') { return; } + + switch(item.type) { + case 'confirm': + case 'checkbox': + const boolean_value = item.value as boolean; + + this.items[this.index].value = !boolean_value; + + if (this.sounds['RIGHT'] && this.sounds['RIGHT'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'RIGHT' }); + } + + break; + case 'range': + let new_range_index = null; + let range_value = item.value as number; + + if ((range_value + 1) <= item.min) { new_range_index = item.min; } + else if ((range_value + 1) >= item.max) { new_range_index = item.max; } + else { new_range_index = (this.items[this.index].value + 1); } + + if (new_range_index != this.items[this.index].value) { + this.items[this.index].value = new_range_index; + + if (this.sounds['RIGHT'] && this.sounds['RIGHT'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'RIGHT' }); + } + } + + break; + case 'slider': + let new_slider_index = null; + const slider_value = item.value as number; + const slider_values = item.values || []; + + if (slider_values.length <= 0) { return; } + if ((slider_value + 1) < 0 || (slider_value + 1) >= slider_values.length) { new_slider_index = 0; } + else { new_slider_index = (this.items[this.index].value + 1); } + + if (new_slider_index != this.items[this.index].value) { + this.items[this.index].value = new_slider_index; + + if (this.sounds['RIGHT'] && this.sounds['RIGHT'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'RIGHT' }); + } + } + + break; + } + }, + KEY_ENTER: function() { + if (this.index < 0 || this.items.length <= this.index || this.items[this.index].disabled) { return; } + + if (this.sounds['ENTER'] && this.sounds['ENTER'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'ENTER' }); + } + + const item = this.items[this.index]; + + switch(item.type) { + case 'button': + case 'menu': + this.POST(`https://menuv/submit`, { uuid: item.uuid, value: null, r: this.resource }); + break; + case 'confirm': + this.POST(`https://menuv/submit`, { uuid: item.uuid, value: item.value as boolean, r: this.resource }); + break; + case 'range': + let range_value = item.value as number; + + if (range_value <= item.min) { range_value = item.min; } + else if (range_value >= item.max) { range_value = item.max; } + + this.POST(`https://menuv/submit`, { uuid: item.uuid, value: range_value, r: this.resource }); + break; + case 'checkbox': + const boolean_value = item.value as boolean; + + this.items[this.index].value = !boolean_value; + + this.POST(`https://menuv/submit`, { uuid: item.uuid, value: this.items[this.index].value, r: this.resource }); + break; + case 'slider': + let slider_value = item.value as number; + const slider_values = item.values || []; + + if (slider_values.length <= 0 || slider_value < 0 || slider_value >= slider_values.length) { return; } + + this.POST(`https://menuv/submit`, { uuid: item.uuid, value: slider_value, r: this.resource }); + break; + } + }, + KEY_CLOSE: function() { + if (this.sounds['CLOSE'] && this.sounds['CLOSE'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'CLOSE' }); + } + + this.POST(`https://menuv/close`, { uuid: this.uuid, r: this.resource }); + this.CLOSE_MENU({ uuid: this.uuid }); + }, + KEY_CLOSE_ALL: function() { + if (this.sounds['CLOSE'] && this.sounds['CLOSE'].type == 'native') { + this.POST(`https://menuv/sound`, { key: 'CLOSE' }); + } + + this.POST(`https://menuv/close_all`, { r: this.resource }); + this.RESET_MENU(); + }, + POST: function(url: string, data: object|[]) { + var request = new XMLHttpRequest(); + + request.open('POST', url, true); + request.open('POST', url, true); + request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); + request.send(JSON.stringify(data)); + }, + NEXT_INDEX: function(idx: number) { + if (idx == null || typeof idx == "undefined") { idx = this.index; } + + let index = 0; + let newIndex = -2; + + if (this.items.length <= 0) { return -1; } + + while (newIndex < -1) { + if ((idx + 1 + index) < this.items.length) { + if (!this.items[(idx + 1 + index)].disabled) { + newIndex = (idx + 1 + index); + } else { + index++; + } + } else if (index >= this.items.length) { + return -1; + } else { + const addIndex = (idx + 1 + index) - this.items.length; + + if (addIndex < this.items.length) { + if (!this.items[addIndex].disabled) { + newIndex = addIndex; + } else { + index++; + } + } else { + index++; + } + } + } + + if (newIndex < 0) { return -1; } + + return newIndex; + }, + PREV_INDEX: function(idx: number) { + if (idx == null || typeof idx == "undefined") { idx = this.index; } + + let index = 0; + let newIndex = -2; + + if (this.items.length <= 0) { return -1; } + + while (newIndex < -1) { + if ((idx - 1 - index) >= 0) { + if (!this.items[(idx - 1 - index)].disabled) { + newIndex = (idx - 1 - index); + } else { + index++; + } + } else if (index >= this.items.length) { + return -1; + } else { + const addIndex = (idx - 1 - index) + this.items.length; + + if (addIndex < this.items.length && addIndex >= 0) { + if (!this.items[addIndex].disabled) { + newIndex = addIndex; + } else { + index++; + } + } else { + index++; + } + } + } + + if (newIndex < 0) { return -1; } + + return newIndex; + }, + NL2BR: function(text: string, replaceMode: boolean, isXhtml: boolean) { + var breakTag = (isXhtml) ? '
' : '
'; + var replaceStr = (replaceMode) ? '$1'+ breakTag : '$1'+ breakTag +'$2'; + + return (text + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, replaceStr); + }, + FORMAT_TEXT: function(text: string) { + text = this.ENSURE(text, ''); + + text = text.replace(/\^0/g, ''); + text = text.replace(/\^1/g, ''); + text = text.replace(/\^2/g, ''); + text = text.replace(/\^3/g, ''); + text = text.replace(/\^4/g, ''); + text = text.replace(/\^5/g, ''); + text = text.replace(/\^6/g, ''); + text = text.replace(/\^7/g, ''); + text = text.replace(/\^8/g, ''); + text = text.replace(/\^9/g, ''); + text = text.replace(/~r~/g, ''); + text = text.replace(/~g~/g, ''); + text = text.replace(/~b~/g, ''); + text = text.replace(/~y~/g, ''); + text = text.replace(/~p~/g, ''); + text = text.replace(/~c~/g, ''); + text = text.replace(/~m~/g, ''); + text = text.replace(/~u~/g, ''); + text = text.replace(/~o~/g, ''); + text = text.replace(/~n~/g, '
'); + text = text.replace(/~s~/g, ''); + text = text.replace(/~h~/g, ''); + + const d = new DOMParser(); + const domObj = d.parseFromString(text || "", "text/html"); + + return domObj.body.innerHTML; + } + } +}); \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/tsconfig.json b/resources/[core]/menuv/source/app/tsconfig.json new file mode 100644 index 0000000..38b80a2 --- /dev/null +++ b/resources/[core]/menuv/source/app/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "outDir": "./", + "module": "es6", + "strict": true, + "moduleResolution": "node", + "target": "es6", + "allowJs": true, + "lib": [ + "es2017", + "DOM" + ] + }, + "include": [ + "./**/*" + ], + "exclude": [] +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/vue_components/style.ts b/resources/[core]/menuv/source/app/vue_components/style.ts new file mode 100644 index 0000000..29dcd36 --- /dev/null +++ b/resources/[core]/menuv/source/app/vue_components/style.ts @@ -0,0 +1,19 @@ +/** +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +*/ +import VUE from 'vue'; +import { CreateElement } from 'vue/types/umd'; + +export default VUE.component('v-style', { + render: function(createElement: CreateElement) { + return createElement('style', this.$slots.default); + } +}); \ No newline at end of file diff --git a/resources/[core]/menuv/source/app/vue_templates/menuv.vue b/resources/[core]/menuv/source/app/vue_templates/menuv.vue new file mode 100644 index 0000000..b68e4bc --- /dev/null +++ b/resources/[core]/menuv/source/app/vue_templates/menuv.vue @@ -0,0 +1,132 @@ + + + + \ No newline at end of file diff --git a/resources/[core]/menuv/source/config.lua b/resources/[core]/menuv/source/config.lua new file mode 100644 index 0000000..2151c29 --- /dev/null +++ b/resources/[core]/menuv/source/config.lua @@ -0,0 +1,48 @@ +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +Config = { + Language = 'en', + HideInterval = 250, + Sounds = { + UP = { + type = 'native', + name = 'NAV_UP_DOWN', + library = 'HUD_FREEMODE_SOUNDSET' + }, + DOWN = { + type = 'native', + name = 'NAV_UP_DOWN', + library = 'HUD_FREEMODE_SOUNDSET' + }, + LEFT = { + type = 'native', + name = 'NAV_LEFT_RIGHT', + library = 'HUD_FRONTEND_DEFAULT_SOUNDSET' + }, + RIGHT = { + type = 'native', + name = 'NAV_LEFT_RIGHT', + library = 'HUD_FRONTEND_DEFAULT_SOUNDSET' + }, + ENTER = { + type = 'native', + name = 'SELECT', + library = 'HUD_FRONTEND_DEFAULT_SOUNDSET' + }, + CLOSE = { + type = 'native', + name = 'BACK', + library = 'HUD_FRONTEND_DEFAULT_SOUNDSET' + } + } +} + +_G.Config = Config +_ENV.Config = Config \ No newline at end of file diff --git a/resources/[core]/menuv/source/languages/da.json b/resources/[core]/menuv/source/languages/da.json new file mode 100644 index 0000000..9f77ffb --- /dev/null +++ b/resources/[core]/menuv/source/languages/da.json @@ -0,0 +1,22 @@ +{ + "language": "da", + "translators": [ + { + "name": "Nylander", + "emails": ["hej@hjaltenylander.dk"], + "github": "https://github.com/NylanderrDK" + } + ], + "translations": { + "keyboard": "Tastatur", + "controller": "Controller", + "keybind_key_up": "Op i en menu", + "keybind_key_down": "Ned i en menu", + "keybind_key_left": "Venstre i en menu", + "keybind_key_right": "Højre i en menu", + "keybind_key_enter": "Bekræft valg i en menu", + "keybind_key_close": "Luk en menu", + "keybind_key_close_all": "Luk alle menuer (inklusiv forældre)", + "open_menu": "Åbn '%s' med denne tast" + } +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/languages/de.json b/resources/[core]/menuv/source/languages/de.json new file mode 100644 index 0000000..7535070 --- /dev/null +++ b/resources/[core]/menuv/source/languages/de.json @@ -0,0 +1,21 @@ +{ + "language": "de", + "translators": [ + { + "name": "NirosTen", + "github": "https://github.com/NirosTen" + } + ], + "translations": { + "keyboard": "Tastatur", + "controller": "Joystick", + "keybind_key_up": "Oben in einem Menü ", + "keybind_key_down": "Unten in einem Menü", + "keybind_key_left": "Links in einem Menü", + "keybind_key_right": "Rechts in einem Menü", + "keybind_key_enter": "Bestätigen Sie in einem Menü", + "keybind_key_close": "Schließen Sie ein Menü", + "keybind_key_close_all": "Schließen Sie alle Menüs", + "open_menu": "Öffnen Sie das '%s'Menü" + } +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/languages/en.json b/resources/[core]/menuv/source/languages/en.json new file mode 100644 index 0000000..99dbcad --- /dev/null +++ b/resources/[core]/menuv/source/languages/en.json @@ -0,0 +1,22 @@ +{ + "language": "en", + "translators": [ + { + "name": "ThymonA", + "emails": ["contact@thymonarens.nl"], + "github": "https://github.com/ThymonA" + } + ], + "translations": { + "keyboard": "Keyboard", + "controller": "Controller", + "keybind_key_up": "Up in a menu", + "keybind_key_down": "Down in a menu", + "keybind_key_left": "Left in a menu", + "keybind_key_right": "Right in a menu", + "keybind_key_enter": "Confirm item in menu", + "keybind_key_close": "Closing a menu", + "keybind_key_close_all": "Close all menus (including parents)", + "open_menu": "Open menu '%s' with this key" + } +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/languages/es.json b/resources/[core]/menuv/source/languages/es.json new file mode 100644 index 0000000..59e6de8 --- /dev/null +++ b/resources/[core]/menuv/source/languages/es.json @@ -0,0 +1,21 @@ +{ + "language":"es", + "translators":[ + { + "name":"Apolo", + "github":"https://github.com/apolo-sys" + } + ], + "translations":{ + "keyboard":"Teclado", + "controller":"Mando", + "keybind_key_up":"Tecla para subir", + "keybind_key_down":"Tecla para bajar", + "keybind_key_left":"Tecla para mover a la izquierda", + "keybind_key_right":"Tecla para mover a la derecha", + "keybind_key_enter":"Tecla para confirmar (ENTER)", + "keybind_key_close":"Cerrar menú", + "keybind_key_close_all":"Cerrar todos los menús", + "open_menu":"El menú '%s' se abre con esta tecla" + } +} diff --git a/resources/[core]/menuv/source/languages/fr.json b/resources/[core]/menuv/source/languages/fr.json new file mode 100644 index 0000000..1a91fb5 --- /dev/null +++ b/resources/[core]/menuv/source/languages/fr.json @@ -0,0 +1,22 @@ +{ + "language": "fr", + "translators": [ + { + "name": "Korioz", + "emails": ["pro.korioz@protonmail.com"], + "github": "https://github.com/Korioz" + } + ], + "translations": { + "keyboard": "Clavier", + "controller": "Manette", + "keybind_key_up": "Haut dans un menu", + "keybind_key_down": "Bas dans un menu", + "keybind_key_left": "Gauche dans un menu", + "keybind_key_right": "Droite dans un menu", + "keybind_key_enter": "Confirmer dans un menu", + "keybind_key_close": "Fermer un menu", + "keybind_key_close_all": "Fermer tout les menus", + "open_menu": "Ouvrir menu '%s'" + } +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/languages/nl.json b/resources/[core]/menuv/source/languages/nl.json new file mode 100644 index 0000000..9b8333b --- /dev/null +++ b/resources/[core]/menuv/source/languages/nl.json @@ -0,0 +1,22 @@ +{ + "language": "nl", + "translators": [ + { + "name": "ThymonA", + "emails": ["contact@thymonarens.nl"], + "github": "https://github.com/ThymonA" + } + ], + "translations": { + "keyboard": "Toetsenbord", + "controller": "Controller", + "keybind_key_up": "Omhoog in een menu", + "keybind_key_down": "Omlaag in een menu", + "keybind_key_left": "Links in een menu", + "keybind_key_right": "Rechts in een menu", + "keybind_key_enter": "Item bevestigen in menu", + "keybind_key_close": "Sluiten van een menu", + "keybind_key_close_all": "Sluit alle menu's (inclusief ouders)", + "open_menu": "Menu '%s' openen met deze key" + } +} \ No newline at end of file diff --git a/resources/[core]/menuv/source/languages/pt.json b/resources/[core]/menuv/source/languages/pt.json new file mode 100644 index 0000000..ed25deb --- /dev/null +++ b/resources/[core]/menuv/source/languages/pt.json @@ -0,0 +1,21 @@ +{ + "language": "pt", + "translators": [ + { + "name": "Murilo Balbino", + "github": "https://github.com/l1ru" + } + ], + "translations": { + "keyboard": "Teclado", + "controller": "Controle", + "keybind_key_up": "Subir no Menu", + "keybind_key_down": "Descer no Menu", + "keybind_key_left": "Esquerda no Menu", + "keybind_key_right": "Direita no Menu", + "keybind_key_enter": "Confirmar item no menu", + "keybind_key_close": "Fechando um menu", + "keybind_key_close_all": "Feche todos os menus", + "open_menu": "Abrir menu com a tecla '%s'" + } +} diff --git a/resources/[core]/menuv/source/menuv.lua b/resources/[core]/menuv/source/menuv.lua new file mode 100644 index 0000000..b50233d --- /dev/null +++ b/resources/[core]/menuv/source/menuv.lua @@ -0,0 +1,638 @@ +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +local assert = assert +local pairs = assert(pairs) +local rawget = assert(rawget) +local rawset = assert(rawset) +local insert = assert(table.insert) +local remove = assert(table.remove) +local format = assert(string.format) +local upper = assert(string.upper) +local lower = assert(string.lower) +local setmetatable = assert(setmetatable) + +--- FiveM globals +local GET_CURRENT_RESOURCE_NAME = assert(GetCurrentResourceName) +local HAS_STREAMED_TEXTURE_DICT_LOADED = assert(HasStreamedTextureDictLoaded) +local REQUEST_STREAMED_TEXTURE_DICT = assert(RequestStreamedTextureDict) +local REGISTER_KEY_MAPPING = assert(RegisterKeyMapping) +local REGISTER_COMMAND = assert(RegisterCommand) +local GET_HASH_KEY = assert(GetHashKey) +local CreateThread = assert(Citizen.CreateThread) +local Wait = assert(Citizen.Wait) + +---@load 'config.lua' +---@load 'app/lua_components/utilities.lua' +---@load 'app/lua_components/item.lua' +---@load 'app/lua_components/menu.lua' +---@load 'app/lua_components/translations.lua' + +--- MenuV table +local menuv_table = { + ---@type string + __class = 'MenuV', + ---@type string + __type = 'MenuV', + ---@type Menu|nil + CurrentMenu = nil, + ---@type string|nil + CurrentUpdateUUID = nil, + ---@type string + CurrentResourceName = GET_CURRENT_RESOURCE_NAME(), + ---@type boolean + Loaded = false, + ---@type Menu[] + Menus = {}, + ---@type Menu[] + ParentMenus = {}, + ---@type table + NUICallbacks = {}, + ---@type table + Translations = translations, + ---@class keys + Keys = setmetatable({ data = {}, __class = 'MenuVKeys', __type = 'keys' }, { + __index = function(t, k) + return rawget(t.data, k) + end, + __newindex = function(t, actionHax, v) + actionHax = Utilities:Ensure(actionHax, 'unknown') + + if (actionHax == 'unknown') then return end + + local rawKey = rawget(t.data, actionHax) + local keyExists = rawKey ~= nil + local prevState = Utilities:Ensure((rawKey or {}).status, false) + local newState = Utilities:Ensure(v, false) + + if (keyExists) then + rawset(t.data[actionHax], 'status', newState) + + if (prevState ~= newState and newState) then + rawKey.func(rawKey.menu) + end + end + end, + __call = function(t, actionHax, m, actionFunc, inputType) + actionHax = Utilities:Ensure(actionHax, 'unknown') + m = Utilities:Typeof(m) == 'Menu' and m or nil + actionFunc = Utilities:Ensure(actionFunc, function() end) + inputType = Utilities:Ensure(inputType, 'KEYBOARD') + inputType = upper(inputType) + + if (actionHax == 'unknown') then return end + + local rawKey = rawget(t.data, actionHax) + local keyExists = rawKey ~= nil + + if (keyExists) then + if not rawKey.inputTypes[inputType] then + rawKey.inputTypes[inputType] = true + end + + return + end + + rawset(t.data, actionHax, { status = false, menu = m, func = actionFunc, inputTypes = { [inputType] = true } }) + end + }) +} + +---@class MenuV +MenuV = setmetatable(menuv_table, {}) + +--- Send a NUI message to MenuV resource +---@param input any +local SEND_NUI_MESSAGE = function(input) + exports['menuv']:SendNUIMessage(input) +end + +--- Register a NUI callback event +---@param name string Name of callback +---@param cb function Callback to execute +local REGISTER_NUI_CALLBACK = function(name, cb) + name = Utilities:Ensure(name, 'unknown') + cb = Utilities:Ensure(cb, function(_, cb) cb('ok') end) + + MenuV.NUICallbacks[name] = cb +end + +--- Load translation +---@param k string Translation key +---@return string Translation or 'MISSING TRANSLATION' +function MenuV:T(k) + k = Utilities:Ensure(k, 'unknown') + + return Utilities:Ensure(MenuV.Translations[k], 'MISSING TRANSLATION') +end + +--- Create a `MenuV` menu +---@param title string Title of Menu +---@param subtitle string Subtitle of Menu +---@param position string Position of Menu +---@param r number 0-255 RED +---@param g number 0-255 GREEN +---@param b number 0-255 BLUE +---@param size string | "'size-100'" | "'size-110'" | "'size-125'" | "'size-150'" | "'size-175'" | "'size-200'" +---@param texture string Name of texture example: "default" +---@param dictionary string Name of dictionary example: "menuv" +---@param namespace string Namespace of Menu +---@param theme string Theme of Menu +---@return Menu +function MenuV:CreateMenu(title, subtitle, position, r, g, b, size, texture, dictionary, namespace, theme) + local menu = CreateMenu({ + Theme = theme, + Title = title, + Subtitle = subtitle, + Position = position, + R = r, + G = g, + B = b, + Size = size, + Texture = texture, + Dictionary = dictionary, + Namespace = namespace + }) + + local index = #(self.Menus or {}) + 1 + + insert(self.Menus, index, menu) + + return self.Menus[index] or menu +end + +--- Create a menu that inherits properties from another menu +---@param parent Menu|string Menu or UUID of menu +---@param overrides table Properties to override in menu object (ignore parent) +---@param namespace string Namespace of menu +function MenuV:InheritMenu(parent, overrides, namespace) + overrides = Utilities:Ensure(overrides, {}) + + local uuid = Utilities:Typeof(parent) == 'Menu' and parent.UUID or Utilities:Typeof(parent) == 'string' and parent + + if (uuid == nil) then return end + + local parentMenu = self:GetMenu(uuid) + + if (parentMenu == nil) then return end + + local menu = CreateMenu({ + Theme = Utilities:Ensure(overrides.theme or overrides.Theme, parentMenu.Theme), + Title = Utilities:Ensure(overrides.title or overrides.Title, parentMenu.Title), + Subtitle = Utilities:Ensure(overrides.subtitle or overrides.Subtitle, parentMenu.Subtitle), + Position = Utilities:Ensure(overrides.position or overrides.Position, parentMenu.Position), + R = Utilities:Ensure(overrides.r or overrides.R, parentMenu.Color.R), + G = Utilities:Ensure(overrides.g or overrides.G, parentMenu.Color.G), + B = Utilities:Ensure(overrides.b or overrides.B, parentMenu.Color.B), + Size = Utilities:Ensure(overrides.size or overrides.Size, parentMenu.Size), + Texture = Utilities:Ensure(overrides.texture or overrides.Texture, parentMenu.Texture), + Dictionary = Utilities:Ensure(overrides.dictionary or overrides.Dictionary, parentMenu.Dictionary), + Namespace = Utilities:Ensure(namespace, 'unknown') + }) + + local index = #(self.Menus or {}) + 1 + + insert(self.Menus, index, menu) + + return self.Menus[index] or menu +end + +--- Load a menu based on `uuid` +---@param uuid string UUID of menu +---@return Menu|nil Founded menu or `nil` +function MenuV:GetMenu(uuid) + uuid = Utilities:Ensure(uuid, '00000000-0000-0000-0000-000000000000') + + for _, v in pairs(self.Menus) do + if (v.UUID == uuid) then + return v + end + end + + return nil +end + +--- Open a menu +---@param menu Menu|string Menu or UUID of Menu +---@param cb function Execute this callback when menu has opened +function MenuV:OpenMenu(menu, cb, reopen) + local uuid = Utilities:Typeof(menu) == 'Menu' and menu.UUID or Utilities:Typeof(menu) == 'string' and menu + + if (uuid == nil) then return end + + cb = Utilities:Ensure(cb, function() end) + + menu = self:GetMenu(uuid) + + if (menu == nil) then return end + + local dictionaryLoaded = HAS_STREAMED_TEXTURE_DICT_LOADED(menu.Dictionary) + + if (not self.Loaded or not dictionaryLoaded) then + if (not dictionaryLoaded) then REQUEST_STREAMED_TEXTURE_DICT(menu.Dictionary) end + + CreateThread(function() + repeat Wait(0) until MenuV.Loaded + + if (not dictionaryLoaded) then + repeat Wait(10) until HAS_STREAMED_TEXTURE_DICT_LOADED(menu.Dictionary) + end + + MenuV:OpenMenu(uuid, cb) + end) + return + end + + if (self.CurrentMenu ~= nil) then + insert(self.ParentMenus, self.CurrentMenu) + + self.CurrentMenu:RemoveOnEvent('update', self.CurrentUpdateUUID) + self.CurrentMenu:DestroyThreads() + end + + self.CurrentMenu = menu + self.CurrentUpdateUUID = menu:On('update', function(m, k, v) + k = Utilities:Ensure(k, 'unknown') + + if (k == 'Title' or k == 'title') then + SEND_NUI_MESSAGE({ action = 'UPDATE_TITLE', title = Utilities:Ensure(v, 'MenuV'), __uuid = m.UUID }) + elseif (k == 'Subtitle' or k == 'subtitle') then + SEND_NUI_MESSAGE({ action = 'UPDATE_SUBTITLE', subtitle = Utilities:Ensure(v, ''), __uuid = m.UUID }) + elseif (k == 'Items' or k == 'items') then + SEND_NUI_MESSAGE({ action = 'UPDATE_ITEMS', items = (m.Items:ToTable() or {}), __uuid = m.UUID }) + elseif (k == 'Item' or k == 'item' and Utilities:Typeof(v) == 'Item') then + SEND_NUI_MESSAGE({ action = 'UPDATE_ITEM', item = m.Items:ItemToTable(v) or {}, __uuid = m.UUID }) + elseif (k == 'AddItem' or k == 'additem' and Utilities:Typeof(v) == 'Item') then + SEND_NUI_MESSAGE({ action = 'ADD_ITEM', item = m.Items:ItemToTable(v), __uuid = m.UUID }) + elseif (k == 'RemoveItem' or k == 'removeitem' and Utilities:Typeof(v) == 'Item') then + SEND_NUI_MESSAGE({ action = 'REMOVE_ITEM', uuid = v.UUID, __uuid = m.UUID }) + elseif (k == 'UpdateItem' or k == 'updateitem' and Utilities:Typeof(v) == 'Item') then + SEND_NUI_MESSAGE({ action = 'UPDATE_ITEM', item = m.Items:ItemToTable(v) or {}, __uuid = m.UUID }) + end + end) + + SEND_NUI_MESSAGE({ + action = 'OPEN_MENU', + menu = menu:ToTable(), + reopen = Utilities:Ensure(reopen, false) + }) + + cb() +end + +function MenuV:Refresh() + if (self.CurrentMenu == nil) then + return + end + + SEND_NUI_MESSAGE({ + action = 'REFRESH_MENU', + menu = self.CurrentMenu:ToTable() + }) +end + +--- Close a menu +---@param menu Menu|string Menu or UUID of Menu +---@param cb function Execute this callback when menu has is closed or parent menu has opened +function MenuV:CloseMenu(menu, cb) + local uuid = Utilities:Typeof(menu) == 'Menu' and menu.UUID or Utilities:Typeof(menu) == 'string' and menu + + if (uuid == nil) then cb() return end + + cb = Utilities:Ensure(cb, function() end) + menu = self:GetMenu(uuid) + + if (menu == nil or self.CurrentMenu == nil or self.CurrentMenu.UUID ~= uuid) then cb() return end + + self.CurrentMenu:RemoveOnEvent('update', self.CurrentUpdateUUID) + self.CurrentMenu:Trigger('close') + self.CurrentMenu:DestroyThreads() + self.CurrentMenu = nil + + SEND_NUI_MESSAGE({ action = 'CLOSE_MENU', uuid = uuid }) + + if (#self.ParentMenus <= 0) then cb() return end + + local prev_index = #self.ParentMenus + local prev_menu = self.ParentMenus[prev_index] or nil + + if (prev_menu == nil) then cb() return end + + remove(self.ParentMenus, prev_index) + + self:OpenMenu(prev_menu, function() + cb() + end, true) +end + +--- Close all menus +---@param cb function Execute this callback when all menus are closed +function MenuV:CloseAll(cb) + cb = Utilities:Ensure(cb, function() end) + + if (not self.Loaded) then + CreateThread(function() + repeat Wait(0) until MenuV.Loaded + + MenuV:CloseAll(cb) + end) + return + end + + if (self.CurrentMenu == nil) then cb() return end + + local uuid = Utilities:Ensure(self.CurrentMenu.UUID, '00000000-0000-0000-0000-000000000000') + + self.CurrentMenu:RemoveOnEvent('update', self.CurrentUpdateUUID) + self.CurrentMenu:Trigger('close') + self.CurrentMenu:DestroyThreads() + + SEND_NUI_MESSAGE({ action = 'CLOSE_MENU', uuid = uuid }) + + self.CurrentMenu = nil + self.ParentMenus = {} + + cb() +end + +--- Register keybind for specific menu +---@param menu Menu|string MenuV menu +---@param action string Name of action +---@param func function This will be executed +---@param description string Key description +---@param defaultType string Default key type +---@param defaultKey string Default key +function MenuV:AddControlKey(menu, action, func, description, defaultType, defaultKey) + local uuid = Utilities:Typeof(menu) == 'Menu' and menu.UUID or Utilities:Typeof(menu) == 'string' and menu + + action = Utilities:Ensure(action, 'UNKNOWN') + func = Utilities:Ensure(func, function() end) + description = Utilities:Ensure(description, 'unknown') + defaultType = Utilities:Ensure(defaultType, 'KEYBOARD') + defaultType = upper(defaultType) + defaultKey = Utilities:Ensure(defaultKey, 'F12') + + local m = self:GetMenu(uuid) + + if (m == nil) then return end + + if (Utilities:Typeof(m.Namespace) ~= 'string' or m.Namespace == 'unknown') then + error('[MenuV] Namespace is required for assigning keys.') + return + end + + action = Utilities:Replace(action, ' ', '_') + action = upper(action) + + local resourceName = Utilities:Ensure(self.CurrentResourceName, 'unknown') + local namespace = Utilities:Ensure(m.Namespace, 'unknown') + local actionHash = GET_HASH_KEY(('%s_%s_%s'):format(resourceName, namespace, action)) + local actionHax = format('%x', actionHash) + + local typeGroup = Utilities:GetInputTypeGroup(defaultType) + + if (self.Keys[actionHax] and self.Keys[actionHax].inputTypes[typeGroup]) then return end + + self.Keys(actionHax, m, func, typeGroup) + + local k = actionHax + + if typeGroup > 0 then + local inputGroupName = Utilities:GetInputGroupName(typeGroup) + k = ('%s_%s'):format(lower(inputGroupName), k) + end + + REGISTER_KEY_MAPPING(('+%s'):format(k), description, defaultType, defaultKey) + REGISTER_COMMAND(('+%s'):format(k), function() MenuV.Keys[actionHax] = true end) + REGISTER_COMMAND(('-%s'):format(k), function() MenuV.Keys[actionHax] = false end) +end + +--- Checks if namespace is available +---@param namespace string Namespace +---@return boolean Returns `true` if given namespace is available +function MenuV:IsNamespaceAvailable(namespace) + namespace = lower(Utilities:Ensure(namespace, 'unknown')) + + if (namespace == 'unknown') then return true end + + ---@param v Menu + for k, v in pairs(self.Menus or {}) do + local v_namespace = Utilities:Ensure(v.Namespace, 'unknown') + + if (namespace == lower(v_namespace)) then + return false + end + end + + return true +end + + +--- Mark MenuV as loaded when `main` resource is loaded +exports['menuv']:IsLoaded(function() + MenuV.Loaded = true +end) + +--- Register callback handler for MenuV +exports('NUICallback', function(name, info, cb) + name = Utilities:Ensure(name, 'unknown') + + if (MenuV.NUICallbacks == nil or MenuV.NUICallbacks[name] == nil) then + return + end + + MenuV.NUICallbacks[name](info, cb) +end) + +REGISTER_NUI_CALLBACK('open', function(info, cb) + local uuid = Utilities:Ensure(info.uuid, '00000000-0000-0000-0000-000000000000') + local new_uuid = Utilities:Ensure(info.new_uuid, '00000000-0000-0000-0000-000000000000') + + cb('ok') + + if (MenuV.CurrentMenu == nil or MenuV.CurrentMenu.UUID == uuid or MenuV.CurrentMenu.UUID == new_uuid) then return end + + for _, v in pairs(MenuV.ParentMenus) do + if (v.UUID == uuid) then + return + end + end + + MenuV.CurrentMenu:RemoveOnEvent('update', MenuV.CurrentUpdateUUID) + MenuV.CurrentMenu:Trigger('close') + MenuV.CurrentMenu:DestroyThreads() + MenuV.CurrentMenu = nil + MenuV.ParentMenus = {} +end) + +REGISTER_NUI_CALLBACK('opened', function(info, cb) + local uuid = Utilities:Ensure(info.uuid, '00000000-0000-0000-0000-000000000000') + + cb('ok') + + if (MenuV.CurrentMenu == nil or MenuV.CurrentMenu.UUID ~= uuid) then return end + + MenuV.CurrentMenu:Trigger('open') +end) + +REGISTER_NUI_CALLBACK('submit', function(info, cb) + local uuid = Utilities:Ensure(info.uuid, '00000000-0000-0000-0000-000000000000') + + cb('ok') + + if (MenuV.CurrentMenu == nil) then return end + + for k, v in pairs(MenuV.CurrentMenu.Items) do + if (v.UUID == uuid) then + if (v.__type == 'confirm' or v.__type == 'checkbox') then + v.Value = Utilities:Ensure(info.value, false) + elseif (v.__type == 'range') then + v.Value = Utilities:Ensure(info.value, v.Min) + elseif (v.__type == 'slider') then + v.Value = Utilities:Ensure(info.value, 0) + 1 + end + + MenuV.CurrentMenu:Trigger('select', v) + + if (v.__type == 'button' or v.__type == 'menu') then + MenuV.CurrentMenu.Items[k]:Trigger('select') + elseif (v.__type == 'range') then + MenuV.CurrentMenu.Items[k]:Trigger('select', v.Value) + elseif (v.__type == 'slider') then + local option = MenuV.CurrentMenu.Items[k].Values[v.Value] or nil + + if (option == nil) then return end + + MenuV.CurrentMenu.Items[k]:Trigger('select', option.Value) + end + + return + end + end +end) + +REGISTER_NUI_CALLBACK('close', function(info, cb) + local uuid = Utilities:Ensure(info.uuid, '00000000-0000-0000-0000-000000000000') + + if (MenuV.CurrentMenu == nil or MenuV.CurrentMenu.UUID ~= uuid) then cb('ok') return end + + MenuV.CurrentMenu:RemoveOnEvent('update', MenuV.CurrentUpdateUUID) + MenuV.CurrentMenu:Trigger('close') + MenuV.CurrentMenu:DestroyThreads() + MenuV.CurrentMenu = nil + + if (#MenuV.ParentMenus <= 0) then cb('ok') return end + + local prev_index = #MenuV.ParentMenus + local prev_menu = MenuV.ParentMenus[prev_index] or nil + + if (prev_menu == nil) then cb('ok') return end + + remove(MenuV.ParentMenus, prev_index) + + MenuV:OpenMenu(prev_menu, function() + cb('ok') + end, true) +end) + +REGISTER_NUI_CALLBACK('close_all', function(info, cb) + if (MenuV.CurrentMenu == nil) then + for _, parentMenu in ipairs(MenuV.ParentMenus) do + parentMenu:Trigger('close') + end + MenuV.ParentMenus = {} + + cb('ok') + return + end + + MenuV.CurrentMenu:RemoveOnEvent('update', MenuV.CurrentUpdateUUID) + MenuV.CurrentMenu:Trigger('close') + MenuV.CurrentMenu:DestroyThreads() + MenuV.CurrentMenu = nil + for _, parentMenu in ipairs(MenuV.ParentMenus) do + parentMenu:Trigger('close') + end + MenuV.ParentMenus = {} + + cb('ok') +end) + +REGISTER_NUI_CALLBACK('switch', function(info, cb) + local prev_uuid = Utilities:Ensure(info.prev, '00000000-0000-0000-0000-000000000000') + local next_uuid = Utilities:Ensure(info.next, '00000000-0000-0000-0000-000000000000') + local prev_item, next_item = nil, nil + + cb('ok') + + if (MenuV.CurrentMenu == nil) then return end + + for k, v in pairs(MenuV.CurrentMenu.Items) do + if (v.UUID == prev_uuid) then + prev_item = v + + MenuV.CurrentMenu.Items[k]:Trigger('leave') + end + + if (v.UUID == next_uuid) then + next_item = v + + MenuV.CurrentMenu.Items[k]:Trigger('enter') + end + end + + if (prev_item ~= nil and next_item ~= nil) then + MenuV.CurrentMenu:Trigger('switch', next_item, prev_item) + end +end) + +REGISTER_NUI_CALLBACK('update', function(info, cb) + local uuid = Utilities:Ensure(info.uuid, '00000000-0000-0000-0000-000000000000') + + cb('ok') + + if (MenuV.CurrentMenu == nil) then return end + + for k, v in pairs(MenuV.CurrentMenu.Items) do + if (v.UUID == uuid) then + local newValue, oldValue = nil, nil + + if (v.__type == 'confirm' or v.__type == 'checkbox') then + newValue = Utilities:Ensure(info.now, false) + oldValue = Utilities:Ensure(info.prev, false) + elseif (v.__type == 'range') then + newValue = Utilities:Ensure(info.now, v.Min) + oldValue = Utilities:Ensure(info.prev, v.Min) + elseif (v.__type == 'slider') then + newValue = Utilities:Ensure(info.now, 0) + 1 + oldValue = Utilities:Ensure(info.prev, 0) + 1 + end + + if (Utilities:Any(v.__type, { 'button', 'menu', 'label' }, 'value')) then return end + + MenuV.CurrentMenu:Trigger('update', v, newValue, oldValue) + MenuV.CurrentMenu.Items[k]:Trigger('change', newValue, oldValue) + + if (v.SaveOnUpdate) then + MenuV.CurrentMenu.Items[k].Value = newValue + + if (v.__type == 'range') then + MenuV.CurrentMenu.Items[k]:Trigger('select', v.Value) + elseif (v.__type == 'slider') then + local option = MenuV.CurrentMenu.Items[k].Values[v.Value] or nil + + if (option == nil) then return end + + MenuV.CurrentMenu.Items[k]:Trigger('select', option.Value) + end + end + return + end + end +end) diff --git a/resources/[core]/menuv/templates/default.png b/resources/[core]/menuv/templates/default.png new file mode 100644 index 0000000..ff207ab Binary files /dev/null and b/resources/[core]/menuv/templates/default.png differ diff --git a/resources/[core]/menuv/templates/default_native.png b/resources/[core]/menuv/templates/default_native.png new file mode 100644 index 0000000..9b23d8e Binary files /dev/null and b/resources/[core]/menuv/templates/default_native.png differ diff --git a/resources/[core]/menuv/templates/example.png b/resources/[core]/menuv/templates/example.png new file mode 100644 index 0000000..6946743 Binary files /dev/null and b/resources/[core]/menuv/templates/example.png differ diff --git a/resources/[core]/menuv/templates/menuv.ytd b/resources/[core]/menuv/templates/menuv.ytd new file mode 100644 index 0000000..06d2039 Binary files /dev/null and b/resources/[core]/menuv/templates/menuv.ytd differ diff --git a/resources/[core]/menuv/templates/template.psd b/resources/[core]/menuv/templates/template.psd new file mode 100644 index 0000000..9fe1e62 Binary files /dev/null and b/resources/[core]/menuv/templates/template.psd differ diff --git a/resources/[core]/menuv/webpack.config.js b/resources/[core]/menuv/webpack.config.js new file mode 100644 index 0000000..e5fe9cd --- /dev/null +++ b/resources/[core]/menuv/webpack.config.js @@ -0,0 +1,56 @@ +/** +----------------------- [ MenuV ] ----------------------- +-- GitHub: https://github.com/ThymonA/menuv/ +-- License: GNU General Public License v3.0 +-- https://choosealicense.com/licenses/gpl-3.0/ +-- Author: Thymon Arens +-- Name: MenuV +-- Version: 1.0.0 +-- Description: FiveM menu library for creating menu's +----------------------- [ MenuV ] ----------------------- +*/ +const HTML_WEBPACK_PLUGIN = require('html-webpack-plugin'); +const VUE_LOADER_PLUGIN = require('vue-loader/lib/plugin'); +const COPY_PLUGIN = require('copy-webpack-plugin'); + +module.exports = { + mode: 'production', + entry: './source/app/load.ts', + module: { + rules: [ + { + test: /\.ts$/, + loader: 'ts-loader', + exclude: /node_modules/, + options: { appendTsSuffixTo: [/\.vue$/] } + }, + { + test: /\.vue$/, + loader: 'vue-loader' + } + ] + }, + plugins: [ + new VUE_LOADER_PLUGIN(), + new HTML_WEBPACK_PLUGIN({ + inlineSource: '.(js|css)$', + template: './source/app/html/menuv.html', + filename: 'menuv.html' + }), + new COPY_PLUGIN({ + patterns: [ + { from: 'source/app/html/assets/css/main.css', to: 'assets/css/main.css' }, + { from: 'source/app/html/assets/css/native_theme.css', to: 'assets/css/native_theme.css' }, + { from: 'source/app/html/assets/fonts/SignPainterHouseScript.woff', to: 'assets/fonts/SignPainterHouseScript.woff' }, + { from: 'source/app/html/assets/fonts/TTCommons.woff', to: 'assets/fonts/TTCommons.woff' } + ], + }) + ], + resolve: { + extensions: [ '.ts', '.js' ] + }, + output: { + filename: './assets/js/menuv.js', + path: __dirname + '/dist/' + } +}; \ No newline at end of file diff --git a/resources/[core]/progressbar/README.md b/resources/[core]/progressbar/README.md new file mode 100644 index 0000000..f0407b4 --- /dev/null +++ b/resources/[core]/progressbar/README.md @@ -0,0 +1,127 @@ +# Progressbar + +Dependency for creating progressbars in QB-Core. + +# Usage + +## QB-Core Functions + +### Client + +- QBCore.Functions.Progressbar(**name**: string, **label**: string, **duration**: number, **useWhileDead**: boolean, **canCancel**: boolean, **disableControls**: table, **animation**: table, **prop**: table, **propTwo**: table, **onFinish**: function, **onCancel**: function) + > Create a new progressbar from the built in qb-core functions.
+ > **Example:** + > ```lua + >QBCore.Functions.Progressbar("random_task", "Doing something", 5000, false, true, { + > disableMovement = false, + > disableCarMovement = false, + > disableMouse = false, + > disableCombat = true, + >}, { + > animDict = "mp_suicide", + > anim = "pill", + > flags = 49, + >}, {}, {}, function() + > -- Done + >end, function() + > -- Cancel + >end) + > ``` + +## Exports + +### Client + +- Progress(**data**: string, **handler**: function) + > Creates a new progress bar directly from the export, always use the built in qb-core function if possible.
+ > **Example:** + > ```lua + >exports['progressbar']:Progress({ + > name = "random_task", + > duration = 5000, + > label = "Doing something", + > useWhileDead = false, + > canCancel = true, + > controlDisables = { + > disableMovement = false, + > disableCarMovement = false, + > disableMouse = false, + > disableCombat = true, + > }, + > animation = { + > animDict = "mp_suicide", + > anim = "pill", + > flags = 49, + > }, + > prop = {}, + > propTwo = {} + >}, function(cancelled) + > if not cancelled then + > -- finished + > else + > -- cancelled + > end + >end) + > ``` + > **Props Example:** + > ```lua + >exports['progressbar']:Progress({ + > name = "random_task", + > duration = 5000, + > label = "Doing something", + > useWhileDead = false, + > canCancel = true, + > controlDisables = { + > disableMovement = false, + > disableCarMovement = false, + > disableMouse = false, + > disableCombat = true, + > }, + > animation = { + > animDict = "missheistdockssetup1clipboard@base", + > anim = "pill", + > flags = 49, + > }, + > prop = { + > model = 'prop_notepad_01', + > bone = 18905, + > coords = vec3(0.1, 0.02, 0.05), + > rotation = vec3(10.0, 0.0, 0.0), + > }, + > propTwo = { + > model = 'prop_pencil_01', + > bone = 58866, + > coords = vec3(0.11, -0.02, 0.001), + > rotation = vec3(-120.0, 0.0, 0.0), + > } + >}, function(cancelled) + > if not cancelled then + > -- finished + > else + > -- cancelled + > end + >end) + > ``` + + - isDoingSomething() + > Returns a boolean (true/false) depending on if a progressbar is present.
+ > **Example:** + > ```lua + > local busy = exports["progressbar"]:isDoingSomething() + > ``` + + - ProgressWithStartEvent(**data**: table, **start**: function, **finish**: function) + > Works like a normal progressbar, the data parameter should be the same as the data passed into the `Progress` export above.
+ > The start function gets triggered upon the start of the progressbar.
+ > The finish handler is the same as the `handler` parameter in the `Progress` export above. + + - ProgressWithTickEvent(**data**: table, **tick**: function, **finish**: function) + > Works like a normal progressbar, the data parameter should be the same as the data passed into the `Progress` export above.
+ > The tick function gets triggered every frame while the progressbar is active.
+ > The finish handler is the same as the `handler` parameter in the `Progress` export above. + + - ProgressWithTickEvent(**data**: table, **start**: function, **tick**: function, **finish**: function) + > Works like a normal progressbar, the data parameter should be the same as the data passed into the `Progress` export above.
+ > The start function gets triggered upon the start of the progressbar.
+ > The tick function gets triggered every frame while the progressbar is active.
+ > The finish handler is the same as the `handler` parameter in the `Progress` export above. diff --git a/resources/[core]/progressbar/client.lua b/resources/[core]/progressbar/client.lua new file mode 100644 index 0000000..387dae0 --- /dev/null +++ b/resources/[core]/progressbar/client.lua @@ -0,0 +1,252 @@ +local Action = { + name = '', + duration = 0, + label = '', + useWhileDead = false, + canCancel = true, + disarm = true, + controlDisables = { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = false, + }, + animation = { + animDict = nil, + anim = nil, + flags = 0, + task = nil, + }, + prop = { + model = nil, + bone = nil, + coords = vec3(0.0, 0.0, 0.0), + rotation = vec3(0.0, 0.0, 0.0), + }, + propTwo = { + model = nil, + bone = nil, + coords = vec3(0.0, 0.0, 0.0), + rotation = vec3(0.0, 0.0, 0.0), + }, +} + +local isDoingAction = false +local wasCancelled = false +local prop_net = nil +local propTwo_net = nil +local isAnim = false +local isProp = false +local isPropTwo = false + +local controls = { + disableMouse = { 1, 2, 106 }, + disableMovement = { 30, 31, 36, 21, 75 }, + disableCarMovement = { 63, 64, 71, 72 }, + disableCombat = { 24, 25, 37, 47, 58, 140, 141, 142, 143, 263, 264, 257 } +} + +-- Functions + +local function loadAnimDict(dict) + RequestAnimDict(dict) + while not HasAnimDictLoaded(dict) do + Wait(5) + end +end + +local function loadModel(model) + RequestModel(model) + while not HasModelLoaded(model) do + Wait(5) + end +end + +local function createAndAttachProp(prop, ped) + loadModel(prop.model) + local coords = GetOffsetFromEntityInWorldCoords(ped, 0.0, 0.0, 0.0) + local propEntity = CreateObject(GetHashKey(prop.model), coords.x, coords.y, coords.z, true, true, true) + local netId = ObjToNet(propEntity) + SetNetworkIdExistsOnAllMachines(netId, true) + NetworkUseHighPrecisionBlending(netId, true) + SetNetworkIdCanMigrate(netId, false) + local boneIndex = GetPedBoneIndex(ped, prop.bone or 60309) + AttachEntityToEntity( + propEntity, ped, boneIndex, + prop.coords.x, prop.coords.y, prop.coords.z, + prop.rotation.x, prop.rotation.y, prop.rotation.z, + true, true, false, true, 0, true + ) + return netId +end + +local function disableControls() + CreateThread(function() + while isDoingAction do + for disableType, isEnabled in pairs(Action.controlDisables) do + if isEnabled and controls[disableType] then + for _, control in ipairs(controls[disableType]) do + DisableControlAction(0, control, true) + end + end + end + if Action.controlDisables.disableCombat then + DisablePlayerFiring(PlayerId(), true) + end + Wait(0) + end + end) +end + +local function StartActions() + local ped = PlayerPedId() + if isDoingAction then + if not isAnim and Action.animation then + if Action.animation.task then + TaskStartScenarioInPlace(ped, Action.animation.task, 0, true) + else + local anim = Action.animation + if anim.animDict and anim.anim and DoesEntityExist(ped) and not IsEntityDead(ped) then + loadAnimDict(anim.animDict) + TaskPlayAnim(ped, anim.animDict, anim.anim, 3.0, 3.0, -1, anim.flags or 1, 0, false, false, false) + end + end + isAnim = true + end + if not isProp and Action.prop and Action.prop.model then + prop_net = createAndAttachProp(Action.prop, ped) + isProp = true + end + if not isPropTwo and Action.propTwo and Action.propTwo.model then + propTwo_net = createAndAttachProp(Action.propTwo, ped) + isPropTwo = true + end + disableControls() + end +end + +local function StartProgress(action, onStart, onTick, onFinish) + local playerPed = PlayerPedId() + local isPlayerDead = IsEntityDead(playerPed) + if (not isPlayerDead or action.useWhileDead) and not isDoingAction then + isDoingAction = true + LocalPlayer.state:set('inv_busy', true, true) + Action = action + SendNUIMessage({ + action = 'progress', + duration = action.duration, + label = action.label + }) + StartActions() + CreateThread(function() + if onStart then onStart() end + while isDoingAction do + Wait(1) + if onTick then onTick() end + if IsControlJustPressed(0, 200) and action.canCancel then + TriggerEvent('progressbar:client:cancel') + wasCancelled = true + break + end + if IsEntityDead(playerPed) and not action.useWhileDead then + TriggerEvent('progressbar:client:cancel') + wasCancelled = true + break + end + end + if onFinish then onFinish(wasCancelled) end + isDoingAction = false + end) + end +end + +local function ActionCleanup() + local ped = PlayerPedId() + if Action.animation then + if Action.animation.task or (Action.animation.animDict and Action.animation.anim) then + StopAnimTask(ped, Action.animation.animDict, Action.animation.anim, 1.0) + ClearPedSecondaryTask(ped) + else + ClearPedTasks(ped) + end + end + if prop_net then + DetachEntity(NetToObj(prop_net), true, true) + DeleteObject(NetToObj(prop_net)) + end + if propTwo_net then + DetachEntity(NetToObj(propTwo_net), true, true) + DeleteObject(NetToObj(propTwo_net)) + end + prop_net = nil + propTwo_net = nil + isDoingAction = false + wasCancelled = false + isAnim = false + isProp = false + isPropTwo = false + LocalPlayer.state:set('inv_busy', false, true) +end + +-- Events + +RegisterNetEvent('progressbar:client:ToggleBusyness', function(bool) + isDoingAction = bool +end) + +RegisterNetEvent('progressbar:client:progress', function(action, finish) + StartProgress(action, nil, nil, finish) +end) + +RegisterNetEvent('progressbar:client:ProgressWithStartEvent', function(action, start, finish) + StartProgress(action, start, nil, finish) +end) + +RegisterNetEvent('progressbar:client:ProgressWithTickEvent', function(action, tick, finish) + StartProgress(action, nil, tick, finish) +end) + +RegisterNetEvent('progressbar:client:ProgressWithStartAndTick', function(action, start, tick, finish) + StartProgress(action, start, tick, finish) +end) + +RegisterNetEvent('progressbar:client:cancel', function() + ActionCleanup() + SendNUIMessage({ + action = 'cancel' + }) +end) + +-- NUI Callback + +RegisterNUICallback('FinishAction', function(data, cb) + ActionCleanup() + cb('ok') +end) + +-- Exports + +local function Progress(action, finish) + StartProgress(action, nil, nil, finish) +end +exports('Progress', Progress) + +local function ProgressWithStartEvent(action, start, finish) + StartProgress(action, start, nil, finish) +end +exports('ProgressWithStartEvent', ProgressWithStartEvent) + +local function ProgressWithTickEvent(action, tick, finish) + StartProgress(action, nil, tick, finish) +end +exports('ProgressWithTickEvent', ProgressWithTickEvent) + +local function ProgressWithStartAndTick(action, start, tick, finish) + StartProgress(action, start, tick, finish) +end +exports('ProgressWithStartAndTick', ProgressWithStartAndTick) + +local function isDoingSomething() + return isDoingAction +end +exports('isDoingSomething', isDoingSomething) diff --git a/resources/[core]/progressbar/fxmanifest.lua b/resources/[core]/progressbar/fxmanifest.lua new file mode 100644 index 0000000..e227718 --- /dev/null +++ b/resources/[core]/progressbar/fxmanifest.lua @@ -0,0 +1,17 @@ +fx_version 'cerulean' +lua54 'yes' +game 'gta5' + +author 'qbcore-framework' +description 'Dependency for creating progressbars in QB-Core.' +version '1.0.0' + +ui_page 'html/index.html' + +client_script 'client.lua' + +files { + 'html/index.html', + 'html/style.css', + 'html/script.js' +} diff --git a/resources/[core]/progressbar/html/index.html b/resources/[core]/progressbar/html/index.html new file mode 100644 index 0000000..71335f8 --- /dev/null +++ b/resources/[core]/progressbar/html/index.html @@ -0,0 +1,17 @@ + + + + + +
+
+
Loading...
+
0%
+
+
+
+
+
+ + + diff --git a/resources/[core]/progressbar/html/script.js b/resources/[core]/progressbar/html/script.js new file mode 100644 index 0000000..ca075a6 --- /dev/null +++ b/resources/[core]/progressbar/html/script.js @@ -0,0 +1,93 @@ +document.addEventListener("DOMContentLoaded", (event) => { + var ProgressBar = { + init: function () { + this.progressLabel = document.getElementById("progress-label"); + this.progressPercentage = document.getElementById("progress-percentage"); + this.progressBar = document.getElementById("progress-bar"); + this.progressContainer = document.querySelector(".progress-container"); + this.animationFrameRequest = null; + this.setupListeners(); + }, + + setupListeners: function () { + window.addEventListener("message", function (event) { + if (event.data.action === "progress") { + ProgressBar.update(event.data); + } else if (event.data.action === "cancel") { + ProgressBar.cancel(); + } + }); + }, + + update: function (data) { + if (this.animationFrameRequest) { + cancelAnimationFrame(this.animationFrameRequest); + } + clearTimeout(this.cancelledTimer); + + this.progressLabel.textContent = data.label; + this.progressPercentage.textContent = "0%"; + this.progressContainer.style.display = "block"; + let startTime = Date.now(); + let duration = parseInt(data.duration, 10); + + const animateProgress = () => { + let timeElapsed = Date.now() - startTime; + let progress = timeElapsed / duration; + if (progress > 1) progress = 1; + let percentage = Math.round(progress * 100); + this.progressBar.style.width = percentage + "%"; + this.progressPercentage.textContent = percentage + "%"; + if (progress < 1) { + this.animationFrameRequest = requestAnimationFrame(animateProgress); + } else { + this.onComplete(); + } + }; + this.animationFrameRequest = requestAnimationFrame(animateProgress); + }, + + cancel: function () { + if (this.animationFrameRequest) { + cancelAnimationFrame(this.animationFrameRequest); + this.animationFrameRequest = null; + } + this.progressLabel.textContent = "CANCELLED"; + this.progressPercentage.textContent = ""; + this.progressBar.style.width = "100%"; + this.cancelledTimer = setTimeout(this.onCancel.bind(this), 1000); + }, + + onComplete: function () { + this.progressContainer.style.display = "none"; + this.progressBar.style.width = "0"; + this.progressPercentage.textContent = ""; + this.postAction("FinishAction"); + }, + + onCancel: function () { + this.progressContainer.style.display = "none"; + this.progressBar.style.width = "0"; + this.progressPercentage.textContent = ""; + }, + + postAction: function (action) { + fetch(`https://progressbar/${action}`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({}), + }); + }, + + closeUI: function () { + let mainContainer = document.querySelector(".main-container"); + if (mainContainer) { + mainContainer.style.display = "none"; + } + }, + }; + + ProgressBar.init(); +}); diff --git a/resources/[core]/progressbar/html/style.css b/resources/[core]/progressbar/html/style.css new file mode 100644 index 0000000..044b15d --- /dev/null +++ b/resources/[core]/progressbar/html/style.css @@ -0,0 +1,71 @@ +@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@200&display=swap"); + +html { + overflow: hidden; + font-family: "Poppins", sans-serif; +} + +body { + background: transparent !important; + margin: 0; + padding: 0; + overflow: hidden; + height: 100%; + width: 100%; +} + +.progress-container { + display: none; + z-index: 5; + color: #fff; + width: 15%; + position: fixed; + bottom: 15%; + left: 0; + right: 0; + margin-left: auto; + margin-right: auto; + font-family: "Poppins", sans-serif; +} + +.progress-labels { + display: flex; + justify-content: space-between; + align-items: center; +} + +#progress-label { + font-size: 1.3vh; + line-height: 4vh; + position: relative; + color: #ffffff; + z-index: 10; + font-weight: bold; +} + +#progress-percentage { + font-size: 1.3vh; + line-height: 4vh; + position: relative; + color: #ffffff; + z-index: 10; + font-weight: bold; +} + +.progress-bar-container { + background: rgba(0, 0, 0, 0.246); + height: 0.5vh; + position: relative; + display: block; + border-radius: 2px; +} + +#progress-bar { + background-color: #dc143c; + width: 0%; + height: 0.5vh; + border-radius: 2px; + transition: width 0.3s; + transition-timing-function: ease-out; + box-shadow: 0 0 10px rgba(220, 20, 60, 0.6); +} diff --git a/resources/[core]/qb-apartments/.github/ISSUE_TEMPLATE/bug_report.md b/resources/[core]/qb-apartments/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..62f702f --- /dev/null +++ b/resources/[core]/qb-apartments/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,32 @@ +--- +name: Bug report +about: Create a report to help us improve or fix something +title: "[BUG]" +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. A stranger to qbcore should be able to read your bug report and understand how to reproduce it themselves and understand how the feature should work normally. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Use this item '....' (item's name from shared.lua if applicable) +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Questions (please complete the following information):** + - When you last updated: [e.g. last week] + - Are you using custom resource? which ones? [e.g. zdiscord, qb-target] + - Have you renamed `qb-` to something custom? [e.g. yes/no] + +**Additional context** +Add any other context about the problem here. diff --git a/resources/[core]/qb-apartments/.github/ISSUE_TEMPLATE/feature-request.md b/resources/[core]/qb-apartments/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000..9e9bf3e --- /dev/null +++ b/resources/[core]/qb-apartments/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,20 @@ +--- +name: Feature Request +about: Suggest an idea for QBCore +title: "[SUGGESTION]" +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. + +**Describe the feature you'd like** +A clear and concise description of what you want to happen. and with as much detail as possible how it would function in your opinion. Please try to keep it unique. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered for people to have in mind just in case the main idea isn't liked but a derivative is. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/resources/[core]/qb-apartments/.github/auto_assign.yml b/resources/[core]/qb-apartments/.github/auto_assign.yml new file mode 100644 index 0000000..65be3a5 --- /dev/null +++ b/resources/[core]/qb-apartments/.github/auto_assign.yml @@ -0,0 +1,17 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: author + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - qbcore-framework/maintenance + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +skipKeywords: + - wip + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 0 diff --git a/resources/[core]/qb-apartments/.github/contributing.md b/resources/[core]/qb-apartments/.github/contributing.md new file mode 100644 index 0000000..21fb806 --- /dev/null +++ b/resources/[core]/qb-apartments/.github/contributing.md @@ -0,0 +1,201 @@ +# Contributing to QBCore + +First of all, thank you for taking the time to contribute! + +These guidelines will help you help us in the best way possible regardless of your skill level. We ask that you try to read everything related to the way you'd like to contribute and try and use your best judgement for anything not covered. + +### Table of Contents + +[Code of Conduct](#code-of-conduct) + +[I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question) + +[How Can I Contribute?](#how-can-i-contribute) + * [Reporting Bugs](#reporting-bugs) + * [Suggesting Features / Enhancements](#suggesting-features--enhancements) + * [Your First Code Contribution](#your-first-code-contribution) + * [Pull Requests](#pull-requests) + +[Styleguides](#styleguides) + * [Git Commit Messages](#git-commit-messages) + * [Lua Styleguide](#lua-styleguide) + * [JavaScript Styleguide](#javascript-styleguide) + + + +## Code of Conduct + +- Refrain from using languages other than English. +- Refrain from discussing any politically charged or inflammatory topics. +- Uphold mature conversations and respect each other; excessive profanity, hate speech or any kind of harassment will not be tolerated. +- No advertising of any kind. +- Follow these guidelines. +- Do not mention members of github unless a question is directed at them and can't be answered by anyone else. +- Do not mention any of the development team for any reason. We will read things as we get to them. + +## I don't want to read this whole thing I just have a question!!! + +> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below. + +* [QBCore Website](https://qbcore.org) +* [QBCore Discord](https://discord.gg/qbcore) +* [FiveM Discord - #qbcore channel](https://discord.gg/fivem) + + + + + + + + + + +## How Can I Contribute? + +### Reporting Bugs + +The easiest way to contribute for most people is just to report bugs you find cause if nobody reports it there's a chance we'll never know it exists and then we'll never fix it. + +Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out the bug-report template with the information it asks for helps us resolve issues faster. + +> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. + +#### Before Submitting A Bug Report + +* **Check the docs** There's a chance what you see as a bug might just work differently than you expect and if you think it could work better consider a feature enhancement report instead. +* **Search the [discord](https://discord.gg/qbcore)** to see if anyone else has run into the issue and see if it was solved through user error or code changes. (if the code change isn't pending a PR and you know what you're doing consider submitting one following [Pull Requests](#pull-requests) ) +* **Determine which resource the problem should be reported in**. If the bug is related to the inventory for example report this bug under qb-inventory rather than under qb-core or some other resource. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Bug Report? + +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your bug is related to, create an issue on that repository and provide the following information by filling in bug-report template. + +Explain the problem and include additional details to help maintainers reproduce the problem: + +* **Use a clear and descriptive title** for the issue to identify the problem. +* **Describe the exact steps which reproduce the problem** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. If something happened with only a specific group or single item but not others, specify that. +* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. +* **Explain which behavior you expected to see instead and why.** +* **Include screenshots** which show the specific bug in action or before and after. +* **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below. + +Provide more context by answering these questions if possible: + +* **Did the problem start happening recently** (e.g. after updating to a new version of QBCore?) or was this always a problem? +* If the problem started happening recently, **can you reproduce the problem in an older version of QBCore?** What's the most recent commit in which the problem doesn't happen? +* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. + +Include details about your setup: + +* **When was your QBCore last updated?** +* **What OS is the server running on**? +* **Which *extra* resources do you have installed?** + + +--- + + +### Suggesting Features / Enhancements + +This section guides you through submitting an enhancement suggestion for QBCore, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion. + +Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in feature request template, including the steps that you imagine you would take if the feature you're requesting existed. + +#### Before Submitting An Enhancement Suggestion + +* **Make sure it doesn't already exist.** Sounds silly, but there's a lot of features built in to qbcore that people don't realize so take a look through the docs and stuff to make sure it's not already there. +* **Check if there's already PR which provides that enhancement.** +* **Determine which resource the enhancement should be suggested in.** if it fits with another resource suggest it in that resource. if it would be it's own resource suggest it in the main qb-core repository. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your enhancement suggestion is related to, create an issue on that repository and provide the following information: + +* **Use a clear and descriptive title** for the issue to identify the suggestion. +* **Provide a step-by-step description of the suggested enhancement** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). +* **Describe the current behavior** and **explain which behavior you expected to see instead** and why. +* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of QBCore which the suggestion is related to. +* **Explain why this enhancement would be useful.** +* **Be creative and unique.** Stealing ideas from popular servers 1:1 detail isn't going to get accepted. + + +--- + + + +### Your First Code Contribution + +Unsure where to begin contributing to QBCore? You can start by looking through these `beginner` and `help-wanted` issues. + + + +--- + + +### Pull Requests + +The process described here has several goals: + +- Maintain QBCore's quality. +- Fix problems that are important to users. +- Engage the community in working toward the best possible QBCore. +- Enable a sustainable system for QBCore's maintainers to review contributions. + +Please follow these steps to have your contribution considered by the maintainers: + +1. Follow all instructions in The Pull Request template. +2. Follow the [styleguides](#styleguides). +3. Await review by the reviewer(s). + +While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted. + + +--- + +## Styleguides + +### Git Commit Messages + +* Limit the first line to 72 characters or less. +* Reference issues and pull requests liberally after the first line. +* Consider starting the commit message with an applicable emoji: + * :art: `:art:` when improving the format/structure of the code + * :racehorse: `:racehorse:` when improving performance + * :memo: `:memo:` when writing docs + * :bug: `:bug:` when fixing a bug + * :fire: `:fire:` when removing code or files + * :white_check_mark: `:white_check_mark:` when adding tests + * :lock: `:lock:` when dealing with security + * :arrow_up: `:arrow_up:` when upgrading dependencies + * :arrow_down: `:arrow_down:` when downgrading dependencies + * :shirt: `:shirt:` when removing linter warnings + +### Lua Styleguide + +All lua code should be done using all the best practices of proper lua using the easiest to read yet fastest/most optimized methods of execution. + +- Use 4 Space indentation +- Aim for lua 5.4 (include `lua54 'yes'` in the fxmanifest.lua) +- Use `PlayerPedId()` instead of `GetPlayerPed(-1)` +- Use `#(vector3 - vector3)` instead of `GetDistanceBetweenCoords()` +- Don't create unnecessary threads. always try to find a better method of triggering events +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables +- For distance checking loops set longer waits if you're outside of a range +- Job specific loops should only run for players with that job, don't waste cycles +- When possible don't trust the client, esspecially with transactions +- Balance security and optimizations +- [Consider this Lua Performance guide](https://springrts.com/wiki/Lua_Performance) +- Use local varriables everywhere possible +- Make use of config options where it makes sense making features optional or customizable +- Instead of `table.insert(myTable, "Value")` use `myTable[#myTable + 1] = "Value"` +- Instead of `table.insert(ages, "bob", 30)` use `ages["bob"] = 30` + + +### JavaScript Styleguide + +- Use 4 Space indentation +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables. diff --git a/resources/[core]/qb-apartments/.github/pull_request_template.md b/resources/[core]/qb-apartments/.github/pull_request_template.md new file mode 100644 index 0000000..000f0f9 --- /dev/null +++ b/resources/[core]/qb-apartments/.github/pull_request_template.md @@ -0,0 +1,10 @@ +**Describe Pull request** +First, make sure you've read and are following the contribution guidelines and style guide and your code reflects that. +Write up a clear and concise description of what your pull request adds or fixes and if it's an added feature explain why you think it should be included in the core. + +If your PR is to fix an issue mention that issue here + +**Questions (please complete the following information):** +- Have you personally loaded this code into an updated qbcore project and checked all it's functionality? [yes/no] (Be honest) +- Does your code fit the style guidelines? [yes/no] +- Does your PR fit the contribution guidelines? [yes/no] diff --git a/resources/[core]/qb-apartments/.github/workflows/lint.yml b/resources/[core]/qb-apartments/.github/workflows/lint.yml new file mode 100644 index 0000000..d491b0e --- /dev/null +++ b/resources/[core]/qb-apartments/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: Lint +on: [push, pull_request_target] +jobs: + lint: + name: Lint Resource + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Lint + uses: iLLeniumStudios/fivem-lua-lint-action@v2 + with: + capture: "junit.xml" + args: "-t --formatter JUnit" + extra_libs: mysql+polyzone+qblocales + - name: Generate Lint Report + if: always() + uses: mikepenz/action-junit-report@v3 + with: + report_paths: "**/junit.xml" + check_name: Linting Report + fail_on_failure: false diff --git a/resources/[core]/qb-apartments/.github/workflows/stale.yml b/resources/[core]/qb-apartments/.github/workflows/stale.yml new file mode 100644 index 0000000..c18b212 --- /dev/null +++ b/resources/[core]/qb-apartments/.github/workflows/stale.yml @@ -0,0 +1,29 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '41 15 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has had 60 days of inactivity & will close within 7 days' + stale-pr-message: 'This PR has had 60 days of inactivity & will close within 7 days' + close-issue-label: 'Stale Closed' + close-pr-label: 'Stale Closed' + exempt-issue-labels: 'Suggestion' + exempt-pr-labels: 'Suggestion' diff --git a/resources/[core]/qb-apartments/LICENSE b/resources/[core]/qb-apartments/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/resources/[core]/qb-apartments/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/resources/[core]/qb-apartments/README.md b/resources/[core]/qb-apartments/README.md new file mode 100644 index 0000000..42d42fc --- /dev/null +++ b/resources/[core]/qb-apartments/README.md @@ -0,0 +1,108 @@ +# qb-apartments +Apartments System for QB-Core Framework :office: + +# License + + QBCore Framework + Copyright (C) 2021 Joshua Eger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see + + +## Dependencies +- [qb-core](https://github.com/qbcore-framework/qb-core) +- [qb-clothing](https://github.com/qbcore-framework/qb-clothing) - To save outfits +- [qb-houses](https://github.com/qbcore-framework/qb-houses) - House logic +- [qb-interior](https://github.com/qbcore-framework/qb-interior) - Interior logic +- [qb-weathersync](https://github.com/qbcore-framework/qb-weathersync) - To desync weather while inside +- [qb-spawn](https://github.com/qbcore-framework/qb-spawn) - To spawn the player at apartment if last location was in apartment + +## Screenshots +![Inside Apartment](https://i.imgur.com/mp3XL4Y.jpg) +![Inside Apartment](https://i.imgur.com/3DH9RFw.jpg) +![Enter Apartment](https://imgur.com/1giGyt1.png) +![Stash](https://imgur.com/t6crf4c.png) +![Saved Outfits](https://imgur.com/I0YLuQA.png) +![Log Out](https://imgur.com/q1Yx3nS.png) + +## Features +- Door Bell +- Stash +- Log Out Marker +- Saved Outfits + +## Installation +### Manual +- Download the script and put it in the `[qb]` directory. +- Import `qb-apartments.sql` in your database +- Add the following code to your server.cfg/resouces.cfg +``` +ensure qb-core +ensure qb-interior +ensure qb-weathersync +ensure qb-clothing +ensure qb-houses +ensure qb-spawn +ensure qb-apartments +``` + +## Configuration +``` +Apartments = {} -- Don't touch + +Apartments.SpawnOffset = 30 -- Don't touch + +Apartments.Locations = { + ["apartment1"] = { -- Needs to be unique + name = "apartment1", -- Apartment id + label = "South Rockford Drive", -- Apartment Label (for Blip and other stuff) + coords = { + enter = {x = -667.372, y = -1106.034, z = 14.629, h = 65.033}, -- Enter Apartment Marker Location + doorbell = {x = -667.601, y = -1107.354, z = 15.133, h = 65.033}, -- Exit Apartment Marker Location + } + }, + ["apartment2"] = { + name = "apartment2", + label = "Morningwood Blvd", + coords = { + enter = {x = -1288.046, y = -430.126, z = 35.077, h = 305.348}, + doorbell = {x = -667.682, y = -1105.876, z = 14.629, h = 65.033}, + } + }, + ["apartment3"] = { + name = "apartment3", + label = "Integrity Way", + coords = { + enter = {x = 269.075, y = -640.672, z = 42.02, h = 70.01}, + doorbell = {x = -667.682, y = -1105.876, z = 14.629, h = 65.033}, + } + }, + ["apartment4"] = { + name = "apartment4", + label = "Tinsel Towers", + coords = { + enter = {x = -621.016, y = 46.677, z = 43.591, h = 179.36}, + doorbell = {x = -667.682, y = -1105.876, z = 14.629, h = 65.033}, + } + }, + ["apartment5"] = { + name = "apartment5", + label = "Fantastic Plaza", + coords = { + enter = {x = 291.517, y = -1078.674, z = 29.405, h = 270.75}, + doorbell = {x = -667.682, y = -1105.876, z = 14.629, h = 65.033}, + } + }, +} +``` diff --git a/resources/[core]/qb-apartments/client/main.lua b/resources/[core]/qb-apartments/client/main.lua new file mode 100644 index 0000000..ecfae4d --- /dev/null +++ b/resources/[core]/qb-apartments/client/main.lua @@ -0,0 +1,788 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local UseTarget = GetConvar('UseTarget', 'false') == 'true' +local InApartment = false +local ClosestHouse = nil +local CurrentApartment = nil +local IsOwned = false +local CurrentDoorBell = 0 +local CurrentOffset = 0 +local HouseObj = {} +local POIOffsets = nil +local RangDoorbell = nil + +-- target variables +local InApartmentTargets = {} + +-- polyzone variables +local IsInsideEntranceZone = false +local IsInsideExitZone = false +local IsInsideStashZone = false +local IsInsideOutfitsZone = false +local IsInsideLogoutZone = false + +-- polyzone integration + +local function OpenEntranceMenu() + local headerMenu = {} + + if IsOwned then + headerMenu[#headerMenu + 1] = { + header = Lang:t('text.enter'), + params = { + event = 'apartments:client:EnterApartment', + args = {} + } + } + elseif not IsOwned then + headerMenu[#headerMenu + 1] = { + header = Lang:t('text.move_here'), + params = { + event = 'apartments:client:UpdateApartment', + args = {} + } + } + end + + headerMenu[#headerMenu + 1] = { + header = Lang:t('text.ring_doorbell'), + params = { + event = 'apartments:client:DoorbellMenu', + args = {} + } + } + + headerMenu[#headerMenu + 1] = { + header = Lang:t('text.close_menu'), + txt = '', + params = { + event = 'qb-menu:client:closeMenu' + } + } + + exports['qb-menu']:openMenu(headerMenu) +end + +local function OpenExitMenu() + local headerMenu = {} + + headerMenu[#headerMenu + 1] = { + header = Lang:t('text.open_door'), + params = { + event = 'apartments:client:OpenDoor', + args = {} + } + } + + headerMenu[#headerMenu + 1] = { + header = Lang:t('text.leave'), + params = { + event = 'apartments:client:LeaveApartment', + args = {} + } + } + + headerMenu[#headerMenu + 1] = { + header = Lang:t('text.close_menu'), + txt = '', + params = { + event = 'qb-menu:client:closeMenu' + } + } + + exports['qb-menu']:openMenu(headerMenu) +end + +-- exterior entrance (polyzone) + +local function RegisterApartmentEntranceZone(apartmentID, apartmentData) + local coords = apartmentData.coords['enter'] + local boxName = 'apartmentEntrance_' .. apartmentID + local boxData = apartmentData.polyzoneBoxData + + if boxData.created then + return + end + + local zone = BoxZone:Create(coords, boxData.length, boxData.width, { + name = boxName, + heading = 340.0, + minZ = coords.z - 1.0, + maxZ = coords.z + 5.0, + debugPoly = false + }) + + zone:onPlayerInOut(function(isPointInside) + if isPointInside and not InApartment then + exports['qb-core']:DrawText(Lang:t('text.options'), 'left') + else + exports['qb-core']:HideText() + end + IsInsideEntranceZone = isPointInside + end) + + boxData.created = true + boxData.zone = zone +end + +-- exterior entrance (target) + +local function RegisterApartmentEntranceTarget(apartmentID, apartmentData) + local coords = apartmentData.coords['enter'] + local boxName = 'apartmentEntrance_' .. apartmentID + local boxData = apartmentData.polyzoneBoxData + + if boxData.created then + return + end + + local options = {} + if apartmentID == ClosestHouse and IsOwned then + options = { + { + type = 'client', + event = 'apartments:client:EnterApartment', + icon = 'fas fa-door-open', + label = Lang:t('text.enter'), + }, + } + else + options = { + { + type = 'client', + event = 'apartments:client:UpdateApartment', + icon = 'fas fa-hotel', + label = Lang:t('text.move_here'), + } + } + end + options[#options + 1] = { + type = 'client', + event = 'apartments:client:DoorbellMenu', + icon = 'fas fa-concierge-bell', + label = Lang:t('text.ring_doorbell'), + } + + exports['qb-target']:AddBoxZone(boxName, coords, boxData.length, boxData.width, { + name = boxName, + heading = boxData.heading, + debugPoly = boxData.debug, + minZ = boxData.minZ, + maxZ = boxData.maxZ, + }, { + options = options, + distance = boxData.distance + }) + + boxData.created = true +end + +-- interior interactable points (polyzone) + +local function RegisterInApartmentZone(targetKey, coords, heading, text) + if not InApartment then + return + end + + if InApartmentTargets[targetKey] and InApartmentTargets[targetKey].created then + return + end + + Wait(1500) + + local boxName = 'inApartmentTarget_' .. targetKey + + local zone = BoxZone:Create(coords, 1.5, 1.5, { + name = boxName, + heading = heading, + minZ = coords.z - 1.0, + maxZ = coords.z + 5.0, + debugPoly = false + }) + + zone:onPlayerInOut(function(isPointInside) + if isPointInside and text then + exports['qb-core']:DrawText(text, 'left') + else + exports['qb-core']:HideText() + end + + if targetKey == 'entrancePos' then + IsInsideExitZone = isPointInside + end + + if targetKey == 'stashPos' then + IsInsideStashZone = isPointInside + end + + if targetKey == 'outfitsPos' then + IsInsideOutfitsZone = isPointInside + end + + if targetKey == 'logoutPos' then + IsInsideLogoutZone = isPointInside + end + end) + + InApartmentTargets[targetKey] = InApartmentTargets[targetKey] or {} + InApartmentTargets[targetKey].created = true + InApartmentTargets[targetKey].zone = zone +end + +-- interior interactable points (target) + +local function RegisterInApartmentTarget(targetKey, coords, heading, options) + if not InApartment then + return + end + + if InApartmentTargets[targetKey] and InApartmentTargets[targetKey].created then + return + end + + local boxName = 'inApartmentTarget_' .. targetKey + exports['qb-target']:AddBoxZone(boxName, coords, 1.5, 1.5, { + name = boxName, + heading = heading, + minZ = coords.z - 1.0, + maxZ = coords.z + 5.0, + debugPoly = false, + }, { + options = options, + distance = 1 + }) + + InApartmentTargets[targetKey] = InApartmentTargets[targetKey] or {} + InApartmentTargets[targetKey].created = true +end + +-- shared + +local function SetApartmentsEntranceTargets() + if Apartments.Locations and next(Apartments.Locations) then + for id, apartment in pairs(Apartments.Locations) do + if apartment and apartment.coords and apartment.coords['enter'] then + if UseTarget then + RegisterApartmentEntranceTarget(id, apartment) + else + RegisterApartmentEntranceZone(id, apartment) + end + end + end + end +end + +local function SetInApartmentTargets() + if not POIOffsets then + -- do nothing + return + end + + local entrancePos = vector3(Apartments.Locations[ClosestHouse].coords.enter.x + POIOffsets.exit.x, Apartments.Locations[ClosestHouse].coords.enter.y + POIOffsets.exit.y, Apartments.Locations[ClosestHouse].coords.enter.z - CurrentOffset + POIOffsets.exit.z) + local stashPos = vector3(Apartments.Locations[ClosestHouse].coords.enter.x - POIOffsets.stash.x, Apartments.Locations[ClosestHouse].coords.enter.y - POIOffsets.stash.y, Apartments.Locations[ClosestHouse].coords.enter.z - CurrentOffset + POIOffsets.stash.z) + local outfitsPos = vector3(Apartments.Locations[ClosestHouse].coords.enter.x - POIOffsets.clothes.x, Apartments.Locations[ClosestHouse].coords.enter.y - POIOffsets.clothes.y, Apartments.Locations[ClosestHouse].coords.enter.z - CurrentOffset + POIOffsets.clothes.z) + local logoutPos = vector3(Apartments.Locations[ClosestHouse].coords.enter.x - POIOffsets.logout.x, Apartments.Locations[ClosestHouse].coords.enter.y + POIOffsets.logout.y, Apartments.Locations[ClosestHouse].coords.enter.z - CurrentOffset + POIOffsets.logout.z) + + if UseTarget then + RegisterInApartmentTarget('entrancePos', entrancePos, 0, { + { + type = 'client', + event = 'apartments:client:OpenDoor', + icon = 'fas fa-door-open', + label = Lang:t('text.open_door'), + }, + { + type = 'client', + event = 'apartments:client:LeaveApartment', + icon = 'fas fa-door-open', + label = Lang:t('text.leave'), + }, + }) + RegisterInApartmentTarget('stashPos', stashPos, 0, { + { + type = 'client', + event = 'apartments:client:OpenStash', + icon = 'fas fa-box-open', + label = Lang:t('text.open_stash'), + }, + }) + RegisterInApartmentTarget('outfitsPos', outfitsPos, 0, { + { + type = 'client', + event = 'apartments:client:ChangeOutfit', + icon = 'fas fa-tshirt', + label = Lang:t('text.change_outfit'), + }, + }) + RegisterInApartmentTarget('logoutPos', logoutPos, 0, { + { + type = 'client', + event = 'apartments:client:Logout', + icon = 'fas fa-sign-out-alt', + label = Lang:t('text.logout'), + }, + }) + else + RegisterInApartmentZone('stashPos', stashPos, 0, '[E] ' .. Lang:t('text.open_stash')) + RegisterInApartmentZone('outfitsPos', outfitsPos, 0, '[E] ' .. Lang:t('text.change_outfit')) + RegisterInApartmentZone('logoutPos', logoutPos, 0, '[E] ' .. Lang:t('text.logout')) + RegisterInApartmentZone('entrancePos', entrancePos, 0, Lang:t('text.options')) + end +end + +local function DeleteApartmentsEntranceTargets() + if Apartments.Locations and next(Apartments.Locations) then + for id, apartment in pairs(Apartments.Locations) do + if UseTarget then + exports['qb-target']:RemoveZone('apartmentEntrance_' .. id) + else + if apartment.polyzoneBoxData.zone then + apartment.polyzoneBoxData.zone:destroy() + apartment.polyzoneBoxData.zone = nil + end + end + apartment.polyzoneBoxData.created = false + end + end +end + +local function DeleteInApartmentTargets() + IsInsideExitZone = false + IsInsideStashZone = false + IsInsideOutfitsZone = false + IsInsideLogoutZone = false + + if InApartmentTargets and next(InApartmentTargets) then + for id, apartmentTarget in pairs(InApartmentTargets) do + if UseTarget then + exports['qb-target']:RemoveZone('inApartmentTarget_' .. id) + else + if apartmentTarget.zone then + apartmentTarget.zone:destroy() + apartmentTarget.zone = nil + end + end + end + end + InApartmentTargets = {} +end + +-- utility functions + +local function loadAnimDict(dict) + while (not HasAnimDictLoaded(dict)) do + RequestAnimDict(dict) + Wait(5) + end +end + +local function openHouseAnim() + loadAnimDict('anim@heists@keycard@') + TaskPlayAnim(PlayerPedId(), 'anim@heists@keycard@', 'exit', 5.0, 1.0, -1, 16, 0, 0, 0, 0) + Wait(400) + ClearPedTasks(PlayerPedId()) +end + +local function EnterApartment(house, apartmentId, new) + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'houses_door_open', 0.1) + openHouseAnim() + Wait(250) + QBCore.Functions.TriggerCallback('apartments:GetApartmentOffset', function(offset) + if offset == nil or offset == 0 then + QBCore.Functions.TriggerCallback('apartments:GetApartmentOffsetNewOffset', function(newoffset) + if newoffset > 230 then + newoffset = 210 + end + CurrentOffset = newoffset + TriggerServerEvent('apartments:server:AddObject', apartmentId, house, CurrentOffset) + local coords = { x = Apartments.Locations[house].coords.enter.x, y = Apartments.Locations[house].coords.enter.y, z = Apartments.Locations[house].coords.enter.z - CurrentOffset } + local data = exports['qb-interior']:CreateApartmentFurnished(coords) + Wait(100) + HouseObj = data[1] + POIOffsets = data[2] + InApartment = true + CurrentApartment = apartmentId + ClosestHouse = house + RangDoorbell = nil + Wait(500) + TriggerEvent('qb-weathersync:client:DisableSync') + Wait(100) + TriggerServerEvent('qb-apartments:server:SetInsideMeta', house, apartmentId, true, false) + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'houses_door_close', 0.1) + TriggerServerEvent('apartments:server:setCurrentApartment', CurrentApartment) + end, house) + else + if offset > 230 then + offset = 210 + end + CurrentOffset = offset + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'houses_door_open', 0.1) + TriggerServerEvent('apartments:server:AddObject', apartmentId, house, CurrentOffset) + local coords = { x = Apartments.Locations[ClosestHouse].coords.enter.x, y = Apartments.Locations[ClosestHouse].coords.enter.y, z = Apartments.Locations[ClosestHouse].coords.enter.z - CurrentOffset } + local data = exports['qb-interior']:CreateApartmentFurnished(coords) + Wait(100) + HouseObj = data[1] + POIOffsets = data[2] + InApartment = true + CurrentApartment = apartmentId + Wait(500) + TriggerEvent('qb-weathersync:client:DisableSync') + Wait(100) + TriggerServerEvent('qb-apartments:server:SetInsideMeta', house, apartmentId, true, true) + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'houses_door_close', 0.1) + TriggerServerEvent('apartments:server:setCurrentApartment', CurrentApartment) + end + + if new ~= nil then + if new then + TriggerEvent('qb-interior:client:SetNewState', true) + else + TriggerEvent('qb-interior:client:SetNewState', false) + end + else + TriggerEvent('qb-interior:client:SetNewState', false) + end + end, apartmentId) +end + +local function LeaveApartment(house) + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'houses_door_open', 0.1) + openHouseAnim() + TriggerServerEvent('qb-apartments:returnBucket') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + exports['qb-interior']:DespawnInterior(HouseObj, function() + TriggerEvent('qb-weathersync:client:EnableSync') + SetEntityCoords(PlayerPedId(), Apartments.Locations[house].coords.enter.x, Apartments.Locations[house].coords.enter.y, Apartments.Locations[house].coords.enter.z) + SetEntityHeading(PlayerPedId(), Apartments.Locations[house].coords.enter.w) + Wait(1000) + TriggerServerEvent('apartments:server:RemoveObject', CurrentApartment, house) + TriggerServerEvent('qb-apartments:server:SetInsideMeta', CurrentApartment, false) + CurrentApartment = nil + InApartment = false + CurrentOffset = 0 + DoScreenFadeIn(1000) + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'houses_door_close', 0.1) + TriggerServerEvent('apartments:server:setCurrentApartment', nil) + + DeleteInApartmentTargets() + DeleteApartmentsEntranceTargets() + end) +end + +local function SetClosestApartment() + local pos = GetEntityCoords(PlayerPedId()) + local current = nil + local dist = 100 + for id, _ in pairs(Apartments.Locations) do + local distcheck = #(pos - vector3(Apartments.Locations[id].coords.enter.x, Apartments.Locations[id].coords.enter.y, Apartments.Locations[id].coords.enter.z)) + if distcheck < dist then + current = id + end + end + if current ~= ClosestHouse and LocalPlayer.state.isLoggedIn and not InApartment then + ClosestHouse = current + QBCore.Functions.TriggerCallback('apartments:IsOwner', function(result) + IsOwned = result + DeleteApartmentsEntranceTargets() + DeleteInApartmentTargets() + end, ClosestHouse) + end +end + +function MenuOwners() + QBCore.Functions.TriggerCallback('apartments:GetAvailableApartments', function(apartments) + if next(apartments) == nil then + QBCore.Functions.Notify(Lang:t('error.nobody_home'), 'error', 3500) + CloseMenuFull() + else + local apartmentMenu = { + { + header = Lang:t('text.tennants'), + isMenuHeader = true + } + } + + for k, v in pairs(apartments) do + apartmentMenu[#apartmentMenu + 1] = { + header = v, + txt = '', + params = { + event = 'apartments:client:RingMenu', + args = { + apartmentId = k + } + } + + } + end + + apartmentMenu[#apartmentMenu + 1] = { + header = Lang:t('text.close_menu'), + txt = '', + params = { + event = 'qb-menu:client:closeMenu' + } + + } + exports['qb-menu']:openMenu(apartmentMenu) + end + end, ClosestHouse) +end + +function CloseMenuFull() + exports['qb-menu']:closeMenu() +end + +-- Event Handlers + +AddEventHandler('onResourceStop', function(resource) + if resource == GetCurrentResourceName() then + if HouseObj ~= nil then + exports['qb-interior']:DespawnInterior(HouseObj, function() + CurrentApartment = nil + TriggerEvent('qb-weathersync:client:EnableSync') + DoScreenFadeIn(500) + while not IsScreenFadedOut() do + Wait(10) + end + SetEntityCoords(PlayerPedId(), Apartments.Locations[ClosestHouse].coords.enter.x, Apartments.Locations[ClosestHouse].coords.enter.y, Apartments.Locations[ClosestHouse].coords.enter.z) + SetEntityHeading(PlayerPedId(), Apartments.Locations[ClosestHouse].coords.enter.w) + Wait(1000) + InApartment = false + DoScreenFadeIn(1000) + end) + end + + DeleteApartmentsEntranceTargets() + DeleteInApartmentTargets() + end +end) + + +-- Events + +RegisterNetEvent('QBCore:Client:OnPlayerUnload', function() + CurrentApartment = nil + InApartment = false + CurrentOffset = 0 + + DeleteApartmentsEntranceTargets() + DeleteInApartmentTargets() +end) + +RegisterNetEvent('apartments:client:setupSpawnUI', function(cData) + QBCore.Functions.TriggerCallback('apartments:GetOwnedApartment', function(result) + if result then + TriggerEvent('qb-spawn:client:setupSpawns', cData, false, nil) + TriggerEvent('qb-spawn:client:openUI', true) + TriggerEvent('apartments:client:SetHomeBlip', result.type) + else + if Apartments.Starting then + TriggerEvent('qb-spawn:client:setupSpawns', cData, true, Apartments.Locations) + TriggerEvent('qb-spawn:client:openUI', true) + else + TriggerEvent('qb-spawn:client:setupSpawns', cData, false, nil) + TriggerEvent('qb-spawn:client:openUI', true) + TriggerEvent('apartments:client:SetHomeBlip', nil) + end + end + end, cData.citizenid) +end) + +RegisterNetEvent('apartments:client:SpawnInApartment', function(apartmentId, apartment) + local pos = GetEntityCoords(PlayerPedId()) + if RangDoorbell ~= nil then + local doorbelldist = #(pos - vector3(Apartments.Locations[RangDoorbell].coords.enter.x, Apartments.Locations[RangDoorbell].coords.enter.y, Apartments.Locations[RangDoorbell].coords.enter.z)) + if doorbelldist > 5 then + QBCore.Functions.Notify(Lang:t('error.to_far_from_door')) + return + end + end + ClosestHouse = apartment + EnterApartment(apartment, apartmentId, true) + IsOwned = true +end) + +RegisterNetEvent('qb-apartments:client:LastLocationHouse', function(apartmentType, apartmentId) + ClosestHouse = apartmentType + EnterApartment(apartmentType, apartmentId, false) +end) + +RegisterNetEvent('apartments:client:SetHomeBlip', function(home) + CreateThread(function() + SetClosestApartment() + for name, _ in pairs(Apartments.Locations) do + RemoveBlip(Apartments.Locations[name].blip) + + Apartments.Locations[name].blip = AddBlipForCoord(Apartments.Locations[name].coords.enter.x, Apartments.Locations[name].coords.enter.y, Apartments.Locations[name].coords.enter.z) + if (name == home) then + SetBlipSprite(Apartments.Locations[name].blip, 475) + SetBlipCategory(Apartments.Locations[name].blip, 11) + else + SetBlipSprite(Apartments.Locations[name].blip, 476) + SetBlipCategory(Apartments.Locations[name].blip, 10) + end + SetBlipDisplay(Apartments.Locations[name].blip, 4) + SetBlipScale(Apartments.Locations[name].blip, 0.65) + SetBlipAsShortRange(Apartments.Locations[name].blip, true) + SetBlipColour(Apartments.Locations[name].blip, 3) + AddTextEntry(Apartments.Locations[name].label, Apartments.Locations[name].label) + BeginTextCommandSetBlipName(Apartments.Locations[name].label) + EndTextCommandSetBlipName(Apartments.Locations[name].blip) + end + end) +end) + +RegisterNetEvent('apartments:client:RingMenu', function(data) + RangDoorbell = ClosestHouse + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'doorbell', 0.1) + TriggerServerEvent('apartments:server:RingDoor', data.apartmentId, ClosestHouse) +end) + +RegisterNetEvent('apartments:client:RingDoor', function(player, _) + CurrentDoorBell = player + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'doorbell', 0.1) + QBCore.Functions.Notify(Lang:t('info.at_the_door')) +end) + +RegisterNetEvent('apartments:client:DoorbellMenu', function() + MenuOwners() +end) + +RegisterNetEvent('apartments:client:EnterApartment', function() + QBCore.Functions.TriggerCallback('apartments:GetOwnedApartment', function(result) + if result ~= nil then + EnterApartment(ClosestHouse, result.name) + end + end) +end) + +RegisterNetEvent('apartments:client:UpdateApartment', function() + local apartmentType = ClosestHouse + local apartmentLabel = Apartments.Locations[ClosestHouse].label + QBCore.Functions.TriggerCallback('apartments:GetOwnedApartment', function(result) + if result == nil then + TriggerServerEvent("apartments:server:CreateApartment", apartmentType, apartmentLabel, false) + else + TriggerServerEvent('apartments:server:UpdateApartment', apartmentType, apartmentLabel) + end + end) + + IsOwned = true + + DeleteApartmentsEntranceTargets() + DeleteInApartmentTargets() +end) + +RegisterNetEvent('apartments:client:OpenDoor', function() + if CurrentDoorBell == 0 then + QBCore.Functions.Notify(Lang:t('error.nobody_at_door')) + return + end + TriggerServerEvent('apartments:server:OpenDoor', CurrentDoorBell, CurrentApartment, ClosestHouse) + CurrentDoorBell = 0 +end) + +RegisterNetEvent('apartments:client:LeaveApartment', function() + LeaveApartment(ClosestHouse) +end) + +RegisterNetEvent('apartments:client:OpenStash', function() + if CurrentApartment then + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'StashOpen', 0.4) + TriggerServerEvent('apartments:server:openStash', CurrentApartment) + end +end) + +RegisterNetEvent('apartments:client:ChangeOutfit', function() + TriggerServerEvent('InteractSound_SV:PlayOnSource', 'Clothes1', 0.4) + TriggerEvent('qb-clothing:client:openOutfitMenu') +end) + +RegisterNetEvent('apartments:client:Logout', function() + TriggerServerEvent('qb-houses:server:LogoutLocation') +end) + + +-- Threads + +if UseTarget then + CreateThread(function() + local sleep = 5000 + while not LocalPlayer.state.isLoggedIn do + -- do nothing + Wait(sleep) + end + + while true do + sleep = 1000 + + if not InApartment then + SetClosestApartment() + SetApartmentsEntranceTargets() + elseif InApartment then + SetInApartmentTargets() + end + Wait(sleep) + end + end) +else + CreateThread(function() + local sleep = 5000 + while not LocalPlayer.state.isLoggedIn do + -- do nothing + Wait(sleep) + end + + while true do + sleep = 1000 + + if not InApartment then + SetClosestApartment() + SetApartmentsEntranceTargets() + + if IsInsideEntranceZone then + sleep = 0 + if IsControlJustPressed(0, 38) then + OpenEntranceMenu() + exports['qb-core']:HideText() + end + end + elseif InApartment then + sleep = 0 + + SetInApartmentTargets() + + if IsInsideExitZone then + if IsControlJustPressed(0, 38) then + OpenExitMenu() + exports['qb-core']:HideText() + end + end + + if IsInsideStashZone then + if IsControlJustPressed(0, 38) then + TriggerEvent('apartments:client:OpenStash') + exports['qb-core']:HideText() + end + end + + if IsInsideOutfitsZone then + if IsControlJustPressed(0, 38) then + TriggerEvent('apartments:client:ChangeOutfit') + exports['qb-core']:HideText() + end + end + + if IsInsideLogoutZone then + if IsControlJustPressed(0, 38) then + TriggerEvent('apartments:client:Logout') + exports['qb-core']:HideText() + end + end + end + + Wait(sleep) + end + end) +end diff --git a/resources/[core]/qb-apartments/config.lua b/resources/[core]/qb-apartments/config.lua new file mode 100644 index 0000000..9b525ba --- /dev/null +++ b/resources/[core]/qb-apartments/config.lua @@ -0,0 +1,90 @@ +Apartments = {} +Apartments.Starting = true +Apartments.SpawnOffset = 30 +Apartments.Locations = { + ["apartment1"] = { + name = "apartment1", + label = "South Rockford Drive", + coords = { + enter = vector4(-667.02, -1105.24, 14.63, 242.32), + }, + polyzoneBoxData = { + heading = 245, + minZ = 13.5, + maxZ = 16.0, + debug = false, + length = 1, + width = 3, + distance = 2.0, + created = false + } + }, + ["apartment2"] = { + name = "apartment2", + label = "Morningwood Blvd", + coords = { + enter = vector4(-1288.52, -430.51, 35.15, 124.81), + }, + polyzoneBoxData = { + heading = 124, + minZ = 34.0, + maxZ = 37.0, + debug = false, + length = 1, + width = 3, + distance = 2.0, + created = false + } + }, + ["apartment3"] = { + name = "apartment3", + label = "Integrity Way", + coords = { + enter = vector4(269.73, -640.75, 42.02, 249.07), + }, + polyzoneBoxData = { + heading = 250, + minZ = 40, + maxZ = 43.5, + debug = false, + length = 1, + width = 1, + distance = 2.0, + created = false + } + }, + ["apartment4"] = { + name = "apartment4", + label = "Tinsel Towers", + coords = { + enter = vector4(-619.29, 37.69, 43.59, 181.03), + }, + polyzoneBoxData = { + heading = 180, + minZ = 41.0, + maxZ = 45.5, + debug = false, + length = 1, + width = 2, + distance = 2.0, + created = false + } + }, + ["apartment5"] = { + name = "apartment5", + label = "Fantastic Plaza", + coords = { + enter = vector4(291.517, -1078.674, 29.405, 270.75), + }, + polyzoneBoxData = { + heading = 270, + minZ = 28.5, + maxZ = 31.0, + debug = false, + length = 1, + width = 2, + distance = 2.0, + created = false + } + }, +} diff --git a/resources/[core]/qb-apartments/fxmanifest.lua b/resources/[core]/qb-apartments/fxmanifest.lua new file mode 100644 index 0000000..5e54be2 --- /dev/null +++ b/resources/[core]/qb-apartments/fxmanifest.lua @@ -0,0 +1,32 @@ +fx_version 'cerulean' +game 'gta5' +lua54 'yes' +author 'Kakarot' +description 'Provides players with an apartment on server join' +version '2.2.1' + +shared_scripts { + 'config.lua', + '@qb-core/shared/locale.lua', + 'locales/en.lua', + 'locales/*.lua' +} + +server_scripts { + '@oxmysql/lib/MySQL.lua', + 'server/main.lua' +} + +client_scripts { + 'client/main.lua', + '@PolyZone/client.lua', + '@PolyZone/BoxZone.lua', + '@PolyZone/CircleZone.lua', +} + +dependencies { + 'qb-core', + 'qb-interior', + 'qb-clothing', + 'qb-weathersync', +} diff --git a/resources/[core]/qb-apartments/locales/bg.lua b/resources/[core]/qb-apartments/locales/bg.lua new file mode 100644 index 0000000..924d6d4 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/bg.lua @@ -0,0 +1,35 @@ +local Translations = { + error = { + to_far_from_door = 'Твърде далеч сте от звънеца', + nobody_home = 'Няма никой вкъщи..', + nobody_at_door = 'Няма никой на вратата...' + }, + success = { + receive_apart = 'Получихте апартамент', + changed_apart = 'Преместихте се да живеете тук', + }, + info = { + at_the_door = 'Някой е на вратата!', + }, + text = { + options = '[E] Опции на апартамента', + enter = 'Влезте в апартамента', + ring_doorbell = 'Позвънете на звънеца', + logout = 'Отписване на героя', + change_outfit = 'Промяна на облеклото', + open_stash = 'Отворете скривалището', + move_here = 'Преместете се тук', + open_door = 'Отворете вратата', + leave = 'Излезте от апартамента', + close_menu = '⬅ Затваряне на менюто', + tennants = 'Наематели', + }, +} + +if GetConvar('qb_locale', 'en') == 'bg' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end \ No newline at end of file diff --git a/resources/[core]/qb-apartments/locales/cs.lua b/resources/[core]/qb-apartments/locales/cs.lua new file mode 100644 index 0000000..47ee8d0 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/cs.lua @@ -0,0 +1,33 @@ +local Translations = { + error = { + to_far_from_door = 'Jste příliš daleko od zvonku', + nobody_home = 'Nikdo není doma..', + }, + success = { + receive_apart = 'Přestěhovali jste se', + changed_apart = 'Přestěhovali jste se', + }, + info = { + at_the_door = 'Někdo je u dveří!', + }, + text = { + enter = 'Vstoupit do apartmánu', + ring_doorbell = 'Zazvonit', + logout = 'Odhlásit se z postavy', + change_outfit = 'Převléknout se', + open_stash = 'Otevřít skrýš', + move_here = 'Přestěhovat se sem', + open_door = 'Otevřít dveře', + leave = 'Opustit apartmán', + close_menu = '⬅ Uzavřít Menu', + tennants = 'Nájemníci', + }, +} + +if GetConvar('qb_locale', 'en') == 'cs' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/da.lua b/resources/[core]/qb-apartments/locales/da.lua new file mode 100644 index 0000000..17b7a58 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/da.lua @@ -0,0 +1,33 @@ +local Translations = { + error = { + to_far_from_door = 'Du er for langt væk fra dørklokken', + nobody_home = 'Der er ingen hjemme..', + }, + success = { + receive_apart = 'Du modtog en lejlighed', + changed_apart = 'Du flyttede lejlighed', + }, + info = { + at_the_door = 'Nogen ringer på døren!', + }, + text = { + enter = 'Gå ind i lejlighed', + ring_doorbell = 'Ring Dørklokken', + logout = 'Log Ud', + change_outfit = 'Outfits', + open_stash = 'Åben Lager', + move_here = 'Flyt Her', + open_door = 'Åben Dør', + leave = 'Forlad Lejlighed', + close_menu = '⬅ Luk Menu', + tennants = 'Lejere', + }, +} + +if GetConvar('qb_locale', 'en') == 'da' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/de.lua b/resources/[core]/qb-apartments/locales/de.lua new file mode 100644 index 0000000..84dc9f0 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/de.lua @@ -0,0 +1,35 @@ +local Translations = { + error = { + to_far_from_door = 'Du bist zu weit von der Türklingel entfernt', + nobody_home = 'Es ist niemand zu Hause..', + nobody_at_door = 'Es ist niemand an der Tür...' + }, + success = { + receive_apart = 'Du hast ein Apartment bekommen', + changed_apart = 'Du bist umgezogen', + }, + info = { + at_the_door = 'Jemand ist an der Tür!', + }, + text = { + options = '[E] Apartment Optionen', + enter = 'Apartment betreten', + ring_doorbell = 'Klingeln', + logout = 'Ausloggen', + change_outfit = 'Outfit wechseln', + open_stash = 'Lager öffnen', + move_here = 'Hierher umziehen', + open_door = 'Tür öffnen', + leave = 'Apartment verlassen', + close_menu = '⬅ Menü schließen', + tennants = 'Mieter', + }, +} + +if GetConvar('qb_locale', 'en') == 'de' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/en.lua b/resources/[core]/qb-apartments/locales/en.lua new file mode 100644 index 0000000..3eddbf8 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/en.lua @@ -0,0 +1,32 @@ +local Translations = { + error = { + to_far_from_door = 'You are to far away from the Doorbell', + nobody_home = 'There is nobody home..', + nobody_at_door = 'There is nobody at the door...' + }, + success = { + receive_apart = 'You got a apartment', + changed_apart = 'You moved apartments', + }, + info = { + at_the_door = 'Someone is at the door!', + }, + text = { + options = '[E] Apartment Options', + enter = 'Enter Apartment', + ring_doorbell = 'Ring Doorbell', + logout = 'Logout Character', + change_outfit = 'Change Outfit', + open_stash = 'Open Stash', + move_here = 'Move Here', + open_door = 'Open Door', + leave = 'Leave Apartment', + close_menu = '⬅ Close Menu', + tennants = 'Tennants', + }, +} + +Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true +}) \ No newline at end of file diff --git a/resources/[core]/qb-apartments/locales/es.lua b/resources/[core]/qb-apartments/locales/es.lua new file mode 100644 index 0000000..344e3ea --- /dev/null +++ b/resources/[core]/qb-apartments/locales/es.lua @@ -0,0 +1,35 @@ +local Translations = { + error = { + to_far_from_door = 'Estás muy lejos del timbre', + nobody_home = 'No hay nadie en casa..', + nobody_at_door = 'No hay nadie en la puerta..' + }, + success = { + receive_apart = 'Has obtenido un apartamento', + changed_apart = 'Te has mudado de apartamento' + }, + info = { + at_the_door = '¡Hay alguien en la puerta!', + }, + text = { + options = '[E] Opciones de apartamento', + enter = 'Entrar al apartamento', + ring_doorbell = 'Tocar timbre', + logout = 'Salir de personaje', + change_outfit = 'Cambiar ropa', + open_stash = 'Abrir escondite', + move_here = 'Moverse aquí', + open_door = 'Abrir puerta', + leave = 'Salir del apartamento', + close_menu = '⬅ Cerrar menú', + tennants = 'Inquilinos', + }, +} + +if GetConvar('qb_locale', 'en') == 'es' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/fi.lua b/resources/[core]/qb-apartments/locales/fi.lua new file mode 100644 index 0000000..7043882 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/fi.lua @@ -0,0 +1,33 @@ +local Translations = { + error = { + to_far_from_door = 'Olet liian kaukana ovikellosta', + nobody_home = 'Kukaan ei ole kotona..', + }, + success = { + receive_apart = 'Ostit asunnon', + changed_apart = 'Vaihdoit asuntoa', + }, + info = { + at_the_door = 'Joku koputtaa ovella!', + }, + text = { + enter = 'Astu sisään asuntoon', + ring_doorbell = 'Soita ovikelloa', + logout = 'Vaihda hahmoa', + change_outfit = 'Vaihda vaatteita', + open_stash = 'Avaa kaappi', + move_here = 'Muuta tänne', + open_door = 'Avaa ovi', + leave = 'Poistu asunnosta', + close_menu = '⬅ Sulje valikko', + tennants = 'Vuokralaiset', + }, +} + +if GetConvar('qb_locale', 'en') == 'fi' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/fr.lua b/resources/[core]/qb-apartments/locales/fr.lua new file mode 100644 index 0000000..91b8300 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/fr.lua @@ -0,0 +1,35 @@ +local Translations = { + error = { + to_far_from_door = 'Vous êtes trop loin de la sonnette', + nobody_home = 'Il n\'y a personne à la maison..', + nobody_at_door = 'Il n\'y a personne à la porte...' + }, + success = { + receive_apart = 'Vous avez un appartement', + changed_apart = 'Vous avez changé d\'appartement', + }, + info = { + at_the_door = 'Quelqu\'un est à la porte !', + }, + text = { + options = '[E] Options d\'appartement', + enter = 'Entrez dans l\'appartement', + ring_doorbell = 'Sonnette de porte', + logout = 'Déconnexion Personnage', + change_outfit = 'Changez de tenue', + open_stash = 'Ouvrir le coffre', + move_here = 'Déplacez-vous ici', + open_door = 'Ouvrir la porte', + leave = 'Quitter l\'appartement', + close_menu = '⬅ Fermer le menu', + tennants = 'Locataire', + }, +} + +if GetConvar('qb_locale', 'en') == 'fr' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/ge.lua b/resources/[core]/qb-apartments/locales/ge.lua new file mode 100644 index 0000000..f5bc13e --- /dev/null +++ b/resources/[core]/qb-apartments/locales/ge.lua @@ -0,0 +1,33 @@ +local Translations = { + error = { + to_far_from_door = 'თქვენ ძალიან შორს ხართ კარის ზარისგან', + nobody_home = 'სახლში არავინაა..', + }, + success = { + receive_apart = 'შენ გაქვს ბინა', + changed_apart = 'თქვენ გადაიტანეთ ბინები', + }, + info = { + at_the_door = 'ვიღაც კარებთან არის!', + }, + text = { + enter = 'ბინაში შესვლა', + ring_doorbell = 'დარეკეთ კარზე', + logout = 'გამოსვლის სიმბოლო', + change_outfit = 'შეცვალეთ ტანსაცმელი', + open_stash = 'გახსენით სეიფი', + move_here = 'გადაადგილება აქ', + open_door = 'Ღია კარი', + leave = 'ბინის დატოვება', + close_menu = '⬅ მენიუს დახურვა', + tennants = 'მოიჯარეები', + }, +} + +if GetConvar('qb_locale', 'en') == 'ge' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/nl.lua b/resources/[core]/qb-apartments/locales/nl.lua new file mode 100644 index 0000000..08a6427 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/nl.lua @@ -0,0 +1,35 @@ +local Translations = { + error = { + to_far_from_door = 'Je bent te ver van de deurbel', + nobody_home = 'Er is niemand thuis..', + nobody_at_door = 'Er is niemand aan de deur...' + }, + success = { + receive_apart = 'Je hebt een appartement', + changed_apart = 'Je bent verhuisd naar appartement', + }, + info = { + at_the_door = 'Er staat iemand voor de deur!', + }, + text = { + options = '[E] Apartement Opties', + enter = 'Betreed appartement', + ring_doorbell = 'Aanbellen', + logout = 'Karakter Uitloggen', + change_outfit = 'Verander Outfit', + open_stash = 'Opbergruimte Openen', + move_here = 'Verhuis naar hier', + open_door = 'Deur Openen', + leave = 'Appartement Verlaten', + close_menu = '⬅ Menu Sluiten', + tennants = 'Huurders', + }, +} + +if GetConvar('qb_locale', 'en') == 'nl' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/pt-br.lua b/resources/[core]/qb-apartments/locales/pt-br.lua new file mode 100644 index 0000000..68de15f --- /dev/null +++ b/resources/[core]/qb-apartments/locales/pt-br.lua @@ -0,0 +1,35 @@ +local Translations = { + error = { + to_far_from_door = 'Você está muito longe do interfone', + nobody_home = 'Não há ninguém em casa..', + nobody_at_door = 'Não há ninguém na porta...' + }, + success = { + receive_apart = 'Você recebeu um apartamento', + changed_apart = 'Você mudou de apartamento', + }, + info = { + at_the_door = 'Alguém está na porta!', + }, + text = { + options = '[E] Opções do Apartamento', + enter = 'Entrar no Apartamento', + ring_doorbell = 'Tocar a Campainha', + logout = 'Sair do Personagem', + change_outfit = 'Trocar de Roupa', + open_stash = 'Abrir Esconderijo', + move_here = 'Mover para Cá', + open_door = 'Abrir Porta', + leave = 'Sair do Apartamento', + close_menu = '⬅ Fechar Menu', + tennants = 'Inquilinos', + }, +} + +if GetConvar('qb_locale', 'en') == 'pt-br' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/pt.lua b/resources/[core]/qb-apartments/locales/pt.lua new file mode 100644 index 0000000..7fad084 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/pt.lua @@ -0,0 +1,35 @@ +local Translations = { + error = { + to_far_from_door = 'Estás demasiado longe da campainha', + nobody_home = 'Não está ninguém em casa..', + nobody_at_door = 'Ninguém á porta...' + }, + success = { + receive_apart = 'Adquiriste um apartamento', + changed_apart = 'Mudaste-te para este apartamento', + }, + info = { + at_the_door = 'Está alguém à porta!', + }, + text = { + options = '[E] Menu - Apartamento', + enter = 'Entrar No Apartamento', + ring_doorbell = 'Tocar À Campainha', + logout = 'Sair Da Personagem', + change_outfit = 'Mudar de Roupa', + open_stash = 'Abrir Baú', + move_here = 'Mudar Para Cá', + open_door = 'Abrir Porta', + leave = 'Sair Do Apartamento', + close_menu = '⬅ Fechar Menu', + tennants = 'Moradores', + }, +} + +if GetConvar('qb_locale', 'en') == 'pt' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/sv.lua b/resources/[core]/qb-apartments/locales/sv.lua new file mode 100644 index 0000000..8a7c2ef --- /dev/null +++ b/resources/[core]/qb-apartments/locales/sv.lua @@ -0,0 +1,35 @@ +local Translations = { + error = { + to_far_from_door = 'Du är för långt ifrån dörrklockan', + nobody_home = 'Det är ingen hemma..', + nobody_at_door = 'Det är ingen vid dörren...' + }, + success = { + receive_apart = 'Du fick en lägenhet', + changed_apart = 'Du bytte lägenhet', + }, + info = { + at_the_door = 'Någon är vid dörren!', + }, + text = { + options = '[E] Lägenhetsalternativ', + enter = 'Gå in i lägenheten', + ring_doorbell = 'Ring på dörrklockan', + logout = 'Logga ut karaktär', + change_outfit = 'Byt kläder', + open_stash = 'Öppna förråd', + move_here = 'Flytta hit', + open_door = 'Öppna dörr', + leave = 'Lämna lägenhet', + close_menu = '⬅ Stäng meny', + tennants = 'Hyresgäster', + }, +} + +if GetConvar('qb_locale', 'en') == 'sv' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/tr.lua b/resources/[core]/qb-apartments/locales/tr.lua new file mode 100644 index 0000000..3c6dc90 --- /dev/null +++ b/resources/[core]/qb-apartments/locales/tr.lua @@ -0,0 +1,33 @@ +local Translations = { + error = { + to_far_from_door = 'Kapı zilinden çok uzaktasın', + nobody_home = 'Evde kimse yok..', + }, + success = { + receive_apart = 'Bir daire aldın', + changed_apart = 'Daireni taşıdın', + }, + info = { + at_the_door = 'Kapıda birisi var!', + }, + text = { + enter = 'Daireye Girin', + ring_doorbell = 'Zili Çal', + logout = 'Oturumu Kapat', + change_outfit = 'Kıyafet Değiştir', + open_stash = 'Zulayı Aç', + move_here = 'Buraya Taşın', + open_door = 'Kapıyı Aç', + leave = 'Apartmandan Ayrıl', + close_menu = '⬅ Menüyü Kapat', + tennants = 'Kiracılar', + }, +} + +if GetConvar('qb_locale', 'en') == 'tr' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-apartments/locales/vn.lua b/resources/[core]/qb-apartments/locales/vn.lua new file mode 100644 index 0000000..e7bfe4a --- /dev/null +++ b/resources/[core]/qb-apartments/locales/vn.lua @@ -0,0 +1,34 @@ +local Translations = { + error = { + to_far_from_door = 'Bạn đang ở xa chuông cửa', + nobody_home = 'Không có ai ở nhà...', + nobody_at_door = 'Không có ai ở cửa ...' + }, + success = { + receive_apart = 'Bạn có một căn hộ rồi', + changed_apart = 'Bạn đã di chuyển căn hộ', + }, + info = { + at_the_door = 'Ai đó đang ở ngoài cửa!', + }, + text = { + options = '[E] Tùy chọn căn hộ', + enter = 'Vào căn hộ', + ring_doorbell = 'Nhấn chuông cửa', + logout = 'Logout nhân vật', + change_outfit = 'Thay đổi Outfits', + open_stash = 'Mở Kho', + move_here = 'Chuyển căn hộ đến đây', + open_door = 'Mở cửa', + leave = 'Rời căn hộ', + close_menu = '⬅ Đóng', + tennants = 'Tennants', + }, +} + +if GetConvar('qb_locale', 'en') == 'vn' then + Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true + }) +end diff --git a/resources/[core]/qb-apartments/server/main.lua b/resources/[core]/qb-apartments/server/main.lua new file mode 100644 index 0000000..279fb66 --- /dev/null +++ b/resources/[core]/qb-apartments/server/main.lua @@ -0,0 +1,236 @@ +local ApartmentObjects = {} +local QBCore = exports['qb-core']:GetCoreObject() + +-- Functions + +local function CreateApartmentId(type) + local UniqueFound = false + local AparmentId = nil + + while not UniqueFound do + AparmentId = tostring(math.random(1, 9999)) + local result = MySQL.query.await('SELECT COUNT(*) as count FROM apartments WHERE name = ?', { tostring(type .. AparmentId) }) + if result[1].count == 0 then + UniqueFound = true + end + end + return AparmentId +end + +local function GetApartmentInfo(apartmentId) + local retval = nil + local result = MySQL.query.await('SELECT * FROM apartments WHERE name = ?', { apartmentId }) + if result[1] ~= nil then + retval = result[1] + end + return retval +end + +-- Events + +RegisterNetEvent('qb-apartments:server:SetInsideMeta', function(house, insideId, bool, isVisiting) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local insideMeta = Player.PlayerData.metadata['inside'] + + if bool then + local routeId = insideId:gsub('[^%-%d]', '') + if not isVisiting then + insideMeta.apartment.apartmentType = house + insideMeta.apartment.apartmentId = insideId + insideMeta.house = nil + Player.Functions.SetMetaData('inside', insideMeta) + end + QBCore.Functions.SetPlayerBucket(src, tonumber(routeId)) + else + insideMeta.apartment.apartmentType = nil + insideMeta.apartment.apartmentId = nil + insideMeta.house = nil + + + Player.Functions.SetMetaData('inside', insideMeta) + QBCore.Functions.SetPlayerBucket(src, 0) + end +end) + +RegisterNetEvent('qb-apartments:returnBucket', function() + local src = source + SetPlayerRoutingBucket(src, 0) +end) + +RegisterNetEvent('apartments:server:openStash', function(CurrentApartment) + local src = source + exports['qb-inventory']:OpenInventory(src, CurrentApartment) +end) + +RegisterNetEvent('apartments:server:CreateApartment', function(type, label, firstSpawn) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local num = CreateApartmentId(type) + local apartmentId = tostring(type .. num) + label = tostring(label .. ' ' .. num) + MySQL.insert('INSERT INTO apartments (name, type, label, citizenid) VALUES (?, ?, ?, ?)', { + apartmentId, + type, + label, + Player.PlayerData.citizenid + }) + TriggerClientEvent('QBCore:Notify', src, Lang:t('success.receive_apart') .. ' (' .. label .. ')') + if firstSpawn then + TriggerClientEvent('apartments:client:SpawnInApartment', src, apartmentId, type) + end + TriggerClientEvent('apartments:client:SetHomeBlip', src, type) +end) + +RegisterNetEvent('apartments:server:UpdateApartment', function(type, label) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + MySQL.update('UPDATE apartments SET type = ?, label = ? WHERE citizenid = ?', { type, label, Player.PlayerData.citizenid }) + TriggerClientEvent('QBCore:Notify', src, Lang:t('success.changed_apart')) + TriggerClientEvent('apartments:client:SetHomeBlip', src, type) +end) + +RegisterNetEvent('apartments:server:RingDoor', function(apartmentId, apartment) + local src = source + if ApartmentObjects[apartment].apartments[apartmentId] ~= nil and next(ApartmentObjects[apartment].apartments[apartmentId].players) ~= nil then + for k, _ in pairs(ApartmentObjects[apartment].apartments[apartmentId].players) do + TriggerClientEvent('apartments:client:RingDoor', k, src) + end + end +end) + +RegisterNetEvent('apartments:server:OpenDoor', function(target, apartmentId, apartment) + local OtherPlayer = QBCore.Functions.GetPlayer(target) + if OtherPlayer ~= nil then + TriggerClientEvent('apartments:client:SpawnInApartment', OtherPlayer.PlayerData.source, apartmentId, apartment) + end +end) + +RegisterNetEvent('apartments:server:AddObject', function(apartmentId, apartment, offset) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if ApartmentObjects[apartment] ~= nil and ApartmentObjects[apartment].apartments ~= nil and ApartmentObjects[apartment].apartments[apartmentId] ~= nil then + ApartmentObjects[apartment].apartments[apartmentId].players[src] = Player.PlayerData.citizenid + else + if ApartmentObjects[apartment] ~= nil and ApartmentObjects[apartment].apartments ~= nil then + ApartmentObjects[apartment].apartments[apartmentId] = {} + ApartmentObjects[apartment].apartments[apartmentId].offset = offset + ApartmentObjects[apartment].apartments[apartmentId].players = {} + ApartmentObjects[apartment].apartments[apartmentId].players[src] = Player.PlayerData.citizenid + else + ApartmentObjects[apartment] = {} + ApartmentObjects[apartment].apartments = {} + ApartmentObjects[apartment].apartments[apartmentId] = {} + ApartmentObjects[apartment].apartments[apartmentId].offset = offset + ApartmentObjects[apartment].apartments[apartmentId].players = {} + ApartmentObjects[apartment].apartments[apartmentId].players[src] = Player.PlayerData.citizenid + end + end +end) + +RegisterNetEvent('apartments:server:RemoveObject', function(apartmentId, apartment) + local src = source + if ApartmentObjects[apartment].apartments[apartmentId].players ~= nil then + ApartmentObjects[apartment].apartments[apartmentId].players[src] = nil + if next(ApartmentObjects[apartment].apartments[apartmentId].players) == nil then + ApartmentObjects[apartment].apartments[apartmentId] = nil + end + end +end) + +RegisterNetEvent('apartments:server:setCurrentApartment', function(ap) + local Player = QBCore.Functions.GetPlayer(source) + + if not Player then return end + + Player.Functions.SetMetaData('currentapartment', ap) +end) + +-- Callbacks + +QBCore.Functions.CreateCallback('apartments:GetAvailableApartments', function(_, cb, apartment) + local apartments = {} + if ApartmentObjects ~= nil and ApartmentObjects[apartment] ~= nil and ApartmentObjects[apartment].apartments ~= nil then + for k, _ in pairs(ApartmentObjects[apartment].apartments) do + if (ApartmentObjects[apartment].apartments[k] ~= nil and next(ApartmentObjects[apartment].apartments[k].players) ~= nil) then + local apartmentInfo = GetApartmentInfo(k) + apartments[k] = apartmentInfo.label + end + end + end + cb(apartments) +end) + +QBCore.Functions.CreateCallback('apartments:GetApartmentOffset', function(_, cb, apartmentId) + local retval = 0 + if ApartmentObjects ~= nil then + for k, _ in pairs(ApartmentObjects) do + if (ApartmentObjects[k].apartments[apartmentId] ~= nil and tonumber(ApartmentObjects[k].apartments[apartmentId].offset) ~= 0) then + retval = tonumber(ApartmentObjects[k].apartments[apartmentId].offset) + end + end + end + cb(retval) +end) + +QBCore.Functions.CreateCallback('apartments:GetApartmentOffsetNewOffset', function(_, cb, apartment) + local retval = Apartments.SpawnOffset + if ApartmentObjects ~= nil and ApartmentObjects[apartment] ~= nil and ApartmentObjects[apartment].apartments ~= nil then + for k, _ in pairs(ApartmentObjects[apartment].apartments) do + if (ApartmentObjects[apartment].apartments[k] ~= nil) then + retval = ApartmentObjects[apartment].apartments[k].offset + Apartments.SpawnOffset + end + end + end + cb(retval) +end) + +QBCore.Functions.CreateCallback('apartments:GetOwnedApartment', function(source, cb, cid) + if cid ~= nil then + local result = MySQL.query.await('SELECT * FROM apartments WHERE citizenid = ?', { cid }) + if result[1] ~= nil then + return cb(result[1]) + end + return cb(nil) + else + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local result = MySQL.query.await('SELECT * FROM apartments WHERE citizenid = ?', { Player.PlayerData.citizenid }) + if result[1] ~= nil then + return cb(result[1]) + end + return cb(nil) + end +end) + +QBCore.Functions.CreateCallback('apartments:IsOwner', function(source, cb, apartment) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player ~= nil then + local result = MySQL.query.await('SELECT * FROM apartments WHERE citizenid = ?', { Player.PlayerData.citizenid }) + if result[1] ~= nil then + if result[1].type == apartment then + cb(true) + else + cb(false) + end + else + cb(false) + end + end +end) + + +QBCore.Functions.CreateCallback('apartments:GetOutfits', function(source, cb) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + + if Player then + local result = MySQL.query.await('SELECT * FROM player_outfits WHERE citizenid = ?', { Player.PlayerData.citizenid }) + if result[1] ~= nil then + cb(result) + else + cb(nil) + end + end +end) diff --git a/resources/[core]/qb-core/LICENSE b/resources/[core]/qb-core/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/resources/[core]/qb-core/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/resources/[core]/qb-core/client/drawtext.lua b/resources/[core]/qb-core/client/drawtext.lua new file mode 100644 index 0000000..c54d401 --- /dev/null +++ b/resources/[core]/qb-core/client/drawtext.lua @@ -0,0 +1,60 @@ +local function hideText() + SendNUIMessage({ + action = 'HIDE_TEXT', + }) +end + +local function drawText(text, position) + if type(position) ~= 'string' then position = 'left' end + + SendNUIMessage({ + action = 'DRAW_TEXT', + data = { + text = text, + position = position + } + }) +end + +local function changeText(text, position) + if type(position) ~= 'string' then position = 'left' end + + SendNUIMessage({ + action = 'CHANGE_TEXT', + data = { + text = text, + position = position + } + }) +end + +local function keyPressed() + CreateThread(function() -- Not sure if a thread is needed but why not eh? + SendNUIMessage({ + action = 'KEY_PRESSED', + }) + Wait(500) + hideText() + end) +end + +RegisterNetEvent('qb-core:client:DrawText', function(text, position) + drawText(text, position) +end) + +RegisterNetEvent('qb-core:client:ChangeText', function(text, position) + changeText(text, position) +end) + +RegisterNetEvent('qb-core:client:HideText', function() + hideText() +end) + +RegisterNetEvent('qb-core:client:KeyPressed', function() + keyPressed() +end) + +exports('DrawText', drawText) +exports('ChangeText', changeText) +exports('HideText', hideText) +exports('KeyPressed', keyPressed) diff --git a/resources/[core]/qb-core/client/events.lua b/resources/[core]/qb-core/client/events.lua new file mode 100644 index 0000000..f08e019 --- /dev/null +++ b/resources/[core]/qb-core/client/events.lua @@ -0,0 +1,279 @@ +-- Player load and unload handling +-- New method for checking if logged in across all scripts (optional) +-- if LocalPlayer.state['isLoggedIn'] then +RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() + ShutdownLoadingScreenNui() + LocalPlayer.state:set('isLoggedIn', true, false) + if not QBCore.Config.Server.PVP then return end + SetCanAttackFriendly(PlayerPedId(), true, false) + NetworkSetFriendlyFireOption(true) +end) + +RegisterNetEvent('QBCore:Client:OnPlayerUnload', function() + LocalPlayer.state:set('isLoggedIn', false, false) +end) + +RegisterNetEvent('QBCore:Client:PvpHasToggled', function(pvp_state) + SetCanAttackFriendly(PlayerPedId(), pvp_state, false) + NetworkSetFriendlyFireOption(pvp_state) +end) +-- Teleport Commands + +RegisterNetEvent('QBCore:Command:TeleportToPlayer', function(coords) + local ped = PlayerPedId() + SetPedCoordsKeepVehicle(ped, coords.x, coords.y, coords.z) +end) + +RegisterNetEvent('QBCore:Command:TeleportToCoords', function(x, y, z, h) + local ped = PlayerPedId() + SetPedCoordsKeepVehicle(ped, x, y, z) + SetEntityHeading(ped, h or GetEntityHeading(ped)) +end) + +RegisterNetEvent('QBCore:Command:GoToMarker', function() + local PlayerPedId = PlayerPedId + local GetEntityCoords = GetEntityCoords + local GetGroundZFor_3dCoord = GetGroundZFor_3dCoord + + local blipMarker = GetFirstBlipInfoId(8) + if not DoesBlipExist(blipMarker) then + QBCore.Functions.Notify(Lang:t('error.no_waypoint'), 'error', 5000) + return 'marker' + end + + -- Fade screen to hide how clients get teleported. + DoScreenFadeOut(650) + while not IsScreenFadedOut() do + Wait(0) + end + + local ped, coords = PlayerPedId(), GetBlipInfoIdCoord(blipMarker) + local vehicle = GetVehiclePedIsIn(ped, false) + local oldCoords = GetEntityCoords(ped) + + -- Unpack coords instead of having to unpack them while iterating. + -- 825.0 seems to be the max a player can reach while 0.0 being the lowest. + local x, y, groundZ, Z_START = coords['x'], coords['y'], 850.0, 950.0 + local found = false + if vehicle > 0 then + FreezeEntityPosition(vehicle, true) + else + FreezeEntityPosition(ped, true) + end + + for i = Z_START, 0, -25.0 do + local z = i + if (i % 2) ~= 0 then + z = Z_START - i + end + + NewLoadSceneStart(x, y, z, x, y, z, 50.0, 0) + local curTime = GetGameTimer() + while IsNetworkLoadingScene() do + if GetGameTimer() - curTime > 1000 then + break + end + Wait(0) + end + NewLoadSceneStop() + SetPedCoordsKeepVehicle(ped, x, y, z) + + while not HasCollisionLoadedAroundEntity(ped) do + RequestCollisionAtCoord(x, y, z) + if GetGameTimer() - curTime > 1000 then + break + end + Wait(0) + end + + -- Get ground coord. As mentioned in the natives, this only works if the client is in render distance. + found, groundZ = GetGroundZFor_3dCoord(x, y, z, false); + if found then + Wait(0) + SetPedCoordsKeepVehicle(ped, x, y, groundZ) + break + end + Wait(0) + end + + -- Remove black screen once the loop has ended. + DoScreenFadeIn(650) + if vehicle > 0 then + FreezeEntityPosition(vehicle, false) + else + FreezeEntityPosition(ped, false) + end + + if not found then + -- If we can't find the coords, set the coords to the old ones. + -- We don't unpack them before since they aren't in a loop and only called once. + SetPedCoordsKeepVehicle(ped, oldCoords['x'], oldCoords['y'], oldCoords['z'] - 1.0) + QBCore.Functions.Notify(Lang:t('error.tp_error'), 'error', 5000) + end + + -- If Z coord was found, set coords in found coords. + SetPedCoordsKeepVehicle(ped, x, y, groundZ) + QBCore.Functions.Notify(Lang:t('success.teleported_waypoint'), 'success', 5000) +end) + +-- Vehicle Commands + +RegisterNetEvent('QBCore:Command:SpawnVehicle', function(vehName) + local ped = PlayerPedId() + local hash = joaat(vehName) + local veh = GetVehiclePedIsUsing(ped) + if not IsModelInCdimage(hash) then return end + RequestModel(hash) + while not HasModelLoaded(hash) do + Wait(0) + end + + if IsPedInAnyVehicle(ped) then + SetEntityAsMissionEntity(veh, true, true) + DeleteVehicle(veh) + end + + local vehicle = CreateVehicle(hash, GetEntityCoords(ped), GetEntityHeading(ped), true, false) + TaskWarpPedIntoVehicle(ped, vehicle, -1) + SetVehicleFuelLevel(vehicle, 100.0) + SetVehicleDirtLevel(vehicle, 0.0) + SetModelAsNoLongerNeeded(hash) + TriggerEvent('vehiclekeys:client:SetOwner', QBCore.Functions.GetPlate(vehicle)) +end) + +RegisterNetEvent('QBCore:Command:DeleteVehicle', function() + local ped = PlayerPedId() + local veh = GetVehiclePedIsUsing(ped) + if veh ~= 0 then + SetEntityAsMissionEntity(veh, true, true) + DeleteVehicle(veh) + else + local pcoords = GetEntityCoords(ped) + local vehicles = GetGamePool('CVehicle') + for _, v in pairs(vehicles) do + if #(pcoords - GetEntityCoords(v)) <= 5.0 then + SetEntityAsMissionEntity(v, true, true) + DeleteVehicle(v) + end + end + end +end) + +RegisterNetEvent('QBCore:Client:VehicleInfo', function(info) + local plate = QBCore.Functions.GetPlate(info.vehicle) + local hasKeys = true + + if GetResourceState('qb-vehiclekeys') == 'started' then + hasKeys = exports['qb-vehiclekeys']:HasKeys(plate) + end + + local data = { + vehicle = info.vehicle, + seat = info.seat, + name = info.modelName, + plate = plate, + driver = GetPedInVehicleSeat(info.vehicle, -1), + inseat = GetPedInVehicleSeat(info.vehicle, info.seat), + haskeys = hasKeys + } + + TriggerEvent('QBCore:Client:' .. info.event .. 'Vehicle', data) +end) + +-- Other stuff + +RegisterNetEvent('QBCore:Player:SetPlayerData', function(val) + QBCore.PlayerData = val +end) + +RegisterNetEvent('QBCore:Player:UpdatePlayerData', function() + TriggerServerEvent('QBCore:UpdatePlayer') +end) + +RegisterNetEvent('QBCore:Notify', function(text, type, length, icon) + QBCore.Functions.Notify(text, type, length, icon) +end) + +-- This event is exploitable and should not be used. It has been deprecated, and will be removed soon. +RegisterNetEvent('QBCore:Client:UseItem', function(item) + QBCore.Debug(string.format('%s triggered QBCore:Client:UseItem by ID %s with the following data. This event is deprecated due to exploitation, and will be removed soon. Check qb-inventory for the right use on this event.', GetInvokingResource(), GetPlayerServerId(PlayerId()))) + QBCore.Debug(item) +end) + +RegisterNUICallback('getNotifyConfig', function(_, cb) + cb(QBCore.Config.Notify) +end) + +-- Callback Events -- + +-- Client Callback +RegisterNetEvent('QBCore:Client:TriggerClientCallback', function(name, ...) + if not QBCore.ClientCallbacks[name] then return end + + QBCore.ClientCallbacks[name](function(...) + TriggerServerEvent('QBCore:Server:TriggerClientCallback', name, ...) + end, ...) +end) + +-- Server Callback +RegisterNetEvent('QBCore:Client:TriggerCallback', function(name, ...) + if QBCore.ServerCallbacks[name] then + QBCore.ServerCallbacks[name].promise:resolve(...) + + if QBCore.ServerCallbacks[name].callback then + QBCore.ServerCallbacks[name].callback(...) + end + + QBCore.ServerCallbacks[name] = nil + end +end) + +-- Me command + +local function Draw3DText(coords, str) + local onScreen, worldX, worldY = World3dToScreen2d(coords.x, coords.y, coords.z) + local camCoords = GetGameplayCamCoord() + local scale = 200 / (GetGameplayCamFov() * #(camCoords - coords)) + if onScreen then + SetTextScale(1.0, 0.5 * scale) + SetTextFont(4) + SetTextColour(255, 255, 255, 255) + SetTextEdge(2, 0, 0, 0, 150) + SetTextProportional(1) + SetTextOutline() + SetTextCentre(1) + BeginTextCommandDisplayText('STRING') + AddTextComponentSubstringPlayerName(str) + EndTextCommandDisplayText(worldX, worldY) + end +end + +RegisterNetEvent('QBCore:Command:ShowMe3D', function(senderId, msg) + local sender = GetPlayerFromServerId(senderId) + CreateThread(function() + local displayTime = 5000 + GetGameTimer() + while displayTime > GetGameTimer() do + local targetPed = GetPlayerPed(sender) + local tCoords = GetEntityCoords(targetPed) + Draw3DText(tCoords, msg) + Wait(0) + end + end) +end) + +-- Listen to Shared being updated +RegisterNetEvent('QBCore:Client:OnSharedUpdate', function(tableName, key, value) + QBCore.Shared[tableName][key] = value + TriggerEvent('QBCore:Client:UpdateObject') +end) + +RegisterNetEvent('QBCore:Client:OnSharedUpdateMultiple', function(tableName, values) + for key, value in pairs(values) do + QBCore.Shared[tableName][key] = value + end + TriggerEvent('QBCore:Client:UpdateObject') +end) + +RegisterNetEvent('QBCore:Client:SharedUpdate', function(table) + QBCore.Shared = table +end) diff --git a/resources/[core]/qb-core/client/functions.lua b/resources/[core]/qb-core/client/functions.lua new file mode 100644 index 0000000..f6bca00 --- /dev/null +++ b/resources/[core]/qb-core/client/functions.lua @@ -0,0 +1,1105 @@ +QBCore.Functions = {} + +-- Callbacks + +function QBCore.Functions.CreateClientCallback(name, cb) + QBCore.ClientCallbacks[name] = cb +end + +function QBCore.Functions.TriggerCallback(name, ...) + local cb = nil + local args = { ... } + + if QBCore.Shared.IsFunction(args[1]) then + cb = args[1] + table.remove(args, 1) + end + + QBCore.ServerCallbacks[name] = { + callback = cb, + promise = promise.new() + } + + TriggerServerEvent('QBCore:Server:TriggerCallback', name, table.unpack(args)) + + if cb == nil then + Citizen.Await(QBCore.ServerCallbacks[name].promise) + return QBCore.ServerCallbacks[name].promise.value + end +end + +function QBCore.Debug(resource, obj, depth) + TriggerServerEvent('QBCore:DebugSomething', resource, obj, depth) +end + +-- Player + +function QBCore.Functions.GetPlayerData(cb) + if not cb then return QBCore.PlayerData end + cb(QBCore.PlayerData) +end + +function QBCore.Functions.GetCoords(entity) + local coords = GetEntityCoords(entity) + return vector4(coords.x, coords.y, coords.z, GetEntityHeading(entity)) +end + +function QBCore.Functions.HasItem(items, amount) + return exports['qb-inventory']:HasItem(items, amount) +end + +---Returns the full character name +---@return string +function QBCore.Functions.GetName() + local charinfo = QBCore.PlayerData.charinfo + return charinfo.firstname .. ' ' .. charinfo.lastname +end + +---@param entity number - The entity to look at +---@param timeout number - The time in milliseconds before the function times out +---@param speed number - The speed at which the entity should turn +---@return number - The time at which the entity was looked at +function QBCore.Functions.LookAtEntity(entity, timeout, speed) + local involved = GetInvokingResource() + if not DoesEntityExist(entity) then + return involved .. ' :^1 Entity does not exist' + end + if type(entity) ~= 'number' then + return involved .. ' :^1 Entity must be a number' + end + if type(speed) ~= 'number' then + return involved .. ' :^1 Speed must be a number' + end + if speed > 5.0 then speed = 5.0 end + if timeout > 5000 then timeout = 5000 end + local ped = PlayerPedId() + local playerPos = GetEntityCoords(ped) + local targetPos = GetEntityCoords(entity) + local dx = targetPos.x - playerPos.x + local dy = targetPos.y - playerPos.y + local targetHeading = GetHeadingFromVector_2d(dx, dy) + local turnSpeed + local startTimeout = GetGameTimer() + while true do + local currentHeading = GetEntityHeading(ped) + local diff = targetHeading - currentHeading + if math.abs(diff) < 2 then + break + end + if diff < -180 then + diff = diff + 360 + elseif diff > 180 then + diff = diff - 360 + end + turnSpeed = speed + (2.5 - speed) * (1 - math.abs(diff) / 180) + if diff > 0 then + currentHeading = currentHeading + turnSpeed + else + currentHeading = currentHeading - turnSpeed + end + SetEntityHeading(ped, currentHeading) + Wait(0) + if (startTimeout + timeout) < GetGameTimer() then break end + end + SetEntityHeading(ped, targetHeading) +end + +-- Function to run an animation +--- @param animDic string: The name of the animation dictionary +--- @param animName string - The name of the animation within the dictionary +--- @param duration number - The duration of the animation in milliseconds. -1 will play the animation indefinitely +--- @param upperbodyOnly boolean - If true, the animation will only affect the upper body of the ped +--- @return number - The timestamp indicating when the animation concluded. For animations set to loop indefinitely, this will still return the maximum duration of the animation. +function QBCore.Functions.PlayAnim(animDict, animName, upperbodyOnly, duration) + local invoked = GetInvokingResource() + local animPromise = promise.new() + if type(animDict) ~= 'string' or type(animName) ~= 'string' then + animPromise:reject(invoked .. ' :^1 Wrong type for animDict or animName') + return animPromise.value + end + if not DoesAnimDictExist(animDict) then + animPromise:reject(invoked .. ' :^1 Animation dictionary does not exist') + return animPromise.value + end + local flags = upperbodyOnly and 16 or 0 + local runTime = duration or -1 + if runTime == -1 then flags = 49 end + local ped = PlayerPedId() + local start = GetGameTimer() + while not HasAnimDictLoaded(animDict) do + RequestAnimDict(animDict) + if (GetGameTimer() - start) > 5000 then + animPromise:reject(invoked .. ' :^1 Animation dictionary failed to load') + return animPromise.value + end + Wait(1) + end + TaskPlayAnim(ped, animDict, animName, 8.0, 8.0, runTime, flags, 0, true, true, true) + Wait(10) -- Wait a bit for the animation to start, then check if it exists + local currentTime = GetAnimDuration(animDict, animName) + if currentTime == 0 then + animPromise:reject(invoked .. ' :^1 Animation does not exist') + return animPromise.value + end + local fullDuration = currentTime * 1000 + -- If duration is provided and is less than the full duration, use it instead + local waitTime = duration and math.min(duration, fullDuration) or fullDuration + Wait(waitTime) + RemoveAnimDict(animDict) + animPromise:resolve(currentTime) + return animPromise.value +end + +function QBCore.Functions.IsWearingGloves() + local ped = PlayerPedId() + local armIndex = GetPedDrawableVariation(ped, 3) + local model = GetEntityModel(ped) + if model == `mp_m_freemode_01` then + if QBCore.Shared.MaleNoGloves[armIndex] then + return false + end + else + if QBCore.Shared.FemaleNoGloves[armIndex] then + return false + end + end + return true +end + +-- NUI Calls + +function QBCore.Functions.Notify(text, texttype, length, icon) + local message = { + action = 'notify', + type = texttype or 'primary', + length = length or 5000, + } + + if type(text) == 'table' then + message.text = text.text or 'Placeholder' + message.caption = text.caption or 'Placeholder' + else + message.text = text + end + + if icon then + message.icon = icon + end + + SendNUIMessage(message) +end + +function QBCore.Functions.Progressbar(name, label, duration, useWhileDead, canCancel, disableControls, animation, prop, propTwo, onFinish, onCancel) + if GetResourceState('progressbar') ~= 'started' then error('progressbar needs to be started in order for QBCore.Functions.Progressbar to work') end + exports['progressbar']:Progress({ + name = name:lower(), + duration = duration, + label = label, + useWhileDead = useWhileDead, + canCancel = canCancel, + controlDisables = disableControls, + animation = animation, + prop = prop, + propTwo = propTwo, + }, function(cancelled) + if not cancelled then + if onFinish then + onFinish() + end + else + if onCancel then + onCancel() + end + end + end) +end + +-- World Getters + +function QBCore.Functions.GetVehicles() + return GetGamePool('CVehicle') +end + +function QBCore.Functions.GetObjects() + return GetGamePool('CObject') +end + +function QBCore.Functions.GetPlayers() + return GetActivePlayers() +end + +function QBCore.Functions.GetPlayersFromCoords(coords, distance) + local players = GetActivePlayers() + local ped = PlayerPedId() + if coords then + coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords + else + coords = GetEntityCoords(ped) + end + distance = distance or 5 + local closePlayers = {} + for _, player in ipairs(players) do + local targetCoords = GetEntityCoords(GetPlayerPed(player)) + local targetdistance = #(targetCoords - coords) + if targetdistance <= distance then + closePlayers[#closePlayers + 1] = player + end + end + return closePlayers +end + +function QBCore.Functions.GetClosestPlayer(coords) + local ped = PlayerPedId() + if coords then + coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords + else + coords = GetEntityCoords(ped) + end + local closestPlayers = QBCore.Functions.GetPlayersFromCoords(coords) + local closestDistance = -1 + local closestPlayer = -1 + for i = 1, #closestPlayers, 1 do + if closestPlayers[i] ~= PlayerId() and closestPlayers[i] ~= -1 then + local pos = GetEntityCoords(GetPlayerPed(closestPlayers[i])) + local distance = #(pos - coords) + + if closestDistance == -1 or closestDistance > distance then + closestPlayer = closestPlayers[i] + closestDistance = distance + end + end + end + return closestPlayer, closestDistance +end + +function QBCore.Functions.GetPeds(ignoreList) + local pedPool = GetGamePool('CPed') + local peds = {} + local ignoreTable = {} + ignoreList = ignoreList or {} + for i = 1, #ignoreList do + ignoreTable[ignoreList[i]] = true + end + for i = 1, #pedPool do + if not ignoreTable[pedPool[i]] then + peds[#peds + 1] = pedPool[i] + end + end + return peds +end + +function QBCore.Functions.GetClosestPed(coords, ignoreList) + local ped = PlayerPedId() + if coords then + coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords + else + coords = GetEntityCoords(ped) + end + ignoreList = ignoreList or {} + local peds = QBCore.Functions.GetPeds(ignoreList) + local closestDistance = -1 + local closestPed = -1 + for i = 1, #peds, 1 do + local pedCoords = GetEntityCoords(peds[i]) + local distance = #(pedCoords - coords) + + if closestDistance == -1 or closestDistance > distance then + closestPed = peds[i] + closestDistance = distance + end + end + return closestPed, closestDistance +end + +function QBCore.Functions.GetClosestVehicle(coords) + local ped = PlayerPedId() + local vehicles = GetGamePool('CVehicle') + local closestDistance = -1 + local closestVehicle = -1 + if coords then + coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords + else + coords = GetEntityCoords(ped) + end + for i = 1, #vehicles, 1 do + local vehicleCoords = GetEntityCoords(vehicles[i]) + local distance = #(vehicleCoords - coords) + + if closestDistance == -1 or closestDistance > distance then + closestVehicle = vehicles[i] + closestDistance = distance + end + end + return closestVehicle, closestDistance +end + +function QBCore.Functions.GetClosestObject(coords) + local ped = PlayerPedId() + local objects = GetGamePool('CObject') + local closestDistance = -1 + local closestObject = -1 + if coords then + coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords + else + coords = GetEntityCoords(ped) + end + for i = 1, #objects, 1 do + local objectCoords = GetEntityCoords(objects[i]) + local distance = #(objectCoords - coords) + if closestDistance == -1 or closestDistance > distance then + closestObject = objects[i] + closestDistance = distance + end + end + return closestObject, closestDistance +end + +-- Vehicle + +function QBCore.Functions.LoadModel(model) + if HasModelLoaded(model) then return end + RequestModel(model) + while not HasModelLoaded(model) do + Wait(0) + end +end + +function QBCore.Functions.SpawnVehicle(model, cb, coords, isnetworked, teleportInto) + local ped = PlayerPedId() + model = type(model) == 'string' and joaat(model) or model + if not IsModelInCdimage(model) then return end + if coords then + coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords + else + coords = GetEntityCoords(ped) + end + isnetworked = isnetworked == nil or isnetworked + QBCore.Functions.LoadModel(model) + local veh = CreateVehicle(model, coords.x, coords.y, coords.z, coords.w, isnetworked, false) + local netid = NetworkGetNetworkIdFromEntity(veh) + SetVehicleHasBeenOwnedByPlayer(veh, true) + SetNetworkIdCanMigrate(netid, true) + SetVehicleNeedsToBeHotwired(veh, false) + SetVehRadioStation(veh, 'OFF') + SetVehicleFuelLevel(veh, 100.0) + SetModelAsNoLongerNeeded(model) + if teleportInto then TaskWarpPedIntoVehicle(PlayerPedId(), veh, -1) end + if cb then cb(veh) end +end + +function QBCore.Functions.DeleteVehicle(vehicle) + SetEntityAsMissionEntity(vehicle, true, true) + DeleteVehicle(vehicle) +end + +function QBCore.Functions.GetPlate(vehicle) + if vehicle == 0 then return end + return QBCore.Shared.Trim(GetVehicleNumberPlateText(vehicle)) +end + +function QBCore.Functions.GetVehicleLabel(vehicle) + if vehicle == nil or vehicle == 0 then return end + return GetLabelText(GetDisplayNameFromVehicleModel(GetEntityModel(vehicle))) +end + +function QBCore.Functions.GetVehicleProperties(vehicle) + if DoesEntityExist(vehicle) then + local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) + + local colorPrimary, colorSecondary = GetVehicleColours(vehicle) + if GetIsVehiclePrimaryColourCustom(vehicle) then + local r, g, b = GetVehicleCustomPrimaryColour(vehicle) + colorPrimary = { r, g, b } + end + + if GetIsVehicleSecondaryColourCustom(vehicle) then + local r, g, b = GetVehicleCustomSecondaryColour(vehicle) + colorSecondary = { r, g, b } + end + + local extras = {} + for extraId = 0, 12 do + if DoesExtraExist(vehicle, extraId) then + local state = IsVehicleExtraTurnedOn(vehicle, extraId) == 1 + extras[tostring(extraId)] = state + end + end + + local modLivery = GetVehicleMod(vehicle, 48) + if GetVehicleMod(vehicle, 48) == -1 and GetVehicleLivery(vehicle) ~= 0 then + modLivery = GetVehicleLivery(vehicle) + end + + local tireHealth = {} + for i = 0, 3 do + tireHealth[i] = GetVehicleWheelHealth(vehicle, i) + end + + local tireBurstState = {} + for i = 0, 5 do + tireBurstState[i] = IsVehicleTyreBurst(vehicle, i, false) + end + + local tireBurstCompletely = {} + for i = 0, 5 do + tireBurstCompletely[i] = IsVehicleTyreBurst(vehicle, i, true) + end + + local windowStatus = {} + for i = 0, 7 do + windowStatus[i] = IsVehicleWindowIntact(vehicle, i) == 1 + end + + local doorStatus = {} + for i = 0, 5 do + doorStatus[i] = IsVehicleDoorDamaged(vehicle, i) == 1 + end + + local xenonColor + local hasCustom, r, g, b = GetVehicleXenonLightsCustomColor(vehicle) + if hasCustom then + xenonColor = table.pack(r, g, b) + else + xenonColor = GetVehicleXenonLightsColor(vehicle) + end + + return { + model = GetEntityModel(vehicle), + plate = QBCore.Functions.GetPlate(vehicle), + plateIndex = GetVehicleNumberPlateTextIndex(vehicle), + bodyHealth = QBCore.Shared.Round(GetVehicleBodyHealth(vehicle), 0.1), + engineHealth = QBCore.Shared.Round(GetVehicleEngineHealth(vehicle), 0.1), + tankHealth = QBCore.Shared.Round(GetVehiclePetrolTankHealth(vehicle), 0.1), + fuelLevel = QBCore.Shared.Round(GetVehicleFuelLevel(vehicle), 0.1), + dirtLevel = QBCore.Shared.Round(GetVehicleDirtLevel(vehicle), 0.1), + oilLevel = QBCore.Shared.Round(GetVehicleOilLevel(vehicle), 0.1), + color1 = colorPrimary, + color2 = colorSecondary, + pearlescentColor = pearlescentColor, + dashboardColor = GetVehicleDashboardColour(vehicle), + wheelColor = wheelColor, + wheels = GetVehicleWheelType(vehicle), + wheelSize = GetVehicleWheelSize(vehicle), + wheelWidth = GetVehicleWheelWidth(vehicle), + tireHealth = tireHealth, + tireBurstState = tireBurstState, + tireBurstCompletely = tireBurstCompletely, + windowTint = GetVehicleWindowTint(vehicle), + windowStatus = windowStatus, + doorStatus = doorStatus, + neonEnabled = { + IsVehicleNeonLightEnabled(vehicle, 0), + IsVehicleNeonLightEnabled(vehicle, 1), + IsVehicleNeonLightEnabled(vehicle, 2), + IsVehicleNeonLightEnabled(vehicle, 3) + }, + neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)), + interiorColor = GetVehicleInteriorColour(vehicle), + extras = extras, + tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)), + xenonColor = xenonColor, + modSpoilers = GetVehicleMod(vehicle, 0), + modFrontBumper = GetVehicleMod(vehicle, 1), + modRearBumper = GetVehicleMod(vehicle, 2), + modSideSkirt = GetVehicleMod(vehicle, 3), + modExhaust = GetVehicleMod(vehicle, 4), + modFrame = GetVehicleMod(vehicle, 5), + modGrille = GetVehicleMod(vehicle, 6), + modHood = GetVehicleMod(vehicle, 7), + modFender = GetVehicleMod(vehicle, 8), + modRightFender = GetVehicleMod(vehicle, 9), + modRoof = GetVehicleMod(vehicle, 10), + modEngine = GetVehicleMod(vehicle, 11), + modBrakes = GetVehicleMod(vehicle, 12), + modTransmission = GetVehicleMod(vehicle, 13), + modHorns = GetVehicleMod(vehicle, 14), + modSuspension = GetVehicleMod(vehicle, 15), + modArmor = GetVehicleMod(vehicle, 16), + modKit17 = GetVehicleMod(vehicle, 17), + modTurbo = IsToggleModOn(vehicle, 18), + modKit19 = GetVehicleMod(vehicle, 19), + modSmokeEnabled = IsToggleModOn(vehicle, 20), + modKit21 = GetVehicleMod(vehicle, 21), + modXenon = IsToggleModOn(vehicle, 22), + modFrontWheels = GetVehicleMod(vehicle, 23), + modBackWheels = GetVehicleMod(vehicle, 24), + modCustomTiresF = GetVehicleModVariation(vehicle, 23), + modCustomTiresR = GetVehicleModVariation(vehicle, 24), + modPlateHolder = GetVehicleMod(vehicle, 25), + modVanityPlate = GetVehicleMod(vehicle, 26), + modTrimA = GetVehicleMod(vehicle, 27), + modOrnaments = GetVehicleMod(vehicle, 28), + modDashboard = GetVehicleMod(vehicle, 29), + modDial = GetVehicleMod(vehicle, 30), + modDoorSpeaker = GetVehicleMod(vehicle, 31), + modSeats = GetVehicleMod(vehicle, 32), + modSteeringWheel = GetVehicleMod(vehicle, 33), + modShifterLeavers = GetVehicleMod(vehicle, 34), + modAPlate = GetVehicleMod(vehicle, 35), + modSpeakers = GetVehicleMod(vehicle, 36), + modTrunk = GetVehicleMod(vehicle, 37), + modHydrolic = GetVehicleMod(vehicle, 38), + modEngineBlock = GetVehicleMod(vehicle, 39), + modAirFilter = GetVehicleMod(vehicle, 40), + modStruts = GetVehicleMod(vehicle, 41), + modArchCover = GetVehicleMod(vehicle, 42), + modAerials = GetVehicleMod(vehicle, 43), + modTrimB = GetVehicleMod(vehicle, 44), + modTank = GetVehicleMod(vehicle, 45), + modWindows = GetVehicleMod(vehicle, 46), + modKit47 = GetVehicleMod(vehicle, 47), + modLivery = modLivery, + modKit49 = GetVehicleMod(vehicle, 49), + liveryRoof = GetVehicleRoofLivery(vehicle), + } + else + return + end +end + +function QBCore.Functions.SetVehicleProperties(vehicle, props) + if DoesEntityExist(vehicle) then + if props.extras then + for id, enabled in pairs(props.extras) do + if enabled then + SetVehicleExtra(vehicle, tonumber(id), 0) + else + SetVehicleExtra(vehicle, tonumber(id), 1) + end + end + end + + local colorPrimary, colorSecondary = GetVehicleColours(vehicle) + local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) + SetVehicleModKit(vehicle, 0) + if props.plate then + SetVehicleNumberPlateText(vehicle, props.plate) + end + if props.plateIndex then + SetVehicleNumberPlateTextIndex(vehicle, props.plateIndex) + end + if props.bodyHealth then + SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0) + end + if props.engineHealth then + SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0) + end + if props.tankHealth then + SetVehiclePetrolTankHealth(vehicle, props.tankHealth + 0.0) + end + if props.fuelLevel then + SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0) + end + if props.dirtLevel then + SetVehicleDirtLevel(vehicle, props.dirtLevel + 0.0) + end + if props.oilLevel then + SetVehicleOilLevel(vehicle, props.oilLevel + 0.0) + end + if props.color1 then + if type(props.color1) == 'number' then + ClearVehicleCustomPrimaryColour(vehicle) + SetVehicleColours(vehicle, props.color1, colorSecondary) + else + SetVehicleCustomPrimaryColour(vehicle, props.color1[1], props.color1[2], props.color1[3]) + end + end + if props.color2 then + if type(props.color2) == 'number' then + ClearVehicleCustomSecondaryColour(vehicle) + SetVehicleColours(vehicle, props.color1 or colorPrimary, props.color2) + else + SetVehicleCustomSecondaryColour(vehicle, props.color2[1], props.color2[2], props.color2[3]) + end + end + if props.pearlescentColor then + SetVehicleExtraColours(vehicle, props.pearlescentColor, wheelColor) + end + if props.interiorColor then + SetVehicleInteriorColor(vehicle, props.interiorColor) + end + if props.dashboardColor then + SetVehicleDashboardColour(vehicle, props.dashboardColor) + end + if props.wheelColor then + SetVehicleExtraColours(vehicle, props.pearlescentColor or pearlescentColor, props.wheelColor) + end + if props.wheels then + SetVehicleWheelType(vehicle, props.wheels) + end + if props.tireHealth then + for wheelIndex, health in pairs(props.tireHealth) do + SetVehicleWheelHealth(vehicle, wheelIndex, health) + end + end + if props.tireBurstState then + for wheelIndex, burstState in pairs(props.tireBurstState) do + if burstState then + SetVehicleTyreBurst(vehicle, tonumber(wheelIndex), false, 1000.0) + end + end + end + if props.tireBurstCompletely then + for wheelIndex, burstState in pairs(props.tireBurstCompletely) do + if burstState then + SetVehicleTyreBurst(vehicle, tonumber(wheelIndex), true, 1000.0) + end + end + end + if props.windowTint then + SetVehicleWindowTint(vehicle, props.windowTint) + end + if props.windowStatus then + for windowIndex, smashWindow in pairs(props.windowStatus) do + if not smashWindow then SmashVehicleWindow(vehicle, windowIndex) end + end + end + if props.doorStatus then + for doorIndex, breakDoor in pairs(props.doorStatus) do + if breakDoor then + SetVehicleDoorBroken(vehicle, tonumber(doorIndex), true) + end + end + end + if props.neonEnabled then + SetVehicleNeonLightEnabled(vehicle, 0, props.neonEnabled[1]) + SetVehicleNeonLightEnabled(vehicle, 1, props.neonEnabled[2]) + SetVehicleNeonLightEnabled(vehicle, 2, props.neonEnabled[3]) + SetVehicleNeonLightEnabled(vehicle, 3, props.neonEnabled[4]) + end + if props.neonColor then + SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3]) + end + if props.interiorColor then + SetVehicleInteriorColour(vehicle, props.interiorColor) + end + if props.wheelSize then + SetVehicleWheelSize(vehicle, props.wheelSize) + end + if props.wheelWidth then + SetVehicleWheelWidth(vehicle, props.wheelWidth) + end + if props.tyreSmokeColor then + SetVehicleTyreSmokeColor(vehicle, props.tyreSmokeColor[1], props.tyreSmokeColor[2], props.tyreSmokeColor[3]) + end + if props.modSpoilers then + SetVehicleMod(vehicle, 0, props.modSpoilers, false) + end + if props.modFrontBumper then + SetVehicleMod(vehicle, 1, props.modFrontBumper, false) + end + if props.modRearBumper then + SetVehicleMod(vehicle, 2, props.modRearBumper, false) + end + if props.modSideSkirt then + SetVehicleMod(vehicle, 3, props.modSideSkirt, false) + end + if props.modExhaust then + SetVehicleMod(vehicle, 4, props.modExhaust, false) + end + if props.modFrame then + SetVehicleMod(vehicle, 5, props.modFrame, false) + end + if props.modGrille then + SetVehicleMod(vehicle, 6, props.modGrille, false) + end + if props.modHood then + SetVehicleMod(vehicle, 7, props.modHood, false) + end + if props.modFender then + SetVehicleMod(vehicle, 8, props.modFender, false) + end + if props.modRightFender then + SetVehicleMod(vehicle, 9, props.modRightFender, false) + end + if props.modRoof then + SetVehicleMod(vehicle, 10, props.modRoof, false) + end + if props.modEngine then + SetVehicleMod(vehicle, 11, props.modEngine, false) + end + if props.modBrakes then + SetVehicleMod(vehicle, 12, props.modBrakes, false) + end + if props.modTransmission then + SetVehicleMod(vehicle, 13, props.modTransmission, false) + end + if props.modHorns then + SetVehicleMod(vehicle, 14, props.modHorns, false) + end + if props.modSuspension then + SetVehicleMod(vehicle, 15, props.modSuspension, false) + end + if props.modArmor then + SetVehicleMod(vehicle, 16, props.modArmor, false) + end + if props.modKit17 then + SetVehicleMod(vehicle, 17, props.modKit17, false) + end + if props.modTurbo then + ToggleVehicleMod(vehicle, 18, props.modTurbo) + end + if props.modKit19 then + SetVehicleMod(vehicle, 19, props.modKit19, false) + end + if props.modSmokeEnabled then + ToggleVehicleMod(vehicle, 20, props.modSmokeEnabled) + end + if props.modKit21 then + SetVehicleMod(vehicle, 21, props.modKit21, false) + end + if props.modXenon then + ToggleVehicleMod(vehicle, 22, props.modXenon) + end + if props.xenonColor then + if type(props.xenonColor) == 'table' then + SetVehicleXenonLightsCustomColor(vehicle, props.xenonColor[1], props.xenonColor[2], props.xenonColor[3]) + else + SetVehicleXenonLightsColor(vehicle, props.xenonColor) + end + end + if props.modFrontWheels then + SetVehicleMod(vehicle, 23, props.modFrontWheels, false) + end + if props.modBackWheels then + SetVehicleMod(vehicle, 24, props.modBackWheels, false) + end + if props.modCustomTiresF then + SetVehicleMod(vehicle, 23, props.modFrontWheels, props.modCustomTiresF) + end + if props.modCustomTiresR then + SetVehicleMod(vehicle, 24, props.modBackWheels, props.modCustomTiresR) + end + if props.modPlateHolder then + SetVehicleMod(vehicle, 25, props.modPlateHolder, false) + end + if props.modVanityPlate then + SetVehicleMod(vehicle, 26, props.modVanityPlate, false) + end + if props.modTrimA then + SetVehicleMod(vehicle, 27, props.modTrimA, false) + end + if props.modOrnaments then + SetVehicleMod(vehicle, 28, props.modOrnaments, false) + end + if props.modDashboard then + SetVehicleMod(vehicle, 29, props.modDashboard, false) + end + if props.modDial then + SetVehicleMod(vehicle, 30, props.modDial, false) + end + if props.modDoorSpeaker then + SetVehicleMod(vehicle, 31, props.modDoorSpeaker, false) + end + if props.modSeats then + SetVehicleMod(vehicle, 32, props.modSeats, false) + end + if props.modSteeringWheel then + SetVehicleMod(vehicle, 33, props.modSteeringWheel, false) + end + if props.modShifterLeavers then + SetVehicleMod(vehicle, 34, props.modShifterLeavers, false) + end + if props.modAPlate then + SetVehicleMod(vehicle, 35, props.modAPlate, false) + end + if props.modSpeakers then + SetVehicleMod(vehicle, 36, props.modSpeakers, false) + end + if props.modTrunk then + SetVehicleMod(vehicle, 37, props.modTrunk, false) + end + if props.modHydrolic then + SetVehicleMod(vehicle, 38, props.modHydrolic, false) + end + if props.modEngineBlock then + SetVehicleMod(vehicle, 39, props.modEngineBlock, false) + end + if props.modAirFilter then + SetVehicleMod(vehicle, 40, props.modAirFilter, false) + end + if props.modStruts then + SetVehicleMod(vehicle, 41, props.modStruts, false) + end + if props.modArchCover then + SetVehicleMod(vehicle, 42, props.modArchCover, false) + end + if props.modAerials then + SetVehicleMod(vehicle, 43, props.modAerials, false) + end + if props.modTrimB then + SetVehicleMod(vehicle, 44, props.modTrimB, false) + end + if props.modTank then + SetVehicleMod(vehicle, 45, props.modTank, false) + end + if props.modWindows then + SetVehicleMod(vehicle, 46, props.modWindows, false) + end + if props.modKit47 then + SetVehicleMod(vehicle, 47, props.modKit47, false) + end + if props.modLivery then + SetVehicleMod(vehicle, 48, props.modLivery, false) + SetVehicleLivery(vehicle, props.modLivery) + end + if props.modKit49 then + SetVehicleMod(vehicle, 49, props.modKit49, false) + end + if props.liveryRoof then + SetVehicleRoofLivery(vehicle, props.liveryRoof) + end + end +end + +-- Unused + +function QBCore.Functions.DrawText(x, y, width, height, scale, r, g, b, a, text) + -- Use local function instead + SetTextFont(4) + SetTextScale(scale, scale) + SetTextColour(r, g, b, a) + BeginTextCommandDisplayText('STRING') + AddTextComponentSubstringPlayerName(text) + EndTextCommandDisplayText(x - width / 2, y - height / 2 + 0.005) +end + +function QBCore.Functions.DrawText3D(x, y, z, text) + -- Use local function instead + SetTextScale(0.35, 0.35) + SetTextFont(4) + SetTextProportional(1) + SetTextColour(255, 255, 255, 215) + BeginTextCommandDisplayText('STRING') + SetTextCentre(true) + AddTextComponentSubstringPlayerName(text) + SetDrawOrigin(x, y, z, 0) + EndTextCommandDisplayText(0.0, 0.0) + local factor = (string.len(text)) / 370 + DrawRect(0.0, 0.0 + 0.0125, 0.017 + factor, 0.03, 0, 0, 0, 75) + ClearDrawOrigin() +end + +function QBCore.Functions.RequestAnimDict(animDict) + if HasAnimDictLoaded(animDict) then return end + RequestAnimDict(animDict) + while not HasAnimDictLoaded(animDict) do + Wait(0) + end +end + +function QBCore.Functions.GetClosestBone(entity, list) + local playerCoords, bone, coords, distance = GetEntityCoords(PlayerPedId()) + for _, element in pairs(list) do + local boneCoords = GetWorldPositionOfEntityBone(entity, element.id or element) + local boneDistance = #(playerCoords - boneCoords) + if not coords then + bone, coords, distance = element, boneCoords, boneDistance + elseif distance > boneDistance then + bone, coords, distance = element, boneCoords, boneDistance + end + end + if not bone then + bone = { id = GetEntityBoneIndexByName(entity, 'bodyshell'), type = 'remains', name = 'bodyshell' } + coords = GetWorldPositionOfEntityBone(entity, bone.id) + distance = #(coords - playerCoords) + end + return bone, coords, distance +end + +function QBCore.Functions.GetBoneDistance(entity, boneType, boneIndex) + local bone + if boneType == 1 then + bone = GetPedBoneIndex(entity, boneIndex) + else + bone = GetEntityBoneIndexByName(entity, boneIndex) + end + local boneCoords = GetWorldPositionOfEntityBone(entity, bone) + local playerCoords = GetEntityCoords(PlayerPedId()) + return #(boneCoords - playerCoords) +end + +function QBCore.Functions.AttachProp(ped, model, boneId, x, y, z, xR, yR, zR, vertex) + local modelHash = type(model) == 'string' and joaat(model) or model + local bone = GetPedBoneIndex(ped, boneId) + QBCore.Functions.LoadModel(modelHash) + local prop = CreateObject(modelHash, 1.0, 1.0, 1.0, 1, 1, 0) + AttachEntityToEntity(prop, ped, bone, x, y, z, xR, yR, zR, 1, 1, 0, 1, not vertex and 2 or 0, 1) + SetModelAsNoLongerNeeded(modelHash) + return prop +end + +function QBCore.Functions.SpawnClear(coords, radius) + if coords then + coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords + else + coords = GetEntityCoords(PlayerPedId()) + end + local vehicles = GetGamePool('CVehicle') + local closeVeh = {} + for i = 1, #vehicles, 1 do + local vehicleCoords = GetEntityCoords(vehicles[i]) + local distance = #(vehicleCoords - coords) + if distance <= radius then + closeVeh[#closeVeh + 1] = vehicles[i] + end + end + if #closeVeh > 0 then return false end + return true +end + +function QBCore.Functions.LoadAnimSet(animSet) + if HasAnimSetLoaded(animSet) then return end + RequestAnimSet(animSet) + while not HasAnimSetLoaded(animSet) do + Wait(0) + end +end + +function QBCore.Functions.LoadParticleDictionary(dictionary) + if HasNamedPtfxAssetLoaded(dictionary) then return end + RequestNamedPtfxAsset(dictionary) + while not HasNamedPtfxAssetLoaded(dictionary) do + Wait(0) + end +end + +function QBCore.Functions.StartParticleAtCoord(dict, ptName, looped, coords, rot, scale, alpha, color, duration) + if coords then + coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords + else + coords = GetEntityCoords(PlayerPedId()) + end + QBCore.Functions.LoadParticleDictionary(dict) + UseParticleFxAssetNextCall(dict) + SetPtfxAssetNextCall(dict) + local particleHandle + if looped then + particleHandle = StartParticleFxLoopedAtCoord(ptName, coords.x, coords.y, coords.z, rot.x, rot.y, rot.z, scale or 1.0) + if color then + SetParticleFxLoopedColour(particleHandle, color.r, color.g, color.b, false) + end + SetParticleFxLoopedAlpha(particleHandle, alpha or 10.0) + if duration then + Wait(duration) + StopParticleFxLooped(particleHandle, 0) + end + else + SetParticleFxNonLoopedAlpha(alpha or 10.0) + if color then + SetParticleFxNonLoopedColour(color.r, color.g, color.b) + end + StartParticleFxNonLoopedAtCoord(ptName, coords.x, coords.y, coords.z, rot.x, rot.y, rot.z, scale or 1.0) + end + return particleHandle +end + +function QBCore.Functions.StartParticleOnEntity(dict, ptName, looped, entity, bone, offset, rot, scale, alpha, color, evolution, duration) + QBCore.Functions.LoadParticleDictionary(dict) + UseParticleFxAssetNextCall(dict) + local particleHandle, boneID + if bone and GetEntityType(entity) == 1 then + boneID = GetPedBoneIndex(entity, bone) + elseif bone then + boneID = GetEntityBoneIndexByName(entity, bone) + end + if looped then + if bone then + particleHandle = StartParticleFxLoopedOnEntityBone(ptName, entity, offset.x, offset.y, offset.z, rot.x, rot.y, rot.z, boneID, scale) + else + particleHandle = StartParticleFxLoopedOnEntity(ptName, entity, offset.x, offset.y, offset.z, rot.x, rot.y, rot.z, scale) + end + if evolution then + SetParticleFxLoopedEvolution(particleHandle, evolution.name, evolution.amount, false) + end + if color then + SetParticleFxLoopedColour(particleHandle, color.r, color.g, color.b, false) + end + SetParticleFxLoopedAlpha(particleHandle, alpha) + if duration then + Wait(duration) + StopParticleFxLooped(particleHandle, 0) + end + else + SetParticleFxNonLoopedAlpha(alpha or 10.0) + if color then + SetParticleFxNonLoopedColour(color.r, color.g, color.b) + end + if bone then + StartParticleFxNonLoopedOnPedBone(ptName, entity, offset.x, offset.y, offset.z, rot.x, rot.y, rot.z, boneID, scale) + else + StartParticleFxNonLoopedOnEntity(ptName, entity, offset.x, offset.y, offset.z, rot.x, rot.y, rot.z, scale) + end + end + return particleHandle +end + +function QBCore.Functions.GetStreetNametAtCoords(coords) + local streetname1, streetname2 = GetStreetNameAtCoord(coords.x, coords.y, coords.z) + return { main = GetStreetNameFromHashKey(streetname1), cross = GetStreetNameFromHashKey(streetname2) } +end + +function QBCore.Functions.GetZoneAtCoords(coords) + return GetLabelText(GetNameOfZone(coords)) +end + +function QBCore.Functions.GetCardinalDirection(entity) + entity = DoesEntityExist(entity) and entity or PlayerPedId() + if DoesEntityExist(entity) then + local heading = GetEntityHeading(entity) + if ((heading >= 0 and heading < 45) or (heading >= 315 and heading < 360)) then + return 'North' + elseif (heading >= 45 and heading < 135) then + return 'West' + elseif (heading >= 135 and heading < 225) then + return 'South' + elseif (heading >= 225 and heading < 315) then + return 'East' + end + else + return 'Cardinal Direction Error' + end +end + +function QBCore.Functions.GetCurrentTime() + local obj = {} + obj.min = GetClockMinutes() + obj.hour = GetClockHours() + if obj.hour <= 12 then + obj.ampm = 'AM' + elseif obj.hour >= 13 then + obj.ampm = 'PM' + obj.formattedHour = obj.hour - 12 + end + if obj.min <= 9 then + obj.formattedMin = '0' .. obj.min + end + return obj +end + +function QBCore.Functions.GetGroundZCoord(coords) + if not coords then return end + + local retval, groundZ = GetGroundZFor_3dCoord(coords.x, coords.y, coords.z, 0) + if retval then + return vector3(coords.x, coords.y, groundZ) + else + return coords + end +end + +function QBCore.Functions.GetGroundHash(entity) + local coords = GetEntityCoords(entity) + local num = StartShapeTestCapsule(coords.x, coords.y, coords.z + 4, coords.x, coords.y, coords.z - 2.0, 1, 1, entity, 7) + local retval, success, endCoords, surfaceNormal, materialHash, entityHit = GetShapeTestResultEx(num) + return materialHash, entityHit, surfaceNormal, endCoords, success, retval +end + +for functionName, func in pairs(QBCore.Functions) do + if type(func) == 'function' then + exports(functionName, func) + end +end + +-- Access a specific function directly: +-- exports['qb-core']:Notify('Hello Player!') diff --git a/resources/[core]/qb-core/client/loops.lua b/resources/[core]/qb-core/client/loops.lua new file mode 100644 index 0000000..b4629a7 --- /dev/null +++ b/resources/[core]/qb-core/client/loops.lua @@ -0,0 +1,24 @@ +CreateThread(function() + while true do + local sleep = 0 + if LocalPlayer.state.isLoggedIn then + sleep = (1000 * 60) * QBCore.Config.UpdateInterval + TriggerServerEvent('QBCore:UpdatePlayer') + end + Wait(sleep) + end +end) + +CreateThread(function() + while true do + if LocalPlayer.state.isLoggedIn then + if (QBCore.PlayerData.metadata['hunger'] <= 0 or QBCore.PlayerData.metadata['thirst'] <= 0) and not (QBCore.PlayerData.metadata['isdead'] or QBCore.PlayerData.metadata['inlaststand']) then + local ped = PlayerPedId() + local currentHealth = GetEntityHealth(ped) + local decreaseThreshold = math.random(5, 10) + SetEntityHealth(ped, currentHealth - decreaseThreshold) + end + end + Wait(QBCore.Config.StatusInterval) + end +end) diff --git a/resources/[core]/qb-core/client/main.lua b/resources/[core]/qb-core/client/main.lua new file mode 100644 index 0000000..05d3b68 --- /dev/null +++ b/resources/[core]/qb-core/client/main.lua @@ -0,0 +1,50 @@ +QBCore = {} +QBCore.PlayerData = {} +QBCore.Config = QBConfig +QBCore.Shared = QBShared +QBCore.ClientCallbacks = {} +QBCore.ServerCallbacks = {} + +-- Get the full QBCore object (default behavior): +-- local QBCore = GetCoreObject() + +-- Get only specific parts of QBCore: +-- local QBCore = GetCoreObject({'Players', 'Config'}) + +local function GetCoreObject(filters) + if not filters then return QBCore end + local results = {} + for i = 1, #filters do + local key = filters[i] + if QBCore[key] then + results[key] = QBCore[key] + end + end + return results +end +exports('GetCoreObject', GetCoreObject) + +local function GetSharedItems() + return QBShared.Items +end +exports('GetSharedItems', GetSharedItems) + +local function GetSharedVehicles() + return QBShared.Vehicles +end +exports('GetSharedVehicles', GetSharedVehicles) + +local function GetSharedWeapons() + return QBShared.Weapons +end +exports('GetSharedWeapons', GetSharedWeapons) + +local function GetSharedJobs() + return QBShared.Jobs +end +exports('GetSharedJobs', GetSharedJobs) + +local function GetSharedGangs() + return QBShared.Gangs +end +exports('GetSharedGangs', GetSharedGangs) diff --git a/resources/[core]/qb-core/config.lua b/resources/[core]/qb-core/config.lua new file mode 100644 index 0000000..3c77309 --- /dev/null +++ b/resources/[core]/qb-core/config.lua @@ -0,0 +1,157 @@ +QBConfig = {} + +QBConfig.MaxPlayers = GetConvarInt('sv_maxclients', 48) -- Gets max players from config file, default 48 +QBConfig.DefaultSpawn = vector4(-1035.71, -2731.87, 12.86, 0.0) +QBConfig.UpdateInterval = 5 -- how often to update player data in minutes +QBConfig.StatusInterval = 5000 -- how often to check hunger/thirst status in milliseconds + +QBConfig.Money = {} +QBConfig.Money.MoneyTypes = { cash = 500, bank = 5000, crypto = 0 } -- type = startamount - Add or remove money types for your server (for ex. blackmoney = 0), remember once added it will not be removed from the database! +QBConfig.Money.DontAllowMinus = { 'cash', 'crypto' } -- Money that is not allowed going in minus +QBConfig.Money.MinusLimit = -5000 -- The maximum amount you can be negative +QBConfig.Money.PayCheckTimeOut = 10 -- The time in minutes that it will give the paycheck +QBConfig.Money.PayCheckSociety = false -- If true paycheck will come from the society account that the player is employed at, requires qb-management + +QBConfig.Player = {} +QBConfig.Player.HungerRate = 4.2 -- Rate at which hunger goes down. +QBConfig.Player.ThirstRate = 3.8 -- Rate at which thirst goes down. +QBConfig.Player.Bloodtypes = { + 'A+', 'A-', 'B+', 'B-', 'AB+', 'AB-', 'O+', 'O-', +} + +QBConfig.Player.PlayerDefaults = { + citizenid = function() return QBCore.Player.CreateCitizenId() end, + cid = 1, + money = function() + local moneyDefaults = {} + for moneytype, startamount in pairs(QBConfig.Money.MoneyTypes) do + moneyDefaults[moneytype] = startamount + end + return moneyDefaults + end, + optin = true, + charinfo = { + firstname = 'Firstname', + lastname = 'Lastname', + birthdate = '00-00-0000', + gender = 0, + nationality = 'USA', + phone = function() return QBCore.Functions.CreatePhoneNumber() end, + account = function() return QBCore.Functions.CreateAccountNumber() end + }, + job = { + name = 'unemployed', + label = 'Civilian', + payment = 10, + type = 'none', + onduty = false, + isboss = false, + grade = { + name = 'Freelancer', + level = 0 + } + }, + gang = { + name = 'none', + label = 'No Gang Affiliation', + isboss = false, + grade = { + name = 'none', + level = 0 + } + }, + metadata = { + hunger = 100, + thirst = 100, + stress = 0, + isdead = false, + inlaststand = false, + armor = 0, + ishandcuffed = false, + tracker = false, + injail = 0, + jailitems = {}, + status = {}, + phone = {}, + rep = {}, + currentapartment = nil, + callsign = 'NO CALLSIGN', + bloodtype = function() return QBConfig.Player.Bloodtypes[math.random(1, #QBConfig.Player.Bloodtypes)] end, + fingerprint = function() return QBCore.Player.CreateFingerId() end, + walletid = function() return QBCore.Player.CreateWalletId() end, + criminalrecord = { + hasRecord = false, + date = nil + }, + licences = { + driver = true, + business = false, + weapon = false + }, + inside = { + house = nil, + apartment = { + apartmentType = nil, + apartmentId = nil, + } + }, + phonedata = { + SerialNumber = function() return QBCore.Player.CreateSerialNumber() end, + InstalledApps = {} + } + }, + position = QBConfig.DefaultSpawn, + items = {}, +} + +QBConfig.Server = {} -- General server config +QBConfig.Server.Closed = false -- Set server closed (no one can join except people with ace permission 'qbadmin.join') +QBConfig.Server.ClosedReason = 'Server Closed' -- Reason message to display when people can't join the server +QBConfig.Server.Uptime = 0 -- Time the server has been up. +QBConfig.Server.Whitelist = false -- Enable or disable whitelist on the server +QBConfig.Server.WhitelistPermission = 'admin' -- Permission that's able to enter the server when the whitelist is on +QBConfig.Server.PVP = true -- Enable or disable pvp on the server (Ability to shoot other players) +QBConfig.Server.Discord = '' -- Discord invite link +QBConfig.Server.CheckDuplicateLicense = true -- Check for duplicate rockstar license on join +QBConfig.Server.Permissions = { 'god', 'admin', 'mod' } -- Add as many groups as you want here after creating them in your server.cfg + +QBConfig.Commands = {} -- Command Configuration +QBConfig.Commands.OOCColor = { 255, 151, 133 } -- RGB color code for the OOC command + +QBConfig.Notify = {} + +QBConfig.Notify.NotificationStyling = { + group = false, -- Allow notifications to stack with a badge instead of repeating + position = 'right', -- top-left | top-right | bottom-left | bottom-right | top | bottom | left | right | center + progress = true -- Display Progress Bar +} + +-- These are how you define different notification variants +-- The "color" key is background of the notification +-- The "icon" key is the css-icon code, this project uses `Material Icons` & `Font Awesome` +QBConfig.Notify.VariantDefinitions = { + success = { + classes = 'success', + icon = 'check_circle' + }, + primary = { + classes = 'primary', + icon = 'notifications' + }, + warning = { + classes = 'warning', + icon = 'warning' + }, + error = { + classes = 'error', + icon = 'error' + }, + police = { + classes = 'police', + icon = 'local_police' + }, + ambulance = { + classes = 'ambulance', + icon = 'fas fa-ambulance' + } +} diff --git a/resources/[core]/qb-core/fxmanifest.lua b/resources/[core]/qb-core/fxmanifest.lua new file mode 100644 index 0000000..924a561 --- /dev/null +++ b/resources/[core]/qb-core/fxmanifest.lua @@ -0,0 +1,50 @@ +fx_version 'cerulean' +game 'gta5' +lua54 'yes' +author 'Kakarot' +description 'Core resource for the framework, contains all the core functionality and features' +version '1.3.0' + +shared_scripts { + 'config.lua', + 'shared/locale.lua', + 'locale/en.lua', + 'locale/*.lua', + 'shared/main.lua', + 'shared/items.lua', + 'shared/jobs.lua', + 'shared/vehicles.lua', + 'shared/gangs.lua', + 'shared/weapons.lua', + 'shared/locations.lua' +} + +client_scripts { + 'client/main.lua', + 'client/functions.lua', + 'client/loops.lua', + 'client/events.lua', + 'client/drawtext.lua' +} + +server_scripts { + '@oxmysql/lib/MySQL.lua', + 'server/main.lua', + 'server/functions.lua', + 'server/player.lua', + 'server/events.lua', + 'server/commands.lua', + 'server/exports.lua', + 'server/debug.lua' +} + +ui_page 'html/index.html' + +files { + 'html/index.html', + 'html/css/style.css', + 'html/css/drawtext.css', + 'html/js/*.js' +} + +dependency 'oxmysql' diff --git a/resources/[core]/qb-core/html/css/drawtext.css b/resources/[core]/qb-core/html/css/drawtext.css new file mode 100644 index 0000000..f6c920b --- /dev/null +++ b/resources/[core]/qb-core/html/css/drawtext.css @@ -0,0 +1,124 @@ +:root { + /* Typography */ + --font-primary: "Exo 2", sans-serif; + --font-weight-regular: 400; + --font-weight-medium: 500; + --font-weight-bold: 700; + --font-weight-light: 300; + /* Colors */ + --md-primary: #1c75d2; + --md-primary-container: #6facec; + --md-error: #c10114; + --md-error-container: #fe4255; + --md-success: #20bb44; + --md-success-container: #6ae587; + --md-warning: #ff9800; + --md-warning-container: #ffc107; + --md-info: #2197f2; + --md-info-container: #7ac1f7; + --md-surface: #fffbff; + --md-on-surface: #1c1b1f; + + /* Custom Variables */ + --primary-bg: rgba(23, 23, 23, 90%); + --active-bg: var(--md-error); + --font-color: white; + + /* Elevation */ + --md-elevation-1: 0px 1px 3px 1px rgba(0, 0, 0, 0.15); + + /* Border Radius */ + --md-radius-small: 5px; + --md-radius-medium: 10px; + --md-radius-extra-small: 0.15rem; +} + +#drawtext-container { + display: none; + width: 100%; + height: 100%; + overflow: hidden; + padding: 0; + margin: 0; + font-family: var(--font-primary) !important; + font-weight: var(--font-weight-light); +} + +.text { + position: absolute; + background: var(--primary-bg); + color: var(--font-color); + margin-top: 0.5rem; + padding: 0.45rem; + border-radius: var(--md-radius-extra-small); + box-shadow: var(--md-elevation-1); +} + +@media (width: 3840px) and (height: 2160px) { + #drawtext-container { + display: none; + width: 100%; + height: 100%; + overflow: hidden; + padding: 0; + margin: 0; + font-family: var(--font-primary) !important; + font-weight: var(--font-weight-light); + font-size: 1.5vh; + } +} + +.text.pressed { + background: var(--active-bg); +} + +.top { + left: 45vw; + top: -100px; +} + +.top.show { + transition: 0.5s; + top: 10px; + opacity: 1; +} + +.top.hide { + transition: 0.5s; + top: -100px; + opacity: 0; +} + +.right { + top: 50%; + right: -100px; +} + +.right.show { + transition: 0.5s; + right: 10px; + opacity: 1; +} + +.right.hide { + transition: 0.5s; + right: -100px; + opacity: 0; +} + +.left { + top: 50%; + left: -100px; +} + +.left.show { + transition: 0.5s; + left: 10px; + opacity: 1; +} + +.left.hide { + transition: 0.5s; + left: -100px; + opacity: 0; +} diff --git a/resources/[core]/qb-core/html/css/style.css b/resources/[core]/qb-core/html/css/style.css new file mode 100644 index 0000000..62ae7d2 --- /dev/null +++ b/resources/[core]/qb-core/html/css/style.css @@ -0,0 +1,148 @@ +:root { + /* Typography */ + --font-primary: "Exo 2", sans-serif; + --font-weight-regular: 400; + --font-weight-medium: 500; + --font-weight-bold: 700; + --font-weight-light: 300; + + /* Colors */ + --md-primary: #0061a4; + --md-on-primary: #ffffff; + --md-primary-container: #d1e4ff; + --md-on-primary-container: #001d36; + + --md-error: #ba1a1a; + --md-on-error: #ffffff; + --md-error-container: #ffdad6; + --md-on-error-container: #410002; + + --md-success: #006e1c; + --md-on-success: #ffffff; + --md-success-container: #9df996; + --md-on-success-container: #002106; + + --md-warning: #7d5800; + --md-on-warning: #ffffff; + --md-warning-container: #ffdf93; + --md-on-warning-container: #271900; + + --md-info: #0062a1; + --md-on-info: #ffffff; + --md-info-container: #d0e4ff; + --md-on-info-container: #001d35; + + /* Surface colors */ + --md-surface: #fcfcff; + --md-on-surface: #1a1c1e; + --md-surface-variant: #dfe2eb; + --md-on-surface-variant: #43474e; + + /* Elevation */ + --md-elevation-1: 0px 1px 3px 1px rgba(0, 0, 0, 0.15); + + /* Border Radius */ + --md-radius-small: 4px; + --md-radius-medium: 8px; +} + +* { + font-family: var(--font-primary); + font-weight: var(--font-weight-regular); +} + +html::-webkit-scrollbar { + display: none; +} + +@media (width: 3840px) and (height: 2160px) { + .success { + background-color: rgba(23, 23, 23, 90%); + color: var(--md-on-surface); + box-shadow: var(--md-elevation-1); + border-left: 0.5rem solid var(--md-success); + font-size: 1.5vh; + } + + .primary { + background-color: rgba(23, 23, 23, 90%); + color: var(--md-on-surface); + box-shadow: var(--md-elevation-1); + border-left: 5px solid var(--md-primary); + font-size: 1.5vh; + } + + .error { + background-color: rgba(23, 23, 23, 90%); + color: var(--md-on-surface); + box-shadow: var(--md-elevation-1); + border-left: 5px solid var(--md-error); + font-size: 1.5vh; + } + + .warning { + background-color: rgba(23, 23, 23, 90%); + color: var(--md-on-surface); + box-shadow: var(--md-elevation-1); + border-left: 5px solid var(--md-warning); + font-size: 1.5vh; + } + + .police { + background-color: rgba(23, 23, 23, 90%); + color: var(--md-on-surface); + box-shadow: var(--md-elevation-1); + border-left: 5px solid var(--md-info); + font-size: 1.5vh; + } + + .ambulance { + background-color: rgba(23, 23, 23, 90%); + color: var(--md-on-surface); + box-shadow: var(--md-elevation-1); + border-left: 5px solid var(--md-error); + font-size: 1.5vh; + } +} + +.success { + background-color: var(--md-success-container); + color: var(--md-on-success-container); + padding: 12px 16px; + font-weight: var(--font-weight-medium); +} + +.primary { + background-color: var(--md-primary-container); + color: var(--md-on-primary-container); + padding: 12px 16px; + font-weight: var(--font-weight-medium); +} + +.warning { + background-color: var(--md-warning-container); + color: var(--md-on-warning-container); + padding: 12px 16px; + font-weight: var(--font-weight-medium); +} + +.error { + background-color: var(--md-error-container); + color: var(--md-on-error-container); + padding: 12px 16px; + font-weight: var(--font-weight-medium); +} + +.police { + background-color: var(--md-info-container); + color: var(--md-on-info-container); + padding: 12px 16px; + font-weight: var(--font-weight-medium); +} + +.ambulance { + background-color: var(--md-error-container); + color: var(--md-on-error-container); + padding: 12px 16px; + font-weight: var(--font-weight-medium); +} diff --git a/resources/[core]/qb-core/html/index.html b/resources/[core]/qb-core/html/index.html new file mode 100644 index 0000000..9d5286f --- /dev/null +++ b/resources/[core]/qb-core/html/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + +
+
+
+
+ + diff --git a/resources/[core]/qb-core/html/js/app.js b/resources/[core]/qb-core/html/js/app.js new file mode 100644 index 0000000..007f725 --- /dev/null +++ b/resources/[core]/qb-core/html/js/app.js @@ -0,0 +1,65 @@ +import { determineStyleFromVariant, fetchNotifyConfig, NOTIFY_CONFIG } from "./config.js"; + +const { useQuasar } = Quasar; +const { onMounted, onUnmounted } = Vue; + +const fetchNui = async (evName, data) => { + const resourceName = window.GetParentResourceName(); + + const rawResp = await fetch(`https://${resourceName}/${evName}`, { + body: JSON.stringify(data), + headers: { + "Content-Type": "application/json; charset=UTF8", + }, + method: "POST", + }); + + return await rawResp.json(); +}; + +window.fetchNui = fetchNui; + +const app = Vue.createApp({ + setup() { + const $q = useQuasar(); + + const showNotif = async ({ data }) => { + if (data?.action !== "notify") return; + + const { text, length, type, caption, icon: dataIcon } = data; + let { classes, icon } = determineStyleFromVariant(type); + + if (dataIcon) { + icon = dataIcon; + } + + if (!NOTIFY_CONFIG) { + console.error("The notification config did not load properly, trying again for next time"); + await fetchNotifyConfig(); + if (NOTIFY_CONFIG) return showNotif({ data }); + } + + $q.notify({ + message: text, + multiLine: text.length > 100, + group: NOTIFY_CONFIG.NotificationStyling.group ?? false, + progress: NOTIFY_CONFIG.NotificationStyling.progress ?? true, + position: NOTIFY_CONFIG.NotificationStyling.position ?? "right", + timeout: length, + caption, + classes, + icon, + }); + }; + onMounted(() => { + window.addEventListener("message", showNotif); + }); + onUnmounted(() => { + window.removeEventListener("message", showNotif); + }); + return {}; + }, +}); + +app.use(Quasar, { config: {} }); +app.mount("#q-app"); diff --git a/resources/[core]/qb-core/html/js/config.js b/resources/[core]/qb-core/html/js/config.js new file mode 100644 index 0000000..5ff6925 --- /dev/null +++ b/resources/[core]/qb-core/html/js/config.js @@ -0,0 +1,53 @@ +export let NOTIFY_CONFIG = null; + +const defaultConfig = { + NotificationStyling: { + group: true, + position: "top-right", + progress: true, + }, + VariantDefinitions: { + success: { + classes: "success", + icon: "done", + }, + primary: { + classes: "primary", + icon: "info", + }, + error: { + classes: "error", + icon: "dangerous", + }, + police: { + classes: "police", + icon: "local_police", + }, + ambulance: { + classes: "ambulance", + icon: "fas fa-ambulance", + }, + }, +}; + +export const determineStyleFromVariant = (variant) => { + const variantData = NOTIFY_CONFIG.VariantDefinitions[variant]; + if (!variantData) throw new Error(`Style of type: ${variant}, does not exist in the config`); + return variantData; +}; + +export const fetchNotifyConfig = async () => { + try { + NOTIFY_CONFIG = await window.fetchNui("getNotifyConfig", {}); + if (!NOTIFY_CONFIG) { + NOTIFY_CONFIG = defaultConfig; + } + } catch (error) { + console.error("Failed to fetch notification config, using default", error); + NOTIFY_CONFIG = defaultConfig; + } +}; + +window.addEventListener("load", async () => { + await fetchNotifyConfig(); +}); diff --git a/resources/[core]/qb-core/html/js/drawtext.js b/resources/[core]/qb-core/html/js/drawtext.js new file mode 100644 index 0000000..e93dad0 --- /dev/null +++ b/resources/[core]/qb-core/html/js/drawtext.js @@ -0,0 +1,124 @@ +let direction = null; + +const drawText = async (textData) => { + const text = document.getElementById("text"); + let { position } = textData; + switch (textData.position) { + case "left": + addClass(text, position); + direction = "left"; + break; + case "top": + addClass(text, position); + direction = "top"; + break; + case "right": + addClass(text, position); + direction = "right"; + break; + default: + addClass(text, "left"); + direction = "left"; + break; + } + + text.innerHTML = textData.text; + document.getElementById("drawtext-container").style.display = "block"; + await sleep(100); + addClass(text, "show"); +}; + +const changeText = async (textData) => { + const text = document.getElementById("text"); + let { position } = textData; + + removeClass(text, "show"); + addClass(text, "pressed"); + addClass(text, "hide"); + + await sleep(500); + removeClass(text, "left"); + removeClass(text, "right"); + removeClass(text, "top"); + removeClass(text, "bottom"); + removeClass(text, "hide"); + removeClass(text, "pressed"); + + switch (textData.position) { + case "left": + addClass(text, position); + direction = "left"; + break; + case "top": + addClass(text, position); + direction = "top"; + break; + case "right": + addClass(text, position); + direction = "right"; + break; + default: + addClass(text, "left"); + direction = "left"; + break; + } + text.innerHTML = textData.text; + + await sleep(100); + text.classList.add("show"); +}; + +const hideText = async () => { + const text = document.getElementById("text"); + removeClass(text, "show"); + addClass(text, "hide"); + + setTimeout(() => { + removeClass(text, "left"); + removeClass(text, "right"); + removeClass(text, "top"); + removeClass(text, "bottom"); + removeClass(text, "hide"); + removeClass(text, "pressed"); + document.getElementById("drawtext-container").style.display = "none"; + }, 1000); +}; + +const keyPressed = () => { + const text = document.getElementById("text"); + addClass(text, "pressed"); +}; + +window.addEventListener("message", (event) => { + const data = event.data; + const action = data.action; + const textData = data.data; + switch (action) { + case "DRAW_TEXT": + return drawText(textData); + case "CHANGE_TEXT": + return changeText(textData); + case "HIDE_TEXT": + return hideText(); + case "KEY_PRESSED": + return keyPressed(); + default: + return; + } +}); + +const sleep = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; + +const removeClass = (element, name) => { + if (element.classList.contains(name)) { + element.classList.remove(name); + } +}; + +const addClass = (element, name) => { + if (!element.classList.contains(name)) { + element.classList.add(name); + } +}; diff --git a/resources/[core]/qb-core/locale/ar.lua b/resources/[core]/qb-core/locale/ar.lua new file mode 100644 index 0000000..74bc1ee --- /dev/null +++ b/resources/[core]/qb-core/locale/ar.lua @@ -0,0 +1,127 @@ +local Translations = { + error = { + not_online = 'اللاعب غير متصل', + wrong_format = 'التنسيق غير صحيح', + missing_args = '(x, y, z) لم يتم ادخل جميع المعلومات', + missing_args2 = 'يجب ملأ جميع الحقول اللازمة', + no_access = 'لا يمكن الوصول إلى هذا الأمر', + company_too_poor = 'مسؤول الوظيفة لا يمكلك مال كافي', + item_not_exist = 'عنصر غير موجود', + too_heavy = 'لا يوجد مساحة في جقيبتك', + location_not_exist = 'الموقع غير موجود', + duplicate_license = 'وجدنا ترخيص روكستار مكرر او موجود مسبقا', + no_valid_license = 'ترخيص روكستار غير صحيح', + not_whitelisted = 'عضويتك غير مفعلة في هذا السيرفر', + server_already_open = 'السيرفر مفتووح', + server_already_closed = 'السيرفر مغلق', + no_permission = 'لاتمتلك الصلاحية', + no_waypoint = 'لم يتم تحديد الاتجاه.', + tp_error = 'خطأ اثناء الانتقال.', + }, + success = { + server_opened = 'تم فتح السيرفر', + server_closed = 'تم غلق السيرفر', + teleported_waypoint = 'تم الانتقال الي الاتجاه المحدد.', + }, + info = { + received_paycheck = '$%{value} لقد استملت راتبك الشهري', + job_info = '%{value} | %{value2} | %{value3}', + gang_info = '%{value} | %{value2}', + on_duty = 'انت الان في الخدمة', + off_duty = 'انت الان خارج الخدمة', + checking_ban = 'نحن نتحقق اذا كنت محجوب من السيرفر. %s مرحبا', + join_server = '{Server Name} في %s مرحبا', + checking_whitelisted = 'نتحقق ما اذا كان مسموح لك بالدخول %s مرحبا', + exploit_banned = 'لقد تم حجبك من السيرفر بسبب الغش ان كانت لديك اية تساؤلات اتصل بنا عبر ديسكورد السيرفر: %{discord}', + exploit_dropped = 'لقد تم طردك من السيرفر بسبب استغلالك بعض الثغرات', + }, + command = { + tp = { + help = 'الانتقال الي نقطة او إلى لاعب (إدارة فقط)', + params = { + x = { name = 'id/x', help = 'ايدي اللاعب او قيمة x'}, + y = { name = 'y', help = 'Y القيمة'}, + z = { name = 'z', help = 'Z القيمة'}, + }, + }, + tpm = { help = 'الانتقال الي النقطة المحددة (إدارة فقط)' }, + togglepvp = { help = 'تبديل وضع PVP في السيرفر (إدارة فقط)' }, + addpermission = { + help = 'إعطاء صلاحية للاعب (إدارة عليا)', + params = { + id = { name = 'id', help = 'آيدي اللاعب' }, + permission = { name = 'permission', help = 'مستوى الصلاحية او الرتبة' }, + }, + }, + removepermission = { + help = 'سحب صلاحية من لاعب (إدارة عليا)', + params = { + id = { name = 'id', help = 'آيدي اللاعب' }, + permission = { name = 'permission', help = 'مستوى الصلاحية او الرتبة' }, + }, + }, + openserver = { help = 'جعل السيرفر مفتح للكل (إدارة فقط)' }, + closeserver = { + help = 'إغلاق السيرفر بالنسبة للاشخاص الذين ليست لديهم اية صلاحية (إدارة فقط)', + params = { + reason = { name = 'reason', help = 'سبب الغلق (إختياري)' }, + }, + }, + car = { + help = 'رسبنة سيارة (إدارة فقط)', + params = { + model = { name = 'model', help = 'اسم موديل السيارة' }, + }, + }, + dv = { help = 'حذف السيارة (إدارة فقط)' }, + givemoney = { + help = 'اضافة أموال للاعب (إدارة فقط)', + params = { + id = { name = 'id', help = 'آيدي اللاعب' }, + moneytype = { name = 'moneytype', help = 'نوع المال (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'قيمة المال' }, + }, + }, + setmoney = { + help = 'تعيين المبلغ المالي للاعب (إدارة فقط)', + params = { + id = { name = 'id', help = 'آيدي اللاعب' }, + moneytype = { name = 'moneytype', help = 'نوع المال (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'قيمة المال' }, + }, + }, + job = { help = 'التحقق من الوظيفة' }, + setjob = { + help = 'اعطاء وظيفة للاعب (إدارة فقط)', + params = { + id = { name = 'id', help = 'ايدي اللاعب' }, + job = { name = 'job', help = 'اسم الوظيفة' }, + grade = { name = 'grade', help = 'رتبة الوظيفة' }, + }, + }, + gang = { help = 'التحقق من العصابة' }, + setgang = { + help = 'اعطاء عصابة للاعب (إدارة فقط)', + params = { + id = { name = 'id', help = 'ايدي اللاعب' }, + gang = { name = 'gang', help = 'اسم العصابة' }, + grade = { name = 'grade', help = 'رتبة العصابة' }, + }, + }, + ooc = { help = 'OOC رسائل خارج الرول بلاي' }, + me = { + help = 'اظهار الرسائل', + params = { + message = { name = 'message', help = 'الرسالة' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'ar' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/bg.lua b/resources/[core]/qb-core/locale/bg.lua new file mode 100644 index 0000000..b2891f3 --- /dev/null +++ b/resources/[core]/qb-core/locale/bg.lua @@ -0,0 +1,34 @@ +local Translations = { + error = { + not_online = 'Играчът не е онлайн', + wrong_format = 'Некоректен формат', + missing_args = 'Не всички аргументи са въведени (x, y, z)', + missing_args2 = 'Всички аргументи трябва да бъдат попълнени!', + no_access = 'Нямате достъп до тази команда', + company_too_poor = 'Работодателят ви е разорен', + item_not_exist = 'Артикулът не съществува', + too_heavy = 'Ивентарът е препълнен', + duplicate_license = 'Намерен е дубликат на Rockstar лиценза', + no_valid_license = 'Не е намерен валиден Rockstar лиценз', + not_whitelisted = 'Вие не сте включени в белия списък за този сървър' + }, + success = {}, + info = { + received_paycheck = 'Получихте заплата от $%{value}', + job_info = 'Работно място: %{value} | Чин: %{value2} | Служба: %{value3}', + gang_info = 'Банда: %{value} | Чин: %{value2}', + on_duty = 'Сега сте на служба!', + off_duty = 'Вече не сте на служба!', + checking_ban = 'Здравейте %s. Проверяваме дали сте баннат.', + join_server = 'Добре дошли %s в {Server Name}.', + checking_whitelisted = 'Здравейте %s. Проверяваме дали сте включени в белия списък.' + } +} + +if GetConvar('qb_locale', 'en') == 'bg' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/bs.lua b/resources/[core]/qb-core/locale/bs.lua new file mode 100644 index 0000000..a8c8824 --- /dev/null +++ b/resources/[core]/qb-core/locale/bs.lua @@ -0,0 +1,129 @@ +local Translations = { + error = { + not_online = 'Igrač nije na mreži', + wrong_format = 'Netačan format', + missing_args = 'Nije unesen svaki argument (X, Y, Z)', + missing_args2 = 'Svi argumenti moraju se popuniti!', + no_access = 'Nemate pristupa ovoj komandi', + company_too_poor = 'Vaš poslodavac je siromašan', + item_not_exist = 'Predmet ne postoji', + too_heavy = 'Inventar je prepun', + location_not_exist = 'Lokacija ne postoji', + duplicate_license = 'Duplicirana Rockstar licenca pronađena', + no_valid_license = 'Nije pronađena nijedna važeća Rockstar licenca', + not_whitelisted = 'Niste na listi za čekanje na ovom serveru', + server_already_open = 'Server je već otvoren', + server_already_closed = 'Server je već zatvoren', + no_permission = 'Nemate dozvole za ovo..', + no_waypoint = 'Nema postavljen marker.', + tp_error = 'Greška tokom teleportiranja.', + connecting_database_error = 'Došlo je do pogreške u bazi podataka tokom povezivanja na serverom. (Je li SQL server uključen?)', + connecting_database_timeout = 'Veza sa bazom podataka istekla. (Je li SQL server uključen?)', + }, + success = { + server_opened = 'Server je otvoren', + server_closed = 'Server je zatvoren', + teleported_waypoint = 'Teleportirani ste na marker.', + }, + info = { + received_paycheck = 'Primili ste platu od $%{value}', + job_info = 'Posao: %{value} | Nivo: %{value2} | Dužnost: %{value3}', + gang_info = 'Banda: %{value} | Nivo: %{value2}', + on_duty = 'Sada ste na dužnosti!', + off_duty = 'Sada ste izvan dužnosti!', + checking_ban = 'Zdravo %s. Provjeravamo da li ste banovani.', + join_server = 'Dobrodošli %s, na {Server Name}.', + checking_whitelisted = 'Zdravo %s. Provjeravamo listu za čekanje.', + exploit_banned = 'Banovani ste zbog varanja. Provjerite naš discord za više informacija: %{discord}', + exploit_dropped = 'Banovani ste zbog eksplotacije', + }, + command = { + tp = { + help = 'TP igraču ili koordinatama (Samo Admin)', + params = { + x = { name = 'id/x', help = 'ID igrača ili X kordinata'}, + y = { name = 'y', help = 'Y kordinata'}, + z = { name = 'z', help = 'Z kordinata'}, + }, + }, + tpm = { help = 'TP na Marker (Samo Admin)' }, + togglepvp = { help = 'Uključivanje PVP na serveru (Samo Admin)' }, + addpermission = { + help = 'Dajte dozvole igraču (Samo God)', + params = { + id = { name = 'id', help = 'ID igrača' }, + permission = { name = 'permission', help = 'Nivo dozvole' }, + }, + }, + removepermission = { + help = 'Uklonite dozvole igraču (Samo God)', + params = { + id = { name = 'id', help = 'ID igrača' }, + permission = { name = 'permission', help = 'Nivo dozvole' }, + }, + }, + openserver = { help = 'Otvorite server za sve (Samo Admin)' }, + closeserver = { + help = 'Zatvorite server za ljude bez dozvola (Samo Admin)', + params = { + reason = { name = 'reason', help = 'Razlog zatvaranja (neobavezno)' }, + }, + }, + car = { + help = 'Stvorite vozilo (Samo Admin)', + params = { + model = { name = 'model', help = 'Naziv modela vozila' }, + }, + }, + dv = { help = 'Izbrišite vozilo (Samo Admin)' }, + givemoney = { + help = 'Dajte novac igraču (Samo Admin)', + params = { + id = { name = 'id', help = 'ID igrača' }, + moneytype = { name = 'moneytype', help = 'Vrsta novca (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Količina novca' }, + }, + }, + setmoney = { + help = 'Podesite novac igraču (Samo Admin)', + params = { + id = { name = 'id', help = 'ID igrača' }, + moneytype = { name = 'moneytype', help = 'Vrsta novca (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Količina novca' }, + }, + }, + job = { help = 'Provjerite svoj posao' }, + setjob = { + help = 'Podesite posao igraču (Samo Admin)', + params = { + id = { name = 'id', help = 'ID igrača' }, + job = { name = 'job', help = 'Ime posla' }, + grade = { name = 'grade', help = 'Nivo posla' }, + }, + }, + gang = { help = 'Provjerite svoju bandu' }, + setgang = { + help = 'Postavite bandu igraču (Samo Admin)', + params = { + id = { name = 'id', help = 'ID igrača' }, + gang = { name = 'gang', help = 'Ime bande' }, + grade = { name = 'grade', help = 'Nivo bande' }, + }, + }, + ooc = { help = 'OOC Chat Poruka' }, + me = { + help = 'Prikaži lokalnu poruku', + params = { + message = { name = 'message', help = 'Poruka za slanje' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'bs' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end \ No newline at end of file diff --git a/resources/[core]/qb-core/locale/cn.lua b/resources/[core]/qb-core/locale/cn.lua new file mode 100644 index 0000000..e50d2d6 --- /dev/null +++ b/resources/[core]/qb-core/locale/cn.lua @@ -0,0 +1,129 @@ +local Translations = { + error = { + not_online = '玩家不在线', + wrong_format = '格式错误', + missing_args = '请输入必须参数 (x, y, z)', + missing_args2 = '请输入所有参数!', + no_access = '你没有权限', + company_too_poor = '你所在的公司账户目前发不起工资', + item_not_exist = '该物品不存在', + too_heavy = '背包已满', + location_not_exist = '位置不存在', + duplicate_license = '发现重复的 Rockstar 许可证', + no_valid_license = '未找到有效的 Rockstar 许可证', + not_whitelisted = '您没有被列入此服务器的白名单', + server_already_open = '服务器已打开', + server_already_closed = '服务器已关闭', + no_permission = '您没有此权限..', + no_waypoint = '无GPS点位设置.', + tp_error = '传送时出错.', + connecting_database_error = '连接到服务器时发生数据库错误。(SQL server是否已打开?)', + connecting_database_timeout = '与数据库的连接超时。(SQL server是否已打开?)', + }, + success = { + server_opened = '服务器已打开', + server_closed = '服务器已关闭', + teleported_waypoint = '传送至航路点.', + }, + info = { + received_paycheck = '你收到的薪水是 $%{value}', + job_info = '工作: %{value} | 级别: %{value2} | 上班状态: %{value3}', + gang_info = '帮派: %{value} | 级别: %{value2}', + on_duty = '你现在开始上班了!', + off_duty = '从现在开始你下班了!', + checking_ban = '你好 %s. 我们正在检查您是否被禁止.', + join_server = '欢迎 %s 加入 {Server Name}.', + checking_whitelisted = '你好 %s. 我们正在检查您是否在白名单内.', + exploit_banned = '你因作弊而被禁止。查看Discord了解更多信息:%{discord}', + exploit_dropped = '你因为被而被踢出', + }, + command = { + tp = { + help = 'TP至玩家或坐标(仅限管理员)', + params = { + x = { name = 'id/x', help = '玩家ID或X位置'}, + y = { name = 'y', help = 'Y位置'}, + z = { name = 'z', help = 'Z位置'}, + }, + }, + tpm = { help = 'TP到标记(仅限管理员)' }, + togglepvp = { help = '切换服务器上的PVP(仅限管理员)' }, + addpermission = { + help = '授予玩家权限(仅限God)', + params = { + id = { name = 'id', help = '玩家ID' }, + permission = { name = 'permission', help = '权限级别' }, + }, + }, + removepermission = { + help = '删除玩家权限(仅限上帝)', + params = { + id = { name = 'id', help = '玩家ID' }, + permission = { name = 'permission', help = '权限级别' }, + }, + }, + openserver = { help = '为每个人打开服务器(仅限管理员)' }, + closeserver = { + help = '为没有权限的人关闭服务器(仅限管理员)', + params = { + reason = { name = 'reason', help = '关闭原因(可选)' }, + }, + }, + car = { + help = '刷出车辆(仅限管理员)', + params = { + model = { name = 'model', help = '车辆型号名称' }, + }, + }, + dv = { help = '删除车辆(仅限管理员)' }, + givemoney = { + help = '给玩家钱(仅限管理员)', + params = { + id = { name = 'id', help = '玩家ID' }, + moneytype = { name = 'moneytype', help = '货币类型(cash, bank, crypto)' }, + amount = { name = 'amount', help = '数量' }, + }, + }, + setmoney = { + help = '设置玩家金额(仅限管理员)', + params = { + id = { name = 'id', help = '玩家ID' }, + moneytype = { name = 'moneytype', help = '货币类型(cash, bank, crypto)' }, + amount = { name = 'amount', help = '数量' }, + }, + }, + job = { help = '检查您的工作' }, + setjob = { + help = '设置玩家工作(仅限管理员)', + params = { + id = { name = 'id', help = '玩家ID' }, + job = { name = 'job', help = '工作名称' }, + grade = { name = 'grade', help = '工作级别' }, + }, + }, + gang = { help = '检查你的帮派' }, + setgang = { + help = '设置玩家作业(仅限管理员)', + params = { + id = { name = 'id', help = '玩家ID' }, + gang = { name = 'gang', help = '帮派名称' }, + grade = { name = 'grade', help = '帮派级别' }, + }, + }, + ooc = { help = 'OOC聊天消息' }, + me = { + help = '显示本地消息', + params = { + message = { name = 'message', help = '要发送的消息' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'cn' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end \ No newline at end of file diff --git a/resources/[core]/qb-core/locale/cs.lua b/resources/[core]/qb-core/locale/cs.lua new file mode 100644 index 0000000..199faac --- /dev/null +++ b/resources/[core]/qb-core/locale/cs.lua @@ -0,0 +1,119 @@ +local Translations = { + error = { + not_online = 'Hráč není online', + wrong_format = 'Nesprávný formát', + missing_args = 'Né všechny argumenty byly vyplněny (x, y, z)', + missing_args2 = 'Všechny argumenty musí být vyplněný!', + no_access = 'Nemáte přístup k tomuto příkazu', + company_too_poor = 'Váš zaměstnavatel nemá dostatek peněz, aby vás vyplatil', + item_not_exist = 'Předmět neexistuje', + too_heavy = 'Inventář je plný', + duplicate_license = 'Stejná Rockstar licence je již na serveru', + no_valid_license = 'Nebyla nalezena žádná platná Rockstar licence', + not_whitelisted = 'Nejste na whitelistu' + }, + success = { + server_opened = 'Server byl otevřen', + server_closed = 'Server byl uzavřen', + teleported_waypoint = 'Teleportováno na Waypoint.', + }, + info = { + received_paycheck = 'Obdrželi jste výplatu v hodnotě $%{value}', + job_info = 'Práce: %{value} | Pozice: %{value2} | Ve službě: %{value3}', + gang_info = 'Gang: %{value} | Pozice: %{value2}', + on_duty = 'Vešli jste do služby', + off_duty = 'Odešli jste ze služby!', + checking_ban = 'Ahoj %s. Kontrolujeme zda nejste zabanováni.', + join_server = 'Vítejte %s na {Server Name}.', + checking_whitelisted = 'Ahoj %s. Kontrolujeme zda máte přístup.' + }, + command = { + tp = { + help = 'Teleport k hráči nebo na souřadnice (Pouze Admin)', + params = { + x = { name = 'id/x', help = 'ID hráče nebo X pozice'}, + y = { name = 'y', help = 'Y pozice'}, + z = { name = 'z', help = 'Z pozice'}, + }, + }, + tpm = { help = 'TP Na Marker (pouze Admin)' }, + togglepvp = { help = 'Přepnutí PVP na serveru (Pouze Admin)' }, + addpermission = { + help = 'Udělení hráči oprávnění (God Pouze)', + params = { + id = { name = 'id', help = 'ID hráče' }, + permission = { name = 'permission', help = 'Úroveň oprávnění' }, + }, + }, + removepermission = { + help = 'Odeber hráči oprávnění (God Pouze)', + params = { + id = { name = 'id', help = 'ID hráče' }, + permission = { name = 'permission', help = 'Úroveň oprávnění' }, + }, + }, + openserver = { help = 'Otevři server pro všechny (Pouze Admin)' }, + closeserver = { + help = 'Uzavři server pro všechny bez práv (Pouze Admin)', + params = { + reason = { name = 'reason', help = 'Důdov pro uzavření (optimální)' }, + }, + }, + car = { + help = 'Spawn Vozidla (Pouze Admin)', + params = { + model = { name = 'model', help = 'Jméno modelu vozidla' }, + }, + }, + dv = { help = 'Odstraň vozidlo (Pouze Admin)' }, + givemoney = { + help = 'Dej hráči peníze (Pouze Admin)', + params = { + id = { name = 'id', help = 'ID hráče' }, + moneytype = { name = 'moneytype', help = 'Typ (hotovost, banka, krypto)' }, + amount = { name = 'amount', help = 'Počet peněz' }, + }, + }, + setmoney = { + help = 'Nastav hráči peníze (Pouze Admin)', + params = { + id = { name = 'id', help = 'ID hráče' }, + moneytype = { name = 'moneytype', help = 'Typ (hotovost, banka, krypto)' }, + amount = { name = 'amount', help = 'Počet peněz' }, + }, + }, + job = { help = 'Zkontroluj si práci' }, + setjob = { + help = 'Nastav hráči práci (Pouze Admin)', + params = { + id = { name = 'id', help = 'ID hráče' }, + job = { name = 'job', help = 'Jméno práce' }, + grade = { name = 'grade', help = 'Jméno hodnosti' }, + }, + }, + gang = { help = 'Zkontroluj si gang' }, + setgang = { + help = 'Nastav hráči gang (Pouze Admin)', + params = { + id = { name = 'id', help = 'ID hráče' }, + gang = { name = 'gang', help = 'Jméno gangu' }, + grade = { name = 'grade', help = 'Pozice v gangu' }, + }, + }, + ooc = { help = 'OOC Chat' }, + me = { + help = 'Ukaž zprávu', + params = { + message = { name = 'message', help = 'Zpráva k odeslání' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'cs' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/da.lua b/resources/[core]/qb-core/locale/da.lua new file mode 100644 index 0000000..d7102b9 --- /dev/null +++ b/resources/[core]/qb-core/locale/da.lua @@ -0,0 +1,129 @@ +local Translations = { + error = { + not_online = 'Spiller ikke online', + wrong_format = 'Forkert format', + missing_args = 'Du mangler nogle argumenter (x, y, z)', + missing_args2 = 'Alle argumenter skal udfyldes!', + no_access = 'Ingen adgang til denne kommando', + company_too_poor = 'Din arbejdsgiver er for fattig', + item_not_exist = 'Item findes ikke', + too_heavy = 'Tasken er fuld', + location_not_exist = 'Placering findes ikke', + duplicate_license = 'Dublet Rockstar-licens fundet', + no_valid_license = 'Ingen gyldig Rockstar-licens fundet', + not_whitelisted = 'Du er ikke allowlisted på denne server', + server_already_open = 'Serveren er allerede åben', + server_already_closed = 'Serveren er allerede lukket', + no_permission = 'Du har ikke tilladelser til dette..', + no_waypoint = 'Intet waypoint indstillet.', + tp_error = 'Fejl under teleportering.', + connecting_database_error = 'Der opstod en databasefejl under forbindelse til serveren. (Er SQL-serveren tændt?)', + connecting_database_timeout = 'Forbindelsen til databasen fik timeout. (Er SQL-serveren tændt?)', + }, + success = { + server_opened = 'Serveren er blevet åbnet', + server_closed = 'Serveren er blevet lukket', + teleported_waypoint = 'Teleporteret til waypoint.', + }, + info = { + received_paycheck = 'Du har modtaget din lønseddel på %{value} kr.', + job_info = 'Job: %{value} | Karakter: %{value2} | På Arbejde: ​​%{value3}', + gang_info = 'Bande: %{value} | Karakter: %{value2}', + on_duty = 'Du er nu på vagt!', + off_duty = 'Du har nu fri!', + checking_ban = 'Hej %s. Vi tjekker om du er bannet.', + join_server = 'Velkommen %s til {Server Name}.', + checking_whitelisted = 'Hej %s. Vi tjekker din godtgørelse.', + exploit_banned = 'Du er blevet udelukket for exploit. Tjek vores Discord for mere information: %{discord}', + exploit_dropped = 'Du er blevet sparket for exploit', + }, + command = { + tp = { + help = 'TP til spiller eller koordinater (kun admin)', + params = { + x = { name = 'id/x', help = 'ID for spiller eller X-position'}, + y = { name = 'y', help = 'Y position'}, + z = { name = 'z', help = 'Z position'}, + }, + }, + tpm = { help = 'TP til markør (kun admin)' }, + togglepvp = { help = 'Slå PVP til/fra på serveren (kun admin)' }, + addpermission = { + help = 'Giv spillertilladelser (kun gud)', + params = { + id = { name = 'id', help = 'ID på spiller' }, + permission = { name = 'tilladelse', help = 'Tilladelsesniveau' }, + }, + }, + removepermission = { + help = 'Fjern spillertilladelser (kun gud)', + params = { + id = { name = 'id', help = 'ID på spiller' }, + permission = { name = 'tilladelse', help = 'Tilladelsesniveau' }, + }, + }, + openserver = { help = 'Åbn serveren for alle (kun admin)' }, + closeserver = { + help = 'Luk serveren for personer uden tilladelser (kun administrator)', + params = { + reason = { name = 'årsag', help = 'Årsag til lukning (valgfrit)' }, + }, + }, + car = { + help = 'Spawn-køretøj (kun admin)', + params = { + model = { name = 'model', help = 'Model navn på køretøjet' }, + }, + }, + dv = { help = 'Slet køretøj (kun admin)' }, + givemoney = { + help = 'Giv en spiller penge (kun admin)', + params = { + id = { name = 'id', help = 'Spiller ID' }, + moneytype = { name = 'pengetype', help = 'Type penge (cash, bank, crypto)' }, + amount = { name = 'beløb', help = 'Mængde penge' }, + }, + }, + setmoney = { + help = 'Indstil spillerens pengebeløb (kun administrator)', + params = { + id = { name = 'id', help = 'Spiller ID' }, + moneytype = { name = 'pengetype', help = 'Type penge (cash, bank, crypto)' }, + amount = { name = 'beløb', help = 'Mængde penge' }, + }, + }, + job = { help = 'Tjek Dit Job' }, + setjob = { + help = 'Sæt en spillers job (kun admin)', + params = { + id = { name = 'id', help = 'Spiller ID' }, + job = { name = 'job', help = 'Job navn' }, + grade = { name = 'grade', help = 'Job grade' }, + }, + }, + gang = { help = 'Tjek din bande' }, + setgang = { + help = 'Sæt en spiller til bande (kun admin)', + params = { + id = { name = 'id', help = 'Spiller ID' }, + gang = { name = 'bande', help = 'Bande navn' }, + grade = { name = 'grade', help = 'Bande grade' }, + }, + }, + ooc = { help = 'OOC Chat Besked' }, + me = { + help = 'Vis lokal besked', + params = { + message = { name = 'besked', help = 'Besked at sende' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'da' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/de.lua b/resources/[core]/qb-core/locale/de.lua new file mode 100644 index 0000000..398ac21 --- /dev/null +++ b/resources/[core]/qb-core/locale/de.lua @@ -0,0 +1,130 @@ +local Translations = { + error = { + not_online = 'Der Spieler ist nicht online', + wrong_format = 'Falsches Format', + missing_args = 'Nicht alle Argumente wurden ausgefüllt (x, y, z)', + missing_args2 = 'Alle Argumente müssen ausgefüllt sein!', + no_access = 'Kein Zugriff auf diesen Befehl', + company_too_poor = 'Dein Arbeitgeber hat kein Geld mehr', + item_not_exist = 'Das Item existiert nicht', + too_heavy = 'Inventar zu voll', + location_not_exist = 'Der Ort existiert nicht', + duplicate_license = 'Doppelte Rockstar-Lizenz gefunden', + no_valid_license = 'Keine verifizierte Rockstar-Lizenz gefunden', + not_whitelisted = 'Du bist nicht gewhitelisted', + server_already_open = 'Der Server ist schon geöffnet', + server_already_closed = 'Der Server ist schon geschlossen', + no_permission = 'Du hast keine Rechte dafür..', + no_waypoint = 'Kein Wegpunkt gesetzt.', + tp_error = 'Error beim teleportieren.', + }, + success = { + server_opened = 'Der Server wurde geöffnet', + server_closed = 'Der Server wurde geschlossen', + teleported_waypoint = 'Zum Wegpunkt teleportiert.', + }, + info = { + received_paycheck = 'Du hast dein Gehalt in Höhe von $%{value} erhalten', + job_info = 'Beruf: %{value} | Dienstgrad: %{value2} | im Dienst: %{value3}', + gang_info = 'Gang: %{value} | Rang: %{value2}', + on_duty = 'Du befindest dich nun im Dienst!', + off_duty = 'Du befindest dich nun nicht mehr im Dienst!', + checking_ban = 'Hallo %s. Wir prüfen, ob du gebannt wurdest.', + join_server = 'Willkommen %s bei {Server Name}.', + checking_whitelisted = 'Hallo %s. Wir prüfen deine Erlaubnis.', + exploit_banned = 'Du wurdest fürs Cheaten gebannt. Meld dich auf dem Discord: %{discord}', + exploit_dropped = 'Du wurdest gekickt, für das Ausnutzen von Fehlern', + }, + command = { + tp = { + help = 'TP zu Spieler oder Coords (Nur Admins)', + params = { + x = { name = 'id/x', help = 'ID vom Spieler oder X position'}, + y = { name = 'y', help = 'Y position'}, + z = { name = 'z', help = 'Z position'}, + }, + }, + tpm = { help = 'TP zum Marker (Nur Admins)' }, + togglepvp = { help = 'Schalte PVP ein oder aus (Nur Admins)' }, + addpermission = { + help = 'Gebe einem Spieler Rechte (God Only)', + params = { + id = { name = 'id', help = 'ID des Spielers' }, + permission = { name = 'permission', help = 'Zugriffsrechte' }, + }, + }, + removepermission = { + help = 'Nimm jemand die Rechte (God Only)', + params = { + id = { name = 'id', help = 'ID des Spielers' }, + permission = { name = 'permission', help = 'Zugriffsrechte' }, + }, + }, + openserver = { help = 'Öffne den Server für jeden (Nur Admins)' }, + closeserver = { + help = 'Schließe den Server für Leute ohne Rechte (Nur Admins)', + params = { + reason = { name = 'reason', help = 'Grund fürs schließen (optional)' }, + }, + }, + car = { + help = 'Spawne ein Fahrzeug (Nur Admins)', + params = { + model = { name = 'model', help = 'Modell Name' }, + }, + }, + dv = { help = 'Fahrzeug entfernen (Nur Admins)' }, + dvall = { help = 'Entferne alle Fahrzeuge (Nur Admins)' }, + dvp = { help = 'Entferne alle Peds (Nur Admins)' }, + dvo = { help = 'Entferne alle Objekte (Nur Admins)' }, + givemoney = { + help = 'Gib jemandem Geld (Nur Admins)', + params = { + id = { name = 'id', help = 'Spieler ID' }, + moneytype = { name = 'moneytype', help = 'Geldtyp (Bargeld, Bank, Crypto)' }, + amount = { name = 'amount', help = 'Geldmenge' }, + }, + }, + setmoney = { + help = 'Setze die Geldmenge für einen Spieler (Nur Admins)', + params = { + id = { name = 'id', help = 'Spieler ID' }, + moneytype = { name = 'moneytype', help = 'Geldtyp (Bargeld, Bank, Crypto)' }, + amount = { name = 'amount', help = 'Geldmenge' }, + }, + }, + job = { help = 'Check deinen Job' }, + setjob = { + help = 'Setze den Job eines Spielers (Nur Admins)', + params = { + id = { name = 'id', help = 'Spieler ID' }, + job = { name = 'job', help = 'Job Name' }, + grade = { name = 'grade', help = 'Dienstgrad' }, + }, + }, + gang = { help = 'Check deine Gang' }, + setgang = { + help = 'Setze die Gang eines Spielers (Nur Admins)', + params = { + id = { name = 'id', help = 'Spieler ID' }, + gang = { name = 'gang', help = 'Gang Name' }, + grade = { name = 'grade', help = 'Gang Rang' }, + }, + }, + ooc = { help = 'OOC Chat Nachricht' }, + me = { + help = 'Locale Chat Nachricht', + params = { + message = { name = 'message', help = 'Nachricht zu senden' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'de' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/ee.lua b/resources/[core]/qb-core/locale/ee.lua new file mode 100644 index 0000000..5d57f0f --- /dev/null +++ b/resources/[core]/qb-core/locale/ee.lua @@ -0,0 +1,34 @@ +local Translations = { + error = { + not_online = 'Mängija pole serveris!', + wrong_format = 'Vale formaat.', + missing_args = 'Kõiki argumente pole sisestatud (x, y, z)', + missing_args2 = 'Kõik argumendid tuleb täita!', + no_access = 'Sellele käsule pole juurdepääsu!', + company_too_poor = 'Teie tööandja on pankrotis.', + item_not_exist = 'Sellist asja ei eksisteeri', + too_heavy = 'Inventuur on liiga täis', + duplicate_license = 'Leiti Rockstari litsentsi duplikaat', + no_valid_license = 'Kehtivat Rockstari litsentsi ei leitud', + not_whitelisted = 'Te\'pole serveri Allowlistis!' + }, + success = {}, + info = { + received_paycheck = 'Saite oma töötasu kätte $%{value}', + job_info = 'Töökoht: %{value} | Auaste: %{value2} | Tööl: %{value3}', + gang_info = 'Gang: %{value} | Auaste: %{value2}', + on_duty = 'Alustasite enda tööpäeva!', + off_duty = 'Lõpetasite enda tööpäeva!', + checking_ban = 'Tere %s. Me kontrollime, kas olete keelustatud.', + join_server = 'Tere tulemast %s serverisse {Server Name}.', + checking_whitelisted = 'Tere %s. Kontrollime teie Allowlisti olemasolu.' + } +} + +if GetConvar('qb_locale', 'en') == 'ee' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/el.lua b/resources/[core]/qb-core/locale/el.lua new file mode 100644 index 0000000..caf6085 --- /dev/null +++ b/resources/[core]/qb-core/locale/el.lua @@ -0,0 +1,126 @@ +local Translations = { + error = { + not_online = 'Ο παίκτης δεν είναι online', + wrong_format = 'Λανθασμένη μορφοποίηση', + missing_args = 'Δεν έχουν δωθεί όλοι οι παράμετροι (x, y, z)', + missing_args2 = 'Όλοι οι παράμετροι πρέπει να συμπληρωθούν!', + no_access = 'Δεν έχεις πρόσβαση σε αυτή την εντολή', + company_too_poor = 'Ο εργοδώτης σου, πτώχευσε', + item_not_exist = 'Δεν υπάρχει αυτό το αντικείμενο', + too_heavy = 'Πολύ βαρύ σακαίδιο', + location_not_exist = 'Δεν υπάρχει αυτή η τοποθεσία', + duplicate_license = 'Βρέθηκε διπλή Rockstar Άδεια χρήσης', + no_valid_license = 'Μη έγκυρη Rockstar Άδεια χρήσης', + not_whitelisted = 'Δεν είναι προσκεκλημένος σε αυτό το server', + server_already_open = 'Αυτός ο server έχει ήδη ανοίξει', + server_already_closed = 'Αυτός ο server έχει ήδη κλείσει', + no_permission = 'Δεν έχεις άδεια για αυτό..', + no_waypoint = 'Δεν ορίστικε προορισμός.', + tp_error = 'Πρόβλημα καθώς μεταφερώσουν.', + connecting_database_error = 'Πρόβλημα στην σύνδεση της βάσης δεδομένων. (Είναι ενεργός ο SQL server?)', + connecting_database_timeout = 'Έληξε ο χρόνος σύνδεσης της βάσης δεδοομένων. (Είναι ενεργός ο SQL server?)', + }, + success = { + server_opened = 'Αυτός ο server έχει ανοίξει', + server_closed = 'Αυτός ο server έχει κλείσει', + teleported_waypoint = 'Τηλεμεταφέρθηκες στο σημείο.', + }, + info = { + received_paycheck = 'Έχεις λάβει πληρωμή, τάξεως $%{value}', + job_info = 'Εργασία: %{value} | Βαθμός: %{value2} | Καθήκων: %{value3}', + gang_info = 'Συμμορία: %{value} | Βαθμός: %{value2}', + on_duty = 'Τώρα είσαι σε υπηρεσία!', + off_duty = 'Τώρα είσαι εκτώς υπηρεσίας!', + checking_ban = 'Γειά %s. Ελέγχουμε εάν έχεις αποκλειστεί.', + join_server = 'Καλως ήρθες %s στο {Server Name}.', + checking_whitelisted = 'Γειά %s. Ελέγχουμε εάν έχεις προσκληθεί.', + exploit_banned = 'Έχεις αποκλειστεί για αντικανονικό παιχνίδι. Έλεγξε το Discord μας για παραπάνω λεπτομέριες: %{discord}', + exploit_dropped = 'Έχεις εκδιωχθεί για αντικανονικό παιχνίδι.', + }, + command = { + tp = { + help = 'Τηλεμεταφορά σε παίκτη ή συντεταγμένες (Admin Μόνο)', + params = { + x = { name = 'id/x', help = 'ID του παίκτη ή X θέση'}, + y = { name = 'y', help = 'Y θέση' }, + z = { name = 'z', help = 'Z θέση' }, + }, + }, + tpm = { help = 'Τηλεμεταφορά σε Marker (Admin Μόνο)' }, + togglepvp = { help = 'Ενεργοποίησε το PVP στον server (Admin Μόνο)' }, + addpermission = { + help = 'Δώσε πρόσβαση στον παίκτη (God Μόνο)', + params = { + id = { name = 'id', help = 'ID του παίκτη' }, + permission = { name = 'permission', help = 'Επίπεδο πρόσβασης' }, + }, + }, + removepermission = { + help = 'Αφαίρεση πρόσβασης παίκτη (God Μόνο)', + params = { + id = { name = 'id', help = 'ID του παίκτη' }, + permission = { name = 'permission', help = 'Επίπεδο πρόσβασης' }, + }, + }, + openserver = { help = 'Άνοιξε τον server για όλους (Admin Μόνο)' }, + closeserver = { + help = 'Κλείσε τον server για άτομα μη εξουσιοδωτημένα. (Admin Μόνο)', + params = { + reason = { name = 'reason', help = 'Λόγος κλεισίματος (προεραιτικό)' }, + }, + }, + car = { + help = 'Δημιουργία οχήματος (Admin Μόνο)', + params = { + model = { name = 'model', help = 'Model name of the vehicle' }, + }, + }, + dv = { help = 'Σβήσιμο οχήματος (Admin Μόνο)' }, + givemoney = { + help = 'Δώσε χρήματα σε έναν παίκτη (Admin Μόνο)', + params = { + id = { name = 'id', help = 'ID του παίκτη' }, + moneytype = { name = 'moneytype', help = 'Τύπος χρήματος (μετρητά, τράπεζα, crypto)' }, + amount = { name = 'amount', help = 'Ποσό χρημάτων' }, + }, + }, + setmoney = { + help = 'Set Players Money Amount (Admin Μόνο)', + params = { + id = { name = 'id', help = 'ID του παίκτη' }, + moneytype = { name = 'moneytype', help = 'Τύπος χρήματος (μετρητά, τράπεζα, crypto)' }, + amount = { name = 'amount', help = 'Ποσό χρημάτων' }, + }, + }, + job = { help = 'Check Your Job' }, + setjob = { + help = 'Set A Players Job (Admin Μόνο)', + params = { + id = { name = 'id', help = 'ID του παίκτη' }, + job = { name = 'job', help = 'Όνομα εργασίας' }, + grade = { name = 'grade', help = 'Βαθμός εργασίας' }, + }, + }, + gang = { help = 'Έλεγξε την συμμορία σου' }, + setgang = { + help = 'Όρισε σε έναν παίκτη μια συμμορία (Admin Μόνο)', + params = { + id = { name = 'id', help = 'ID του παίκτη' }, + gang = { name = 'gang', help = 'Όνομα συμμορίας' }, + grade = { name = 'grade', help = 'Βαθμός συμμορίας' }, + }, + }, + ooc = { help = 'OOC Μήνυμα Συνομιλίας' }, + me = { + help = 'Προβολή τοπικού μηνύματος', + params = { + message = { name = 'message', help = 'Μήνυμα προς αποστολή' } + }, + }, + }, +} + +Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true +}) diff --git a/resources/[core]/qb-core/locale/en.lua b/resources/[core]/qb-core/locale/en.lua new file mode 100644 index 0000000..2c17a26 --- /dev/null +++ b/resources/[core]/qb-core/locale/en.lua @@ -0,0 +1,130 @@ +local Translations = { + error = { + not_online = 'Player not online', + wrong_format = 'Incorrect format', + missing_args = 'Not every argument has been entered (x, y, z)', + missing_args2 = 'All arguments must be filled out!', + no_access = 'No access to this command', + company_too_poor = 'Your employer is broke', + item_not_exist = 'Item does not exist', + too_heavy = 'Inventory too full', + location_not_exist = 'Location does not exist', + duplicate_license = '[QBCORE] - Duplicate Rockstar License Found', + no_valid_license = '[QBCORE] - No Valid Rockstar License Found', + not_whitelisted = '[QBCORE] - You\'re not whitelisted for this server', + server_already_open = 'The server is already open', + server_already_closed = 'The server is already closed', + no_permission = 'You don\'t have permissions for this..', + no_waypoint = 'No Waypoint Set.', + tp_error = 'Error While Teleporting.', + ban_table_not_found = '[QBCORE] - Unable to find the bans table in the database. Please ensure you have imported the SQL file correctly.', + connecting_database_error = '[QBCORE] - An error occurred while connecting to the database. Ensure that the SQL server is running and that the details in the server.cfg file are correct.', + connecting_database_timeout = '[QBCORE] - The database connection has timed out. Ensure that the SQL server is running and that the details in the server.cfg file are correct.', + }, + success = { + server_opened = 'The server has been opened', + server_closed = 'The server has been closed', + teleported_waypoint = 'Teleported To Waypoint.', + }, + info = { + received_paycheck = 'You received your paycheck of $%{value}', + job_info = 'Job: %{value} | Grade: %{value2} | Duty: %{value3}', + gang_info = 'Gang: %{value} | Grade: %{value2}', + on_duty = 'You are now on duty!', + off_duty = 'You are now off duty!', + checking_ban = 'Hello %s. We are checking if you are banned.', + join_server = 'Welcome %s to {Server Name}.', + checking_whitelisted = 'Hello %s. We are checking your allowance.', + exploit_banned = 'You have been banned for cheating. Check our Discord for more information: %{discord}', + exploit_dropped = 'You Have Been Kicked For Exploitation', + }, + command = { + tp = { + help = 'TP To Player or Coords (Admin Only)', + params = { + x = { name = 'id/x', help = 'ID of player or X position' }, + y = { name = 'y', help = 'Y position' }, + z = { name = 'z', help = 'Z position' }, + }, + }, + tpm = { help = 'TP To Marker (Admin Only)' }, + togglepvp = { help = 'Toggle PVP on the server (Admin Only)' }, + addpermission = { + help = 'Give Player Permissions (God Only)', + params = { + id = { name = 'id', help = 'ID of player' }, + permission = { name = 'permission', help = 'Permission level' }, + }, + }, + removepermission = { + help = 'Remove Player Permissions (God Only)', + params = { + id = { name = 'id', help = 'ID of player' }, + permission = { name = 'permission', help = 'Permission level' }, + }, + }, + openserver = { help = 'Open the server for everyone (Admin Only)' }, + closeserver = { + help = 'Close the server for people without permissions (Admin Only)', + params = { + reason = { name = 'reason', help = 'Reason for closing (optional)' }, + }, + }, + car = { + help = 'Spawn Vehicle (Admin Only)', + params = { + model = { name = 'model', help = 'Model name of the vehicle' }, + }, + }, + dv = { help = 'Delete Vehicle (Admin Only)' }, + dvall = { help = 'Delete All Vehicles (Admin Only)' }, + dvp = { help = 'Delete All Peds (Admin Only)' }, + dvo = { help = 'Delete All Objects (Admin Only)' }, + givemoney = { + help = 'Give A Player Money (Admin Only)', + params = { + id = { name = 'id', help = 'Player ID' }, + moneytype = { name = 'moneytype', help = 'Type of money (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Amount of money' }, + }, + }, + setmoney = { + help = 'Set Players Money Amount (Admin Only)', + params = { + id = { name = 'id', help = 'Player ID' }, + moneytype = { name = 'moneytype', help = 'Type of money (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Amount of money' }, + }, + }, + job = { help = 'Check Your Job' }, + setjob = { + help = 'Set A Players Job (Admin Only)', + params = { + id = { name = 'id', help = 'Player ID' }, + job = { name = 'job', help = 'Job name' }, + grade = { name = 'grade', help = 'Job grade' }, + }, + }, + gang = { help = 'Check Your Gang' }, + setgang = { + help = 'Set A Players Gang (Admin Only)', + params = { + id = { name = 'id', help = 'Player ID' }, + gang = { name = 'gang', help = 'Gang name' }, + grade = { name = 'grade', help = 'Gang grade' }, + }, + }, + ooc = { help = 'OOC Chat Message' }, + me = { + help = 'Show local message', + params = { + message = { name = 'message', help = 'Message to send' } + }, + }, + }, +} + +Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true +}) diff --git a/resources/[core]/qb-core/locale/es.lua b/resources/[core]/qb-core/locale/es.lua new file mode 100644 index 0000000..c4fcd21 --- /dev/null +++ b/resources/[core]/qb-core/locale/es.lua @@ -0,0 +1,132 @@ +local Translations = { + error = { + not_online = 'El jugador no está conectado', + wrong_format = 'Formato incorrecto', + missing_args = 'No se han ingresado todos los argumentos (x, y, z)', + missing_args2 = '¡Debes ingresar todos los argumentos!', + no_access = 'No tienes acceso a este comando', + company_too_poor = 'Tu empleador está en bancarrota', + item_not_exist = 'El objeto no existe', + too_heavy = 'No hay espacio en tu inventario', + location_not_exist = 'La ubicación no existe', + duplicate_license = 'Licencia de Rockstar duplicada', + no_valid_license = 'No tienes una licencia de Rockstar válida', + not_whitelisted = 'No tienes acceso a este servidor', + server_already_open = 'El servidor ya está abierto', + server_already_closed = 'El servidor ya está cerrado', + no_permission = 'No tienes permisos para esto..', + no_waypoint = 'No hay waypoint establecido.', + tp_error = 'Error mientras se teletransporta.', + connecting_database_error = '[QBCORE] - Un error en la base de datos sucedió mientras te conectabas al servidor (¿Está la SQL del servidor encendida?)', + connecting_database_timeout = '[QBCORE] - La conexión con la base de datos falló (¿Está la SQL del servidor encendida?)', + }, + success = { + server_opened = 'El servidor ha sido abierto', + server_closed = 'El servidor ha sido cerrado', + teleported_waypoint = 'Teletransportado a punto de encuentro.', + }, + info = { + received_paycheck = 'Has recibido tu salario de $%{value}', + job_info = 'Trabajo: %{value} | Puesto: %{value2} | Estado: %{value3}', + gang_info = 'Pandilla: %{value} | Puesto: %{value2}', + on_duty = '¡Estás en servicio!', + off_duty = '¡Estás fuera de servicio!', + checking_ban = 'Hola %s. Estamos revisando la lista de baneos.', + join_server = 'Bienvenid@ a {Server Name}, %s.', + checking_whitelisted = 'Hola %s. Estamos revisando si tienes acceso a nuestro servidor.', + exploit_banned = 'Has sido expulsado por hacer trampas. Consulta nuestro Discord para más información: %{discord}', + exploit_dropped = 'Has sido expulsado por hacer trampas', + }, + command = { + tp = { + help = 'TP al jugador o a las coordenadas (sólo para admin)', + params = { + x = { name = 'id/x', help = 'ID de jugador o posición X'}, + y = { name = 'y', help = 'Y posición'}, + z = { name = 'z', help = 'Z posición'}, + }, + }, + tpm = { help = 'TP al marcador (sólo para admin)' }, + togglepvp = { help = 'Activar el PVP en el servidor (sólo para admin)' }, + addpermission = { + help = 'Dar permisos al jugador (sólo modo Dios)', + params = { + id = { name = 'id', help = 'ID del jugador' }, + permission = { name = 'permission', help = 'Nivel de permiso' }, + }, + }, + removepermission = { + help = 'Eliminar los permisos de los jugadores (sólo modo Dios)', + params = { + id = { name = 'id', help = 'ID del jugador' }, + permission = { name = 'permission', help = 'Nivel de permiso' }, + }, + }, + openserver = { help = 'Abrir el servidor para todo el mundo (sólo para admin)' }, + closeserver = { + help = 'Cerrar el servidor para personas sin permisos (sólo para admin)', + params = { + reason = { name = 'reason', help = 'Motivo del cierre (opcional)' }, + }, + }, + car = { + help = 'Crear Vehículo (sólo para admin)', + params = { + model = { name = 'model', help = 'Nombre del modelo del vehículo' }, + }, + }, + dv = { help = 'Borrar vehículo (sólo para admin)' }, + dvall = { help = 'Borrar todos los Vehículos (sólo para admin)' }, + dvp = { help = 'Borrar todos las Peds (sólo para admin)' }, + dvo = { help = 'Borrar todos los Objectos (sólo para admin)' }, + givemoney = { + help = 'Dar dinero a un jugador (sólo para admin)', + params = { + id = { name = 'id', help = 'ID del jugador' }, + moneytype = { name = 'moneytype', help = 'Tipo de dinero (efectivo, banco, cripto)' }, + amount = { name = 'amount', help = 'Cantidad de dinero' }, + }, + }, + setmoney = { + help = 'Establecer la cantidad de dinero de los jugadores (sólo para admin)', + params = { + id = { name = 'id', help = 'ID del jugador' }, + moneytype = { name = 'moneytype', help = 'Tipo de dinero (efectivo, banco, cripto)' }, + amount = { name = 'amount', help = 'Cantidad de dinero' }, + }, + }, + job = { help = 'Compruebe su trabajo' }, + setjob = { + help = 'Establecer un trabajo de jugador (sólo para admin)', + params = { + id = { name = 'id', help = 'ID del jugador' }, + job = { name = 'job', help = 'Nombre del trabajo' }, + grade = { name = 'grade', help = 'Grado de trabajo' }, + }, + }, + gang = { help = 'Comprueba tu banda' }, + setgang = { + help = 'Establecer una banda de jugadores (sólo para admin)', + params = { + id = { name = 'id', help = 'ID del jugador' }, + gang = { name = 'gang', help = 'Nombre de la banda' }, + grade = { name = 'grade', help = 'Grado de banda' }, + }, + }, + ooc = { help = 'Mensaje del chat OOC' }, + me = { + help = 'Mostrar mensaje local', + params = { + message = { name = 'message', help = 'Mensaje a enviar' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'es' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/et.lua b/resources/[core]/qb-core/locale/et.lua new file mode 100644 index 0000000..ad3c02e --- /dev/null +++ b/resources/[core]/qb-core/locale/et.lua @@ -0,0 +1,127 @@ +local Translations = { + error = { + not_online = 'Mängija pole serveris', + wrong_format = 'Vale vorming', + missing_args = 'Kõiki argumente pole sisestatud (x, y, z)', + missing_args2 = 'Kõik argumendid tuleb täita!', + no_access = 'Sellele käsule pole juurdepääsu', + company_too_poor = 'Teie tööandja on võlgades', + item_not_exist = 'Asi ei eksisteeri', + too_heavy = 'Inventuur on liiga täis', + location_not_exist = 'Asukoht ei eksisteeri', + duplicate_license = 'Leiti Rockstari litsentsi duplikaat', + no_valid_license = 'Kehtivat Rockstari litsentsi ei leitud', + not_whitelisted = 'Te ei ole selle serveri jaoks Allowlisted', + server_already_open = 'Server on juba avatud', + server_already_closed = 'Server on juba suletud', + no_permission = 'Teil pole selleks õigusi..', + no_waypoint = 'Ühtegi punkti ei ole märgitud.', + tp_error = 'Teleportimise viga.', + }, + success = { + server_opened = 'Server on avatud', + server_closed = 'Server on suletud', + teleported_waypoint = 'Teleporteerusid punktile.', + }, + info = { + received_paycheck = 'Saite oma palga $%{value}', + job_info = 'Töö: %{value} | Auaste: %{value2} | Tööpostil: %{value3}', + gang_info = 'Gang: %{value} | Auaste: %{value2}', + on_duty = 'Sa oled tööle kirjutatud!', + off_duty = 'Sa kirjutasid ennast töölt vabaks!', + checking_ban = 'Tere %s. Me kontrollime, kas olete keelustatud.', + join_server = 'Tere tulemast %s serverisse {Server Name}.', + checking_whitelisted = 'Tere %s. Kontrollime teie Allowlisti staatust.', + exploit_banned = 'Olete saanud petmise eest mängukeelu. Lisateabe saamiseks vaadake meie Discordi: %{discord}', + exploit_dropped = 'Sind visati serverist välja petmise tõttu.', + }, + command = { + tp = { + help = 'TP mängijale või koordinaatidele (ainult administraator)', + params = { + x = { name = 'id/x', help = 'ID mängija või X positsioon'}, + y = { name = 'y', help = 'Y positsioon'}, + z = { name = 'z', help = 'Z positsioon'}, + }, + }, + tpm = { help = 'TP Markerile (ainult administraator)' }, + togglepvp = { help = 'PVP serveris sisse- ja väljalülitamine (ainult administraator)' }, + addpermission = { + help = 'Andke mängijale õigused (ainult jumal)', + params = { + id = { name = 'id', help = 'mängija ID' }, + permission = { name = 'permission', help = 'Permission level' }, + }, + }, + removepermission = { + help = 'Eemaldage mängija õigused (ainult jumal)', + params = { + id = { name = 'id', help = 'mängija ID' }, + permission = { name = 'õigused', help = 'Õiguse tase' }, + }, + }, + openserver = { help = 'Ava server kõigile (ainult administraator)' }, + closeserver = { + help = 'Sulgege server ilma õigusteta inimeste jaoks (ainult administraator)', + params = { + reason = { name = 'põhjus', help = 'Sulgemise põhjus (valikuline)' }, + }, + }, + car = { + help = 'Sõiduki loomine (ainult administraator)', + params = { + model = { name = 'mudel', help = 'Sõiduki mudeli nimi' }, + }, + }, + dv = { help = 'Sõiduki kustutamine (ainult administraator)' }, + givemoney = { + help = 'Mängija rahasumma määramine (ainult administraator)', + params = { + id = { name = 'id', help = 'Mängija ID' }, + moneytype = { name = 'rahatüüp', help = 'Raha liik (sularaha, pank, krüpto)' }, + amount = { name = 'kogus', help = 'Rahasumma' }, + }, + }, + setmoney = { + help = 'Mängija rahasumma määramine (ainult administraator)', + params = { + id = { name = 'id', help = 'Mängija ID' }, + moneytype = { name = 'rahatüüp', help = 'Raha liik (sularaha, pank, krüpto)' }, + amount = { name = 'kogus', help = 'Rahasumma' }, + }, + }, + job = { help = 'Kontrollige oma töödkohta' }, + setjob = { + help = 'Mängijale töökoha määramine (ainult administraator)', + params = { + id = { name = 'id', help = 'Mängija ID' }, + job = { name = 'töö', help = 'Töökoha nimi' }, + grade = { name = 'tase', help = 'Tüükoha tase' }, + }, + }, + gang = { help = 'Kontrollige oma grupeeringut' }, + setgang = { + help = 'Määra mängija grupeeringu (ainult administraator)', + params = { + id = { name = 'id', help = 'Player ID' }, + gang = { name = 'grupeering', help = 'Grupeeringu nimi' }, + grade = { name = 'tase', help = 'Grupeeringu tase' }, + }, + }, + ooc = { help = 'OOC vestlussõnum' }, + me = { + help = 'Kuva kohalikud sõnumid', + params = { + message = { name = 'sõnum', help = 'Sõnum saatmiseks' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'et' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/fa.lua b/resources/[core]/qb-core/locale/fa.lua new file mode 100644 index 0000000..1367dac --- /dev/null +++ b/resources/[core]/qb-core/locale/fa.lua @@ -0,0 +1,28 @@ +local Translations = { + error = { + not_online = 'Player online nist !', + wrong_format = 'Vorodi sahih nist !', + missing_args = 'Vorodi naghes ast (x, y, z)', + missing_args2 = 'Tamam vorodi hara vared konid !', + no_access = 'Shoma dastresi nadarid !', + company_too_poor = 'Sherkat shoma, pul kafi baraye hoghogh dadan nadarad !', + item_not_exist = 'In item vojod nadarad', + too_heavy = 'Inventory kheyli sangin ast !' + }, + success = {}, + info = { + received_paycheck = 'Hoghogh shoma variz shod : $%{value}', + job_info = 'Shoghl: %{value} | Daraje: %{value2} | Dar hal kar: %{value3}', + gang_info = 'Gang: %{value} | Daraje: %{value2}', + on_duty = 'Shoma dar hal kar hastid (on-duty)!', + off_duty = 'Shoma az kar kharej shodid (off-duty)!' + } +} + +if GetConvar('qb_locale', 'en') == 'fa' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/fi.lua b/resources/[core]/qb-core/locale/fi.lua new file mode 100644 index 0000000..c474f64 --- /dev/null +++ b/resources/[core]/qb-core/locale/fi.lua @@ -0,0 +1,126 @@ +local Translations = { + error = { + not_online = 'Pelaaja ei ole paikalla', + wrong_format = 'Väärä formaatti', + missing_args = 'Kaikkia argumentteja ei ole syötetty (x, y, z)', + missing_args2 = 'Kaikki argumentit on täytettävä!', + no_access = 'Ei pääsyä tähän komentoon', + company_too_poor = 'Työnantajasi on köyhä', + item_not_exist = 'Kohdetta ei ole olemassa', + too_heavy = 'Taskusi ovat täynnä', + location_not_exist = 'Sijaintia ei ole olemassa', + duplicate_license = 'Rockstar-lisenssin kaksoiskappale löydetty', + no_valid_license = 'Voimassa olevaa Rockstar-lisenssiä ei löytynyt', + not_whitelisted = 'Sinua ei ole lisätty tämän palvelimen allowlistille', + server_already_open = 'Serveri on jo auki', + server_already_closed = 'Serveri on jo suljettu', + no_permission = 'Sinulla ei ole oikeuksia tämmöseen..', + no_waypoint = 'Et ole asettanut waypointtia.', + tp_error = 'Virhe teleportatessa.', + connecting_database_error = 'Tietokantavirhe muodostettaessa yhteyttä palvelimeen. (Onko SQL-palvelin päällä?)', + connecting_database_timeout = 'Yhteys tietokantaan aikakatkaistiin. (Onko SQL-palvelin päällä?)', + }, + success = { + server_opened = 'Palvelin on avattu', + server_closed = 'Palvelin on suljettu', + teleported_waypoint = 'Teleporttaa Waypointille', + }, + info = { + received_paycheck = 'Olet saanut palkkasi $%{value}', + job_info = 'Työ: %{value} | Arvo: %{value2} | Vuorossa: %{value3}', + gang_info = 'Jengi: %{value} | Arvo: %{value2}', + on_duty = 'Olet nyt vuorossa', + off_duty = 'Olet nyt poisvuorosta!', + checking_ban = 'Tervehdys %s. Tarkistetaan oletko saanut porttikieltoa.', + join_server = 'Tervetuloa %s - {Server Name}.', + checking_whitelisted = 'Terve %s. Tarkistamme etusi.', + exploit_banned = 'Sinut on bännatty cheattaamisesta. Katso lisätietoja Discordistamme: %{discord}', + exploit_dropped = 'Sinua on potkittu hyväksikäytön vuoksi', + }, + command = { + tp = { + help = 'TP pelaajalle tai koordinaateille (Vain Admineille)', + params = { + x = { name = 'id/x', help = 'Pelaajan ID tai X-paikka'}, + y = { name = 'y', help = 'Y position'}, + z = { name = 'z', help = 'Z position'}, + }, + }, + tpm = { help = 'TP Markerille (Vain Admineille)' }, + togglepvp = { help = 'Vaihda PVP palvelimelle (Vain Admineille)' }, + addpermission = { + help = 'Anna pelaajalle admin oikeudet (God Only)', + params = { + id = { name = 'id', help = 'Pelaajan ID' }, + permission = { name = 'permission', help = 'Permission level' }, + }, + }, + removepermission = { + help = 'Poista pelaajatlta admin oikeudet (God Only)', + params = { + id = { name = 'id', help = 'Pelaajan ID' }, + permission = { name = 'permission', help = 'Permission level' }, + }, + }, + openserver = { help = 'Avaa palvelin kaikille (Vain Admineille)' }, + closeserver = { + help = 'Sulje palvelin ihmisiltä, ​​joilla ei ole oikeuksia (Vain Admineille)', + params = { + reason = { name = 'reason', help = 'Sulkemisen syy (valinnainen)' }, + }, + }, + car = { + help = 'Spawnaa ajoneuvo (Vain Admineille)', + params = { + model = { name = 'model', help = 'Ajoneuvon nimi' }, + }, + }, + dv = { help = 'Poista ajoneuvo (Vain Admineille)' }, + givemoney = { + help = 'Anna Pelaajalle rahaa (Vain Admineille)', + params = { + id = { name = 'id', help = 'Pelaajan ID' }, + moneytype = { name = 'moneytype', help = 'Rahan tyyppi (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Rahan määrä' }, + }, + }, + setmoney = { + help = 'Aseta pelaajien rahasumma (Vain Admineille)', + params = { + id = { name = 'id', help = 'Pelaajan ID' }, + moneytype = { name = 'moneytype', help = 'Rahan tyyppi (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Rahan määrä' }, + }, + }, + job = { help = 'katso työsi' }, + setjob = { + help = 'Aseta pelaajalle työ (Vain Admineille)', + params = { + id = { name = 'id', help = 'Pelaajan ID' }, + job = { name = 'job', help = 'Työn nimi' }, + grade = { name = 'grade', help = 'Arvo' }, + }, + }, + gang = { help = 'Katso jengisi' }, + setgang = { + help = 'Aseta pelaajalle jengi (Vain Admineille)', + params = { + id = { name = 'id', help = 'Pelaajan ID' }, + gang = { name = 'gang', help = 'Jengin Nimi' }, + grade = { name = 'grade', help = 'Arvo' }, + }, + }, + ooc = { help = 'OOC Viesti lähipelaajille' }, + me = { + help = 'Näytä paikallinen viesti', + params = { + message = { name = 'message', help = 'Mitä haluat kertoa?' } + }, + }, + }, +} + +Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true +}) diff --git a/resources/[core]/qb-core/locale/fr.lua b/resources/[core]/qb-core/locale/fr.lua new file mode 100644 index 0000000..4a3fbd2 --- /dev/null +++ b/resources/[core]/qb-core/locale/fr.lua @@ -0,0 +1,132 @@ +local Translations = { + error = { + not_online = 'Le joueur n\'est pas connecté', + wrong_format = 'Format incorrect', + missing_args = 'Arguments manquants (x, y, z)', + missing_args2 = 'Tous les arguments doivent être remplis!', + no_access = 'Vous n\'avez pas accès à cette commande', + company_too_poor = 'Votre entreprise n\'a pas suffisamment d\'argent', + item_not_exist = 'L\'objet n\'existe pas', + too_heavy = 'L\'inventaire est plein', + location_not_exist = 'Destination inexistante', + duplicate_license = 'License Rockstar Dupliquée trouvée', + no_valid_license = 'Aucune License Rockstar trouvée', + not_whitelisted = 'Vous n\'êtes pas Whitelisté sur ce serveur', + server_already_open = 'Le serveur est déjà ouvert', + server_already_closed = 'Le serveur est déjà fermé', + no_permission = 'Vous n\'avez pas les permissions pour cela', + no_waypoint = 'Pas de marqueur défini.', + tp_error = 'Erreur lors de la téléportation.', + }, + success = { + server_opened = 'Le serveur a été ouvert', + server_closed = 'Le serveur a été fermé', + teleported_waypoint = 'Téléporté au marqueur', + }, + info = { + received_paycheck = 'Vous avez reçu votre salaire de : $%{value}', + job_info = 'Emplois: %{value} | Grade: %{value2} | Service: %{value3}', + gang_info = 'Gang: %{value} | Grade: %{value2}', + org_info = 'Org: %{value} | Grade: %{value2}', + on_duty = 'Vous êtes désormais en service!', + off_duty = 'Vous n\'êtes plus en service!', + checking_ban = 'Bonjour %s. Nous verifions si vous êtes banni.', + validatin_license = 'Bonjour %s. Nous validons votre License Rockstar.', + join_server = 'Bienvenue %s sur {Server Name}.', + checking_whitelisted = 'Bonjour %s. Nous vérifions si vous êtes Whitelist.', + exploit_banned = 'Vous avez été ban parceque vous avez triché. Allez sur notre discord pour plus d\'information: %{discord}', + exploit_dropped = 'Vous avez été kick pour exploitation.', + }, + command = { + tp = { + help = 'TP vers un joueur ou des coordonnées (Admin Only)', + params = { + x = { name ='id/x', help = 'ID du joueur ou position X',}, + y = { name = 'y', help = 'Position Y'}, + z = { name = 'z', help = 'Position Z'}, + }, + }, + tpm = { help = 'TP au marqueur (Admin Only)'}, + togglepvp = { help = 'Activer/Désactiver le PVP sur le serveur (Admin Only)'}, + addpermission = { + help = 'Donner des permissions à un joueur (God Only)', + params = { + id = { name = 'id', help = 'ID du joueur',}, + permission = { name = 'permission', help = 'Niveau de permission',}, + }, + }, + removepermission = { + help = 'Retirer les permissions d\'un joueur (God Only)', + params = { + id = { name = 'id', help = 'ID du joueur',}, + permission = { name = 'permission', help = 'Niveau de permission',}, + }, + }, + openserver = { help = 'Ouvrir le serveur à tout le monde (Admin Only)'}, + closeserver = { + help = 'Fermer le serveur au joueurs sans permissions (Admin Only)', + params = { + reason = { name = 'reason', help = 'Raison de fermeture du serveur (Optionnel)',}, + }, + }, + car = { + help = 'Faire apparaître un véhicule (Admin Only)', + params = { + model = { name = 'model', help = 'Modèle du véhicule',}, + }, + }, + dv = { help = 'Supprimer un véhicule (Admin Only)'}, + dvall = { help = 'Supprimer tous les véhicules (Admin Only)' }, + dvp = { help = 'Supprimer tous les Peds (Admin Only)' }, + dvo = { help = 'Supprimer tous les Objets (Admin Only)' }, + givemoney = { + help = 'Donner de l\'argent à un joueur (Admin Only)', + params = { + id = { name = 'id', help = 'ID du joueur',}, + moneytype = { name = 'moneytype', help = 'Type d\'argent (cash, bank, crypto)',}, + amount = { name = 'amount', help = 'Montant' }, + }, + }, + setmoney = { + help = 'Définir le solde d\'un joueur (Admin Only)', + params = { + id = { name = 'id', help = 'ID du joueur',}, + moneytype = { name = 'moneytype', help = 'Type d\'argent (cash, bank, crypto)',}, + amount = { name = 'amount', help = 'Montant' }, + }, + }, + job = { help = 'Voir son travail'}, + setjob = { + help = 'Définir le travail d\'un joueur (Admin Only)', + params = { + id = { name = 'id', help = 'ID du joueur',}, + job = { name = 'job', help = 'Nom du Travail',}, + grade = { name = 'grade', help = 'Grade'}, + }, + }, + gang = { help = 'Voir son gang'}, + setgang = { + help = 'Définir le gang d\'un joueur (Admin Only)', + params = { + id = { name = 'id', help = 'ID du joueur',}, + gang = { name = 'gang', help = 'Nom du Gang',}, + grade = { name = 'grade', help = 'Grade'}, + }, + }, + ooc = { help = 'Envoyer un message HRP'}, + me = { + help = 'Envoyer un message local', + params = { + message = { name = 'message', help = 'Message'} + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'fr' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/ge.lua b/resources/[core]/qb-core/locale/ge.lua new file mode 100644 index 0000000..e105039 --- /dev/null +++ b/resources/[core]/qb-core/locale/ge.lua @@ -0,0 +1,28 @@ +local Translations = { + error = { + not_online = 'მოთამაშე ონლაინში არ არის', + wrong_format = 'არასწორი ფორმატი', + missing_args = 'ყველა არგუმენტი არ არის შეყვანილი (x, y, z)', + missing_args2 = 'ყველა არგუმენტი უნდა იყოს შევსებული!', + no_access = 'ამ ბრძანებაზე წვდომა არ არის', + company_too_poor = 'თქვენი დამსაქმებელი ღარიბია', + item_exist = 'ნივთი არ არსებობს', + too_heavy = 'ზედმეტად სავსეა ინვენტარი' + }, + success = {}, + info = { + received_paycheck = 'თქვენ მიიღეთ თქვენი ხელფასი $%{value}', + job_info = 'სამუშაო: %{value} | შეფასება: %{value2} | მოვალეობა: %{value3}', + gang_info = 'ჯგუფი: %{value} | შეფასება: %{value2}', + on_duty = 'ახლა მორიგე ხარ!', + off_duty = 'ახლა სამსახურიდან გასული ხარ!' + } +} + +if GetConvar('qb_locale', 'en') == 'ge' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/he.lua b/resources/[core]/qb-core/locale/he.lua new file mode 100644 index 0000000..fb84e7f --- /dev/null +++ b/resources/[core]/qb-core/locale/he.lua @@ -0,0 +1,128 @@ +local Translations = { + error = { + not_online = 'שחקן לא מחובר', + wrong_format = 'פורמט שגוי', + missing_args = '(x, y, z) לא כל פרמטר הוזן', + missing_args2 = '!יש להזין את כל הפרמטרים', + no_access = 'אין גישה לפקודה זו', + company_too_poor = 'המעסיק שלך עני מידי', + item_not_exist = 'פריט לא קיים', + too_heavy = 'אינבנטורי מלא', + location_not_exist = 'מקום לא קיים', + duplicate_license = 'Rockstar נמצא שכפול רישיון', + no_valid_license = 'תקף Rockstar לא נמצא רישיון', + not_whitelisted = 'את/ה לא ברשימת המותרים בשרת הזה', + server_already_open = 'השרת כבר פתוח', + server_already_closed = 'השרת כבר סגור', + no_permission = 'אין לך גישה לזה', + no_waypoint = 'נקודת המיקום לא הוגדרה', + tp_error = 'התרחשה שגיאה במהלך טלפורטציה', + }, + success = { + server_opened = 'השרת נפתח', + server_closed = 'השרת נסגר', + teleported_waypoint = 'נשלחת בטלפורטציה לנקודת המיקום', + }, + info = { + received_paycheck = '$%{value} קיבלת תלוש שכר על סך', + job_info = '%{value3} :בתפקיד | %{value2} :דרגה | %{value} :עבודה', + gang_info = '%{value2} :דרגה | %{value} :גאנג', + on_duty = '!עלית לתפקיד', + off_duty = '!ירדת מהתפקיד', + checking_ban = '.אנחנו בודקים אם את/ה חסום/ה בשרת הזה .%s שלום', + join_server = '.{Server Name}-ל %s ברוך/ה הבא/ה', + checking_whitelisted = '.אנחנו בודקים אם את/ה ברשימת המותרים .%s שלום', + exploit_banned = '%{discord} :נחסמת מהשרת על רמאות. למידע נוסף, הצטרף/י לשרת הדיסקורד שלנו', + exploit_dropped = 'הועפת מהשרת על רמאות', + }, + command = { + tp = { + help = '(אדמינים בלבד) טלפורט לשחקן או לקואורדינטות', + params = { + x = { name = 'id/x', help = 'X של שחקן או קואורדינטת ID' }, + y = { name = 'y', help = 'Y קואורדינטת' }, + z = { name = 'z', help = 'Z קואורדינטת' }, + }, + }, + tpm = { help = 'טלפורט לנקודת מיקום (אדמינים בלבד)' }, + togglepvp = { help = '(אדמינים בלבד) בשרת PVP להפעיל/לכבות' }, + addpermission = { + help = '(גוד בלבד) להביא גישה לשחקן', + params = { + id = { name = 'id', help = 'של שחקן ID' }, + permission = { name = 'גישה', help = 'רמת הגישה' }, + }, + }, + removepermission = { + help = '(גוד בלבד) להסיר גישה לשחקן', + params = { + id = { name = 'id', help = 'של שחקן ID' }, + permission = { name = 'גישה', help = 'רמת הגישה' }, + }, + }, + openserver = { help = 'פתח את השרת לכולם (אדמינים בלבד)' }, + closeserver = { + help = 'סגור את השרת לשחקנים ללא גישות (אדמינים בלבד)', + params = { + reason = { name = 'סיבה', help = 'הסיבה לסגירה (אופציונלי)' }, + }, + }, + car = { + help = 'תיצור רכב (אדמינים בלבד)', + params = { + model = { name = 'דגם', help = 'שם הדגם של הרכב' }, + }, + }, + dv = { help = 'מחק רכב (אדמינים בלבד)' }, + givemoney = { + help = 'תן כסף לשחקן (אדמינים בלבד)', + params = { + id = { name = 'id', help = 'של שחקן ID' }, + moneytype = { name = 'סוג כסף', help = '(cash, bank, crypto) סוג הכסף' }, + amount = { name = 'כמות', help = 'כמות הכסף' }, + }, + }, + setmoney = { + help = 'קבע סכום כסף לשחקן (אדמינים בלבד)', + params = { + id = { name = 'id', help = 'של שחקן ID' }, + moneytype = { name = 'סוג כסף', help = '(cash, bank, crypto) סוג הכסף' }, + amount = { name = 'כמות', help = 'כמות הכסף' }, + }, + }, + job = { help = 'בדוק את העבודה שלך' }, + setjob = { + help = 'קבע עבודה לשחקן (אדמינים בלבד)', + params = { + id = { name = 'id', help = 'של שחקן ID' }, + job = { name = 'עבודה', help = 'שם העבודה' }, + grade = { name = 'דרגה', help = 'דרגת העבודה' }, + }, + }, + gang = { help = 'בדוק את הגאנג שלך' }, + setgang = { + help = 'קבע גאנג לשחקן (אדמינים בלבד)', + params = { + id = { name = 'id', help = 'של שחקן ID' }, + gang = { name = 'גאנג', help = 'שם הגאנג' }, + grade = { name = 'דרגה', help = 'דרגת הגאנג' }, + }, + }, + ooc = { help = 'OOC הודעת' }, + me = { + help = 'הצג הודעה מקומית', + params = { + message = { name = 'הודעה', help = 'ההודעה שתישלח' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'he' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end + diff --git a/resources/[core]/qb-core/locale/hu.lua b/resources/[core]/qb-core/locale/hu.lua new file mode 100644 index 0000000..a0cd8b9 --- /dev/null +++ b/resources/[core]/qb-core/locale/hu.lua @@ -0,0 +1,28 @@ +local Translations = { + error = { + not_online = 'A játékos nem elérhető', + wrong_format = 'Helytelen formátum', + missing_args = 'Nem minden érték lett megadva (x, y, z)', + missing_args2 = 'Az összes értéket meg kell adnod!', + no_access = 'Nem használhatod ezt a parancsot', + company_too_poor = 'A munkáltatód nem tudott kifizetni', + item_not_exist = 'Ez a tárgy nem létezik', + too_heavy = 'A leltárad megtelt' + }, + success = {}, + info = { + received_paycheck = 'Megérkezett a fizetésed: %{value}$', + job_info = 'Munka: %{value} | Szint: %{value2} | Szolgálatban: %{value3}', + gang_info = 'Banda: %{value} | Szint: %{value2}', + on_duty = 'Mostantól szolgálatban vagy!', + off_duty = 'Mostantól nem vagy szolgálatban!' + } +} + +if GetConvar('qb_locale', 'en') == 'hu' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/id.lua b/resources/[core]/qb-core/locale/id.lua new file mode 100644 index 0000000..5f70cc8 --- /dev/null +++ b/resources/[core]/qb-core/locale/id.lua @@ -0,0 +1,129 @@ +local Translations = { + error = { + not_online = 'Pemain tidak online', + wrong_format = 'Format Salah', + missing_args = 'Semua argumen belum dimasukkan (x, y, z)', + missing_args2 = 'Semua argumen harus diisi!', + no_access = 'Kamu tidak memiliki akses ke perintah ini', + company_too_poor = 'Perusahaan kamu tidak mampu membayar kamu', + item_not_exist = 'Barang tidak tersedia', + too_heavy = 'Inventory terlalu penuh', + location_not_exist = 'Lokasi tidak tersedia', + duplicate_license = 'Ditemukan Lisensi Rockstar Duplikat', + no_valid_license = 'Tidak Ditemukan Lisensi Rockstar yang Valid', + not_whitelisted = 'Kamu tidak masuk daftar putih untuk server ini', + server_already_open = 'Server sudah terbuka', + server_already_closed = 'Server sudah ditutup', + no_permission = 'Kamu tidak memiliki izin untuk ini..', + no_waypoint = 'Tidak ada Titik Arah yang Ditetapkan.', + tp_error = 'Kesalahan saat teleportasi.', + connecting_database_error = 'Terjadi kesalahan database saat menghubungkan ke server. (Apakah server SQL aktif?)', + connecting_database_timeout = 'Waktu koneksi ke database habis. (Apakah server SQL aktif?)', + }, + success = { + server_opened = 'Server telah dibuka', + server_closed = 'Server telah ditutup', + teleported_waypoint = 'Diteleportasi ke Titik Arah.', + }, + info = { + received_paycheck = 'Kamu telah menerima gaji $%{value}', + job_info = 'Pekerjaan: %{value} | Pangkat: %{value2} | Tugas: %{value3}', + gang_info = 'Geng: %{value} | Pangkat: %{value2}', + on_duty = 'Kamu sekarang sedang bertugas!', + off_duty = 'Kamu sekarang sedang tidak bertugas!', + checking_ban = 'Halo %s. Kami sedang memeriksa apakah kamu dilarang.', + join_server = 'Selamat datang %s di {Server Name}.', + checking_whitelisted = 'Halo %s. Kami sedang memeriksa apakah kamu masuk daftar putih', + exploit_banned = 'Kamu telah dilarang karena curang. Lihat Discord kami untuk informasi lebih lanjut: %{discord}', + exploit_dropped = 'Kamu telah dikeluarkan dari server karena eksploitasi', + }, + command = { + tp = { + help = 'TP Ke Pemain atau Koord (Khusus Admin)', + params = { + x = { name = 'id/x', help = 'ID pemain atau posisi X'}, + y = { name = 'y', help = 'posisi Y'}, + z = { name = 'z', help = 'posisi Z'}, + }, + }, + tpm = { help = 'TP Ke Penanda (Khusus Admin)' }, + togglepvp = { help = 'Tombol PVP di server (Khusus Admin)' }, + addpermission = { + help = 'Berikan Izin Pemain (Khusus Pemilik)', + params = { + id = { name = 'id', help = 'ID pemain' }, + permission = { name = 'permission', help = 'Tingkat izin' }, + }, + }, + removepermission = { + help = 'Hapus Izin Pemain (Khusus Pemilik)', + params = { + id = { name = 'id', help = 'ID pemain' }, + permission = { name = 'permission', help = 'Tingkat izin' }, + }, + }, + openserver = { help = 'Buka server untuk semua orang (Khusus Admin)' }, + closeserver = { + help = 'Tutup server untuk orang tanpa izin (Khusus Admin)', + params = { + reason = { name = 'reason', help = 'Alasan penutupan (opsional)' }, + }, + }, + car = { + help = 'Memunculkan Kendaraan (Khusus Admin)', + params = { + model = { name = 'model', help = 'Nama model kendaraan' }, + }, + }, + dv = { help = 'Hapus Kendaraan (Khusus Admin)' }, + givemoney = { + help = 'Beri Pemain Uang (Khusus Admin)', + params = { + id = { name = 'id', help = 'ID pemain' }, + moneytype = { name = 'moneytype', help = 'Jenis uang (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Jumlah uang' }, + }, + }, + setmoney = { + help = 'Tetapkan Jumlah Uang Pemain (Khusus Admin)', + params = { + id = { name = 'id', help = 'ID pemain' }, + moneytype = { name = 'moneytype', help = 'Jenis uang (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Jumlah uang' }, + }, + }, + job = { help = 'Periksa Pekerjaan Kamu' }, + setjob = { + help = 'Tetapkan Pekerjaan Pemain (Khusus Admin)', + params = { + id = { name = 'id', help = 'ID pemain' }, + job = { name = 'job', help = 'Nama pekerjaan' }, + grade = { name = 'grade', help = 'Pangkat pekerjaan' }, + }, + }, + gang = { help = 'Periksa Geng Kamu' }, + setgang = { + help = 'Tetapkan Geng Pemain (Khusus Admin)', + params = { + id = { name = 'id', help = 'ID pemain' }, + gang = { name = 'gang', help = 'Nama geng' }, + grade = { name = 'grade', help = 'Pangkat geng' }, + }, + }, + ooc = { help = 'Pesan Obrolan OOC' }, + me = { + help = 'Tampilkan pesan lokal', + params = { + message = { name = 'message', help = 'Pesan yang akan dikirim' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'id' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/is.lua b/resources/[core]/qb-core/locale/is.lua new file mode 100644 index 0000000..8384930 --- /dev/null +++ b/resources/[core]/qb-core/locale/is.lua @@ -0,0 +1,127 @@ +local Translations = { + error = { + not_online = 'ekki á netinu', + wrong_format = 'rangt snið', + missing_args = 'Ekki er búið að færa inn öll rök (x, y, z)', + missing_args2 = 'Öll rök verður að fylla út!', + no_access = 'Enginn aðgangur að þessari skipun', + company_too_poor = 'Vinnuveitandi þinn er blankur', + item_not_exist = 'Varan er ekki til', + too_heavy = 'Birgðir of fullar', + location_not_exist = 'Staðsetning er ekki til', + duplicate_license = 'Afrit Rockstar leyfi fannst', + no_valid_license = 'Ekkert gilt Rockstar leyfi fannst', + not_whitelisted = 'Þú ert ekki á hvítlista fyrir þennan netþjón', + server_already_open = 'Miðlarinn er þegar opinn', + server_already_closed = 'Miðlarinn er þegar lokaður', + no_permission = 'Þú hefur ekki heimildir fyrir þessu..', + no_waypoint = 'Engin leiðarpunktur settur.', + tp_error = 'Villa við fjarflutning.', + }, + success = { + server_opened = 'Miðlarinn hefur verið opnaður', + server_closed = 'Miðlarinn hefur verið lokaður', + teleported_waypoint = 'Teleported til Waypoint.', + }, + info = { + received_paycheck = 'Þú fékkst launaseðilinn þinn af $%{value}', + job_info = 'Starf: %{value} | Einkunn: %{value2} | Skylda: %{value3}', + gang_info = 'Gang: %{value} | Einkunn: %{value2}', + on_duty = 'Þú ert nú á vakt!', + off_duty = 'Þú ert nú á vakt!', + checking_ban = 'Halló %s. Við erum að athuga hvort þú sért bannaður.', + join_server = 'Velkominn %s til {Nafn netþjóns}.', + checking_whitelisted = 'Halló %s. Við erum að athuga vasapeningana þína.', + exploit_banned = 'Þú hefur verið bannaður fyrir svindl. Athugaðu Discord okkar til að fá frekari upplýsingar: %{discord}', + exploit_dropped = 'Þér hefur verið sparkað fyrir arðrán', + }, + command = { + tp = { + help = 'TP Til leikmanns eða coords (Aðeins stjórnandi)', + params = { + x = { name = 'id/x', help = 'ID af leikmanni eða X staða'}, + y = { name = 'y', help = 'Y position'}, + z = { name = 'z', help = 'Z position'}, + }, + }, + tpm = { help = 'TP To Til Marker (Aðeins stjórnandi)' }, + togglepvp = { help = 'Toggle PVP on the server (Aðeins stjórnandi)' }, + addpermission = { + help = 'Give Player Permissions (God Only)', + params = { + id = { name = 'id', help = 'ID of player' }, + permission = { name = 'permission', help = 'Permission level' }, + }, + }, + removepermission = { + help = 'Remove Player Permissions (God Only)', + params = { + id = { name = 'id', help = 'ID of player' }, + permission = { name = 'permission', help = 'Permission level' }, + }, + }, + openserver = { help = 'Open the server for everyone (Aðeins stjórnandi)' }, + closeserver = { + help = 'Close the server for people without permissions (Aðeins stjórnandi)', + params = { + reason = { name = 'reason', help = 'Reason for closing (optional)' }, + }, + }, + car = { + help = 'Spawn Vehicle (Aðeins stjórnandi)', + params = { + model = { name = 'model', help = 'Model name of the vehicle' }, + }, + }, + dv = { help = 'Delete Vehicle (Aðeins stjórnandi)' }, + givemoney = { + help = 'Gefðu spilara peninga (Aðeins stjórnandi)', + params = { + id = { name = 'id', help = 'Leikmaður ID' }, + moneytype = { name = 'moneytype', help = 'Tegund peninga (reiðufé, banki, dulritun)' }, + amount = { name = 'amount', help = 'Magn peninga' }, + }, + }, + setmoney = { + help = 'Stilltu peningaupphæð leikmanna (Aðeins stjórnandi)', + params = { + id = { name = 'id', help = 'Leikmaður ID' }, + moneytype = { name = 'moneytype', help = 'Tegund peninga (reiðufé, banki, dulritun)' }, + amount = { name = 'amount', help = 'Magn peninga' }, + }, + }, + job = { help = 'Athugaðu starf þitt' }, + setjob = { + help = 'Settu leikmannastarf (Aðeins stjórnandi)', + params = { + id = { name = 'id', help = 'Leikmaður ID' }, + job = { name = 'job', help = 'Nafn starfs' }, + grade = { name = 'grade', help = 'Starfseinkunn' }, + }, + }, + gang = { help = 'Athugaðu þinn Gang' }, + setgang = { + help = 'Stilltu leikmann Gang (Aðeins stjórnandi)', + params = { + id = { name = 'id', help = 'Leikmaður ID' }, + gang = { name = 'gang', help = ' klíku nafn' }, + grade = { name = 'grade', help = ' klíkustig' }, + }, + }, + ooc = { help = 'OOC spjallskilaboð' }, + me = { + help = 'Sýna staðbundin skilaboð', + params = { + message = { name = 'message', help = 'Skilaboð til að senda' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'is' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/it.lua b/resources/[core]/qb-core/locale/it.lua new file mode 100644 index 0000000..ea81719 --- /dev/null +++ b/resources/[core]/qb-core/locale/it.lua @@ -0,0 +1,132 @@ +local Translations = { +error = { + not_online = 'Giocatore Offline', + wrong_format = 'Formato sbagliato', + missing_args = 'Devi inserire ancora qualcosa(x, y, z)', + missing_args2 = 'Tutti gli argomenti devono essere compilati!', + no_access = 'Non hai accesso a questo comando', + company_too_poor = 'La tua azienda è povera', + item_not_exist = 'Oggetto inesistente', + too_heavy = 'Inventario pieno', + location_not_exist = 'Destinazione Inesistente', + duplicate_license = 'Licenza Rockstar Duplicata', + no_valid_license = 'Licenza Rockstar non Valida', + not_whitelisted = 'Non sei nella Allowlist', + server_already_open = 'Il server è già aperto', + server_already_closed = 'Il server è già chiuso', + no_permission = 'Non hai i permessi necessari..', + no_waypoint = 'Nessun marker impostato.', + tp_error = 'Errore durante il TP.' + }, + success = { + server_opened = 'Il server ora è aperto', + server_closed = 'Il server ora è chiuso', + teleported_waypoint = 'TP al marker.' + }, + info = { + received_paycheck = 'Hai ricevuto la paga di $%{value}', + job_info = 'Lavoro: %{value} | Grado: %{value2} | Stato: %{value3}', + gang_info = 'Gang: %{value} | Grado: %{value2}', + on_duty = 'Sei in servizio!', + off_duty = 'Sei fuori servizio!', + checking_ban = 'Ciao %s. Sto controllando che tu non sia bannato!', + join_server = 'Benvenuto %s su {Server Name}.', + checking_whitelisted = 'Ciao %s. Sto controllando la allowlist.', + exploit_banned = 'Sei stato bannato per Cheating o Exploit. Apri un ticket per maggiori informazioni: %{discord}', + exploit_dropped = 'Sei stato espulso per Exploit' + }, + command = { + tp = { + help = 'TP su ID Gioctore o Coordinate (Solo Admin)', + params = { + x = {name = 'id/x', help = 'ID Giocatore o Posizione X'}, + y = {name = 'y', help = 'Posizione Y'}, + z = {name = 'z', help = 'Posizione Z'} + } + }, + tpm = {help = 'TP al Marker (Solo Admin)'}, + togglepvp = {help = 'Togli PVP al server (Solo Admin)'}, + addpermission = { + help = 'Dai i permessi ad un Giocatore (Solo God)', + params = { + id = {name = 'id', help = 'ID Giocatore'}, + permission = {name = 'permessi', help = 'Livello Permessi'} + } + }, + removepermission = { + help = 'Rimuovi i permessi ad un Giocatore (Solo God)', + params = { + id = {name = 'id', help = 'ID Giocatore'}, + permission = {name = 'permessi', help = 'Livello Permessi'} + } + }, + openserver = {help = 'Apri il server a tutti (Solo Admin)'}, + closeserver = { + help = 'Chidi il server e rendilo accessibile solo a chi ha i permessi (Solo Admin)', + params = { + reason = { + name = 'motivo', + help = 'Motivo di chiusura del server (opzionale)' + } + } + }, + car = { + help = 'Spawna Veicolo (Solo Admin)', + params = {model = {name = 'modello', help = 'Nome del veicolo'}} + }, + dv = {help = 'Elimina Veicolo (Solo Admin)'}, + givemoney = { + help = 'Dai soldi ad un Giocatore (Solo Admin)', + params = { + id = {name = 'id', help = 'ID Giocatore'}, + moneytype = { + name = 'tipo', + help = 'Tipo di soldi (cash, bank, crypto)' + }, + amount = {name = 'importo', help = 'Importo'} + } + }, + setmoney = { + help = 'Imposta i soldi ad un Giocatore (Solo Admin)', + params = { + id = {name = 'id', help = 'ID Giocatore'}, + moneytype = { + name = 'tipo', + help = 'Tipo di soldi (cash, bank, crypto)' + }, + amount = {name = 'importo', help = 'Importo'} + } + }, + job = {help = 'Controlla il tuo Lavoro'}, + setjob = { + help = 'Imposta Lavoro ad un Giocatore (Solo Admin)', + params = { + id = {name = 'id', help = 'ID Giocatore'}, + job = {name = 'lavoro', help = 'Nome Lavoro'}, + grade = {name = 'grado', help = 'Grado'} + } + }, + gang = {help = 'Controlla la tua Fazione'}, + setgang = { + help = 'Imposta Fazione ad un Giocatore (Solo Admin)', + params = { + id = {name = 'id', help = 'ID Giocatore'}, + gang = {name = 'fazione', help = 'Nome Fazione'}, + grade = {name = 'grado', help = 'Grado'} + } + }, + ooc = {help = 'Messaggio OOC'}, + me = { + help = 'Mostra Messaggio circostante', + params = {message = {name = 'messaggio', help = 'Messaggio'}} + } + }, +} + +if GetConvar('qb_locale', 'en') == 'it' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/ja.lua b/resources/[core]/qb-core/locale/ja.lua new file mode 100644 index 0000000..c39bc01 --- /dev/null +++ b/resources/[core]/qb-core/locale/ja.lua @@ -0,0 +1,132 @@ +local Translations = { + error = { + not_online = 'プレイヤーはオフラインです', + wrong_format = '形式が正しくありません', + missing_args = '全ての引数が入力されていません (x, y, z)', + missing_args2 = '引数は全て入力する必要があります', + no_access = 'このコマンドにはアクセスできません', + company_too_poor = 'あなたの雇用主が破産しました', + item_not_exist = 'アイテムがありません', + too_heavy = 'インベントリが満杯です', + location_not_exist = 'その位置は存在しません', + duplicate_license = '[QBCORE] - Rockstarライセンスが重複しています', + no_valid_license = '[QBCORE] - 有効なRockstarライセンスが見つかりません', + not_whitelisted = '[QBCORE] - あなたはホワイトリストに登録されていません', + server_already_open = 'サーバーは既にオープンしています', + server_already_closed = 'サーバーは既にクローズしています', + no_permission = '権限がありません', + no_waypoint = 'ウェイポイントが設定されていません', + tp_error = 'テレポート中にエラーが発生しました', + connecting_database_error = '[QBCORE] - サーバーへの接続中にデータベースエラーが発生しました(SQLサーバの稼働を確認してください)', + connecting_database_timeout = '[QBCORE] - データベースへの接続がタイムアウトしました(SQLサーバーの稼働を確認してください)', + }, + success = { + server_opened = 'サーバーをオープンしました', + server_closed = 'サーバーをクローズしました', + teleported_waypoint = 'ウェイポイントにテレポートしました', + }, + info = { + received_paycheck = '$%{value}の給与を受け取った', + job_info = '職業: %{value} | 階級: %{value2} | 勤務: %{value3}', + gang_info = 'ギャング: %{value} | 階級: %{value2}', + on_duty = '出勤しました!', + off_duty = '退勤しました!', + checking_ban = 'こんにちは %s さん。あなたがBANされていないかを確認中です。', + join_server = '{Server Name} へようこそ。%sさん。', + checking_whitelisted = 'こんにちは %s さん。ホワイトリストを確認中です。', + exploit_banned = 'あなたは不正行為によりBANされました。詳しくはDiscordをご確認ください: %{discord}', + exploit_dropped = 'あなたは不正行為により強制退出させられました', + }, + command = { + tp = { + help = 'プレイヤーまたは座標へテレポート (Admin専用)', + params = { + x = { name = 'id/x', help = 'プレイヤーIDまたはX座標' }, + y = { name = 'y', help = 'Y座標' }, + z = { name = 'z', help = 'Z座標' }, + }, + }, + tpm = { help = 'マーカーへテレポート (Admin専用)' }, + togglepvp = { help = 'サーバ上のPVP可否を切り替え (Admin専用)' }, + addpermission = { + help = 'プレイヤーに権限を渡す (God専用)', + params = { + id = { name = 'id', help = 'プレイヤーID' }, + permission = { name = 'permission', help = '権限レベル' }, + }, + }, + removepermission = { + help = 'プレイヤーの権限を剥奪 (God専用)', + params = { + id = { name = 'id', help = 'プレイヤーID' }, + permission = { name = 'permission', help = '権限レベル' }, + }, + }, + openserver = { help = 'サーバを全体へオープンにします (Admin専用)' }, + closeserver = { + help = '権限保持者以外サーバをクローズします (Admin専用)', + params = { + reason = { name = 'reason', help = 'クローズ理由(任意)' }, + }, + }, + car = { + help = '乗り物を召喚 (Admin専用)', + params = { + model = { name = 'model', help = '乗り物のモデル名' }, + }, + }, + dv = { help = '乗り物を消去 (Admin専用)' }, + dvall = { help = '全ての乗り物を消去 (Admin専用)' }, + dvp = { help = '全てのPedを消去 (Admin専用)' }, + dvo = { help = '全てのオブジェクトを消去 (Admin専用)' }, + givemoney = { + help = 'プレイヤーにお金を渡す (Admin専用)', + params = { + id = { name = 'id', help = 'プレイヤーID' }, + moneytype = { name = 'moneytype', help = '種類 (cash, bank, crypto)' }, + amount = { name = 'amount', help = '金額' }, + }, + }, + setmoney = { + help = 'プレイヤーの所持金を設定 (Admin専用)', + params = { + id = { name = 'id', help = 'プレイヤーID' }, + moneytype = { name = 'moneytype', help = '種類 (cash, bank, crypto)' }, + amount = { name = 'amount', help = '金額' }, + }, + }, + job = { help = '自分の職業を確認' }, + setjob = { + help = 'プレイヤーの職業を設定 (Admin専用)', + params = { + id = { name = 'id', help = 'プレイヤーID' }, + job = { name = 'job', help = '職業名' }, + grade = { name = 'grade', help = '階級' }, + }, + }, + gang = { help = '自分の所属ギャングを確認' }, + setgang = { + help = 'プレイヤーの所属ギャングを設定 (Admin専用)', + params = { + id = { name = 'id', help = 'プレイヤーID' }, + gang = { name = 'gang', help = 'ギャング名' }, + grade = { name = 'grade', help = '階級' }, + }, + }, + ooc = { help = 'OOC チャットメッセージ' }, + me = { + help = 'ローカルメッセージを表示', + params = { + message = { name = 'message', help = 'メッセージを送信' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'ja' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/lv.lua b/resources/[core]/qb-core/locale/lv.lua new file mode 100644 index 0000000..fe4a9ab --- /dev/null +++ b/resources/[core]/qb-core/locale/lv.lua @@ -0,0 +1,28 @@ +local Translations = { + error = { + not_online = 'Spēlētājs nav online', + wrong_format = 'Nepareizs formāts', + missing_args = 'Ne visi argumenti tika ievadīti (x, y, z)', + missing_args2 = 'Visiem argumentiem ir jābut aizpildītiem!', + no_access = 'Nav piekļuve šai commandai', + company_too_poor = 'Jūsu darba vedējs ir nabadzīgs', + item_not_exist = 'Šī lieta nēeksistē', + too_heavy = 'Inventārs ir pārāk pilns' + }, + success = {}, + info = { + received_paycheck = 'Jūs esat saņēmuši savu algu par $%{value}', + job_info = 'Darbs: %{value} | Pakāpe: %{value2} | Pienākums: %{value3}', + gang_info = 'Banda: %{value} | Pakāpe: %{value2}', + on_duty = 'Jūs tagad esat dienestā!', + off_duty = 'Jūs tagad esat atbrīvots no dienesta!' + } +} + +if GetConvar('qb_locale', 'en') == 'lv' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/ml.lua b/resources/[core]/qb-core/locale/ml.lua new file mode 100644 index 0000000..86e7c2b --- /dev/null +++ b/resources/[core]/qb-core/locale/ml.lua @@ -0,0 +1,132 @@ +local Translations = { + error = { + not_online = 'പ്ലെയർ ഓൺലൈനല്ല', + wrong_format = 'തെറ്റായ ഫോർമാറ്റ്', + missing_args = 'എല്ലാ വാദങ്ങളും നൽകിയിട്ടില്ല (x, y, z)', + missing_args2 = 'എല്ലാ വാദങ്ങളും പൂരിപ്പിക്കണം!', + no_access = 'ഈ കമാൻഡിലേക്ക് പ്രവേശനമില്ല', + company_too_poor = 'നിങ്ങളുടെ തൊഴിലുടമ തകർന്നിരിക്കുന്നു', + item_not_exist = 'ഇനം നിലവിലില്ല', + too_heavy = 'ഇൻവെൻ്ററി വളരെ നിറഞ്ഞിരിക്കുന്നു', + location_not_exist = 'സ്ഥാനം നിലവിലില്ല', + duplicate_license = '[QBCORE] - ഡ്യൂപ്ലിക്കേറ്റ് റോക്ക്സ്റ്റാർ ലൈസൻസ് കണ്ടെത്തി', + no_valid_license = '[QBCORE] - സാധുവായ റോക്ക്സ്റ്റാർ ലൈസൻസ് കണ്ടെത്തിയില്ല', + not_whitelisted = '[QBCORE] - ഈ സെർവറിനായി നിങ്ങളെ വൈറ്റ്‌ലിസ്റ്റ് ചെയ്‌തിട്ടില്ല', + server_already_open = 'സെർവർ ഇതിനകം തുറന്നിരിക്കുന്നു', + server_already_closed = 'സെർവർ ഇതിനകം അടച്ചിരിക്കുന്നു', + no_permission = 'നിങ്ങൾക്ക് ഇതിന് അനുമതിയില്ല..', + no_waypoint = 'വേപോയിൻ്റ് സെറ്റ് ഇല്ല.', + tp_error = 'ടെലിപോർട്ടിംഗ് സമയത്ത് പിശക്.', + connecting_database_error = '[QBCORE] - സെർവറിലേക്ക് കണക്‌റ്റ് ചെയ്യുമ്പോൾ ഒരു ഡാറ്റാബേസ് പിശക് സംഭവിച്ചു. (SQL സെർവർ ഓണാണോ?)', + connecting_database_timeout = '[QBCORE] - ഡാറ്റാബേസിലേക്കുള്ള കണക്ഷൻ കാലഹരണപ്പെട്ടു. (SQL സെർവർ ഓണാണോ?)', + }, + success = { + server_opened = 'സെർവർ തുറന്നിരിക്കുന്നു', + server_closed = 'സെർവർ അടച്ചു', + teleported_waypoint = 'വേപോയിൻ്റിലേക്ക് ടെലിപോർട്ട് ചെയ്തു.', + }, + info = { + received_paycheck = 'നിങ്ങളുടെ ശമ്പളം നിങ്ങൾക്ക് ലഭിച്ചു $%{value}', + job_info = 'ജോലി: %{value} | ഗ്രേഡ്: %{value2} | കടമ: %{value3}', + gang_info = 'സംഘം: %{value} | ഗ്രേഡ്: %{value2}', + on_duty = 'നിങ്ങൾ ഇപ്പോൾ ഡ്യൂട്ടിയിലാണ്!', + off_duty = 'നിങ്ങൾ ഇപ്പോൾ ഡ്യൂട്ടിക്ക് പുറത്താണ്!', + checking_ban = 'ഹലോ %s. നിങ്ങളെ നിരോധിച്ചിട്ടുണ്ടോ എന്ന് ഞങ്ങൾ പരിശോധിക്കുന്നു.', + join_server = 'സ്വാഗതം %s {Server Name}.', + checking_whitelisted = 'ഹലോ %s. ഞങ്ങൾ നിങ്ങളുടെ അലവൻസ് പരിശോധിക്കുന്നു.', + exploit_banned = 'വഞ്ചനയ്ക്ക് നിങ്ങളെ വിലക്കിയിട്ടുണ്ട്. കൂടുതൽ വിവരങ്ങൾക്ക് ഞങ്ങളുടെ ഡിസ്കോർഡ് പരിശോധിക്കുക: %{discord}', + exploit_dropped = 'ചൂഷണത്തിന് നിങ്ങളെ പുറത്താക്കി', + }, + command = { + tp = { + help = 'ടിപി ടു പ്ലെയർ അല്ലെങ്കിൽ കോർഡുകൾ (അഡ്മിൻ മാത്രം)', + params = { + x = { name = 'id/x', help = 'കളിക്കാരൻ്റെ ഐഡി അല്ലെങ്കിൽ X സ്ഥാനം' }, + y = { name = 'y', help = 'Y സ്ഥാനം' }, + z = { name = 'z', help = 'Z സ്ഥാനം' }, + }, + }, + tpm = { help = 'TP മാർക്കറിലേക്ക് (അഡ്മിൻ മാത്രം)' }, + togglepvp = { help = 'സെർവറിൽ PVP ടോഗിൾ ചെയ്യുക (അഡ്മിൻ മാത്രം)' }, + addpermission = { + help = 'കളിക്കാർക്ക് അനുമതി നൽകുക (ദൈവം മാത്രം)', + params = { + id = { name = 'id', help = 'കളിക്കാരൻ്റെ ഐഡി' }, + permission = { name = 'അനുമതി', help = 'അനുമതി നില' }, + }, + }, + removepermission = { + help = 'കളിക്കാരുടെ അനുമതികൾ നീക്കം ചെയ്യുക (ദൈവം മാത്രം)', + params = { + id = { name = 'id', help = 'കളിക്കാരൻ്റെ ഐഡി' }, + permission = { name = 'അനുമതി', help = 'അനുമതി നില' }, + }, + }, + openserver = { help = 'എല്ലാവർക്കുമായി സെർവർ തുറക്കുക (അഡ്മിൻ മാത്രം)' }, + closeserver = { + help = 'അനുമതിയില്ലാത്ത ആളുകൾക്കായി സെർവർ അടയ്ക്കുക (അഡ്മിൻ മാത്രം)', + params = { + reason = { name = 'കാരണം', help = 'അടയ്ക്കാനുള്ള കാരണം (ഓപ്ഷണൽ)' }, + }, + }, + car = { + help = 'സ്പോൺ വെഹിക്കിൾ (അഡ്മിൻ മാത്രം)', + params = { + model = { name = 'മാതൃക', help = 'വാഹനത്തിൻ്റെ മോഡൽ പേര്' }, + }, + }, + dv = { help = 'വാഹനം ഇല്ലാതാക്കുക (അഡ്മിൻ മാത്രം)' }, + dvall = { help = 'എല്ലാ വാഹനങ്ങളും ഇല്ലാതാക്കുക (അഡ്മിൻ മാത്രം)' }, + dvp = { help = 'എല്ലാ പെഡുകളും ഇല്ലാതാക്കുക (അഡ്മിൻ മാത്രം)' }, + dvo = { help = 'എല്ലാ ഒബ്ജക്റ്റുകളും ഇല്ലാതാക്കുക (അഡ്മിൻ മാത്രം)' }, + givemoney = { + help = 'ഒരു കളിക്കാരന് പണം നൽകുക (അഡ്മിൻ മാത്രം)', + params = { + id = { name = 'id', help = 'പ്ലെയർ ഐഡി' }, + moneytype = { name = 'പണത്തിൻ്റെ തരം', help = 'പണത്തിൻ്റെ തരം (പണം, ബാങ്ക്, ക്രിപ്റ്റോ)' }, + amount = { name = 'തുക', help = 'ആകെ തുക' }, + }, + }, + setmoney = { + help = 'കളിക്കാരുടെ പണം സജ്ജീകരിക്കുക (അഡ്മിൻ മാത്രം)', + params = { + id = { name = 'id', help = 'പ്ലെയർ ഐഡി' }, + moneytype = { name = 'പണത്തിൻ്റെ തരം', help = 'പണത്തിൻ്റെ തരം (പണം, ബാങ്ക്, ക്രിപ്റ്റോ)' }, + amount = { name = 'തുക', help = 'ആകെ തുക' }, + }, + }, + job = { help = 'നിങ്ങളുടെ ജോലി പരിശോധിക്കുക' }, + setjob = { + help = 'കളിക്കാരുടെ ജോലി സജ്ജീകരിക്കുക (അഡ്മിൻ മാത്രം)', + params = { + id = { name = 'id', help = 'പ്ലെയർ ഐഡി' }, + job = { name = 'ജോലി', help = 'ജോലിയുടെ പേര്' }, + grade = { name = 'ഗ്രേഡ്', help = 'ജോലി ഗ്രേഡ്' }, + }, + }, + gang = { help = 'നിങ്ങളുടെ സംഘത്തെ പരിശോധിക്കുക' }, + setgang = { + help = 'ഒരു കളിക്കാരുടെ സംഘത്തെ സജ്ജമാക്കുക (അഡ്മിൻ മാത്രം)', + params = { + id = { name = 'id', help = 'പ്ലെയർ ഐഡി' }, + gang = { name = 'സംഘം', help = 'സംഘത്തിൻ്റെ പേര്' }, + grade = { name = 'ഗ്രേഡ്', help = 'ഗാംഗ് ഗ്രേഡ്' }, + }, + }, + ooc = { help = 'OOC ചാറ്റ് സന്ദേശം' }, + me = { + help = 'പ്രാദേശിക സന്ദേശം കാണിക്കുക', + params = { + message = { name = 'സന്ദേശം', help = 'അയയ്ക്കാനുള്ള സന്ദേശം' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'ml' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/nl.lua b/resources/[core]/qb-core/locale/nl.lua new file mode 100644 index 0000000..003ed30 --- /dev/null +++ b/resources/[core]/qb-core/locale/nl.lua @@ -0,0 +1,130 @@ +local Translations = { + error = { + not_online = 'Speler niet online', + wrong_format = 'Onjuiste opmaak', + missing_args = 'Niet elk argument is ingevuld (x, y, z)', + missing_args2 = 'Alle argumenten moeten worden ingevuld!', + no_access = 'Geen toegang tot dit commando', + company_too_poor = 'Je werkgever is arm', + item_not_exist = 'Item bestaat niet', + too_heavy = 'Broekzakken zitten vol', + location_not_exist = 'Locatie bestaat niet', + duplicate_license = 'Dubbele Rockstar-licentie gevonden', + no_valid_license = 'Geen geldige Rockstar-licentie gevonden', + not_whitelisted = 'U bent niet whitelisted voor deze server', + server_already_open = 'De server is al open', + server_already_closed = 'De server is al gesloten', + no_permission = 'Je hebt geen permissie voor dit..', + no_waypoint = 'Geen bestemming geselecteerd', + tp_error = 'Er is een foutje begaan tijdens het teleporteren', + connecting_database_error = 'Er is een databasefout opgetreden tijdens het maken van een verbinding met de server. (Is de SQL-server ingeschakeld?)', + connecting_database_timeout = 'Er is een time-out opgetreden voor verbinding met database. (Is de SQL-server ingeschakeld?)', + }, + success = { + server_opened = 'De server is geopend', + server_closed = 'De server is gesloten', + teleported_waypoint = 'Geteleporteerd naar bestemming', + }, + info = { + received_paycheck = 'Je hebt je salaris ontvangen van $%{value}', + job_info = 'Job: %{value} | Graad: %{value2} | Dienst: %{value3}', + gang_info = 'Gang: %{value} | Graad: %{value2}', + on_duty = 'U bent nu in dienst!', + off_duty = 'U bent nu uit dienst!', + checking_ban = 'Hallo %s. We checken even of je op onze banlist staat.', + join_server = 'Welkom %s bij {Server Name}.', + checking_whitelisted = 'Hallo %s. We checken even of je toegang hebt.', + exploit_banned = 'Je bent verbannen wegens cheating. Bekijk onze Discord voor meer informatie: %{discord}', + exploit_dropped = 'Je bent gekicked voor exploitation', + }, + command = { + tp = { + help = 'Teleport naar speler of coördinaten (Alleen Admin)', + params = { + x = { name = 'id/x', help = 'ID van speler of X-positie'}, + y = { name = 'y', help = 'Y positie'}, + z = { name = 'z', help = 'Z positie'}, + }, + }, + tpm = { help = 'Teleport naar bestemming (Alleen Admin)' }, + togglepvp = { help = 'PVP op de server in-/uitschakelen (Alleen Admin)' }, + addpermission = { + help = 'Spelersmachtigingen toevoegen (alleen God)', + params = { + id = { name = 'id', help = 'ID van de speler' }, + permission = { name = 'permission', help = 'Machtigingsniveau' }, + }, + }, + removepermission = { + help = 'Spelersmachtigingen verwijderen (alleen God)', + params = { + id = { name = 'id', help = 'ID van de speler' }, + permission = { name = 'permission', help = 'Machtigingsniveau' }, + }, + }, + openserver = { help = 'Open de server voor iedereen (Alleen Admin)' }, + closeserver = { + help = 'Sluit de server voor personen zonder machtigingen (Alleen Admin)', + params = { + reason = { name = 'reason', help = 'Reden voor sluiting (optioneel)' }, + }, + }, + car = { + help = 'Spawn Voertuig (Alleen Admin)', + params = { + model = { name = 'model', help = 'Modelnaam van het voertuig' }, + }, + }, + dv = { help = 'Verwijder Voertuig (Alleen Admin)' }, + givemoney = { + help = 'Geef een speler geld (Alleen Admin)', + params = { + id = { name = 'id', help = 'Speler ID' }, + moneytype = { name = 'moneytype', help = 'Type geld (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Hoeveelheid geld' }, + }, + }, + setmoney = { + help = 'Stel spelers geldbedrag in (Alleen Admin)', + params = { + id = { name = 'id', help = 'Speler ID' }, + moneytype = { name = 'moneytype', help = 'Type geld (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Hoeveelheid geld' }, + }, + }, + job = { help = 'Controleer uw job' }, + setjob = { + help = 'Een speler zijn job instellen (Alleen Admin)', + params = { + id = { name = 'id', help = 'Speler ID' }, + job = { name = 'job', help = 'Job naam' }, + grade = { name = 'grade', help = 'Job graad' }, + }, + }, + gang = { help = 'Controleer uw bende' }, + setgang = { + help = 'Een speler zijn bende instellen (Alleen Admin)', + params = { + id = { name = 'id', help = 'Speler ID' }, + gang = { name = 'gang', help = 'Bendenaam' }, + grade = { name = 'grade', help = 'Bende rol' }, + }, + }, + ooc = { help = 'OOC Chat Bericht' }, + me = { + help = 'Lokaal bericht weergeven', + params = { + message = { name = 'message', help = 'Bericht dat je wil versturen' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'nl' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end + diff --git a/resources/[core]/qb-core/locale/no.lua b/resources/[core]/qb-core/locale/no.lua new file mode 100644 index 0000000..b51c7cb --- /dev/null +++ b/resources/[core]/qb-core/locale/no.lua @@ -0,0 +1,127 @@ +local Translations = { + error = { + not_online = 'Spiller ikke online', + wrong_format = 'Ugyldig format', + missing_args = 'Ikke alle argumenter er lagt inn (x, y, z)', + missing_args2 = 'Alle argumenter må fylles ut!', + no_access = 'Du mangler tilgang til denne kommandoen', + company_too_poor = 'Arbeidsgiveren din er blakk', + item_not_exist = 'Gjenstand finnes ikke', + too_heavy = 'Lommene er fulle', + location_not_exist = 'Plassering finnes ikke', + duplicate_license = 'Duplikat Rockstar-lisens funnet', + no_valid_license = 'Ingen gyldig Rockstar-lisens funnet', + not_whitelisted = 'Du har ikke tilgang til serveren', + server_already_open = 'Serveren er allerede åpen', + server_already_closed = 'Serveren er allerede stengt', + no_permission = 'Du har ikke tillatelser til dette..', + no_waypoint = 'Ingen markør satt.', + tp_error = 'Feil under teleportering.', + }, + success = { + server_opened = 'Serveren er åpnet', + server_closed = 'Serveren er stengt', + teleported_waypoint = 'Teleporter til angitt markør.', + }, + info = { + received_paycheck = 'Du har mottatt lønnsslippen din på kr %{value}', + job_info = 'Jobb: %{value} | Grad: %{value2} | Vakt: %{value3}', + gang_info = 'Gjeng: %{value} | Grad: %{value2}', + on_duty = 'Du er nå på vakt!', + off_duty = 'Du er nå av vakt!', + checking_ban = 'Hei %s. Vi sjekker om du er utestengt.', + join_server = 'Velkommen %s til {Server Name}.', + checking_whitelisted = 'Hei %s. Vi sjekker dine tilganger.', + exploit_banned = 'Du har blitt utestengt for juks. Sjekk vår Discord for mer informasjon: %{discord}', + exploit_dropped = 'Du har blitt sparket for utnyttelse', + }, + command = { + tp = { + help = 'TP til spiller eller koordinater (kun admin)', + params = { + x = { name = 'id/x', help = 'ID for spiller eller X-posisjon'}, + y = { name = 'y', help = 'Y posisjon'}, + z = { name = 'z', help = 'Z posisjon'}, + }, + }, + tpm = { help = 'TP Til Markør (kun admin)' }, + togglepvp = { help = 'Skru på/av PVP på serveren (kun admin)' }, + addpermission = { + help = 'Gi spillertilganger (Kun gud)', + params = { + id = { name = 'id', help = 'ID på spiller' }, + permission = { name = 'permission', help = 'Tilgangsnivå '}, + }, + }, + removepermission = { + help = 'Fjern spillertilganger (kun gud)', + params = { + id = { name = 'id', help = 'ID på spiller' }, + permission = { name = 'permission', help = 'Tilgangsnivå' }, + }, + }, + openserver = { help = 'Åpne opp serveren for alle (kun admin)' }, + closeserver = { + help = 'Lukk serveren for personer uten tillatelser (kun admin)', + params = { + reason = { name = 'reason', help = 'Årsak til stenging (valgfritt)' }, + }, + }, + car = { + help = 'Spawn kjøretøy (kun admin)', + params = { + model = { name = 'model', help = 'Modellnavn på kjøretøyet' }, + }, + }, + dv = { help = 'Slett kjøretøy (kun admin)' }, + givemoney = { + help = 'Gi en spiller penger (kun admin)', + params = { + id = { name = 'id', help = 'ID på spiller' }, + moneytype = { name = 'moneytype', help = 'Type: (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Pengebeløp' }, + }, + }, + setmoney = { + help = 'Angi spillerens pengebeløp (kun admin)', + params = { + id = { name = 'id', help = 'ID på spiller' }, + moneytype = { name = 'moneytype', help = 'Type: (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Pengebeløp' }, + }, + }, + job = { help = 'Sjekk din jobb' }, + setjob = { + help = 'Sett en spillerjobb (kun admin)', + params = { + id = { name = 'id', help = 'ID på spiller' }, + job = { name = 'job', help = 'Jobb navn' }, + grade = { name = 'grade', help = 'Jobb grad' }, + }, + }, + gang = { help = 'Sjekk din gjeng' }, + setgang = { + help = 'Sett en spillergjeng (kun admin)', + params = { + id = { name = 'id', help = 'ID på spiller' }, + gang = { name = 'gang', help = 'Gjeng navn' }, + grade = { name = 'grade', help = 'Gjeng grad' }, + }, + }, + ooc = { help = 'UAK Chat Melding' }, + me = { + help = 'Vis lokal melding', + params = { + message = { name = 'message', help = 'Melding å sende' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'no' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end \ No newline at end of file diff --git a/resources/[core]/qb-core/locale/np.lua b/resources/[core]/qb-core/locale/np.lua new file mode 100644 index 0000000..ee88330 --- /dev/null +++ b/resources/[core]/qb-core/locale/np.lua @@ -0,0 +1,133 @@ +local Translations = { + error = { + not_online = 'खिलाडी अनलाइन छैन', + wrong_format = 'गलत ढाँचा', + missing_args = 'सबै तर्कहरू प्रविष्ट गरिएको छैन (x, y, z)', + missing_args2 = 'सबै तर्कहरू पूरा गर्नुपर्छ!', + no_access = 'यस आदेशको लागि पहुँच छैन', + company_too_poor = 'तपाईंको नियोक्ता टाट पल्टेको छ', + item_not_exist = 'वस्तु अवस्थित छैन', + too_heavy = 'इन्वेन्टरी धेरै भरिएको छ', + location_not_exist = 'स्थान अवस्थित छैन', + duplicate_license = '[QBCORE] - दोहोरिएको रकस्टार लाइसेन्स भेटियो', + no_valid_license = '[QBCORE] - मान्य रकस्टार लाइसेन्स भेटिएन', + not_whitelisted = '[QBCORE] - तपाईं यस सर्भरको लागि सेतो सूचीमा हुनुहुन्न', + server_already_open = 'सर्भर पहिले नै खुल्ला छ', + server_already_closed = 'सर्भर पहिले नै बन्द छ', + no_permission = 'तपाईंलाई यसका लागि अनुमति छैन।', + no_waypoint = 'वेपॉइंट सेट गरिएको छैन।', + tp_error = 'टेलिपोर्ट गर्दा त्रुटि।', + ban_table_not_found = '[QBCORE] - डाटाबेसमा प्रतिबन्ध तालिका फेला पार्न सकेन। कृपया तपाईंले SQL फाइल सही रूपमा आयात गरेको सुनिश्चित गर्नुहोस्।', + connecting_database_error = '[QBCORE] - डाटाबेससँग जडान गर्दा त्रुटि भयो। कृपया SQL सर्भर चलिरहेको छ र server.cfg फाइलमा विवरणहरू सही छन् भन्ने सुनिश्चित गर्नुहोस्।', + connecting_database_timeout = '[QBCORE] - डाटाबेस जडानले समय समाप्त गर्यो। कृपया SQL सर्भर चलिरहेको छ र server.cfg फाइलमा विवरणहरू सही छन् भन्ने सुनिश्चित गर्नुहोस्।', + }, + success = { + server_opened = 'सर्भर खोलियो', + server_closed = 'सर्भर बन्द भयो', + teleported_waypoint = 'वेपॉइंटमा टेलिपोर्ट भयो।', + }, + info = { + received_paycheck = 'तपाईंले $%{value} को तलब प्राप्त गर्नुभयो', + job_info = 'काम: %{value} | ग्रेड: %{value2} | ड्युटी: %{value3}', + gang_info = 'ग्याङ: %{value} | ग्रेड: %{value2}', + on_duty = 'तपाईं अब ड्युटीमा हुनुहुन्छ!', + off_duty = 'तपाईं अब ड्युटीबाट बाहिर हुनुहुन्छ!', + checking_ban = 'नमस्ते %s। हामी तपाईं प्रतिबन्धित हुनुहुन्छ कि छैन जाँच गर्दैछौं।', + join_server = 'स्वागत छ %s {Server Name} मा।', + checking_whitelisted = 'नमस्ते %s। हामी तपाईंको अनुमतिहरू जाँच्दैछौं।', + exploit_banned = 'तपाईंलाई धोकाधडीको लागि प्रतिबन्ध लगाइएको छ। थप जानकारीका लागि हाम्रो डिस्कर्ड हेर्नुहोस्: %{discord}', + exploit_dropped = 'धोकाधडीको लागि तपाईंलाई निकालिएको छ', + }, + command = { + tp = { + help = 'खिलाडी वा निर्देशांकमा टेलिपोर्ट गर्नुहोस् (केवल प्रशासक)', + params = { + x = { name = 'id/x', help = 'खिलाडीको ID वा X स्थिति' }, + y = { name = 'y', help = 'Y स्थिति' }, + z = { name = 'z', help = 'Z स्थिति' }, + }, + }, + tpm = { help = 'मार्करमा टेलिपोर्ट गर्नुहोस् (केवल प्रशासक)' }, + togglepvp = { help = 'सर्भरमा PVP सक्रिय/निष्क्रिय गर्नुहोस् (केवल प्रशासक)' }, + addpermission = { + help = 'खिलाडीलाई अनुमति दिनुहोस् (केवल देवता)', + params = { + id = { name = 'id', help = 'खिलाडीको ID' }, + permission = { name = 'permission', help = 'अनुमतिका स्तर' }, + }, + }, + removepermission = { + help = 'खिलाडीबाट अनुमति हटाउनुहोस् (केवल देवता)', + params = { + id = { name = 'id', help = 'खिलाडीको ID' }, + permission = { name = 'permission', help = 'अनुमतिका स्तर' }, + }, + }, + openserver = { help = 'सबैलाई सर्भर खोल्नुहोस् (केवल प्रशासक)' }, + closeserver = { + help = 'अनुमति बिना मानिसहरूलाई सर्भर बन्द गर्नुहोस् (केवल प्रशासक)', + params = { + reason = { name = 'reason', help = 'बन्द गर्ने कारण (वैकल्पिक)' }, + }, + }, + car = { + help = 'सवारी साधन उत्पन्न गर्नुहोस् (केवल प्रशासक)', + params = { + model = { name = 'model', help = 'सवारी साधनको मोडल नाम' }, + }, + }, + dv = { help = 'सवारी साधन मेटाउनुहोस् (केवल प्रशासक)' }, + dvall = { help = 'सबै सवारी साधन मेटाउनुहोस् (केवल प्रशासक)' }, + dvp = { help = 'सबै NPC मेटाउनुहोस् (केवल प्रशासक)' }, + dvo = { help = 'सबै वस्तुहरू मेटाउनुहोस् (केवल प्रशासक)' }, + givemoney = { + help = 'खिलाडीलाई पैसा दिनुहोस् (केवल प्रशासक)', + params = { + id = { name = 'id', help = 'खिलाडीको ID' }, + moneytype = { name = 'moneytype', help = 'पैसाको प्रकार (नगद, बैंक, क्रिप्टो)' }, + amount = { name = 'amount', help = 'पैसाको रकम' }, + }, + }, + setmoney = { + help = 'खिलाडीको पैसा सेट गर्नुहोस् (केवल प्रशासक)', + params = { + id = { name = 'id', help = 'खिलाडीको ID' }, + moneytype = { name = 'moneytype', help = 'पैसाको प्रकार (नगद, बैंक, क्रिप्टो)' }, + amount = { name = 'amount', help = 'पैसाको रकम' }, + }, + }, + job = { help = 'तपाईंको काम जाँच्नुहोस्' }, + setjob = { + help = 'खिलाडीलाई काम दिनुहोस् (केवल प्रशासक)', + params = { + id = { name = 'id', help = 'खिलाडीको ID' }, + job = { name = 'job', help = 'कामको नाम' }, + grade = { name = 'grade', help = 'कामको स्तर' }, + }, + }, + gang = { help = 'तपाईंको ग्याङ जाँच्नुहोस्' }, + setgang = { + help = 'खिलाडीलाई ग्याङ दिनुहोस् (केवल प्रशासक)', + params = { + id = { name = 'id', help = 'खिलाडीको ID' }, + gang = { name = 'gang', help = 'ग्याङको नाम' }, + grade = { name = 'grade', help = 'ग्याङको स्तर' }, + }, + }, + ooc = { help = 'OOC च्याट सन्देश' }, + me = { + help = 'स्थानीय सन्देश देखाउनुहोस्', + params = { + message = { name = 'message', help = 'पठाउनको लागि सन्देश' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'np' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Locale:new({ phrases = {}, warnOnMissing = true }) -- Fallback to empty locale if needed + }) +end diff --git a/resources/[core]/qb-core/locale/pl.lua b/resources/[core]/qb-core/locale/pl.lua new file mode 100644 index 0000000..ab67f9b --- /dev/null +++ b/resources/[core]/qb-core/locale/pl.lua @@ -0,0 +1,34 @@ +local Translations = { + error = { + not_online = 'Gracz nie jest online', + wrong_format = 'Nieprawidłowy format', + missing_args = 'Nie każdy argument został wprowadzony (x, y, z)', + missing_args2 = 'Wszystkie argumenty muszą być wypełnione!', + no_access = 'Brak dostępu do tego polecenia', + company_too_poor = 'Twój pracodawca jest spłukany', + item_not_exist = 'Przedmiot nie istnieje', + too_heavy = 'Ekwipunek jest zbyt pełny', + duplicate_license = 'Znaleziono zduplikowaną licencję Rockstar', + no_valid_license = 'Nie znaleziono ważnej licencji Rockstar', + not_whitelisted = 'Nie jesteś na białej liście tego serwera' + }, + success = {}, + info = { + received_paycheck = 'Otrzymałeś czek w wysokości $%{value}', + job_info = 'Praca: %{value} | Stopień: %{value2} | Służba: %{value3}', + gang_info = 'Gang: %{value} | Stopień: %{value2}', + on_duty = 'Jesteś teraz na służbie!', + off_duty = 'Jesteś teraz po służbie!', + checking_ban = 'Witaj %s. Sprawdzamy, czy jesteś zbanowany.', + join_server = 'Witaj %s na {Server Name}.', + checking_whitelisted = 'Witaj %s. Sprawdzamy Twoje kieszonkowe.' + } +} + +if GetConvar('qb_locale', 'en') == 'pl' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/pt-br.lua b/resources/[core]/qb-core/locale/pt-br.lua new file mode 100644 index 0000000..70d9ed1 --- /dev/null +++ b/resources/[core]/qb-core/locale/pt-br.lua @@ -0,0 +1,129 @@ +local Translations = { + error = { + not_online = 'Jogador não está online', + wrong_format = 'Formato incorreto', + missing_args = 'Nem todos os argumentos foram inseridos (x, y, z)', + missing_args2 = 'Todos os argumentos devem ser preenchidos!', + no_access = 'Sem acesso a este comando', + company_too_poor = 'Seu empresa está quebrada', + item_not_exist = 'O item não existe', + too_heavy = 'Iventário cheio', + location_not_exist = 'O local não existe', + duplicate_license = 'Licença da Rockstar duplicada encontrada', + no_valid_license = 'Nenhuma licença da Rockstar válida encontrada', + not_whitelisted = 'Você não está na lista branca(whitelist) deste servidor', + server_already_open = 'O servidor já está aberto', + server_already_closed = 'O servidor já está fechado', + no_permission = 'Você não tem permissões para isso..', + no_waypoint = 'Nenhum local definido.', + tp_error = 'Erro ao teletransportar.', + connecting_database_error = 'Ocorreu um erro de banco de dados ao conectar-se ao servidor. (O servidor SQL está ativado?)', + connecting_database_timeout = 'A conexão com o banco de dados expirou. (O servidor SQL está ativado?)', + }, + success = { + server_opened = 'O servidor foi aberto', + server_closed = 'O servidor foi fechado', + teleported_waypoint = 'Teleportado para local marcado.', + }, + info = { + received_paycheck = 'Você recebeu seu salário de $%{value}', + job_info = 'Trabalho: %{value} | Grau: %{value2} | Serviço: %{value3}', + gang_info = 'Gangue: %{value} | Grau: %{value}', + on_duty = 'Você agora está de plantão!', + off_duty = 'Você agora está de folga!', + checking_ban = 'Olá %s. Estamos verificando se você foi banido.', + join_server = 'Bem-vindo %s a {Nome do servidor}.', + checking_whitelisted = 'Olá %s. Estamos verificando sua whitelist.', + exploit_banned = 'Você foi banido por trapacear. Confira nosso Discord para mais informações: %{discord}', + exploit_dropped = 'Você foi expulso por exploração', + }, + command = { + tp = { + help = 'TP Para Jogador ou Coordenadas (Somente administrador)', + params = { + x = { name = 'id/x', help = 'ID do jogador ou posição X'}, + y = { name = 'y', help = 'posição Y'}, + z = { name = 'z', help = 'posição Z'}, + }, + }, + tpm = { help = 'TP Para Marcador (Somente administrador)' }, + togglepvp = { help = 'Alternar PVP no servidor (Somente administrador)' }, + addpermission = { + help = 'Dê permissões ao jogador (Só Deus)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + permission = { name = 'permissão', help = 'Nível de permissão' }, + }, + }, + removepermission = { + help = 'Remover permissões do jogador (Só Deus)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + permission = { name = 'permissão', help = 'Nível de permissão' }, + }, + }, + openserver = { help = 'Abra o servidor para todos (somente administrador)' }, + closeserver = { + help = 'Feche o servidor para pessoas sem permissões (somente administrador)', + params = { + reason = { name = 'motivo', help = 'Motivo do fechamento (opcional)' }, + }, + }, + car = { + help = 'Criar Veículo (somente administrador)', + params = { + model = { name = 'modelo', help = 'Modelo do veículo' }, + }, + }, + dv = { help = 'Excluir veículo (somente administrador)' }, + givemoney = { + help = 'Dar dinheiro a um jogador (somente administrador)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + moneytype = { name = 'tipo_dinheiro', help = 'Tipo de dinheiro (cash, bank, crypto)' }, + amount = { name = 'quantia', help = 'Quantia de dinheiro' }, + }, + }, + setmoney = { + help = 'Definir a quantidade de dinheiro do jogador (somente administrador)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + moneytype = { name = 'tipo_dinheiro', help = 'Tipo de dinheiro (cash, bank, crypto)' }, + amount = { name = 'quantia', help = 'Quantia de dinheiro' }, + }, + }, + job = { help = 'Verifique seu trabalho' }, + setjob = { + help = 'Definir o trabalho do jogador (somente administrador)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + job = { name = 'trabalho', help = 'Nome do trabalho' }, + grade = { name = 'grau', help = 'Grau do trabalho' }, + }, + }, + gang = { help = 'Verifique sua gangue' }, + setgang = { + help = 'Definir a gangue do jogador (somente administrador)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + gang = { name = 'gangue', help = 'Nome da gangue' }, + grade = { name = 'grau', help = 'Grau da gangue' }, + }, + }, + ooc = { help = 'Mensagem de bate-papo OOC' }, + me = { + help = 'Mostrar mensagem local', + params = { + message = { name = 'mensagem', help = 'Mensagem para enviar' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'pt-br' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/pt.lua b/resources/[core]/qb-core/locale/pt.lua new file mode 100644 index 0000000..b181e52 --- /dev/null +++ b/resources/[core]/qb-core/locale/pt.lua @@ -0,0 +1,128 @@ +local Translations = { + error = { + not_online = 'O jogador não está online', + wrong_format = 'Formato inválido', + missing_args = 'Não introduziste todos os argumentos (x, y, z)', + missing_args2 = 'Todos os argumentos têm de ser preenchidos!', + no_access = 'Não tens acesso a este comando', + company_too_poor = 'A tua empresa está falida', + item_not_exist = 'O item não existe', + too_heavy = 'Inventário cheio', + location_not_exist = 'Localização não existe', + duplicate_license = 'Licença Rockstar duplicada', + no_valid_license = 'Licença Rockstar não encontrada', + not_whitelisted = 'Não estás na whitelist deste servidor', + server_already_open = 'O Servidor já se encontra aberto', + server_already_closed = 'O Servidor já se encontra fechado', + no_permission = 'Não tem permissões para isto', + no_waypoint = 'Não colocou nenhum waypoint', + tp_error = 'Erro ao teleportar', + connecting_database_error = 'Um erro na base de dados ocorreu enquanto se conecatava ao servidor. (SQL Server Ligado?)', + connecting_database_timeout = 'Falhou a ligação à base de dados. (SQL server Ligado?)', + }, + success = { + server_opened = 'O Servidor abriu', + server_closed = 'O Servidor fechou', + teleported_waypoint = 'Teleportado para o waypoint.', + }, + info = { + received_paycheck = 'Recebeste o pagamento de %{value}€', + job_info = 'Emprego: %{value} | Grau: %{value2} | Serviço: %{value3}', + gang_info = 'Gang: %{value} | Grau: %{value2}', + on_duty = 'Agora estás de serviço!', + off_duty = 'Agora estás fora de serviço!', + checking_ban = 'Olá %s. Estamos a verificar se estás banido.', + join_server = 'Bem vindo %s ao {Server Name}.', + checking_whitelisted = 'Bem vindo %s. Estamos a verificiar se estás na whitelist.', + exploit_banned = 'Foste banidos por cheats. Para mais informações visita o nosso discord: %{discord}', + exploit_dropped = 'Foste kickado por cheats!', + }, + command = { + tp = { + help = 'TP para jogador ou coordenadas (Apenas Admin)', + params = { + x = { name = 'id/x', help = 'ID do jogador ou posição X'}, + y = { name = 'y', help = 'Posição Y'}, + z = { name = 'z', help = 'Posição Z'}, + }, + }, + tpm = { help = 'TP para Marcador (Apenas Admin)' }, + togglepvp = { help = 'Ligar /Desligar PVP no servidor (Apenas Admin)' }, + addpermission = { + help = 'Dar Permissões a jogador (Apenas God)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + permission = { name = 'permission', help = 'Nivel de permissão' }, + }, + }, + removepermission = { + help = 'Remover permissão de jogador (Apenas God)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + permission = { name = 'permission', help = 'Nivel de permissão' }, + }, + }, + openserver = { help = 'Abrir o Servidor para todos (Apenas Admin)' }, + closeserver = { + help = 'Fechar o servidor para todos excepto Admins (Apenas Admin)', + params = { + reason = { name = 'reason', help = 'Razão para fechar(opcional)' }, + }, + }, + car = { + help = 'Spawnar Veículo (Apenas Admin)', + params = { + model = { name = 'model', help = 'Modelo do veículo' }, + }, + }, + dv = { help = 'Apagar Veículo (Apenas Admin)' }, + givemoney = { + help = 'Dar dinheiro a jogador (Apenas Admin)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + moneytype = { name = 'moneytype', help = 'Tipo (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Quantidade de dinheiro' }, + }, + }, + setmoney = { + help = 'Definir a quantia de dinheiro do jogador (Apenas Admin)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + moneytype = { name = 'moneytype', help = 'Tipo(cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Quantidade de dinheiro' }, + }, + }, + job = { help = 'Ver o teu trabalho' }, + setjob = { + help = 'Definir o trabalho de 1 jogador (Apenas Admin)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + job = { name = 'job', help = 'Nome do trabalho' }, + grade = { name = 'grade', help = 'Nivel do trabalho' }, + }, + }, + gang = { help = 'Ver o teu Gang' }, + setgang = { + help = 'Definir o Gang de um jogador (Apenas Admin)', + params = { + id = { name = 'id', help = 'ID do jogador' }, + gang = { name = 'gang', help = 'Nome do Gang' }, + grade = { name = 'grade', help = 'Nível/ Posição no Gang' }, + }, + }, + ooc = { help = 'Mensagem Chat em OOC' }, + me = { + help = 'Mostrar Mensagem local', + params = { + message = { name = 'message', help = 'Menssagem a enviar' } + }, + }, + }, +} +if GetConvar('qb_locale', 'en') == 'pt' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/ro.lua b/resources/[core]/qb-core/locale/ro.lua new file mode 100644 index 0000000..0d01f04 --- /dev/null +++ b/resources/[core]/qb-core/locale/ro.lua @@ -0,0 +1,130 @@ +--[[ +Romanian base language translation for qb-core +Translation done by wanderrer (Martin Riggs#0807 on Discord) +]]-- +local Translations = { + error = { + not_online = 'Jucătorul nu este online', + wrong_format = 'Format incorect', + missing_args = 'Nu au fost introduse toate argumentele (x, y, z)', + missing_args2 = 'Trebuie completate toate argumentele!', + no_access = 'Nu ai acces la această comandă', + company_too_poor = 'Angajatorul tău este falit', + item_not_exist = 'Obiectul nu există', + too_heavy = 'Inventarul este prea plin', + location_not_exist = 'Locația nu există', + duplicate_license = 'Duplicate Rockstar License Found', + no_valid_license = 'Nicio licență Rockstar validă găsită', + not_whitelisted = 'Nu ești în lista albă pentru acest server', + server_already_open = 'Serverul este deja deschis', + server_already_closed = 'Serverul este deja închis', + no_permission = 'Nu ai permisiuni pentru asta..', + no_waypoint = 'Nu a fost setat un punct de referință.', + tp_error = 'Eroare în timpul teleportării.', + connecting_database_error = 'A apărut o eroare de bază de date în timpul conectării la server. (Este serverul SQL pornit?)', + connecting_database_timeout = 'Conexiunea la baza de date a expirat. (Este serverul SQL pornit?)', + }, + success = { + server_opened = 'Serverul a fost deschis', + server_closed = 'Serverul a fost închis', + teleported_waypoint = 'Teleportat la punctul de referință.', + }, + info = { + received_paycheck = 'Ai primit salariul în valoare de $%{value}', + job_info = 'Job: %{value} | Grad: %{value2} | Îndatorire: %{value3}', + gang_info = 'Bandă: %{value} | Grad: %{value2}', + on_duty = 'Ești în serviciu acum!', + off_duty = 'Nu ești în serviciu acum!', + checking_ban = 'Salut %s. Verificăm dacă ești interzis.', + join_server = 'Bun venit %s pe {Numele Serverului}.', + checking_whitelisted = 'Salut %s. Verificăm aprobarea ta.', + exploit_banned = 'Ai fost interzis pentru înșelăciune. Verifică Discord-ul nostru pentru mai multe informații: %{discord}', + exploit_dropped = 'Ai fost dat afară pentru exploatare', + }, + command = { + tp = { + help = 'Teleportează la un jucător sau coordonate (doar pentru administrator)', + params = { + x = { name = 'id/x', help = 'ID-ul jucătorului sau poziția X' }, + y = { name = 'y', help = 'Poziția Y' }, + z = { name = 'z', help = 'Poziția Z' }, + }, + }, + tpm = { help = 'Teleportează la marker (doar pentru administrator)' }, + togglepvp = { help = 'Activează/dezactivează PVP pe server (doar pentru administrator)' }, + addpermission = { + help = 'Acordă permisiuni jucătorului (doar pentru creator)', + params = { + id = { name = 'id', help = 'ID-ul jucătorului' }, + permission = { name = 'permission', help = 'Nivelul permisiunii' }, + }, + }, + removepermission = { + help = 'Elimină permisiunile jucătorului (doar pentru creator)', + params = { + id = { name = 'id', help = 'ID-ul jucătorului' }, + permission = { name = 'permission', help = 'Nivelul permisiunii' }, + }, + }, + openserver = { help = 'Deschide serverul pentru toți (doar pentru administrator)' }, + closeserver = { + help = 'Închide serverul pentru persoanele fără permisiuni (doar pentru administrator)', + params = { + reason = { name = 'reason', help = 'Motivul închiderii (opțional)' }, + }, + }, + car = { + help = 'Generează vehicul (doar pentru administrator)', + params = { + model = { name = 'model', help = 'Numele modelului vehiculului' }, + }, + }, + dv = { help = 'Șterge vehicul (doar pentru administrator)' }, + givemoney = { + help = 'Dă bani unui jucător (doar pentru administrator)', + params = { + id = { name = 'id', help = 'ID-ul jucătorului' }, + moneytype = { name = 'moneytype', help = 'Tipul de bani (cash, bancă, criptomonede)' }, + amount = { name = 'amount', help = 'Suma de bani' }, + }, + }, + setmoney = { + help = 'Setează suma de bani a unui jucător (doar pentru administrator)', + params = { + id = { name = 'id', help = 'ID-ul jucătorului' }, + moneytype = { name = 'moneytype', help = 'Tipul de bani (cash, bancă, criptomonede)' }, + amount = { name = 'amount', help = 'Suma de bani' }, + }, + }, + job = { help = 'Verifică-ți jobul' }, + setjob = { + help = 'Setează jobul unui jucător (doar pentru administrator)', + params = { + id = { name = 'id', help = 'ID-ul jucătorului' }, + job = { name = 'job', help = 'Numele jobului' }, + grade = { name = 'grade', help = 'Gradul jobului' }, + }, + }, + gang = { help = 'Verifică-ți banda' }, + setgang = { + help = 'Setează banda unui jucător (doar pentru administrator)', + params = { + id = { name = 'id', help = 'ID-ul jucătorului' }, + gang = { name = 'gang', help = 'Numele băndei' }, + grade = { name = 'grade', help = 'Gradul băndei' }, + }, + }, + ooc = { help = 'Mesaj chat OOC' }, + me = { + help = 'Afișează un mesaj local', + params = { + message = { name = 'message', help = 'Mesajul de trimis' } + }, + }, + }, +} + +Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true +}) diff --git a/resources/[core]/qb-core/locale/rs.lua b/resources/[core]/qb-core/locale/rs.lua new file mode 100644 index 0000000..4dc9dc7 --- /dev/null +++ b/resources/[core]/qb-core/locale/rs.lua @@ -0,0 +1,28 @@ +local Translations = { + error = { + not_online = 'Igrac nije online', + wrong_format = 'Netacan format', + missing_args = 'Nije unet svaki argument (x, y, z)', + missing_args2 = 'Svi argumenti moraju biti popunjeni!', + no_access = 'Nemate pristup ovoj komandi', + company_too_poor = 'Vas poslodavac nema para', + item_not_exist = 'Stavka ne postoji', + too_heavy = 'Inventar je prepun' + }, + success = {}, + info = { + received_paycheck = 'Dobili ste platu u iznosu od $%{value}', + job_info = 'Posao: %{value} | Rank: %{value2} | Duznost: %{value3}', + gang_info = 'Banda: %{value} | Rank: %{value2}', + on_duty = 'Sada ste na duznosti!', + off_duty = 'Sada ste van duznosti!' + } +} + +if GetConvar('qb_locale', 'en') == 'rs' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/ru.lua b/resources/[core]/qb-core/locale/ru.lua new file mode 100644 index 0000000..a4e5167 --- /dev/null +++ b/resources/[core]/qb-core/locale/ru.lua @@ -0,0 +1,127 @@ +local Translations = { + error = { + not_online = 'Игрок не в сети', + wrong_format = 'Неверный формат', + missing_args = 'Не все аргументы были заполнены (x, y, z)', + missing_args2 = 'Все аргументы должны быть заполнены!', + no_access = 'Нет доступа к этой команде', + company_too_poor = 'Ваш работодатель без денег', + item_not_exist = 'Вещь не существует', + too_heavy = 'Инвентарь слишком полный', + location_not_exist = 'Локация не существует', + duplicate_license = 'Найден дубликат лицензии Rockstar', + no_valid_license = 'Не найдена действующая лицензия Rockstar', + not_whitelisted = 'Вы не в белом списке этого сервера', + server_already_open = 'Этот сервер уже открыт', + server_already_closed = 'Этот сервер уже закрыт', + no_permission = 'У вас нет к этому доступа', + no_waypoint = 'Путевая точка не настроена', + tp_error = 'Произошла ошибка во время телепортации', + }, + success = { + server_opened = 'Сервер открыт', + server_closed = 'Сервер закрыт', + teleported_waypoint = 'Вы были телепортированы к путевой точке', + }, + info = { + received_paycheck = 'Вы получили зарплату в размере $%{value}', + job_info = 'Задание: %{value} | Оценка: %{value2} | Дежурство: %{value3}', + gang_info = 'Банда: %{value} | Оценка: %{value2}', + on_duty = 'Вы сейчас на дежурстве!', + off_duty = 'Вы сейчас не дежурный!', + checking_ban = 'Привет %s. Мы проверяем если вы забанены.', + join_server = 'Добро пожаловать %s в {Server Name}.', + checking_whitelisted = 'Привет %s. Мы проверяем если вы в белом списке.', + exploit_banned = 'Вы были забанены за мошенничество. Чтобы узнать больше, присоединяйтесь к нашему серверу Discord: %{discord}', + exploit_dropped = 'Вас выгнали с сервера за мошенничество', + }, + command = { + tp = { + help = 'Телепортироваться к игроку или координатам (только админам)', + params = { + x = { name = 'id/x', help = 'ID игрока или координат X' }, + y = { name = 'y', help = 'Координат Y' }, + z = { name = 'z', help = 'Координат Z' }, + }, + }, + tpm = { help = 'Телепортироваться к путевой точке (только админам)' }, + togglepvp = { help = 'Включить/отключить PVP на сервере (только админам)' }, + addpermission = { + help = 'Дать доступ игроку (только god)', + params = { + id = { name = 'id', help = 'ID игрока' }, + permission = { name = 'доступ', help = 'Уровень доступа' }, + }, + }, + removepermission = { + help = 'Убрать доступ от игрока (только god)', + params = { + id = { name = 'id', help = 'ID игрока' }, + permission = { name = 'доступ', help = 'Уровень доступа' }, + }, + }, + openserver = { help = 'Открыть сервер всем (только админам)' }, + closeserver = { + help = 'Закрыть сервер для игроков без доступа (только админам)', + params = { + reason = { name = 'причина', help = 'Причина закрытия (необязательно)' }, + }, + }, + car = { + help = 'Создать транспорт (только админам)', + params = { + model = { name = 'модель', help = 'Название модели транспорта' }, + }, + }, + dv = { help = 'Удалить транспорт (только админам)' }, + givemoney = { + help = 'Дать деньги игроку (только админам)', + params = { + id = { name = 'id', help = 'ID игрока' }, + moneytype = { name = 'вид денег', help = 'Вид денег (cash, bank, crypto)' }, + amount = { name = 'количество', help = 'Количество денег' }, + }, + }, + setmoney = { + help = 'Настроить сумму денег игрока (только админам)', + params = { + id = { name = 'id', help = 'ID игрока' }, + moneytype = { name = 'вид денег', help = 'Вид денег (cash, bank, crypto)' }, + amount = { name = 'количество', help = 'Количество денег' }, + }, + }, + job = { help = 'Проверьте свою работу' }, + setjob = { + help = 'Настроить работу игрока (только админам)', + params = { + id = { name = 'id', help = 'ID игрока' }, + job = { name = 'работа', help = 'Название работы' }, + grade = { name = 'ранг', help = 'Ранг работы' }, + }, + }, + gang = { help = 'Проверьте свою банду' }, + setgang = { + help = 'Настроить банду игрока (только админам)', + params = { + id = { name = 'id', help = 'ID игрока' }, + gang = { name = 'банда', help = 'Название банды' }, + grade = { name = 'ранг', help = 'Ранг банды' }, + }, + }, + ooc = { help = 'Сообщение ООС в чате' }, + me = { + help = 'Показать локальное сообщение', + params = { + message = { name = 'сообщение', help = 'Сообщение для отправки' }, + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'ru' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/sl.lua b/resources/[core]/qb-core/locale/sl.lua new file mode 100644 index 0000000..e1ead5c --- /dev/null +++ b/resources/[core]/qb-core/locale/sl.lua @@ -0,0 +1,28 @@ +local Translations = { + error = { + not_online = 'Igralec ni online', + wrong_format = 'Napacen format', + missing_args = 'Nekateri argumenti niso bili vpisani (x, y, z)', + missing_args2 = 'Vsi argumenti morajo biti vpisani!', + no_access = 'Nimas dostopa do te komande!', + company_too_poor = 'Tvoj delodajalec nima denarja', + item_not_exist = 'Predmet ne obstaja', + too_heavy = 'Tvoj inventorij je prevec poln' + }, + success = {}, + info = { + received_paycheck = 'Prejel si placilo $%{value}', + job_info = 'Sluzba: %{value} | Rang: %{value2} | Dolznost: %{value3}', + gang_info = 'Tolpa: %{value} | Rang: %{value2}', + on_duty = 'Sedaj si na dolznosti!', + off_duty = 'Nisi vec na dolznosti!' + } +} + +if GetConvar('qb_locale', 'en') == 'sl' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/sv.lua b/resources/[core]/qb-core/locale/sv.lua new file mode 100644 index 0000000..4f2bf64 --- /dev/null +++ b/resources/[core]/qb-core/locale/sv.lua @@ -0,0 +1,129 @@ +local Translations = { + error = { + not_online = 'Spelaren är inte online', + wrong_format = 'Felaktigt format', + missing_args = 'Alla argument har inte angetts (x, y, z)', + missing_args2 = 'Alla argument måste fyllas i!', + no_access = 'Du har inte tillgång till detta kommando', + company_too_poor = 'Din arbetsgivare är pank', + item_not_exist = 'Objektet finns inte', + too_heavy = 'Ditt inventory är fullt!', + location_not_exist = 'Platsen finns inte', + duplicate_license = 'Duplicerad Rockstar Licens Funnet', + no_valid_license = 'Ingen Giltig Rockstar Licens Hittades', + not_whitelisted = 'Du är inte whitelistad på servern', + server_already_open = 'Servern är redan öppen', + server_already_closed = 'Servern är redan stängd', + no_permission = 'Du har inte behörigheter för detta..', + no_waypoint = 'Ingen waypoint satt.', + tp_error = 'Fel vid teleportering.', + connecting_database_error = 'Ett databasfel inträffade under anslutningen till servern.(Är SQL-servern på?)', + connecting_database_timeout = 'Anslutning till databasen timed out.(Är SQL-servern på?)', + }, + success = { + server_opened = 'Servern har öppnats', + server_closed = 'Servern har stängts', + teleported_waypoint = 'Teleporterad till waypoint.', + }, + info = { + received_paycheck = 'Du fick din lönecheck på SEK%{value}', + job_info = 'Jobb: %{value} | Grad: %{value2} | Tjänst: %{value3}', + gang_info = 'Gäng: %{value} | Grad: %{value2}', + on_duty = 'Du är nu i tjänst!', + off_duty = 'Du har gått ur tjänst!', + checking_ban = 'Hej %s. Validerar Användare.', + join_server = 'Välkommen %s.', + checking_whitelisted = 'Hej %s. Vi kontrollerar din whitelist.', + exploit_banned = 'Du har blivit bannad för fusk. Kontrollera vår discord för mer information: %{discord}', + exploit_dropped = 'Du har blivit sparkad för Exploitation', + }, + command = { + tp = { + help = 'TP till spelare eller koords (Admin Only)', + params = { + x = { name = 'id/x', help = 'ID för spelare eller X-position'}, + y = { name = 'y', help = 'Y position'}, + z = { name = 'z', help = 'Z position'}, + }, + }, + tpm = { help = 'TP till markör (Admin Only)' }, + togglepvp = { help = 'Växla PvP på servern (Admin Only)' }, + addpermission = { + help = 'Ge spelarbehörigheter (God Only)', + params = { + id = { name = 'id', help = 'ID på spelare' }, + permission = { name = 'permission', help = 'Behörighetsnivå' }, + }, + }, + removepermission = { + help = 'Ta bort spelarbehörigheter (God Only)', + params = { + id = { name = 'id', help = 'ID på spelare' }, + permission = { name = 'permission', help = 'Behörighetsnivå' }, + }, + }, + openserver = { help = 'Öppna servern för alla (Admin Only)' }, + closeserver = { + help = 'Stäng servern för personer utan behörigheter (Admin Only)', + params = { + reason = { name = 'reason', help = 'Anledning till stängning (frivillig)' }, + }, + }, + car = { + help = 'Spawna Fordon (Admin Only)', + params = { + model = { name = 'model', help = 'Fordonets modellnamn' }, + }, + }, + dv = { help = 'Radera fordon (Admin Only)' }, + givemoney = { + help = 'Ge en spelare pengar (Admin Only)', + params = { + id = { name = 'id', help = 'Spelar-ID' }, + moneytype = { name = 'moneytype', help = 'Typ av pengar (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Belopp' }, + }, + }, + setmoney = { + help = 'Sätt spelar pengar (Admin Only)', + params = { + id = { name = 'id', help = 'Spelar-ID' }, + moneytype = { name = 'moneytype', help = 'Typ av pengar (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Belopp' }, + }, + }, + job = { help = 'Kolla ditt jobb' }, + setjob = { + help = 'Sätt Spelar-Jobb (Admin Only)', + params = { + id = { name = 'id', help = 'Spelar-ID' }, + job = { name = 'job', help = 'Jobbnamn' }, + grade = { name = 'grade', help = 'Jobb-Grad' }, + }, + }, + gang = { help = 'Kolla ditt gäng' }, + setgang = { + help = 'Sätt spelar-gäng (Admin Only)', + params = { + id = { name = 'id', help = 'Spelar-ID' }, + gang = { name = 'gang', help = 'Gängnamn' }, + grade = { name = 'grade', help = 'Gäng-grad' }, + }, + }, + ooc = { help = 'OOC-chattmeddelande' }, + me = { + help = 'Visa lokalt meddelande', + params = { + message = { name = 'message', help = 'Meddelande' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'sv' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/ta.lua b/resources/[core]/qb-core/locale/ta.lua new file mode 100644 index 0000000..3221ffa --- /dev/null +++ b/resources/[core]/qb-core/locale/ta.lua @@ -0,0 +1,132 @@ +local Translations = { + error = { + not_online = 'பிளேயர் ஆன்லைனில் இல்லை', + wrong_format = 'தவறான வடிவம்', + missing_args = 'ஒவ்வொரு வாதமும் உள்ளிடப்படவில்லை (x, y, z)', + missing_args2 = 'அனைத்து வாதங்களும் நிரப்பப்பட வேண்டும்!', + no_access = 'இந்த கட்டளைக்கு அனுமதி இல்லை', + company_too_poor = 'உங்கள் முதலாளி இப்போது ஏழை', + item_not_exist = 'பொருள் இல்லை', + too_heavy = 'இன்வெண்ட்டரி நிரம்பியது', + location_not_exist = 'இடம் இல்லை', + duplicate_license = '[QBCORE] - டூப்ளிகேட் ராக்ஸ்டார் உரிமம் கிடைத்தது', + no_valid_license = '[QBCORE] - சரியான ராக்ஸ்டார் உரிமம் இல்லை', + not_whitelisted = '[QBCORE] - இந்த சேவையகத்திற்கு நீங்கள் அனுமதிப்பட்டியலில் இல்லை', + server_already_open = 'சர்வர் ஏற்கனவே திறக்கப்பட்டுள்ளது', + server_already_closed = 'சர்வர் ஏற்கனவே மூடப்பட்டுள்ளது', + no_permission = 'இதற்கான அனுமதி உங்களிடம் இல்லை..', + no_waypoint = 'வழிப்பாதை அமைக்கப்படவில்லை.', + tp_error = 'டெலிபோர்ட் செய்யும் போது பிழை.', + connecting_database_error = '[QBCORE] - சேவையகத்துடன் இணைக்கும் போது தரவுத்தளப் பிழை ஏற்பட்டது. (SQL சர்வர் இயக்கத்தில் உள்ளதா?)', + connecting_database_timeout = '[QBCORE] - தரவுத்தளத்திற்கான இணைப்பு நேரம் முடிந்தது. (SQL சர்வர் இயக்கத்தில் உள்ளதா?)', + }, + success = { + server_opened = 'சர்வர் திறக்கப்பட்டது', + server_closed = 'சர்வர் மூடப்பட்டுள்ளது', + teleported_waypoint = 'வேபாயிண்டிற்கு டெலிபோர்ட் செய்யப்பட்டது.', + }, + info = { + received_paycheck = 'நீங்கள் உங்கள் சம்பளத்தை பெற்றுள்ளீர்கள் $%{value}', + job_info = 'பணி: %{value} | கிரேடு: %{value2} | கடமை: %{value3}', + gang_info = 'கும்பல் %{value} | கிரேடு: %{value2}', + on_duty = 'நீங்கள் இப்போது கடமையில் இருக்கிறீர்கள்!', + off_duty = 'நீங்கள் இப்போது கடமையிலிருந்து விடுபட்டுள்ளீர்கள்!', + checking_ban = 'வணக்கம் %s. நீங்கள் தடை செய்யப்பட்டுள்ளதா என்பதை நாங்கள் சரிபார்க்கிறோம்.', + join_server = 'வரவேற்கிறோம் %s to {Server Name}.', + checking_whitelisted = 'வணக்கம் %s. உங்கள் கொடுப்பனவை நாங்கள் சரிபார்க்கிறோம்.', + exploit_banned = 'நீங்கள் ஏமாற்றியதற்காக தடை செய்யப்பட்டீர்கள். மேலும் தகவலுக்கு எங்கள் முரண்பாட்டைச் சரிபார்க்கவும்: %{discord}', + exploit_dropped = 'சுரண்டலுக்காக உதைக்கப்பட்டீர்கள்', + }, + command = { + tp = { + help = 'TP டு பிளேயர் அல்லது Coords (நிர்வாகம் மட்டும்)', + params = { + x = { name = 'id/x', help = 'ID of வீரர் அல்லது X நிலை' }, + y = { name = 'y', help = 'Y position' }, + z = { name = 'z', help = 'Z position' }, + }, + }, + tpm = { help = 'TP டு மார்க்கர் (நிர்வாகம் மட்டும்)' }, + togglepvp = { help = 'சர்வரில் பிவிபியை நிலைமாற்று (நிர்வாகம் மட்டும்)' }, + addpermission = { + help = 'வீரர்களுக்கு அனுமதி கொடுங்கள் (கடவுள் மட்டும்)', + params = { + id = { name = 'id', help = 'ID ஆட்டக்காரர்' }, + permission = { name = 'permission', help = 'அனுமதி நிலை' }, + }, + }, + removepermission = { + help = 'பிளேயர் அனுமதிகளை அகற்று (கடவுள் மட்டும்)', + params = { + id = { name = 'id', help = 'ID ஆட்டக்காரர்' }, + permission = { name = 'permission', help = 'அனுமதி நிலை' }, + }, + }, + openserver = { help = 'அனைவருக்கும் சேவையகத்தைத் திறக்கவும் (நிர்வாகம் மட்டும்)' }, + closeserver = { + help = 'அனுமதி இல்லாதவர்களுக்கு சேவையகத்தை மூடு (நிர்வாகம் மட்டும்)', + params = { + reason = { name = 'reason', help = 'மூடுவதற்கான காரணம் (விரும்பினால்)' }, + }, + }, + car = { + help = 'ஸ்பான் வாகனம் (நிர்வாகம் மட்டும்)', + params = { + model = { name = 'model', help = 'வாகனத்தின் மாதிரி பெயர்' }, + }, + }, + dv = { help = 'வாகனத்தை நீக்கு (நிர்வாகம் மட்டும்)' }, + dvall = { help = 'அனைத்து வாகனங்களையும் நீக்கு (நிர்வாகம் மட்டும்)' }, + dvp = { help = 'அனைத்து பெட்களையும் நீக்கு (நிர்வாகம் மட்டும்)' }, + dvo = { help = 'அனைத்து பொருட்களையும் நீக்கு (நிர்வாகம் மட்டும்)' }, + givemoney = { + help = 'ஒரு வீரருக்கு பணம் கொடுங்கள் (நிர்வாகம் மட்டும்)', + params = { + id = { name = 'id', help = 'ID ஆட்டக்காரர்' }, + moneytype = { name = 'moneytype', help = 'பணத்தின் வகை (பணம், வங்கி, கிரிப்டோ)' }, + amount = { name = 'amount', help = 'பணத்தின் அளவு' }, + }, + }, + setmoney = { + help = 'வீரர்களுக்கான பணத் தொகையை அமைக்கவும் (நிர்வாகம் மட்டும்)', + params = { + id = { name = 'id', help = 'ID ஆட்டக்காரர்' }, + moneytype = { name = 'moneytype', help = 'பணத்தின் வகை (பணம், வங்கி, கிரிப்டோ)' }, + amount = { name = 'amount', help = 'பணத்தின் அளவு' }, + }, + }, + job = { help = 'உங்கள் வேலையைச் சரிபார்க்கவும்' }, + setjob = { + help = 'பிளேயர்ஸ் வேலையை அமைக்கவும் (நிர்வாகம் மட்டும்)', + params = { + id = { name = 'id', help = 'ID ஆட்டக்காரர்' }, + job = { name = 'job', help = 'வேலை பெயர்' }, + grade = { name = 'grade', help = 'வேலை தரம்' }, + }, + }, + gang = { help = 'உங்கள் கும்பலைச் சரிபார்க்கவும்' }, + setgang = { + help = 'பிளேயர்ஸ் கேங்கை அமைக்கவும் (நிர்வாகம் மட்டும்)', + params = { + id = { name = 'id', help = 'ID ஆட்டக்காரர்' }, + gang = { name = 'gang', help = 'கும்பல் பெயர்' }, + grade = { name = 'grade', help = 'கும்பல் நிலை' }, + }, + }, + ooc = { help = 'OOC அரட்டை செய்தி' }, + me = { + help = 'உள்ளூர் செய்தியைக் காட்டு', + params = { + message = { name = 'message', help = 'அனுப்ப வேண்டிய செய்தி' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'ta' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end \ No newline at end of file diff --git a/resources/[core]/qb-core/locale/th.lua b/resources/[core]/qb-core/locale/th.lua new file mode 100644 index 0000000..43bca61 --- /dev/null +++ b/resources/[core]/qb-core/locale/th.lua @@ -0,0 +1,129 @@ +local Translations = { + error = { + not_online = 'ผู้เล่นไม่ออนไลน์', + wrong_format = 'รูปแบบไม่ถูกต้อง', + missing_args = 'ตัวแปรที่ต้องการไม่ถูกกำหนด (x, y, z)', + missing_args2 = 'ต้องกำหนดตัวแปรทุกตัวให้ครบ!', + no_access = 'ไม่สามารถเข้าถึงคำสั่งนี้ได้', + company_too_poor = 'บริษัทของคุณกำลังจะล้มละลาย', + item_not_exist = 'ไม่มีไอเทมนี้', + too_heavy = 'กระเป๋าเต็มแล้ว', + location_not_exist = 'ไม่มีตำแหน่งนี้', + duplicate_license = 'พบใบอนุญาต Rockstar ซ้ำ', + no_valid_license = 'ไม่พบใบอนุญาต Rockstar ที่ถูกต้อง', + not_whitelisted = 'คุณไม่ได้รับอนุญาตให้เข้าใช้เซิร์ฟเวอร์นี้', + server_already_open = 'เซิร์ฟเวอร์ถูกเปิดแล้ว', + server_already_closed = 'เซิร์ฟเวอร์ถูกปิดแล้ว', + no_permission = 'คุณไม่ได้รับสิทธิ์ในการใช้คำสั่งนี้..', + no_waypoint = 'ไม่มีจุดเส้นทางที่ตั้ง', + tp_error = 'ข้อผิดพลาดขณะวาร์ป', + connecting_database_error = 'เกิดข้อผิดพลาดในการเชื่อมต่อกับเซิร์ฟเวอร์ (SQL server เปิดอยู่ไหม?)', + connecting_database_timeout = 'เชื่อมต่อกับฐานข้อมูลเกิด timeout (SQL server เปิดอยู่ไหม?' + }, + success = { + server_opened = 'เซิฟเวอร์เปิดแล้ว', + server_closed = 'เซิฟเวอร์เปิดแล้ว', + teleported_waypoint = 'เคลือนย้ายไปยังจุดหมาย.', + }, + info = { + received_paycheck = 'คุณได้รับเงินเดือน $%{value}', + job_info = 'อาชีพ: %{value} | ระดับ: %{value2} | กำลังปฏิบัติหน้าที่: %{value3}', + gang_info = 'แก๊ง: %{value} | ระดับ: %{value2}', + on_duty = 'คุณเริ่มปฏิบัติหน้าที่แล้ว!', + off_duty = 'คุณออกจากการปฏิบัติหน้าที่แล้ว!', + checking_ban = 'สวัสดี %s. เรากำลังตรวจสอบสถานะการโดนแบนของคุณ.', + join_server = 'ยินดีต้อนรับ %s เข้าสู่ {Server Name}.', + checking_whitelisted = 'สัวสดี %s. เรากำลังเช็ค whitelisted ของคุณ.', + exploit_banned = 'คุณโดนแบนจากการโกง. เข้าร่วม Discord สำหรับข้อมูลเพิ่มเติม: %{discord}', + exploit_dropped = 'คุณโดนเตะออกจากเซิฟเวอร์ เนื่องจากเหตุผลเกี่ยวกับการใช้โปรแกรมโกง', + }, + command = { + tp = { + help = 'เคลือนย้ายไปยัง ผู้เล่น หรือ ตำแหน่งพิกัด (สำหรับ Admin)', + params = { + x = { name = 'id/x', help = 'ไอดีของผู้เล่น หรือ พิกัด x'}, + y = { name = 'y', help = 'พิกัด y'}, + z = { name = 'z', help = 'พิกัด z'}, + }, + }, + tpm = { help = 'เคลือนย้ายไปบังจุดมาร์ค (สำหรับ Admin)' }, + togglepvp = { help = 'เปิดใช้ pvp ในเซิฟเวอร์ (สำหรับ Admin)' }, + addpermission = { + help = 'ให้สิทธิ์กับผู้เล่น (สำหรับ God)', + params = { + id = { name = 'id', help = 'ไอดีของผู้เล่น' }, + permission = { name = 'permission', help = 'ระดับของสิทธิ์' }, + }, + }, + removepermission = { + help = 'ลบสิทธิ์ของผู้เล่น (สำหรับ God)', + params = { + id = { name = 'id', help = 'ID of player' }, + permission = { name = 'permission', help = 'ระดับของสิทธิ์' }, + }, + }, + openserver = { help = 'เปิดเซิฟเวอร์สำหรับทุกคน (สำหรับ Admin)' }, + closeserver = { + help = 'ปิดเซิฟเวอร์สำหรับทุกคนที่ไม่มีสิทธิ์การเข้าถึง (สำหรับ Admin)', + params = { + reason = { name = 'reason', help = 'เหตุผลที่ปิด (ถ้ามี)' }, + }, + }, + car = { + help = 'เรียกยานพาหนะ (สำหรับ Admin)', + params = { + model = { name = 'model', help = 'ชื่อของยานพาหนะ' }, + }, + }, + dv = { help = 'ลบยานพาหนะ (สำหรับ Admin)' }, + givemoney = { + help = 'ให้เงินกับผู้เล่น (สำหรับ Admin)', + params = { + id = { name = 'id', help = 'ไอดีของผู้เล่น' }, + moneytype = { name = 'moneytype', help = 'ประเภทของเงิน (เงินสด, เงินฝาก, คริปโต)' }, + amount = { name = 'amount', help = 'จำนวนเงิน' }, + }, + }, + setmoney = { + help = 'กำหนดจำนวนเงินของผู้เล่น (สำหรับ Admin)', + params = { + id = { name = 'id', help = 'ไอดีของผู้เล่น' }, + moneytype = { name = 'moneytype', help = 'ประเภทของเงิน (เงินสด, เงินฝาก, คริปโต)' }, + amount = { name = 'amount', help = 'จำนวนเงิน' }, + }, + }, + job = { help = 'ตรวจสอบอาชีพของคุณ' }, + setjob = { + help = 'กำหนดอาชีพของผู้เล่น (สำหรับ Admin)', + params = { + id = { name = 'id', help = 'ไอดีของผู้เล่น' }, + job = { name = 'job', help = 'ชื่ออาชีพ่' }, + grade = { name = 'grade', help = 'ระดับ' }, + }, + }, + gang = { help = 'ตรวจสอบแก๊งของคุณ' }, + setgang = { + help = 'กำหนดแก๊งของผู้เล่น (สำหรับ Admin)', + params = { + id = { name = 'id', help = 'ไอดีของผู้เล่น' }, + gang = { name = 'gang', help = 'ชื่อแก๊ง' }, + grade = { name = 'grade', help = 'ระดับ' }, + }, + }, + ooc = { help = 'ข้อความ OOC' }, + me = { + help = 'แสดงข้อความใกล้เขียง', + params = { + message = { name = 'message', help = 'ข้อความที่จะส่ง' } + }, + }, + } +} + +if GetConvar('qb_locale', 'en') == 'th' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/tr.lua b/resources/[core]/qb-core/locale/tr.lua new file mode 100644 index 0000000..d123721 --- /dev/null +++ b/resources/[core]/qb-core/locale/tr.lua @@ -0,0 +1,133 @@ +local Translations = { + error = { + not_online = 'Oyuncu çevrimdışı', + wrong_format = 'Hatalı format', + missing_args = 'Tüm argümanlar girilmedi (x, y, z)', + missing_args2 = 'Tüm argümanlar doldurulmalıdır!', + no_access = 'Bu komut için erişiminiz yok', + company_too_poor = 'İşvereniniz iflas etti', + item_not_exist = 'Eşya mevcut değil', + too_heavy = 'Envanter çok dolu', + location_not_exist = 'Konum mevcut değil', + duplicate_license = '[QBCORE] - Aynı Rockstar Lisansı Bulundu', + no_valid_license = '[QBCORE] - Geçerli Rockstar Lisansı Bulunamadı', + not_whitelisted = '[QBCORE] - Bu sunucu için beyaz listedesiniz', + server_already_open = 'Sunucu zaten açık', + server_already_closed = 'Sunucu zaten kapalı', + no_permission = 'Bu işlem için yetkiniz yok...', + no_waypoint = 'Bir işaret noktası ayarlanmamış.', + tp_error = 'Taşınırken hata oluştu.', + ban_table_not_found = '[QBCORE] - Veritabanında yasaklılar tablosu bulunamadı. Lütfen SQL dosyasının doğru şekilde yüklendiğinden emin olun.', + connecting_database_error = '[QBCORE] - Veritabanına bağlanırken hata oluştu. SQL sunucusunun çalıştığından ve server.cfg dosyasındaki bilgilerin doğru olduğundan emin olun.', + connecting_database_timeout = '[QBCORE] - Veritabanı bağlantısı zaman aşımına uğradı. SQL sunucusunun çalıştığından ve server.cfg dosyasındaki bilgilerin doğru olduğundan emin olun.', + }, + success = { + server_opened = 'Sunucu açıldı', + server_closed = 'Sunucu kapandı', + teleported_waypoint = 'İşaret noktasına taşındınız.', + }, + info = { + received_paycheck = 'Maaşınızı $%{value} aldınız', + job_info = 'İş: %{value} | Seviye: %{value2} | Görevde: %{value3}', + gang_info = 'Çete: %{value} | Seviye: %{value2}', + on_duty = 'Artık görevdeyiniz!', + off_duty = 'Artık görev dışında oldunuz!', + checking_ban = 'Merhaba %s. Yasaklı olup olmadığınızı kontrol ediyoruz.', + join_server = 'Hoşgeldiniz %s, {Sunucu Adı}\'na.', + checking_whitelisted = 'Merhaba %s. İzin durumunuzu kontrol ediyoruz.', + exploit_banned = 'Hile yaptığınız için yasaklandınız. Daha fazla bilgi için Discord\'umuza göz atın: %{discord}', + exploit_dropped = 'Hile yapmaktan dolayı sunucudan atıldınız', + }, + command = { + tp = { + help = 'Oyuncuya veya Koordinatlara TP (Sadece Admin)', + params = { + x = { name = 'id/x', help = 'Oyuncu ID\'si veya X konumu' }, + y = { name = 'y', help = 'Y konumu' }, + z = { name = 'z', help = 'Z konumu' }, + }, + }, + tpm = { help = 'İşaret noktasına TP (Sadece Admin)' }, + togglepvp = { help = 'Sunucuda PVP modunu aç/kapat (Sadece Admin)' }, + addpermission = { + help = 'Oyuncuya Yetki Ver (Tanrı Yetkisi)', + params = { + id = { name = 'id', help = 'Oyuncu ID\'si' }, + permission = { name = 'permission', help = 'Yetki seviyesi' }, + }, + }, + removepermission = { + help = 'Oyuncudan Yetki Al (Tanrı Yetkisi)', + params = { + id = { name = 'id', help = 'Oyuncu ID\'si' }, + permission = { name = 'permission', help = 'Yetki seviyesi' }, + }, + }, + openserver = { help = 'Sunucuyu herkes için aç (Sadece Admin)' }, + closeserver = { + help = 'Sunucuyu yetkisi olmayanlar için kapat (Sadece Admin)', + params = { + reason = { name = 'reason', help = 'Kapanma nedeni (isteğe bağlı)' }, + }, + }, + car = { + help = 'Araç Spawn Et (Sadece Admin)', + params = { + model = { name = 'model', help = 'Araç model adı' }, + }, + }, + dv = { help = 'Aracı Sil (Sadece Admin)' }, + dvall = { help = 'Tüm Araçları Sil (Sadece Admin)' }, + dvp = { help = 'Tüm Pedleri Sil (Sadece Admin)' }, + dvo = { help = 'Tüm Objeleri Sil (Sadece Admin)' }, + givemoney = { + help = 'Bir Oyuncuya Para Ver (Sadece Admin)', + params = { + id = { name = 'id', help = 'Oyuncu ID\'si' }, + moneytype = { name = 'moneytype', help = 'Para türü (nakit, banka, kripto)' }, + amount = { name = 'amount', help = 'Verilecek para miktarı' }, + }, + }, + setmoney = { + help = 'Oyuncunun Para Miktarını Ayarla (Sadece Admin)', + params = { + id = { name = 'id', help = 'Oyuncu ID\'si' }, + moneytype = { name = 'moneytype', help = 'Para türü (nakit, banka, kripto)' }, + amount = { name = 'amount', help = 'Para miktarı' }, + }, + }, + job = { help = 'İşinizi Kontrol Edin' }, + setjob = { + help = 'Bir Oyuncunun İşini Ayarla (Sadece Admin)', + params = { + id = { name = 'id', help = 'Oyuncu ID\'si' }, + job = { name = 'job', help = 'İş adı' }, + grade = { name = 'grade', help = 'İş seviyesi' }, + }, + }, + gang = { help = 'Çetenizi Kontrol Edin' }, + setgang = { + help = 'Bir Oyuncunun Çetesini Ayarla (Sadece Admin)', + params = { + id = { name = 'id', help = 'Oyuncu ID\'si' }, + gang = { name = 'gang', help = 'Çete adı' }, + grade = { name = 'grade', help = 'Çete seviyesi' }, + }, + }, + ooc = { help = 'OOC Sohbet Mesajı' }, + me = { + help = 'Yerel mesaj gönder', + params = { + message = { name = 'message', help = 'Gönderilecek mesaj' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'tr' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/locale/ua.lua b/resources/[core]/qb-core/locale/ua.lua new file mode 100644 index 0000000..ee97ddc --- /dev/null +++ b/resources/[core]/qb-core/locale/ua.lua @@ -0,0 +1,131 @@ +local Translations = { + error = { + not_online = 'Гравець не в мережі', + wrong_format = 'Невірний формат', + missing_args = 'Не введені всі аргументи (x, y, z)', + missing_args2 = 'Усі аргументи повинні бути заповнені!', + no_access = 'Немає доступу до цієї команди', + company_too_poor = 'Ваш роботодавець банкрут', + item_not_exist = 'Предмет не існує', + too_heavy = 'Інвентар переповнено', + location_not_exist = 'Локація не існує', + duplicate_license = '[QBCORE] - Знайдено дубльовану ліцензію Rockstar', + no_valid_license = '[QBCORE] - Не знайдено дійсної ліцензії Rockstar', + not_whitelisted = '[QBCORE] - Ви не у білому списку цього сервера', + server_already_open = 'Сервер вже відкритий', + server_already_closed = 'Сервер вже закритий', + no_permission = 'У вас немає дозволу на це..', + no_waypoint = 'Маршрут не встановлений.', + tp_error = 'Помилка при телепортації.', + ban_table_not_found = '[QBCORE] - Не вдалося знайти таблицю банів у базі даних. Переконайтеся, що SQL файл імпортовано правильно.', + connecting_database_error = '[QBCORE] - Сталася помилка при підключенні до бази даних. Переконайтеся, що SQL сервер працює і дані в файлі server.cfg вірні.', + connecting_database_timeout = '[QBCORE] - Підключення до бази даних вичерпало час. Переконайтеся, що SQL сервер працює і дані в файлі server.cfg вірні.', + }, + success = { + server_opened = 'Сервер відкрито', + server_closed = 'Сервер закрито', + teleported_waypoint = 'Телепортовано до маршруту.', + }, + info = { + received_paycheck = 'Ви отримали зарплату у розмірі $%{value}', + job_info = 'Робота: %{value} | Клас: %{value2} | Чергування: %{value3}', + gang_info = 'Банда: %{value} | Клас: %{value2}', + on_duty = 'Ви на чергуванні!', + off_duty = 'Ви не на чергуванням!', + checking_ban = 'Привіт %s. Ми перевіряємо, чи ви забанені.', + join_server = 'Ласкаво просимо %s на {Server Name}.', + checking_whitelisted = 'Привіт %s. Ми перевіряємо ваш дозвіл.', + exploit_banned = 'Ви забанені за шахрайство. Перевірте наш Discord для додаткової інформації: %{discord}', + exploit_dropped = 'Ви були вигнані за експлуатацію', + }, + command = { + tp = { + help = 'Телепортуватися до гравця або координат (тільки адміністратори)', + params = { + x = { name = 'id/x', help = 'ID гравця або X координата' }, + y = { name = 'y', help = 'Y координата' }, + z = { name = 'z', help = 'Z координата' }, + }, + }, + tpm = { help = 'Телепортуватися до маркера (тільки адміністратори)' }, + togglepvp = { help = 'Включити/вимкнути PVP на сервері (тільки адміністратори)' }, + addpermission = { + help = 'Надати гравцю дозволи (тільки Бог)', + params = { + id = { name = 'id', help = 'ID гравця' }, + permission = { name = 'permission', help = 'Рівень дозволу' }, + }, + }, + removepermission = { + help = 'Видалити дозволи у гравця (тільки Бог)', + params = { + id = { name = 'id', help = 'ID гравця' }, + permission = { name = 'permission', help = 'Рівень дозволу' }, + }, + }, + openserver = { help = 'Відкрити сервер для всіх (тільки адміністратори)' }, + closeserver = { + help = 'Закрити сервер для людей без дозволів (тільки адміністратори)', + params = { + reason = { name = 'reason', help = 'Причина закриття (необов\'язково)' }, + }, + }, + car = { + help = 'Спавнити транспорт (тільки адміністратори)', + params = { + model = { name = 'model', help = 'Назва моделі транспортного засобу' }, + }, + }, + dv = { help = 'Видалити транспорт (тільки адміністратори)' }, + dvall = { help = 'Видалити всі транспортні засоби (тільки адміністратори)' }, + dvp = { help = 'Видалити всіх NPC (тільки адміністратори)' }, + dvo = { help = 'Видалити всі об\'єкти (тільки адміністратори)' }, + givemoney = { + help = 'Дати гроші гравцю (тільки адміністратори)', + params = { + id = { name = 'id', help = 'ID гравця' }, + moneytype = { name = 'moneytype', help = 'Тип грошей (готівка, банк, криптовалюта)' }, + amount = { name = 'amount', help = 'Сума грошей' }, + }, + }, + setmoney = { + help = 'Встановити кількість грошей у гравця (тільки адміністратори)', + params = { + id = { name = 'id', help = 'ID гравця' }, + moneytype = { name = 'moneytype', help = 'Тип грошей (готівка, банк, криптовалюта)' }, + amount = { name = 'amount', help = 'Сума грошей' }, + }, + }, + job = { help = 'Перевірити вашу роботу' }, + setjob = { + help = 'Встановити роботу гравця (тільки адміністратори)', + params = { + id = { name = 'id', help = 'ID гравця' }, + job = { name = 'job', help = 'Назва роботи' }, + grade = { name = 'grade', help = 'Клас роботи' }, + }, + }, + gang = { help = 'Перевірити вашу банду' }, + setgang = { + help = 'Встановити банду гравця (тільки адміністратори)', + params = { + id = { name = 'id', help = 'ID гравця' }, + gang = { name = 'gang', help = 'Назва банди' }, + grade = { name = 'grade', help = 'Клас банди' }, + }, + }, + ooc = { help = 'Повідомлення у OOC чаті' }, + me = { + help = 'Показати локальне повідомлення', + params = { + message = { name = 'message', help = 'Повідомлення для відправлення' } + }, + }, + }, +} +if GetConvar('qb_locale', 'en') == 'ua' then + Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true + }) +end diff --git a/resources/[core]/qb-core/locale/vn.lua b/resources/[core]/qb-core/locale/vn.lua new file mode 100644 index 0000000..507ef1b --- /dev/null +++ b/resources/[core]/qb-core/locale/vn.lua @@ -0,0 +1,129 @@ +local Translations = { + error = { + not_online = 'Người chơi không trực tuyến', + wrong_format = 'Định dạng không chính xác', + missing_args = 'Chưa nhập đủ các số (x, y, z)', + missing_args2 = 'Tất cả các đối số phải được điền vào!', + no_access = 'không có quyền sử dụng lệnh này', + company_too_poor = 'Công ty của bạn đã phá sản', + item_not_exist = 'Vật phẩm không tồn tại', + too_heavy = 'kho đồ đã đầy', + location_not_exist = 'Vị trí không tồn tại', + duplicate_license = 'Đã tìm thấy giấy phép Rockstar trùng lặp', + no_valid_license = 'Không tìm thấy giấy phép Rockstar hợp lệ', + not_whitelisted = 'Bạn không nằm trong danh sách cho phép của máy chủ này', + server_already_open = 'Máy chủ đã mở cửa', + server_already_closed = 'Máy chủ đã đóng cửa', + no_permission = 'Bạn không có quyền để làm việc này', + no_waypoint = 'Không có Waypoint nào được đặt.', + tp_error = 'Lỗi trong lúc dịch chuyển.', + connecting_database_error = 'Đã xảy ra lỗi trong lúc kết nối đến máy chủ CSDL. (Máy chủ SQL đã mở?)', + connecting_database_timeout = 'Đã hết thời gian kết nối tới CSDL. (Máy chủ SQL đã mở?)', + }, + success = { + server_opened = 'Đã mở máy chủ', + server_closed = 'Đã đóng máy chủ', + teleported_waypoint = 'Đã dịch chuyển tới Waypoint.', + }, + info = { + received_paycheck = 'Bạn nhận được số tiền thanh toán là $%{value}', + job_info = 'Công việc: %{value} | Cấp độ: %{value2} | Làm việc: %{value3}', + gang_info = 'Băng đảng: %{value} | Cấp độ: %{value2}', + on_duty = 'Bạn đã sẵn sàng làm viêc!', + off_duty = 'Bạn đã dừng làm việc!', + checking_ban = 'Xin chào %s. Chúng tôi đang kiểm tra xem bạn có bị cấm không.', + join_server = 'Chào mừng %s đã đến với {Server Name}.', + checking_whitelisted = 'Xin chào %s. Chúng tôi đang kiểm tra trợ cấp của bạn.', + exploit_banned = 'Bạn đã bị cấm vì gian lận. Kiểm tra Discord của chúng tôi để biết thêm thông tin: %{discord}', + exploit_dropped = 'Bạn đã bị đá vì lợi dụng lỗi', + }, + command = { + tp = { + help = 'Dịch chuyển đến Người chơi hoặc Tọa độ (Admin)', + params = { + x = { name = 'id/x', help = 'ID người chơi hoặc Tọa độ X'}, + y = { name = 'y', help = 'Tọa độ Y'}, + z = { name = 'z', help = 'Tọa độ Z'}, + }, + }, + tpm = { help = 'Dịch chuyển đến điểm Đánh dấu (Admin)' }, + togglepvp = { help = 'Bật/Tắt PVP trên máy chủ (Admin)' }, + addpermission = { + help = 'Thêm quyền cho người chơi (God)', + params = { + id = { name = 'id', help = 'ID người chơi' }, + permission = { name = 'permission', help = 'Cấp độ quyền' }, + }, + }, + removepermission = { + help = 'Xóa quyền của người chơi (God)', + params = { + id = { name = 'id', help = 'ID người chơi' }, + permission = { name = 'permission', help = 'Cấp độ quyền' }, + }, + }, + openserver = { help = 'Mở cửa máy chủ (Admin)' }, + closeserver = { + help = 'Đóng máy chủ, chỉ cho phép người chơi có quyền mới được tham gia (Admin)', + params = { + reason = { name = 'reason', help = 'Lý do đóng máy chủ (tùy chọn)' }, + }, + }, + car = { + help = 'Triệu hồi phương tiện (Admin)', + params = { + model = { name = 'model', help = 'Tên kiểu phương tiện' }, + }, + }, + dv = { help = 'Xóa phương tiện (Admin)' }, + givemoney = { + help = 'Cho tiền người chơi (Admin)', + params = { + id = { name = 'id', help = 'ID người chơi' }, + moneytype = { name = 'moneytype', help = 'Loại tiền (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Số tiền' }, + }, + }, + setmoney = { + help = 'Đặt số tiền của người chơi (Admin)', + params = { + id = { name = 'id', help = 'ID người chơi' }, + moneytype = { name = 'moneytype', help = 'Loại tiền (cash, bank, crypto)' }, + amount = { name = 'amount', help = 'Số tiền' }, + }, + }, + job = { help = 'Kiểm tra công việc của bạn' }, + setjob = { + help = 'Đặt công việc cho ngưởi chơi (Admin)', + params = { + id = { name = 'id', help = 'ID người chơi' }, + job = { name = 'job', help = 'Tên công việc' }, + grade = { name = 'grade', help = 'Cấp độ công việc' }, + }, + }, + gang = { help = 'Kiểm tra băng đảng của bạn' }, + setgang = { + help = 'Chỉ định băng đảng cho người chơi (Admin)', + params = { + id = { name = 'id', help = 'ID người chơi' }, + gang = { name = 'gang', help = 'Tên băng đảng' }, + grade = { name = 'grade', help = 'Cấp độ chức vụ' }, + }, + }, + ooc = { help = 'Tin nhắn trò chuyện OOC' }, + me = { + help = 'Hiển thị tin nhắn cục bộ', + params = { + message = { name = 'message', help = 'Tin nhắn để gửi' } + }, + }, + }, +} + +if GetConvar('qb_locale', 'en') == 'vn' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/qb-core/server/commands.lua b/resources/[core]/qb-core/server/commands.lua new file mode 100644 index 0000000..368736f --- /dev/null +++ b/resources/[core]/qb-core/server/commands.lua @@ -0,0 +1,323 @@ +QBCore.Commands = {} +QBCore.Commands.List = {} +QBCore.Commands.IgnoreList = { -- Ignore old perm levels while keeping backwards compatibility + ['god'] = true, -- We don't need to create an ace because god is allowed all commands + ['user'] = true -- We don't need to create an ace because builtin.everyone +} + +CreateThread(function() -- Add ace to node for perm checking + local permissions = QBCore.Config.Server.Permissions + for i = 1, #permissions do + local permission = permissions[i] + ExecuteCommand(('add_ace qbcore.%s %s allow'):format(permission, permission)) + end +end) + +-- Register & Refresh Commands + +function QBCore.Commands.Add(name, help, arguments, argsrequired, callback, permission, ...) + local restricted = true -- Default to restricted for all commands + if not permission then permission = 'user' end -- some commands don't pass permission level + if permission == 'user' then restricted = false end -- allow all users to use command + + RegisterCommand(name, function(source, args, rawCommand) -- Register command within fivem + if argsrequired and #args < #arguments then + return TriggerClientEvent('chat:addMessage', source, { + color = { 255, 0, 0 }, + multiline = true, + args = { 'System', Lang:t('error.missing_args2') } + }) + end + callback(source, args, rawCommand) + end, restricted) + + local extraPerms = ... and table.pack(...) or nil + if extraPerms then + extraPerms[extraPerms.n + 1] = permission -- The `n` field is the number of arguments in the packed table + extraPerms.n += 1 + permission = extraPerms + for i = 1, permission.n do + if not QBCore.Commands.IgnoreList[permission[i]] then -- only create aces for extra perm levels + ExecuteCommand(('add_ace qbcore.%s command.%s allow'):format(permission[i], name)) + end + end + permission.n = nil + else + permission = tostring(permission:lower()) + if not QBCore.Commands.IgnoreList[permission] then -- only create aces for extra perm levels + ExecuteCommand(('add_ace qbcore.%s command.%s allow'):format(permission, name)) + end + end + + QBCore.Commands.List[name:lower()] = { + name = name:lower(), + permission = permission, + help = help, + arguments = arguments, + argsrequired = argsrequired, + callback = callback + } +end + +function QBCore.Commands.Refresh(source) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local suggestions = {} + if Player then + for command, info in pairs(QBCore.Commands.List) do + local hasPerm = IsPlayerAceAllowed(tostring(src), 'command.' .. command) + if hasPerm then + suggestions[#suggestions + 1] = { + name = '/' .. command, + help = info.help, + params = info.arguments + } + else + TriggerClientEvent('chat:removeSuggestion', src, '/' .. command) + end + end + TriggerClientEvent('chat:addSuggestions', src, suggestions) + end +end + +-- Teleport +QBCore.Commands.Add('tp', Lang:t('command.tp.help'), { { name = Lang:t('command.tp.params.x.name'), help = Lang:t('command.tp.params.x.help') }, { name = Lang:t('command.tp.params.y.name'), help = Lang:t('command.tp.params.y.help') }, { name = Lang:t('command.tp.params.z.name'), help = Lang:t('command.tp.params.z.help') } }, false, function(source, args) + if args[1] and not args[2] and not args[3] then + if tonumber(args[1]) then + local target = GetPlayerPed(tonumber(args[1])) + if target ~= 0 then + local coords = GetEntityCoords(target) + TriggerClientEvent('QBCore:Command:TeleportToPlayer', source, coords) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.not_online'), 'error') + end + else + local location = QBShared.Locations[args[1]] + if location then + TriggerClientEvent('QBCore:Command:TeleportToCoords', source, location.x, location.y, location.z, location.w) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.location_not_exist'), 'error') + end + end + else + if args[1] and args[2] and args[3] then + local x = tonumber((args[1]:gsub(',', ''))) + .0 + local y = tonumber((args[2]:gsub(',', ''))) + .0 + local z = tonumber((args[3]:gsub(',', ''))) + .0 + local heading = args[4] and tonumber((args[4]:gsub(',', ''))) + .0 or false + if x ~= 0 and y ~= 0 and z ~= 0 then + TriggerClientEvent('QBCore:Command:TeleportToCoords', source, x, y, z, heading) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.wrong_format'), 'error') + end + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.missing_args'), 'error') + end + end +end, 'admin') + +QBCore.Commands.Add('tpm', Lang:t('command.tpm.help'), {}, false, function(source) + TriggerClientEvent('QBCore:Command:GoToMarker', source) +end, 'admin') + +QBCore.Commands.Add('togglepvp', Lang:t('command.togglepvp.help'), {}, false, function() + QBCore.Config.Server.PVP = not QBCore.Config.Server.PVP + TriggerClientEvent('QBCore:Client:PvpHasToggled', -1, QBCore.Config.Server.PVP) +end, 'admin') + +-- Permissions + +QBCore.Commands.Add('addpermission', Lang:t('command.addpermission.help'), { { name = Lang:t('command.addpermission.params.id.name'), help = Lang:t('command.addpermission.params.id.help') }, { name = Lang:t('command.addpermission.params.permission.name'), help = Lang:t('command.addpermission.params.permission.help') } }, true, function(source, args) + local Player = QBCore.Functions.GetPlayer(tonumber(args[1])) + local permission = tostring(args[2]):lower() + if Player then + QBCore.Functions.AddPermission(Player.PlayerData.source, permission) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.not_online'), 'error') + end +end, 'god') + +QBCore.Commands.Add('removepermission', Lang:t('command.removepermission.help'), { { name = Lang:t('command.removepermission.params.id.name'), help = Lang:t('command.removepermission.params.id.help') }, { name = Lang:t('command.removepermission.params.permission.name'), help = Lang:t('command.removepermission.params.permission.help') } }, true, function(source, args) + local Player = QBCore.Functions.GetPlayer(tonumber(args[1])) + local permission = tostring(args[2]):lower() + if Player then + QBCore.Functions.RemovePermission(Player.PlayerData.source, permission) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.not_online'), 'error') + end +end, 'god') + +-- Open & Close Server + +QBCore.Commands.Add('openserver', Lang:t('command.openserver.help'), {}, false, function(source) + if not QBCore.Config.Server.Closed then + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.server_already_open'), 'error') + return + end + if QBCore.Functions.HasPermission(source, 'admin') then + QBCore.Config.Server.Closed = false + TriggerClientEvent('QBCore:Notify', source, Lang:t('success.server_opened'), 'success') + else + QBCore.Functions.Kick(source, Lang:t('error.no_permission'), nil, nil) + end +end, 'admin') + +QBCore.Commands.Add('closeserver', Lang:t('command.closeserver.help'), { { name = Lang:t('command.closeserver.params.reason.name'), help = Lang:t('command.closeserver.params.reason.help') } }, false, function(source, args) + if QBCore.Config.Server.Closed then + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.server_already_closed'), 'error') + return + end + if QBCore.Functions.HasPermission(source, 'admin') then + local reason = args[1] or 'No reason specified' + QBCore.Config.Server.Closed = true + QBCore.Config.Server.ClosedReason = reason + for k in pairs(QBCore.Players) do + if not QBCore.Functions.HasPermission(k, QBCore.Config.Server.WhitelistPermission) then + QBCore.Functions.Kick(k, reason, nil, nil) + end + end + TriggerClientEvent('QBCore:Notify', source, Lang:t('success.server_closed'), 'success') + else + QBCore.Functions.Kick(source, Lang:t('error.no_permission'), nil, nil) + end +end, 'admin') + +-- Vehicle + +QBCore.Commands.Add('car', Lang:t('command.car.help'), { { name = Lang:t('command.car.params.model.name'), help = Lang:t('command.car.params.model.help') } }, true, function(source, args) + TriggerClientEvent('QBCore:Command:SpawnVehicle', source, args[1]) +end, 'admin') + +QBCore.Commands.Add('dv', Lang:t('command.dv.help'), {}, false, function(source) + TriggerClientEvent('QBCore:Command:DeleteVehicle', source) +end, 'admin') + +QBCore.Commands.Add('dvall', Lang:t('command.dvall.help'), {}, false, function() + local vehicles = GetAllVehicles() + for _, vehicle in ipairs(vehicles) do + DeleteEntity(vehicle) + end +end, 'admin') + +-- Peds + +QBCore.Commands.Add('dvp', Lang:t('command.dvp.help'), {}, false, function() + local peds = GetAllPeds() + for _, ped in ipairs(peds) do + DeleteEntity(ped) + end +end, 'admin') + +-- Objects + +QBCore.Commands.Add('dvo', Lang:t('command.dvo.help'), {}, false, function() + local objects = GetAllObjects() + for _, object in ipairs(objects) do + DeleteEntity(object) + end +end, 'admin') + +-- Money + +QBCore.Commands.Add('givemoney', Lang:t('command.givemoney.help'), { { name = Lang:t('command.givemoney.params.id.name'), help = Lang:t('command.givemoney.params.id.help') }, { name = Lang:t('command.givemoney.params.moneytype.name'), help = Lang:t('command.givemoney.params.moneytype.help') }, { name = Lang:t('command.givemoney.params.amount.name'), help = Lang:t('command.givemoney.params.amount.help') } }, true, function(source, args) + local Player = QBCore.Functions.GetPlayer(tonumber(args[1])) + if Player then + Player.Functions.AddMoney(tostring(args[2]), tonumber(args[3]), 'Admin give money') + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.not_online'), 'error') + end +end, 'admin') + +QBCore.Commands.Add('setmoney', Lang:t('command.setmoney.help'), { { name = Lang:t('command.setmoney.params.id.name'), help = Lang:t('command.setmoney.params.id.help') }, { name = Lang:t('command.setmoney.params.moneytype.name'), help = Lang:t('command.setmoney.params.moneytype.help') }, { name = Lang:t('command.setmoney.params.amount.name'), help = Lang:t('command.setmoney.params.amount.help') } }, true, function(source, args) + local Player = QBCore.Functions.GetPlayer(tonumber(args[1])) + if Player then + Player.Functions.SetMoney(tostring(args[2]), tonumber(args[3])) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.not_online'), 'error') + end +end, 'admin') + +-- Job + +QBCore.Commands.Add('job', Lang:t('command.job.help'), {}, false, function(source) + local PlayerJob = QBCore.Functions.GetPlayer(source).PlayerData.job + TriggerClientEvent('QBCore:Notify', source, Lang:t('info.job_info', { value = PlayerJob.label, value2 = PlayerJob.grade.name, value3 = PlayerJob.onduty })) +end, 'user') + +QBCore.Commands.Add('setjob', Lang:t('command.setjob.help'), { { name = Lang:t('command.setjob.params.id.name'), help = Lang:t('command.setjob.params.id.help') }, { name = Lang:t('command.setjob.params.job.name'), help = Lang:t('command.setjob.params.job.help') }, { name = Lang:t('command.setjob.params.grade.name'), help = Lang:t('command.setjob.params.grade.help') } }, true, function(source, args) + local Player = QBCore.Functions.GetPlayer(tonumber(args[1])) + if Player then + Player.Functions.SetJob(tostring(args[2]), tonumber(args[3])) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.not_online'), 'error') + end +end, 'admin') + +-- Gang + +QBCore.Commands.Add('gang', Lang:t('command.gang.help'), {}, false, function(source) + local PlayerGang = QBCore.Functions.GetPlayer(source).PlayerData.gang + TriggerClientEvent('QBCore:Notify', source, Lang:t('info.gang_info', { value = PlayerGang.label, value2 = PlayerGang.grade.name })) +end, 'user') + +QBCore.Commands.Add('setgang', Lang:t('command.setgang.help'), { { name = Lang:t('command.setgang.params.id.name'), help = Lang:t('command.setgang.params.id.help') }, { name = Lang:t('command.setgang.params.gang.name'), help = Lang:t('command.setgang.params.gang.help') }, { name = Lang:t('command.setgang.params.grade.name'), help = Lang:t('command.setgang.params.grade.help') } }, true, function(source, args) + local Player = QBCore.Functions.GetPlayer(tonumber(args[1])) + if Player then + Player.Functions.SetGang(tostring(args[2]), tonumber(args[3])) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.not_online'), 'error') + end +end, 'admin') + +-- Out of Character Chat +QBCore.Commands.Add('ooc', Lang:t('command.ooc.help'), {}, false, function(source, args) + local message = table.concat(args, ' ') + local Players = QBCore.Functions.GetPlayers() + local Player = QBCore.Functions.GetPlayer(source) + local playerCoords = GetEntityCoords(GetPlayerPed(source)) + for _, v in pairs(Players) do + if v == source then + TriggerClientEvent('chat:addMessage', v, { + color = QBCore.Config.Commands.OOCColor, + multiline = true, + args = { 'OOC | ' .. GetPlayerName(source), message } + }) + elseif #(playerCoords - GetEntityCoords(GetPlayerPed(v))) < 20.0 then + TriggerClientEvent('chat:addMessage', v, { + color = QBCore.Config.Commands.OOCColor, + multiline = true, + args = { 'OOC | ' .. GetPlayerName(source), message } + }) + elseif QBCore.Functions.HasPermission(v, 'admin') then + if QBCore.Functions.IsOptin(v) then + TriggerClientEvent('chat:addMessage', v, { + color = QBCore.Config.Commands.OOCColor, + multiline = true, + args = { 'Proximity OOC | ' .. GetPlayerName(source), message } + }) + TriggerEvent('qb-log:server:CreateLog', 'ooc', 'OOC', 'white', '**' .. GetPlayerName(source) .. '** (CitizenID: ' .. Player.PlayerData.citizenid .. ' | ID: ' .. source .. ') **Message:** ' .. message, false) + end + end + end +end, 'user') + +-- Me command + +QBCore.Commands.Add('me', Lang:t('command.me.help'), { { name = Lang:t('command.me.params.message.name'), help = Lang:t('command.me.params.message.help') } }, false, function(source, args) + if #args < 1 then + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.missing_args2'), 'error') + return + end + local ped = GetPlayerPed(source) + local pCoords = GetEntityCoords(ped) + local msg = table.concat(args, ' '):gsub('[~<].-[>~]', '') + local Players = QBCore.Functions.GetPlayers() + for i = 1, #Players do + local Player = Players[i] + local target = GetPlayerPed(Player) + local tCoords = GetEntityCoords(target) + if target == ped or #(pCoords - tCoords) < 20 then + TriggerClientEvent('QBCore:Command:ShowMe3D', Player, source, msg) + end + end +end, 'user') diff --git a/resources/[core]/qb-core/server/debug.lua b/resources/[core]/qb-core/server/debug.lua new file mode 100644 index 0000000..8ec63e6 --- /dev/null +++ b/resources/[core]/qb-core/server/debug.lua @@ -0,0 +1,44 @@ +local function tPrint(tbl, indent) + indent = indent or 0 + if type(tbl) == 'table' then + for k, v in pairs(tbl) do + local tblType = type(v) + local formatting = ('%s ^3%s:^0'):format(string.rep(' ', indent), k) + + if tblType == 'table' then + print(formatting) + tPrint(v, indent + 1) + elseif tblType == 'boolean' then + print(('%s^1 %s ^0'):format(formatting, v)) + elseif tblType == 'function' then + print(('%s^9 %s ^0'):format(formatting, v)) + elseif tblType == 'number' then + print(('%s^5 %s ^0'):format(formatting, v)) + elseif tblType == 'string' then + print(("%s ^2'%s' ^0"):format(formatting, v)) + else + print(('%s^2 %s ^0'):format(formatting, v)) + end + end + else + print(('%s ^0%s'):format(string.rep(' ', indent), tbl)) + end +end + +RegisterServerEvent('QBCore:DebugSomething', function(tbl, indent, resource) + print(('\x1b[4m\x1b[36m[ %s : DEBUG]\x1b[0m'):format(resource)) + tPrint(tbl, indent) + print('\x1b[4m\x1b[36m[ END DEBUG ]\x1b[0m') +end) + +function QBCore.Debug(tbl, indent) + TriggerEvent('QBCore:DebugSomething', tbl, indent, GetInvokingResource() or 'qb-core') +end + +function QBCore.ShowError(resource, msg) + print('\x1b[31m[' .. resource .. ':ERROR]\x1b[0m ' .. msg) +end + +function QBCore.ShowSuccess(resource, msg) + print('\x1b[32m[' .. resource .. ':LOG]\x1b[0m ' .. msg) +end diff --git a/resources/[core]/qb-core/server/events.lua b/resources/[core]/qb-core/server/events.lua new file mode 100644 index 0000000..00b0fa5 --- /dev/null +++ b/resources/[core]/qb-core/server/events.lua @@ -0,0 +1,285 @@ +-- Event Handler + +AddEventHandler('chatMessage', function(_, _, message) + if string.sub(message, 1, 1) == '/' then + CancelEvent() + return + end +end) + +AddEventHandler('playerDropped', function(reason) + local src = source + if not QBCore.Players[src] then return end + local Player = QBCore.Players[src] + TriggerEvent('qb-log:server:CreateLog', 'joinleave', 'Dropped', 'red', '**' .. GetPlayerName(src) .. '** (' .. Player.PlayerData.license .. ') left..' .. '\n **Reason:** ' .. reason) + TriggerEvent('QBCore:Server:PlayerDropped', Player) + Player.Functions.Save() + QBCore.Player_Buckets[Player.PlayerData.license] = nil + QBCore.Players[src] = nil +end) + +AddEventHandler("onResourceStop", function(resName) + for i,v in pairs(QBCore.UsableItems) do + if v.resource == resName then + QBCore.UsableItems[i] = nil + end + end +end) + +-- Player Connecting +local readyFunction = MySQL.ready +local databaseConnected, bansTableExists = readyFunction == nil, readyFunction == nil +if readyFunction ~= nil then + MySQL.ready(function() + databaseConnected = true + + local DatabaseInfo = QBCore.Functions.GetDatabaseInfo() + if not DatabaseInfo or not DatabaseInfo.exists then return end + + local result = MySQL.query.await('SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_NAME = "bans";', {DatabaseInfo.database}) + if result and result[1] then + bansTableExists = true + end + end) +end + +local function onPlayerConnecting(name, _, deferrals) + local src = source + deferrals.defer() + + if QBCore.Config.Server.Closed and not IsPlayerAceAllowed(src, 'qbadmin.join') then + return deferrals.done(QBCore.Config.Server.ClosedReason) + end + + if not databaseConnected then + return deferrals.done(Lang:t('error.connecting_database_error')) + end + + if QBCore.Config.Server.Whitelist then + Wait(0) + deferrals.update(string.format(Lang:t('info.checking_whitelisted'), name)) + if not QBCore.Functions.IsWhitelisted(src) then + return deferrals.done(Lang:t('error.not_whitelisted')) + end + end + + Wait(0) + deferrals.update(string.format('Hello %s. Your license is being checked', name)) + local license = QBCore.Functions.GetIdentifier(src, 'license') + + if not license then + return deferrals.done(Lang:t('error.no_valid_license')) + elseif QBCore.Config.Server.CheckDuplicateLicense and QBCore.Functions.IsLicenseInUse(license) then + return deferrals.done(Lang:t('error.duplicate_license')) + end + + Wait(0) + deferrals.update(string.format(Lang:t('info.checking_ban'), name)) + + if not bansTableExists then + return deferrals.done(Lang:t('error.ban_table_not_found')) + end + + local success, isBanned, reason = pcall(QBCore.Functions.IsPlayerBanned, src) + if not success then return deferrals.done(Lang:t('error.connecting_database_error')) end + if isBanned then return deferrals.done(reason) end + + Wait(0) + deferrals.update(string.format(Lang:t('info.join_server'), name)) + deferrals.done() + + TriggerClientEvent('QBCore:Client:SharedUpdate', src, QBCore.Shared) +end + +AddEventHandler('playerConnecting', onPlayerConnecting) + +-- Open & Close Server (prevents players from joining) + +RegisterNetEvent('QBCore:Server:CloseServer', function(reason) + local src = source + if QBCore.Functions.HasPermission(src, 'admin') then + reason = reason or 'No reason specified' + QBCore.Config.Server.Closed = true + QBCore.Config.Server.ClosedReason = reason + for k in pairs(QBCore.Players) do + if not QBCore.Functions.HasPermission(k, QBCore.Config.Server.WhitelistPermission) then + QBCore.Functions.Kick(k, reason, nil, nil) + end + end + else + QBCore.Functions.Kick(src, Lang:t('error.no_permission'), nil, nil) + end +end) + +RegisterNetEvent('QBCore:Server:OpenServer', function() + local src = source + if QBCore.Functions.HasPermission(src, 'admin') then + QBCore.Config.Server.Closed = false + else + QBCore.Functions.Kick(src, Lang:t('error.no_permission'), nil, nil) + end +end) + +-- Callback Events -- + +-- Client Callback +RegisterNetEvent('QBCore:Server:TriggerClientCallback', function(name, ...) + if QBCore.ClientCallbacks[name] then + QBCore.ClientCallbacks[name].promise:resolve(...) + + if QBCore.ClientCallbacks[name].callback then + QBCore.ClientCallbacks[name].callback(...) + end + + QBCore.ClientCallbacks[name] = nil + end +end) + +-- Server Callback +RegisterNetEvent('QBCore:Server:TriggerCallback', function(name, ...) + if not QBCore.ServerCallbacks[name] then return end + + local src = source + + QBCore.ServerCallbacks[name](src, function(...) + TriggerClientEvent('QBCore:Client:TriggerCallback', src, name, ...) + end, ...) +end) + +-- Player + +RegisterNetEvent('QBCore:UpdatePlayer', function() + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if not Player then return end + local newHunger = Player.PlayerData.metadata['hunger'] - QBCore.Config.Player.HungerRate + local newThirst = Player.PlayerData.metadata['thirst'] - QBCore.Config.Player.ThirstRate + if newHunger <= 0 then + newHunger = 0 + end + if newThirst <= 0 then + newThirst = 0 + end + Player.Functions.SetMetaData('thirst', newThirst) + Player.Functions.SetMetaData('hunger', newHunger) + TriggerClientEvent('hud:client:UpdateNeeds', src, newHunger, newThirst) + Player.Functions.Save() +end) + +RegisterNetEvent('QBCore:ToggleDuty', function() + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if not Player then return end + if Player.PlayerData.job.onduty then + Player.Functions.SetJobDuty(false) + TriggerClientEvent('QBCore:Notify', src, Lang:t('info.off_duty')) + else + Player.Functions.SetJobDuty(true) + TriggerClientEvent('QBCore:Notify', src, Lang:t('info.on_duty')) + end + + TriggerEvent('QBCore:Server:SetDuty', src, Player.PlayerData.job.onduty) + TriggerClientEvent('QBCore:Client:SetDuty', src, Player.PlayerData.job.onduty) +end) + +-- BaseEvents + +-- Vehicles +RegisterServerEvent('baseevents:enteringVehicle', function(veh, seat, modelName) + local src = source + local data = { + vehicle = veh, + seat = seat, + name = modelName, + event = 'Entering' + } + TriggerClientEvent('QBCore:Client:VehicleInfo', src, data) +end) + +RegisterServerEvent('baseevents:enteredVehicle', function(veh, seat, modelName) + local src = source + local data = { + vehicle = veh, + seat = seat, + name = modelName, + event = 'Entered' + } + TriggerClientEvent('QBCore:Client:VehicleInfo', src, data) +end) + +RegisterServerEvent('baseevents:enteringAborted', function() + local src = source + TriggerClientEvent('QBCore:Client:AbortVehicleEntering', src) +end) + +RegisterServerEvent('baseevents:leftVehicle', function(veh, seat, modelName) + local src = source + local data = { + vehicle = veh, + seat = seat, + name = modelName, + event = 'Left' + } + TriggerClientEvent('QBCore:Client:VehicleInfo', src, data) +end) + +-- Items + +-- This event is exploitable and should not be used. It has been deprecated, and will be removed soon. +RegisterNetEvent('QBCore:Server:UseItem', function(item) + print(string.format('%s triggered QBCore:Server:UseItem by ID %s with the following data. This event is deprecated due to exploitation, and will be removed soon. Check qb-inventory for the right use on this event.', GetInvokingResource(), source)) + QBCore.Debug(item) +end) + +-- This event is exploitable and should not be used. It has been deprecated, and will be removed soon. function(itemName, amount, slot) +RegisterNetEvent('QBCore:Server:RemoveItem', function(itemName, amount) + local src = source + print(string.format('%s triggered QBCore:Server:RemoveItem by ID %s for %s %s. This event is deprecated due to exploitation, and will be removed soon. Adjust your events accordingly to do this server side with player functions.', GetInvokingResource(), src, amount, itemName)) +end) + +-- This event is exploitable and should not be used. It has been deprecated, and will be removed soon. function(itemName, amount, slot, info) +RegisterNetEvent('QBCore:Server:AddItem', function(itemName, amount) + local src = source + print(string.format('%s triggered QBCore:Server:AddItem by ID %s for %s %s. This event is deprecated due to exploitation, and will be removed soon. Adjust your events accordingly to do this server side with player functions.', GetInvokingResource(), src, amount, itemName)) +end) + +-- Non-Chat Command Calling (ex: qb-adminmenu) + +RegisterNetEvent('QBCore:CallCommand', function(command, args) + local src = source + if not QBCore.Commands.List[command] then return end + local Player = QBCore.Functions.GetPlayer(src) + if not Player then return end + local hasPerm = QBCore.Functions.HasPermission(src, 'command.' .. QBCore.Commands.List[command].name) + if hasPerm then + if QBCore.Commands.List[command].argsrequired and #QBCore.Commands.List[command].arguments ~= 0 and not args[#QBCore.Commands.List[command].arguments] then + TriggerClientEvent('QBCore:Notify', src, Lang:t('error.missing_args2'), 'error') + else + QBCore.Commands.List[command].callback(src, args) + end + else + TriggerClientEvent('QBCore:Notify', src, Lang:t('error.no_access'), 'error') + end +end) + +-- Use this for player vehicle spawning +-- Vehicle server-side spawning callback (netId) +-- use the netid on the client with the NetworkGetEntityFromNetworkId native +-- convert it to a vehicle via the NetToVeh native +QBCore.Functions.CreateCallback('QBCore:Server:SpawnVehicle', function(source, cb, model, coords, warp) + local veh = QBCore.Functions.SpawnVehicle(source, model, coords, warp) + cb(NetworkGetNetworkIdFromEntity(veh)) +end) + +-- Use this for long distance vehicle spawning +-- vehicle server-side spawning callback (netId) +-- use the netid on the client with the NetworkGetEntityFromNetworkId native +-- convert it to a vehicle via the NetToVeh native +QBCore.Functions.CreateCallback('QBCore:Server:CreateVehicle', function(source, cb, model, coords, warp) + local veh = QBCore.Functions.CreateAutomobile(source, model, coords, warp) + cb(NetworkGetNetworkIdFromEntity(veh)) +end) + +--QBCore.Functions.CreateCallback('QBCore:HasItem', function(source, cb, items, amount) +-- https://github.com/qbcore-framework/qb-inventory/blob/e4ef156d93dd1727234d388c3f25110c350b3bcf/server/main.lua#L2066 +--end) diff --git a/resources/[core]/qb-core/server/exports.lua b/resources/[core]/qb-core/server/exports.lua new file mode 100644 index 0000000..d02518c --- /dev/null +++ b/resources/[core]/qb-core/server/exports.lua @@ -0,0 +1,336 @@ +-- Add or change (a) method(s) in the QBCore.Functions table +local function SetMethod(methodName, handler) + if type(methodName) ~= 'string' then + return false, 'invalid_method_name' + end + + QBCore.Functions[methodName] = handler + + TriggerEvent('QBCore:Server:UpdateObject') + + return true, 'success' +end + +QBCore.Functions.SetMethod = SetMethod +exports('SetMethod', SetMethod) + +-- Add or change (a) field(s) in the QBCore table +local function SetField(fieldName, data) + if type(fieldName) ~= 'string' then + return false, 'invalid_field_name' + end + + QBCore[fieldName] = data + + TriggerEvent('QBCore:Server:UpdateObject') + + return true, 'success' +end + +QBCore.Functions.SetField = SetField +exports('SetField', SetField) + +-- Single add job function which should only be used if you planning on adding a single job +local function AddJob(jobName, job) + if type(jobName) ~= 'string' then + return false, 'invalid_job_name' + end + + if QBCore.Shared.Jobs[jobName] then + return false, 'job_exists' + end + + QBCore.Shared.Jobs[jobName] = job + + TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Jobs', jobName, job) + TriggerEvent('QBCore:Server:UpdateObject') + return true, 'success' +end + +QBCore.Functions.AddJob = AddJob +exports('AddJob', AddJob) + +-- Multiple Add Jobs +local function AddJobs(jobs) + local shouldContinue = true + local message = 'success' + local errorItem = nil + + for key, value in pairs(jobs) do + if type(key) ~= 'string' then + message = 'invalid_job_name' + shouldContinue = false + errorItem = jobs[key] + break + end + + if QBCore.Shared.Jobs[key] then + message = 'job_exists' + shouldContinue = false + errorItem = jobs[key] + break + end + + QBCore.Shared.Jobs[key] = value + end + + if not shouldContinue then return false, message, errorItem end + TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Jobs', jobs) + TriggerEvent('QBCore:Server:UpdateObject') + return true, message, nil +end + +QBCore.Functions.AddJobs = AddJobs +exports('AddJobs', AddJobs) + +-- Single Remove Job +local function RemoveJob(jobName) + if type(jobName) ~= 'string' then + return false, 'invalid_job_name' + end + + if not QBCore.Shared.Jobs[jobName] then + return false, 'job_not_exists' + end + + QBCore.Shared.Jobs[jobName] = nil + + TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Jobs', jobName, nil) + TriggerEvent('QBCore:Server:UpdateObject') + return true, 'success' +end + +QBCore.Functions.RemoveJob = RemoveJob +exports('RemoveJob', RemoveJob) + +-- Single Update Job +local function UpdateJob(jobName, job) + if type(jobName) ~= 'string' then + return false, 'invalid_job_name' + end + + if not QBCore.Shared.Jobs[jobName] then + return false, 'job_not_exists' + end + + QBCore.Shared.Jobs[jobName] = job + + TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Jobs', jobName, job) + TriggerEvent('QBCore:Server:UpdateObject') + return true, 'success' +end + +QBCore.Functions.UpdateJob = UpdateJob +exports('UpdateJob', UpdateJob) + +-- Single add item +local function AddItem(itemName, item) + if type(itemName) ~= 'string' then + return false, 'invalid_item_name' + end + + if QBCore.Shared.Items[itemName] then + return false, 'item_exists' + end + + QBCore.Shared.Items[itemName] = item + + TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Items', itemName, item) + TriggerEvent('QBCore:Server:UpdateObject') + return true, 'success' +end + +QBCore.Functions.AddItem = AddItem +exports('AddItem', AddItem) + +-- Single update item +local function UpdateItem(itemName, item) + if type(itemName) ~= 'string' then + return false, 'invalid_item_name' + end + if not QBCore.Shared.Items[itemName] then + return false, 'item_not_exists' + end + QBCore.Shared.Items[itemName] = item + TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Items', itemName, item) + TriggerEvent('QBCore:Server:UpdateObject') + return true, 'success' +end + +QBCore.Functions.UpdateItem = UpdateItem +exports('UpdateItem', UpdateItem) + +-- Multiple Add Items +local function AddItems(items) + local shouldContinue = true + local message = 'success' + local errorItem = nil + + for key, value in pairs(items) do + if type(key) ~= 'string' then + message = 'invalid_item_name' + shouldContinue = false + errorItem = items[key] + break + end + + if QBCore.Shared.Items[key] then + message = 'item_exists' + shouldContinue = false + errorItem = items[key] + break + end + + QBCore.Shared.Items[key] = value + end + + if not shouldContinue then return false, message, errorItem end + TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Items', items) + TriggerEvent('QBCore:Server:UpdateObject') + return true, message, nil +end + +QBCore.Functions.AddItems = AddItems +exports('AddItems', AddItems) + +-- Single Remove Item +local function RemoveItem(itemName) + if type(itemName) ~= 'string' then + return false, 'invalid_item_name' + end + + if not QBCore.Shared.Items[itemName] then + return false, 'item_not_exists' + end + + QBCore.Shared.Items[itemName] = nil + + TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Items', itemName, nil) + TriggerEvent('QBCore:Server:UpdateObject') + return true, 'success' +end + +QBCore.Functions.RemoveItem = RemoveItem +exports('RemoveItem', RemoveItem) + +-- Single Add Gang +local function AddGang(gangName, gang) + if type(gangName) ~= 'string' then + return false, 'invalid_gang_name' + end + + if QBCore.Shared.Gangs[gangName] then + return false, 'gang_exists' + end + + QBCore.Shared.Gangs[gangName] = gang + + TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', gangName, gang) + TriggerEvent('QBCore:Server:UpdateObject') + return true, 'success' +end + +QBCore.Functions.AddGang = AddGang +exports('AddGang', AddGang) + +-- Multiple Add Gangs +local function AddGangs(gangs) + local shouldContinue = true + local message = 'success' + local errorItem = nil + + for key, value in pairs(gangs) do + if type(key) ~= 'string' then + message = 'invalid_gang_name' + shouldContinue = false + errorItem = gangs[key] + break + end + + if QBCore.Shared.Gangs[key] then + message = 'gang_exists' + shouldContinue = false + errorItem = gangs[key] + break + end + + QBCore.Shared.Gangs[key] = value + end + + if not shouldContinue then return false, message, errorItem end + TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Gangs', gangs) + TriggerEvent('QBCore:Server:UpdateObject') + return true, message, nil +end + +QBCore.Functions.AddGangs = AddGangs +exports('AddGangs', AddGangs) + +-- Single Remove Gang +local function RemoveGang(gangName) + if type(gangName) ~= 'string' then + return false, 'invalid_gang_name' + end + + if not QBCore.Shared.Gangs[gangName] then + return false, 'gang_not_exists' + end + + QBCore.Shared.Gangs[gangName] = nil + + TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', gangName, nil) + TriggerEvent('QBCore:Server:UpdateObject') + return true, 'success' +end + +QBCore.Functions.RemoveGang = RemoveGang +exports('RemoveGang', RemoveGang) + +-- Single Update Gang +local function UpdateGang(gangName, gang) + if type(gangName) ~= 'string' then + return false, 'invalid_gang_name' + end + + if not QBCore.Shared.Gangs[gangName] then + return false, 'gang_not_exists' + end + + QBCore.Shared.Gangs[gangName] = gang + + TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Gangs', gangName, gang) + TriggerEvent('QBCore:Server:UpdateObject') + return true, 'success' +end + +QBCore.Functions.UpdateGang = UpdateGang +exports('UpdateGang', UpdateGang) + +local resourceName = GetCurrentResourceName() +local function GetCoreVersion(InvokingResource) + local resourceVersion = GetResourceMetadata(resourceName, 'version') + if InvokingResource and InvokingResource ~= '' then + print(('%s called qbcore version check: %s'):format(InvokingResource or 'Unknown Resource', resourceVersion)) + end + return resourceVersion +end + +QBCore.Functions.GetCoreVersion = GetCoreVersion +exports('GetCoreVersion', GetCoreVersion) + +local function ExploitBan(playerId, origin) + local name = GetPlayerName(playerId) + MySQL.insert('INSERT INTO bans (name, license, discord, ip, reason, expire, bannedby) VALUES (?, ?, ?, ?, ?, ?, ?)', { + name, + QBCore.Functions.GetIdentifier(playerId, 'license'), + QBCore.Functions.GetIdentifier(playerId, 'discord'), + QBCore.Functions.GetIdentifier(playerId, 'ip'), + origin, + 2147483647, + 'Anti Cheat' + }) + DropPlayer(playerId, Lang:t('info.exploit_banned', { discord = QBCore.Config.Server.Discord })) + TriggerEvent('qb-log:server:CreateLog', 'anticheat', 'Anti-Cheat', 'red', name .. ' has been banned for exploiting ' .. origin, true) +end + +exports('ExploitBan', ExploitBan) diff --git a/resources/[core]/qb-core/server/functions.lua b/resources/[core]/qb-core/server/functions.lua new file mode 100644 index 0000000..a7f203a --- /dev/null +++ b/resources/[core]/qb-core/server/functions.lua @@ -0,0 +1,739 @@ +QBCore.Functions = {} +QBCore.Player_Buckets = {} +QBCore.Entity_Buckets = {} +QBCore.UsableItems = {} + +-- Getters +-- Get your player first and then trigger a function on them +-- ex: local player = QBCore.Functions.GetPlayer(source) +-- ex: local example = player.Functions.functionname(parameter) + +---Gets the coordinates of an entity +---@param entity number +---@return vector4 +function QBCore.Functions.GetCoords(entity) + local coords = GetEntityCoords(entity, false) + local heading = GetEntityHeading(entity) + return vector4(coords.x, coords.y, coords.z, heading) +end + +---Gets player identifier of the given type +---@param source any +---@param idtype string +---@return string? +function QBCore.Functions.GetIdentifier(source, idtype) + if GetConvarInt('sv_fxdkMode', 0) == 1 then return 'license:fxdk' end + return GetPlayerIdentifierByType(source, idtype or 'license') +end + +---Gets a players server id (source). Returns 0 if no player is found. +---@param identifier string +---@return number +function QBCore.Functions.GetSource(identifier) + for src, _ in pairs(QBCore.Players) do + local idens = GetPlayerIdentifiers(src) + for _, id in pairs(idens) do + if identifier == id then + return src + end + end + end + return 0 +end + +---Get player with given server id (source) +---@param source any +---@return table +function QBCore.Functions.GetPlayer(source) + if tonumber(source) ~= nil then -- If a number is a string ("1"), this will still correctly identify the index to use. + return QBCore.Players[tonumber(source)] + else + return QBCore.Players[QBCore.Functions.GetSource(source)] + end +end + +---Get player by citizen id +---@param citizenid string +---@return table? +function QBCore.Functions.GetPlayerByCitizenId(citizenid) + for src in pairs(QBCore.Players) do + if QBCore.Players[src].PlayerData.citizenid == citizenid then + return QBCore.Players[src] + end + end + return nil +end + +---Get offline player by citizen id +---@param citizenid string +---@return table? +function QBCore.Functions.GetOfflinePlayerByCitizenId(citizenid) + return QBCore.Player.GetOfflinePlayer(citizenid) +end + +---Get player by license +---@param license string +---@return table? +function QBCore.Functions.GetPlayerByLicense(license) + return QBCore.Player.GetPlayerByLicense(license) +end + +---Get player by phone number +---@param number number +---@return table? +function QBCore.Functions.GetPlayerByPhone(number) + for src in pairs(QBCore.Players) do + if QBCore.Players[src].PlayerData.charinfo.phone == number then + return QBCore.Players[src] + end + end + return nil +end + +---Get player by account id +---@param account string +---@return table? +function QBCore.Functions.GetPlayerByAccount(account) + for src in pairs(QBCore.Players) do + if QBCore.Players[src].PlayerData.charinfo.account == account then + return QBCore.Players[src] + end + end + return nil +end + +---Get player passing property and value to check exists +---@param property string +---@param value string +---@return table? +function QBCore.Functions.GetPlayerByCharInfo(property, value) + for src in pairs(QBCore.Players) do + local charinfo = QBCore.Players[src].PlayerData.charinfo + if charinfo[property] ~= nil and charinfo[property] == value then + return QBCore.Players[src] + end + end + return nil +end + +---Get all players. Returns the server ids of all players. +---@return table +function QBCore.Functions.GetPlayers() + local sources = {} + for k in pairs(QBCore.Players) do + sources[#sources + 1] = k + end + return sources +end + +---Will return an array of QB Player class instances +---unlike the GetPlayers() wrapper which only returns IDs +---@return table +function QBCore.Functions.GetQBPlayers() + return QBCore.Players +end + +---Gets a list of all on duty players of a specified job and the number +---@param job string +---@return table, number +function QBCore.Functions.GetPlayersOnDuty(job) + local players = {} + local count = 0 + for src, Player in pairs(QBCore.Players) do + if Player.PlayerData.job.name == job then + if Player.PlayerData.job.onduty then + players[#players + 1] = src + count += 1 + end + end + end + return players, count +end + +---Returns only the amount of players on duty for the specified job +---@param job string +---@return number +function QBCore.Functions.GetDutyCount(job) + local count = 0 + for _, Player in pairs(QBCore.Players) do + if Player.PlayerData.job.name == job then + if Player.PlayerData.job.onduty then + count += 1 + end + end + end + return count +end + +--- @param source number source player's server ID. +--- @param coords vector The coordinates to calculate the distance from. Can be a table with x, y, z fields or a vector3. If not provided, the source player's Ped's coordinates are used. +--- @return string closestPlayer - The Player that is closest to the source player (or the provided coordinates). Returns -1 if no Players are found. +--- @return number closestDistance - The distance to the closest Player. Returns -1 if no Players are found. +function QBCore.Functions.GetClosestPlayer(source, coords) + local ped = GetPlayerPed(source) + local players = GetPlayers() + local closestDistance, closestPlayer = -1, -1 + if coords then coords = type(coords) == 'table' and vector3(coords.x, coords.y, coords.z) or coords end + if not coords then coords = GetEntityCoords(ped) end + for i = 1, #players do + local playerId = players[i] + local playerPed = GetPlayerPed(playerId) + if playerPed ~= ped then + local playerCoords = GetEntityCoords(playerPed) + local distance = #(playerCoords - coords) + if closestDistance == -1 or distance < closestDistance then + closestPlayer = playerId + closestDistance = distance + end + end + end + return closestPlayer, closestDistance +end + +--- @param source number source player's server ID. +--- @param coords vector The coordinates to calculate the distance from. Can be a table with x, y, z fields or a vector3. If not provided, the source player's Ped's coordinates are used. +--- @return number closestObject - The Object that is closest to the source player (or the provided coordinates). Returns -1 if no Objects are found. +--- @return number closestDistance - The distance to the closest Object. Returns -1 if no Objects are found. +function QBCore.Functions.GetClosestObject(source, coords) + local ped = GetPlayerPed(source) + local objects = GetAllObjects() + local closestDistance, closestObject = -1, -1 + if coords then coords = type(coords) == 'table' and vector3(coords.x, coords.y, coords.z) or coords end + if not coords then coords = GetEntityCoords(ped) end + for i = 1, #objects do + local objectCoords = GetEntityCoords(objects[i]) + local distance = #(objectCoords - coords) + if closestDistance == -1 or closestDistance > distance then + closestObject = objects[i] + closestDistance = distance + end + end + return closestObject, closestDistance +end + +--- @param source number source player's server ID. +--- @param coords vector The coordinates to calculate the distance from. Can be a table with x, y, z fields or a vector3. If not provided, the source player's Ped's coordinates are used. +--- @return number closestVehicle - The Vehicle that is closest to the source player (or the provided coordinates). Returns -1 if no Vehicles are found. +--- @return number closestDistance - The distance to the closest Vehicle. Returns -1 if no Vehicles are found. +function QBCore.Functions.GetClosestVehicle(source, coords) + local ped = GetPlayerPed(source) + local vehicles = GetAllVehicles() + local closestDistance, closestVehicle = -1, -1 + if coords then coords = type(coords) == 'table' and vector3(coords.x, coords.y, coords.z) or coords end + if not coords then coords = GetEntityCoords(ped) end + for i = 1, #vehicles do + local vehicleCoords = GetEntityCoords(vehicles[i]) + local distance = #(vehicleCoords - coords) + if closestDistance == -1 or closestDistance > distance then + closestVehicle = vehicles[i] + closestDistance = distance + end + end + return closestVehicle, closestDistance +end + +--- @param source number source player's server ID. +--- @param coords vector The coordinates to calculate the distance from. Can be a table with x, y, z fields or a vector3. If not provided, the source player's Ped's coordinates are used. +--- @return number closestPed - The Ped that is closest to the source player (or the provided coordinates). Returns -1 if no Peds are found. +--- @return number closestDistance - The distance to the closest Ped. Returns -1 if no Peds are found. +function QBCore.Functions.GetClosestPed(source, coords) + local ped = GetPlayerPed(source) + local peds = GetAllPeds() + local closestDistance, closestPed = -1, -1 + if coords then coords = type(coords) == 'table' and vector3(coords.x, coords.y, coords.z) or coords end + if not coords then coords = GetEntityCoords(ped) end + for i = 1, #peds do + if peds[i] ~= ped then + local pedCoords = GetEntityCoords(peds[i]) + local distance = #(pedCoords - coords) + if closestDistance == -1 or closestDistance > distance then + closestPed = peds[i] + closestDistance = distance + end + end + end + return closestPed, closestDistance +end + +-- Routing buckets (Only touch if you know what you are doing) + +---Returns the objects related to buckets, first returned value is the player buckets, second one is entity buckets +---@return table, table +function QBCore.Functions.GetBucketObjects() + return QBCore.Player_Buckets, QBCore.Entity_Buckets +end + +---Will set the provided player id / source into the provided bucket id +---@param source any +---@param bucket any +---@return boolean +function QBCore.Functions.SetPlayerBucket(source, bucket) + if source and bucket then + local plicense = QBCore.Functions.GetIdentifier(source, 'license') + Player(source).state:set('instance', bucket, true) + SetPlayerRoutingBucket(source, bucket) + QBCore.Player_Buckets[plicense] = { id = source, bucket = bucket } + return true + else + return false + end +end + +---Will set any entity into the provided bucket, for example peds / vehicles / props / etc. +---@param entity number +---@param bucket number +---@return boolean +function QBCore.Functions.SetEntityBucket(entity, bucket) + if entity and bucket then + SetEntityRoutingBucket(entity, bucket) + QBCore.Entity_Buckets[entity] = { id = entity, bucket = bucket } + return true + else + return false + end +end + +---Will return an array of all the player ids inside the current bucket +---@param bucket number +---@return table|boolean +function QBCore.Functions.GetPlayersInBucket(bucket) + local curr_bucket_pool = {} + if QBCore.Player_Buckets and next(QBCore.Player_Buckets) then + for _, v in pairs(QBCore.Player_Buckets) do + if v.bucket == bucket then + curr_bucket_pool[#curr_bucket_pool + 1] = v.id + end + end + return curr_bucket_pool + else + return false + end +end + +---Will return an array of all the entities inside the current bucket +---(not for player entities, use GetPlayersInBucket for that) +---@param bucket number +---@return table|boolean +function QBCore.Functions.GetEntitiesInBucket(bucket) + local curr_bucket_pool = {} + if QBCore.Entity_Buckets and next(QBCore.Entity_Buckets) then + for _, v in pairs(QBCore.Entity_Buckets) do + if v.bucket == bucket then + curr_bucket_pool[#curr_bucket_pool + 1] = v.id + end + end + return curr_bucket_pool + else + return false + end +end + +---Server side vehicle creation with optional callback +---the CreateVehicle RPC still uses the client for creation so players must be near +---@param source any +---@param model any +---@param coords vector +---@param warp boolean +---@return number +function QBCore.Functions.SpawnVehicle(source, model, coords, warp) + local ped = GetPlayerPed(source) + model = type(model) == 'string' and joaat(model) or model + if not coords then coords = GetEntityCoords(ped) end + local heading = coords.w and coords.w or 0.0 + local veh = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, true) + while not DoesEntityExist(veh) do Wait(0) end + if warp then + while GetVehiclePedIsIn(ped) ~= veh do + Wait(0) + TaskWarpPedIntoVehicle(ped, veh, -1) + end + end + while NetworkGetEntityOwner(veh) ~= source do Wait(0) end + return veh +end + +---Server side vehicle creation with optional callback +---the CreateAutomobile native is still experimental but doesn't use client for creation +---doesn't work for all vehicles! +---comment +---@param source any +---@param model any +---@param coords vector +---@param warp boolean +---@return number +function QBCore.Functions.CreateAutomobile(source, model, coords, warp) + model = type(model) == 'string' and joaat(model) or model + if not coords then coords = GetEntityCoords(GetPlayerPed(source)) end + local heading = coords.w and coords.w or 0.0 + local CreateAutomobile = `CREATE_AUTOMOBILE` + local veh = Citizen.InvokeNative(CreateAutomobile, model, coords, heading, true, true) + while not DoesEntityExist(veh) do Wait(0) end + if warp then TaskWarpPedIntoVehicle(GetPlayerPed(source), veh, -1) end + return veh +end + +--- New & more reliable server side native for creating vehicles +---comment +---@param source any +---@param model any +---@param vehtype any +-- The appropriate vehicle type for the model info. +-- Can be one of automobile, bike, boat, heli, plane, submarine, trailer, and (potentially), train. +-- This should be the same type as the type field in vehicles.meta. +---@param coords vector +---@param warp boolean +---@return number +function QBCore.Functions.CreateVehicle(source, model, vehtype, coords, warp) + model = type(model) == 'string' and joaat(model) or model + vehtype = type(vehtype) == 'string' and tostring(vehtype) or vehtype + if not coords then coords = GetEntityCoords(GetPlayerPed(source)) end + local heading = coords.w and coords.w or 0.0 + local veh = CreateVehicleServerSetter(model, vehtype, coords, heading) + while not DoesEntityExist(veh) do Wait(0) end + if warp then TaskWarpPedIntoVehicle(GetPlayerPed(source), veh, -1) end + return veh +end + +function PaycheckInterval() + if not next(QBCore.Players) then + SetTimeout(QBCore.Config.Money.PayCheckTimeOut * (60 * 1000), PaycheckInterval) -- Prevent paychecks from stopping forever once 0 players + return + end + for _, Player in pairs(QBCore.Players) do + if not Player then return end + local payment = QBShared.Jobs[Player.PlayerData.job.name]['grades'][tostring(Player.PlayerData.job.grade.level)].payment + if not payment then payment = Player.PlayerData.job.payment end + if Player.PlayerData.job and payment > 0 and (QBShared.Jobs[Player.PlayerData.job.name].offDutyPay or Player.PlayerData.job.onduty) then + if QBCore.Config.Money.PayCheckSociety then + local account = exports['qb-banking']:GetAccountBalance(Player.PlayerData.job.name) + if account ~= 0 then + if account < payment then + TriggerClientEvent('QBCore:Notify', Player.PlayerData.source, Lang:t('error.company_too_poor'), 'error') + else + Player.Functions.AddMoney('bank', payment, 'paycheck') + exports['qb-banking']:RemoveMoney(Player.PlayerData.job.name, payment, 'Employee Paycheck') + TriggerClientEvent('QBCore:Notify', Player.PlayerData.source, Lang:t('info.received_paycheck', { value = payment })) + end + else + Player.Functions.AddMoney('bank', payment, 'paycheck') + TriggerClientEvent('QBCore:Notify', Player.PlayerData.source, Lang:t('info.received_paycheck', { value = payment })) + end + else + Player.Functions.AddMoney('bank', payment, 'paycheck') + TriggerClientEvent('QBCore:Notify', Player.PlayerData.source, Lang:t('info.received_paycheck', { value = payment })) + end + end + end + SetTimeout(QBCore.Config.Money.PayCheckTimeOut * (60 * 1000), PaycheckInterval) +end + +-- Callback Functions -- + +---Trigger Client Callback +---@param name string +---@param source any +---@param cb function +---@param ... any +function QBCore.Functions.TriggerClientCallback(name, source, ...) + local cb = nil + local args = { ... } + + if QBCore.Shared.IsFunction(args[1]) then + cb = args[1] + table.remove(args, 1) + end + + QBCore.ClientCallbacks[name] = { + callback = cb, + promise = promise.new() + } + + TriggerClientEvent('QBCore:Client:TriggerClientCallback', source, name, table.unpack(args)) + + if cb == nil then + Citizen.Await(QBCore.ClientCallbacks[name].promise) + return QBCore.ClientCallbacks[name].promise.value + end +end + +---Create Server Callback +---@param name string +---@param cb function +function QBCore.Functions.CreateCallback(name, cb) + QBCore.ServerCallbacks[name] = cb +end + +-- Items + +---Create a usable item +---@param item string +---@param data function +function QBCore.Functions.CreateUseableItem(item, data) + local rawFunc = nil + + if type(data) == 'table' then + if rawget(data, '__cfx_functionReference') then + rawFunc = data + elseif data.cb and rawget(data.cb, '__cfx_functionReference') then + rawFunc = data.cb + elseif data.callback and rawget(data.callback, '__cfx_functionReference') then + rawFunc = data.callback + end + elseif type(data) == 'function' then + rawFunc = data + end + + if rawFunc then + QBCore.UsableItems[item] = { + func = rawFunc, + resource = GetInvokingResource() + } + end +end + +---Checks if the given item is usable +---@param item string +---@return any +function QBCore.Functions.CanUseItem(item) + return QBCore.UsableItems[item] +end + +---Use item +---@param source any +---@param item string +function QBCore.Functions.UseItem(source, item) + if GetResourceState('qb-inventory') == 'missing' then return end + exports['qb-inventory']:UseItem(source, item) +end + +---Kick Player +---@param source any +---@param reason string +---@param setKickReason boolean +---@param deferrals boolean +function QBCore.Functions.Kick(source, reason, setKickReason, deferrals) + reason = '\n' .. reason .. '\n🔸 Check our Discord for further information: ' .. QBCore.Config.Server.Discord + if setKickReason then + setKickReason(reason) + end + CreateThread(function() + if deferrals then + deferrals.update(reason) + Wait(2500) + end + if source then + DropPlayer(source, reason) + end + for _ = 0, 4 do + while true do + if source then + if GetPlayerPing(source) >= 0 then + break + end + Wait(100) + CreateThread(function() + DropPlayer(source, reason) + end) + end + end + Wait(5000) + end + end) +end + +---Check if player is whitelisted, kept like this for backwards compatibility or future plans +---@param source any +---@return boolean +function QBCore.Functions.IsWhitelisted(source) + if not QBCore.Config.Server.Whitelist then return true end + if QBCore.Functions.HasPermission(source, QBCore.Config.Server.WhitelistPermission) then return true end + return false +end + +-- Setting & Removing Permissions + +---Add permission for player +---@param source any +---@param permission string +function QBCore.Functions.AddPermission(source, permission) + if not IsPlayerAceAllowed(source, permission) then + ExecuteCommand(('add_principal player.%s qbcore.%s'):format(source, permission)) + QBCore.Commands.Refresh(source) + end +end + +---Remove permission from player +---@param source any +---@param permission string +function QBCore.Functions.RemovePermission(source, permission) + if permission then + if IsPlayerAceAllowed(source, permission) then + ExecuteCommand(('remove_principal player.%s qbcore.%s'):format(source, permission)) + QBCore.Commands.Refresh(source) + end + else + for _, v in pairs(QBCore.Config.Server.Permissions) do + if IsPlayerAceAllowed(source, v) then + ExecuteCommand(('remove_principal player.%s qbcore.%s'):format(source, v)) + QBCore.Commands.Refresh(source) + end + end + end +end + +-- Checking for Permission Level + +---Check if player has permission +---@param source any +---@param permission string +---@return boolean +function QBCore.Functions.HasPermission(source, permission) + if type(permission) == 'string' then + if IsPlayerAceAllowed(source, permission) then return true end + elseif type(permission) == 'table' then + for _, permLevel in pairs(permission) do + if IsPlayerAceAllowed(source, permLevel) then return true end + end + end + + return false +end + +---Get the players permissions +---@param source any +---@return table +function QBCore.Functions.GetPermission(source) + local src = source + local perms = {} + for _, v in pairs(QBCore.Config.Server.Permissions) do + if IsPlayerAceAllowed(src, v) then + perms[v] = true + end + end + return perms +end + +---Get admin messages opt-in state for player +---@param source any +---@return boolean +function QBCore.Functions.IsOptin(source) + local license = QBCore.Functions.GetIdentifier(source, 'license') + if not license or not QBCore.Functions.HasPermission(source, 'admin') then return false end + local Player = QBCore.Functions.GetPlayer(source) + return Player.PlayerData.optin +end + +---Toggle opt-in to admin messages +---@param source any +function QBCore.Functions.ToggleOptin(source) + local license = QBCore.Functions.GetIdentifier(source, 'license') + if not license or not QBCore.Functions.HasPermission(source, 'admin') then return end + local Player = QBCore.Functions.GetPlayer(source) + Player.PlayerData.optin = not Player.PlayerData.optin + Player.Functions.SetPlayerData('optin', Player.PlayerData.optin) +end + +---Check if player is banned +---@param source any +---@return boolean, string? +function QBCore.Functions.IsPlayerBanned(source) + local plicense = QBCore.Functions.GetIdentifier(source, 'license') + local result = MySQL.single.await('SELECT id, reason, expire FROM bans WHERE license = ?', { plicense }) + if not result then return false end + if os.time() < result.expire then + local timeTable = os.date('*t', tonumber(result.expire)) + return true, 'You have been banned from the server:\n' .. result.reason .. '\nYour ban expires ' .. timeTable.day .. '/' .. timeTable.month .. '/' .. timeTable.year .. ' ' .. timeTable.hour .. ':' .. timeTable.min .. '\n' + else + MySQL.query('DELETE FROM bans WHERE id = ?', { result.id }) + end + return false +end + +-- Retrieves information about the database connection. +--- @return table; A table containing the database information. +function QBCore.Functions.GetDatabaseInfo() + local details = { + exists = false, + database = '', + } + local connectionString = GetConvar('mysql_connection_string', '') + + if connectionString == '' then + return details + elseif connectionString:find('mysql://') then + connectionString = connectionString:sub(9, -1) + details.database = connectionString:sub(connectionString:find('/') + 1, -1):gsub('[%?]+[%w%p]*$', '') + details.exists = true + return details + else + connectionString = { string.strsplit(';', connectionString) } + + for i = 1, #connectionString do + local v = connectionString[i] + if v:match('database') then + details.database = v:sub(10, #v) + details.exists = true + return details + end + end + end +end + +---Check for duplicate license +---@param license any +---@return boolean +function QBCore.Functions.IsLicenseInUse(license) + local players = GetPlayers() + for _, player in pairs(players) do + local playerLicense = QBCore.Functions.GetIdentifier(player, 'license') + if playerLicense == license then return true end + end + return false +end + +-- Utility functions + +---Check if a player has an item [deprecated] +---@param source any +---@param items table|string +---@param amount number +---@return boolean +function QBCore.Functions.HasItem(source, items, amount) + if GetResourceState('qb-inventory') == 'missing' then return end + return exports['qb-inventory']:HasItem(source, items, amount) +end + +---Notify +---@param source any +---@param text string +---@param type string +---@param length number +function QBCore.Functions.Notify(source, text, type, length) + TriggerClientEvent('QBCore:Notify', source, text, type, length) +end + +---???? ... ok +---@param source any +---@param data any +---@param pattern any +---@return boolean +function QBCore.Functions.PrepForSQL(source, data, pattern) + data = tostring(data) + local src = source + local player = QBCore.Functions.GetPlayer(src) + local result = string.match(data, pattern) + if not result or string.len(result) ~= string.len(data) then + TriggerEvent('qb-log:server:CreateLog', 'anticheat', 'SQL Exploit Attempted', 'red', string.format('%s attempted to exploit SQL!', player.PlayerData.license)) + return false + end + return true +end + +for functionName, func in pairs(QBCore.Functions) do + if type(func) == 'function' then + exports(functionName, func) + end +end + +-- Access a specific function directly: +-- exports['qb-core']:Notify(source, 'Hello Player!') diff --git a/resources/[core]/qb-core/server/main.lua b/resources/[core]/qb-core/server/main.lua new file mode 100644 index 0000000..d6228e5 --- /dev/null +++ b/resources/[core]/qb-core/server/main.lua @@ -0,0 +1,49 @@ +QBCore = {} +QBCore.Config = QBConfig +QBCore.Shared = QBShared +QBCore.ClientCallbacks = {} +QBCore.ServerCallbacks = {} + +-- Get the full QBCore object (default behavior): +-- local QBCore = GetCoreObject() + +-- Get only specific parts of QBCore: +-- local QBCore = GetCoreObject({'Players', 'Config'}) + +local function GetCoreObject(filters) + if not filters then return QBCore end + local results = {} + for i = 1, #filters do + local key = filters[i] + if QBCore[key] then + results[key] = QBCore[key] + end + end + return results +end +exports('GetCoreObject', GetCoreObject) + +local function GetSharedItems() + return QBShared.Items +end +exports('GetSharedItems', GetSharedItems) + +local function GetSharedVehicles() + return QBShared.Vehicles +end +exports('GetSharedVehicles', GetSharedVehicles) + +local function GetSharedWeapons() + return QBShared.Weapons +end +exports('GetSharedWeapons', GetSharedWeapons) + +local function GetSharedJobs() + return QBShared.Jobs +end +exports('GetSharedJobs', GetSharedJobs) + +local function GetSharedGangs() + return QBShared.Gangs +end +exports('GetSharedGangs', GetSharedGangs) diff --git a/resources/[core]/qb-core/server/player.lua b/resources/[core]/qb-core/server/player.lua new file mode 100644 index 0000000..4f73c0d --- /dev/null +++ b/resources/[core]/qb-core/server/player.lua @@ -0,0 +1,666 @@ +QBCore.Players = {} +QBCore.Player = {} + +-- On player login get their data or set defaults +-- Don't touch any of this unless you know what you are doing +-- Will cause major issues! + +local resourceName = GetCurrentResourceName() +function QBCore.Player.Login(source, citizenid, newData) + if source and source ~= '' then + if citizenid then + local license = QBCore.Functions.GetIdentifier(source, 'license') + local PlayerData = MySQL.prepare.await('SELECT * FROM players where citizenid = ?', { citizenid }) + if PlayerData and license == PlayerData.license then + PlayerData.money = json.decode(PlayerData.money) + PlayerData.job = json.decode(PlayerData.job) + PlayerData.gang = json.decode(PlayerData.gang) + PlayerData.position = json.decode(PlayerData.position) + PlayerData.metadata = json.decode(PlayerData.metadata) + PlayerData.charinfo = json.decode(PlayerData.charinfo) + QBCore.Player.CheckPlayerData(source, PlayerData) + else + DropPlayer(source, Lang:t('info.exploit_dropped')) + TriggerEvent('qb-log:server:CreateLog', 'anticheat', 'Anti-Cheat', 'white', GetPlayerName(source) .. ' Has Been Dropped For Character Joining Exploit', false) + end + else + QBCore.Player.CheckPlayerData(source, newData) + end + return true + else + QBCore.ShowError(resourceName, 'ERROR QBCORE.PLAYER.LOGIN - NO SOURCE GIVEN!') + return false + end +end + +function QBCore.Player.GetOfflinePlayer(citizenid) + if citizenid then + local PlayerData = MySQL.prepare.await('SELECT * FROM players where citizenid = ?', { citizenid }) + if PlayerData then + PlayerData.money = json.decode(PlayerData.money) + PlayerData.job = json.decode(PlayerData.job) + PlayerData.gang = json.decode(PlayerData.gang) + PlayerData.position = json.decode(PlayerData.position) + PlayerData.metadata = json.decode(PlayerData.metadata) + PlayerData.charinfo = json.decode(PlayerData.charinfo) + return QBCore.Player.CheckPlayerData(nil, PlayerData) + end + end + return nil +end + +function QBCore.Player.GetPlayerByLicense(license) + if license then + local source = QBCore.Functions.GetSource(license) + if source > 0 then + return QBCore.Players[source] + else + return QBCore.Player.GetOfflinePlayerByLicense(license) + end + end + return nil +end + +function QBCore.Player.GetOfflinePlayerByLicense(license) + if license then + local PlayerData = MySQL.prepare.await('SELECT * FROM players where license = ?', { license }) + if PlayerData then + PlayerData.money = json.decode(PlayerData.money) + PlayerData.job = json.decode(PlayerData.job) + PlayerData.gang = json.decode(PlayerData.gang) + PlayerData.position = json.decode(PlayerData.position) + PlayerData.metadata = json.decode(PlayerData.metadata) + PlayerData.charinfo = json.decode(PlayerData.charinfo) + return QBCore.Player.CheckPlayerData(nil, PlayerData) + end + end + return nil +end + +local function applyDefaults(playerData, defaults) + for key, value in pairs(defaults) do + if type(value) == 'function' then + playerData[key] = playerData[key] or value() + elseif type(value) == 'table' then + playerData[key] = playerData[key] or {} + applyDefaults(playerData[key], value) + else + playerData[key] = playerData[key] or value + end + end +end + +function QBCore.Player.CheckPlayerData(source, PlayerData) + PlayerData = PlayerData or {} + local Offline = not source + + if source then + PlayerData.source = source + PlayerData.license = PlayerData.license or QBCore.Functions.GetIdentifier(source, 'license') + PlayerData.name = GetPlayerName(source) + end + + local validatedJob = false + if PlayerData.job and PlayerData.job.name ~= nil and PlayerData.job.grade and PlayerData.job.grade.level ~= nil then + local jobInfo = QBCore.Shared.Jobs[PlayerData.job.name] + + if jobInfo then + local jobGradeInfo = jobInfo.grades[tostring(PlayerData.job.grade.level)] + if jobGradeInfo then + PlayerData.job.label = jobInfo.label + PlayerData.job.grade.name = jobGradeInfo.name + PlayerData.job.payment = jobGradeInfo.payment + PlayerData.job.grade.isboss = jobGradeInfo.isboss or false + PlayerData.job.isboss = jobGradeInfo.isboss or false + validatedJob = true + end + end + end + + if validatedJob == false then + -- set to nil, as the default job (unemployed) will be added by `applyDefaults` + PlayerData.job = nil + end + + local validatedGang = false + if PlayerData.gang and PlayerData.gang.name ~= nil and PlayerData.gang.grade and PlayerData.gang.grade.level ~= nil then + local gangInfo = QBCore.Shared.Gangs[PlayerData.gang.name] + + if gangInfo then + local gangGradeInfo = gangInfo.grades[tostring(PlayerData.gang.grade.level)] + if gangGradeInfo then + PlayerData.gang.label = gangInfo.label + PlayerData.gang.grade.name = gangGradeInfo.name + PlayerData.gang.payment = gangGradeInfo.payment + PlayerData.gang.grade.isboss = gangGradeInfo.isboss or false + PlayerData.gang.isboss = gangGradeInfo.isboss or false + validatedGang = true + end + end + end + + if validatedGang == false then + -- set to nil, as the default gang (unemployed) will be added by `applyDefaults` + PlayerData.gang = nil + end + + applyDefaults(PlayerData, QBCore.Config.Player.PlayerDefaults) + + if GetResourceState('qb-inventory') ~= 'missing' then + PlayerData.items = exports['qb-inventory']:LoadInventory(PlayerData.source, PlayerData.citizenid) + end + + return QBCore.Player.CreatePlayer(PlayerData, Offline) +end + +-- On player logout + +function QBCore.Player.Logout(source) + TriggerClientEvent('QBCore:Client:OnPlayerUnload', source) + TriggerEvent('QBCore:Server:OnPlayerUnload', source) + TriggerClientEvent('QBCore:Player:UpdatePlayerData', source) + Wait(200) + QBCore.Players[source] = nil +end + +-- Create a new character +-- Don't touch any of this unless you know what you are doing +-- Will cause major issues! + +function QBCore.Player.CreatePlayer(PlayerData, Offline) + local self = {} + self.Functions = {} + self.PlayerData = PlayerData + self.Offline = Offline + + function self.Functions.UpdatePlayerData() + if self.Offline then return end + TriggerEvent('QBCore:Player:SetPlayerData', self.PlayerData) + TriggerClientEvent('QBCore:Player:SetPlayerData', self.PlayerData.source, self.PlayerData) + end + + function self.Functions.SetJob(job, grade) + job = job:lower() + grade = grade or '0' + if not QBCore.Shared.Jobs[job] then return false end + self.PlayerData.job = { + name = job, + label = QBCore.Shared.Jobs[job].label, + onduty = QBCore.Shared.Jobs[job].defaultDuty, + type = QBCore.Shared.Jobs[job].type or 'none', + grade = { + name = 'No Grades', + level = 0, + payment = 30, + isboss = false + } + } + local gradeKey = tostring(grade) + local jobGradeInfo = QBCore.Shared.Jobs[job].grades[gradeKey] + if jobGradeInfo then + self.PlayerData.job.grade.name = jobGradeInfo.name + self.PlayerData.job.grade.level = tonumber(gradeKey) + self.PlayerData.job.grade.payment = jobGradeInfo.payment + self.PlayerData.job.grade.isboss = jobGradeInfo.isboss or false + self.PlayerData.job.isboss = jobGradeInfo.isboss or false + end + + if not self.Offline then + self.Functions.UpdatePlayerData() + TriggerEvent('QBCore:Server:OnJobUpdate', self.PlayerData.source, self.PlayerData.job) + TriggerClientEvent('QBCore:Client:OnJobUpdate', self.PlayerData.source, self.PlayerData.job) + end + + return true + end + + function self.Functions.SetGang(gang, grade) + gang = gang:lower() + grade = grade or '0' + if not QBCore.Shared.Gangs[gang] then return false end + self.PlayerData.gang = { + name = gang, + label = QBCore.Shared.Gangs[gang].label, + grade = { + name = 'No Grades', + level = 0, + isboss = false + } + } + local gradeKey = tostring(grade) + local gangGradeInfo = QBCore.Shared.Gangs[gang].grades[gradeKey] + if gangGradeInfo then + self.PlayerData.gang.grade.name = gangGradeInfo.name + self.PlayerData.gang.grade.level = tonumber(gradeKey) + self.PlayerData.gang.grade.isboss = gangGradeInfo.isboss or false + self.PlayerData.gang.isboss = gangGradeInfo.isboss or false + end + + if not self.Offline then + self.Functions.UpdatePlayerData() + TriggerEvent('QBCore:Server:OnGangUpdate', self.PlayerData.source, self.PlayerData.gang) + TriggerClientEvent('QBCore:Client:OnGangUpdate', self.PlayerData.source, self.PlayerData.gang) + end + + return true + end + + function self.Functions.Notify(text, type, length) + TriggerClientEvent('QBCore:Notify', self.PlayerData.source, text, type, length) + end + + function self.Functions.HasItem(items, amount) + return QBCore.Functions.HasItem(self.PlayerData.source, items, amount) + end + + function self.Functions.GetName() + local charinfo = self.PlayerData.charinfo + return charinfo.firstname .. ' ' .. charinfo.lastname + end + + function self.Functions.SetJobDuty(onDuty) + self.PlayerData.job.onduty = not not onDuty + TriggerEvent('QBCore:Server:OnJobUpdate', self.PlayerData.source, self.PlayerData.job) + TriggerClientEvent('QBCore:Client:OnJobUpdate', self.PlayerData.source, self.PlayerData.job) + self.Functions.UpdatePlayerData() + end + + function self.Functions.SetPlayerData(key, val) + if not key or type(key) ~= 'string' then return end + self.PlayerData[key] = val + self.Functions.UpdatePlayerData() + end + + function self.Functions.SetMetaData(meta, val) + if not meta or type(meta) ~= 'string' then return end + if meta == 'hunger' or meta == 'thirst' then + val = val > 100 and 100 or val + end + self.PlayerData.metadata[meta] = val + self.Functions.UpdatePlayerData() + end + + function self.Functions.GetMetaData(meta) + if not meta or type(meta) ~= 'string' then return end + return self.PlayerData.metadata[meta] + end + + function self.Functions.AddRep(rep, amount) + if not rep or not amount then return end + local addAmount = tonumber(amount) + local currentRep = self.PlayerData.metadata['rep'][rep] or 0 + self.PlayerData.metadata['rep'][rep] = currentRep + addAmount + self.Functions.UpdatePlayerData() + end + + function self.Functions.RemoveRep(rep, amount) + if not rep or not amount then return end + local removeAmount = tonumber(amount) + local currentRep = self.PlayerData.metadata['rep'][rep] or 0 + if currentRep - removeAmount < 0 then + self.PlayerData.metadata['rep'][rep] = 0 + else + self.PlayerData.metadata['rep'][rep] = currentRep - removeAmount + end + self.Functions.UpdatePlayerData() + end + + function self.Functions.GetRep(rep) + if not rep then return end + return self.PlayerData.metadata['rep'][rep] or 0 + end + + function self.Functions.AddMoney(moneytype, amount, reason) + reason = reason or 'unknown' + moneytype = moneytype:lower() + amount = tonumber(amount) + if amount < 0 then return end + if not self.PlayerData.money[moneytype] then return false end + self.PlayerData.money[moneytype] = self.PlayerData.money[moneytype] + amount + + if not self.Offline then + self.Functions.UpdatePlayerData() + if amount > 100000 then + TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'AddMoney', 'lightgreen', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') added, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason, true) + else + TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'AddMoney', 'lightgreen', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') added, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason) + end + TriggerClientEvent('hud:client:OnMoneyChange', self.PlayerData.source, moneytype, amount, false) + TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, 'add', reason) + TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, 'add', reason) + end + + return true + end + + function self.Functions.RemoveMoney(moneytype, amount, reason) + reason = reason or 'unknown' + moneytype = moneytype:lower() + amount = tonumber(amount) + if amount < 0 then return end + if not self.PlayerData.money[moneytype] then return false end + for _, mtype in pairs(QBCore.Config.Money.DontAllowMinus) do + if mtype == moneytype then + if (self.PlayerData.money[moneytype] - amount) < 0 then + return false + end + end + end + if self.PlayerData.money[moneytype] - amount < QBCore.Config.Money.MinusLimit then return false end + self.PlayerData.money[moneytype] = self.PlayerData.money[moneytype] - amount + + if not self.Offline then + self.Functions.UpdatePlayerData() + if amount > 100000 then + TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'RemoveMoney', 'red', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') removed, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason, true) + else + TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'RemoveMoney', 'red', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') removed, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason) + end + TriggerClientEvent('hud:client:OnMoneyChange', self.PlayerData.source, moneytype, amount, true) + if moneytype == 'bank' then + TriggerClientEvent('qb-phone:client:RemoveBankMoney', self.PlayerData.source, amount) + end + TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, 'remove', reason) + TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, 'remove', reason) + end + + return true + end + + function self.Functions.SetMoney(moneytype, amount, reason) + reason = reason or 'unknown' + moneytype = moneytype:lower() + amount = tonumber(amount) + if amount < 0 then return false end + if not self.PlayerData.money[moneytype] then return false end + local difference = amount - self.PlayerData.money[moneytype] + self.PlayerData.money[moneytype] = amount + + if not self.Offline then + self.Functions.UpdatePlayerData() + TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'SetMoney', 'green', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') set, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason) + TriggerClientEvent('hud:client:OnMoneyChange', self.PlayerData.source, moneytype, math.abs(difference), difference < 0) + TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, 'set', reason) + TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, 'set', reason) + end + + return true + end + + function self.Functions.GetMoney(moneytype) + if not moneytype then return false end + moneytype = moneytype:lower() + return self.PlayerData.money[moneytype] + end + + function self.Functions.Save() + if self.Offline then + QBCore.Player.SaveOffline(self.PlayerData) + else + QBCore.Player.Save(self.PlayerData.source) + end + end + + function self.Functions.Logout() + if self.Offline then return end + QBCore.Player.Logout(self.PlayerData.source) + end + + function self.Functions.AddMethod(methodName, handler) + self.Functions[methodName] = handler + end + + function self.Functions.AddField(fieldName, data) + self[fieldName] = data + end + + if self.Offline then + return self + else + QBCore.Players[self.PlayerData.source] = self + QBCore.Player.Save(self.PlayerData.source) + TriggerEvent('QBCore:Server:PlayerLoaded', self) + self.Functions.UpdatePlayerData() + end +end + +-- Add a new function to the Functions table of the player class +-- Use-case: +--[[ + AddEventHandler('QBCore:Server:PlayerLoaded', function(Player) + QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, "functionName", function(oneArg, orMore) + -- do something here + end) + end) +]] + +function QBCore.Functions.AddPlayerMethod(ids, methodName, handler) + local idType = type(ids) + if idType == 'number' then + if ids == -1 then + for _, v in pairs(QBCore.Players) do + v.Functions.AddMethod(methodName, handler) + end + else + if not QBCore.Players[ids] then return end + + QBCore.Players[ids].Functions.AddMethod(methodName, handler) + end + elseif idType == 'table' and table.type(ids) == 'array' then + for i = 1, #ids do + QBCore.Functions.AddPlayerMethod(ids[i], methodName, handler) + end + end +end + +-- Add a new field table of the player class +-- Use-case: +--[[ + AddEventHandler('QBCore:Server:PlayerLoaded', function(Player) + QBCore.Functions.AddPlayerField(Player.PlayerData.source, "fieldName", "fieldData") + end) +]] + +function QBCore.Functions.AddPlayerField(ids, fieldName, data) + local idType = type(ids) + if idType == 'number' then + if ids == -1 then + for _, v in pairs(QBCore.Players) do + v.Functions.AddField(fieldName, data) + end + else + if not QBCore.Players[ids] then return end + + QBCore.Players[ids].Functions.AddField(fieldName, data) + end + elseif idType == 'table' and table.type(ids) == 'array' then + for i = 1, #ids do + QBCore.Functions.AddPlayerField(ids[i], fieldName, data) + end + end +end + +-- Save player info to database (make sure citizenid is the primary key in your database) + +function QBCore.Player.Save(source) + local ped = GetPlayerPed(source) + local pcoords = GetEntityCoords(ped) + local PlayerData = QBCore.Players[source].PlayerData + if PlayerData then + MySQL.insert('INSERT INTO players (citizenid, cid, license, name, money, charinfo, job, gang, position, metadata) VALUES (:citizenid, :cid, :license, :name, :money, :charinfo, :job, :gang, :position, :metadata) ON DUPLICATE KEY UPDATE cid = :cid, name = :name, money = :money, charinfo = :charinfo, job = :job, gang = :gang, position = :position, metadata = :metadata', { + citizenid = PlayerData.citizenid, + cid = tonumber(PlayerData.cid), + license = PlayerData.license, + name = PlayerData.name, + money = json.encode(PlayerData.money), + charinfo = json.encode(PlayerData.charinfo), + job = json.encode(PlayerData.job), + gang = json.encode(PlayerData.gang), + position = json.encode(pcoords), + metadata = json.encode(PlayerData.metadata) + }) + if GetResourceState('qb-inventory') ~= 'missing' then exports['qb-inventory']:SaveInventory(source) end + QBCore.ShowSuccess(resourceName, PlayerData.name .. ' PLAYER SAVED!') + else + QBCore.ShowError(resourceName, 'ERROR QBCORE.PLAYER.SAVE - PLAYERDATA IS EMPTY!') + end +end + +function QBCore.Player.SaveOffline(PlayerData) + if PlayerData then + MySQL.insert('INSERT INTO players (citizenid, cid, license, name, money, charinfo, job, gang, position, metadata) VALUES (:citizenid, :cid, :license, :name, :money, :charinfo, :job, :gang, :position, :metadata) ON DUPLICATE KEY UPDATE cid = :cid, name = :name, money = :money, charinfo = :charinfo, job = :job, gang = :gang, position = :position, metadata = :metadata', { + citizenid = PlayerData.citizenid, + cid = tonumber(PlayerData.cid), + license = PlayerData.license, + name = PlayerData.name, + money = json.encode(PlayerData.money), + charinfo = json.encode(PlayerData.charinfo), + job = json.encode(PlayerData.job), + gang = json.encode(PlayerData.gang), + position = json.encode(PlayerData.position), + metadata = json.encode(PlayerData.metadata) + }) + if GetResourceState('qb-inventory') ~= 'missing' then exports['qb-inventory']:SaveInventory(PlayerData, true) end + QBCore.ShowSuccess(resourceName, PlayerData.name .. ' OFFLINE PLAYER SAVED!') + else + QBCore.ShowError(resourceName, 'ERROR QBCORE.PLAYER.SAVEOFFLINE - PLAYERDATA IS EMPTY!') + end +end + +-- Delete character + +local playertables = { -- Add tables as needed + { table = 'players' }, + { table = 'apartments' }, + { table = 'bank_accounts' }, + { table = 'crypto_transactions' }, + { table = 'phone_invoices' }, + { table = 'phone_messages' }, + { table = 'playerskins' }, + { table = 'player_contacts' }, + { table = 'player_houses' }, + { table = 'player_mails' }, + { table = 'player_outfits' }, + { table = 'player_vehicles' } +} + +function QBCore.Player.DeleteCharacter(source, citizenid) + local license = QBCore.Functions.GetIdentifier(source, 'license') + local result = MySQL.scalar.await('SELECT license FROM players where citizenid = ?', { citizenid }) + if license == result then + local query = 'DELETE FROM %s WHERE citizenid = ?' + local tableCount = #playertables + local queries = table.create(tableCount, 0) + + for i = 1, tableCount do + local v = playertables[i] + queries[i] = { query = query:format(v.table), values = { citizenid } } + end + + MySQL.transaction(queries, function(result2) + if result2 then + TriggerEvent('qb-log:server:CreateLog', 'joinleave', 'Character Deleted', 'red', '**' .. GetPlayerName(source) .. '** ' .. license .. ' deleted **' .. citizenid .. '**..') + end + end) + else + DropPlayer(source, Lang:t('info.exploit_dropped')) + TriggerEvent('qb-log:server:CreateLog', 'anticheat', 'Anti-Cheat', 'white', GetPlayerName(source) .. ' Has Been Dropped For Character Deletion Exploit', true) + end +end + +function QBCore.Player.ForceDeleteCharacter(citizenid) + local result = MySQL.scalar.await('SELECT license FROM players where citizenid = ?', { citizenid }) + if result then + local query = 'DELETE FROM %s WHERE citizenid = ?' + local tableCount = #playertables + local queries = table.create(tableCount, 0) + local Player = QBCore.Functions.GetPlayerByCitizenId(citizenid) + + if Player then + DropPlayer(Player.PlayerData.source, 'An admin deleted the character which you are currently using') + end + for i = 1, tableCount do + local v = playertables[i] + queries[i] = { query = query:format(v.table), values = { citizenid } } + end + + MySQL.transaction(queries, function(result2) + if result2 then + TriggerEvent('qb-log:server:CreateLog', 'joinleave', 'Character Force Deleted', 'red', 'Character **' .. citizenid .. '** got deleted') + end + end) + end +end + +-- Inventory Backwards Compatibility + +function QBCore.Player.SaveInventory(source) + if GetResourceState('qb-inventory') == 'missing' then return end + exports['qb-inventory']:SaveInventory(source, false) +end + +function QBCore.Player.SaveOfflineInventory(PlayerData) + if GetResourceState('qb-inventory') == 'missing' then return end + exports['qb-inventory']:SaveInventory(PlayerData, true) +end + +function QBCore.Player.GetTotalWeight(items) + if GetResourceState('qb-inventory') == 'missing' then return end + return exports['qb-inventory']:GetTotalWeight(items) +end + +function QBCore.Player.GetSlotsByItem(items, itemName) + if GetResourceState('qb-inventory') == 'missing' then return end + return exports['qb-inventory']:GetSlotsByItem(items, itemName) +end + +function QBCore.Player.GetFirstSlotByItem(items, itemName) + if GetResourceState('qb-inventory') == 'missing' then return end + return exports['qb-inventory']:GetFirstSlotByItem(items, itemName) +end + +-- Util Functions + +function QBCore.Player.CreateCitizenId() + local CitizenId = tostring(QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(5)):upper() + local result = MySQL.prepare.await('SELECT EXISTS(SELECT 1 FROM players WHERE citizenid = ?) AS uniqueCheck', { CitizenId }) + if result == 0 then return CitizenId end + return QBCore.Player.CreateCitizenId() +end + +function QBCore.Functions.CreateAccountNumber() + local AccountNumber = 'US0' .. math.random(1, 9) .. 'QBCore' .. math.random(1111, 9999) .. math.random(1111, 9999) .. math.random(11, 99) + local result = MySQL.prepare.await('SELECT EXISTS(SELECT 1 FROM players WHERE JSON_UNQUOTE(JSON_EXTRACT(charinfo, "$.account")) = ?) AS uniqueCheck', { AccountNumber }) + if result == 0 then return AccountNumber end + return QBCore.Functions.CreateAccountNumber() +end + +function QBCore.Functions.CreatePhoneNumber() + local PhoneNumber = math.random(100, 999) .. math.random(1000000, 9999999) + local result = MySQL.prepare.await('SELECT EXISTS(SELECT 1 FROM players WHERE JSON_UNQUOTE(JSON_EXTRACT(charinfo, "$.phone")) = ?) AS uniqueCheck', { PhoneNumber }) + if result == 0 then return PhoneNumber end + return QBCore.Functions.CreatePhoneNumber() +end + +function QBCore.Player.CreateFingerId() + local FingerId = tostring(QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(1) .. QBCore.Shared.RandomInt(2) .. QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(4)) + local result = MySQL.prepare.await('SELECT EXISTS(SELECT 1 FROM players WHERE JSON_UNQUOTE(JSON_EXTRACT(metadata, "$.fingerprint")) = ?) AS uniqueCheck', { FingerId }) + if result == 0 then return FingerId end + return QBCore.Player.CreateFingerId() +end + +function QBCore.Player.CreateWalletId() + local WalletId = 'QB-' .. math.random(11111111, 99999999) + local result = MySQL.prepare.await('SELECT EXISTS(SELECT 1 FROM players WHERE JSON_UNQUOTE(JSON_EXTRACT(metadata, "$.walletid")) = ?) AS uniqueCheck', { WalletId }) + if result == 0 then return WalletId end + return QBCore.Player.CreateWalletId() +end + +function QBCore.Player.CreateSerialNumber() + local SerialNumber = math.random(11111111, 99999999) + local result = MySQL.prepare.await('SELECT EXISTS(SELECT 1 FROM players WHERE JSON_UNQUOTE(JSON_EXTRACT(metadata, "$.phonedata.SerialNumber")) = ?) AS uniqueCheck', { SerialNumber }) + if result == 0 then return SerialNumber end + return QBCore.Player.CreateSerialNumber() +end + +PaycheckInterval() -- This starts the paycheck system diff --git a/resources/[core]/qb-core/shared/gangs.lua b/resources/[core]/qb-core/shared/gangs.lua new file mode 100644 index 0000000..70dc5a9 --- /dev/null +++ b/resources/[core]/qb-core/shared/gangs.lua @@ -0,0 +1,58 @@ +QBShared = QBShared or {} +QBShared.Gangs = { + none = { label = 'No Gang', grades = { ['0'] = { name = 'Unaffiliated' } } }, + lostmc = { + label = 'The Lost MC', + grades = { + ['0'] = { name = 'Recruit' }, + ['1'] = { name = 'Enforcer' }, + ['2'] = { name = 'Shot Caller' }, + ['3'] = { name = 'Boss', isboss = true }, + }, + }, + ballas = { + label = 'Ballas', + grades = { + ['0'] = { name = 'Recruit' }, + ['1'] = { name = 'Enforcer' }, + ['2'] = { name = 'Shot Caller' }, + ['3'] = { name = 'Boss', isboss = true }, + }, + }, + vagos = { + label = 'Vagos', + grades = { + ['0'] = { name = 'Recruit' }, + ['1'] = { name = 'Enforcer' }, + ['2'] = { name = 'Shot Caller' }, + ['3'] = { name = 'Boss', isboss = true }, + }, + }, + cartel = { + label = 'Cartel', + grades = { + ['0'] = { name = 'Recruit' }, + ['1'] = { name = 'Enforcer' }, + ['2'] = { name = 'Shot Caller' }, + ['3'] = { name = 'Boss', isboss = true }, + }, + }, + families = { + label = 'Families', + grades = { + ['0'] = { name = 'Recruit' }, + ['1'] = { name = 'Enforcer' }, + ['2'] = { name = 'Shot Caller' }, + ['3'] = { name = 'Boss', isboss = true }, + }, + }, + triads = { + label = 'Triads', + grades = { + ['0'] = { name = 'Recruit' }, + ['1'] = { name = 'Enforcer' }, + ['2'] = { name = 'Shot Caller' }, + ['3'] = { name = 'Boss', isboss = true }, + }, + } +} diff --git a/resources/[core]/qb-core/shared/items.lua b/resources/[core]/qb-core/shared/items.lua new file mode 100644 index 0000000..84de923 --- /dev/null +++ b/resources/[core]/qb-core/shared/items.lua @@ -0,0 +1,385 @@ +QBShared = QBShared or {} +QBShared.Items = { + -- WEAPONS + -- Melee + weapon_unarmed = { name = 'weapon_unarmed', label = 'Fists', weight = 1000, type = 'weapon', ammotype = nil, image = 'placeholder.png', unique = true, useable = false, description = 'Fisticuffs' }, + weapon_dagger = { name = 'weapon_dagger', label = 'Dagger', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_dagger.png', unique = true, useable = false, description = 'A short knife with a pointed and edged blade, used as a weapon' }, + weapon_bat = { name = 'weapon_bat', label = 'Bat', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_bat.png', unique = true, useable = false, description = 'Used for hitting a ball in sports (or other things)' }, + weapon_bottle = { name = 'weapon_bottle', label = 'Broken Bottle', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_bottle.png', unique = true, useable = false, description = 'A broken bottle' }, + weapon_crowbar = { name = 'weapon_crowbar', label = 'Crowbar', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_crowbar.png', unique = true, useable = false, description = 'An iron bar with a flattened end, used as a lever' }, + weapon_flashlight = { name = 'weapon_flashlight', label = 'Flashlight', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_flashlight.png', unique = true, useable = false, description = 'A battery-operated portable light' }, + weapon_golfclub = { name = 'weapon_golfclub', label = 'Golfclub', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_golfclub.png', unique = true, useable = false, description = 'A club used to hit the ball in golf' }, + weapon_hammer = { name = 'weapon_hammer', label = 'Hammer', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_hammer.png', unique = true, useable = false, description = 'Used for jobs such as breaking things (legs) and driving in nails' }, + weapon_hatchet = { name = 'weapon_hatchet', label = 'Hatchet', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_hatchet.png', unique = true, useable = false, description = 'A small axe with a short handle for use in one hand' }, + weapon_knuckle = { name = 'weapon_knuckle', label = 'Knuckle', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_knuckle.png', unique = true, useable = false, description = 'A metal guard worn over the knuckles in fighting, especially to increase the effect of the blows' }, + weapon_knife = { name = 'weapon_knife', label = 'Knife', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_knife.png', unique = true, useable = false, description = 'An instrument composed of a blade fixed into a handle, used for cutting or as a weapon' }, + weapon_machete = { name = 'weapon_machete', label = 'Machete', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_machete.png', unique = true, useable = false, description = 'A broad, heavy knife used as a weapon' }, + weapon_switchblade = { name = 'weapon_switchblade', label = 'Switchblade', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_switchblade.png', unique = true, useable = false, description = 'A knife with a blade that springs out from the handle when a button is pressed' }, + weapon_nightstick = { name = 'weapon_nightstick', label = 'Nightstick', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_nightstick.png', unique = true, useable = false, description = 'A police officer\'s club or billy' }, + weapon_wrench = { name = 'weapon_wrench', label = 'Wrench', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_wrench.png', unique = true, useable = false, description = 'A tool used for gripping and turning nuts, bolts, pipes, etc' }, + weapon_battleaxe = { name = 'weapon_battleaxe', label = 'Battle Axe', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_battleaxe.png', unique = true, useable = false, description = 'A large broad-bladed axe used in ancient warfare' }, + weapon_poolcue = { name = 'weapon_poolcue', label = 'Poolcue', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_poolcue.png', unique = true, useable = false, description = 'A stick used to strike a ball, usually the cue ball (or other things)' }, + weapon_briefcase = { name = 'weapon_briefcase', label = 'Briefcase', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_briefcase.png', unique = true, useable = false, description = 'A briefcase for storing important documents' }, + weapon_briefcase_02 = { name = 'weapon_briefcase_02', label = 'Suitcase', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_briefcase2.png', unique = true, useable = false, description = 'Wonderfull for nice vacation to Liberty City' }, + weapon_garbagebag = { name = 'weapon_garbagebag', label = 'Garbage Bag', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_garbagebag.png', unique = true, useable = false, description = 'A garbage bag' }, + weapon_handcuffs = { name = 'weapon_handcuffs', label = 'Handcuffs', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_handcuffs.png', unique = true, useable = false, description = 'A pair of lockable linked metal rings for securing a prisoner\'s wrists' }, + weapon_bread = { name = 'weapon_bread', label = 'Baquette', weight = 1000, type = 'weapon', ammotype = nil, image = 'baquette.png', unique = true, useable = false, description = 'Bread...?' }, + weapon_stone_hatchet = { name = 'weapon_stone_hatchet', label = 'Stone Hatchet', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_stone_hatchet.png', unique = true, useable = true, description = 'Stone Hatchet' }, + weapon_candycane = { name = 'weapon_candycane', label = 'Candy Cane', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_candycane', unique = true, useable = true, description = 'Candy Cane' }, + + -- Handguns + weapon_pistol = { name = 'weapon_pistol', label = 'Walther P99', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_pistol.png', unique = true, useable = false, description = 'A small firearm designed to be held in one hand' }, + weapon_pistol_mk2 = { name = 'weapon_pistol_mk2', label = 'Pistol Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_pistol_mk2.png', unique = true, useable = false, description = 'An upgraded small firearm designed to be held in one hand' }, + weapon_combatpistol = { name = 'weapon_combatpistol', label = 'Combat Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_combatpistol.png', unique = true, useable = false, description = 'A combat version small firearm designed to be held in one hand' }, + weapon_appistol = { name = 'weapon_appistol', label = 'AP Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_appistol.png', unique = true, useable = false, description = 'A small firearm designed to be held in one hand that is automatic' }, + weapon_stungun = { name = 'weapon_stungun', label = 'Taser', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_stungun.png', unique = true, useable = false, description = 'A weapon firing barbs attached by wires to batteries, causing temporary paralysis' }, + weapon_pistol50 = { name = 'weapon_pistol50', label = 'Pistol .50', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_pistol50.png', unique = true, useable = false, description = 'A .50 caliber firearm designed to be held with both hands' }, + weapon_snspistol = { name = 'weapon_snspistol', label = 'SNS Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_snspistol.png', unique = true, useable = false, description = 'A very small firearm designed to be easily concealed' }, + weapon_heavypistol = { name = 'weapon_heavypistol', label = 'Heavy Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_heavypistol.png', unique = true, useable = false, description = 'A hefty firearm designed to be held in one hand (or attempted)' }, + weapon_vintagepistol = { name = 'weapon_vintagepistol', label = 'Vintage Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_vintagepistol.png', unique = true, useable = false, description = 'An antique firearm designed to be held in one hand' }, + weapon_flaregun = { name = 'weapon_flaregun', label = 'Flare Gun', weight = 1000, type = 'weapon', ammotype = 'AMMO_FLARE', image = 'weapon_flaregun.png', unique = true, useable = false, description = 'A handgun for firing signal rockets' }, + weapon_marksmanpistol = { name = 'weapon_marksmanpistol', label = 'Marksman Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_marksmanpistol.png', unique = true, useable = false, description = 'A very accurate small firearm designed to be held in one hand' }, + weapon_revolver = { name = 'weapon_revolver', label = 'Revolver', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_revolver.png', unique = true, useable = false, description = 'A pistol with revolving chambers enabling several shots to be fired without reloading' }, + weapon_revolver_mk2 = { name = 'weapon_revolver_mk2', label = 'Violence', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_revolver_mk2.png', unique = true, useable = true, description = 'da Violence' }, + weapon_doubleaction = { name = 'weapon_doubleaction', label = 'Double Action Revolver', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_doubleaction.png', unique = true, useable = true, description = 'Double Action Revolver' }, + weapon_snspistol_mk2 = { name = 'weapon_snspistol_mk2', label = 'SNS Pistol Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_snspistol_mk2.png', unique = true, useable = true, description = 'SNS Pistol MK2' }, + weapon_raypistol = { name = 'weapon_raypistol', label = 'Up-n-Atomizer', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_raypistol.png', unique = true, useable = true, description = 'Weapon Raypistol' }, + weapon_ceramicpistol = { name = 'weapon_ceramicpistol', label = 'Ceramic Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_ceramicpistol.png', unique = true, useable = true, description = 'Weapon Ceramicpistol' }, + weapon_navyrevolver = { name = 'weapon_navyrevolver', label = 'Navy Revolver', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_navyrevolver.png', unique = true, useable = true, description = 'Weapon Navyrevolver' }, + weapon_gadgetpistol = { name = 'weapon_gadgetpistol', label = 'Perico Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_gadgetpistol.png', unique = true, useable = true, description = 'Weapon Gadgetpistol' }, + weapon_pistolxm3 = { name = 'weapon_pistolxm3', label = 'Pistol XM3', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_pistolxm3.png', unique = true, useable = true, description = 'Pistol XM3' }, + + -- Submachine Guns + weapon_microsmg = { name = 'weapon_microsmg', label = 'Micro SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_microsmg.png', unique = true, useable = false, description = 'A handheld light weight machine gun' }, + weapon_smg = { name = 'weapon_smg', label = 'SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_smg.png', unique = true, useable = false, description = 'A handheld light weight machine gun' }, + weapon_smg_mk2 = { name = 'weapon_smg_mk2', label = 'SMG Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_smg_mk2.png', unique = true, useable = true, description = 'SMG MK2' }, + weapon_assaultsmg = { name = 'weapon_assaultsmg', label = 'Assault SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_assaultsmg.png', unique = true, useable = false, description = 'An assault version of a handheld light weight machine gun' }, + weapon_combatpdw = { name = 'weapon_combatpdw', label = 'Combat PDW', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_combatpdw.png', unique = true, useable = false, description = 'A combat version of a handheld light weight machine gun' }, + weapon_machinepistol = { name = 'weapon_machinepistol', label = 'Tec-9', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_machinepistol.png', unique = true, useable = false, description = 'A self-loading pistol capable of burst or fully automatic fire' }, + weapon_minismg = { name = 'weapon_minismg', label = 'Mini SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_minismg.png', unique = true, useable = false, description = 'A mini handheld light weight machine gun' }, + weapon_raycarbine = { name = 'weapon_raycarbine', label = 'Unholy Hellbringer', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_raycarbine.png', unique = true, useable = true, description = 'Weapon Raycarbine' }, + + -- Shotguns + weapon_pumpshotgun = { name = 'weapon_pumpshotgun', label = 'Pump Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_pumpshotgun.png', unique = true, useable = false, description = 'A pump-action smoothbore gun for firing small shot at short range' }, + weapon_sawnoffshotgun = { name = 'weapon_sawnoffshotgun', label = 'Sawn-off Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_sawnoffshotgun.png', unique = true, useable = false, description = 'A sawn-off smoothbore gun for firing small shot at short range' }, + weapon_assaultshotgun = { name = 'weapon_assaultshotgun', label = 'Assault Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_assaultshotgun.png', unique = true, useable = false, description = 'An assault version of asmoothbore gun for firing small shot at short range' }, + weapon_bullpupshotgun = { name = 'weapon_bullpupshotgun', label = 'Bullpup Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_bullpupshotgun.png', unique = true, useable = false, description = 'A compact smoothbore gun for firing small shot at short range' }, + weapon_musket = { name = 'weapon_musket', label = 'Musket', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_musket.png', unique = true, useable = false, description = 'An infantryman\'s light gun with a long barrel, typically smooth-bored, muzzleloading, and fired from the shoulder' }, + weapon_heavyshotgun = { name = 'weapon_heavyshotgun', label = 'Heavy Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_heavyshotgun.png', unique = true, useable = false, description = 'A large smoothbore gun for firing small shot at short range' }, + weapon_dbshotgun = { name = 'weapon_dbshotgun', label = 'Double-barrel Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_dbshotgun.png', unique = true, useable = false, description = 'A shotgun with two parallel barrels, allowing two single shots to be fired in quick succession' }, + weapon_autoshotgun = { name = 'weapon_autoshotgun', label = 'Auto Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_autoshotgun.png', unique = true, useable = false, description = 'A shotgun capable of rapid continous fire' }, + weapon_pumpshotgun_mk2 = { name = 'weapon_pumpshotgun_mk2', label = 'Pumpshotgun Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_pumpshotgun_mk2.png', unique = true, useable = true, description = 'Pumpshotgun MK2' }, + weapon_combatshotgun = { name = 'weapon_combatshotgun', label = 'Combat Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_combatshotgun.png', unique = true, useable = true, description = 'Weapon Combatshotgun' }, + + -- Assault Rifles + weapon_assaultrifle = { name = 'weapon_assaultrifle', label = 'Assault Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_assaultrifle.png', unique = true, useable = false, description = 'A rapid-fire, magazine-fed automatic rifle designed for infantry use' }, + weapon_assaultrifle_mk2 = { name = 'weapon_assaultrifle_mk2', label = 'Assault Rifle Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_assaultrifle_mk2.png', unique = true, useable = true, description = 'Assault Rifle MK2' }, + weapon_carbinerifle = { name = 'weapon_carbinerifle', label = 'Carbine Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_carbinerifle.png', unique = true, useable = false, description = 'A light weight automatic rifle' }, + weapon_carbinerifle_mk2 = { name = 'weapon_carbinerifle_mk2', label = 'Carbine Rifle Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_carbinerifle_mk2.png', unique = true, useable = true, description = 'Carbine Rifle MK2' }, + weapon_advancedrifle = { name = 'weapon_advancedrifle', label = 'Advanced Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_advancedrifle.png', unique = true, useable = false, description = 'An assault version of a rapid-fire, magazine-fed automatic rifle designed for infantry use' }, + weapon_specialcarbine = { name = 'weapon_specialcarbine', label = 'Special Carbine', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_specialcarbine.png', unique = true, useable = false, description = 'An extremely versatile assault rifle for any combat situation' }, + weapon_bullpuprifle = { name = 'weapon_bullpuprifle', label = 'Bullpup Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_bullpuprifle.png', unique = true, useable = false, description = 'A compact automatic assault rifle' }, + weapon_compactrifle = { name = 'weapon_compactrifle', label = 'Compact Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_compactrifle.png', unique = true, useable = false, description = 'A compact version of an assault rifle' }, + weapon_specialcarbine_mk2 = { name = 'weapon_specialcarbine_mk2', label = 'Special Carbine Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_specialcarbine_mk2.png', unique = true, useable = true, description = 'Weapon Wpecialcarbine MK2' }, + weapon_bullpuprifle_mk2 = { name = 'weapon_bullpuprifle_mk2', label = 'Bullpup Rifle Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_bullpuprifle_mk2.png', unique = true, useable = true, description = 'Bull Puprifle MK2' }, + weapon_militaryrifle = { name = 'weapon_militaryrifle', label = 'Military Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_militaryrifle.png', unique = true, useable = true, description = 'Weapon Militaryrifle' }, + + -- Light Machine Guns + weapon_mg = { name = 'weapon_mg', label = 'Machinegun', weight = 1000, type = 'weapon', ammotype = 'AMMO_MG', image = 'weapon_mg.png', unique = true, useable = false, description = 'An automatic gun that fires bullets in rapid succession for as long as the trigger is pressed' }, + weapon_combatmg = { name = 'weapon_combatmg', label = 'Combat MG', weight = 1000, type = 'weapon', ammotype = 'AMMO_MG', image = 'weapon_combatmg.png', unique = true, useable = false, description = 'A combat version of an automatic gun that fires bullets in rapid succession for as long as the trigger is pressed' }, + weapon_gusenberg = { name = 'weapon_gusenberg', label = 'Thompson SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_MG', image = 'weapon_gusenberg.png', unique = true, useable = false, description = 'An automatic rifle commonly referred to as a tommy gun' }, + weapon_combatmg_mk2 = { name = 'weapon_combatmg_mk2', label = 'Combat MG Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_MG', image = 'weapon_combatmg_mk2.png', unique = true, useable = true, description = 'Weapon Combatmg MK2' }, + + -- Sniper Rifles + weapon_sniperrifle = { name = 'weapon_sniperrifle', label = 'Sniper Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_sniperrifle.png', unique = true, useable = false, description = 'A high-precision, long-range rifle' }, + weapon_heavysniper = { name = 'weapon_heavysniper', label = 'Heavy Sniper', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_heavysniper.png', unique = true, useable = false, description = 'An upgraded high-precision, long-range rifle' }, + weapon_marksmanrifle = { name = 'weapon_marksmanrifle', label = 'Marksman Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_marksmanrifle.png', unique = true, useable = false, description = 'A very accurate single-fire rifle' }, + weapon_remotesniper = { name = 'weapon_remotesniper', label = 'Remote Sniper', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER_REMOTE', image = 'weapon_remotesniper.png', unique = true, useable = false, description = 'A portable high-precision, long-range rifle' }, + weapon_heavysniper_mk2 = { name = 'weapon_heavysniper_mk2', label = 'Heavy Sniper Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_heavysniper_mk2.png', unique = true, useable = true, description = 'Weapon Heavysniper MK2' }, + weapon_marksmanrifle_mk2 = { name = 'weapon_marksmanrifle_mk2', label = 'Marksman Rifle Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_marksmanrifle_mk2.png', unique = true, useable = true, description = 'Weapon Marksmanrifle MK2' }, + + -- Heavy Weapons + weapon_rpg = { name = 'weapon_rpg', label = 'RPG', weight = 1000, type = 'weapon', ammotype = 'AMMO_RPG', image = 'weapon_rpg.png', unique = true, useable = false, description = 'A rocket-propelled grenade launcher' }, + weapon_grenadelauncher = { name = 'weapon_grenadelauncher', label = 'Grenade Launcher', weight = 1000, type = 'weapon', ammotype = 'AMMO_GRENADELAUNCHER', image = 'weapon_grenadelauncher.png', unique = true, useable = false, description = 'A weapon that fires a specially-designed large-caliber projectile, often with an explosive, smoke or gas warhead' }, + weapon_grenadelauncher_smoke = { name = 'weapon_grenadelauncher_smoke', label = 'Smoke Grenade Launcher', weight = 1000, type = 'weapon', ammotype = 'AMMO_GRENADELAUNCHER', image = 'weapon_smokegrenade.png', unique = true, useable = false, description = 'A bomb that produces a lot of smoke when it explodes' }, + weapon_minigun = { name = 'weapon_minigun', label = 'Minigun', weight = 1000, type = 'weapon', ammotype = 'AMMO_MINIGUN', image = 'weapon_minigun.png', unique = true, useable = false, description = 'A portable machine gun consisting of a rotating cluster of six barrels and capable of variable rates of fire of up to 6,000 rounds per minute' }, + weapon_firework = { name = 'weapon_firework', label = 'Firework Launcher', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_firework.png', unique = true, useable = false, description = 'A device containing gunpowder and other combustible chemicals that causes a spectacular explosion when ignited' }, + weapon_railgun = { name = 'weapon_railgun', label = 'Railgun', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_railgun.png', unique = true, useable = false, description = 'A weapon that uses electromagnetic force to launch high velocity projectiles' }, + weapon_railgunxm3 = { name = 'weapon_railgunxm3', label = 'Railgun XM3', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_railgunxm3.png', unique = true, useable = false, description = 'A weapon that uses electromagnetic force to launch high velocity projectiles' }, + weapon_hominglauncher = { name = 'weapon_hominglauncher', label = 'Homing Launcher', weight = 1000, type = 'weapon', ammotype = 'AMMO_STINGER', image = 'weapon_hominglauncher.png', unique = true, useable = false, description = 'A weapon fitted with an electronic device that enables it to find and hit a target' }, + weapon_compactlauncher = { name = 'weapon_compactlauncher', label = 'Compact Launcher', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_compactlauncher.png', unique = true, useable = false, description = 'A compact grenade launcher' }, + weapon_rayminigun = { name = 'weapon_rayminigun', label = 'Widowmaker', weight = 1000, type = 'weapon', ammotype = 'AMMO_MINIGUN', image = 'weapon_rayminigun.png', unique = true, useable = true, description = 'Weapon Rayminigun' }, + + -- Throwables + weapon_grenade = { name = 'weapon_grenade', label = 'Grenade', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_grenade.png', unique = true, useable = false, description = 'A handheld throwable bomb' }, + weapon_bzgas = { name = 'weapon_bzgas', label = 'BZ Gas', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_bzgas.png', unique = true, useable = false, description = 'A cannister of gas that causes extreme pain' }, + weapon_molotov = { name = 'weapon_molotov', label = 'Molotov', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_molotov.png', unique = true, useable = false, description = 'A crude bomb made of a bottle filled with a flammable liquid and fitted with a wick for lighting' }, + weapon_stickybomb = { name = 'weapon_stickybomb', label = 'C4', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_stickybomb.png', unique = true, useable = false, description = 'An explosive charge covered with an adhesive that when thrown against an object sticks until it explodes' }, + weapon_proxmine = { name = 'weapon_proxmine', label = 'Proxmine Grenade', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_proximitymine.png', unique = true, useable = false, description = 'A bomb placed on the ground that detonates when going within its proximity' }, + weapon_snowball = { name = 'weapon_snowball', label = 'Snowball', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_snowball.png', unique = true, useable = false, description = 'A ball of packed snow, especially one made for throwing at other people for fun' }, + weapon_pipebomb = { name = 'weapon_pipebomb', label = 'Pipe Bomb', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_pipebomb.png', unique = true, useable = false, description = 'A homemade bomb, the components of which are contained in a pipe' }, + weapon_ball = { name = 'weapon_ball', label = 'Ball', weight = 1000, type = 'weapon', ammotype = 'AMMO_BALL', image = 'weapon_ball.png', unique = true, useable = false, description = 'A solid or hollow spherical or egg-shaped object that is kicked, thrown, or hit in a game' }, + weapon_smokegrenade = { name = 'weapon_smokegrenade', label = 'Smoke Grenade', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_c4.png', unique = true, useable = false, description = 'An explosive charge that can be remotely detonated' }, + weapon_flare = { name = 'weapon_flare', label = 'Flare pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_FLARE', image = 'weapon_flare.png', unique = true, useable = false, description = 'A small pyrotechnic devices used for illumination and signalling' }, + + -- Miscellaneous + weapon_petrolcan = { name = 'weapon_petrolcan', label = 'Petrol Can', weight = 1000, type = 'weapon', ammotype = 'AMMO_PETROLCAN', image = 'weapon_petrolcan.png', unique = true, useable = false, description = 'A robust liquid container made from pressed steel' }, + weapon_fireextinguisher = { name = 'weapon_fireextinguisher', label = 'Fire Extinguisher', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_fireextinguisher.png', unique = true, useable = false, description = 'A portable device that discharges a jet of water, foam, gas, or other material to extinguish a fire' }, + weapon_hazardcan = { name = 'weapon_hazardcan', label = 'Hazardous Jerry Can', weight = 1000, type = 'weapon', ammotype = 'AMMO_PETROLCAN', image = 'weapon_hazardcan.png', unique = true, useable = true, description = 'Weapon Hazardcan' }, + + -- Weapon Attachments + clip_attachment = { name = 'clip_attachment', label = 'Clip', weight = 1000, type = 'item', image = 'clip_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A clip for a weapon' }, + drum_attachment = { name = 'drum_attachment', label = 'Drum', weight = 1000, type = 'item', image = 'drum_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A drum for a weapon' }, + flashlight_attachment = { name = 'flashlight_attachment', label = 'Flashlight', weight = 1000, type = 'item', image = 'flashlight_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A flashlight for a weapon' }, + suppressor_attachment = { name = 'suppressor_attachment', label = 'Suppressor', weight = 1000, type = 'item', image = 'suppressor_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A suppressor for a weapon' }, + smallscope_attachment = { name = 'smallscope_attachment', label = 'Small Scope', weight = 1000, type = 'item', image = 'smallscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A small scope for a weapon' }, + medscope_attachment = { name = 'medscope_attachment', label = 'Medium Scope', weight = 1000, type = 'item', image = 'medscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A medium scope for a weapon' }, + largescope_attachment = { name = 'largescope_attachment', label = 'Large Scope', weight = 1000, type = 'item', image = 'largescope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A large scope for a weapon' }, + holoscope_attachment = { name = 'holoscope_attachment', label = 'Holo Scope', weight = 1000, type = 'item', image = 'holoscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A holo scope for a weapon' }, + advscope_attachment = { name = 'advscope_attachment', label = 'Advanced Scope', weight = 1000, type = 'item', image = 'advscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'An advanced scope for a weapon' }, + nvscope_attachment = { name = 'nvscope_attachment', label = 'Night Vision Scope', weight = 1000, type = 'item', image = 'nvscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A night vision scope for a weapon' }, + thermalscope_attachment = { name = 'thermalscope_attachment', label = 'Thermal Scope', weight = 1000, type = 'item', image = 'thermalscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A thermal scope for a weapon' }, + flat_muzzle_brake = { name = 'flat_muzzle_brake', label = 'Flat Muzzle Brake', weight = 1000, type = 'item', image = 'flat_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, + tactical_muzzle_brake = { name = 'tactical_muzzle_brake', label = 'Tactical Muzzle Brake', weight = 1000, type = 'item', image = 'tactical_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brakee for a weapon' }, + fat_end_muzzle_brake = { name = 'fat_end_muzzle_brake', label = 'Fat End Muzzle Brake', weight = 1000, type = 'item', image = 'fat_end_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, + precision_muzzle_brake = { name = 'precision_muzzle_brake', label = 'Precision Muzzle Brake', weight = 1000, type = 'item', image = 'precision_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, + heavy_duty_muzzle_brake = { name = 'heavy_duty_muzzle_brake', label = 'HD Muzzle Brake', weight = 1000, type = 'item', image = 'heavy_duty_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, + slanted_muzzle_brake = { name = 'slanted_muzzle_brake', label = 'Slanted Muzzle Brake', weight = 1000, type = 'item', image = 'slanted_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, + split_end_muzzle_brake = { name = 'split_end_muzzle_brake', label = 'Split End Muzzle Brake', weight = 1000, type = 'item', image = 'split_end_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, + squared_muzzle_brake = { name = 'squared_muzzle_brake', label = 'Squared Muzzle Brake', weight = 1000, type = 'item', image = 'squared_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, + bellend_muzzle_brake = { name = 'bellend_muzzle_brake', label = 'Bellend Muzzle Brake', weight = 1000, type = 'item', image = 'bellend_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, + barrel_attachment = { name = 'barrel_attachment', label = 'Barrel', weight = 1000, type = 'item', image = 'barrel_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A barrel for a weapon' }, + grip_attachment = { name = 'grip_attachment', label = 'Grip', weight = 1000, type = 'item', image = 'grip_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A grip for a weapon' }, + comp_attachment = { name = 'comp_attachment', label = 'Compensator', weight = 1000, type = 'item', image = 'comp_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A compensator for a weapon' }, + luxuryfinish_attachment = { name = 'luxuryfinish_attachment', label = 'Luxury Finish', weight = 1000, type = 'item', image = 'luxuryfinish_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A luxury finish for a weapon' }, + digicamo_attachment = { name = 'digicamo_attachment', label = 'Digital Camo', weight = 1000, type = 'item', image = 'digicamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A digital camo for a weapon' }, + brushcamo_attachment = { name = 'brushcamo_attachment', label = 'Brushstroke Camo', weight = 1000, type = 'item', image = 'brushcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A brushstroke camo for a weapon' }, + woodcamo_attachment = { name = 'woodcamo_attachment', label = 'Woodland Camo', weight = 1000, type = 'item', image = 'woodcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A woodland camo for a weapon' }, + skullcamo_attachment = { name = 'skullcamo_attachment', label = 'Skull Camo', weight = 1000, type = 'item', image = 'skullcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A skull camo for a weapon' }, + sessantacamo_attachment = { name = 'sessantacamo_attachment', label = 'Sessanta Nove Camo', weight = 1000, type = 'item', image = 'sessantacamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A sessanta nove camo for a weapon' }, + perseuscamo_attachment = { name = 'perseuscamo_attachment', label = 'Perseus Camo', weight = 1000, type = 'item', image = 'perseuscamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A perseus camo for a weapon' }, + leopardcamo_attachment = { name = 'leopardcamo_attachment', label = 'Leopard Camo', weight = 1000, type = 'item', image = 'leopardcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A leopard camo for a weapon' }, + zebracamo_attachment = { name = 'zebracamo_attachment', label = 'Zebra Camo', weight = 1000, type = 'item', image = 'zebracamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A zebra camo for a weapon' }, + geocamo_attachment = { name = 'geocamo_attachment', label = 'Geometric Camo', weight = 1000, type = 'item', image = 'geocamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A geometric camo for a weapon' }, + boomcamo_attachment = { name = 'boomcamo_attachment', label = 'Boom Camo', weight = 1000, type = 'item', image = 'boomcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A boom camo for a weapon' }, + patriotcamo_attachment = { name = 'patriotcamo_attachment', label = 'Patriot Camo', weight = 1000, type = 'item', image = 'patriotcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A patriot camo for a weapon' }, + + -- Weapon Tints + weapontint_0 = { name = 'weapontint_0', label = 'Default Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Default/Black Weapon Tint' }, + weapontint_1 = { name = 'weapontint_1', label = 'Green Tint', weight = 1000, type = 'item', image = 'weapontint_green.png', unique = false, useable = true, shouldClose = true, description = 'Green Weapon Tint' }, + weapontint_2 = { name = 'weapontint_2', label = 'Gold Tint', weight = 1000, type = 'item', image = 'weapontint_gold.png', unique = false, useable = true, shouldClose = true, description = 'Gold Weapon Tint' }, + weapontint_3 = { name = 'weapontint_3', label = 'Pink Tint', weight = 1000, type = 'item', image = 'weapontint_pink.png', unique = false, useable = true, shouldClose = true, description = 'Pink Weapon Tint' }, + weapontint_4 = { name = 'weapontint_4', label = 'Army Tint', weight = 1000, type = 'item', image = 'weapontint_army.png', unique = false, useable = true, shouldClose = true, description = 'Army Weapon Tint' }, + weapontint_5 = { name = 'weapontint_5', label = 'LSPD Tint', weight = 1000, type = 'item', image = 'weapontint_lspd.png', unique = false, useable = true, shouldClose = true, description = 'LSPD Weapon Tint' }, + weapontint_6 = { name = 'weapontint_6', label = 'Orange Tint', weight = 1000, type = 'item', image = 'weapontint_orange.png', unique = false, useable = true, shouldClose = true, description = 'Orange Weapon Tint' }, + weapontint_7 = { name = 'weapontint_7', label = 'Platinum Tint', weight = 1000, type = 'item', image = 'weapontint_plat.png', unique = false, useable = true, shouldClose = true, description = 'Platinum Weapon Tint' }, + weapontint_mk2_0 = { name = 'weapontint_mk2_0', label = 'Classic Black Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Black Weapon Tint for MK2 Weapons' }, + weapontint_mk2_1 = { name = 'weapontint_mk2_1', label = 'Classic Gray Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Gray Weapon Tint for MK2 Weapons' }, + weapontint_mk2_2 = { name = 'weapontint_mk2_2', label = 'Classic Two-Tone Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Two-Tone Weapon Tint for MK2 Weapons' }, + weapontint_mk2_3 = { name = 'weapontint_mk2_3', label = 'Classic White Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic White Weapon Tint for MK2 Weapons' }, + weapontint_mk2_4 = { name = 'weapontint_mk2_4', label = 'Classic Beige Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Beige Weapon Tint for MK2 Weapons' }, + weapontint_mk2_5 = { name = 'weapontint_mk2_5', label = 'Classic Green Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Green Weapon Tint for MK2 Weapons' }, + weapontint_mk2_6 = { name = 'weapontint_mk2_6', label = 'Classic Blue Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Blue Weapon Tint for MK2 Weapons' }, + weapontint_mk2_7 = { name = 'weapontint_mk2_7', label = 'Classic Earth Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Earth Weapon Tint for MK2 Weapons' }, + weapontint_mk2_8 = { name = 'weapontint_mk2_8', label = 'Classic Brown & Black Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Brown & Black Weapon Tint for MK2 Weapons' }, + weapontint_mk2_9 = { name = 'weapontint_mk2_9', label = 'Red Contrast Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Red Contrast Weapon Tint for MK2 Weapons' }, + weapontint_mk2_10 = { name = 'weapontint_mk2_10', label = 'Blue Contrast Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Blue Contrast Weapon Tint for MK2 Weapons' }, + weapontint_mk2_11 = { name = 'weapontint_mk2_11', label = 'Yellow Contrast Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Yellow Contrast Weapon Tint for MK2 Weapons' }, + weapontint_mk2_12 = { name = 'weapontint_mk2_12', label = 'Orange Contrast Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Orange Contrast Weapon Tint for MK2 Weapons' }, + weapontint_mk2_13 = { name = 'weapontint_mk2_13', label = 'Bold Pink Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Pink Weapon Tint for MK2 Weapons' }, + weapontint_mk2_14 = { name = 'weapontint_mk2_14', label = 'Bold Purple & Yellow Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Purple & Yellow Weapon Tint for MK2 Weapons' }, + weapontint_mk2_15 = { name = 'weapontint_mk2_15', label = 'Bold Orange Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Orange Weapon Tint for MK2 Weapons' }, + weapontint_mk2_16 = { name = 'weapontint_mk2_16', label = 'Bold Green & Purple Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Green & Purple Weapon Tint for MK2 Weapons' }, + weapontint_mk2_17 = { name = 'weapontint_mk2_17', label = 'Bold Red Features Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Red Features Weapon Tint for MK2 Weapons' }, + weapontint_mk2_18 = { name = 'weapontint_mk2_18', label = 'Bold Green Features Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Green Features Weapon Tint for MK2 Weapons' }, + weapontint_mk2_19 = { name = 'weapontint_mk2_19', label = 'Bold Cyan Features Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Cyan Features Weapon Tint for MK2 Weapons' }, + weapontint_mk2_20 = { name = 'weapontint_mk2_20', label = 'Bold Yellow Features Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Yellow Features Weapon Tint for MK2 Weapons' }, + weapontint_mk2_21 = { name = 'weapontint_mk2_21', label = 'Bold Red & White Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Red & White Weapon Tint for MK2 Weapons' }, + weapontint_mk2_22 = { name = 'weapontint_mk2_22', label = 'Bold Blue & White Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Blue & White Weapon Tint for MK2 Weapons' }, + weapontint_mk2_23 = { name = 'weapontint_mk2_23', label = 'Metallic Gold Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Gold Weapon Tint for MK2 Weapons' }, + weapontint_mk2_24 = { name = 'weapontint_mk2_24', label = 'Metallic Platinum Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Platinum Weapon Tint for MK2 Weapons' }, + weapontint_mk2_25 = { name = 'weapontint_mk2_25', label = 'Metallic Gray & Lilac Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Gray & Lilac Weapon Tint for MK2 Weapons' }, + weapontint_mk2_26 = { name = 'weapontint_mk2_26', label = 'Metallic Purple & Lime Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Purple & Lime Weapon Tint for MK2 Weapons' }, + weapontint_mk2_27 = { name = 'weapontint_mk2_27', label = 'Metallic Red Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Red Weapon Tint for MK2 Weapons' }, + weapontint_mk2_28 = { name = 'weapontint_mk2_28', label = 'Metallic Green Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Green Weapon Tint for MK2 Weapons' }, + weapontint_mk2_29 = { name = 'weapontint_mk2_29', label = 'Metallic Blue Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Blue Weapon Tint for MK2 Weapons' }, + weapontint_mk2_30 = { name = 'weapontint_mk2_30', label = 'Metallic White & Aqua Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic White & Aqua Weapon Tint for MK2 Weapons' }, + weapontint_mk2_31 = { name = 'weapontint_mk2_31', label = 'Metallic Orange & Yellow Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Orange & Yellow Weapon Tint for MK2 Weapons' }, + weapontint_mk2_32 = { name = 'weapontint_mk2_32', label = 'Metallic Red and Yellow Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Red and Yellow Weapon Tint for MK2 Weapons' }, + -- ITEMS + + -- Ammo ITEMS + pistol_ammo = { name = 'pistol_ammo', label = 'Pistol ammo', weight = 200, type = 'item', image = 'pistol_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Pistols' }, + rifle_ammo = { name = 'rifle_ammo', label = 'Rifle ammo', weight = 1000, type = 'item', image = 'rifle_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Rifles' }, + smg_ammo = { name = 'smg_ammo', label = 'SMG ammo', weight = 500, type = 'item', image = 'smg_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Sub Machine Guns' }, + shotgun_ammo = { name = 'shotgun_ammo', label = 'Shotgun ammo', weight = 500, type = 'item', image = 'shotgun_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Shotguns' }, + mg_ammo = { name = 'mg_ammo', label = 'MG ammo', weight = 1000, type = 'item', image = 'mg_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Machine Guns' }, + snp_ammo = { name = 'snp_ammo', label = 'Sniper ammo', weight = 1000, type = 'item', image = 'rifle_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Sniper Rifles' }, + emp_ammo = { name = 'emp_ammo', label = 'EMP Ammo', weight = 200, type = 'item', image = 'emp_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for EMP Launcher' }, + + -- Card ITEMS + id_card = { name = 'id_card', label = 'ID Card', weight = 0, type = 'item', image = 'id_card.png', unique = true, useable = true, shouldClose = false, description = 'A card containing all your information to identify yourself' }, + driver_license = { name = 'driver_license', label = 'Drivers License', weight = 0, type = 'item', image = 'driver_license.png', unique = true, useable = true, shouldClose = false, description = 'Permit to show you can drive a vehicle' }, + lawyerpass = { name = 'lawyerpass', label = 'Lawyer Pass', weight = 0, type = 'item', image = 'lawyerpass.png', unique = true, useable = true, shouldClose = false, description = 'Pass exclusive to lawyers to show they can represent a suspect' }, + weaponlicense = { name = 'weaponlicense', label = 'Weapon License', weight = 0, type = 'item', image = 'weapon_license.png', unique = true, useable = true, shouldClose = true, description = 'Weapon License' }, + bank_card = { name = 'bank_card', label = 'Bank Card', weight = 0, type = 'item', image = 'bank_card.png', unique = true, useable = true, shouldClose = true, description = 'Used to access ATM' }, + security_card_01 = { name = 'security_card_01', label = 'Security Card A', weight = 0, type = 'item', image = 'security_card_01.png', unique = false, useable = true, shouldClose = true, description = 'A security card... I wonder what it goes to' }, + security_card_02 = { name = 'security_card_02', label = 'Security Card B', weight = 0, type = 'item', image = 'security_card_02.png', unique = false, useable = true, shouldClose = true, description = 'A security card... I wonder what it goes to' }, + + -- Eat ITEMS + tosti = { name = 'tosti', label = 'Grilled Cheese Sandwich', weight = 200, type = 'item', image = 'tosti.png', unique = false, useable = true, shouldClose = true, description = 'Nice to eat' }, + twerks_candy = { name = 'twerks_candy', label = 'Twerks', weight = 100, type = 'item', image = 'twerks_candy.png', unique = false, useable = true, shouldClose = true, description = 'Some delicious candy :O' }, + snikkel_candy = { name = 'snikkel_candy', label = 'Snikkel', weight = 100, type = 'item', image = 'snikkel_candy.png', unique = false, useable = true, shouldClose = true, description = 'Some delicious candy :O' }, + sandwich = { name = 'sandwich', label = 'Sandwich', weight = 200, type = 'item', image = 'sandwich.png', unique = false, useable = true, shouldClose = true, description = 'Nice bread for your stomach' }, + + -- Drink ITEMS + water_bottle = { name = 'water_bottle', label = 'Bottle of Water', weight = 500, type = 'item', image = 'water_bottle.png', unique = false, useable = true, shouldClose = true, description = 'For all the thirsty out there' }, + coffee = { name = 'coffee', label = 'Coffee', weight = 200, type = 'item', image = 'coffee.png', unique = false, useable = true, shouldClose = true, description = 'Pump 4 Caffeine' }, + kurkakola = { name = 'kurkakola', label = 'Cola', weight = 500, type = 'item', image = 'cola.png', unique = false, useable = true, shouldClose = true, description = 'For all the thirsty out there' }, + + -- Alcohol + beer = { name = 'beer', label = 'Beer', weight = 500, type = 'item', image = 'beer.png', unique = false, useable = true, shouldClose = true, description = 'Nothing like a good cold beer!' }, + whiskey = { name = 'whiskey', label = 'Whiskey', weight = 500, type = 'item', image = 'whiskey.png', unique = false, useable = true, shouldClose = true, description = 'For all the thirsty out there' }, + vodka = { name = 'vodka', label = 'Vodka', weight = 500, type = 'item', image = 'vodka.png', unique = false, useable = true, shouldClose = true, description = 'For all the thirsty out there' }, + grape = { name = 'grape', label = 'Grape', weight = 100, type = 'item', image = 'grape.png', unique = false, useable = true, shouldClose = false, description = 'Mmmmh yummie, grapes' }, + wine = { name = 'wine', label = 'Wine', weight = 300, type = 'item', image = 'wine.png', unique = false, useable = true, shouldClose = false, description = 'Some good wine to drink on a fine evening' }, + grapejuice = { name = 'grapejuice', label = 'Grape Juice', weight = 200, type = 'item', image = 'grapejuice.png', unique = false, useable = true, shouldClose = false, description = 'Grape juice is said to be healthy' }, + + -- Drugs + joint = { name = 'joint', label = 'Joint', weight = 0, type = 'item', image = 'joint.png', unique = false, useable = true, shouldClose = true, description = 'Sidney would be very proud at you' }, + cokebaggy = { name = 'cokebaggy', label = 'Bag of Coke', weight = 0, type = 'item', image = 'cocaine_baggy.png', unique = false, useable = true, shouldClose = true, description = 'To get happy real quick' }, + crack_baggy = { name = 'crack_baggy', label = 'Bag of Crack', weight = 0, type = 'item', image = 'crack_baggy.png', unique = false, useable = true, shouldClose = true, description = 'To get happy faster' }, + xtcbaggy = { name = 'xtcbaggy', label = 'Bag of XTC', weight = 0, type = 'item', image = 'xtc_baggy.png', unique = false, useable = true, shouldClose = true, description = 'Pop those pills baby' }, + coke_brick = { name = 'coke_brick', label = 'Coke Brick', weight = 1000, type = 'item', image = 'coke_brick.png', unique = true, useable = false, shouldClose = true, description = 'Heavy package of cocaine, mostly used for deals and takes a lot of space' }, + weed_brick = { name = 'weed_brick', label = 'Weed Brick', weight = 1000, type = 'item', image = 'weed_brick.png', unique = false, useable = false, shouldClose = true, description = '1KG Weed Brick to sell to large customers.' }, + coke_small_brick = { name = 'coke_small_brick', label = 'Coke Package', weight = 350, type = 'item', image = 'coke_small_brick.png', unique = true, useable = false, shouldClose = true, description = 'Small package of cocaine, mostly used for deals and takes a lot of space' }, + oxy = { name = 'oxy', label = 'Prescription Oxy', weight = 0, type = 'item', image = 'oxy.png', unique = false, useable = true, shouldClose = true, description = 'The Label Has Been Ripped Off' }, + meth = { name = 'meth', label = 'Meth', weight = 100, type = 'item', image = 'meth_baggy.png', unique = false, useable = true, shouldClose = true, description = 'A baggie of Meth' }, + rolling_paper = { name = 'rolling_paper', label = 'Rolling Paper', weight = 0, type = 'item', image = 'rolling_paper.png', unique = false, useable = false, shouldClose = true, description = 'Paper made specifically for encasing and smoking tobacco or cannabis.' }, + + -- Seed And Weed + weed_whitewidow = { name = 'weed_whitewidow', label = 'White Widow 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g White Widow' }, + weed_skunk = { name = 'weed_skunk', label = 'Skunk 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g Skunk' }, + weed_purplehaze = { name = 'weed_purplehaze', label = 'Purple Haze 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g Purple Haze' }, + weed_ogkush = { name = 'weed_ogkush', label = 'OGKush 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g OG Kush' }, + weed_amnesia = { name = 'weed_amnesia', label = 'Amnesia 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g Amnesia' }, + weed_ak47 = { name = 'weed_ak47', label = 'AK47 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g AK47' }, + weed_whitewidow_seed = { name = 'weed_whitewidow_seed', label = 'White Widow Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = false, description = 'A weed seed of White Widow' }, + weed_skunk_seed = { name = 'weed_skunk_seed', label = 'Skunk Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of Skunk' }, + weed_purplehaze_seed = { name = 'weed_purplehaze_seed', label = 'Purple Haze Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of Purple Haze' }, + weed_ogkush_seed = { name = 'weed_ogkush_seed', label = 'OGKush Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of OG Kush' }, + weed_amnesia_seed = { name = 'weed_amnesia_seed', label = 'Amnesia Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of Amnesia' }, + weed_ak47_seed = { name = 'weed_ak47_seed', label = 'AK47 Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of AK47' }, + empty_weed_bag = { name = 'empty_weed_bag', label = 'Empty Weed Bag', weight = 0, type = 'item', image = 'weed_baggy_empty.png', unique = false, useable = true, shouldClose = true, description = 'A small empty bag' }, + weed_nutrition = { name = 'weed_nutrition', label = 'Plant Fertilizer', weight = 2000, type = 'item', image = 'weed_nutrition.png', unique = false, useable = true, shouldClose = true, description = 'Plant nutrition' }, + + -- Material + plastic = { name = 'plastic', label = 'Plastic', weight = 100, type = 'item', image = 'plastic.png', unique = false, useable = false, shouldClose = false, description = 'RECYCLE! - Greta Thunberg 2019' }, + metalscrap = { name = 'metalscrap', label = 'Metal Scrap', weight = 100, type = 'item', image = 'metalscrap.png', unique = false, useable = false, shouldClose = false, description = 'You can probably make something nice out of this' }, + copper = { name = 'copper', label = 'Copper', weight = 100, type = 'item', image = 'copper.png', unique = false, useable = false, shouldClose = false, description = 'Nice piece of metal that you can probably use for something' }, + aluminum = { name = 'aluminum', label = 'Aluminium', weight = 100, type = 'item', image = 'aluminum.png', unique = false, useable = false, shouldClose = false, description = 'Nice piece of metal that you can probably use for something' }, + aluminumoxide = { name = 'aluminumoxide', label = 'Aluminium Powder', weight = 100, type = 'item', image = 'aluminumoxide.png', unique = false, useable = false, shouldClose = false, description = 'Some powder to mix with' }, + iron = { name = 'iron', label = 'Iron', weight = 100, type = 'item', image = 'iron.png', unique = false, useable = false, shouldClose = false, description = 'Handy piece of metal that you can probably use for something' }, + ironoxide = { name = 'ironoxide', label = 'Iron Powder', weight = 100, type = 'item', image = 'ironoxide.png', unique = false, useable = false, shouldClose = false, description = 'Some powder to mix with.' }, + steel = { name = 'steel', label = 'Steel', weight = 100, type = 'item', image = 'steel.png', unique = false, useable = false, shouldClose = false, description = 'Nice piece of metal that you can probably use for something' }, + rubber = { name = 'rubber', label = 'Rubber', weight = 100, type = 'item', image = 'rubber.png', unique = false, useable = false, shouldClose = false, description = 'Rubber, I believe you can make your own rubber ducky with it :D' }, + glass = { name = 'glass', label = 'Glass', weight = 100, type = 'item', image = 'glass.png', unique = false, useable = false, shouldClose = false, description = 'It is very fragile, watch out' }, + + -- Tools + lockpick = { name = 'lockpick', label = 'Lockpick', weight = 300, type = 'item', image = 'lockpick.png', unique = false, useable = true, shouldClose = true, description = 'Very useful if you lose your keys a lot.. or if you want to use it for something else...' }, + advancedlockpick = { name = 'advancedlockpick', label = 'Advanced Lockpick', weight = 500, type = 'item', image = 'advancedlockpick.png', unique = false, useable = true, shouldClose = true, description = 'If you lose your keys a lot this is very useful... Also useful to open your beers' }, + electronickit = { name = 'electronickit', label = 'Electronic Kit', weight = 100, type = 'item', image = 'electronickit.png', unique = false, useable = true, shouldClose = true, description = 'If you\'ve always wanted to build a robot you can maybe start here. Maybe you\'ll be the new Elon Musk?' }, + gatecrack = { name = 'gatecrack', label = 'Gatecrack', weight = 0, type = 'item', image = 'usb_device.png', unique = false, useable = false, shouldClose = true, description = 'Handy software to tear down some fences' }, + thermite = { name = 'thermite', label = 'Thermite', weight = 1000, type = 'item', image = 'thermite.png', unique = false, useable = true, shouldClose = true, description = 'Sometimes you\'d wish for everything to burn' }, + trojan_usb = { name = 'trojan_usb', label = 'Trojan USB', weight = 0, type = 'item', image = 'usb_device.png', unique = false, useable = false, shouldClose = true, description = 'Handy software to shut down some systems' }, + screwdriverset = { name = 'screwdriverset', label = 'Toolkit', weight = 1000, type = 'item', image = 'screwdriverset.png', unique = false, useable = false, shouldClose = false, description = 'Very useful to screw... screws...' }, + drill = { name = 'drill', label = 'Drill', weight = 20000, type = 'item', image = 'drill.png', unique = false, useable = false, shouldClose = false, description = 'The real deal...' }, + + -- Vehicle Tools + nitrous = { name = 'nitrous', label = 'Nitrous', weight = 1000, type = 'item', image = 'nitrous.png', unique = false, useable = true, shouldClose = true, description = 'Speed up, gas pedal! :D' }, + repairkit = { name = 'repairkit', label = 'Repairkit', weight = 2500, type = 'item', image = 'repairkit.png', unique = false, useable = true, shouldClose = true, description = 'A nice toolbox with stuff to repair your vehicle' }, + advancedrepairkit = { name = 'advancedrepairkit', label = 'Advanced Repairkit', weight = 4000, type = 'item', image = 'advancedkit.png', unique = false, useable = true, shouldClose = true, description = 'A nice toolbox with stuff to repair your vehicle' }, + cleaningkit = { name = 'cleaningkit', label = 'Cleaning Kit', weight = 250, type = 'item', image = 'cleaningkit.png', unique = false, useable = true, shouldClose = true, description = 'A microfiber cloth with some soap will let your car sparkle again!' }, + tunerlaptop = { name = 'tunerlaptop', label = 'Tunerchip', weight = 2000, type = 'item', image = 'tunerchip.png', unique = true, useable = true, shouldClose = true, description = 'With this tunerchip you can get your car on steroids... If you know what you\'re doing' }, + harness = { name = 'harness', label = 'Race Harness', weight = 1000, type = 'item', image = 'harness.png', unique = true, useable = true, shouldClose = true, description = 'Racing Harness so no matter what you stay in the car' }, + jerry_can = { name = 'jerry_can', label = 'Jerrycan 20L', weight = 20000, type = 'item', image = 'jerry_can.png', unique = false, useable = true, shouldClose = true, description = 'A can full of Fuel' }, + tirerepairkit = { name = 'tirerepairkit', label = 'Tire Repair Kit', weight = 1000, type = 'item', image = 'tirerepairkit.png', unique = false, useable = true, shouldClose = true, description = 'A kit to repair your tires' }, + + -- Mechanic Parts + veh_toolbox = { name = 'veh_toolbox', label = 'Toolbox', weight = 1000, type = 'item', image = 'veh_toolbox.png', unique = false, useable = true, shouldClose = true, description = 'Check vehicle status' }, + veh_armor = { name = 'veh_armor', label = 'Armor', weight = 1000, type = 'item', image = 'veh_armor.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle armor' }, + veh_brakes = { name = 'veh_brakes', label = 'Brakes', weight = 1000, type = 'item', image = 'veh_brakes.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle brakes' }, + veh_engine = { name = 'veh_engine', label = 'Engine', weight = 1000, type = 'item', image = 'veh_engine.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle engine' }, + veh_suspension = { name = 'veh_suspension', label = 'Suspension', weight = 1000, type = 'item', image = 'veh_suspension.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle suspension' }, + veh_transmission = { name = 'veh_transmission', label = 'Transmission', weight = 1000, type = 'item', image = 'veh_transmission.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle transmission' }, + veh_turbo = { name = 'veh_turbo', label = 'Turbo', weight = 1000, type = 'item', image = 'veh_turbo.png', unique = false, useable = true, shouldClose = true, description = 'Install vehicle turbo' }, + veh_interior = { name = 'veh_interior', label = 'Interior', weight = 1000, type = 'item', image = 'veh_interior.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle interior' }, + veh_exterior = { name = 'veh_exterior', label = 'Exterior', weight = 1000, type = 'item', image = 'veh_exterior.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle exterior' }, + veh_wheels = { name = 'veh_wheels', label = 'Wheels', weight = 1000, type = 'item', image = 'veh_wheels.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle wheels' }, + veh_neons = { name = 'veh_neons', label = 'Neons', weight = 1000, type = 'item', image = 'veh_neons.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle neons' }, + veh_xenons = { name = 'veh_xenons', label = 'Xenons', weight = 1000, type = 'item', image = 'veh_xenons.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle xenons' }, + veh_tint = { name = 'veh_tint', label = 'Tints', weight = 1000, type = 'item', image = 'veh_tint.png', unique = false, useable = true, shouldClose = true, description = 'Install vehicle tint' }, + veh_plates = { name = 'veh_plates', label = 'Plates', weight = 1000, type = 'item', image = 'veh_plates.png', unique = false, useable = true, shouldClose = true, description = 'Install vehicle plates' }, + + -- Medication + firstaid = { name = 'firstaid', label = 'First Aid', weight = 2500, type = 'item', image = 'firstaid.png', unique = false, useable = true, shouldClose = true, description = 'You can use this First Aid kit to get people back on their feet' }, + bandage = { name = 'bandage', label = 'Bandage', weight = 0, type = 'item', image = 'bandage.png', unique = false, useable = true, shouldClose = true, description = 'A bandage works every time' }, + ifaks = { name = 'ifaks', label = 'ifaks', weight = 200, type = 'item', image = 'ifaks.png', unique = false, useable = true, shouldClose = true, description = 'ifaks for healing and a complete stress remover.' }, + painkillers = { name = 'painkillers', label = 'Painkillers', weight = 0, type = 'item', image = 'painkillers.png', unique = false, useable = true, shouldClose = true, description = 'For pain you can\'t stand anymore, take this pill that\'d make you feel great again' }, + walkstick = { name = 'walkstick', label = 'Walking Stick', weight = 1000, type = 'item', image = 'walkstick.png', unique = false, useable = true, shouldClose = true, description = 'Walking stick for ya\'ll grannies out there.. HAHA' }, + + -- Communication + phone = { name = 'phone', label = 'Phone', weight = 700, type = 'item', image = 'phone.png', unique = true, useable = false, shouldClose = false, description = 'Neat phone ya got there' }, + radio = { name = 'radio', label = 'Radio', weight = 2000, type = 'item', image = 'radio.png', unique = true, useable = true, shouldClose = true, description = 'You can communicate with this through a signal' }, + iphone = { name = 'iphone', label = 'iPhone', weight = 1000, type = 'item', image = 'iphone.png', unique = false, useable = false, shouldClose = true, description = 'Very expensive phone' }, + samsungphone = { name = 'samsungphone', label = 'Samsung S10', weight = 1000, type = 'item', image = 'samsungphone.png', unique = false, useable = false, shouldClose = true, description = 'Very expensive phone' }, + laptop = { name = 'laptop', label = 'Laptop', weight = 4000, type = 'item', image = 'laptop.png', unique = false, useable = false, shouldClose = true, description = 'Expensive laptop' }, + tablet = { name = 'tablet', label = 'Tablet', weight = 2000, type = 'item', image = 'tablet.png', unique = false, useable = false, shouldClose = true, description = 'Expensive tablet' }, + fitbit = { name = 'fitbit', label = 'Fitbit', weight = 500, type = 'item', image = 'fitbit.png', unique = true, useable = true, shouldClose = true, description = 'I like fitbit' }, + radioscanner = { name = 'radioscanner', label = 'Radio Scanner', weight = 1000, type = 'item', image = 'radioscanner.png', unique = false, useable = false, shouldClose = true, description = 'With this you can get some police alerts. Not 100% effective however' }, + pinger = { name = 'pinger', label = 'Pinger', weight = 1000, type = 'item', image = 'pinger.png', unique = false, useable = false, shouldClose = true, description = 'With a pinger and your phone you can send out your location' }, + cryptostick = { name = 'cryptostick', label = 'Crypto Stick', weight = 200, type = 'item', image = 'cryptostick.png', unique = true, useable = true, shouldClose = true, description = 'Why would someone ever buy money that doesn\'t exist.. How many would it contain..?' }, + + -- Theft and Jewelry + rolex = { name = 'rolex', label = 'Golden Watch', weight = 1500, type = 'item', image = 'rolex.png', unique = false, useable = false, shouldClose = true, description = 'A golden watch seems like the jackpot to me!' }, + diamond_ring = { name = 'diamond_ring', label = 'Diamond Ring', weight = 1500, type = 'item', image = 'diamond_ring.png', unique = false, useable = false, shouldClose = true, description = 'A diamond ring seems like the jackpot to me!' }, + diamond = { name = 'diamond', label = 'Diamond', weight = 1000, type = 'item', image = 'diamond.png', unique = false, useable = false, shouldClose = true, description = 'A diamond seems like the jackpot to me!' }, + goldchain = { name = 'goldchain', label = 'Golden Chain', weight = 1500, type = 'item', image = 'goldchain.png', unique = false, useable = false, shouldClose = true, description = 'A golden chain seems like the jackpot to me!' }, + tenkgoldchain = { name = 'tenkgoldchain', label = '10k Gold Chain', weight = 2000, type = 'item', image = '10kgoldchain.png', unique = false, useable = false, shouldClose = true, description = '10 carat golden chain' }, + goldbar = { name = 'goldbar', label = 'Gold Bar', weight = 7000, type = 'item', image = 'goldbar.png', unique = false, useable = false, shouldClose = true, description = 'Looks pretty expensive to me' }, + + -- Cops Tools + armor = { name = 'armor', label = 'Armor', weight = 5000, type = 'item', image = 'armor.png', unique = false, useable = true, shouldClose = true, description = 'Some protection won\'t hurt... right?' }, + heavyarmor = { name = 'heavyarmor', label = 'Heavy Armor', weight = 5000, type = 'item', image = 'armor.png', unique = false, useable = true, shouldClose = true, description = 'Some protection won\'t hurt... right?' }, + handcuffs = { name = 'handcuffs', label = 'Handcuffs', weight = 100, type = 'item', image = 'handcuffs.png', unique = false, useable = true, shouldClose = true, description = 'Comes in handy when people misbehave. Maybe it can be used for something else?' }, + police_stormram = { name = 'police_stormram', label = 'Stormram', weight = 18000, type = 'item', image = 'police_stormram.png', unique = false, useable = true, shouldClose = true, description = 'A nice tool to break into doors' }, + empty_evidence_bag = { name = 'empty_evidence_bag', label = 'Empty Evidence Bag', weight = 0, type = 'item', image = 'evidence.png', unique = false, useable = false, shouldClose = false, description = 'Used a lot to keep DNA from blood, bullet shells and more' }, + filled_evidence_bag = { name = 'filled_evidence_bag', label = 'Evidence Bag', weight = 200, type = 'item', image = 'evidence.png', unique = true, useable = false, shouldClose = false, description = 'A filled evidence bag to see who committed the crime >:(' }, + + -- Firework Tools + firework1 = { name = 'firework1', label = '2Brothers', weight = 1000, type = 'item', image = 'firework1.png', unique = false, useable = true, shouldClose = true, description = 'Fireworks' }, + firework2 = { name = 'firework2', label = 'Poppelers', weight = 1000, type = 'item', image = 'firework2.png', unique = false, useable = true, shouldClose = true, description = 'Fireworks' }, + firework3 = { name = 'firework3', label = 'WipeOut', weight = 1000, type = 'item', image = 'firework3.png', unique = false, useable = true, shouldClose = true, description = 'Fireworks' }, + firework4 = { name = 'firework4', label = 'Weeping Willow', weight = 1000, type = 'item', image = 'firework4.png', unique = false, useable = true, shouldClose = true, description = 'Fireworks' }, + + -- Sea Tools + dendrogyra_coral = { name = 'dendrogyra_coral', label = 'Dendrogyra', weight = 1000, type = 'item', image = 'dendrogyra_coral.png', unique = false, useable = false, shouldClose = true, description = 'Its also known as pillar coral' }, + antipatharia_coral = { name = 'antipatharia_coral', label = 'Antipatharia', weight = 1000, type = 'item', image = 'antipatharia_coral.png', unique = false, useable = false, shouldClose = true, description = 'Its also known as black corals or thorn corals' }, + diving_gear = { name = 'diving_gear', label = 'Diving Gear', weight = 30000, type = 'item', image = 'diving_gear.png', unique = true, useable = true, shouldClose = true, description = 'An oxygen tank and a rebreather' }, + diving_fill = { name = 'diving_fill', label = 'Diving Tube', weight = 3000, type = 'item', image = 'diving_tube.png', unique = true, useable = true, shouldClose = true, description = 'An oxygen tube and a rebreather' }, + + -- Other Tools + casinochips = { name = 'casinochips', label = 'Casino Chips', weight = 0, type = 'item', image = 'casinochips.png', unique = false, useable = false, shouldClose = false, description = 'Chips For Casino Gambling' }, + stickynote = { name = 'stickynote', label = 'Sticky note', weight = 0, type = 'item', image = 'stickynote.png', unique = true, useable = false, shouldClose = false, description = 'Sometimes handy to remember something :)' }, + moneybag = { name = 'moneybag', label = 'Money Bag', weight = 0, type = 'item', image = 'moneybag.png', unique = true, useable = true, shouldClose = true, description = 'A bag with cash' }, + parachute = { name = 'parachute', label = 'Parachute', weight = 30000, type = 'item', image = 'parachute.png', unique = true, useable = true, shouldClose = true, description = 'The sky is the limit! Woohoo!' }, + binoculars = { name = 'binoculars', label = 'Binoculars', weight = 600, type = 'item', image = 'binoculars.png', unique = false, useable = true, shouldClose = true, description = 'Sneaky Breaky...' }, + lighter = { name = 'lighter', label = 'Lighter', weight = 0, type = 'item', image = 'lighter.png', unique = false, useable = false, shouldClose = true, description = 'On new years eve a nice fire to stand next to' }, + certificate = { name = 'certificate', label = 'Certificate', weight = 0, type = 'item', image = 'certificate.png', unique = false, useable = false, shouldClose = true, description = 'Certificate that proves you own certain stuff' }, + markedbills = { name = 'markedbills', label = 'Marked Money', weight = 1000, type = 'item', image = 'markedbills.png', unique = true, useable = false, shouldClose = true, description = 'Money?' }, + labkey = { name = 'labkey', label = 'Key', weight = 500, type = 'item', image = 'labkey.png', unique = true, useable = true, shouldClose = true, description = 'Key for a lock...?' }, + printerdocument = { name = 'printerdocument', label = 'Document', weight = 500, type = 'item', image = 'printerdocument.png', unique = true, useable = true, shouldClose = true, description = 'A nice document' }, + newscam = { name = 'newscam', label = 'News Camera', weight = 100, type = 'item', image = 'newscam.png', unique = true, useable = true, shouldClose = true, description = 'A camera for the news' }, + newsmic = { name = 'newsmic', label = 'News Microphone', weight = 100, type = 'item', image = 'newsmic.png', unique = true, useable = true, shouldClose = true, description = 'A microphone for the news' }, + newsbmic = { name = 'newsbmic', label = 'Boom Microphone', weight = 100, type = 'item', image = 'newsbmic.png', unique = true, useable = true, shouldClose = true, description = 'A Useable BoomMic' }, +} diff --git a/resources/[core]/qb-core/shared/jobs.lua b/resources/[core]/qb-core/shared/jobs.lua new file mode 100644 index 0000000..8575b04 --- /dev/null +++ b/resources/[core]/qb-core/shared/jobs.lua @@ -0,0 +1,142 @@ +QBShared = QBShared or {} +QBShared.ForceJobDefaultDutyAtLogin = true -- true: Force duty state to jobdefaultDuty | false: set duty state from database last saved +QBShared.Jobs = { + unemployed = { label = 'Civilian', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Freelancer', payment = 10 } } }, + bus = { label = 'Bus', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Driver', payment = 50 } } }, + judge = { label = 'Honorary', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Judge', payment = 100 } } }, + lawyer = { label = 'Law Firm', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Associate', payment = 50 } } }, + reporter = { label = 'Reporter', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Journalist', payment = 50 } } }, + trucker = { label = 'Trucker', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Driver', payment = 50 } } }, + tow = { label = 'Towing', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Driver', payment = 50 } } }, + garbage = { label = 'Garbage', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Collector', payment = 50 } } }, + vineyard = { label = 'Vineyard', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Picker', payment = 50 } } }, + hotdog = { label = 'Hotdog', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Sales', payment = 50 } } }, + + police = { + label = 'Law Enforcement', + type = 'leo', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'Officer', payment = 75 }, + ['2'] = { name = 'Sergeant', payment = 100 }, + ['3'] = { name = 'Lieutenant', payment = 125 }, + ['4'] = { name = 'Chief', isboss = true, payment = 150 }, + }, + }, + ambulance = { + label = 'EMS', + type = 'ems', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'Paramedic', payment = 75 }, + ['2'] = { name = 'Doctor', payment = 100 }, + ['3'] = { name = 'Surgeon', payment = 125 }, + ['4'] = { name = 'Chief', isboss = true, payment = 150 }, + }, + }, + realestate = { + label = 'Real Estate', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'House Sales', payment = 75 }, + ['2'] = { name = 'Business Sales', payment = 100 }, + ['3'] = { name = 'Broker', payment = 125 }, + ['4'] = { name = 'Manager', isboss = true, payment = 150 }, + }, + }, + taxi = { + label = 'Taxi', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'Driver', payment = 75 }, + ['2'] = { name = 'Event Driver', payment = 100 }, + ['3'] = { name = 'Sales', payment = 125 }, + ['4'] = { name = 'Manager', isboss = true, payment = 150 }, + }, + }, + cardealer = { + label = 'Vehicle Dealer', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'Showroom Sales', payment = 75 }, + ['2'] = { name = 'Business Sales', payment = 100 }, + ['3'] = { name = 'Finance', payment = 125 }, + ['4'] = { name = 'Manager', isboss = true, payment = 150 }, + }, + }, + mechanic = { + label = 'LS Customs', + type = 'mechanic', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'Novice', payment = 75 }, + ['2'] = { name = 'Experienced', payment = 100 }, + ['3'] = { name = 'Advanced', payment = 125 }, + ['4'] = { name = 'Manager', isboss = true, payment = 150 }, + }, + }, + mechanic2 = { + label = 'LS Customs', + type = 'mechanic', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'Novice', payment = 75 }, + ['2'] = { name = 'Experienced', payment = 100 }, + ['3'] = { name = 'Advanced', payment = 125 }, + ['4'] = { name = 'Manager', isboss = true, payment = 150 }, + }, + }, + mechanic3 = { + label = 'LS Customs', + type = 'mechanic', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'Novice', payment = 75 }, + ['2'] = { name = 'Experienced', payment = 100 }, + ['3'] = { name = 'Advanced', payment = 125 }, + ['4'] = { name = 'Manager', isboss = true, payment = 150 }, + }, + }, + beeker = { + label = 'Beeker\'s Garage', + type = 'mechanic', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'Novice', payment = 75 }, + ['2'] = { name = 'Experienced', payment = 100 }, + ['3'] = { name = 'Advanced', payment = 125 }, + ['4'] = { name = 'Manager', isboss = true, payment = 150 }, + }, + }, + bennys = { + label = 'Benny\'s Original Motor Works', + type = 'mechanic', + defaultDuty = true, + offDutyPay = false, + grades = { + ['0'] = { name = 'Recruit', payment = 50 }, + ['1'] = { name = 'Novice', payment = 75 }, + ['2'] = { name = 'Experienced', payment = 100 }, + ['3'] = { name = 'Advanced', payment = 125 }, + ['4'] = { name = 'Manager', isboss = true, payment = 150 }, + }, + }, +} diff --git a/resources/[core]/qb-core/shared/locale.lua b/resources/[core]/qb-core/shared/locale.lua new file mode 100644 index 0000000..71c9ee3 --- /dev/null +++ b/resources/[core]/qb-core/shared/locale.lua @@ -0,0 +1,145 @@ +--- @class Locale +Locale = {} +Locale.__index = Locale + +local function translateKey(phrase, subs) + if type(phrase) ~= 'string' then + error('TypeError: translateKey function expects arg #1 to be a string') + end + + -- Substituions + if not subs then + return phrase + end + + -- We should be escaping gsub just in case of any + -- shenanigans with nested template patterns or injection + + -- Create and copy our return string + local result = phrase + + -- Initial Scan over result looking for substituions + for k, v in pairs(subs) do + local templateToFind = '%%{' .. k .. '}' + result = result:gsub(templateToFind, tostring(v)) -- string to allow all types + end + + return result +end + +--- Constructor function for a new Locale class instance +--- @param opts table - Constructor opts param +--- @return Locale +function Locale.new(_, opts) + local self = setmetatable({}, Locale) + + self.fallback = opts.fallbackLang and Locale:new({ + warnOnMissing = false, + phrases = opts.fallbackLang.phrases, + }) or false + + self.warnOnMissing = type(opts.warnOnMissing) ~= 'boolean' and true or opts.warnOnMissing + + self.phrases = {} + self:extend(opts.phrases or {}) + + return self +end + +--- Method for extending an instances phrases map. This is also, used +--- internally for initial population of phrases field. +--- @param phrases table - Table of phrase definitions +--- @param prefix string | nil - Optional prefix used for recursive calls +--- @return nil +function Locale:extend(phrases, prefix) + for key, phrase in pairs(phrases) do + local prefixKey = prefix and ('%s.%s'):format(prefix, key) or key + -- If this is a nested table, we need to go reeeeeeeeeeeecursive + if type(phrase) == 'table' then + self:extend(phrase, prefixKey) + else + self.phrases[prefixKey] = phrase + end + end +end + +--- Clear locale instance phrases +--- Might be useful for memory management of large phrase maps. +--- @return nil +function Locale:clear() + self.phrases = {} +end + +--- Clears all phrases and replaces it with the passed phrases table +--- @param phrases table +function Locale:replace(phrases) + phrases = phrases or {} + self:clear() + self:extend(phrases) +end + +--- Gets & Sets a locale depending on if an argument is passed +--- @param newLocale string - Optional new locale to set +--- @return string +function Locale:locale(newLocale) + if (newLocale) then + self.currentLocale = newLocale + end + return self.currentLocale +end + +--- Primary translation method for a phrase of given key +--- @param key string - The phrase key to target +--- @param subs table | nil +--- @return string +function Locale:t(key, subs) + local phrase, result + subs = subs or {} + + -- See if the passed key resolves to a valid phrase string + if type(self.phrases[key]) == 'string' then + phrase = self.phrases[key] + -- At this point we know whether the phrase does not exist for this key + else + if self.warnOnMissing then + print(('^3Warning: Missing phrase for key: "%s"^0'):format(key)) + end + if self.fallback then + return self.fallback:t(key, subs) + end + result = key + end + + if type(phrase) == 'string' then + result = translateKey(phrase, subs) + end + + return result +end + +--- Check if a phrase key has already been defined within the Locale instance phrase maps. +--- @return boolean +function Locale:has(key) + return self.phrases[key] ~= nil +end + +--- Will remove phrase keys from a Locale instance, using recursion/ +--- @param phraseTarget string | table +--- @param prefix string +function Locale:delete(phraseTarget, prefix) + -- If the target is a string, we know that this is the end + -- of nested table tree. + if type(phraseTarget) == 'string' then + self.phrases[phraseTarget] = nil + else + for key, phrase in pairs(phraseTarget) do + local prefixKey = prefix and prefix .. '.' .. key or key + + if type(phrase) == 'table' then + self:delete(phrase, prefixKey) + else + self.phrases[prefixKey] = nil + end + end + end +end diff --git a/resources/[core]/qb-core/shared/locations.lua b/resources/[core]/qb-core/shared/locations.lua new file mode 100644 index 0000000..3582619 --- /dev/null +++ b/resources/[core]/qb-core/shared/locations.lua @@ -0,0 +1,108 @@ +QBShared.Locations = { + -- Base game MLO interiors + aircraft_carrier_int = vector4(3081.0042, -4693.6875, 15.2623, 76.8169), + apt_1_int = vector4(-1452.4602, -540.2056, 74.0443, 31.9129), + apt_2_int = vector4(-912.7861, -365.2444, 114.2748, 110.0791), + apt_3_int = vector4(-603.3033, 58.9509, 98.2002, 81.6158), + apt_4_int = vector4(-784.6159, 323.849, 211.9972, 260.1097), + apt_5_int = vector4(-31.1088, -595.1442, 80.0309, 238.7146), + apt_6_int = vector4(-603.0135, 59.0137, -182.3809, 79.5818), + apt_hi_1_int = vector4(-18.3525, -590.9888, 90.1148, 331.3955), + apt_hi_2_int = vector4(-1450.2595, -525.3569, 56.929, 29.844), + bahama_mamas_int = vector4(-1387.0503, -588.4022, 30.3195, 124.4977), + biker_clubhouse_1_int = vector4(1121.1473, -3152.606, -37.0627, 354.0713), + biker_clubhouse_2_int = vector4(997.1274, -3157.5261, -38.9071, 239.8958), + casino_garage_int = vector4(1380.0403, 178.7124, -48.9942, 351.2701), + casino_hotel_floor_5_int = vector4(2508.6404, -262.1918, -39.1218, 183.9682), + casino_interior_int = vector4(1089.1294, 207.2294, -48.9997, 320.0139), + casino_loading_bay_int = vector4(2519.0271, -279.1287, -64.7228, 273.2338), + casino_nightclub_int = vector4(1578.2496, 253.7532, -46.0051, 174.0727), + casino_offices_int = vector4(2485.0115, -250.7915, -55.1238, 270.4959), + casino_security_int = vector4(2548.1143, -267.3465, -58.723, 192.4636), + casino_vault_int = vector4(2506.9446, -238.5225, -70.7371, 268.6321), + casino_vault_lobby_int = vector4(2465.6365, -278.9171, -70.6942, 264.7971), + cocaine_lockup_int = vector4(1088.6353, -3187.8801, -38.9935, 178.8853), + counterfeit_cash_int = vector4(1138.2513, -3198.7056, -39.6657, 66.1039), + document_forgery_int = vector4(1173.4496, -3196.7759, -39.008, 77.9179), + doomsday_facility_int = vector4(453.0641, 4820.2095, -58.9997, 87.7778), + exec_apt_1_int = vector4(-786.7757, 315.4629, 217.6385, 269.4638), + exec_apt_2_int = vector4(-773.9349, 342.1293, 196.6862, 87.2747), + exec_apt_3_int = vector4(-787.0633, 315.7905, 187.9135, 276.2593), + fib_floor_47_int = vector4(136.714, -765.5745, 234.152, 76.3983), + fib_floor_49_int = vector4(136.2863, -765.8568, 242.1519, 79.0446), + fib_top_floor_int = vector4(156.6616, -759.0523, 258.1518, 83.4114), + franklins_house_int = vector4(-14.1716, -1440.7046, 31.1015, 2.7505), + house_hi_1_int = vector4(-174.1817, 497.7469, 137.6537, 195.447), + house_hi_2_int = vector4(342.0325, 437.7024, 149.3897, 125.2541), + house_hi_3_int = vector4(373.5483, 423.4114, 145.9079, 162.7296), + house_hi_4_int = vector4(-682.3972, 592.3556, 145.3927, 233.6731), + house_hi_5_int = vector4(-758.5825, 619.0045, 144.1539, 118.2023), + house_hi_6_int = vector4(-860.154, 690.9542, 152.8608, 192.5502), + house_hi_7_int = vector4(117.227, 559.6552, 184.3049, 190.2912), + house_low_1_int = vector4(266.0239, -1007.0026, -100.9048, 357.9751), + house_mid_1_int = vector4(346.855, -1012.7548, -99.1963, 355.3892), + iaa_facility_1_int = vector4(2154.9517, 2921.0366, -61.9025, 96.9736), + iaa_facility_2_int = vector4(2154.6731, 2921.0784, -81.0755, 268.6461), + lesters_factory_int = vector4(717.8725, -974.6326, 24.9142, 359.5224), + lesters_house_int = vector4(1273.9886, -1719.4897, 54.7715, 11.6602), + meth_lab_int = vector4(997.4726, -3200.6846, -36.3937, 307.2153), + morgue_int = vector4(274.9287, -1361.0305, 24.5378, 48.8693), + motel_room_int = vector4(151.379, -1007.7512, -99.0, 326.917), + movie_theatre_int = vector4(-1437.0271, -243.3148, 16.8335, 200.8791), + nightclub_1_int = vector4(-1569.494, -3016.9558, -74.4061, 359.8158), + office_1_int = vector4(-140.6184, -619.2825, 168.8203, 183.2728), + office_2_int = vector4(-77.2845, -828.4749, 243.3858, 330.7214), + office_3_int = vector4(-1579.7123, -562.8762, 108.5229, 217.1494), + office_4_int = vector4(-1394.6268, -479.7602, 72.0421, 273.3521), + psychiatrist_office_int = vector4(-1902.1859, -572.3267, 19.0972, 106.6428), + shell_1_int = vector4(404.9589, -957.7651, -99.0042, 1.7754), + submarine_int = vector4(512.8119, 4881.4795, -62.5867, 359.146), + uniondepository_int = vector4(5.8001, -708.6383, 16.131, 348.7656), + weed_farm_int = vector4(1066.0164, -3183.4456, -39.1635, 96.9736), + + -- Unknown/Random/Vanilla + burgershot = vector4(-1199.0568, -882.4495, 13.3500, 209.1105), + casino = vector4(923.2289, 47.3113, 81.1063, 237.6052), + + -- Gabz + arcade = vector4(-1649.6089, -1083.9313, 13.1575, 46.4121), + beanmachinelegion = vector4(116.16, -1022.99, 29.3, 0.0), + bowling = vector4(761.5008, -777.7256, 26.3078, 90.5581), + pizzaria = vector4(790.4561, -758.4601, 26.7424, 270.2329), + catcafe = vector4(-580.8388, -1072.7872, 22.3296, 359.0078), + carmeet = vector4(958.8237, -1699.6659, 29.5574, 71.2731), + popsdiner = vector4(1595.9753, 6448.6421, 25.3170, 28.3026), + harmony = vector4(1183.0693, 2648.5313, 37.8363, 194.0603), + haters = vector4(-1117.1525, -1439.4297, 5.1075, 103.4411), + hayes = vector4(-1435.7040, -445.7360, 35.5964, 220.1762), + pdm = vector4(-48.2113, -1105.4769, 27.2634, 339.5899), + bennys = vector4(-47.5289, -1042.6086, 28.3532, 247.9748), + lamesaauto = vector4(720.4776, -1092.1934, 22.2866, 310.1469), + lostmc = vector4(982.6339, -104.7095, 74.8488, 30.8738), + pillbox = vector4(298.1153, -584.2825, 43.2609, 252.7553), + mirrorparkhouse1 = vector4(945.9535, -652.9119, 58.0228, 90.5541), + pacificbank = vector4(229.9529, 214.3890, 105.5561, 294.6791), + paletoliquor = vector4(-154.2287, 6328.8682, 31.5665, 133.1992), + paletogasstation = vector4(120.2420, 6625.4722, 31.9580, 36.5687), + pinkcage = vector4(323.9055, -203.2524, 54.0866, 186.8505), + ponsonbys1 = vector4(-165.2497, -304.3988, 38.07126, 0.0), + ponsonbys2 = vector4(-1448.1, -236.8420, 48.15098, 0.0), + ponsonbys3 = vector4(-709.8120, -150.6267, 35.75312, 0.0), + rangerstation = vector4(387.3204, 790.1508, 187.6927, 4.7656), + recordastudio = vector4(473.3006, -109.4360, 62.7418, 350.8488), + suburban1 = vector4(124.9756, -217.6290, 55.81879, 0.0), + suburban2 = vector4(617.4776, 2757.4810, 43.34935, 0.0), + suburban3 = vector4(-1195.8690, -773.5746, 18.58485, 0.0), + suburban4 = vector4(-3170.9670, 1049.9310, 22.12445, 0.0), + triadrecords = vector4(-829.0061, -698.2049, 28.0583, 291.2052), + tuner = vector4(157.5888, -3017.9968, 7.0400, 94.0695), + vu = vector4(129.4555, -1299.6754, 29.2327, 27.6378), + + -- Patoche + luxerydealership = vector4(-1273.22, -371.11, 36.64, 301.8), + + -- Unclejust + digitalden = vector4(-656.28, -849.92, 24.51, 167.42), + ifruitstore1 = vector4(-646.78, -288.17, 35.49, 297.73), + ifruitstore2 = vector4(-778.7451, -598.2717, 30.2772, 181.0197) +} diff --git a/resources/[core]/qb-core/shared/main.lua b/resources/[core]/qb-core/shared/main.lua new file mode 100644 index 0000000..b514dd5 --- /dev/null +++ b/resources/[core]/qb-core/shared/main.lua @@ -0,0 +1,175 @@ +QBShared = QBShared or {} + +local StringCharset = {} +local NumberCharset = {} + +QBShared.StarterItems = { + ['phone'] = { amount = 1, item = 'phone' }, + ['id_card'] = { amount = 1, item = 'id_card' }, + ['driver_license'] = { amount = 1, item = 'driver_license' }, +} + +for i = 48, 57 do NumberCharset[#NumberCharset + 1] = string.char(i) end +for i = 65, 90 do StringCharset[#StringCharset + 1] = string.char(i) end +for i = 97, 122 do StringCharset[#StringCharset + 1] = string.char(i) end + +function QBShared.RandomStr(length) + if length <= 0 then return '' end + return QBShared.RandomStr(length - 1) .. StringCharset[math.random(1, #StringCharset)] +end + +function QBShared.RandomInt(length) + if length <= 0 then return '' end + return QBShared.RandomInt(length - 1) .. NumberCharset[math.random(1, #NumberCharset)] +end + +function QBShared.SplitStr(str, delimiter) + local result = {} + local from = 1 + local delim_from, delim_to = string.find(str, delimiter, from) + while delim_from do + result[#result + 1] = string.sub(str, from, delim_from - 1) + from = delim_to + 1 + delim_from, delim_to = string.find(str, delimiter, from) + end + result[#result + 1] = string.sub(str, from) + return result +end + +function QBShared.Trim(value) + if not value then return nil end + return (string.gsub(value, '^%s*(.-)%s*$', '%1')) +end + +function QBShared.FirstToUpper(value) + if not value then return nil end + return (value:gsub("^%l", string.upper)) +end + +function QBShared.Round(value, numDecimalPlaces) + if not numDecimalPlaces then return math.floor(value + 0.5) end + local power = 10 ^ numDecimalPlaces + return math.floor((value * power) + 0.5) / (power) +end + +function QBShared.ChangeVehicleExtra(vehicle, extra, enable) + if DoesExtraExist(vehicle, extra) then + if enable then + SetVehicleExtra(vehicle, extra, false) + if not IsVehicleExtraTurnedOn(vehicle, extra) then + QBShared.ChangeVehicleExtra(vehicle, extra, enable) + end + else + SetVehicleExtra(vehicle, extra, true) + if IsVehicleExtraTurnedOn(vehicle, extra) then + QBShared.ChangeVehicleExtra(vehicle, extra, enable) + end + end + end +end + +function QBShared.IsFunction(value) + if type(value) == 'table' then + return value.__cfx_functionReference ~= nil and type(value.__cfx_functionReference) == "string" + end + + return type(value) == 'function' +end + +function QBShared.SetDefaultVehicleExtras(vehicle, config) + -- Clear Extras + for i = 1, 20 do + if DoesExtraExist(vehicle, i) then + SetVehicleExtra(vehicle, i, 1) + end + end + + for id, enabled in pairs(config) do + if type(enabled) ~= 'boolean' then + enabled = true + end + + QBShared.ChangeVehicleExtra(vehicle, tonumber(id), enabled) + end +end + +QBShared.MaleNoGloves = { + [0] = true, + [1] = true, + [2] = true, + [3] = true, + [4] = true, + [5] = true, + [6] = true, + [7] = true, + [8] = true, + [9] = true, + [10] = true, + [11] = true, + [12] = true, + [13] = true, + [14] = true, + [15] = true, + [18] = true, + [26] = true, + [52] = true, + [53] = true, + [54] = true, + [55] = true, + [56] = true, + [57] = true, + [58] = true, + [59] = true, + [60] = true, + [61] = true, + [62] = true, + [112] = true, + [113] = true, + [114] = true, + [118] = true, + [125] = true, + [132] = true +} + +QBShared.FemaleNoGloves = { + [0] = true, + [1] = true, + [2] = true, + [3] = true, + [4] = true, + [5] = true, + [6] = true, + [7] = true, + [8] = true, + [9] = true, + [10] = true, + [11] = true, + [12] = true, + [13] = true, + [14] = true, + [15] = true, + [19] = true, + [59] = true, + [60] = true, + [61] = true, + [62] = true, + [63] = true, + [64] = true, + [65] = true, + [66] = true, + [67] = true, + [68] = true, + [69] = true, + [70] = true, + [71] = true, + [129] = true, + [130] = true, + [131] = true, + [135] = true, + [142] = true, + [149] = true, + [153] = true, + [157] = true, + [161] = true, + [165] = true +} diff --git a/resources/[core]/qb-core/shared/vehicles.lua b/resources/[core]/qb-core/shared/vehicles.lua new file mode 100644 index 0000000..b745c09 --- /dev/null +++ b/resources/[core]/qb-core/shared/vehicles.lua @@ -0,0 +1,783 @@ +QBShared = QBShared or {} +QBShared.Vehicles = QBShared.Vehicles or {} + +local Vehicles = { + --- Compacts (0) + { + model = 'asbo', -- This has to match the spawn code of the vehicle + name = 'Asbo', -- This is the display of the vehicle + brand = 'Maxwell', -- This is the vehicle's brand + price = 4000, -- The price that the vehicle sells for + category = 'compacts', -- Catgegory of the vehilce, stick with GetVehicleClass() options https://docs.fivem.net/natives/?_0x29439776AAA00A62 + type = 'automobile', -- Vehicle type, refer here https://docs.fivem.net/natives/?_0x6AE51D4B & here https://docs.fivem.net/natives/?_0xA273060E + shop = 'pdm', -- Can be a single shop or multiple shops. For multiple shops for example {'shopname1','shopname2','shopname3'} + }, + { model = 'blista', name = 'Blista', brand = 'Dinka', price = 13000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'brioso', name = 'Brioso R/A', brand = 'Grotti', price = 20000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'club', name = 'Club', brand = 'BF', price = 8000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'dilettante', name = 'Dilettante', brand = 'Karin', price = 9000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'dilettante2', name = 'Dilettante Patrol', brand = 'Karin', price = 12000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'kanjo', name = 'Blista Kanjo', brand = 'Dinka', price = 12000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'issi2', name = 'Issi', brand = 'Weeny', price = 7000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'issi3', name = 'Issi Classic', brand = 'Weeny', price = 5000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'issi4', name = 'Issi Arena', brand = 'Weeny', price = 80000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'issi5', name = 'Issi Future Shock', brand = 'Weeny', price = 80000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'issi6', name = 'Issi Nightmare', brand = 'Weeny', price = 80000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'panto', name = 'Panto', brand = 'Benefactor', price = 3200, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'prairie', name = 'Prairie', brand = 'Bollokan', price = 30000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'rhapsody', name = 'Rhapsody', brand = 'Declasse', price = 10000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'brioso2', name = 'Brioso 300', brand = 'Grotti', price = 12000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'weevil', name = 'Weevil', brand = 'BF', price = 9000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'issi7', name = 'Issi Sport', brand = 'Weeny', price = 100000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'blista2', name = 'Blista Compact', brand = 'Dinka', price = 18950, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'blista3', name = 'Blista Go Go Monkey', brand = 'Dinka', price = 15000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'brioso3', name = 'Brioso 300 Widebody', brand = 'Grotti', price = 125000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + { model = 'boor', name = 'Boor', brand = 'Karin', price = 23000, category = 'compacts', type = 'automobile', shop = 'pdm' }, + --- Sedans (1) + { model = 'asea', name = 'Asea', brand = 'Declasse', price = 2500, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'asterope', name = 'Asterope', brand = 'Karin', price = 11000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'cog55', name = 'Cognoscenti 55', brand = 'Enus', price = 22000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'cognoscenti', name = 'Cognoscenti', brand = 'Enus', price = 22500, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'emperor', name = 'Emperor', brand = 'Albany', price = 4250, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'fugitive', name = 'Fugitive', brand = 'Cheval', price = 20000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'glendale', name = 'Glendale', brand = 'Benefactor', price = 3400, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'glendale2', name = 'Glendale Custom', brand = 'Benefactor', price = 12000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'ingot', name = 'Ingot', brand = 'Vulcar', price = 4999, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'intruder', name = 'Intruder', brand = 'Karin', price = 11250, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'premier', name = 'Premier', brand = 'Declasse', price = 12000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'primo', name = 'Primo', brand = 'Albany', price = 5000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'primo2', name = 'Primo Custom', brand = 'Albany', price = 14500, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'regina', name = 'Regina', brand = 'Dundreary', price = 7000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'stafford', name = 'Stafford', brand = 'Enus', price = 30000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'stanier', name = 'Stanier', brand = 'Vapid', price = 19000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'stratum', name = 'Stratum', brand = 'Zirconium', price = 15000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'stretch', name = 'Stretch', brand = 'Dundreary', price = 19000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'superd', name = 'Super Diamond', brand = 'Enus', price = 17000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'surge', name = 'Surge', brand = 'Cheval', price = 20000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'tailgater', name = 'Tailgater', brand = 'Obey', price = 22000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'warrener', name = 'Warrener', brand = 'Vulcar', price = 4000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'washington', name = 'Washington', brand = 'Albany', price = 7000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'tailgater2', name = 'Tailgater S', brand = 'Obey', price = 51000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'cinquemila', name = 'Lampadati', brand = 'Cinquemila', price = 125000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'iwagen', name = 'Obey', brand = 'I-Wagen', price = 225000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'astron', name = 'Astron', brand = 'Pfister', price = 150000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'baller7', name = 'Baller ST', brand = 'Gallivanter', price = 145000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'comet7', name = 'Comet', brand = 'S2 Cabrio', price = 25000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'deity', name = 'Deity', brand = 'Enus', price = 505000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'jubilee', name = 'Jubilee', brand = 'Enus', price = 485000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'oracle', name = 'Oracle', brand = 'Übermacht', price = 22000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'schafter2', name = 'Schafter', brand = 'Benefactor', price = 16000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'warrener2', name = 'Warrener HKR', brand = 'Vulcar', price = 30000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'rhinehart', name = 'Rhinehart', brand = 'Übermacht', price = 105000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'eudora', name = 'Eudora', brand = 'Willard', price = 17000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'asterope2', name = 'Asterope GZ', brand = 'Karin', price = 459000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + { model = 'impaler5', name = 'Impaler SZ', brand = 'Declasse', price = 768000, category = 'sedans', type = 'automobile', shop = 'pdm' }, + --- SUV (2) + { model = 'baller', name = 'Baller', brand = 'Gallivanter', price = 22000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'baller2', name = 'Baller II', brand = 'Gallivanter', price = 15000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'baller3', name = 'Baller LE', brand = 'Gallivanter', price = 15000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'baller4', name = 'Baller LE LWB', brand = 'Gallivanter', price = 29000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'baller5', name = 'Baller LE (Armored)', brand = 'Gallivanter', price = 78000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'baller6', name = 'Baller LE LWB (Armored)', brand = 'Gallivanter', price = 82000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'bjxl', name = 'BeeJay XL', brand = 'Karin', price = 19000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'cavalcade', name = 'Cavalcade', brand = 'Albany', price = 14000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'cavalcade2', name = 'Cavalcade II', brand = 'Albany', price = 16500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'contender', name = 'Contender', brand = 'Vapid', price = 35000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'dubsta', name = 'Dubsta', brand = 'Benefactor', price = 19000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'dubsta2', name = 'Dubsta Luxury', brand = 'Benefactor', price = 19500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'fq2', name = 'FQ2', brand = 'Fathom', price = 18500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'granger', name = 'Granger', brand = 'Declasse', price = 22000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'gresley', name = 'Gresley', brand = 'Bravado', price = 25000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'habanero', name = 'Habanero', brand = 'Emperor', price = 20000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'huntley', name = 'Huntley S', brand = 'Enus', price = 24500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'landstalker', name = 'Landstalker', brand = 'Dundreary', price = 12000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'landstalker2', name = 'Landstalker XL', brand = 'Dundreary', price = 26000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'novak', name = 'Novak', brand = 'Lampadati', price = 70000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'patriot', name = 'Patriot', brand = 'Mammoth', price = 21000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'patriot2', name = 'Patriot Stretch', brand = 'Mammoth', price = 21000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'radi', name = 'Radius', brand = 'Vapid', price = 18000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'rebla', name = 'Rebla GTS', brand = 'Übermacht', price = 21000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'rocoto', name = 'Rocoto', brand = 'Obey', price = 13000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'seminole', name = 'Seminole', brand = 'Canis', price = 20000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'seminole2', name = 'Seminole Frontier', brand = 'Canis', price = 13000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'serrano', name = 'Serrano', brand = 'Benefactor', price = 48000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'toros', name = 'Toros', brand = 'Pegassi', price = 65000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'xls', name = 'XLS', brand = 'Benefactor', price = 17000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'granger2', name = 'Granger 3600LX', brand = 'Declasse', price = 221000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'patriot3', name = 'Patriot Military', brand = 'Mil-Spec', price = 270000, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'aleutian', name = 'Aleutian', brand = 'Vapid', price = 183500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'baller8', name = 'Baller ST-D', brand = 'Gallivanter', price = 171500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'cavalcade3', name = 'Cavalcade XL', brand = 'Albany', price = 166500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'dorado', name = 'Dorado', brand = 'Bravado', price = 137500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'vivanite', name = 'Vivanite', brand = 'Karin', price = 160500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + { model = 'castigator', name = 'Castigator', brand = 'Canis', price = 160500, category = 'suvs', type = 'automobile', shop = 'pdm' }, + --- Coupes (3) + { model = 'cogcabrio', name = 'Cognoscenti Cabrio', brand = 'Enus', price = 30000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'exemplar', name = 'Exemplar', brand = 'Dewbauchee', price = 40000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'f620', name = 'F620', brand = 'Ocelot', price = 32500, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'felon', name = 'Felon', brand = 'Lampadati', price = 31000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'felon2', name = 'Felon GT', brand = 'Lampadati', price = 37000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'jackal', name = 'Jackal', brand = 'Ocelot', price = 19000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'oracle2', name = 'Oracle XS', brand = 'Übermacht', price = 28000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'sentinel', name = 'Sentinel', brand = 'Übermacht', price = 30000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'sentinel2', name = 'Sentinel XS', brand = 'Übermacht', price = 33000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'windsor', name = 'Windsor', brand = 'Enus', price = 27000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'windsor2', name = 'Windsor Drop', brand = 'Enus', price = 34000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'zion', name = 'Zion', brand = 'Übermacht', price = 22000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'zion2', name = 'Zion Cabrio', brand = 'Übermacht', price = 28000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'previon', name = 'Previon', brand = 'Karin', price = 149000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'champion', name = 'Champion', brand = 'Dewbauchee', price = 205000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'futo', name = 'Futo', brand = 'Karin', price = 17500, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'sentinel3', name = 'Sentinel Classic', brand = 'Übermacht', price = 70000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'kanjosj', name = 'Kanjo SJ', brand = 'Dinka', price = 143000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'postlude', name = 'Postlude', brand = 'Dinka', price = 90000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'tahoma', name = 'Tahoma Coupe', brand = 'Declasse', price = 12000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'broadway', name = 'Broadway', brand = 'Classique', price = 20000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + { model = 'fr36', name = 'FR36', brand = 'Fathom', price = 161000, category = 'coupes', type = 'automobile', shop = 'pdm' }, + --- Muscle (4) + { model = 'blade', name = 'Blade', brand = 'Vapid', price = 23500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'buccaneer', name = 'Buccaneer', brand = 'Albany', price = 22500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'buccaneer2', name = 'Buccaneer Rider', brand = 'Albany', price = 24500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'chino', name = 'Chino', brand = 'Vapid', price = 5000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'chino2', name = 'Chino Luxe', brand = 'Vapid', price = 8000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'clique', name = 'Clique', brand = 'Vapid', price = 20000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'coquette3', name = 'Coquette BlackFin', brand = 'Invetero', price = 180000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'deviant', name = 'Deviant', brand = 'Schyster', price = 70000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dominator', name = 'Dominator', brand = 'Vapid', price = 62500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dominator2', name = 'Pißwasser Dominator', brand = 'Vapid', price = 50000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dominator3', name = 'Dominator GTX', brand = 'Vapid', price = 70000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dominator4', name = 'Dominator Arena', brand = 'Vapid', price = 200000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dominator7', name = 'Dominator ASP', brand = 'Vapid', price = 110000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dominator8', name = 'Dominator GTT', brand = 'Vapid', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dukes', name = 'Dukes', brand = 'Imponte', price = 23500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dukes2', name = 'Duke O\'Death', brand = 'Imponte', price = 60000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dukes3', name = 'Beater Dukes', brand = 'Imponte', price = 45000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'faction', name = 'Faction', brand = 'Willard', price = 17000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'faction2', name = 'Faction Rider', brand = 'Willard', price = 19000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'faction3', name = 'Faction Custom Donk', brand = 'Willard', price = 35000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'ellie', name = 'Ellie', brand = 'Vapid', price = 42250, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'gauntlet', name = 'Gauntlet', brand = 'Bravado', price = 28500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'gauntlet2', name = 'Redwood Gauntlet', brand = 'Bravado', price = 70000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'gauntlet3', name = 'Classic Gauntlet', brand = 'Bravado', price = 75000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'gauntlet4', name = 'Gauntlet Hellfire', brand = 'Bravado', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'gauntlet5', name = 'Gauntlet Classic Custom', brand = 'Bravado', price = 120000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'hermes', name = 'Hermes', brand = 'Albany', price = 535000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'hotknife', name = 'Hotknife', brand = 'Vapid', price = 90000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'hustler', name = 'Hustler', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'impaler', name = 'Impaler', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'impaler2', name = 'Impaler Arena', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'impaler3', name = 'Impaler Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'impaler4', name = 'Impaler Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'imperator', name = 'Imperator Arena', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'imperator2', name = 'imperator Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'imperator3', name = 'Imperator Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'lurcher', name = 'Lurcher', brand = 'Bravado', price = 21000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'nightshade', name = 'Nightshade', brand = 'Imponte', price = 70000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'phoenix', name = 'Phoenix', brand = 'Imponte', price = 65000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'picador', name = 'Picador', brand = 'Cheval', price = 20000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'ratloader2', name = 'Ratloader', brand = 'Ratloader2', price = 20000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'ruiner', name = 'Ruiner', brand = 'Imponte', price = 29000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'ruiner2', name = 'Ruiner 2000', brand = 'Imponte', price = 50000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'sabregt', name = 'Sabre GT Turbo', brand = 'Declasse', price = 23000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'sabregt2', name = 'Sabre GT Turbo Custom', brand = 'Declasse', price = 26500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'slamvan', name = 'Slam Van', brand = 'Vapid', price = 30000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'slamvan2', name = 'Lost Slam Van', brand = 'Vapid', price = 90000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'slamvan3', name = 'Slam Van Custom', brand = 'Vapid', price = 17000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'stalion', name = 'Stallion', brand = 'Declasse', price = 33000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'stalion2', name = 'Stallion Burgershot', brand = 'Declasse', price = 40000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'tampa', name = 'Tampa', brand = 'Declasse', price = 24500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'tulip', name = 'Tulip', brand = 'Declasse', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'vamos', name = 'Vamos', brand = 'Declasse', price = 30000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'vigero', name = 'Vigero', brand = 'Declasse', price = 39500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'virgo', name = 'Virgo', brand = 'Albany', price = 22000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'virgo2', name = 'Virgo Custom Classic', brand = 'Dundreary', price = 21000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'virgo3', name = 'Virgo Classic', brand = 'Dundreary', price = 21000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'voodoo', name = 'Voodoo', brand = 'Declasse', price = 13000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'yosemite', name = 'Yosemite', brand = 'Declasse', price = 19500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'yosemite2', name = 'Yosemite Drift', brand = 'Declasse', price = 55000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'buffalo4', name = 'Buffalo STX', brand = 'Bravado', price = 345000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'manana', name = 'Manana', brand = 'Albany', price = 12800, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'manana2', name = 'Manana Custom', brand = 'Albany', price = 24000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'tampa2', name = 'Drift Tampa', brand = 'Declasse', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'ruiner4', name = 'Ruiner ZZ-8', brand = 'Imponte', price = 85000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'vigero2', name = 'Vigero ZX', brand = 'Declasse', price = 105000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'weevil2', name = 'Weevil Custom', brand = 'BF', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'buffalo5', name = 'Buffalo EVX', brand = 'Bravado', price = 214000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'tulip2', name = 'Tulip M-100', brand = 'Declasse', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'clique2', name = 'Clique Wagon', brand = 'Vapid', price = 102500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'brigham', name = 'Brigham', brand = 'Albany', price = 149900, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'greenwood', name = 'Greenwood', brand = 'Bravado', price = 105000, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'dominator9', name = 'Dominator GT', brand = 'Vapid', price = 219500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'impaler6', name = 'Impaler LX', brand = 'Declasse', price = 146500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + { model = 'vigero3', name = 'Vigero ZX Convertible', brand = 'Declasse', price = 229500, category = 'muscle', type = 'automobile', shop = 'pdm' }, + --- Sports Classic (5) + { model = 'ardent', name = 'Ardent', brand = 'Ocelot', price = 30000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'btype', name = 'Roosevelt', brand = 'Albany', price = 75000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'btype2', name = 'Franken Stange', brand = 'Albany', price = 87000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'btype3', name = 'Roosevelt Valor', brand = 'Albany', price = 63000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'casco', name = 'Casco', brand = 'Lampadati', price = 100000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'deluxo', name = 'Deluxo', brand = 'Imponte', price = 55000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'dynasty', name = 'Dynasty', brand = 'Weeny', price = 25000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'fagaloa', name = 'Fagaloa', brand = 'Vulcar', price = 13000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'feltzer3', name = 'Stirling GT', brand = 'Benefactor', price = 115000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'gt500', name = 'GT500', brand = 'Grotti', price = 130000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'infernus2', name = 'Infernus Classic', brand = 'Pegassi', price = 245000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'jb700', name = 'JB 700', brand = 'Dewbauchee', price = 240000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'jb7002', name = 'JB 700W', brand = 'Dewbauchee', price = 40000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'mamba', name = 'Mamba', brand = 'Declasse', price = 140000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'michelli', name = 'Michelli GT', brand = 'Lampadati', price = 30000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'monroe', name = 'Monroe', brand = 'Pegassi', price = 115000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'nebula', name = 'Nebula', brand = 'Vulcar', price = 22000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'peyote', name = 'Peyote', brand = 'Vapid', price = 23500, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'peyote3', name = 'Peyote Custom', brand = 'Vapid', price = 48000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'pigalle', name = 'Pigalle', brand = 'Lampadati', price = 92000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'rapidgt3', name = 'Rapid GT Classic', brand = 'Dewbauchee', price = 90000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'retinue', name = 'Retinue', brand = 'Vapid', price = 32000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'retinue2', name = 'Retinue MKII', brand = 'Vapid', price = 38000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'savestra', name = 'Savestra', brand = 'Annis', price = 67000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'stinger', name = 'Stinger', brand = 'Grotti', price = 39500, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'stingergt', name = 'Stinger GT', brand = 'Grotti', price = 70000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'stromberg', name = 'Stromberg', brand = 'Ocelot', price = 80000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'swinger', name = 'Swinger', brand = 'Ocelot', price = 221000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'torero', name = 'Torero', brand = 'Pegassi', price = 84000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'tornado', name = 'Tornado', brand = 'Declasse', price = 21000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'tornado2', name = 'Tornado Convertible', brand = 'Declasse', price = 22000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'tornado5', name = 'Tornado Custom', brand = 'Declasse', price = 22000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'turismo2', name = 'Turismo Classic', brand = 'Grotti', price = 170000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'viseris', name = 'Viseris', brand = 'Lampadati', price = 210000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'z190', name = '190Z', brand = 'Karin', price = 78000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'ztype', name = 'Z-Type', brand = 'Truffade', price = 270000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'zion3', name = 'Zion Classic', brand = 'Übermacht', price = 45000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'cheburek', name = 'Cheburek', brand = 'Rune', price = 7000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'toreador', name = 'Toreador', brand = 'Pegassi', price = 50000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'peyote2', name = 'Peyote Gasser', brand = 'Vapid', price = 40000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'coquette2', name = 'Coquette Classic', brand = 'Invetero', price = 165000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'envisage', name = 'Envisage', brand = 'Bollokan', price = 190000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + { model = 'driftnebula', name = 'Nebula Turbo', brand = 'Vulcar', price = 100000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, + --- Sports (6) + { model = 'alpha', name = 'Alpha', brand = 'Albany', price = 53000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'banshee', name = 'Banshee', brand = 'Bravado', price = 56000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'bestiagts', name = 'Bestia GTS', brand = 'Grotti', price = 37000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'buffalo', name = 'Buffalo', brand = 'Bravado', price = 18750, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'buffalo2', name = 'Buffalo S', brand = 'Bravado', price = 24500, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'carbonizzare', name = 'Carbonizzare', brand = 'Grotti', price = 155000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'comet2', name = 'Comet', brand = 'Pfister', price = 130000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'comet3', name = 'Comet Retro Custom', brand = 'Pfister', price = 175000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'comet4', name = 'Comet Safari', brand = 'Pfister', price = 110000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'comet5', name = 'Comet SR', brand = 'Pfister', price = 155000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'coquette', name = 'Coquette', brand = 'Invetero', price = 145000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'coquette4', name = 'Coquette D10', brand = 'Invetero', price = 220000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'drafter', name = '8F Drafter', brand = 'Obey', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'elegy', name = 'Elegy Retro Custom', brand = 'Annis', price = 145000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'elegy2', name = 'Elegy RH8', brand = 'Annis', price = 150000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'feltzer2', name = 'Feltzer', brand = 'Benefactor', price = 97000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'flashgt', name = 'Flash GT', brand = 'Vapid', price = 48000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'furoregt', name = 'Furore GT', brand = 'Lampadati', price = 78000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'gb200', name = 'GB 200', brand = 'Vapid', price = 140000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'komoda', name = 'Komoda', brand = 'Lampadati', price = 55000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'imorgon', name = 'Imorgon', brand = 'Överflöd', price = 120000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'italigto', name = 'Itali GTO', brand = 'Progen', price = 260000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'jugular', name = 'Jugular', brand = 'Ocelot', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'jester', name = 'Jester', brand = 'Dinka', price = 132250, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'jester2', name = 'Jester Racecar', brand = 'Dinka', price = 210000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'jester3', name = 'Jester Classic', brand = 'Dinka', price = 85000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'khamelion', name = 'Khamelion', brand = 'Hijak', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'kuruma', name = 'Kuruma', brand = 'Karin', price = 72000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'kuruma2', name = 'kuruma2', brand = 'Karin2', price = 72000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'locust', name = 'Locust', brand = 'Ocelot', price = 200000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'lynx', name = 'Lynx', brand = 'Ocelot', price = 150000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'massacro', name = 'Massacro', brand = 'Dewbauchee', price = 110000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'massacro2', name = 'Massacro Racecar', brand = 'Dewbauchee', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'neo', name = 'Neo', brand = 'Vysser', price = 230000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'neon', name = 'Neon', brand = 'Pfister', price = 220000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'ninef', name = '9F', brand = 'Obey', price = 95000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'ninef2', name = '9F Cabrio', brand = 'Obey', price = 105000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'omnis', name = 'Omnis', brand = 'Wow', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'paragon', name = 'Paragon', brand = 'Enus', price = 60000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'pariah', name = 'Pariah', brand = 'Ocelot', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'penumbra', name = 'Penumbra', brand = 'Maibatsu', price = 22000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'penumbra2', name = 'Penumbra FF', brand = 'Maibatsu', price = 30000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'rapidgt', name = 'Rapid GT', brand = 'Dewbauchee', price = 86000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'rapidgt2', name = 'Rapid GT Convertible', brand = 'Dewbauchee', price = 92000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'raptor', name = 'Raptor', brand = 'BF', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'revolter', name = 'Revolter', brand = 'Übermacht', price = 95000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'ruston', name = 'Ruston', brand = 'Hijak', price = 130000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'schafter3', name = 'Schafter V12', brand = 'Benefactor', price = 35000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'schafter4', name = 'Schafter LWB', brand = 'Benefactor', price = 21000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'schlagen', name = 'Schlagen GT', brand = 'Benefactor', price = 160000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'schwarzer', name = 'Schwartzer', brand = 'Benefactor', price = 47000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'seven70', name = 'Seven-70', brand = 'Dewbauchee', price = 140000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'specter', name = 'Specter', brand = 'Dewbauchee', price = 160000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'streiter', name = 'Streiter', brand = 'Benefactor', price = 40000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'sugoi', name = 'Sugoi', brand = 'Dinka', price = 85000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'sultan', name = 'Sultan', brand = 'Karin', price = 50000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'sultan2', name = 'Sultan Custom', brand = 'Karin', price = 55000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'surano', name = 'Surano', brand = 'Benefactor', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'tropos', name = 'Tropos Rallye', brand = 'Lampadati', price = 65000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'verlierer2', name = 'Verlierer', brand = 'Bravado', price = 90500, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'vstr', name = 'V-STR', brand = 'Albany', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'italirsx', name = 'Itali RSX', brand = 'Progen', price = 260000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'zr350', name = 'ZR350', brand = 'Annis', price = 38000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'calico', name = 'Calico GTF', brand = 'Karin', price = 39000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'futo2', name = 'Futo GTX', brand = 'Karin', price = 39000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'euros', name = 'Euros', brand = 'Annis', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'jester4', name = 'Jester RR', brand = 'Dinka', price = 240000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'remus', name = 'Remus', brand = 'Annis', price = 48000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'comet6', name = 'Comet S2', brand = 'Pfister', price = 230000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'growler', name = 'Growler', brand = 'Pfister', price = 205000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'vectre', name = 'Vectre', brand = 'Emperor', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'cypher', name = 'Cypher', brand = 'Übermacht', price = 155000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'sultan3', name = 'Sultan Classic Custom', brand = 'Karin', price = 56000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'rt3000', name = 'RT3000', brand = 'Dinka', price = 65000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'sultanrs', name = 'Sultan RS', brand = 'Karin', price = 76500, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'visione', name = 'Visione', brand = 'Grotti', price = 750000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'cheetah2', name = 'Cheetah Classic', brand = 'Grotti', price = 195000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'stingertt', name = 'Itali GTO Stinger TT', brand = 'Maibatsu', price = 238000, category = 'sports', type = 'automobile', shop = 'pdm' }, + { model = 'omnisegt', name = 'Omnis e-GT', brand = 'Obey', price = 185000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'sentinel4', name = 'Sentinel Classic Widebody', brand = 'Übermacht', price = 140000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'sm722', name = 'SM722', brand = 'Benefactor', price = 125000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'tenf', name = '10F', brand = 'Obey', price = 185000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'tenf2', name = '10F Widebody', brand = 'Obey', price = 215000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'everon2', name = 'Everon Hotring', brand = 'Karin', price = 80000, category = 'sports', type = 'automobile', shop = 'pdm' }, + { model = 'issi8', name = 'Issi Rally', brand = 'Weeny', price = 10000, category = 'sports', type = 'automobile', shop = 'pdm' }, + { model = 'corsita', name = 'Corsita', brand = 'Lampadati', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'gauntlet6', name = 'Hotring Hellfire', brand = 'Bravado', price = 181000, category = 'sports', type = 'automobile', shop = 'pdm' }, + { model = 'coureur', name = 'La Coureuse', brand = 'Penaud', price = 199000, category = 'sports', type = 'automobile', shop = 'pdm' }, + { model = 'r300', name = '300R', brand = 'Annis', price = 56000, category = 'sports', type = 'automobile', shop = 'pdm' }, + { model = 'panthere', name = 'Panthere', brand = 'Toundra', price = 55000, category = 'sports', type = 'automobile', shop = 'pdm' }, + { model = 'driftsentinel', name = 'Drift Sentinel Classic', brand = 'Ubermacht', price = 150000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'paragon3', name = 'Paragon S', brand = 'Enus', price = 220000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'eurosX32', name = 'Euros X32', brand = 'Annis', price = 180000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'vorschlaghammer', name = 'Vorschlaghammer', brand = 'Pfister', price = 250000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'driftcypher', name = 'Drift Cypher', brand = 'Ubermacht', price = 160000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'coquette5', name = 'Coquette D1', brand = 'Invetero', price = 220000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'pipistrello', name = 'Pipistrello', brand = 'Overflod', price = 240000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'niobe', name = 'Niobe', brand = 'Ubermacht', price = 180000, category = 'sports', type = 'automobile', shop = 'luxury' }, + { model = 'driftvorschlag', name = 'Vorschlaghammer', brand = 'Pfister', price = 250000, category = 'sports', type = 'automobile', shop = 'luxury' }, + --- Super (7) + { model = 'adder', name = 'Adder', brand = 'Truffade', price = 280000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'autarch', name = 'Autarch', brand = 'Överflöd', price = 224000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'banshee2', name = 'Banshee 900R', brand = 'Bravado', price = 120000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'bullet', name = 'Bullet', brand = 'Vapid', price = 120000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'cheetah', name = 'Cheetah', brand = 'Grotti', price = 214000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'cyclone', name = 'Cyclone', brand = 'Coil', price = 300000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'entity2', name = 'Entity XXR', brand = 'Överflöd', price = 164000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'entityxf', name = 'Entity XF', brand = 'Överflöd', price = 180000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'emerus', name = 'Emerus', brand = 'Progen', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'fmj', name = 'FMJ', brand = 'Vapid', price = 125000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'furia', name = 'Furia', brand = 'Grotti', price = 230000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'gp1', name = 'GP1', brand = 'Progen', price = 110000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'infernus', name = 'Infernus', brand = 'Pegassi', price = 235000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'italigtb', name = 'Itali GTB', brand = 'Progen', price = 170000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'italigtb2', name = 'Itali GTB Custom', brand = 'Progen', price = 250000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'krieger', name = 'Krieger', brand = 'Benefactor', price = 222000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'le7b', name = 'RE-7B', brand = 'Annis', price = 260000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'nero', name = 'Nero', brand = 'Truffade', price = 200000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'nero2', name = 'Nero Custom', brand = 'Truffade', price = 260000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'osiris', name = 'Osiris', brand = 'Pegassi', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'penetrator', name = 'Penetrator', brand = 'Ocelot', price = 130000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'pfister811', name = '811', brand = 'Pfister', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'prototipo', name = 'X80 Proto', brand = 'Grotti', price = 235000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'reaper', name = 'Reaper', brand = 'Pegassi', price = 100000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 's80', name = 'S80RR', brand = 'Annis', price = 205000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'sc1', name = 'SC1', brand = 'Übermacht', price = 90000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'sheava', name = 'ETR1', brand = 'Emperor', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 't20', name = 'T20', brand = 'Progen', price = 1650000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'taipan', name = 'Taipan', brand = 'Cheval', price = 1850000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'tempesta', name = 'Tempesta', brand = 'Pegassi', price = 120000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'tezeract', name = 'Tezeract', brand = 'Pegassi', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'thrax', name = 'Thrax', brand = 'Truffade', price = 180000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'tigon', name = 'Tigon', brand = 'Lampadati', price = 240000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'turismor', name = 'Turismo R', brand = 'Grotti', price = 140000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'tyrant', name = 'Tyrant', brand = 'Överflöd', price = 2100000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'tyrus', name = 'Tyrus', brand = 'Progen', price = 230000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'vacca', name = 'Vacca', brand = 'Pegassi', price = 105000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'vagner', name = 'Vagner', brand = 'Dewbauchee', price = 1660000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'voltic', name = 'Voltic', brand = 'Coil', price = 120000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'voltic2', name = 'Rocket Voltic', brand = 'Coil', price = 9830400, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'xa21', name = 'XA-21', brand = 'Ocelot', price = 180000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'zentorno', name = 'Zentorno', brand = 'Pegassi', price = 340000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'zorrusso', name = 'Zorrusso', brand = 'Pegassi', price = 277000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'ignus', name = 'Ignus', brand = 'Pegassi', price = 1120000, category = 'super', type = 'automobile', shop = 'pdm' }, + { model = 'zeno', name = 'Zeno', brand = 'Överflöd', price = 1350000, category = 'super', type = 'automobile', shop = 'pdm' }, + { model = 'deveste', name = 'Deveste', brand = 'Principe', price = 234000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'lm87', name = 'LM87', brand = 'Benefactor', price = 155000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'torero2', name = 'Torero XO', brand = 'Pegassi', price = 245000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'entity3', name = 'Entity MT', brand = 'Overflod', price = 200000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'virtue', name = 'Virtue', brand = 'Ocelot', price = 72000, category = 'super', type = 'automobile', shop = 'luxury' }, + { model = 'turismo3', name = 'Turismo Omaggio', brand = 'Grotti', price = 284500, category = 'super', type = 'automobile', shop = 'luxury' }, + --- Motorcycles (8) + { model = 'akuma', name = 'Akuma', brand = 'Dinka', price = 55000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'avarus', name = 'Avarus', brand = 'LCC', price = 20000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'bagger', name = 'Bagger', brand = 'WMC', price = 13500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'bati', name = 'Bati 801', brand = 'Pegassi', price = 24000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'bati2', name = 'Bati 801RR', brand = 'Pegassi', price = 19000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'bf400', name = 'BF400', brand = 'Nagasaki', price = 22000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'carbonrs', name = 'Carbon RS', brand = 'Nagasaki', price = 22000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'chimera', name = 'Chimera', brand = 'Nagasaki', price = 21000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'cliffhanger', name = 'Cliffhanger', brand = 'Western', price = 28500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'daemon', name = 'Daemon', brand = 'WMC', price = 14000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'daemon2', name = 'Daemon Custom', brand = 'Western', price = 23000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'defiler', name = 'Defiler', brand = 'Shitzu', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'deathbike', name = 'Deathbike Apocalypse', brand = 'Deathbike', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'deathbike2', name = 'Deathbike Future Shock', brand = 'Deathbike', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'deathbike3', name = 'Deathbike Nightmare', brand = 'Deathbike', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'diablous', name = 'Diablous', brand = 'Principe', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'diablous2', name = 'Diablous Custom', brand = 'Principe', price = 38000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'double', name = 'Double-T', brand = 'Dinka', price = 28000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'enduro', name = 'Enduro', brand = 'Dinka', price = 5500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'esskey', name = 'Esskey', brand = 'Pegassi', price = 12000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'faggio', name = 'Faggio Sport', brand = 'Pegassi', price = 2000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'faggio2', name = 'Faggio', brand = 'Pegassi', price = 1900, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'faggio3', name = 'Faggio Mod', brand = 'Pegassi', price = 2500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'fcr', name = 'FCR 1000', brand = 'Pegassi', price = 5000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'fcr2', name = 'FCR 1000 Custom', brand = 'Pegassi', price = 19000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'gargoyle', name = 'Gargoyle', brand = 'Western', price = 32000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'hakuchou', name = 'Hakuchou', brand = 'Shitzu', price = 17000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'hakuchou2', name = 'Hakuchou Drag', brand = 'Shitzu', price = 45000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'hexer', name = 'Hexer', brand = 'LCC', price = 16000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'innovation', name = 'Innovation', brand = 'LLC', price = 33500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'lectro', name = 'Lectro', brand = 'Principe', price = 28000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'manchez', name = 'Manchez', brand = 'Maibatsu', price = 8300, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'nemesis', name = 'Nemesis', brand = 'Principe', price = 20000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'nightblade', name = 'Nightblade', brand = 'WMC', price = 23000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'oppressor', name = 'Oppressor', brand = 'Pegassi', price = 9999999, category = 'motorcycles', type = 'bike', shop = 'luxury' }, + { model = 'pcj', name = 'PCJ-600', brand = 'Shitzu', price = 15000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'ratbike', name = 'Rat Bike', brand = 'Western', price = 3000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'ruffian', name = 'Ruffian', brand = 'Pegassi', price = 25000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'sanchez', name = 'Sanchez Livery', brand = 'Maibatsu', price = 5300, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'sanchez2', name = 'Sanchez', brand = 'Maibatsu', price = 5300, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'sanctus', name = 'Sanctus', brand = 'LCC', price = 35000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'shotaro', name = 'Shotaro', brand = 'Nagasaki', price = 320000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'sovereign', name = 'Sovereign', brand = 'WMC', price = 8000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'stryder', name = 'Stryder', brand = 'Nagasaki', price = 50000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'thrust', name = 'Thrust', brand = 'Dinka', price = 22000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'vader', name = 'Vader', brand = 'Shitzu', price = 7200, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'vindicator', name = 'Vindicator', brand = 'Dinka', price = 19000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'vortex', name = 'Vortex', brand = 'Pegassi', price = 31000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'wolfsbane', name = 'Wolfsbane', brand = 'Western', price = 14000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'zombiea', name = 'Zombie Bobber', brand = 'Western', price = 28000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'zombieb', name = 'Zombie Chopper', brand = 'Western', price = 27000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'manchez2', name = 'Manchez Scout', brand = 'Maibatsu', price = 14000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'shinobi', name = 'Shinobi', brand = 'Nagasaki', price = 25000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'reever', name = 'Reever', brand = 'Western', price = 25000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'manchez3', name = 'Manchez Scout Classic', brand = 'Maibatsu', price = 15000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'powersurge', name = 'Powersurge', brand = 'Western', price = 7000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + { model = 'pizzaboy', name = 'Pizza Boy', brand = 'Pegassi', price = 50000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, + --- Off-Road (9) + { model = 'bfinjection', name = 'Bf Injection', brand = 'Annis', price = 9000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'bifta', name = 'Bifta', brand = 'Annis', price = 15500, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'blazer', name = 'Blazer', brand = 'Annis', price = 7500, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'blazer2', name = 'Blazer Lifeguard', brand = 'Nagasaki', price = 7000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'blazer3', name = 'Blazer Hot Rod', brand = 'Nagasaki', price = 7000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'blazer4', name = 'Blazer Sport', brand = 'Annis', price = 9250, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'blazer5', name = 'Blazer Aqua', brand = 'Nagasaki', price = 40000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'brawler', name = 'Brawler', brand = 'Annis', price = 40000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'caracara', name = 'Caracara', brand = 'Vapid', price = 60000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'caracara2', name = 'Caracara 4x4', brand = 'Vapid', price = 80000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'dubsta3', name = 'Dubsta 6x6', brand = 'Annis', price = 34000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'dune', name = 'Dune Buggy', brand = 'Annis', price = 14000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'everon', name = 'Everon', brand = 'Karin', price = 60000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'freecrawler', name = 'Freecrawler', brand = 'Canis', price = 24000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'hellion', name = 'Hellion', brand = 'Annis', price = 38000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'kalahari', name = 'Kalahari', brand = 'Canis', price = 14000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'kamacho', name = 'Kamacho', brand = 'Canis', price = 50000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'mesa3', name = 'Mesa Merryweather', brand = 'Canis', price = 400000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'outlaw', name = 'Outlaw', brand = 'Nagasaki', price = 15000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'rancherxl', name = 'Rancher XL', brand = 'Declasse', price = 24000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'rebel2', name = 'Rebel', brand = 'Vapid', price = 20000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'riata', name = 'Riata', brand = 'Vapid', price = 380000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'sandking', name = 'Sandking XL', brand = 'Vapid', price = 25000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'sandking2', name = 'Sandking SWB', brand = 'Vapid', price = 38000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'trophytruck', name = 'Trophy Truck', brand = 'Vapid', price = 60000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'trophytruck2', name = 'Desert Raid', brand = 'Vapid', price = 80000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'vagrant', name = 'Vagrant', brand = 'Maxwell', price = 50000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'verus', name = 'Verus', brand = 'Dinka', price = 20000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'winky', name = 'Winky', brand = 'Vapid', price = 10000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'yosemite3', name = 'Yosemite Rancher', brand = 'Declasse', price = 425000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'mesa', name = 'Mesa', brand = 'Canis', price = 12000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'ratel', name = 'Ratel', brand = 'Vapid', price = 199000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'l35', name = 'Walton L35', brand = 'Declasse', price = 167000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'monstrociti', name = 'MonstroCiti', brand = 'Maibatsu', price = 48000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'draugur', name = 'Draugur', brand = 'Declasse', price = 99000, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'terminus', name = 'Terminus', brand = 'Canis', price = 187750, category = 'offroad', type = 'automobile', shop = 'pdm' }, + { model = 'yosemite4', name = 'Yosemite 1500', brand = 'Declasse', price = 187750, category = 'offroad', type = 'automobile', shop = 'pdm' }, + --- Industrial (10) + { model = 'guardian', name = 'Guardian', brand = 'Vapid', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'mixer2', name = 'Mixer II', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'tiptruck2', name = 'Tipper II', brand = 'Brute', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'tiptruck', name = 'Tipper', brand = 'Brute', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'rubble', name = 'Rubble', brand = 'Jobuilt', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'mixer', name = 'Mixer', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'flatbed', name = 'Flatbed Truck', brand = 'MTL', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'dump', name = 'Dump Truck', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'bulldozer', name = 'Dozer', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'handler', name = 'Dock Handler', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + { model = 'cutter', name = 'Cutter', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, + --- Utility (11) + { model = 'slamtruck', name = 'Slam Truck', brand = 'Vapid', price = 100000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'caddy3', name = 'Caddy (Bunker)', brand = 'Nagasaki', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'caddy2', name = 'Caddy (Civilian)', brand = 'Nagasaki', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'caddy3', name = 'Caddy (Golf)', brand = 'Nagasaki', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'utillitruck', name = 'Utility Truck (Cherry Picker)', brand = 'Brute', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'utillitruck2', name = 'Utility Truck (Van)', brand = 'Brute', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'utillitruck3', name = 'Utility Truck (Contender)', brand = 'Vapid', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'tractor', name = 'Tractor', brand = 'Stanley', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'tractor2', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'tractor3', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'towtruck', name = 'Tow Truck (Large)', brand = 'Vapid', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'towtruck2', name = 'Tow Truck (Small)', brand = 'Vapid', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'scrap', name = 'Scrap Truck', brand = 'Vapid', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'sadler', name = 'Sadler', brand = 'Vapid', price = 20000, category = 'utility', type = 'automobile', shop = 'pdm' }, + { model = 'ripley', name = 'Ripley', brand = 'HVY', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'mower', name = 'Lawn Mower', brand = 'Jacksheepe', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'forklift', name = 'Forklift', brand = 'HVY', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'docktug', name = 'Docktug', brand = 'HVY', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'airtug', name = 'Airtug', brand = 'HVY', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'trailers5', name = 'Trailer (Christmas)', brand = 'Unknown', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + { model = 'tvtrailer2', name = 'Trailer (TV)', brand = 'Unknown', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, + --- Vans (12) + { model = 'bison', name = 'Bison', brand = 'Bravado', price = 18000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'bobcatxl', name = 'Bobcat XL Open', brand = 'Vapid', price = 13500, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'burrito3', name = 'Burrito', brand = 'Declasse', price = 4000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'gburrito2', name = 'Burrito Custom', brand = 'Declasse', price = 11500, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'rumpo', name = 'Rumpo', brand = 'Bravado', price = 9000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'journey', name = 'Journey', brand = 'Zirconium', price = 6500, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'minivan', name = 'Minivan', brand = 'Vapid', price = 7000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'minivan2', name = 'Minivan Custom', brand = 'Vapid', price = 10000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'paradise', name = 'Paradise', brand = 'Bravado', price = 9000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'rumpo3', name = 'Rumpo Custom', brand = 'Bravado', price = 19500, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'speedo', name = 'Speedo', brand = 'Vapid', price = 10000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'speedo4', name = 'Speedo Custom', brand = 'Vapid', price = 15000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'surfer', name = 'Surfer', brand = 'BF', price = 9000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'youga3', name = 'Youga Classic 4x4', brand = 'Bravado', price = 15000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'youga', name = 'Youga', brand = 'Bravado', price = 8000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'youga2', name = 'Youga Classic', brand = 'Bravado', price = 14500, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'youga4', name = 'Youga Custom', brand = 'Bravado', price = 85000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'moonbeam', name = 'Moonbeam', brand = 'Declasse', price = 13000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'moonbeam2', name = 'Moonbeam Custom', brand = 'Declasse', price = 15000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'boxville', name = 'Boxville LSDWP', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, + { model = 'boxville2', name = 'Boxville Go Postal', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, + { model = 'boxville3', name = 'Boxville Humane Labs', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, + { model = 'boxville4', name = 'Boxville Post OP', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, + { model = 'boxville5', name = 'Armored Boxville', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'none' }, + { model = 'pony', name = 'Pony', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, + { model = 'pony2', name = 'Pony (Smoke on the water)', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, + { model = 'journey2', name = 'Journey II', brand = 'Zirconium', price = 7000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'surfer3', name = 'Surfer Custom', brand = 'BF', price = 15000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'speedo5', name = 'Speedo Custom', brand = 'Vapid', price = 238000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'mule2', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'mule3', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'taco', name = 'Taco Truck', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'pdm' }, + { model = 'boxville6', name = 'Boxville (LSDS)', brand = 'Brute', price = 47500, category = 'vans', type = 'automobile', shop = 'pdm' }, + --- Cycles (13) + { model = 'bmx', name = 'BMX', brand = 'Bike', price = 160, category = 'cycles', type = 'bike', shop = 'pdm' }, + { model = 'cruiser', name = 'Cruiser', brand = 'Bike', price = 510, category = 'cycles', type = 'bike', shop = 'pdm' }, + { model = 'fixter', name = 'Fixter', brand = 'Bike', price = 225, category = 'cycles', type = 'bike', shop = 'pdm' }, + { model = 'scorcher', name = 'Scorcher', brand = 'Bike', price = 280, category = 'cycles', type = 'bike', shop = 'pdm' }, + { model = 'tribike', name = 'Whippet Race Bike', brand = 'Bike', price = 500, category = 'cycles', type = 'bike', shop = 'pdm' }, + { model = 'tribike2', name = 'Endurex Race Bike', brand = 'Bike', price = 700, category = 'cycles', type = 'bike', shop = 'pdm' }, + { model = 'tribike3', name = 'Tri-Cycles Race Bike', brand = 'Bike', price = 520, category = 'cycles', type = 'bike', shop = 'pdm' }, + { model = 'inductor', name = 'Inductor', brand = 'Coil', price = 5000, category = 'cycles', type = 'bike', shop = 'pdm' }, + { model = 'inductor2', name = 'Junk Energy Inductor', brand = 'Coil', price = 5000, category = 'cycles', type = 'bike', shop = 'pdm' }, + --- Boats (14) + { model = 'avisa', name = 'Avisa', brand = 'Kraken Subs', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, + { model = 'patrolboat', name = 'Kurtz 31 Patrol Boat', brand = 'Unknown', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, + { model = 'longfin', name = 'Longfin', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'tug', name = 'Tug', brand = 'Buckingham', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, + { model = 'toro', name = 'Toro', brand = 'Lampadati', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'toro2', name = 'Toro Yacht', brand = 'Lampadati', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'submersible2', name = 'Kraken', brand = 'Kraken Subs', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, + { model = 'speeder', name = 'Speeder', brand = 'Pegassi', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'speeder2', name = 'Speeder Yacht', brand = 'Pegassi', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'tropic', name = 'Tropic', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'tropic2', name = 'Tropic Yacht', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'suntrap', name = 'Suntrap', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'submersible', name = 'Submersible', brand = 'Kraken Subs', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, + { model = 'squalo', name = 'Squalo', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'seashark', name = 'Seashark', brand = 'Speedophile', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'seashark3', name = 'Seashark Yacht', brand = 'Speedophile', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'marquis', name = 'Marquis', brand = 'Dinka', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'jetmax', name = 'Jetmax', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'dinghy', name = 'Dinghy 2-Seater', brand = 'Nagasaki', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'dinghy2', name = 'Dinghy 4-Seater', brand = 'Nagasaki', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'dinghy3', name = 'Dinghy (Heist)', brand = 'Nagasaki', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + { model = 'dinghy4', name = 'Dinghy Yacht', brand = 'Nagasaki', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, + --- Helicopters (15) + { model = 'conada2', name = 'Weaponized Conada', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'conada', name = 'Conada', brand = 'Buckingham', price = 115000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'seasparrow2', name = 'Sparrow', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'annihilator2', name = 'Annihilator Stealth', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'seasparrow', name = 'Sea Sparrow', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'akula', name = 'Akula', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'hunter', name = 'FH-1 Hunter', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'havok', name = 'Havok', brand = 'Nagasaki', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'volatus', name = 'Volatus', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'supervolito2', name = 'SuperVolito Carbon', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'supervolito', name = 'SuperVolito', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'swift2', name = 'Swift Deluxe', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'valkyrie', name = 'Valkyrie', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'savage', name = 'Savage', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'swift', name = 'Swift', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'annihilator', name = 'Annihilator', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'cargobob2', name = 'Cargobob Jetsam', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'skylift', name = 'Skylift', brand = 'HVY', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'maverick', name = 'Maverick', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'frogger', name = 'Frogger', brand = 'Maibatsu', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'frogger2', name = 'Frogger', brand = 'Maibatsu', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, + { model = 'cargobob', name = 'Cargobob', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'cargobob3', name = 'Cargobob', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'seasparrow3', name = 'Sparrow (Prop)', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'buzzard', name = 'Buzzard Attack Chopper', brand = 'Nagasaki', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + { model = 'buzzard2', name = 'Buzzard', brand = 'Nagasaki', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, + --- Planes (16) + { model = 'streamer216', name = 'Streamer216', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'raiju', name = 'F-160 Raiju', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'alkonost', name = 'RO-86 Alkonost', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'strikeforce', name = 'B-11 Strikeforce', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'blimp3', name = 'Blimp', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'avenger', name = 'Avenger', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'avenger2', name = 'Avenger', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'volatol', name = 'Volatol', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'nokota', name = 'P-45 Nokota', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'seabreeze', name = 'Seabreeze', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'pyro', name = 'Pyro', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'mogul', name = 'Mogul', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'howard', name = 'Howard NX-25', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'bombushka', name = 'RM-10 Bombushka', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'molotok', name = 'V-65 Molotok', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'microlight', name = 'Ultralight', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'tula', name = 'Tula', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'rogue', name = 'Rogue', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'starling', name = 'LF-22 Starling', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'alphaz1', name = 'Alpha-Z1', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'nimbus', name = 'Nimbus', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'luxor2', name = 'Luxor Deluxe', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'velum2', name = 'Velum 5-seater', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'hydra', name = 'Hydra', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'blimp2', name = 'Xero Blimp', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'dodo', name = 'Dodo', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'miljet', name = 'Miljet', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'besra', name = 'Besra', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'vestra', name = 'Vestra', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'cargoplane', name = 'Cargo Plane', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'velum', name = 'Velum', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'titan', name = 'Titan', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'shamal', name = 'Shamal', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'lazer', name = 'P-996 Lazer', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'mammatus', name = 'Mammatus', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'stunt', name = 'Mallard', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'luxor', name = 'Luxor', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'jet', name = 'Jet', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + { model = 'duster', name = 'Duster', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'cuban800', name = 'Cuban 800', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, + { model = 'blimp', name = 'Atomic Blimp', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, + --- Service (17) + { model = 'brickade', name = 'Brickade', brand = 'MTL', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'brickade2', name = 'Brickade 6x6', brand = 'MTL', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'pbus2', name = 'Festival Bus', brand = 'Unknown', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'wastelander', name = 'Wastelander', brand = 'MTL', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'rallytruck', name = 'Dune', brand = 'MTL', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'metrotrain', name = 'Metro Train', brand = 'Unknown', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'freight', name = 'Freight Train', brand = 'Unknown', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'cablecar', name = 'Cable Car', brand = 'Unknown', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'trash', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'trash2', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'tourbus', name = 'Tour Bus', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'taxi', name = 'Taxi', brand = 'Vapid', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'rentalbus', name = 'Rental Shuttle Bus', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'coach', name = 'Dashound', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'bus', name = 'Bus', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + { model = 'airbus', name = 'Airport Bus', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, + --- Emergency (18) + { model = 'riot', name = 'Police Riot', brand = 'Brute', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'riot2', name = 'RCV', brand = 'Unknown', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'pbus', name = 'Police Prison Bus', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'police', name = 'Police Cruiser', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'police2', name = 'Police Buffalo', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'police3', name = 'Police Interceptor', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'police4', name = 'Unmarked Cruiser', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'sheriff', name = 'Sheriff SUV', brand = 'Declasse', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'sheriff2', name = 'Sheriff Cruiser', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'policeold1', name = 'Police Rancher', brand = 'Declasse', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'policeold2', name = 'Police Roadcruiser', brand = 'Albany', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'policet', name = 'Police Transporter', brand = 'Vapid', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'policeb', name = 'Police Bike', brand = 'Vapid', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'polmav', name = 'Police Maverick', brand = 'Buckingham', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'ambulance', name = 'Ambulance', brand = 'Brute', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'firetruk', name = 'Fire Truck', brand = 'MTL', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'lguard', name = 'Lifeguard', brand = 'Declasse', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'seashark2', name = 'Seashark Lifeguard', brand = 'Speedophile', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'pranger', name = 'Park Ranger', brand = 'Declasse', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'fbi', name = 'FIB Buffalo', brand = 'Bravado', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'fbi2', name = 'FIB Granger', brand = 'Declasse', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'predator', name = 'Police Predator', brand = 'Unknown', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'polgauntlet', name = 'Gauntlet Interceptor', brand = 'Bravado', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'police5', name = 'Stanier LE Cruiser', brand = 'Vapid', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'polimpaler5', name = 'Impaler SZ Cruiser', brand = 'Declasse', price = 80000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'polimpaler6', name = 'Impaler LX Cruiser', brand = 'Declasse', price = 90000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'poldominator10', name = 'Dominator FX Interceptor', brand = 'Vapid', price = 230000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'policet3', name = 'Burrito (Bail Enforcement)', brand = 'Declasse', price = 60000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'polgreenwood', name = 'Greenwood Cruiser', brand = 'Bravado', price = 80000, category = 'emergency', type = 'automobile', shop = 'none' }, + { model = 'poldorado', name = 'Dorado Cruiser', brand = 'Vapid', price = 80000, category = 'emergency', type = 'automobile', shop = 'none' }, + --- Military (19) + { model = 'vetir', name = 'Vetir', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'kosatka', name = 'Kosatka', brand = 'Rune', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'minitank', name = 'RC Tank', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'scarab', name = 'Scarab', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'terbyte', name = 'Terrorbyte', brand = 'Benefactor', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'thruster', name = 'Thruster', brand = 'Mammoth', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'khanjali', name = 'TM-02 Khanjali Tank', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'chernobog', name = 'Chernobog', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'barrage', name = 'Barrage', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'trailerlarge', name = 'Mobile Operations Center', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'halftrack', name = 'Half-track', brand = 'Bravado', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'apc', name = 'APC Tank', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'trailersmall2', name = 'Anti-Aircraft Trailer', brand = 'Vom Feuer', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'rhino', name = 'Rhino Tank', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'crusader', name = 'Crusader', brand = 'Canis', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'barracks', name = 'Barracks', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'barracks2', name = 'Barracks Semi', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + { model = 'barracks3', name = 'Barracks', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, + --- Commercial (20) + { model = 'cerberus', name = 'Apocalypse Cerberus', brand = 'MTL', price = 100000, category = 'commercial', type = 'automobile', shop = 'none' }, + { model = 'pounder2', name = 'Pounder Custom', brand = 'MTL', price = 55000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'mule4', name = 'Mule Custom', brand = 'Maibatsu', price = 40000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'phantom3', name = 'Phantom Custom', brand = 'Jobuilt', price = 110000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'hauler2', name = 'Hauler Custom', brand = 'Jobuilt', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'phantom2', name = 'Phantom Wedge', brand = 'Jobuilt', price = 100000, category = 'commercial', type = 'automobile', shop = 'none' }, + { model = 'mule5', name = 'Mule (Heist)', brand = 'Maibatsu', price = 40000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'stockade', name = 'Stockade', brand = 'Brute', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'pounder', name = 'Pounder', brand = 'MTL', price = 55000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'phantom', name = 'Phantom', brand = 'Jobuilt', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'packer', name = 'Packer', brand = 'MTL', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'mule', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'hauler', name = 'Hauler', brand = 'Jobuilt', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'biff', name = 'Biff', brand = 'Brute', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'benson', name = 'Benson', brand = 'Vapid', price = 55000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'benson2', name = 'Benson (Cluckin Bell)', brand = 'Vapid', price = 55000, category = 'commercial', type = 'automobile', shop = 'truck' }, + { model = 'phantom4', name = 'Phantom (Christmas)', brand = 'Vapid', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, + --- Trains (21) + --- Open Wheel (22) + { model = 'openwheel2', name = 'DR1', brand = 'Declasse', price = 100000, category = 'openwheel', type = 'automobile', shop = 'none' }, + { model = 'openwheel1', name = 'BR8', brand = 'Benefactor', price = 100000, category = 'openwheel', type = 'automobile', shop = 'none' }, + { model = 'formula2', name = 'R88', brand = 'Ocelot', price = 100000, category = 'openwheel', type = 'automobile', shop = 'none' }, + { model = 'formula', name = 'PR4', brand = 'Progen', price = 100000, category = 'openwheel', type = 'automobile', shop = 'none' }, +} + +QBShared.VehicleHashes = QBShared.VehicleHashes or {} +for i = 1, #Vehicles do + local hash = joaat(Vehicles[i].model) + QBShared.Vehicles[Vehicles[i].model] = { + spawncode = Vehicles[i].model, + name = Vehicles[i].name, + brand = Vehicles[i].brand, + model = Vehicles[i].model, + price = Vehicles[i].price, + category = Vehicles[i].category, + hash = hash, + type = Vehicles[i].type, + shop = Vehicles[i].shop + } + QBShared.VehicleHashes[hash] = QBShared.Vehicles[Vehicles[i].model] +end diff --git a/resources/[core]/qb-core/shared/weapons.lua b/resources/[core]/qb-core/shared/weapons.lua new file mode 100644 index 0000000..823dda8 --- /dev/null +++ b/resources/[core]/qb-core/shared/weapons.lua @@ -0,0 +1,151 @@ +QBShared = QBShared or {} +QBShared.Weapons = { + -- // WEAPONS + -- Melee + [`weapon_unarmed`] = { name = 'weapon_unarmed', label = 'Fists', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_dagger`] = { name = 'weapon_dagger', label = 'Dagger', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, + [`weapon_bat`] = { name = 'weapon_bat', label = 'Bat', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_bottle`] = { name = 'weapon_bottle', label = 'Broken Bottle', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, + [`weapon_crowbar`] = { name = 'weapon_crowbar', label = 'Crowbar', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_flashlight`] = { name = 'weapon_flashlight', label = 'Flashlight', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_golfclub`] = { name = 'weapon_golfclub', label = 'Golfclub', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_hammer`] = { name = 'weapon_hammer', label = 'Hammer', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_hatchet`] = { name = 'weapon_hatchet', label = 'Hatchet', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, + [`weapon_knuckle`] = { name = 'weapon_knuckle', label = 'Knuckle', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_knife`] = { name = 'weapon_knife', label = 'Knife', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, + [`weapon_machete`] = { name = 'weapon_machete', label = 'Machete', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, + [`weapon_switchblade`] = { name = 'weapon_switchblade', label = 'Switchblade', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, + [`weapon_nightstick`] = { name = 'weapon_nightstick', label = 'Nightstick', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_wrench`] = { name = 'weapon_wrench', label = 'Wrench', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_battleaxe`] = { name = 'weapon_battleaxe', label = 'Battle Axe', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, + [`weapon_poolcue`] = { name = 'weapon_poolcue', label = 'Poolcue', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_briefcase`] = { name = 'weapon_briefcase', label = 'Briefcase', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_briefcase_02`] = { name = 'weapon_briefcase_02', label = 'Briefcase', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_garbagebag`] = { name = 'weapon_garbagebag', label = 'Garbage Bag', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_handcuffs`] = { name = 'weapon_handcuffs', label = 'Handcuffs', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_bread`] = { name = 'weapon_bread', label = 'Baquette', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, + [`weapon_stone_hatchet`] = { name = 'weapon_stone_hatchet', label = 'Stone Hatchet', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, + [`weapon_candycane`] = { name = 'weapon_candycane', label = 'Candy Cane', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee Killed / Whacked / Executed / Beat down / Musrdered / Battered / Candy Caned' }, + + -- Handguns + [`weapon_pistol`] = { name = 'weapon_pistol', label = 'Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_pistol_mk2`] = { name = 'weapon_pistol_mk2', label = 'Pistol Mk2', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_combatpistol`] = { name = 'weapon_combatpistol', label = 'Combat Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_appistol`] = { name = 'weapon_appistol', label = 'AP Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_stungun`] = { name = 'weapon_stungun', label = 'Taser', weapontype = 'Pistol', ammotype = 'AMMO_STUNGUN', damagereason = 'Died' }, + [`weapon_pistol50`] = { name = 'weapon_pistol50', label = 'Pistol .50 Cal', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_snspistol`] = { name = 'weapon_snspistol', label = 'SNS Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_snspistol_mk2`] = { name = 'weapon_snspistol_mk2', label = 'SNS Pistol MK2', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_heavypistol`] = { name = 'weapon_heavypistol', label = 'Heavy Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_vintagepistol`] = { name = 'weapon_vintagepistol', label = 'Vintage Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_flaregun`] = { name = 'weapon_flaregun', label = 'Flare Gun', weapontype = 'Pistol', ammotype = 'AMMO_FLARE', damagereason = 'Died' }, + [`weapon_marksmanpistol`] = { name = 'weapon_marksmanpistol', label = 'Marksman Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_revolver`] = { name = 'weapon_revolver', label = 'Revolver', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_revolver_mk2`] = { name = 'weapon_revolver_mk2', label = 'Revolver MK2', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_doubleaction`] = { name = 'weapon_doubleaction', label = 'Double Action Revolver', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_raypistol`] = { name = 'weapon_raypistol', label = 'Ray Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_ceramicpistol`] = { name = 'weapon_ceramicpistol', label = 'Ceramic Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_navyrevolver`] = { name = 'weapon_navyrevolver', label = 'Navy Revolver', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_gadgetpistol`] = { name = 'weapon_gadgetpistol', label = 'Gadget Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, + [`weapon_stungun_mp`] = { name = 'weapon_stungun_mp', label = 'Taser', weapontype = 'Pistol', ammotype = 'AMMO_STUNGUN', damagereason = 'Died' }, + [`weapon_pistolxm3`] = { name = 'weapon_pistolxm3', label = 'Pistol XM3', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plaugged / Bust a cap in' }, + + -- Submachine Guns + [`weapon_microsmg`] = { name = 'weapon_microsmg', label = 'Micro SMG', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, + [`weapon_smg`] = { name = 'weapon_smg', label = 'SMG', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, + [`weapon_smg_mk2`] = { name = 'weapon_smg_mk2', label = 'SMG MK2', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, + [`weapon_assaultsmg`] = { name = 'weapon_assaultsmg', label = 'Assault SMG', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, + [`weapon_combatpdw`] = { name = 'weapon_combatpdw', label = 'Combat PDW', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, + [`weapon_machinepistol`] = { name = 'weapon_machinepistol', label = 'Tec-9', weapontype = 'Submachine Gun', ammotype = 'AMMO_PISTOL', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, + [`weapon_minismg`] = { name = 'weapon_minismg', label = 'Mini SMG', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, + [`weapon_raycarbine`] = { name = 'weapon_raycarbine', label = 'Raycarbine', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, + + -- Shotguns + [`weapon_pumpshotgun`] = { name = 'weapon_pumpshotgun', label = 'Pump Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + [`weapon_pumpshotgun_mk2`] = { name = 'weapon_pumpshotgun_mk2', label = 'Pump Shotgun MK2', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + [`weapon_sawnoffshotgun`] = { name = 'weapon_sawnoffshotgun', label = 'Sawn-off Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + [`weapon_assaultshotgun`] = { name = 'weapon_assaultshotgun', label = 'Assault Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + [`weapon_bullpupshotgun`] = { name = 'weapon_bullpupshotgun', label = 'Bullpup Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + [`weapon_musket`] = { name = 'weapon_musket', label = 'Musket', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + [`weapon_heavyshotgun`] = { name = 'weapon_heavyshotgun', label = 'Heavy Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + [`weapon_dbshotgun`] = { name = 'weapon_dbshotgun', label = 'Double-barrel Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + [`weapon_autoshotgun`] = { name = 'weapon_autoshotgun', label = 'Auto Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + [`weapon_combatshotgun`] = { name = 'weapon_combatshotgun', label = 'Combat Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, + + -- Assault Rifles + [`weapon_assaultrifle`] = { name = 'weapon_assaultrifle', label = 'Assault Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_assaultrifle_mk2`] = { name = 'weapon_assaultrifle_mk2', label = 'Assault Rifle MK2', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_carbinerifle`] = { name = 'weapon_carbinerifle', label = 'Carbine Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_carbinerifle_mk2`] = { name = 'weapon_carbinerifle_mk2', label = 'Carbine Rifle MK2', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_advancedrifle`] = { name = 'weapon_advancedrifle', label = 'Advanced Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_specialcarbine`] = { name = 'weapon_specialcarbine', label = 'Special Carbine', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_specialcarbine_mk2`] = { name = 'weapon_specialcarbine_mk2', label = 'Specialcarbine MK2', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_bullpuprifle`] = { name = 'weapon_bullpuprifle', label = 'Bullpup Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_bullpuprifle_mk2`] = { name = 'weapon_bullpuprifle_mk2', label = 'Bull Puprifle MK2', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_compactrifle`] = { name = 'weapon_compactrifle', label = 'Compact Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_militaryrifle`] = { name = 'weapon_militaryrifle', label = 'Military Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + [`weapon_heavyrifle`] = { name = 'weapon_heavyrifle', label = 'Heavy Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, + + -- Light Machine Guns + [`weapon_mg`] = { name = 'weapon_mg', label = 'Machinegun', weapontype = 'Light Machine Gun', ammotype = 'AMMO_MG', damagereason = 'Machine gunned / Sprayed / Ruined' }, + [`weapon_combatmg`] = { name = 'weapon_combatmg', label = 'Combat MG', weapontype = 'Light Machine Gun', ammotype = 'AMMO_MG', damagereason = 'Machine gunned / Sprayed / Ruined' }, + [`weapon_combatmg_mk2`] = { name = 'weapon_combatmg_mk2', label = 'Combat MG MK2', weapontype = 'Light Machine Gun', ammotype = 'AMMO_MG', damagereason = 'Machine gunned / Sprayed / Ruined' }, + [`weapon_gusenberg`] = { name = 'weapon_gusenberg', label = 'Thompson SMG', weapontype = 'Light Machine Gun', ammotype = 'AMMO_MG', damagereason = 'Machine gunned / Sprayed / Ruined' }, + + -- Sniper Rifles + [`weapon_sniperrifle`] = { name = 'weapon_sniperrifle', label = 'Sniper Rifle', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, + [`weapon_heavysniper`] = { name = 'weapon_heavysniper', label = 'Heavy Sniper', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, + [`weapon_heavysniper_mk2`] = { name = 'weapon_heavysniper_mk2', label = 'Heavysniper MK2', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, + [`weapon_marksmanrifle`] = { name = 'weapon_marksmanrifle', label = 'Marksman Rifle', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, + [`weapon_marksmanrifle_mk2`] = { name = 'weapon_marksmanrifle_mk2', label = 'Marksman Rifle MK2', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, + [`weapon_remotesniper`] = { name = 'weapon_remotesniper', label = 'Remote Sniper', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER_REMOTE', damagereason = 'Sniped / Picked off / Scoped' }, + + -- Heavy Weapons + [`weapon_rpg`] = { name = 'weapon_rpg', label = 'RPG', weapontype = 'Heavy Weapons', ammotype = 'AMMO_RPG', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_grenadelauncher`] = { name = 'weapon_grenadelauncher', label = 'Grenade Launcher', weapontype = 'Heavy Weapons', ammotype = 'AMMO_GRENADELAUNCHER', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_grenadelauncher_smoke`] = { name = 'weapon_grenadelauncher_smoke', label = 'Smoke Grenade Launcher', weapontype = 'Heavy Weapons', ammotype = 'AMMO_GRENADELAUNCHER', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_minigun`] = { name = 'weapon_minigun', label = 'Minigun', weapontype = 'Heavy Weapons', ammotype = 'AMMO_MINIGUN', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_firework`] = { name = 'weapon_firework', label = 'Firework Launcher', weapontype = 'Heavy Weapons', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_railgun`] = { name = 'weapon_railgun', label = 'Railgun', weapontype = 'Heavy Weapons', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_railgunxm3`] = { name = 'weapon_railgunxm3', label = 'Railgun XM3', weapontype = 'Heavy Weapons', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_hominglauncher`] = { name = 'weapon_hominglauncher', label = 'Homing Launcher', weapontype = 'Heavy Weapons', ammotype = 'AMMO_STINGER', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_compactlauncher`] = { name = 'weapon_compactlauncher', label = 'Compact Launcher', weapontype = 'Heavy Weapons', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_rayminigun`] = { name = 'weapon_rayminigun', label = 'Ray Minigun', weapontype = 'Heavy Weapons', ammotype = 'AMMO_MINIGUN', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_emplauncher`] = { name = 'weapon_emplauncher', label = 'EMP Launcher', weapontype = 'Heavy Weapons', ammotype = 'AMMO_EMPLAUNCHER', damagereason = 'Died' }, + + -- Throwables + [`weapon_grenade`] = { name = 'weapon_grenade', label = 'Grenade', weapontype = 'Throwable', ammotype = nil, damagereason = 'Bombed / Exploded / Detonated / Blew up' }, + [`weapon_bzgas`] = { name = 'weapon_bzgas', label = 'BZ Gas', weapontype = 'Throwable', ammotype = nil, damagereason = 'Died' }, + [`weapon_molotov`] = { name = 'weapon_molotov', label = 'Molotov', weapontype = 'Throwable', ammotype = nil, damagereason = 'Torched / Flambeed / Barbecued' }, + [`weapon_stickybomb`] = { name = 'weapon_stickybomb', label = 'C4', weapontype = 'Throwable', ammotype = nil, damagereason = 'Bombed / Exploded / Detonated / Blew up' }, + [`weapon_proxmine`] = { name = 'weapon_proxmine', label = 'Proxmine Grenade', weapontype = 'Throwable', ammotype = nil, damagereason = 'Bombed / Exploded / Detonated / Blew up' }, + [`weapon_snowball`] = { name = 'weapon_snowball', label = 'Snowball', weapontype = 'Throwable', ammotype = nil, damagereason = 'Died' }, + [`weapon_pipebomb`] = { name = 'weapon_pipebomb', label = 'Pipe Bomb', weapontype = 'Throwable', ammotype = nil, damagereason = 'Bombed / Exploded / Detonated / Blew up' }, + [`weapon_ball`] = { name = 'weapon_ball', label = 'Ball', weapontype = 'Throwable', ammotype = 'AMMO_BALL', damagereason = 'Died' }, + [`weapon_smokegrenade`] = { name = 'weapon_smokegrenade', label = 'Smoke Grenade', weapontype = 'Throwable', ammotype = nil, damagereason = 'Died' }, + [`weapon_flare`] = { name = 'weapon_flare', label = 'Flare pistol', weapontype = 'Throwable', ammotype = 'AMMO_FLARE', damagereason = 'Died' }, + + -- Miscellaneous + [`weapon_petrolcan`] = { name = 'weapon_petrolcan', label = 'Petrol Can', weapontype = 'Miscellaneous', ammotype = 'AMMO_PETROLCAN', damagereason = 'Died' }, + [`gadget_parachute`] = { name = 'gadget_parachute', label = 'Parachute', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, + [`weapon_fireextinguisher`] = { name = 'weapon_fireextinguisher', label = 'Fire Extinguisher', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, + [`weapon_hazardcan`] = { name = 'weapon_hazardcan', label = 'Hazardcan', weapontype = 'Miscellaneous', ammotype = 'AMMO_PETROLCAN', damagereason = 'Died' }, + [`weapon_fertilizercan`] = { name = 'weapon_fertilizercan', label = 'Fertilizer Can', weapontype = 'Miscellaneous', ammotype = 'AMMO_FERTILIZERCAN', damagereason = 'Died' }, + [`weapon_barbed_wire`] = { name = 'weapon_barbed_wire', label = 'Barbed Wire', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Prodded' }, + [`weapon_drowning`] = { name = 'weapon_drowning', label = 'Drowning', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, + [`weapon_drowning_in_vehicle`] = { name = 'weapon_drowning_in_vehicle', label = 'Drowning in a Vehicle', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, + [`weapon_bleeding`] = { name = 'weapon_bleeding', label = 'Bleeding', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Bled out' }, + [`weapon_electric_fence`] = { name = 'weapon_electric_fence', label = 'Electric Fence', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Fried' }, + [`weapon_explosion`] = { name = 'weapon_explosion', label = 'Explosion', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, + [`weapon_fall`] = { name = 'weapon_fall', label = 'Fall', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Committed suicide' }, + [`weapon_exhaustion`] = { name = 'weapon_exhaustion', label = 'Exhaustion', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, + [`weapon_hit_by_water_cannon`] = { name = 'weapon_hit_by_water_cannon', label = 'Water Cannon', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, + [`weapon_rammed_by_car`] = { name = 'weapon_rammed_by_car', label = 'Rammed - Vehicle', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Flattened / Ran over / Ran down' }, + [`weapon_run_over_by_car`] = { name = 'weapon_run_over_by_car', label = 'Run Over - Vehicle', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Flattened / Ran over / Ran down' }, + [`weapon_heli_crash`] = { name = 'weapon_heli_crash', label = 'Heli Crash', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Helicopter Crash' }, + [`weapon_fire`] = { name = 'weapon_fire', label = 'Fire', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Torched / Flambeed / Barbecued' }, + + -- Animals + [`weapon_animal`] = { name = 'weapon_animal', label = 'Animal', weapontype = 'Animals', ammotype = nil, damagereason = 'Mauled' }, + [`weapon_cougar`] = { name = 'weapon_cougar', label = 'Cougar', weapontype = 'Animals', ammotype = nil, damagereason = 'Mauled' }, +} diff --git a/resources/[core]/qb-interior/.github/ISSUE_TEMPLATE/bug_report.md b/resources/[core]/qb-interior/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..62f702f --- /dev/null +++ b/resources/[core]/qb-interior/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,32 @@ +--- +name: Bug report +about: Create a report to help us improve or fix something +title: "[BUG]" +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. A stranger to qbcore should be able to read your bug report and understand how to reproduce it themselves and understand how the feature should work normally. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Use this item '....' (item's name from shared.lua if applicable) +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Questions (please complete the following information):** + - When you last updated: [e.g. last week] + - Are you using custom resource? which ones? [e.g. zdiscord, qb-target] + - Have you renamed `qb-` to something custom? [e.g. yes/no] + +**Additional context** +Add any other context about the problem here. diff --git a/resources/[core]/qb-interior/.github/ISSUE_TEMPLATE/feature-request.md b/resources/[core]/qb-interior/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000..9e9bf3e --- /dev/null +++ b/resources/[core]/qb-interior/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,20 @@ +--- +name: Feature Request +about: Suggest an idea for QBCore +title: "[SUGGESTION]" +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. + +**Describe the feature you'd like** +A clear and concise description of what you want to happen. and with as much detail as possible how it would function in your opinion. Please try to keep it unique. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered for people to have in mind just in case the main idea isn't liked but a derivative is. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/resources/[core]/qb-interior/.github/auto_assign.yml b/resources/[core]/qb-interior/.github/auto_assign.yml new file mode 100644 index 0000000..2a80921 --- /dev/null +++ b/resources/[core]/qb-interior/.github/auto_assign.yml @@ -0,0 +1,17 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: author + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - /maintenance + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +skipKeywords: + - wip + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 0 \ No newline at end of file diff --git a/resources/[core]/qb-interior/.github/contributing.md b/resources/[core]/qb-interior/.github/contributing.md new file mode 100644 index 0000000..21fb806 --- /dev/null +++ b/resources/[core]/qb-interior/.github/contributing.md @@ -0,0 +1,201 @@ +# Contributing to QBCore + +First of all, thank you for taking the time to contribute! + +These guidelines will help you help us in the best way possible regardless of your skill level. We ask that you try to read everything related to the way you'd like to contribute and try and use your best judgement for anything not covered. + +### Table of Contents + +[Code of Conduct](#code-of-conduct) + +[I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question) + +[How Can I Contribute?](#how-can-i-contribute) + * [Reporting Bugs](#reporting-bugs) + * [Suggesting Features / Enhancements](#suggesting-features--enhancements) + * [Your First Code Contribution](#your-first-code-contribution) + * [Pull Requests](#pull-requests) + +[Styleguides](#styleguides) + * [Git Commit Messages](#git-commit-messages) + * [Lua Styleguide](#lua-styleguide) + * [JavaScript Styleguide](#javascript-styleguide) + + + +## Code of Conduct + +- Refrain from using languages other than English. +- Refrain from discussing any politically charged or inflammatory topics. +- Uphold mature conversations and respect each other; excessive profanity, hate speech or any kind of harassment will not be tolerated. +- No advertising of any kind. +- Follow these guidelines. +- Do not mention members of github unless a question is directed at them and can't be answered by anyone else. +- Do not mention any of the development team for any reason. We will read things as we get to them. + +## I don't want to read this whole thing I just have a question!!! + +> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below. + +* [QBCore Website](https://qbcore.org) +* [QBCore Discord](https://discord.gg/qbcore) +* [FiveM Discord - #qbcore channel](https://discord.gg/fivem) + + + + + + + + + + +## How Can I Contribute? + +### Reporting Bugs + +The easiest way to contribute for most people is just to report bugs you find cause if nobody reports it there's a chance we'll never know it exists and then we'll never fix it. + +Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out the bug-report template with the information it asks for helps us resolve issues faster. + +> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. + +#### Before Submitting A Bug Report + +* **Check the docs** There's a chance what you see as a bug might just work differently than you expect and if you think it could work better consider a feature enhancement report instead. +* **Search the [discord](https://discord.gg/qbcore)** to see if anyone else has run into the issue and see if it was solved through user error or code changes. (if the code change isn't pending a PR and you know what you're doing consider submitting one following [Pull Requests](#pull-requests) ) +* **Determine which resource the problem should be reported in**. If the bug is related to the inventory for example report this bug under qb-inventory rather than under qb-core or some other resource. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Bug Report? + +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your bug is related to, create an issue on that repository and provide the following information by filling in bug-report template. + +Explain the problem and include additional details to help maintainers reproduce the problem: + +* **Use a clear and descriptive title** for the issue to identify the problem. +* **Describe the exact steps which reproduce the problem** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. If something happened with only a specific group or single item but not others, specify that. +* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. +* **Explain which behavior you expected to see instead and why.** +* **Include screenshots** which show the specific bug in action or before and after. +* **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below. + +Provide more context by answering these questions if possible: + +* **Did the problem start happening recently** (e.g. after updating to a new version of QBCore?) or was this always a problem? +* If the problem started happening recently, **can you reproduce the problem in an older version of QBCore?** What's the most recent commit in which the problem doesn't happen? +* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. + +Include details about your setup: + +* **When was your QBCore last updated?** +* **What OS is the server running on**? +* **Which *extra* resources do you have installed?** + + +--- + + +### Suggesting Features / Enhancements + +This section guides you through submitting an enhancement suggestion for QBCore, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion. + +Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in feature request template, including the steps that you imagine you would take if the feature you're requesting existed. + +#### Before Submitting An Enhancement Suggestion + +* **Make sure it doesn't already exist.** Sounds silly, but there's a lot of features built in to qbcore that people don't realize so take a look through the docs and stuff to make sure it's not already there. +* **Check if there's already PR which provides that enhancement.** +* **Determine which resource the enhancement should be suggested in.** if it fits with another resource suggest it in that resource. if it would be it's own resource suggest it in the main qb-core repository. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your enhancement suggestion is related to, create an issue on that repository and provide the following information: + +* **Use a clear and descriptive title** for the issue to identify the suggestion. +* **Provide a step-by-step description of the suggested enhancement** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). +* **Describe the current behavior** and **explain which behavior you expected to see instead** and why. +* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of QBCore which the suggestion is related to. +* **Explain why this enhancement would be useful.** +* **Be creative and unique.** Stealing ideas from popular servers 1:1 detail isn't going to get accepted. + + +--- + + + +### Your First Code Contribution + +Unsure where to begin contributing to QBCore? You can start by looking through these `beginner` and `help-wanted` issues. + + + +--- + + +### Pull Requests + +The process described here has several goals: + +- Maintain QBCore's quality. +- Fix problems that are important to users. +- Engage the community in working toward the best possible QBCore. +- Enable a sustainable system for QBCore's maintainers to review contributions. + +Please follow these steps to have your contribution considered by the maintainers: + +1. Follow all instructions in The Pull Request template. +2. Follow the [styleguides](#styleguides). +3. Await review by the reviewer(s). + +While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted. + + +--- + +## Styleguides + +### Git Commit Messages + +* Limit the first line to 72 characters or less. +* Reference issues and pull requests liberally after the first line. +* Consider starting the commit message with an applicable emoji: + * :art: `:art:` when improving the format/structure of the code + * :racehorse: `:racehorse:` when improving performance + * :memo: `:memo:` when writing docs + * :bug: `:bug:` when fixing a bug + * :fire: `:fire:` when removing code or files + * :white_check_mark: `:white_check_mark:` when adding tests + * :lock: `:lock:` when dealing with security + * :arrow_up: `:arrow_up:` when upgrading dependencies + * :arrow_down: `:arrow_down:` when downgrading dependencies + * :shirt: `:shirt:` when removing linter warnings + +### Lua Styleguide + +All lua code should be done using all the best practices of proper lua using the easiest to read yet fastest/most optimized methods of execution. + +- Use 4 Space indentation +- Aim for lua 5.4 (include `lua54 'yes'` in the fxmanifest.lua) +- Use `PlayerPedId()` instead of `GetPlayerPed(-1)` +- Use `#(vector3 - vector3)` instead of `GetDistanceBetweenCoords()` +- Don't create unnecessary threads. always try to find a better method of triggering events +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables +- For distance checking loops set longer waits if you're outside of a range +- Job specific loops should only run for players with that job, don't waste cycles +- When possible don't trust the client, esspecially with transactions +- Balance security and optimizations +- [Consider this Lua Performance guide](https://springrts.com/wiki/Lua_Performance) +- Use local varriables everywhere possible +- Make use of config options where it makes sense making features optional or customizable +- Instead of `table.insert(myTable, "Value")` use `myTable[#myTable + 1] = "Value"` +- Instead of `table.insert(ages, "bob", 30)` use `ages["bob"] = 30` + + +### JavaScript Styleguide + +- Use 4 Space indentation +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables. diff --git a/resources/[core]/qb-interior/.github/pull_request_template.md b/resources/[core]/qb-interior/.github/pull_request_template.md new file mode 100644 index 0000000..000f0f9 --- /dev/null +++ b/resources/[core]/qb-interior/.github/pull_request_template.md @@ -0,0 +1,10 @@ +**Describe Pull request** +First, make sure you've read and are following the contribution guidelines and style guide and your code reflects that. +Write up a clear and concise description of what your pull request adds or fixes and if it's an added feature explain why you think it should be included in the core. + +If your PR is to fix an issue mention that issue here + +**Questions (please complete the following information):** +- Have you personally loaded this code into an updated qbcore project and checked all it's functionality? [yes/no] (Be honest) +- Does your code fit the style guidelines? [yes/no] +- Does your PR fit the contribution guidelines? [yes/no] diff --git a/resources/[core]/qb-interior/.github/workflows/lint.yml b/resources/[core]/qb-interior/.github/workflows/lint.yml new file mode 100644 index 0000000..fb74fd6 --- /dev/null +++ b/resources/[core]/qb-interior/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: Lint +on: [push, pull_request_target] +jobs: + lint: + name: Lint Resource + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Lint + uses: iLLeniumStudios/fivem-lua-lint-action@v2 + with: + capture: "junit.xml" + args: "-t --formatter JUnit" + extra_libs: mysql+polyzone+qblocales + - name: Generate Lint Report + if: always() + uses: mikepenz/action-junit-report@v3 + with: + report_paths: "**/junit.xml" + check_name: Linting Report + fail_on_failure: false \ No newline at end of file diff --git a/resources/[core]/qb-interior/.github/workflows/stale.yml b/resources/[core]/qb-interior/.github/workflows/stale.yml new file mode 100644 index 0000000..c18b212 --- /dev/null +++ b/resources/[core]/qb-interior/.github/workflows/stale.yml @@ -0,0 +1,29 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '41 15 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has had 60 days of inactivity & will close within 7 days' + stale-pr-message: 'This PR has had 60 days of inactivity & will close within 7 days' + close-issue-label: 'Stale Closed' + close-pr-label: 'Stale Closed' + exempt-issue-labels: 'Suggestion' + exempt-pr-labels: 'Suggestion' diff --git a/resources/[core]/qb-interior/LICENSE b/resources/[core]/qb-interior/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/resources/[core]/qb-interior/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/resources/[core]/qb-interior/README.md b/resources/[core]/qb-interior/README.md new file mode 100644 index 0000000..391030c --- /dev/null +++ b/resources/[core]/qb-interior/README.md @@ -0,0 +1,28 @@ +# qb-interior + +**Shells provided by K4MB1** + +https://www.k4mb1maps.com/ + +https://discord.gg/JrjkacM + +![image](https://user-images.githubusercontent.com/57848836/158275226-e80563dc-5b71-4883-a485-997878b8d440.png) + +# License + + QBCore Framework + Copyright (C) 2021 Joshua Eger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see + diff --git a/resources/[core]/qb-interior/client/main.lua b/resources/[core]/qb-interior/client/main.lua new file mode 100644 index 0000000..3cd2f79 --- /dev/null +++ b/resources/[core]/qb-interior/client/main.lua @@ -0,0 +1,171 @@ +local IsNew = false + +RegisterNetEvent('qb-interior:client:SetNewState', function(bool) + IsNew = bool +end) +-- Functions +function TeleportToInterior(x, y, z, h) + CreateThread(function() + SetEntityCoords(PlayerPedId(), x, y, z, 0, 0, 0, false) + SetEntityHeading(PlayerPedId(), h) + + Wait(100) + + DoScreenFadeIn(1000) + end) +end + +exports('DespawnInterior', function(objects, cb) + CreateThread(function() + for _, v in pairs(objects) do + if DoesEntityExist(v) then + DeleteEntity(v) + end + end + + cb() + end) +end) + +--Core Functions + +local function CreateShell(spawn, exitXYZH, model) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = exitXYZH + DoScreenFadeOut(500) + while not IsScreenFadedOut() do + Wait(10) + end + RequestModel(model) + while not HasModelLoaded(model) do + Wait(1000) + end + local house = CreateObject(model, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end + +exports('CreateShell', function(spawn, exitXYZH, model) + return CreateShell(spawn, exitXYZH, model) +end) + +-- Starting Apartment + +exports('CreateApartmentFurnished', function(spawn) + local exit = json.decode('{"x": 1.5, "y": -10.0, "z": 0, "h":358.50}') + local model = 'furnitured_midapart' + local obj = CreateShell(spawn, exit, model) + if obj and obj[2] then + obj[2].clothes = json.decode('{"x": -6.028, "y": -9.5, "z": 1.2, "h":2.263}') + obj[2].stash = json.decode('{"x": -7.305, "y": -3.922, "z": 0.5, "h":2.263}') + obj[2].logout = json.decode('{"x": -0.8, "y": 1.0, "z": 1.0, "h":2.263}') + end + if IsNew then + SetTimeout(750, function() + TriggerEvent('qb-clothes:client:CreateFirstCharacter') + IsNew = false + end) + end + return { obj[1], obj[2] } +end) + +exports('CreateHouseRobbery', function(spawn) + local exit = json.decode('{"x": 1.46, "y": -10.33, "z": 1.06, "h": 0.39}') + local model = 'furnitured_midapart' + return CreateShell(spawn, exit, model) +end) + +-- Shells (in order by tier starting at 1) + +exports('CreateApartmentShell', function(spawn) --fix this + local exit = json.decode('{"x": 4.693, "y": -6.015, "z": 1.11, "h":358.634}') + local model = 'shell_v16low' + return CreateShell(spawn, exit, model) +end) + +exports('CreateTier1House', function(spawn) + local exit = json.decode('{"x": 1.561, "y": -14.305, "z": 1.147, "h":2.263}') + local model = 'shell_v16mid' + return CreateShell(spawn, exit, model) +end) + +exports('CreateTrevorsShell', function(spawn) + local exit = json.decode('{"x": 0.374, "y": -3.789, "z": 2.428, "h":358.633}') + local model = 'shell_trevor' + return CreateShell(spawn, exit, model) +end) + +exports('CreateCaravanShell', function(spawn) + local exit = json.decode('{"z":3.3, "y":-2.1, "x":-1.4, "h":358.633972168}') + local model = 'shell_trailer' + return CreateShell(spawn, exit, model) +end) + +exports('CreateLesterShell', function(spawn) + local exit = json.decode('{"x":-1.780, "y":-0.795, "z":1.1,"h":270.30}') + local model = 'shell_lester' + return CreateShell(spawn, exit, model) +end) + +exports('CreateRanchShell', function(spawn) + local exit = json.decode('{"x":-1.257, "y":-5.469, "z":2.5, "h":270.57,}') + local model = 'shell_ranch' + return CreateShell(spawn, exit, model) +end) + +exports('CreateContainer', function(spawn) + local exit = json.decode('{"x": 0.08, "y": -5.73, "z": 1.24, "h": 359.32}') + local model = 'container_shell' + return CreateShell(spawn, exit, model) +end) + +exports('CreateFurniMid', function(spawn) + local exit = json.decode('{"x": 1.46, "y": -10.33, "z": 1.06, "h": 0.39}') + local model = 'furnitured_midapart' + return CreateShell(spawn, exit, model) +end) + +exports('CreateFurniMotelModern', function(spawn) + local exit = json.decode('{"x": 4.98, "y": 4.35, "z": 1.16, "h": 179.79}') + local model = 'modernhotel_shell' + return CreateShell(spawn, exit, model) +end) + +exports('CreateFranklinAunt', function(spawn) + local exit = json.decode('{"x": -0.36, "y": -5.89, "z": 1.70, "h": 358.21}') + local model = 'shell_frankaunt' + return CreateShell(spawn, exit, model) +end) + +exports('CreateGarageMed', function(spawn) + local exit = json.decode('{"x": 13.90, "y": 1.63, "z": 1.0, "h": 87.05}') + local model = 'shell_garagemed' + return CreateShell(spawn, exit, model) +end) + +exports('CreateMichael', function(spawn) + local exit = json.decode('{"x": -9.49, "y": 5.54, "z": 9.91, "h": 270.86}') + local model = 'shell_michael' + return CreateShell(spawn, exit, model) +end) + +exports('CreateOffice1', function(spawn) + local exit = json.decode('{"x": 1.88, "y": 5.06, "z": 2.05, "h": 180.07}') + local model = 'shell_office1' + return CreateShell(spawn, exit, model) +end) + +exports('CreateStore1', function(spawn) + local exit = json.decode('{"x": -2.61, "y": -4.73, "z": 1.08, "h": 1.0}') + local model = 'shell_store1' + return CreateShell(spawn, exit, model) +end) + +exports('CreateWarehouse1', function(spawn) + local exit = { x = -8.95, y = 0.51, z = 1.04, h = 268.82 } + local model = 'shell_warehouse1' + return CreateShell(spawn, exit, model) +end) diff --git a/resources/[core]/qb-interior/client/optional.lua b/resources/[core]/qb-interior/client/optional.lua new file mode 100644 index 0000000..d57f371 --- /dev/null +++ b/resources/[core]/qb-interior/client/optional.lua @@ -0,0 +1,1709 @@ +-- Medium Housing Shells V1 https://www.k4mb1maps.com/package/4672307 + +exports('CreateMedium2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 6.04, "y": 0.34, "z": 1.03, "h": 357.99}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_medium2`) + while not HasModelLoaded(`shell_medium2`) do Wait(1000) end + local house = CreateObject(`shell_medium2`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateMedium3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 3.32, "y": 1.23, "z": 2.57, "h": 273.46}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_medium3`) + while not HasModelLoaded(`shell_medium3`) do Wait(1000) end + local house = CreateObject(`shell_medium3`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Modern Housing Shells V1 https://www.k4mb1maps.com/package/4673169 + +exports('CreateBanham', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -3.26, "y": -1.63, "z": 6.25, "h": 90.49}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_banham`) + while not HasModelLoaded(`shell_banham`) do Wait(1000) end + local house = CreateObject(`shell_banham`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateWestons', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.29, "y": 10.59, "z": 6.95, "h": 183.60}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_westons`) + while not HasModelLoaded(`shell_westons`) do Wait(1000) end + local house = CreateObject(`shell_westons`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateWestons2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -1.76, "y": 10.62, "z": 6.95, "h": 179.20}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_westons2`) + while not HasModelLoaded(`shell_westons2`) do Wait(1000) end + local house = CreateObject(`shell_westons2`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Classic Housing Shells V1 https://www.k4mb1maps.com/package/4673140 + +exports('CreateClassicHouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.78, "y": -2.11, "z": 5.26, "h": 87.93}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`classichouse_shell`) + while not HasModelLoaded(`classichouse_shell`) do Wait(1000) end + local house = CreateObject(`classichouse_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateClassicHouse2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.78, "y": -2.09, "z": 5.26, "h": 90.58}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`classichouse2_shell`) + while not HasModelLoaded(`classichouse2_shell`) do Wait(1000) end + local house = CreateObject(`classichouse2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateClassicHouse3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.78, "y": -2.12, "z": 5.26, "h": 91.60}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`classichouse3_shell`) + while not HasModelLoaded(`classichouse3_shell`) do Wait(1000) end + local house = CreateObject(`classichouse3_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Highend Housing Shells V1 https://www.k4mb1maps.com/package/4673131 + +exports('CreateHighend1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -2.23, "y": 9.01, "z": 8.69, "h": 178.81}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_apartment1`) + while not HasModelLoaded(`shell_apartment1`) do Wait(1000) end + local house = CreateObject(`shell_apartment1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateHighend2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -2.25, "y": 9.00, "z": 8.69, "h": 177.86}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_apartment2`) + while not HasModelLoaded(`shell_apartment2`) do Wait(1000) end + local house = CreateObject(`shell_apartment2`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateHighend3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 11.75, "y": 4.55, "z": 8.13, "h": 129.16}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_apartment3`) + while not HasModelLoaded(`shell_apartment3`) do Wait(1000) end + local house = CreateObject(`shell_apartment3`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Deluxe Housing Shells V1 https://www.k4mb1maps.com/package/4673159 + +exports('CreateHighend', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -22.37, "y": -0.33, "z": 7.26, "h": 267.73}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_highend`) + while not HasModelLoaded(`shell_highend`) do Wait(1000) end + local house = CreateObject(`shell_highend`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateHighendV2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -10.51, "y": 0.86, "z": 6.56, "h": 270.38}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_highendv2`) + while not HasModelLoaded(`shell_highendv2`) do Wait(1000) end + local house = CreateObject(`shell_highendv2`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Stash House Shells https://www.k4mb1maps.com/package/4673273 + +exports('CreateStashHouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 20.88, "y": -0.40, "z": 15.42, "h": 86.54}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`stashhouse_shell`) + while not HasModelLoaded(`stashhouse_shell`) do Wait(1000) end + local house = CreateObject(`stashhouse_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateStashHouse2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -1.98, "y": 2.26, "z": 1.0, "h": 263.81}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`stashhouse2_shell`) + while not HasModelLoaded(`stashhouse2_shell`) do Wait(1000) end + local house = CreateObject(`stashhouse2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Garage Shells https://www.k4mb1maps.com/package/4673177 + +exports('CreateGarageLow', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 5.85, "y": 3.86, "z": 1.0, "h": 180.05}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_garages`) + while not HasModelLoaded(`shell_garages`) do Wait(1000) end + local house = CreateObject(`shell_garages`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateGarageHigh', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 12.02, "y": -14.30, "z": 0.99, "h": 89.42}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_garagel`) + while not HasModelLoaded(`shell_garagel`) do Wait(1000) end + local house = CreateObject(`shell_garagel`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Office Shells https://www.k4mb1maps.com/package/4673258 + +exports('CreateOffice2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 3.66, "y": -1.94, "z": 1.26, "h": 92.73}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_office2`) + while not HasModelLoaded(`shell_office2`) do Wait(1000) end + local house = CreateObject(`shell_office2`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateOfficeBig', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -12.48, "y": 1.91, "z": 5.30, "h": 175.13}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_officebig`) + while not HasModelLoaded(`shell_officebig`) do Wait(1000) end + local house = CreateObject(`shell_officebig`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Store Shells https://www.k4mb1maps.com/package/4673264 + +exports('CreateBarber', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 1.54, "y": 5.40, "z": 1.0, "h": 175.27}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_barber`) + while not HasModelLoaded(`shell_barber`) do Wait(1000) end + local house = CreateObject(`shell_barber`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateGunstore', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -1.02, "y": -5.43, "z": 1.03, "h": 359.77}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_gunstore`) + while not HasModelLoaded(`shell_gunstore`) do Wait(1000) end + local house = CreateObject(`shell_gunstore`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateStore2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.64, "y": -5.07, "z": 1.02, "h": 1.91}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_store2`) + while not HasModelLoaded(`shell_store2`) do Wait(1000) end + local house = CreateObject(`shell_store2`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateStore3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.14, "y": -7.87, "z": 2.01, "h": 358.15}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_store3`) + while not HasModelLoaded(`shell_store3`) do Wait(1000) end + local house = CreateObject(`shell_store3`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Warehouse Shells https://www.k4mb1maps.com/package/4673185 + +exports('CreateWarehouse2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 12.51, "y": -0.01, "z": 1.03, "h": 94.52}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_warehouse2`) + while not HasModelLoaded(`shell_warehouse2`) do Wait(1000) end + local house = CreateObject(`shell_warehouse2`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateWarehouse3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 2.61, "y": -1.65, "z": 1.00, "h": 85.2}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_warehouse3`) + while not HasModelLoaded(`shell_warehouse3`) do Wait(1000) end + local house = CreateObject(`shell_warehouse3`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Highend Lab Shells https://www.k4mb1maps.com/package/4698329 + +exports('CreateK4Coke', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -11.06, "y": -2.52, "z": 22.64, "h": 272.51}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4coke_shell`) + while not HasModelLoaded(`k4coke_shell`) do Wait(1000) end + local house = CreateObject(`k4coke_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Meth', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -11.06, "y": -2.48, "z": 9.47, "h": 277.54}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4meth_shell`) + while not HasModelLoaded(`k4meth_shell`) do Wait(1000) end + local house = CreateObject(`k4meth_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Weed', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -11.05, "y": -2.50, "z": 20.96, "h": 283.97}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4weed_shell`) + while not HasModelLoaded(`k4weed_shell`) do Wait(1000) end + local house = CreateObject(`k4weed_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Furnished Stash House Shells https://www.k4mb1maps.com/package/4672293 + +exports('CreateContainer2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 0.02, "y": -5.37, "z": 1.12, "h": 355.28}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`container2_shell`) + while not HasModelLoaded(`container2_shell`) do Wait(1000) end + local house = CreateObject(`container2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateFurniStash1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 21.41, "y": -0.52, "z": 19.33, "h": 85.84}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`stashhouse1_shell`) + while not HasModelLoaded(`stashhouse1_shell`) do Wait(1000) end + local house = CreateObject(`stashhouse1_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateFurniStash3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.003, "y": 5.5, "z": 3.04, "h": 180.77}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`stashhouse3_shell`) + while not HasModelLoaded(`stashhouse3_shell`) do Wait(1000) end + local house = CreateObject(`stashhouse3_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Furnished Housing Shells https://www.k4mb1maps.com/package/4672272 + +exports('CreateFurniLow', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 5.05, "y": -1.39, "z": 3.0, "h": 357.14}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`furnitured_lowapart`) + while not HasModelLoaded(`furnitured_lowapart`) do Wait(1000) end + local house = CreateObject(`furnitured_lowapart`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateFurniMotel', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -1.51, "y": -3.99, "z": 1.08, "h": 1.28}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`furnitured_motel`) + while not HasModelLoaded(`furnitured_motel`) do Wait(1000) end + local house = CreateObject(`furnitured_motel`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Furnished Motel Shells https://www.k4mb1maps.com/package/4672296 + +exports('CreateFurniMotelClassic', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 0.045, "y": -3.707, "z": 1.05, "h": 351.86}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`classicmotel_shell`) + while not HasModelLoaded(`classicmotel_shell`) do Wait(1000) end + local house = CreateObject(`classicmotel_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateFurniMotelHigh', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 3.21, "y": 3.50, "z": 1.16, "h": 178.23}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`highendmotel_shell`) + while not HasModelLoaded(`highendmotel_shell`) do Wait(1000) end + local house = CreateObject(`highendmotel_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Furnished Modern Hotels https://www.k4mb1maps.com/package/4672290 + +exports('CreateFurniMotelModern2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.87, "y": 4.38, "z": 1.16, "h": 176.40}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`modernhotel2_shell`) + while not HasModelLoaded(`modernhotel2_shell`) do Wait(1000) end + local house = CreateObject(`modernhotel2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateFurniMotelModern3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.95, "y": 4.38, "z": 1.16, "h": 176.01}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`modernhotel3_shell`) + while not HasModelLoaded(`modernhotel3_shell`) do Wait(1000) end + local house = CreateObject(`modernhotel3_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Drug Lab Shells https://www.k4mb1maps.com/package/4672285 + +exports('CreateCoke', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -6.24, "y": 8.48, "z": 1.00, "h": 179.30}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_coke1`) + while not HasModelLoaded(`shell_coke1`) do Wait(1000) end + local house = CreateObject(`shell_coke1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateCoke2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -6.32, "y": 8.60, "z": 1.03, "h": 179.23}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_coke2`) + while not HasModelLoaded(`shell_coke2`) do Wait(1000) end + local house = CreateObject(`shell_coke2`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateMeth', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -6.39, "y": 8.54, "z": 1.03, "h": 178.84}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_meth`) + while not HasModelLoaded(`shell_meth`) do Wait(1000) end + local house = CreateObject(`shell_meth`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateWeed', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 17.46, "y": 11.71, "z": 1.01, "h": 88.37}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_weed`) + while not HasModelLoaded(`shell_weed`) do Wait(1000) end + local house = CreateObject(`shell_weed`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateWeed2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 17.85, "y": 11.75, "z": 1.01, "h": 88.11}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`shell_weed2`) + while not HasModelLoaded(`shell_weed2`) do Wait(1000) end + local house = CreateObject(`shell_weed2`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Mansion Housing Shells https://www.k4mb1maps.com/package/4783251 + +exports('CreateMansion', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.32, "y": -0.68, "z": 7.86, "h": 178.98}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4_mansion_shell`) + while not HasModelLoaded(`k4_mansion_shell`) do Wait(1000) end + local house = CreateObject(`k4_mansion_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateMansion2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.32, "y": -0.57, "z": 7.86, "h": 178.74}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4_mansion2_shell`) + while not HasModelLoaded(`k4_mansion2_shell`) do Wait(1000) end + local house = CreateObject(`k4_mansion2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateMansion3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.18, "y": -0.57, "z": 7.86, "h": 180.76}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4_mansion3_shell`) + while not HasModelLoaded(`k4_mansion3_shell`) do Wait(1000) end + local house = CreateObject(`k4_mansion3_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Empty Hotel Shells https://www.k4mb1maps.com/package/4811134 + +exports('CreateHotel1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.94, "y": 4.39, "z": 1.17, "h": 177.55}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4_hotel1_shell`) + while not HasModelLoaded(`k4_hotel1_shell`) do Wait(1000) end + local house = CreateObject(`k4_hotel1_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateHotel2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.99, "y": 4.39, "z": 1.17, "h": 178.62}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4_hotel2_shell`) + while not HasModelLoaded(`k4_hotel2_shell`) do Wait(1000) end + local house = CreateObject(`k4_hotel2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateHotel3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.90, "y": 4.39, "z": 1.17, "h": 182.13}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4_hotel3_shell`) + while not HasModelLoaded(`k4_hotel3_shell`) do Wait(1000) end + local house = CreateObject(`k4_hotel3_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Empty Motel Shells https://www.k4mb1maps.com/package/4811137 + +exports('CreateMotel1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.46, "y": -2.46, "z": 1.00, "h": 274.07}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4_motel1_shell`) + while not HasModelLoaded(`k4_motel1_shell`) do Wait(1000) end + local house = CreateObject(`k4_motel1_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateMotel2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 0.06, "y": -3.75, "z": 1.05, "h": 359.40}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4_motel2_shell`) + while not HasModelLoaded(`k4_motel2_shell`) do Wait(1000) end + local house = CreateObject(`k4_motel2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateMotel3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 3.13, "y": 3.50, "z": 1.16, "h": 182.53}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4_motel3_shell`) + while not HasModelLoaded(`k4_motel3_shell`) do Wait(1000) end + local house = CreateObject(`k4_motel3_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Default Shells V2 https://www.k4mb1maps.com/package/5015832 + +exports('CreateV2Default1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -2.32, "y": -0.63, "z": 1.60, "h": 272.87}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`default_housing1_k4mb1`) + while not HasModelLoaded(`default_housing1_k4mb1`) do Wait(1000) end + local house = CreateObject(`default_housing1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Default2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -5.14, "y": -5.05, "z": 3.18, "h": 270.61}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`default_housing2_k4mb1`) + while not HasModelLoaded(`default_housing2_k4mb1`) do Wait(1000) end + local house = CreateObject(`default_housing2_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Default3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -1.35, "y": -2.06, "z": 1.11, "h": 1.14}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`default_housing3_k4mb1`) + while not HasModelLoaded(`default_housing3_k4mb1`) do Wait(1000) end + local house = CreateObject(`default_housing3_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Default4', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 0.13, "y": -3.85, "z": 1.09, "h": 1.71}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`default_housing4_k4mb1`) + while not HasModelLoaded(`default_housing4_k4mb1`) do Wait(1000) end + local house = CreateObject(`default_housing4_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Default5', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 1.42, "y": -14.34, "z": 1.14, "h": 0.87}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`default_housing5_k4mb1`) + while not HasModelLoaded(`default_housing5_k4mb1`) do Wait(1000) end + local house = CreateObject(`default_housing5_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Default6', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.75, "y": -6.49, "z": 1.03, "h": 359.60}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`default_housing6_k4mb1`) + while not HasModelLoaded(`default_housing6_k4mb1`) do Wait(1000) end + local house = CreateObject(`default_housing6_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Deluxe Shells V2 https://www.k4mb1maps.com/package/5043817 + +exports('CreateV2Deluxe1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -22.28, "y": -0.45, "z": 7.26, "h": 268.97}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`deluxe_housing1_k4mb1`) + while not HasModelLoaded(`deluxe_housing1_k4mb1`) do Wait(1000) end + local house = CreateObject(`deluxe_housing1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Deluxe2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -10.30, "y": 0.87, "z": 6.55, "h": 274.91}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`deluxe_housing2_k4mb1`) + while not HasModelLoaded(`deluxe_housing2_k4mb1`) do Wait(1000) end + local house = CreateObject(`deluxe_housing2_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Deluxe3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -9.37, "y": 5.66, "z": 1.08, "h": 270.04}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`deluxe_housing3_k4mb1`) + while not HasModelLoaded(`deluxe_housing3_k4mb1`) do Wait(1000) end + local house = CreateObject(`deluxe_housing3_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Highend Shells V2 https://www.k4mb1maps.com/package/5043819 + +exports('CreateV2HighEnd1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -2.22, "y": 9.02, "z": 8.69, "h": 182.64}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`highend_housing1_k4mb1`) + while not HasModelLoaded(`highend_housing1_k4mb1`) do Wait(1000) end + local house = CreateObject(`highend_housing1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2HighEnd2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -2.22, "y": 8.97, "z": 8.69, "h": 171.95}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`highend_housing2_k4mb1`) + while not HasModelLoaded(`highend_housing2_k4mb1`) do Wait(1000) end + local house = CreateObject(`highend_housing2_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2HighEnd3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 11.48, "y": 4.50, "z": 6.42, "h": 128.15}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`highend_housing3_k4mb1`) + while not HasModelLoaded(`highend_housing3_k4mb1`) do Wait(1000) end + local house = CreateObject(`highend_housing3_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Medium Shells V2 https://www.k4mb1maps.com/package/5043821 + +exports('CreateV2Medium1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.24, "y": -5.66, "z": 1.71, "h": 1.5}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`medium_housing1_k4mb1`) + while not HasModelLoaded(`medium_housing1_k4mb1`) do Wait(1000) end + local house = CreateObject(`medium_housing1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Medium2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 6.04, "y": 0.34, "z": 1.03, "h": 357.99}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`medium_housing2_k4mb1`) + while not HasModelLoaded(`medium_housing2_k4mb1`) do Wait(1000) end + local house = CreateObject(`medium_housing2_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Medium3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 3.42, "y": 1.18, "z": 1.01, "h": 274.17}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`medium_housing3_k4mb1`) + while not HasModelLoaded(`medium_housing3_k4mb1`) do Wait(1000) end + local house = CreateObject(`medium_housing3_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Modern Shells V2 https://www.k4mb1maps.com/package/5043818 + +exports('CreateV2Modern1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.29, "y": 10.52, "z": 6.30, "h": 178.92}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`modern_housing1_k4mb1`) + while not HasModelLoaded(`modern_housing1_k4mb1`) do Wait(1000) end + local house = CreateObject(`modern_housing1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Modern2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -1.76, "y": 10.37, "z": 6.30, "h": 184.71}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`modern_housing2_k4mb1`) + while not HasModelLoaded(`modern_housing2_k4mb1`) do Wait(1000) end + local house = CreateObject(`modern_housing2_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateV2Modern3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -3.39, "y": -1.45, "z": 5.65, "h": 90.77}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`modern_housing3_k4mb1`) + while not HasModelLoaded(`modern_housing3_k4mb1`) do Wait(1000) end + local house = CreateObject(`modern_housing3_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- K4mv1 Vinewood V2 Shells -- https://www.k4mb1maps.com/package/5251329 + +exports('VineWoodHouse1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 11.86, "y": -2.73, "z": 3.96, "h": 2.11}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`vinewood_housing1_k4mb1`) + while not HasModelLoaded(`vinewood_housing1_k4mb1`) do Wait(1000) end + local house = CreateObject(`vinewood_housing1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + + +exports('VineWoodHouse2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 1.57, "y": 4.96, "z": 9.63, "h": 2.11}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`vinewood_housing2_k4mb1`) + while not HasModelLoaded(`vinewood_housing2_k4mb1`) do Wait(1000) end + local house = CreateObject(`vinewood_housing2_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('VineWoodHouse3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 3.41, "y": 7.11, "z": 2.76, "h": 2.11}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`vinewood_housing3_k4mb1`) + while not HasModelLoaded(`vinewood_housing3_k4mb1`) do Wait(1000) end + local house = CreateObject(`vinewood_housing3_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-------- K4MB1 September Update + +exports('CreateK4GunWarehouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 0.29, "y": 4.74, "z": -0.0, "h": 179.603271}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`gunworkshop_k4mb1`) + while not HasModelLoaded(`gunworkshop_k4mb1`) do Wait(1000) end + local house = CreateObject(`gunworkshop_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4LuxuryHouse1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -6.344482, "y": -1.034912, "z": 3.0, "h": 268.09}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`luxury_housing1_k4mb1`) + while not HasModelLoaded(`luxury_housing1_k4mb1`) do Wait(1000) end + local house = CreateObject(`luxury_housing1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4LuxuryHouse2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -6.344482, "y": -1.034912, "z": 3.0, "h": 268.09}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`luxury_housing2_k4mb1`) + while not HasModelLoaded(`luxury_housing2_k4mb1`) do Wait(1000) end + local house = CreateObject(`luxury_housing2_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4LuxuryHouse3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -6.344482, "y": -1.034912, "z": 3.0, "h": 268.09}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`luxury_housing3_k4mb1`) + while not HasModelLoaded(`luxury_housing3_k4mb1`) do Wait(1000) end + local house = CreateObject(`luxury_housing3_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4LuxuryHouse4', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -6.344482, "y": -1.034912, "z": 3.0, "h": 268.09}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`luxury_housing4_k4mb1`) + while not HasModelLoaded(`luxury_housing4_k4mb1`) do Wait(1000) end + local house = CreateObject(`luxury_housing4_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4ManorHouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 6.839844, "y": -9.136841, "z": 13.0, "h": 359.318207}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`manor_housing1_k4mb1`) + while not HasModelLoaded(`manor_housing1_k4mb1`) do Wait(1000) end + local house = CreateObject(`manor_housing1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Garage1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 0.000366, "y": 14.130432, "z": 1.827162, "h": 183.492355}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`new_garages1_k4mb1`) + while not HasModelLoaded(`new_garages1_k4mb1`) do Wait(1000) end + local house = CreateObject(`new_garages1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Garage2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -3.737671, "y": -0.096680, "z": 1.427162, "h": 268.669922}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`new_garages2_k4mb1`) + while not HasModelLoaded(`new_garages2_k4mb1`) do Wait(1000) end + local house = CreateObject(`new_garages2_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Garage3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -3.737671, "y": -0.096680, "z": 1.427162, "h": 268.669922}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`new_garages3_k4mb1`) + while not HasModelLoaded(`new_garages3_k4mb1`) do Wait(1000) end + local house = CreateObject(`new_garages3_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Garage4', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 8.806641, "y": 1.580383, "z": 1.439952, "h": 93.087669}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`new_garages4_k4mb1`) + while not HasModelLoaded(`new_garages4_k4mb1`) do Wait(1000) end + local house = CreateObject(`new_garages4_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Safehouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -5.317017, "y": 1.031738, "z": 1.439952, "h": 269.149353}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`safehouse_k4mb1`) + while not HasModelLoaded(`safehouse_k4mb1`) do Wait(1000) end + local house = CreateObject(`safehouse_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Warehouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 13.414185, "y": -7.386108, "z": 2.539952, "h": 90.148018}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`warehouse_k4mb1`) + while not HasModelLoaded(`warehouse_k4mb1`) do Wait(1000) end + local house = CreateObject(`warehouse_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- New Garages https://www.k4mb1maps.com/package/5294668 + +exports('CreateK4NewGarage', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.010498, "y": 13.742065, "z": 5.216461, "h": 180.0}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`new_garages1_k4mb1`) + while not HasModelLoaded(`new_garages1_k4mb1`) do Wait(1000) end + local house = CreateObject(`new_garages1_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4NewGarage2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -3.885496, "y": 0.018372, "z": 0.119728, "h": 271.723022}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`new_garages2_k4mb1`) + while not HasModelLoaded(`new_garages2_k4mb1`) do Wait(1000) end + local house = CreateObject(`new_garages2_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4NewGarage3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -3.557486, "y": -0.223755, "z": 0.113129, "h": 269.100739}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`new_garages3_k4mb1`) + while not HasModelLoaded(`new_garages3_k4mb1`) do Wait(1000) end + local house = CreateObject(`new_garages3_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4NewGarage4', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 8.948175, "y": 1.714355, "z": 0.049950, "h": 95.899307}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`new_garages4_k4mb1`) + while not HasModelLoaded(`new_garages4_k4mb1`) do Wait(1000) end + local house = CreateObject(`new_garages4_k4mb1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Basement Shells + +exports('CreateK4Basement', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -5.08, "y": -4.33, "z": 5.90, "h": 3.45}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_basement1_shell`) + while not HasModelLoaded(`k4mb1_basement1_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_basement1_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Basement1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -5.08, "y": -4.33, "z": 5.90, "h": 3.45}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_basement2_shell`) + while not HasModelLoaded(`k4mb1_basement2_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_basement2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Basement2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -5.08, "y": -4.33, "z": 5.90, "h": 3.45}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_basement3_shell`) + while not HasModelLoaded(`k4mb1_basement3_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_basement3_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Basement3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -5.08, "y": -4.33, "z": 5.90, "h": 3.45}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_basement4_shell`) + while not HasModelLoaded(`k4mb1_basement4_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_basement4_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4Basement4', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -5.08, "y": -4.33, "z": 5.90, "h": 3.45}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_basement5_shell`) + while not HasModelLoaded(`k4mb1_basement5_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_basement5_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Casino Hotel + +exports('CreateK4CasinoHotel', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -3.03, "y": -0.03, "z": 0.10, "h": 266.89}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_casinohotel_shell`) + while not HasModelLoaded(`k4mb1_casinohotel_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_casinohotel_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- New Houses + +exports('CreateK4House1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -8.33, "y": 1.01, "z": 2.02, "h": 270.22}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_house1_shell`) + while not HasModelLoaded(`k4mb1_house1_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_house1_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4House2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -8.33, "y": 1.01, "z": 2.02, "h": 270.22}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_house2_shell`) + while not HasModelLoaded(`k4mb1_house2_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_house2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4House3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 9.00, "y": -7.43, "z": 2.02, "h": 1.04}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_house3_shell`) + while not HasModelLoaded(`k4mb1_house3_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_house3_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateK4House4', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -2.22, "y": -2.50, "z": 0.70, "h": 357.22}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_house4_shell`) + while not HasModelLoaded(`k4mb1_house4_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_house4_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Furnished Offices + +exports('CreateFurnishedOffice1', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 3.33, "y": -2.05, "z": 1.39, "h": 92.20}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_furnishedoffice1_shell`) + while not HasModelLoaded(`k4mb1_furnishedoffice1_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_furnishedoffice1_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateFurnishedOffice2', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 4.42, "y": 3.54, "z": 1.36, "h": 179.63}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_furnishedoffice2_shell`) + while not HasModelLoaded(`k4mb1_furnishedoffice2_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_furnishedoffice2_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateFurnishedOffice3', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.66, "y": 5.81, "z": 1.51, "h": 90.57}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_furnishedoffice3_shell`) + while not HasModelLoaded(`k4mb1_furnishedoffice3_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_furnishedoffice3_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateFurnishedOffice4', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 8.60, "y": -2.28, "z": 1.56, "h": 91.17}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_furnishedoffice4_shell`) + while not HasModelLoaded(`k4mb1_furnishedoffice4_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_furnishedoffice4_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +exports('CreateFurnishedOffice5', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 3.19, "y": -13.87, "z": 1.26, "h": 2.37}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_furnishedoffice5_shell`) + while not HasModelLoaded(`k4mb1_furnishedoffice5_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_furnishedoffice5_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Hood House + +exports('CreateHoodHouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -2.49, "y": -7.38, "z": 2.01, "h": 93.19}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_hoodhouse1_shell`) + while not HasModelLoaded(`k4mb1_hoodhouse1_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_hoodhouse1_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Laundry Shell + +exports('CreateLaundry', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 10.45, "y": -5.70, "z": 3.37, "h": 5.13}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_laundry_shell`) + while not HasModelLoaded(`k4mb1_laundry_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_laundry_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Paleto House + +exports('CreatePaletoHouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.92, "y": 5.65, "z": 3.34, "h": 90.05}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_palhouse1_shell`) + while not HasModelLoaded(`k4mb1_palhouse1_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_palhouse1_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Sandy House + +exports('CreateSandyHouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": 1.65, "y": -4.60, "z": 3.19, "h": 2.53}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`k4mb1_sandyhouse1_shell`) + while not HasModelLoaded(`k4mb1_sandyhouse1_shell`) do Wait(1000) end + local house = CreateObject(`k4mb1_sandyhouse1_shell`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Empty House + +exports('CreateEmptyHouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.42, "y": -2.35, "z": 1.91, "h": 271.88}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`kambi_emptyhouse1`) + while not HasModelLoaded(`kambi_emptyhouse1`) do Wait(1000) end + local house = CreateObject(`kambi_emptyhouse1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) + +-- Furnished House + +exports('CreateFurnishedHouse', function(spawn) + local objects = {} + local POIOffsets = {} + POIOffsets.exit = json.decode('{"x": -0.47, "y": -2.38, "z": 1.90, "h": 274.87}') + DoScreenFadeOut(500) + while not IsScreenFadedOut() do Wait(10) end + RequestModel(`kambi_furnishedhouse1`) + while not HasModelLoaded(`kambi_furnishedhouse1`) do Wait(1000) end + local house = CreateObject(`kambi_furnishedhouse1`, spawn.x, spawn.y, spawn.z, false, false, false) + FreezeEntityPosition(house, true) + objects[#objects + 1] = house + TeleportToInterior(spawn.x + POIOffsets.exit.x, spawn.y + POIOffsets.exit.y, spawn.z + POIOffsets.exit.z, POIOffsets.exit.h) + return { objects, POIOffsets } +end) diff --git a/resources/[core]/qb-interior/fxmanifest.lua b/resources/[core]/qb-interior/fxmanifest.lua new file mode 100644 index 0000000..1dea0cd --- /dev/null +++ b/resources/[core]/qb-interior/fxmanifest.lua @@ -0,0 +1,18 @@ +fx_version 'cerulean' +game 'gta5' +lua54 'yes' +author 'Kakarot' +description 'Collection of shell models with exports for creating them' +version '1.2.0' +this_is_a_map 'yes' + +client_scripts { + 'client/main.lua', + 'client/optional.lua' +} + +files { + 'stream/starter_shells_k4mb1.ytyp' +} + +data_file 'DLC_ITYP_REQUEST' 'stream/starter_shells_k4mb1.ytyp' diff --git a/resources/[core]/qb-interior/k4mb1shellstarter.pdf b/resources/[core]/qb-interior/k4mb1shellstarter.pdf new file mode 100644 index 0000000..1793dce Binary files /dev/null and b/resources/[core]/qb-interior/k4mb1shellstarter.pdf differ diff --git a/resources/[core]/qb-interior/stream/_manifest.ymf b/resources/[core]/qb-interior/stream/_manifest.ymf new file mode 100644 index 0000000..0f84dc6 Binary files /dev/null and b/resources/[core]/qb-interior/stream/_manifest.ymf differ diff --git a/resources/[core]/qb-interior/stream/container_shell.ydr b/resources/[core]/qb-interior/stream/container_shell.ydr new file mode 100644 index 0000000..2fa7c2b Binary files /dev/null and b/resources/[core]/qb-interior/stream/container_shell.ydr differ diff --git a/resources/[core]/qb-interior/stream/frankaunttextures.ytd b/resources/[core]/qb-interior/stream/frankaunttextures.ytd new file mode 100644 index 0000000..9baa9e1 Binary files /dev/null and b/resources/[core]/qb-interior/stream/frankaunttextures.ytd differ diff --git a/resources/[core]/qb-interior/stream/furnitured_midapart.ydr b/resources/[core]/qb-interior/stream/furnitured_midapart.ydr new file mode 100644 index 0000000..6921663 Binary files /dev/null and b/resources/[core]/qb-interior/stream/furnitured_midapart.ydr differ diff --git a/resources/[core]/qb-interior/stream/lesters_txd.ytd b/resources/[core]/qb-interior/stream/lesters_txd.ytd new file mode 100644 index 0000000..49345d7 Binary files /dev/null and b/resources/[core]/qb-interior/stream/lesters_txd.ytd differ diff --git a/resources/[core]/qb-interior/stream/modernhotel_shell.ydr b/resources/[core]/qb-interior/stream/modernhotel_shell.ydr new file mode 100644 index 0000000..7cb8638 Binary files /dev/null and b/resources/[core]/qb-interior/stream/modernhotel_shell.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_frankaunt.ydr b/resources/[core]/qb-interior/stream/shell_frankaunt.ydr new file mode 100644 index 0000000..b436a77 Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_frankaunt.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_garagem.ydr b/resources/[core]/qb-interior/stream/shell_garagem.ydr new file mode 100644 index 0000000..144bcfd Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_garagem.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_lester.ydr b/resources/[core]/qb-interior/stream/shell_lester.ydr new file mode 100644 index 0000000..e49ab68 Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_lester.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_michael.ydr b/resources/[core]/qb-interior/stream/shell_michael.ydr new file mode 100644 index 0000000..de77eab Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_michael.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_office1.ydr b/resources/[core]/qb-interior/stream/shell_office1.ydr new file mode 100644 index 0000000..13ad1a2 Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_office1.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_office1_txd.ytd b/resources/[core]/qb-interior/stream/shell_office1_txd.ytd new file mode 100644 index 0000000..2be9f5b Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_office1_txd.ytd differ diff --git a/resources/[core]/qb-interior/stream/shell_ranch.ydr b/resources/[core]/qb-interior/stream/shell_ranch.ydr new file mode 100644 index 0000000..b2c281a Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_ranch.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_store1.ydr b/resources/[core]/qb-interior/stream/shell_store1.ydr new file mode 100644 index 0000000..ad753de Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_store1.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_trailer.ydr b/resources/[core]/qb-interior/stream/shell_trailer.ydr new file mode 100644 index 0000000..73a173e Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_trailer.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_trevor.ydr b/resources/[core]/qb-interior/stream/shell_trevor.ydr new file mode 100644 index 0000000..cf6bd72 Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_trevor.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_v16low.ydr b/resources/[core]/qb-interior/stream/shell_v16low.ydr new file mode 100644 index 0000000..c99f77f Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_v16low.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_v16mid.ydr b/resources/[core]/qb-interior/stream/shell_v16mid.ydr new file mode 100644 index 0000000..33562ac Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_v16mid.ydr differ diff --git a/resources/[core]/qb-interior/stream/shell_warehouse1.ydr b/resources/[core]/qb-interior/stream/shell_warehouse1.ydr new file mode 100644 index 0000000..aae2346 Binary files /dev/null and b/resources/[core]/qb-interior/stream/shell_warehouse1.ydr differ diff --git a/resources/[core]/qb-interior/stream/standardmotel_shell.ydr b/resources/[core]/qb-interior/stream/standardmotel_shell.ydr new file mode 100644 index 0000000..df6fe66 Binary files /dev/null and b/resources/[core]/qb-interior/stream/standardmotel_shell.ydr differ diff --git a/resources/[core]/qb-interior/stream/starter_shells_k4mb1.ytyp b/resources/[core]/qb-interior/stream/starter_shells_k4mb1.ytyp new file mode 100644 index 0000000..a4bba2f Binary files /dev/null and b/resources/[core]/qb-interior/stream/starter_shells_k4mb1.ytyp differ diff --git a/resources/[core]/qb-interior/stream/starter_shells_k4mb1maps.ymap b/resources/[core]/qb-interior/stream/starter_shells_k4mb1maps.ymap new file mode 100644 index 0000000..514bcb0 Binary files /dev/null and b/resources/[core]/qb-interior/stream/starter_shells_k4mb1maps.ymap differ diff --git a/resources/[core]/ui-admin/.github/ISSUE_TEMPLATE/bug_report.md b/resources/[core]/ui-admin/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..62f702f --- /dev/null +++ b/resources/[core]/ui-admin/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,32 @@ +--- +name: Bug report +about: Create a report to help us improve or fix something +title: "[BUG]" +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. A stranger to qbcore should be able to read your bug report and understand how to reproduce it themselves and understand how the feature should work normally. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Use this item '....' (item's name from shared.lua if applicable) +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Questions (please complete the following information):** + - When you last updated: [e.g. last week] + - Are you using custom resource? which ones? [e.g. zdiscord, qb-target] + - Have you renamed `qb-` to something custom? [e.g. yes/no] + +**Additional context** +Add any other context about the problem here. diff --git a/resources/[core]/ui-admin/.github/ISSUE_TEMPLATE/feature-request.md b/resources/[core]/ui-admin/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000..9e9bf3e --- /dev/null +++ b/resources/[core]/ui-admin/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,20 @@ +--- +name: Feature Request +about: Suggest an idea for QBCore +title: "[SUGGESTION]" +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. + +**Describe the feature you'd like** +A clear and concise description of what you want to happen. and with as much detail as possible how it would function in your opinion. Please try to keep it unique. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered for people to have in mind just in case the main idea isn't liked but a derivative is. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/resources/[core]/ui-admin/.github/auto_assign.yml b/resources/[core]/ui-admin/.github/auto_assign.yml new file mode 100644 index 0000000..2a80921 --- /dev/null +++ b/resources/[core]/ui-admin/.github/auto_assign.yml @@ -0,0 +1,17 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: author + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - /maintenance + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +skipKeywords: + - wip + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 0 \ No newline at end of file diff --git a/resources/[core]/ui-admin/.github/contributing.md b/resources/[core]/ui-admin/.github/contributing.md new file mode 100644 index 0000000..21fb806 --- /dev/null +++ b/resources/[core]/ui-admin/.github/contributing.md @@ -0,0 +1,201 @@ +# Contributing to QBCore + +First of all, thank you for taking the time to contribute! + +These guidelines will help you help us in the best way possible regardless of your skill level. We ask that you try to read everything related to the way you'd like to contribute and try and use your best judgement for anything not covered. + +### Table of Contents + +[Code of Conduct](#code-of-conduct) + +[I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question) + +[How Can I Contribute?](#how-can-i-contribute) + * [Reporting Bugs](#reporting-bugs) + * [Suggesting Features / Enhancements](#suggesting-features--enhancements) + * [Your First Code Contribution](#your-first-code-contribution) + * [Pull Requests](#pull-requests) + +[Styleguides](#styleguides) + * [Git Commit Messages](#git-commit-messages) + * [Lua Styleguide](#lua-styleguide) + * [JavaScript Styleguide](#javascript-styleguide) + + + +## Code of Conduct + +- Refrain from using languages other than English. +- Refrain from discussing any politically charged or inflammatory topics. +- Uphold mature conversations and respect each other; excessive profanity, hate speech or any kind of harassment will not be tolerated. +- No advertising of any kind. +- Follow these guidelines. +- Do not mention members of github unless a question is directed at them and can't be answered by anyone else. +- Do not mention any of the development team for any reason. We will read things as we get to them. + +## I don't want to read this whole thing I just have a question!!! + +> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below. + +* [QBCore Website](https://qbcore.org) +* [QBCore Discord](https://discord.gg/qbcore) +* [FiveM Discord - #qbcore channel](https://discord.gg/fivem) + + + + + + + + + + +## How Can I Contribute? + +### Reporting Bugs + +The easiest way to contribute for most people is just to report bugs you find cause if nobody reports it there's a chance we'll never know it exists and then we'll never fix it. + +Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out the bug-report template with the information it asks for helps us resolve issues faster. + +> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. + +#### Before Submitting A Bug Report + +* **Check the docs** There's a chance what you see as a bug might just work differently than you expect and if you think it could work better consider a feature enhancement report instead. +* **Search the [discord](https://discord.gg/qbcore)** to see if anyone else has run into the issue and see if it was solved through user error or code changes. (if the code change isn't pending a PR and you know what you're doing consider submitting one following [Pull Requests](#pull-requests) ) +* **Determine which resource the problem should be reported in**. If the bug is related to the inventory for example report this bug under qb-inventory rather than under qb-core or some other resource. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Bug Report? + +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your bug is related to, create an issue on that repository and provide the following information by filling in bug-report template. + +Explain the problem and include additional details to help maintainers reproduce the problem: + +* **Use a clear and descriptive title** for the issue to identify the problem. +* **Describe the exact steps which reproduce the problem** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. If something happened with only a specific group or single item but not others, specify that. +* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. +* **Explain which behavior you expected to see instead and why.** +* **Include screenshots** which show the specific bug in action or before and after. +* **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below. + +Provide more context by answering these questions if possible: + +* **Did the problem start happening recently** (e.g. after updating to a new version of QBCore?) or was this always a problem? +* If the problem started happening recently, **can you reproduce the problem in an older version of QBCore?** What's the most recent commit in which the problem doesn't happen? +* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. + +Include details about your setup: + +* **When was your QBCore last updated?** +* **What OS is the server running on**? +* **Which *extra* resources do you have installed?** + + +--- + + +### Suggesting Features / Enhancements + +This section guides you through submitting an enhancement suggestion for QBCore, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion. + +Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in feature request template, including the steps that you imagine you would take if the feature you're requesting existed. + +#### Before Submitting An Enhancement Suggestion + +* **Make sure it doesn't already exist.** Sounds silly, but there's a lot of features built in to qbcore that people don't realize so take a look through the docs and stuff to make sure it's not already there. +* **Check if there's already PR which provides that enhancement.** +* **Determine which resource the enhancement should be suggested in.** if it fits with another resource suggest it in that resource. if it would be it's own resource suggest it in the main qb-core repository. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your enhancement suggestion is related to, create an issue on that repository and provide the following information: + +* **Use a clear and descriptive title** for the issue to identify the suggestion. +* **Provide a step-by-step description of the suggested enhancement** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). +* **Describe the current behavior** and **explain which behavior you expected to see instead** and why. +* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of QBCore which the suggestion is related to. +* **Explain why this enhancement would be useful.** +* **Be creative and unique.** Stealing ideas from popular servers 1:1 detail isn't going to get accepted. + + +--- + + + +### Your First Code Contribution + +Unsure where to begin contributing to QBCore? You can start by looking through these `beginner` and `help-wanted` issues. + + + +--- + + +### Pull Requests + +The process described here has several goals: + +- Maintain QBCore's quality. +- Fix problems that are important to users. +- Engage the community in working toward the best possible QBCore. +- Enable a sustainable system for QBCore's maintainers to review contributions. + +Please follow these steps to have your contribution considered by the maintainers: + +1. Follow all instructions in The Pull Request template. +2. Follow the [styleguides](#styleguides). +3. Await review by the reviewer(s). + +While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted. + + +--- + +## Styleguides + +### Git Commit Messages + +* Limit the first line to 72 characters or less. +* Reference issues and pull requests liberally after the first line. +* Consider starting the commit message with an applicable emoji: + * :art: `:art:` when improving the format/structure of the code + * :racehorse: `:racehorse:` when improving performance + * :memo: `:memo:` when writing docs + * :bug: `:bug:` when fixing a bug + * :fire: `:fire:` when removing code or files + * :white_check_mark: `:white_check_mark:` when adding tests + * :lock: `:lock:` when dealing with security + * :arrow_up: `:arrow_up:` when upgrading dependencies + * :arrow_down: `:arrow_down:` when downgrading dependencies + * :shirt: `:shirt:` when removing linter warnings + +### Lua Styleguide + +All lua code should be done using all the best practices of proper lua using the easiest to read yet fastest/most optimized methods of execution. + +- Use 4 Space indentation +- Aim for lua 5.4 (include `lua54 'yes'` in the fxmanifest.lua) +- Use `PlayerPedId()` instead of `GetPlayerPed(-1)` +- Use `#(vector3 - vector3)` instead of `GetDistanceBetweenCoords()` +- Don't create unnecessary threads. always try to find a better method of triggering events +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables +- For distance checking loops set longer waits if you're outside of a range +- Job specific loops should only run for players with that job, don't waste cycles +- When possible don't trust the client, esspecially with transactions +- Balance security and optimizations +- [Consider this Lua Performance guide](https://springrts.com/wiki/Lua_Performance) +- Use local varriables everywhere possible +- Make use of config options where it makes sense making features optional or customizable +- Instead of `table.insert(myTable, "Value")` use `myTable[#myTable + 1] = "Value"` +- Instead of `table.insert(ages, "bob", 30)` use `ages["bob"] = 30` + + +### JavaScript Styleguide + +- Use 4 Space indentation +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables. diff --git a/resources/[core]/ui-admin/.github/pull_request_template.md b/resources/[core]/ui-admin/.github/pull_request_template.md new file mode 100644 index 0000000..000f0f9 --- /dev/null +++ b/resources/[core]/ui-admin/.github/pull_request_template.md @@ -0,0 +1,10 @@ +**Describe Pull request** +First, make sure you've read and are following the contribution guidelines and style guide and your code reflects that. +Write up a clear and concise description of what your pull request adds or fixes and if it's an added feature explain why you think it should be included in the core. + +If your PR is to fix an issue mention that issue here + +**Questions (please complete the following information):** +- Have you personally loaded this code into an updated qbcore project and checked all it's functionality? [yes/no] (Be honest) +- Does your code fit the style guidelines? [yes/no] +- Does your PR fit the contribution guidelines? [yes/no] diff --git a/resources/[core]/ui-admin/.github/workflows/lint.yml b/resources/[core]/ui-admin/.github/workflows/lint.yml new file mode 100644 index 0000000..7d017a3 --- /dev/null +++ b/resources/[core]/ui-admin/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: Lint +on: [push, pull_request_target] +jobs: + lint: + name: Lint Resource + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Lint + uses: iLLeniumStudios/fivem-lua-lint-action@v2 + with: + capture: "junit.xml" + args: "-t --formatter JUnit" + extra_libs: mysql+qblocales+menuv + - name: Generate Lint Report + if: always() + uses: mikepenz/action-junit-report@v3 + with: + report_paths: "**/junit.xml" + check_name: Linting Report + fail_on_failure: false diff --git a/resources/[core]/ui-admin/.github/workflows/stale.yml b/resources/[core]/ui-admin/.github/workflows/stale.yml new file mode 100644 index 0000000..c18b212 --- /dev/null +++ b/resources/[core]/ui-admin/.github/workflows/stale.yml @@ -0,0 +1,29 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '41 15 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has had 60 days of inactivity & will close within 7 days' + stale-pr-message: 'This PR has had 60 days of inactivity & will close within 7 days' + close-issue-label: 'Stale Closed' + close-pr-label: 'Stale Closed' + exempt-issue-labels: 'Suggestion' + exempt-pr-labels: 'Suggestion' diff --git a/resources/[core]/ui-admin/LICENSE b/resources/[core]/ui-admin/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/resources/[core]/ui-admin/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/resources/[core]/ui-admin/README.md b/resources/[core]/ui-admin/README.md new file mode 100644 index 0000000..256996a --- /dev/null +++ b/resources/[core]/ui-admin/README.md @@ -0,0 +1,21 @@ +# qb-adminmenu + +![image](https://user-images.githubusercontent.com/57848836/134793591-1ff62665-01e6-4e63-941b-a78dff41ea37.png) + +# License + + QBCore Framework + Copyright (C) 2021 Joshua Eger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see diff --git a/resources/[core]/ui-admin/client/blipsnames.lua b/resources/[core]/ui-admin/client/blipsnames.lua new file mode 100644 index 0000000..d3c9896 --- /dev/null +++ b/resources/[core]/ui-admin/client/blipsnames.lua @@ -0,0 +1,238 @@ +QBCore = exports['qb-core']:GetCoreObject() +local ShowBlips = false +local ShowNames = false +local NetCheck1 = false +local NetCheck2 = false + +CreateThread(function() + while true do + Wait(1000) + if NetCheck1 or NetCheck2 then + TriggerServerEvent('qb-admin:server:GetPlayersForBlips') + end + end +end) + +RegisterNetEvent('qb-admin:client:toggleBlips', function() + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + if not ShowBlips then + ShowBlips = true + NetCheck1 = true + QBCore.Functions.Notify(Lang:t('success.blips_activated'), 'success') + else + ShowBlips = false + QBCore.Functions.Notify(Lang:t('error.blips_deactivated'), 'error') + end + end) +end) + +RegisterNetEvent('qb-admin:client:toggleNames', function() + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + if not ShowNames then + ShowNames = true + NetCheck2 = true + QBCore.Functions.Notify(Lang:t('success.names_activated'), 'success') + else + ShowNames = false + QBCore.Functions.Notify(Lang:t('error.names_deactivated'), 'error') + end + end) +end) + +RegisterNetEvent('qb-admin:client:Show', function(players) + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + for _, player in pairs(players) do + local playeridx = GetPlayerFromServerId(player.id) + local ped = GetPlayerPed(playeridx) + local blip = GetBlipFromEntity(ped) + local name = 'ID: ' .. player.id .. ' | ' .. player.name + + local Tag = CreateFakeMpGamerTag(ped, name, false, false, '', false) + SetMpGamerTagAlpha(Tag, 0, 255) -- Sets "MP_TAG_GAMER_NAME" bar alpha to 100% (not needed just as a fail safe) + SetMpGamerTagAlpha(Tag, 2, 255) -- Sets "MP_TAG_HEALTH_ARMOUR" bar alpha to 100% + SetMpGamerTagAlpha(Tag, 4, 255) -- Sets "MP_TAG_AUDIO_ICON" bar alpha to 100% + SetMpGamerTagAlpha(Tag, 6, 255) -- Sets "MP_TAG_PASSIVE_MODE" bar alpha to 100% + SetMpGamerTagHealthBarColour(Tag, 25) --https://wiki.rage.mp/index.php?title=Fonts_and_Colors + + if ShowNames then + SetMpGamerTagVisibility(Tag, 0, true) -- Activates the player ID Char name and FiveM name + SetMpGamerTagVisibility(Tag, 2, true) -- Activates the health (and armor if they have it on) bar below the player names + if NetworkIsPlayerTalking(playeridx) then + SetMpGamerTagVisibility(Tag, 4, true) -- If player is talking a voice icon will show up on the left side of the name + else + SetMpGamerTagVisibility(Tag, 4, false) + end + if GetPlayerInvincible(playeridx) then + SetMpGamerTagVisibility(Tag, 6, true) -- If player is in godmode a circle with a line through it will show up + else + SetMpGamerTagVisibility(Tag, 6, false) + end + else + SetMpGamerTagVisibility(Tag, 0, false) + SetMpGamerTagVisibility(Tag, 2, false) + SetMpGamerTagVisibility(Tag, 4, false) + SetMpGamerTagVisibility(Tag, 6, false) + RemoveMpGamerTag(Tag) -- Unloads the tags till you activate it again + NetCheck2 = false + end + + -- Blips Logic + if ShowBlips then + if not DoesBlipExist(blip) then + blip = AddBlipForEntity(ped) + SetBlipSprite(blip, 1) + ShowHeadingIndicatorOnBlip(blip, true) + else + local veh = GetVehiclePedIsIn(ped, false) + local blipSprite = GetBlipSprite(blip) + --Payer Death + if not GetEntityHealth(ped) then + if blipSprite ~= 274 then + SetBlipSprite(blip, 274) --Dead icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Player in Vehicle + elseif veh ~= 0 then + local classveh = GetVehicleClass(veh) + local modelveh = GetEntityModel(veh) + --MotorCycles (8) or Cycles (13) + if classveh == 8 or classveh == 13 then + if blipSprite ~= 226 then + SetBlipSprite(blip, 226) --Motorcycle icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --OffRoad (9) + elseif classveh == 9 then + if blipSprite ~= 757 then + SetBlipSprite(blip, 757) --OffRoad icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Industrial (10) + elseif classveh == 10 then + if blipSprite ~= 477 then + SetBlipSprite(blip, 477) --Truck icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Utility (11) + elseif classveh == 11 then + if blipSprite ~= 477 then + SetBlipSprite(blip, 477) --Truck icon despite finding better one + ShowHeadingIndicatorOnBlip(blip, false) + end + --Vans (12) + elseif classveh == 12 then + if blipSprite ~= 67 then + SetBlipSprite(blip, 67) --Van icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Boats (14) + elseif classveh == 14 then + if blipSprite ~= 427 then + SetBlipSprite(blip, 427) --Boat icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Helicopters (15) + elseif classveh == 15 then + if blipSprite ~= 422 then + SetBlipSprite(blip, 422) --Moving helicopter icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Planes (16) + elseif classveh == 16 then + if modelveh == 'besra' or modelveh == 'hydra' or modelveh == 'lazer' then + if blipSprite ~= 424 then + SetBlipSprite(blip, 424) --Jet icon + ShowHeadingIndicatorOnBlip(blip, false) + end + elseif blipSprite ~= 423 then + SetBlipSprite(blip, 423) --Plane icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Service (17) + elseif classveh == 17 then + if blipSprite ~= 198 then + SetBlipSprite(blip, 198) --Taxi icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Emergency (18) + elseif classveh == 18 then + if blipSprite ~= 56 then + SetBlipSprite(blip, 56) --Cop icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Military (19) + elseif classveh == 19 then + if modelveh == 'rhino' then + if blipSprite ~= 421 then + SetBlipSprite(blip, 421) --Tank icon + ShowHeadingIndicatorOnBlip(blip, false) + end + elseif blipSprite ~= 750 then + SetBlipSprite(blip, 750) --Military truck icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Commercial (20) + elseif classveh == 20 then + if blipSprite ~= 477 then + SetBlipSprite(blip, 477) --Truck icon + ShowHeadingIndicatorOnBlip(blip, false) + end + --Every car (0, 1, 2, 3, 4, 5, 6, 7) + else + if modelveh == 'insurgent' or modelveh == 'insurgent2' or modelveh == 'limo2' then + if blipSprite ~= 426 then + SetBlipSprite(blip, 426) --Armed car icon + ShowHeadingIndicatorOnBlip(blip, false) + end + elseif blipSprite ~= 225 then + SetBlipSprite(blip, 225) --Car icon + ShowHeadingIndicatorOnBlip(blip, true) + end + end + -- Show number in case of passangers + local passengers = GetVehicleNumberOfPassengers(veh) + if passengers then + if not IsVehicleSeatFree(veh, -1) then + passengers = passengers + 1 + end + ShowNumberOnBlip(blip, passengers) + else + HideNumberOnBlip(blip) + end + --Player on Foot + else + HideNumberOnBlip(blip) + if blipSprite ~= 1 then + SetBlipSprite(blip, 1) + ShowHeadingIndicatorOnBlip(blip, true) + end + end + + SetBlipRotation(blip, math.ceil(GetEntityHeading(veh))) + SetBlipNameToPlayerName(blip, playeridx) + SetBlipScale(blip, 0.85) + + if IsPauseMenuActive() then + SetBlipAlpha(blip, 255) + else + local x1, y1 = table.unpack(GetEntityCoords(PlayerPedId(), true)) + local x2, y2 = table.unpack(GetEntityCoords(GetPlayerPed(playeridx), true)) + local distance = (math.floor(math.abs(math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))) / -1)) + 900 + if distance < 0 then + distance = 0 + elseif distance > 255 then + distance = 255 + end + SetBlipAlpha(blip, distance) + end + end + else + RemoveBlip(blip) + NetCheck1 = false + end + end + end) +end) diff --git a/resources/[core]/ui-admin/client/client.lua b/resources/[core]/ui-admin/client/client.lua new file mode 100644 index 0000000..7fe3e96 --- /dev/null +++ b/resources/[core]/ui-admin/client/client.lua @@ -0,0 +1,1255 @@ +local banlength = nil +local developermode = false +local showCoords = false +local vehicleDevMode = false +local banreason = 'Unknown' +local kickreason = 'Unknown' +local menuLocation = 'topright' -- e.g. topright (default), topleft, bottomright, bottomleft + +-- Main Menus +local menu1 = MenuV:CreateMenu(false, Lang:t('menu.admin_menu'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test1') +local menu2 = MenuV:CreateMenu(false, Lang:t('menu.admin_options'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test2') +local menu3 = MenuV:CreateMenu(false, Lang:t('menu.manage_server'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test3') +local menu4 = MenuV:CreateMenu(false, Lang:t('menu.online_players'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test4') +local menu5 = MenuV:CreateMenu(false, Lang:t('menu.vehicle_options'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test5') +local menu6 = MenuV:CreateMenu(false, Lang:t('menu.dealer_list'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test6') +local menu7 = MenuV:CreateMenu(false, Lang:t('menu.developer_options'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test7') + +--Sub Menus +local menu8 = MenuV:CreateMenu(false, Lang:t('menu.weather_conditions'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test8') +local menu9 = MenuV:CreateMenu(false, Lang:t('menu.ban'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test9') +local menu10 = MenuV:CreateMenu(false, Lang:t('menu.kick'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test10') +local menu11 = MenuV:CreateMenu(false, Lang:t('menu.permissions'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test11') +local menu12 = MenuV:CreateMenu(false, Lang:t('menu.vehicle_categories'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test12') +local menu13 = MenuV:CreateMenu(false, Lang:t('menu.vehicle_models'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test13') +local menu14 = MenuV:CreateMenu(false, Lang:t('menu.entity_view_options'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test14') +local menu15 = MenuV:CreateMenu(false, Lang:t('menu.spawn_weapons'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv', 'test15') + +RegisterNetEvent('qb-admin:client:openMenu', function() + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + MenuV:OpenMenu(menu1) + end) +end) + +--[[ + Main menu buttons +--]] +-- Admin options +menu1:AddButton({ + icon = '😃', + label = Lang:t('menu.admin_options'), + value = menu2, + description = Lang:t('desc.admin_options_desc') +}) + +--player management +local player_management = menu1:AddButton({ + icon = '🙍‍♂️', + label = Lang:t('menu.player_management'), + value = menu4, + description = Lang:t('desc.player_management_desc') +}) + +--server management +menu1:AddButton({ + icon = '🎮', + label = Lang:t('menu.server_management'), + value = menu3, + description = Lang:t('desc.server_management_desc') +}) + +--vehicle spawner +menu1:AddButton({ + icon = '🚗', + label = Lang:t('menu.vehicles'), + value = menu5, + description = Lang:t('desc.vehicles_desc') +}) + +--dealer list +local menu1_dealer_list = menu1:AddButton({ + icon = '💊', + label = Lang:t('menu.dealer_list'), + value = menu6, + description = Lang:t('desc.dealer_desc') +}) + +--developer options +menu1:AddButton({ + icon = '🔧', + label = Lang:t('menu.developer_options'), + value = menu7, + description = Lang:t('desc.developer_desc') +}) + +--[[ + Sub Menus for the above main menu's +--]] + +-- Admin Options Menu Buttons +local menu2_admin_noclip = menu2:AddCheckbox({ + icon = '🎥', + label = Lang:t('menu.noclip'), + value = nil, + description = Lang:t('desc.noclip_desc') +}) + +local menu2_admin_revive = menu2:AddButton({ + icon = '🏥', + label = Lang:t('menu.revive'), + value = 'revive', + description = Lang:t('desc.revive_desc') +}) + +local menu2_admin_invisible = menu2:AddCheckbox({ + icon = '👻', + label = Lang:t('menu.invisible'), + value = nil, + description = Lang:t('desc.invisible_desc') +}) + +local menu2_admin_god_mode = menu2:AddCheckbox({ + icon = '⚡', + label = Lang:t('menu.god'), + value = nil, + description = Lang:t('desc.god_desc') +}) + +local menu2_admin_display_names = menu2:AddCheckbox({ + icon = '📋', + label = Lang:t('menu.names'), + value = nil, + description = Lang:t('desc.names_desc') +}) + +local menu2_admin_display_blips = menu2:AddCheckbox({ + icon = '📍', + label = Lang:t('menu.blips'), + value = nil, + description = Lang:t('desc.blips_desc') +}) + +--give weapons +menu2:AddButton({ + icon = '🎁', + label = Lang:t('menu.spawn_weapons'), + value = menu15, + description = Lang:t('desc.spawn_weapons_desc') +}) + +-- Server Options Menu Buttons +local menu3_server_weather = menu3:AddButton({ + icon = '🌡️', + label = Lang:t('menu.weather_options'), + value = menu8, + description = Lang:t('desc.weather_desc') +}) + +local menu3_server_time = menu3:AddSlider({ + icon = '⏲️', + label = Lang:t('menu.server_time'), + value = GetClockHours(), + values = { { + label = '00', + value = '00', + description = Lang:t('menu.time') + }, { + label = '01', + value = '01', + description = Lang:t('menu.time') + }, { + label = '02', + value = '02', + description = Lang:t('menu.time') + }, { + label = '03', + value = '03', + description = Lang:t('menu.time') + }, { + label = '04', + value = '04', + description = Lang:t('menu.time') + }, { + label = '05', + value = '05', + description = Lang:t('menu.time') + }, { + label = '06', + value = '06', + description = Lang:t('menu.time') + }, { + label = '07', + value = '07', + description = Lang:t('menu.time') + }, { + label = '08', + value = '08', + description = Lang:t('menu.time') + }, { + label = '09', + value = '09', + description = Lang:t('menu.time') + }, { + label = '10', + value = '10', + description = Lang:t('menu.time') + }, { + label = '11', + value = '11', + description = Lang:t('menu.time') + }, { + label = '12', + value = '12', + description = Lang:t('menu.time') + }, { + label = '13', + value = '13', + description = Lang:t('menu.time') + }, { + label = '14', + value = '14', + description = Lang:t('menu.time') + }, { + label = '15', + value = '15', + description = Lang:t('menu.time') + }, { + label = '16', + value = '16', + description = Lang:t('menu.time') + }, { + label = '17', + value = '17', + description = Lang:t('menu.time') + }, { + label = '18', + value = '18', + description = Lang:t('menu.time') + }, { + label = '19', + value = '19', + description = Lang:t('menu.time') + }, { + label = '20', + value = '20', + description = Lang:t('menu.time') + }, { + label = '21', + value = '21', + description = Lang:t('menu.time') + }, { + label = '22', + value = '22', + description = Lang:t('menu.time') + }, { + label = '23', + value = '23', + description = Lang:t('menu.time') + } } +}) + +-- Vehicle Spawner Menu Buttons +local menu5_vehicles_spawn = menu5:AddButton({ + icon = '🚗', + label = Lang:t('menu.spawn_vehicle'), + value = menu12, + description = Lang:t('desc.spawn_vehicle_desc') +}) + +local menu5_vehicles_fix = menu5:AddButton({ + icon = '🔧', + label = Lang:t('menu.fix_vehicle'), + value = 'fix', + description = Lang:t('desc.fix_vehicle_desc') +}) + +local menu5_vehicles_buy = menu5:AddButton({ + icon = '💲', + label = Lang:t('menu.buy'), + value = 'buy', + description = Lang:t('desc.buy_desc') +}) + +local menu5_vehicles_remove = menu5:AddButton({ + icon = '🗑️', + label = Lang:t('menu.remove_vehicle'), + value = 'remove', + description = Lang:t('desc.remove_vehicle_desc') +}) + +local menu5_vehicles_max_upgrades = menu5:AddButton({ + icon = '⚡️', + label = Lang:t('menu.max_mods'), + value = 'maxmods', + description = Lang:t('desc.max_mod_desc') +}) + +-- Developer Options Menu Buttons +local menu7_dev_copy_vec3 = menu7:AddButton({ + icon = '📋', + label = Lang:t('menu.copy_vector3'), + value = 'coords', + description = Lang:t('desc.vector3_desc') +}) + +local menu7_dev_copy_vec4 = menu7:AddButton({ + icon = '📋', + label = Lang:t('menu.copy_vector4'), + value = 'coords', + description = Lang:t('desc.vector4_desc') +}) + +local menu7_dev_copy_heading = menu7:AddButton({ + icon = '📋', + label = Lang:t('menu.copy_heading'), + value = 'heading', + description = Lang:t('desc.copy_heading_desc') +}) + +local menu7_dev_toggle_coords = menu7:AddCheckbox({ + icon = '📍', + label = Lang:t('menu.display_coords'), + value = nil, + description = Lang:t('desc.display_coords_desc') +}) + +local menu7_dev_vehicle_mode = menu7:AddCheckbox({ + icon = '🚘', + label = Lang:t('menu.vehicle_dev_mode'), + value = nil, + description = Lang:t('desc.vehicle_dev_mode_desc') +}) + +local menu7_dev_info_mode = menu7:AddCheckbox({ + icon = '⚫', + label = Lang:t('menu.hud_dev_mode'), + value = nil, + description = Lang:t('desc.hud_dev_mode_desc') +}) + +local menu7_dev_noclip = menu7:AddCheckbox({ + icon = '🎥', + label = Lang:t('menu.noclip'), + value = nil, + description = Lang:t('desc.noclip_desc') +}) + +--create dev entity view +menu7:AddButton({ + icon = '🔍', + label = Lang:t('menu.entity_view_options'), + value = menu14, + description = Lang:t('desc.entity_view_desc') +}) + +--[[ + QB Core Admin Menu button functions below. +--]] + +--[[ + General Functions +--]] +local function LocalInput(text, number, windows) + AddTextEntry('FMMC_MPM_NA', text) + DisplayOnscreenKeyboard(1, 'FMMC_MPM_NA', '', windows or '', '', '', '', number or 30) + while (UpdateOnscreenKeyboard() == 0) do + DisableAllControlActions(0) + Wait(0) + end + + if (GetOnscreenKeyboardResult()) then + local result = GetOnscreenKeyboardResult() + return result + end +end + +local function LocalInputInt(text, number, windows) + AddTextEntry('FMMC_MPM_NA', text) + DisplayOnscreenKeyboard(1, 'FMMC_MPM_NA', '', windows or '', '', '', '', number or 30) + while (UpdateOnscreenKeyboard() == 0) do + DisableAllControlActions(0) + Wait(0) + end + if (GetOnscreenKeyboardResult()) then + local result = GetOnscreenKeyboardResult() + return tonumber(result) + end +end + +--[[ + Admin Options functions +--]] +-- Toggle player name display +menu2_admin_display_names:On('change', function() + TriggerEvent('qb-admin:client:toggleNames') +end) + +-- Toggle player blip display +menu2_admin_display_blips:On('change', function() + TriggerEvent('qb-admin:client:toggleBlips') +end) + +-- Toggle NoClip +menu2_admin_noclip:On('change', function(_, _, _) + ToggleNoClip() +end) + +-- Revive Self +menu2_admin_revive:On('select', function(_) + TriggerEvent('hospital:client:Revive', PlayerPedId()) +end) + +-- Invisible +local invisible = false +menu2_admin_invisible:On('change', function(_, _, _) + if not invisible then + invisible = true + SetEntityVisible(PlayerPedId(), false, 0) + else + invisible = false + SetEntityVisible(PlayerPedId(), true, 0) + end +end) + +-- Godmode +local godmode = false +menu2_admin_god_mode:On('change', function(_, _, _) + godmode = not godmode + + if godmode then + while godmode do + Wait(0) + SetPlayerInvincible(PlayerId(), true) + end + SetPlayerInvincible(PlayerId(), false) + end +end) + +-- Weapons list +for _, v in pairs(QBCore.Shared.Weapons) do + menu15:AddButton({ + icon = '🎁', + label = v.label, + value = v.value, + description = Lang:t('desc.spawn_weapons_desc'), + select = function(_) + TriggerServerEvent('qb-admin:giveWeapon', v.name) + QBCore.Functions.Notify(Lang:t('success.spawn_weapon')) + end + }) +end + + +--[[ + Player Management Options functions +--]] +-- Player List +local function OpenPermsMenu(permsply) + QBCore.Functions.TriggerCallback('qb-admin:server:getrank', function(rank) + if rank then + local selectedgroup = 'Unknown' + MenuV:OpenMenu(menu11) + menu11:ClearItems() + menu11:AddSlider({ + icon = '', + label = 'Group', + value = 'user', + values = { { + label = 'User', + value = 'user', + description = 'Group' + }, { + label = 'Admin', + value = 'admin', + description = 'Group' + }, { + label = 'God', + value = 'god', + description = 'Group' + } }, + change = function(_, newValue, _) + local vcal = newValue + if vcal == 1 then + selectedgroup = {} + selectedgroup[#selectedgroup + 1] = { rank = 'user', label = 'User' } + elseif vcal == 2 then + selectedgroup = {} + selectedgroup[#selectedgroup + 1] = { rank = 'admin', label = 'Admin' } + elseif vcal == 3 then + selectedgroup = {} + selectedgroup[#selectedgroup + 1] = { rank = 'god', label = 'God' } + end + end + }) + + menu11:AddButton({ + icon = '', + label = Lang:t('info.confirm'), + value = 'giveperms', + description = 'Give the permission group', + select = function(_) + if selectedgroup ~= 'Unknown' then + TriggerServerEvent('qb-admin:server:setPermissions', permsply.id, selectedgroup) + QBCore.Functions.Notify(Lang:t('success.changed_perm'), 'success') + selectedgroup = 'Unknown' + else + QBCore.Functions.Notify(Lang:t('error.changed_perm_failed'), 'error') + end + end + }) + else + MenuV:CloseMenu(menu1) + end + end) +end + +local function OpenKickMenu(kickplayer) + MenuV:OpenMenu(menu10) + menu10:ClearItems() + menu10:AddButton({ + icon = '', + label = Lang:t('info.reason'), + value = 'reason', + description = Lang:t('desc.kick_reason'), + select = function(_) + kickreason = LocalInput(Lang:t('desc.kick_reason'), 255) + end + }) + + menu10:AddButton({ + icon = '', + label = Lang:t('info.confirm'), + value = 'kick', + description = Lang:t('desc.confirm_kick'), + select = function(_) + if kickreason ~= 'Unknown' then + TriggerServerEvent('qb-admin:server:kick', kickplayer, kickreason) + kickreason = 'Unknown' + else + QBCore.Functions.Notify(Lang:t('error.missing_reason'), 'error') + end + end + }) +end + +local function OpenBanMenu(banplayer) + MenuV:OpenMenu(menu9) + menu9:ClearItems() + menu9:AddButton({ + icon = '', + label = Lang:t('info.reason'), + value = 'reason', + description = Lang:t('desc.ban_reason'), + select = function(_) + banreason = LocalInput(Lang:t('desc.ban_reason'), 255) + end + }) + + menu9:AddSlider({ + icon = '⏲️', + label = Lang:t('info.length'), + value = '3600', + values = { { + label = Lang:t('time.onehour'), + value = '3600', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.sixhour'), + value = '21600', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.twelvehour'), + value = '43200', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.oneday'), + value = '86400', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.threeday'), + value = '259200', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.oneweek'), + value = '604800', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.onemonth'), + value = '2678400', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.threemonth'), + value = '8035200', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.sixmonth'), + value = '16070400', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.oneyear'), + value = '32140800', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.permanent'), + value = '99999999999', + description = Lang:t('time.ban_length') + }, { + label = Lang:t('time.self'), + value = 'self', + description = Lang:t('time.ban_length') + } }, + select = function(_, newValue, _) + if newValue == 'self' then + banlength = LocalInputInt('Ban Length', 11) + else + banlength = newValue + end + end + }) + + menu9:AddButton({ + icon = '', + label = Lang:t('info.confirm'), + value = 'ban', + description = Lang:t('desc.confirm_ban'), + select = function(_) + if banreason ~= 'Unknown' and banlength ~= nil then + TriggerServerEvent('qb-admin:server:ban', banplayer, banlength, banreason) + banreason = 'Unknown' + banlength = nil + else + QBCore.Functions.Notify(Lang:t('error.invalid_reason_length_ban'), 'error') + end + end + }) +end + +local function OpenPlayerMenus(player) + local Players = MenuV:CreateMenu(false, player.cid .. Lang:t('info.options'), menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv') -- Players Sub Menu + Players:ClearItems() + MenuV:OpenMenu(Players) + local elements = { + [1] = { + icon = '💀', + label = Lang:t('menu.kill'), + value = 'kill', + description = Lang:t('menu.kill') .. ' ' .. player.cid + }, + [2] = { + icon = '🏥', + label = Lang:t('menu.revive'), + value = 'revive', + description = Lang:t('menu.revive') .. ' ' .. player.cid + }, + [3] = { + icon = '🥶', + label = Lang:t('menu.freeze'), + value = 'freeze', + description = Lang:t('menu.freeze') .. ' ' .. player.cid + }, + [4] = { + icon = '👀', + label = Lang:t('menu.spectate'), + value = 'spectate', + description = Lang:t('menu.spectate') .. ' ' .. player.cid + }, + [5] = { + icon = '➡️', + label = Lang:t('info.go_to'), + value = 'goto', + description = Lang:t('info.go_to') .. ' ' .. player.cid .. Lang:t('info.position') + }, + [6] = { + icon = '⬅️', + label = Lang:t('menu.bring'), + value = 'bring', + description = Lang:t('menu.bring') .. ' ' .. player.cid .. ' ' .. Lang:t('info.your_position') + }, + [7] = { + icon = '🚗', + label = Lang:t('menu.sit_in_vehicle'), + value = 'intovehicle', + description = Lang:t('desc.sit_in_veh_desc') .. ' ' .. player.cid .. ' ' .. Lang:t('desc.sit_in_veh_desc2') + }, + [8] = { + icon = '🎒', + label = Lang:t('menu.open_inv'), + value = 'inventory', + description = Lang:t('info.open') .. ' ' .. player.cid .. Lang:t('info.inventories') + }, + [9] = { + icon = '👕', + label = Lang:t('menu.give_clothing_menu'), + value = 'cloth', + description = Lang:t('desc.clothing_menu_desc') .. ' ' .. player.cid + }, + [10] = { + icon = '🥾', + label = Lang:t('menu.kick'), + value = 'kick', + description = Lang:t('menu.kick') .. ' ' .. player.cid .. ' ' .. Lang:t('info.reason') + }, + [11] = { + icon = '🚫', + label = Lang:t('menu.ban'), + value = 'ban', + description = Lang:t('menu.ban') .. ' ' .. player.cid .. ' ' .. Lang:t('info.reason') + }, + [12] = { + icon = '🎟️', + label = Lang:t('menu.permissions'), + value = 'perms', + description = Lang:t('info.give') .. ' ' .. player.cid .. ' ' .. Lang:t('menu.permissions') + } + } + for _, v in ipairs(elements) do + Players:AddButton({ + icon = v.icon, + label = ' ' .. v.label, + value = v.value, + description = v.description, + select = function(btn) + local values = btn.Value + if values ~= 'ban' and values ~= 'kick' and values ~= 'perms' then + TriggerServerEvent('qb-admin:server:' .. values, player) + elseif values == 'ban' then + OpenBanMenu(player) + elseif values == 'kick' then + OpenKickMenu(player) + elseif values == 'perms' then + OpenPermsMenu(player) + end + end + }) + end +end + +player_management:On('select', function(_) + menu4:ClearItems() + QBCore.Functions.TriggerCallback('test:getplayers', function(players) + for _, v in pairs(players) do + menu4:AddButton({ + label = Lang:t('info.id') .. v['id'] .. ' | ' .. v['name'], + value = v, + description = Lang:t('info.player_name'), + select = function(btn) + local select = btn.Value -- get all the values from v! + OpenPlayerMenus(select) -- only pass what i select nothing else + end + }) -- WORKS + end + end) +end) + + +--[[ + Server Options functions +--]] + +-- Adjust weather on change +menu3_server_weather:On('select', function() + menu8:ClearItems() + local elements = { + [1] = { + icon = '☀️', + label = Lang:t('weather.extra_sunny'), + value = 'EXTRASUNNY', + description = Lang:t('weather.extra_sunny_desc') + }, + [2] = { + icon = '☀️', + label = Lang:t('weather.clear'), + value = 'CLEAR', + description = Lang:t('weather.clear_desc') + }, + [3] = { + icon = '☀️', + label = Lang:t('weather.neutral'), + value = 'NEUTRAL', + description = Lang:t('weather.neutral_desc') + }, + [4] = { + icon = '🌁', + label = Lang:t('weather.smog'), + value = 'SMOG', + description = Lang:t('weather.smog_desc') + }, + [5] = { + icon = '🌫️', + label = Lang:t('weather.foggy'), + value = 'FOGGY', + description = Lang:t('weather.foggy_desc') + }, + [6] = { + icon = '⛅', + label = Lang:t('weather.overcast'), + value = 'OVERCAST', + description = Lang:t('weather.overcast_desc') + }, + [7] = { + icon = '☁️', + label = Lang:t('weather.clouds'), + value = 'CLOUDS', + description = Lang:t('weather.clouds_desc') + }, + [8] = { + icon = '🌤️', + label = Lang:t('weather.clearing'), + value = 'CLEARING', + description = Lang:t('weather.clearing_desc') + }, + [9] = { + icon = '☂️', + label = Lang:t('weather.rain'), + value = 'RAIN', + description = Lang:t('weather.rain_desc') + }, + + [10] = { + icon = '⛈️', + label = Lang:t('weather.thunder'), + value = 'THUNDER', + description = Lang:t('weather.thunder_desc') + }, + [11] = { + icon = '❄️', + label = Lang:t('weather.snow'), + value = 'SNOW', + description = Lang:t('weather.snow_desc') + }, + [12] = { + icon = '🌨️', + label = Lang:t('weather.blizzard'), + value = 'BLIZZARD', + description = Lang:t('weather.blizzed_desc') + }, + [13] = { + icon = '❄️', + label = Lang:t('weather.light_snow'), + value = 'SNOWLIGHT', + description = Lang:t('weather.light_snow_desc') + }, + [14] = { + icon = '🌨️', + label = Lang:t('weather.heavy_snow'), + value = 'XMAS', + description = Lang:t('weather.heavy_snow_desc') + }, + [15] = { + icon = '🎃', + label = Lang:t('weather.halloween'), + value = 'HALLOWEEN', + description = Lang:t('weather.halloween_desc') + } + } + for _, v in ipairs(elements) do + menu8:AddButton({ + icon = v.icon, + label = v.label, + value = v, + description = v.description, + select = function(btn) + local selection = btn.Value + TriggerServerEvent('qb-weathersync:server:setWeather', selection.value) + QBCore.Functions.Notify(Lang:t('weather.weather_changed', { value = selection.label })) + end + }) + end +end) + +-- Adjust time on change +menu3_server_time:On('select', function(_, value) + TriggerServerEvent('qb-weathersync:server:setTime', value, value) + QBCore.Functions.Notify(Lang:t('time.changed', { time = value })) +end) + +--[[ + Vehicle Spawner functions +--]] + +-- Set vehicle Categories +local vehicles = {} +for k, v in pairs(QBCore.Shared.Vehicles) do + local category = v['category'] + if vehicles[category] == nil then + vehicles[category] = {} + end + vehicles[category][k] = v +end + +-- Car Categories +local function OpenCarModelsMenu(category) + menu13:ClearItems() + MenuV:OpenMenu(menu13) + for k, v in pairs(category) do + menu13:AddButton({ + label = v['name'], + value = k, + description = 'Spawn ' .. v['name'], + select = function(_) + TriggerServerEvent('QBCore:CallCommand', 'car', { k }) + end + }) + end +end + +menu5_vehicles_spawn:On('Select', function(_) + menu12:ClearItems() + for k, v in pairs(vehicles) do + menu12:AddButton({ + label = QBCore.Shared.FirstToUpper(k), + value = v, + description = Lang:t('menu.category_name'), + select = function(btn) + local select = btn.Value + OpenCarModelsMenu(select) + end + }) + end +end) + +menu5_vehicles_fix:On('Select', function(_) + TriggerServerEvent('QBCore:CallCommand', 'fix', {}) +end) + +menu5_vehicles_buy:On('Select', function(_) + TriggerServerEvent('QBCore:CallCommand', 'admincar', {}) +end) + +menu5_vehicles_remove:On('Select', function(_) + TriggerServerEvent('QBCore:CallCommand', 'dv', {}) +end) + +menu5_vehicles_max_upgrades:On('Select', function(_) + TriggerServerEvent('QBCore:CallCommand', 'maxmods', {}) +end) + +--[[ + Developer Options functions +--]] +local entity_view_distance = menu14:AddSlider({ + icon = '📏', + label = Lang:t('menu.entity_view_distance'), + value = GetCurrentEntityViewDistance(), + values = { { + label = '5', + value = '5', + description = Lang:t('menu.entity_view_distance') + }, { + label = '10', + value = '10', + description = Lang:t('menu.entity_view_distance') + }, { + label = '15', + value = '15', + description = Lang:t('menu.entity_view_distance') + }, { + label = '20', + value = '20', + description = Lang:t('menu.entity_view_distance') + }, { + label = '25', + value = '25', + description = Lang:t('menu.entity_view_distance') + }, { + label = '30', + value = '30', + description = Lang:t('menu.entity_view_distance') + }, { + label = '35', + value = '35', + description = Lang:t('menu.entity_view_distance') + }, { + label = '40', + value = '40', + description = Lang:t('menu.entity_view_distance') + }, { + label = '45', + value = '45', + description = Lang:t('menu.entity_view_distance') + }, { + label = '50', + value = '50', + description = Lang:t('menu.entity_view_distance') + } } +}) + +local entity_view_copy_info = menu14:AddButton({ + icon = '📋', + label = Lang:t('menu.entity_view_freeaim_copy'), + value = 'freeaimEntity', + description = Lang:t('desc.entity_view_freeaim_copy_desc') +}) + +local entity_view_freeaim = menu14:AddCheckbox({ + icon = '🔫', + label = Lang:t('menu.entity_view_freeaim'), + value = nil, + description = Lang:t('desc.entity_view_freeaim_desc') +}) + +local entity_view_vehicle = menu14:AddCheckbox({ + icon = '🚗', + label = Lang:t('menu.entity_view_vehicles'), + value = nil, + description = Lang:t('desc.entity_view_vehicles_desc') +}) + +local entity_view_ped = menu14:AddCheckbox({ + icon = '🧍‍♂‍', + label = Lang:t('menu.entity_view_peds'), + value = nil, + description = Lang:t('desc.entity_view_peds_desc') +}) + +local entity_view_object = menu14:AddCheckbox({ + icon = '📦', + label = Lang:t('menu.entity_view_objects'), + value = nil, + description = Lang:t('desc.entity_view_objects_desc') +}) + +menu7_dev_info_mode:On('change', function(_, _, _) + developermode = not developermode + TriggerEvent('qb-admin:client:ToggleDevmode') + if developermode then + SetPlayerInvincible(PlayerId(), true) + else + SetPlayerInvincible(PlayerId(), false) + end +end) + +entity_view_freeaim:On('change', function(_, _, _) + ToggleEntityFreeView() +end) + +local function CopyToClipboard(dataType) + local ped = PlayerPedId() + if dataType == 'coords2' then + local coords = GetEntityCoords(ped) + local x = QBCore.Shared.Round(coords.x, 2) + local y = QBCore.Shared.Round(coords.y, 2) + SendNUIMessage({ + string = string.format('vector2(%s, %s)', x, y) + }) + QBCore.Functions.Notify(Lang:t('success.coords_copied'), 'success') + elseif dataType == 'coords3' then + local coords = GetEntityCoords(ped) + local x = QBCore.Shared.Round(coords.x, 2) + local y = QBCore.Shared.Round(coords.y, 2) + local z = QBCore.Shared.Round(coords.z, 2) + SendNUIMessage({ + string = string.format('vector3(%s, %s, %s)', x, y, z) + }) + QBCore.Functions.Notify(Lang:t('success.coords_copied'), 'success') + elseif dataType == 'coords4' then + local coords = GetEntityCoords(ped) + local x = QBCore.Shared.Round(coords.x, 2) + local y = QBCore.Shared.Round(coords.y, 2) + local z = QBCore.Shared.Round(coords.z, 2) + local heading = GetEntityHeading(ped) + local h = QBCore.Shared.Round(heading, 2) + SendNUIMessage({ + string = string.format('vector4(%s, %s, %s, %s)', x, y, z, h) + }) + QBCore.Functions.Notify(Lang:t('success.coords_copied'), 'success') + elseif dataType == 'heading' then + local heading = GetEntityHeading(ped) + local h = QBCore.Shared.Round(heading, 2) + SendNUIMessage({ + string = h + }) + QBCore.Functions.Notify(Lang:t('success.heading_copied'), 'success') + elseif dataType == 'freeaimEntity' then + local entity = GetFreeAimEntity() + + if entity then + local entityHash = GetEntityModel(entity) + local entityName = Entities[entityHash] or 'Unknown' + local entityCoords = GetEntityCoords(entity) + local entityHeading = GetEntityHeading(entity) + local entityRotation = GetEntityRotation(entity) + local x = QBCore.Shared.Round(entityCoords.x, 2) + local y = QBCore.Shared.Round(entityCoords.y, 2) + local z = QBCore.Shared.Round(entityCoords.z, 2) + local rotX = QBCore.Shared.Round(entityRotation.x, 2) + local rotY = QBCore.Shared.Round(entityRotation.y, 2) + local rotZ = QBCore.Shared.Round(entityRotation.z, 2) + local h = QBCore.Shared.Round(entityHeading, 2) + SendNUIMessage({ + string = string.format('Model Name:\t%s\nModel Hash:\t%s\n\nHeading:\t%s\nCoords:\t\tvector3(%s, %s, %s)\nRotation:\tvector3(%s, %s, %s)', entityName, entityHash, h, x, y, z, rotX, rotY, rotZ) + }) + QBCore.Functions.Notify(Lang:t('success.entity_copy'), 'success') + else + QBCore.Functions.Notify(Lang:t('error.failed_entity_copy'), 'error') + end + end +end + +RegisterNetEvent('qb-admin:client:copyToClipboard', function(dataType) + CopyToClipboard(dataType) +end) + +local function Draw2DText(content, font, colour, scale, x, y) + SetTextFont(font) + SetTextScale(scale, scale) + SetTextColour(colour[1], colour[2], colour[3], 255) + BeginTextCommandDisplayText('STRING') + SetTextDropShadow(0, 0, 0, 0, 255) + SetTextDropShadow() + SetTextEdge(4, 0, 0, 0, 255) + SetTextOutline() + AddTextComponentSubstringPlayerName(content) + EndTextCommandDisplayText(x, y) +end + +local function ToggleShowCoordinates() + local x = 0.4 + local y = 0.025 + showCoords = not showCoords + CreateThread(function() + while showCoords do + local coords = GetEntityCoords(PlayerPedId()) + local heading = GetEntityHeading(PlayerPedId()) + local c = {} + c.x = QBCore.Shared.Round(coords.x, 2) + c.y = QBCore.Shared.Round(coords.y, 2) + c.z = QBCore.Shared.Round(coords.z, 2) + heading = QBCore.Shared.Round(heading, 2) + Wait(0) + Draw2DText(string.format('~w~' .. Lang:t('info.ped_coords') .. '~b~ vector4(~w~%s~b~, ~w~%s~b~, ~w~%s~b~, ~w~%s~b~)', c.x, c.y, c.z, heading), 4, { 66, 182, 245 }, 0.4, x + 0.0, y + 0.0) + end + end) +end + +local function ToggleVehicleDeveloperMode() + local x = 0.4 + local y = 0.888 + vehicleDevMode = not vehicleDevMode + CreateThread(function() + while vehicleDevMode do + local ped = PlayerPedId() + Wait(0) + if IsPedInAnyVehicle(ped, false) then + local vehicle = GetVehiclePedIsIn(ped, false) + local netID = VehToNet(vehicle) + local hash = GetEntityModel(vehicle) + local modelName = GetLabelText(GetDisplayNameFromVehicleModel(hash)) + local eHealth = GetVehicleEngineHealth(vehicle) + local bHealth = GetVehicleBodyHealth(vehicle) + Draw2DText(Lang:t('info.vehicle_dev_data'), 4, { 66, 182, 245 }, 0.4, x + 0.0, y + 0.0) + Draw2DText(string.format(Lang:t('info.ent_id') .. '~b~%s~s~ | ' .. Lang:t('info.net_id') .. '~b~%s~s~', vehicle, netID), 4, { 255, 255, 255 }, 0.4, x + 0.0, y + 0.025) + Draw2DText(string.format(Lang:t('info.model') .. '~b~%s~s~ | ' .. Lang:t('info.hash') .. '~b~%s~s~', modelName, hash), 4, { 255, 255, 255 }, 0.4, x + 0.0, y + 0.050) + Draw2DText(string.format(Lang:t('info.eng_health') .. '~b~%s~s~ | ' .. Lang:t('info.body_health') .. '~b~%s~s~', QBCore.Shared.Round(eHealth, 2), QBCore.Shared.Round(bHealth, 2)), 4, { 255, 255, 255 }, 0.4, x + 0.0, y + 0.075) + end + end + end) +end + +RegisterNetEvent('qb-admin:client:ToggleCoords', function() + ToggleShowCoordinates() +end) + +menu7_dev_copy_vec3:On('select', function() + CopyToClipboard('coords3') +end) + +menu7_dev_copy_vec4:On('select', function() + CopyToClipboard('coords4') +end) + +menu7_dev_copy_heading:On('select', function() + CopyToClipboard('heading') +end) + +entity_view_copy_info:On('select', function() + CopyToClipboard('freeaimEntity') +end) + +menu7_dev_vehicle_mode:On('change', function() + ToggleVehicleDeveloperMode() +end) + +menu7_dev_noclip:On('change', function(_, _, _) + ToggleNoClip() +end) + +menu7_dev_toggle_coords:On('change', function() + ToggleShowCoordinates() +end) + +entity_view_distance:On('select', function(_, value) + SetEntityViewDistance(value) + QBCore.Functions.Notify(Lang:t('info.entity_view_distance', { distance = value })) +end) + +entity_view_vehicle:On('change', function() + ToggleEntityVehicleView() +end) + +entity_view_object:On('change', function() + ToggleEntityObjectView() +end) + +entity_view_ped:On('change', function() + ToggleEntityPedView() +end) + +--[[ + Dealer List +--]] +local function OpenDealerMenu(dealer) + local EditDealer = MenuV:CreateMenu(false, Lang:t('menu.edit_dealer') .. dealer['name'], menuLocation, 220, 20, 60, 'size-125', 'none', 'menuv') + EditDealer:ClearItems() + MenuV:OpenMenu(EditDealer) + local elements = { + [1] = { + icon = '➡️', + label = Lang:t('info.go_to') .. ' ' .. dealer['name'], + value = 'goto', + description = Lang:t('desc.dealergoto_desc') .. ' ' .. dealer['name'] + }, + [2] = { + icon = '☠', + label = Lang:t('info.remove') .. ' ' .. dealer['name'], + value = 'remove', + description = Lang:t('desc.dealerremove_desc') .. ' ' .. dealer['name'] + } + } + for _, v in ipairs(elements) do + EditDealer:AddButton({ + icon = v.icon, + label = ' ' .. v.label, + value = v.value, + description = v.description, + select = function(btn) + local values = btn.Value + if values == 'goto' then + TriggerServerEvent('QBCore:CallCommand', 'dealergoto', { dealer['name'] }) + elseif values == 'remove' then + TriggerServerEvent('QBCore:CallCommand', 'deletedealer', { dealer['name'] }) + EditDealer:Close() + menu6:Close() + end + end + }) + end +end + +menu1_dealer_list:On('Select', function(_) + menu6:ClearItems() + QBCore.Functions.TriggerCallback('test:getdealers', function(dealers) + for _, v in pairs(dealers) do + menu6:AddButton({ + label = v['name'], + value = v, + description = Lang:t('menu.dealer_name'), + select = function(btn) + local select = btn.Value + OpenDealerMenu(select) + end + }) + end + end) +end) diff --git a/resources/[core]/ui-admin/client/entity_view.lua b/resources/[core]/ui-admin/client/entity_view.lua new file mode 100644 index 0000000..9a5647b --- /dev/null +++ b/resources/[core]/ui-admin/client/entity_view.lua @@ -0,0 +1,452 @@ +local FrozenEntities = {} +local EntityViewDistance = 10 +local EntityViewEnabled = false +local EntityFreeAim = false +local EntityPedView = false +local EntityObjectView = false +local EntityVehicleView = false +local FreeAimEntity = nil + +-- Configurable values +local FreeAimInfoBoxX = 0.60 -- X-axis (0.0 being left, 1.0 being right position of the screen) +local FreeAimInfoBoxY = 0.02 -- Y-axis (0.0 being up, 1.0 being down position of the screen) +local useKph = true -- True to display KPH or false to display MPH + +local CanEntityBeUsed = function(ped) + if ped == PlayerPedId() then + return false + end + return true +end + +local RoundFloat = function(number, num) + return math.floor(number * math.pow(10, num) + 0.5) / math.pow(10, num) +end + +local RoundVector3 = function(vector, num) + return 'vector3(' .. RoundFloat(vector.x, num) .. ', ' .. RoundFloat(vector.y, num) .. ', ' .. RoundFloat(vector.z, num) .. ')' +end + + +local RelationshipTypes = { ['0'] = 'Companion', ['1'] = 'Respect', ['2'] = 'Like', ['3'] = 'Neutral', ['4'] = 'Dislike', ['5'] = 'Hate', ['255'] = 'Pedestrians' } +local GetPedRelationshipType = function(value) + value = tostring(value) + return RelationshipTypes[value] or 'Unknown' +end + +local DrawTitle = function(text) + SetTextScale(0.50, 0.50) + SetTextFont(4) + SetTextDropshadow(1.0, 0, 0, 0, 255) + SetTextColour(255, 255, 255, 215) + SetTextJustification(0) + BeginTextCommandDisplayText('STRING') + AddTextComponentSubstringPlayerName(text) + EndTextCommandDisplayText(0.5, 0.02) +end + +local RotationToDirection = function(rotation) + local adjustedRotation = { + x = (math.pi / 180) * rotation.x, + y = (math.pi / 180) * rotation.y, + z = (math.pi / 180) * rotation.z + } + local direction = { + x = -math.sin(adjustedRotation.z) * math.abs(math.cos(adjustedRotation.x)), + y = math.cos(adjustedRotation.z) * math.abs(math.cos(adjustedRotation.x)), + z = math.sin(adjustedRotation.x) + } + return direction +end + +local RayCastGamePlayCamera = function(distance) + -- Checks to see if the Gameplay Cam is Rendering or another is rendering (no clip functionality) + local currentRenderingCam = false + if not IsGameplayCamRendering() then + currentRenderingCam = GetRenderingCam() + end + + local cameraRotation = not currentRenderingCam and GetGameplayCamRot() or GetCamRot(currentRenderingCam, 2) + local cameraCoord = not currentRenderingCam and GetGameplayCamCoord() or GetCamCoord(currentRenderingCam) + local direction = RotationToDirection(cameraRotation) + local destination = { + x = cameraCoord.x + direction.x * distance, + y = cameraCoord.y + direction.y * distance, + z = cameraCoord.z + direction.z * distance + } + local _, b, c, _, e = GetShapeTestResult(StartShapeTestRay(cameraCoord.x, cameraCoord.y, cameraCoord.z, destination.x, destination.y, destination.z, -1, PlayerPedId(), 0)) + return b, c, e +end + +local DrawEntityBoundingBox = function(entity, color) + local model = GetEntityModel(entity) + local min, max = GetModelDimensions(model) + local rightVector, forwardVector, upVector, position = GetEntityMatrix(entity) + + -- Calculate size + local dim = { + x = 0.5 * (max.x - min.x), + y = 0.5 * (max.y - min.y), + z = 0.5 * (max.z - min.z) + } + + local FUR = { + x = position.x + dim.y * rightVector.x + dim.x * forwardVector.x + dim.z * upVector.x, + y = position.y + dim.y * rightVector.y + dim.x * forwardVector.y + dim.z * upVector.y, + z = 0 + } + + local _, FUR_z = GetGroundZFor_3dCoord(FUR.x, FUR.y, 1000.0, 0) + FUR.z = FUR_z + FUR.z = FUR.z + 2 * dim.z + + local BLL = { + x = position.x - dim.y * rightVector.x - dim.x * forwardVector.x - dim.z * upVector.x, + y = position.y - dim.y * rightVector.y - dim.x * forwardVector.y - dim.z * upVector.y, + z = 0 + } + local _, BLL_z = GetGroundZFor_3dCoord(FUR.x, FUR.y, 1000.0, 0) + BLL.z = BLL_z + + -- DEBUG + local edge1 = BLL + local edge5 = FUR + + local edge2 = { + x = edge1.x + 2 * dim.y * rightVector.x, + y = edge1.y + 2 * dim.y * rightVector.y, + z = edge1.z + 2 * dim.y * rightVector.z + } + + local edge3 = { + x = edge2.x + 2 * dim.z * upVector.x, + y = edge2.y + 2 * dim.z * upVector.y, + z = edge2.z + 2 * dim.z * upVector.z + } + + local edge4 = { + x = edge1.x + 2 * dim.z * upVector.x, + y = edge1.y + 2 * dim.z * upVector.y, + z = edge1.z + 2 * dim.z * upVector.z + } + + local edge6 = { + x = edge5.x - 2 * dim.y * rightVector.x, + y = edge5.y - 2 * dim.y * rightVector.y, + z = edge5.z - 2 * dim.y * rightVector.z + } + + local edge7 = { + x = edge6.x - 2 * dim.z * upVector.x, + y = edge6.y - 2 * dim.z * upVector.y, + z = edge6.z - 2 * dim.z * upVector.z + } + + local edge8 = { + x = edge5.x - 2 * dim.z * upVector.x, + y = edge5.y - 2 * dim.z * upVector.y, + z = edge5.z - 2 * dim.z * upVector.z + } + color = (color == nil and { r = 255, g = 255, b = 255, a = 255 } or color) + DrawLine(edge1.x, edge1.y, edge1.z, edge2.x, edge2.y, edge2.z, color.r, color.g, color.b, color.a) + DrawLine(edge1.x, edge1.y, edge1.z, edge4.x, edge4.y, edge4.z, color.r, color.g, color.b, color.a) + DrawLine(edge2.x, edge2.y, edge2.z, edge3.x, edge3.y, edge3.z, color.r, color.g, color.b, color.a) + DrawLine(edge3.x, edge3.y, edge3.z, edge4.x, edge4.y, edge4.z, color.r, color.g, color.b, color.a) + DrawLine(edge5.x, edge5.y, edge5.z, edge6.x, edge6.y, edge6.z, color.r, color.g, color.b, color.a) + DrawLine(edge5.x, edge5.y, edge5.z, edge8.x, edge8.y, edge8.z, color.r, color.g, color.b, color.a) + DrawLine(edge6.x, edge6.y, edge6.z, edge7.x, edge7.y, edge7.z, color.r, color.g, color.b, color.a) + DrawLine(edge7.x, edge7.y, edge7.z, edge8.x, edge8.y, edge8.z, color.r, color.g, color.b, color.a) + DrawLine(edge1.x, edge1.y, edge1.z, edge7.x, edge7.y, edge7.z, color.r, color.g, color.b, color.a) + DrawLine(edge2.x, edge2.y, edge2.z, edge8.x, edge8.y, edge8.z, color.r, color.g, color.b, color.a) + DrawLine(edge3.x, edge3.y, edge3.z, edge5.x, edge5.y, edge5.z, color.r, color.g, color.b, color.a) + DrawLine(edge4.x, edge4.y, edge4.z, edge6.x, edge6.y, edge6.z, color.r, color.g, color.b, color.a) +end + +local GetEntityInfo = function(entity) + local playerCoords = GetEntityCoords(PlayerPedId()) + local entityType = GetEntityType(entity) + local entityHash = GetEntityModel(entity) + local entityName = Entities[entityHash] or Lang:t('info.obj_unknown') + local entityData = { '~y~' .. Lang:t('info.entity_view_info'), '', Lang:t('info.model_hash') .. ' ~y~' .. entityHash, ' ', Lang:t('info.ent_id') .. ' ~y~' .. entity, Lang:t('info.obj_name') .. ' ~y~' .. entityName, Lang:t('info.net_id') .. ' ~y~' .. (NetworkGetEntityIsNetworked(entity) and NetworkGetNetworkIdFromEntity(entity) or Lang:t('info.net_id_not_registered')), Lang:t('info.ent_owner') .. ' ~y~' .. GetPlayerServerId(NetworkGetEntityOwner(entity)), ' ' } + + if entityType == 1 then + local pedRelationshipGroup = GetPedRelationshipGroupHash(entity) + entityData[#entityData + 1] = Lang:t('info.cur_health') .. ' ~y~' .. GetEntityHealth(entity) + entityData[#entityData + 1] = Lang:t('info.max_health') .. ' ~y~' .. GetPedMaxHealth(entity) + entityData[#entityData + 1] = Lang:t('info.armour') .. ' ~y~' .. GetPedArmour(entity) + entityData[#entityData + 1] = Lang:t('info.rel_group') .. ' ~y~' .. (Entities[pedRelationshipGroup] or Lang:t('info.rel_group_custom')) + entityData[#entityData + 1] = Lang:t('info.rel_to_player') .. ' ~y~' .. GetPedRelationshipType(GetRelationshipBetweenPeds(entity, PlayerPedId())) + elseif entityType == 2 then + entityData[#entityData + 1] = Lang:t('info.veh_rpm') .. ' ~y~' .. RoundFloat(GetVehicleCurrentRpm(entity), 2) + entityData[#entityData + 1] = (useKph and Lang:t('info.veh_speed_kph') or Lang:t('info.veh_speed_mph')) .. ' ~y~' .. RoundFloat((GetEntitySpeed(entity) * (useKph and 3.6 or 2.23694)), 0) + entityData[#entityData + 1] = Lang:t('info.veh_cur_gear') .. ' ~y~' .. GetVehicleCurrentGear(entity) + entityData[#entityData + 1] = Lang:t('info.veh_acceleration') .. ' ~y~' .. RoundFloat(GetVehicleAcceleration(entity), 2) + entityData[#entityData + 1] = Lang:t('info.body_health') .. ' ~y~' .. GetVehicleBodyHealth(entity) + entityData[#entityData + 1] = Lang:t('info.eng_health') .. ' ~y~' .. GetVehicleEngineHealth(entity) + elseif entityType == 3 then + entityData[#entityData + 1] = Lang:t('info.cur_health') .. ' ~y~' .. GetEntityHealth(entity) + end + local entityCoords = GetEntityCoords(entity) + + entityData[#entityData + 1] = ' ' + entityData[#entityData + 1] = Lang:t('info.dist_to_obj') .. ' ~y~' .. RoundFloat(#(playerCoords - entityCoords), 2) + entityData[#entityData + 1] = Lang:t('info.obj_heading') .. ' ~y~' .. RoundFloat(GetEntityHeading(entity), 2) + entityData[#entityData + 1] = Lang:t('info.obj_coords') .. ' ~y~' .. RoundVector3(entityCoords, 2) + entityData[#entityData + 1] = Lang:t('info.obj_rot') .. ' ~y~' .. RoundVector3(GetEntityRotation(entity), 2) + entityData[#entityData + 1] = Lang:t('info.obj_velocity') .. ' ~y~' .. RoundVector3(GetEntityVelocity(entity), 2) + + return entityData +end + +local DrawEntityViewText = function(entity) + local data = GetEntityInfo(entity) + local count = #data + + local posX = FreeAimInfoBoxX + local posY = FreeAimInfoBoxY + local titleSpacing = 0.03 + local textSpacing = 0.022 + local titeLeftMargin = 0.05 + local paddingTop = 0.02 + local paddingLeft = 0.005 + local rectWidth = 0.18 + local heightOfContent = (((count) * textSpacing) + titleSpacing) / count + local rectHeight = ((count - 1) * heightOfContent) + paddingTop + + DrawRect(posX + (rectWidth / 2), posY + ((rectHeight / 2) - posY / 2), rectWidth, rectHeight, 11, 11, 11, 200) + + for k, v in ipairs(data) do + SetTextScale(0.35, 0.35) + SetTextFont(4) + SetTextDropshadow(1.0, 0, 0, 0, 255) + SetTextEdge(1, 0, 0, 0, 255) + SetTextColour(255, 255, 255, 215) + SetTextJustification(1) + BeginTextCommandDisplayText('STRING') + AddTextComponentSubstringPlayerName(v) + if k == 1 then + SetTextScale(0.50, 0.50) + EndTextCommandDisplayText(posX + titeLeftMargin, posY) + posY = posY + titleSpacing + else + SetTextScale(0.35, 0.35) + EndTextCommandDisplayText(posX + paddingLeft, posY) + posY = posY + textSpacing + end + end +end + +local DrawEntityViewTextInWorld = function(entity, coords) + local onScreen, posX, posY = World3dToScreen2d(coords.x, coords.y, coords.z) + if onScreen then + local data = GetEntityInfo(entity) + local count = #data + local textOffsetY = 0.015 + local leftPadding = 0.005 + local topPadding = 0.01 + local botPadding = 0.02 + local offSetCount = (((count - 2) * textOffsetY)) / count + local rectWidth = 0.12 + local rectHeight = ((count) * offSetCount) + botPadding + + DrawRect(posX, posY, rectWidth, rectHeight, 11, 11, 11, 200) + + for k, v in ipairs(data) do + if k ~= 1 and k ~= 2 then + SetTextScale(0.25, 0.25) + SetTextFont(4) + SetTextDropshadow(1.0, 0, 0, 0, 255) + SetTextEdge(1, 0, 0, 0, 255) + SetTextColour(255, 255, 255, 215) + SetTextJustification(1) + BeginTextCommandDisplayText('STRING') + AddTextComponentSubstringPlayerName(v) + EndTextCommandDisplayText(posX - rectWidth / 2 + leftPadding, posY - rectHeight / 2 + topPadding) + posY = posY + textOffsetY + end + end + end +end + +local GetVehicle = function(playerCoords) + local handle, vehicle = FindFirstVehicle() + local success + local rveh = nil + repeat + if vehicle ~= FreeAimEntity then + local pos = GetEntityCoords(vehicle) + local distance = #(playerCoords - pos) + if distance < EntityViewDistance and distance > 5.0 then + DrawEntityBoundingBox(vehicle) + elseif distance < 5.0 then + rveh = vehicle + DrawEntityViewTextInWorld(vehicle, pos) + end + end + success, vehicle = FindNextVehicle(handle) + until not success + EndFindVehicle(handle) + return rveh +end + +local GetObject = function(playerCoords) + local handle, object = FindFirstObject() + local success + local robject = nil + repeat + if object ~= FreeAimEntity then + local pos = GetEntityCoords(object) + local distance = #(playerCoords - pos) + if distance < EntityViewDistance and distance > 5.0 then + DrawEntityBoundingBox(object) + elseif distance < 5.0 then + robject = object + DrawEntityViewTextInWorld(object, pos) + end + end + success, object = FindNextObject(handle) + until not success + EndFindObject(handle) + return robject +end + +local GetNPC = function(playerCoords) + local handle, ped = FindFirstPed() + local success + local rped = nil + repeat + if ped ~= FreeAimEntity then + local pos = GetEntityCoords(ped) + local distance = #(playerCoords - pos) + if CanEntityBeUsed(ped) then + if distance < EntityViewDistance and distance > 5.0 then + DrawEntityBoundingBox(ped) + elseif distance < 5.0 then + rped = ped + DrawEntityViewTextInWorld(ped, pos) + end + end + end + success, ped = FindNextPed(handle) + until not success + EndFindPed(handle) + return rped +end + +ToggleEntityFreeView = function() + EntityFreeAim = not EntityFreeAim + if EntityFreeAim and not EntityViewEnabled then + RunEntityViewThread() + end +end + +ToggleEntityObjectView = function() + EntityObjectView = not EntityObjectView + if EntityObjectView and not EntityViewEnabled then + RunEntityViewThread() + end +end + +ToggleEntityVehicleView = function() + EntityVehicleView = not EntityVehicleView + if EntityVehicleView and not EntityViewEnabled then + RunEntityViewThread() + end +end + +ToggleEntityPedView = function() + EntityPedView = not EntityPedView + if EntityPedView and not EntityViewEnabled then + RunEntityViewThread() + end +end + +GetCurrentEntityViewDistance = function() + return EntityViewDistance / 5 +end + +SetEntityViewDistance = function(data) + EntityViewDistance = tonumber(data) +end + +GetFreeAimEntity = function() + return FreeAimEntity +end + +RunEntityViewThread = function() + EntityViewEnabled = true + Citizen.CreateThread(function() + while EntityViewEnabled do + Citizen.Wait(0) + local playerPed = PlayerPedId() + local playerCoords = GetEntityCoords(playerPed) + + if EntityPedView then + GetNPC(playerCoords) + end + + if EntityObjectView then + GetObject(playerCoords) + end + + if EntityVehicleView then + GetVehicle(playerCoords) + end + + if EntityFreeAim then + DrawTitle('~y~' .. Lang:t('info.entity_view_title') .. '~w~\n[~y~E~w~] - ' .. Lang:t('info.entity_freeaim_delete') .. ' ~w~[~y~G~w~] - ' .. Lang:t('info.entity_freeaim_freeze') .. ' ~w~[~y~H~w~] - ' .. Lang:t('info.entity_freeaim_coords')) + local color = { r = 255, g = 255, b = 255, a = 200 } + local position = GetEntityCoords(playerPed) + local hit, coords, entity = RayCastGamePlayCamera(1000.0) + -- If entity is found then verify entity + if IsControlJustReleased(0, 74) then -- Copy Coords + local x = QBCore.Shared.Round(coords.x, 2) + local y = QBCore.Shared.Round(coords.y, 2) + local z = QBCore.Shared.Round(coords.z, 2) + SendNUIMessage({ + string = string.format('vector3(%s, %s, %s)', x, y, z) + }) + QBCore.Functions.Notify(Lang:t('info.coords_copied'), 'success') + end + if hit and (IsEntityAVehicle(entity) or IsEntityAPed(entity) or IsEntityAnObject(entity)) then + color = { r = 0, g = 255, b = 0, a = 200 } + FreeAimEntity = entity + DrawEntityBoundingBox(entity, color) + DrawEntityViewText(entity) + + if IsControlJustReleased(0, 47) then -- Freeze entities + if FrozenEntities[entity] then + FrozenEntities[entity] = not FrozenEntities[entity] + else + FrozenEntities[entity] = true + end + + FreezeEntityPosition(entity, FrozenEntities[entity]) + QBCore.Functions.Notify(Lang:t('info.you_have') .. (FrozenEntities[entity] and Lang:t('info.entity_frozen') or Lang:t('info.entity_unfrozen')) .. Lang:t('info.freeaim_entity'), (FrozenEntities[entity] and 'success' or 'error')) + end + + if IsControlJustReleased(0, 38) then -- Delete entity + -- Set as missionEntity so the object can be remove (Even map objects) + SetEntityAsMissionEntity(entity, true, true) + DeleteEntity(entity) + + if not DoesEntityExist(entity) then + QBCore.Functions.Notify(Lang:t('info.entity_del'), 'success') + else + QBCore.Functions.Notify(Lang:t('info.entity_del_error'), 'error') + end + end + else + FreeAimEntity = nil + end + + DrawLine(position.x, position.y, position.z, coords.x, coords.y, coords.z, color.r, color.g, color.b, color.a) + DrawMarker(28, coords.x, coords.y, coords.z, 0.0, 0.0, 0.0, 0.0, 180.0, 0.0, 0.1, 0.1, 0.1, color.r, color.g, color.b, color.a, false, true, 2, nil, nil, false, false) + end + + if EntityPedView == false and EntityObjectView == false and EntityVehicleView == false and EntityFreeAim == false then + EntityViewEnabled = false + end + end + end) +end diff --git a/resources/[core]/ui-admin/client/events.lua b/resources/[core]/ui-admin/client/events.lua new file mode 100644 index 0000000..fd15232 --- /dev/null +++ b/resources/[core]/ui-admin/client/events.lua @@ -0,0 +1,162 @@ +-- Variables + +local blockedPeds = { + 'mp_m_freemode_01', + 'mp_f_freemode_01', + 'tony', + 'g_m_m_chigoon_02_m', + 'u_m_m_jesus_01', + 'a_m_y_stbla_m', + 'ig_terry_m', + 'a_m_m_ktown_m', + 'a_m_y_skater_m', + 'u_m_y_coop', + 'ig_car3guy1_m', +} + +local lastSpectateCoord = nil +local isSpectating = false + +-- Events + +RegisterNetEvent('qb-admin:client:spectate', function(targetPed) + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + local myPed = PlayerPedId() + local targetplayer = GetPlayerFromServerId(targetPed) + local target = GetPlayerPed(targetplayer) + if not isSpectating then + isSpectating = true + SetEntityVisible(myPed, false) -- Set invisible + SetEntityCollision(myPed, false, false) -- Set collision + SetEntityInvincible(myPed, true) -- Set invincible + NetworkSetEntityInvisibleToNetwork(myPed, true) -- Set invisibility + lastSpectateCoord = GetEntityCoords(myPed) -- save my last coords + NetworkSetInSpectatorMode(true, target) -- Enter Spectate Mode + else + isSpectating = false + NetworkSetInSpectatorMode(false, target) -- Remove From Spectate Mode + NetworkSetEntityInvisibleToNetwork(myPed, false) -- Set Visible + SetEntityCollision(myPed, true, true) -- Set collision + SetEntityCoords(myPed, lastSpectateCoord) -- Return Me To My Coords + SetEntityVisible(myPed, true) -- Remove invisible + SetEntityInvincible(myPed, false) -- Remove godmode + lastSpectateCoord = nil -- Reset Last Saved Coords + end + end) +end) + +RegisterNetEvent('qb-admin:client:SendReport', function(name, src, msg) + TriggerServerEvent('qb-admin:server:SendReport', name, src, msg) +end) + +local function getVehicleFromVehList(hash) + for _, v in pairs(QBCore.Shared.Vehicles) do + if hash == v.hash then + return v.model + end + end +end + + + +RegisterNetEvent('qb-admin:client:SaveCar', function() + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + local ped = PlayerPedId() + local veh = GetVehiclePedIsIn(ped) + + if veh ~= nil and veh ~= 0 then + local plate = QBCore.Functions.GetPlate(veh) + local props = QBCore.Functions.GetVehicleProperties(veh) + local hash = props.model + local vehname = getVehicleFromVehList(hash) + if QBCore.Shared.Vehicles[vehname] ~= nil and next(QBCore.Shared.Vehicles[vehname]) ~= nil then + TriggerServerEvent('qb-admin:server:SaveCar', props, QBCore.Shared.Vehicles[vehname], GetHashKey(veh), plate) + else + QBCore.Functions.Notify(Lang:t('error.no_store_vehicle_garage'), 'error') + end + else + QBCore.Functions.Notify(Lang:t('error.no_vehicle'), 'error') + end + end) +end) + +local function LoadPlayerModel(skin) + RequestModel(skin) + while not HasModelLoaded(skin) do + Wait(0) + end +end + +local function isPedAllowedRandom(skin) + local retval = false + for _, v in pairs(blockedPeds) do + if v ~= skin then + retval = true + end + end + return retval +end + +RegisterNetEvent('qb-admin:client:SetModel', function(skin) + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + local ped = PlayerPedId() + local model = GetHashKey(skin) + SetEntityInvincible(ped, true) + + if IsModelInCdimage(model) and IsModelValid(model) then + LoadPlayerModel(model) + SetPlayerModel(PlayerId(), model) + + if isPedAllowedRandom(skin) then + SetPedRandomComponentVariation(ped, true) + end + + SetModelAsNoLongerNeeded(model) + end + SetEntityInvincible(ped, false) + end) +end) + +RegisterNetEvent('qb-admin:client:SetSpeed', function(speed) + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + local ped = PlayerId() + if speed == 'fast' then + SetRunSprintMultiplierForPlayer(ped, 1.49) + SetSwimMultiplierForPlayer(ped, 1.49) + else + SetRunSprintMultiplierForPlayer(ped, 1.0) + SetSwimMultiplierForPlayer(ped, 1.0) + end + end) +end) + +RegisterNetEvent('qb-admin:client:GiveNuiFocus', function(focus, mouse) + SetNuiFocus(focus, mouse) +end) + +local performanceModIndices = { 11, 12, 13, 15, 16 } +function PerformanceUpgradeVehicle(vehicle, customWheels) + customWheels = customWheels or false + local max + if DoesEntityExist(vehicle) and IsEntityAVehicle(vehicle) then + SetVehicleModKit(vehicle, 0) + for _, modType in ipairs(performanceModIndices) do + max = GetNumVehicleMods(vehicle, tonumber(modType)) - 1 + SetVehicleMod(vehicle, modType, max, customWheels) + end + ToggleVehicleMod(vehicle, 18, true) -- Turbo + SetVehicleFixed(vehicle) + end +end + +RegisterNetEvent('qb-admin:client:maxmodVehicle', function() + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + local vehicle = GetVehiclePedIsIn(PlayerPedId()) + PerformanceUpgradeVehicle(vehicle) + end) +end) diff --git a/resources/[core]/ui-admin/client/noclip.lua b/resources/[core]/ui-admin/client/noclip.lua new file mode 100644 index 0000000..676c045 --- /dev/null +++ b/resources/[core]/ui-admin/client/noclip.lua @@ -0,0 +1,290 @@ +local IsNoClipping = false +local PlayerPed = nil +local NoClipEntity = nil +local Camera = nil +local NoClipAlpha = nil +local PlayerIsInVehicle = false +local ResourceName = GetCurrentResourceName() + +local MinY, MaxY = -89.0, 89.0 + +--[[ + Configurable values are commented. +]] + +-- Perspective values +local PedFirstPersonNoClip = true -- No Clip in first person when not in a vehicle +local VehFirstPersonNoClip = false -- No Clip in first person when in a vehicle +local ESCEnable = false -- Access Map during NoClip + +-- Speed settings +local Speed = 1 -- Default: 1 +local MaxSpeed = 16.0 -- Default: 16.0 + +-- Key bindings +local MOVE_FORWARDS = 32 -- Default: W +local MOVE_BACKWARDS = 33 -- Default: S +local MOVE_LEFT = 34 -- Default: A +local MOVE_RIGHT = 35 -- Default: D +local MOVE_UP = 44 -- Default: Q +local MOVE_DOWN = 46 -- Default: E + +local SPEED_DECREASE = 14 -- Default: Mouse wheel down +local SPEED_INCREASE = 15 -- Default: Mouse wheel up +local SPEED_RESET = 348 -- Default: Mouse wheel click +local SPEED_SLOW_MODIFIER = 36 -- Default: Left Control +local SPEED_FAST_MODIFIER = 21 -- Default: Left Shift +local SPEED_FASTER_MODIFIER = 19 -- Default: Left Alt + + +local DisabledControls = function() + HudWeaponWheelIgnoreSelection() + DisableAllControlActions(0) + DisableAllControlActions(1) + DisableAllControlActions(2) + EnableControlAction(0, 220, true) + EnableControlAction(0, 221, true) + EnableControlAction(0, 245, true) + if ESCEnable then + EnableControlAction(0, 200, true) + end +end + +local IsControlAlwaysPressed = function(inputGroup, control) + return IsControlPressed(inputGroup, control) or IsDisabledControlPressed(inputGroup, control) +end + +local IsPedDrivingVehicle = function(ped, veh) + return ped == GetPedInVehicleSeat(veh, -1) +end + +local SetupCam = function() + local entityRot = GetEntityRotation(NoClipEntity) + Camera = CreateCameraWithParams('DEFAULT_SCRIPTED_CAMERA', GetEntityCoords(NoClipEntity), vector3(0.0, 0.0, entityRot.z), 75.0) + SetCamActive(Camera, true) + RenderScriptCams(true, true, 1000, false, false) + + if PlayerIsInVehicle == 1 then + AttachCamToEntity(Camera, NoClipEntity, 0.0, VehFirstPersonNoClip == true and 0.5 or -4.5, VehFirstPersonNoClip == true and 1.0 or 2.0, true) + else + AttachCamToEntity(Camera, NoClipEntity, 0.0, PedFirstPersonNoClip == true and 0.0 or -2.0, PedFirstPersonNoClip == true and 1.0 or 0.5, true) + end +end + +local DestroyCamera = function() + SetGameplayCamRelativeHeading(0) + RenderScriptCams(false, true, 1000, true, true) + DetachEntity(NoClipEntity, true, true) + SetCamActive(Camera, false) + DestroyCam(Camera, true) +end + +local GetGroundCoords = function(coords) + local rayCast = StartShapeTestRay(coords.x, coords.y, coords.z, coords.x, coords.y, -10000.0, 1, 0) + local _, hit, hitCoords = GetShapeTestResult(rayCast) + return (hit == 1 and hitCoords) or coords +end + +local CheckInputRotation = function() + local rightAxisX = GetControlNormal(0, 220) + local rightAxisY = GetControlNormal(0, 221) + + local rotation = GetCamRot(Camera, 2) + + local yValue = rightAxisY * -5 + local newX + local newZ = rotation.z + (rightAxisX * -10) + if (rotation.x + yValue > MinY) and (rotation.x + yValue < MaxY) then + newX = rotation.x + yValue + end + if newX ~= nil and newZ ~= nil then + SetCamRot(Camera, vector3(newX, rotation.y, newZ), 2) + end + + SetEntityHeading(NoClipEntity, math.max(0, (rotation.z % 360))) +end + +RunNoClipThread = function() + Citizen.CreateThread(function() + while IsNoClipping do + Citizen.Wait(0) + CheckInputRotation() + DisabledControls() + + if IsControlAlwaysPressed(2, SPEED_DECREASE) then + Speed = Speed - 0.5 + if Speed < 0.5 then + Speed = 0.5 + end + elseif IsControlAlwaysPressed(2, SPEED_INCREASE) then + Speed = Speed + 0.5 + if Speed > MaxSpeed then + Speed = MaxSpeed + end + elseif IsDisabledControlJustReleased(0, SPEED_RESET) then + Speed = 1 + end + + local multi = 1.0 + if IsControlAlwaysPressed(0, SPEED_FAST_MODIFIER) then + multi = 2 + elseif IsControlAlwaysPressed(0, SPEED_FASTER_MODIFIER) then + multi = 4 + elseif IsControlAlwaysPressed(0, SPEED_SLOW_MODIFIER) then + multi = 0.25 + end + + if IsControlAlwaysPressed(0, MOVE_FORWARDS) then + local pitch = GetCamRot(Camera, 0) + + if pitch.x >= 0 then + SetEntityCoordsNoOffset(NoClipEntity, GetOffsetFromEntityInWorldCoords(NoClipEntity, 0.0, 0.5 * (Speed * multi), (pitch.x * ((Speed / 2) * multi)) / 89)) + else + SetEntityCoordsNoOffset(NoClipEntity, GetOffsetFromEntityInWorldCoords(NoClipEntity, 0.0, 0.5 * (Speed * multi), -1 * ((math.abs(pitch.x) * ((Speed / 2) * multi)) / 89))) + end + elseif IsControlAlwaysPressed(0, MOVE_BACKWARDS) then + local pitch = GetCamRot(Camera, 2) + + if pitch.x >= 0 then + SetEntityCoordsNoOffset(NoClipEntity, GetOffsetFromEntityInWorldCoords(NoClipEntity, 0.0, -0.5 * (Speed * multi), -1 * (pitch.x * ((Speed / 2) * multi)) / 89)) + else + SetEntityCoordsNoOffset(NoClipEntity, GetOffsetFromEntityInWorldCoords(NoClipEntity, 0.0, -0.5 * (Speed * multi), ((math.abs(pitch.x) * ((Speed / 2) * multi)) / 89))) + end + end + + if IsControlAlwaysPressed(0, MOVE_LEFT) then + SetEntityCoordsNoOffset(NoClipEntity, GetOffsetFromEntityInWorldCoords(NoClipEntity, -0.5 * (Speed * multi), 0.0, 0.0)) + elseif IsControlAlwaysPressed(0, MOVE_RIGHT) then + SetEntityCoordsNoOffset(NoClipEntity, GetOffsetFromEntityInWorldCoords(NoClipEntity, 0.5 * (Speed * multi), 0.0, 0.0)) + end + + if IsControlAlwaysPressed(0, MOVE_UP) then + SetEntityCoordsNoOffset(NoClipEntity, GetOffsetFromEntityInWorldCoords(NoClipEntity, 0.0, 0.0, 0.5 * (Speed * multi))) + elseif IsControlAlwaysPressed(0, MOVE_DOWN) then + SetEntityCoordsNoOffset(NoClipEntity, GetOffsetFromEntityInWorldCoords(NoClipEntity, 0.0, 0.0, -0.5 * (Speed * multi))) + end + + local coords = GetEntityCoords(NoClipEntity) + + RequestCollisionAtCoord(coords.x, coords.y, coords.z) + + FreezeEntityPosition(NoClipEntity, true) + SetEntityCollision(NoClipEntity, false, false) + SetEntityVisible(NoClipEntity, false, false) + SetEntityInvincible(NoClipEntity, true) + SetLocalPlayerVisibleLocally(true) + SetEntityAlpha(NoClipEntity, NoClipAlpha, false) + if PlayerIsInVehicle == 1 then + SetEntityAlpha(PlayerPed, NoClipAlpha, false) + end + SetEveryoneIgnorePlayer(PlayerPed, true) + SetPoliceIgnorePlayer(PlayerPed, true) + end + StopNoClip() + end) +end + +StopNoClip = function() + FreezeEntityPosition(NoClipEntity, false) + SetEntityCollision(NoClipEntity, true, true) + SetEntityVisible(NoClipEntity, true, false) + SetLocalPlayerVisibleLocally(true) + ResetEntityAlpha(NoClipEntity) + ResetEntityAlpha(PlayerPed) + SetEveryoneIgnorePlayer(PlayerPed, false) + SetPoliceIgnorePlayer(PlayerPed, false) + ResetEntityAlpha(NoClipEntity) + SetPoliceIgnorePlayer(PlayerPed, true) + + if GetVehiclePedIsIn(PlayerPed, false) ~= 0 then + while (not IsVehicleOnAllWheels(NoClipEntity)) and not IsNoClipping do + Wait(0) + end + while not IsNoClipping do + Wait(0) + if IsVehicleOnAllWheels(NoClipEntity) then + return SetEntityInvincible(NoClipEntity, false) + end + end + else + if (IsPedFalling(NoClipEntity) and math.abs(1 - GetEntityHeightAboveGround(NoClipEntity)) > 1.00) then + while (IsPedStopped(NoClipEntity) or not IsPedFalling(NoClipEntity)) and not IsNoClipping do + Wait(0) + end + end + while not IsNoClipping do + Wait(0) + if (not IsPedFalling(NoClipEntity)) and (not IsPedRagdoll(NoClipEntity)) then + return SetEntityInvincible(NoClipEntity, false) + end + end + end +end + +ToggleNoClip = function(state) + IsNoClipping = state or not IsNoClipping + PlayerPed = PlayerPedId() + PlayerIsInVehicle = IsPedInAnyVehicle(PlayerPed, false) + if PlayerIsInVehicle ~= 0 and IsPedDrivingVehicle(PlayerPed, GetVehiclePedIsIn(PlayerPed, false)) then + NoClipEntity = GetVehiclePedIsIn(PlayerPed, false) + SetVehicleEngineOn(NoClipEntity, not IsNoClipping, true, IsNoClipping) + NoClipAlpha = PedFirstPersonNoClip == true and 0 or 51 + else + NoClipEntity = PlayerPed + NoClipAlpha = VehFirstPersonNoClip == true and 0 or 51 + end + + if IsNoClipping then + FreezeEntityPosition(PlayerPed) + SetupCam() + PlaySoundFromEntity(-1, 'SELECT', PlayerPed, 'HUD_LIQUOR_STORE_SOUNDSET', 0, 0) + + if not PlayerIsInVehicle then + ClearPedTasksImmediately(PlayerPed) + if PedFirstPersonNoClip then + Citizen.Wait(1000) -- Wait for the cinematic effect of the camera transitioning into first person + end + else + if VehFirstPersonNoClip then + Citizen.Wait(1000) -- Wait for the cinematic effect of the camera transitioning into first person + end + end + else + local groundCoords = GetGroundCoords(GetEntityCoords(NoClipEntity)) + SetEntityCoords(NoClipEntity, groundCoords.x, groundCoords.y, groundCoords.z) + Citizen.Wait(50) + DestroyCamera() + PlaySoundFromEntity(-1, 'CANCEL', PlayerPed, 'HUD_LIQUOR_STORE_SOUNDSET', 0, 0) + end + + QBCore.Functions.Notify(IsNoClipping and Lang:t('success.noclip_enabled') or Lang:t('success.noclip_disabled')) + SetUserRadioControlEnabled(not IsNoClipping) + + if IsNoClipping then + RunNoClipThread() + end +end + +RegisterNetEvent('qb-admin:client:ToggleNoClip', function() + QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin) + if not isAdmin then return end + ToggleNoClip(not IsNoClipping) + end) +end) + +AddEventHandler('onResourceStop', function(resourceName) + if resourceName == ResourceName then + FreezeEntityPosition(NoClipEntity, false) + FreezeEntityPosition(PlayerPed, false) + SetEntityCollision(NoClipEntity, true, true) + SetEntityVisible(NoClipEntity, true, false) + SetLocalPlayerVisibleLocally(true) + ResetEntityAlpha(NoClipEntity) + ResetEntityAlpha(PlayerPed) + SetEveryoneIgnorePlayer(PlayerPed, false) + SetPoliceIgnorePlayer(PlayerPed, false) + ResetEntityAlpha(NoClipEntity) + SetPoliceIgnorePlayer(PlayerPed, true) + SetEntityInvincible(NoClipEntity, false) + end +end) diff --git a/resources/[core]/ui-admin/entityhashes/entity.lua b/resources/[core]/ui-admin/entityhashes/entity.lua new file mode 100644 index 0000000..edc41a4 --- /dev/null +++ b/resources/[core]/ui-admin/entityhashes/entity.lua @@ -0,0 +1,53901 @@ +Entities = { + [-1267889684] = '02gate3_l', + [-832573324] = 'a_c_boar', + [1462895032] = 'a_c_cat_01', + [-1430839454] = 'a_c_chickenhawk', + [-1469565163] = 'a_c_chimp', + [351016938] = 'a_c_chop', + [1457690978] = 'a_c_cormorant', + [-50684386] = 'a_c_cow', + [1682622302] = 'a_c_coyote', + [402729631] = 'a_c_crow', + [-664053099] = 'a_c_deer', + [-1950698411] = 'a_c_dolphin', + [802685111] = 'a_c_fish', + [1794449327] = 'a_c_hen', + [1193010354] = 'a_c_humpback', + [1318032802] = 'a_c_husky', + [-1920284487] = 'a_c_killerwhale', + [307287994] = 'a_c_mtlion', + [-1323586730] = 'a_c_pig', + [111281960] = 'a_c_pigeon', + [1125994524] = 'a_c_poodle', + [1832265812] = 'a_c_pug', + [-541762431] = 'a_c_rabbit_01', + [-1011537562] = 'a_c_rat', + [882848737] = 'a_c_retriever', + [-1026527405] = 'a_c_rhesus', + [-1788665315] = 'a_c_rottweiler', + [-745300483] = 'a_c_seagull', + [1015224100] = 'a_c_sharkhammer', + [113504370] = 'a_c_sharktiger', + [1126154828] = 'a_c_shepherd', + [-1589092019] = 'a_c_stingray', + [-1384627013] = 'a_c_westy', + [808859815] = 'a_f_m_beach_01', + [-1106743555] = 'a_f_m_bevhills_01', + [-1606864033] = 'a_f_m_bevhills_02', + [1004114196] = 'a_f_m_bodybuild_01', + [532905404] = 'a_f_m_business_02', + [1699403886] = 'a_f_m_downtown_01', + [-1656894598] = 'a_f_m_eastsa_01', + [1674107025] = 'a_f_m_eastsa_02', + [-88831029] = 'a_f_m_fatbla_01', + [-1244692252] = 'a_f_m_fatcult_01', + [951767867] = 'a_f_m_fatwhite_01', + [1388848350] = 'a_f_m_ktown_01', + [1090617681] = 'a_f_m_ktown_02', + [379310561] = 'a_f_m_prolhost_01', + [-569505431] = 'a_f_m_salton_01', + [-1332260293] = 'a_f_m_skidrow_01', + [1951946145] = 'a_f_m_soucent_01', + [-215821512] = 'a_f_m_soucent_02', + [-840346158] = 'a_f_m_soucentmc_01', + [1347814329] = 'a_f_m_tourist_01', + [1224306523] = 'a_f_m_tramp_01', + [-1935621530] = 'a_f_m_trampbeac_01', + [1640504453] = 'a_f_o_genstreet_01', + [-1160266880] = 'a_f_o_indian_01', + [1204772502] = 'a_f_o_ktown_01', + [-855671414] = 'a_f_o_salton_01', + [1039800368] = 'a_f_o_soucent_01', + [-1519524074] = 'a_f_o_soucent_02', + [-945854168] = 'a_f_y_beach_01', + [1146800212] = 'a_f_y_bevhills_01', + [1546450936] = 'a_f_y_bevhills_02', + [549978415] = 'a_f_y_bevhills_03', + [920595805] = 'a_f_y_bevhills_04', + [664399832] = 'a_f_y_business_01', + [826475330] = 'a_f_y_business_02', + [-1366884940] = 'a_f_y_business_03', + [-1211756494] = 'a_f_y_business_04', + [-173013091] = 'a_f_y_eastsa_01', + [70821038] = 'a_f_y_eastsa_02', + [1371553700] = 'a_f_y_eastsa_03', + [1755064960] = 'a_f_y_epsilon_01', + [1348537411] = 'a_f_y_femaleagent', + [1165780219] = 'a_f_y_fitness_01', + [331645324] = 'a_f_y_fitness_02', + [793439294] = 'a_f_y_genhot_01', + [2111372120] = 'a_f_y_golfer_01', + [813893651] = 'a_f_y_hiker_01', + [343259175] = 'a_f_y_hippie_01', + [-2109222095] = 'a_f_y_hipster_01', + [-1745486195] = 'a_f_y_hipster_02', + [-1514497514] = 'a_f_y_hipster_03', + [429425116] = 'a_f_y_hipster_04', + [153984193] = 'a_f_y_indian_01', + [-619494093] = 'a_f_y_juggalo_01', + [-951490775] = 'a_f_y_runner_01', + [1064866854] = 'a_f_y_rurmeth_01', + [-614546432] = 'a_f_y_scdressy_01', + [1767892582] = 'a_f_y_skater_01', + [744758650] = 'a_f_y_soucent_01', + [1519319503] = 'a_f_y_soucent_02', + [-2018356203] = 'a_f_y_soucent_03', + [1426880966] = 'a_f_y_tennis_01', + [-1661836925] = 'a_f_y_topless_01', + [1446741360] = 'a_f_y_tourist_01', + [-1859912896] = 'a_f_y_tourist_02', + [435429221] = 'a_f_y_vinewood_01', + [-625565461] = 'a_f_y_vinewood_02', + [933092024] = 'a_f_y_vinewood_03', + [-85696186] = 'a_f_y_vinewood_04', + [-1004861906] = 'a_f_y_yoga_01', + [1413662315] = 'a_m_m_acult_01', + [-781039234] = 'a_m_m_afriamer_01', + [1077785853] = 'a_m_m_beach_01', + [2021631368] = 'a_m_m_beach_02', + [1423699487] = 'a_m_m_bevhills_01', + [1068876755] = 'a_m_m_bevhills_02', + [2120901815] = 'a_m_m_business_01', + [-106498753] = 'a_m_m_eastsa_01', + [131961260] = 'a_m_m_eastsa_02', + [-1806291497] = 'a_m_m_farmer_01', + [1641152947] = 'a_m_m_fatlatin_01', + [115168927] = 'a_m_m_genfat_01', + [330231874] = 'a_m_m_genfat_02', + [-1444213182] = 'a_m_m_golfer_01', + [1809430156] = 'a_m_m_hasjew_01', + [1822107721] = 'a_m_m_hillbilly_01', + [2064532783] = 'a_m_m_hillbilly_02', + [-573920724] = 'a_m_m_indian_01', + [-782401935] = 'a_m_m_ktown_01', + [803106487] = 'a_m_m_malibu_01', + [-578715987] = 'a_m_m_mexcntry_01', + [-1302522190] = 'a_m_m_mexlabor_01', + [1746653202] = 'a_m_m_og_boss_01', + [-322270187] = 'a_m_m_paparazzi_01', + [-1445349730] = 'a_m_m_polynesian_01', + [-1760377969] = 'a_m_m_prolhost_01', + [1001210244] = 'a_m_m_rurmeth_01', + [1328415626] = 'a_m_m_salton_01', + [1626646295] = 'a_m_m_salton_02', + [-1299428795] = 'a_m_m_salton_03', + [-1773858377] = 'a_m_m_salton_04', + [-640198516] = 'a_m_m_skater_01', + [32417469] = 'a_m_m_skidrow_01', + [193817059] = 'a_m_m_socenlat_01', + [1750583735] = 'a_m_m_soucent_01', + [-1620232223] = 'a_m_m_soucent_02', + [-1948675910] = 'a_m_m_soucent_03', + [-1023672578] = 'a_m_m_soucent_04', + [-1029146878] = 'a_m_m_stlat_02', + [1416254276] = 'a_m_m_tennis_01', + [-929103484] = 'a_m_m_tourist_01', + [516505552] = 'a_m_m_tramp_01', + [1404403376] = 'a_m_m_trampbeac_01', + [-521758348] = 'a_m_m_tranvest_01', + [-150026812] = 'a_m_m_tranvest_02', + [1430544400] = 'a_m_o_acult_01', + [1268862154] = 'a_m_o_acult_02', + [-2077764712] = 'a_m_o_beach_01', + [-1386944600] = 'a_m_o_genstreet_01', + [355916122] = 'a_m_o_ktown_01', + [539004493] = 'a_m_o_salton_01', + [718836251] = 'a_m_o_soucent_01', + [1082572151] = 'a_m_o_soucent_02', + [238213328] = 'a_m_o_soucent_03', + [390939205] = 'a_m_o_tramp_01', + [-1251702741] = 'a_m_y_acult_01', + [-2132435154] = 'a_m_y_acult_02', + [-771835772] = 'a_m_y_beach_01', + [600300561] = 'a_m_y_beach_02', + [-408329255] = 'a_m_y_beach_03', + [2114544056] = 'a_m_y_beachvesp_01', + [-900269486] = 'a_m_y_beachvesp_02', + [1982350912] = 'a_m_y_bevhills_01', + [1720428295] = 'a_m_y_bevhills_02', + [933205398] = 'a_m_y_breakdance_01', + [-1697435671] = 'a_m_y_busicas_01', + [-912318012] = 'a_m_y_business_01', + [-1280051738] = 'a_m_y_business_02', + [-1589423867] = 'a_m_y_business_03', + [-37334073] = 'a_m_y_cyclist_01', + [-12678997] = 'a_m_y_dhill_01', + [766375082] = 'a_m_y_downtown_01', + [-1538846349] = 'a_m_y_eastsa_01', + [377976310] = 'a_m_y_eastsa_02', + [2010389054] = 'a_m_y_epsilon_01', + [-1434255461] = 'a_m_y_epsilon_02', + [-775102410] = 'a_m_y_gay_01', + [-1519253631] = 'a_m_y_gay_02', + [-1736970383] = 'a_m_y_genstreet_01', + [891398354] = 'a_m_y_genstreet_02', + [-685776591] = 'a_m_y_golfer_01', + [-512913663] = 'a_m_y_hasjew_01', + [1358380044] = 'a_m_y_hiker_01', + [2097407511] = 'a_m_y_hippy_01', + [587703123] = 'a_m_y_hipster_01', + [349505262] = 'a_m_y_hipster_02', + [1312913862] = 'a_m_y_hipster_03', + [706935758] = 'a_m_y_indian_01', + [767028979] = 'a_m_y_jetski_01', + [-1849016788] = 'a_m_y_juggalo_01', + [452351020] = 'a_m_y_ktown_01', + [696250687] = 'a_m_y_ktown_02', + [321657486] = 'a_m_y_latino_01', + [1768677545] = 'a_m_y_methhead_01', + [810804565] = 'a_m_y_mexthug_01', + [1694362237] = 'a_m_y_motox_01', + [2007797722] = 'a_m_y_motox_02', + [1264920838] = 'a_m_y_musclbeac_01', + [-920443780] = 'a_m_y_musclbeac_02', + [-2088436577] = 'a_m_y_polynesian_01', + [-178150202] = 'a_m_y_roadcyc_01', + [623927022] = 'a_m_y_runner_01', + [-2076336881] = 'a_m_y_runner_02', + [-681546704] = 'a_m_y_salton_01', + [-1044093321] = 'a_m_y_skater_01', + [-1342520604] = 'a_m_y_skater_02', + [-417940021] = 'a_m_y_soucent_01', + [-1398552374] = 'a_m_y_soucent_02', + [-1007618204] = 'a_m_y_soucent_03', + [-1976105999] = 'a_m_y_soucent_04', + [-812470807] = 'a_m_y_stbla_01', + [-1731772337] = 'a_m_y_stbla_02', + [-2039163396] = 'a_m_y_stlat_01', + [605602864] = 'a_m_y_stwhi_01', + [919005580] = 'a_m_y_stwhi_02', + [-1222037748] = 'a_m_y_sunbathe_01', + [-356333586] = 'a_m_y_surfer_01', + [-1047300121] = 'a_m_y_vindouche_01', + [1264851357] = 'a_m_y_vinewood_01', + [1561705728] = 'a_m_y_vinewood_02', + [534725268] = 'a_m_y_vinewood_03', + [835315305] = 'a_m_y_vinewood_04', + [-1425378987] = 'a_m_y_yoga_01', + [-1216765807] = 'adder', + [1283517198] = 'airbus', + [1560980623] = 'airtug', + [1672195559] = 'akuma', + [767087018] = 'alpha', + [1171614426] = 'ambulance', + [837858166] = 'annihilator', + [63938961] = 'ap1_01_a_aeriala', + [-199425492] = 'ap1_01_a_aerialb', + [2086703506] = 'ap1_01_a_ap_cargo_hanr', + [2017046934] = 'ap1_01_a_ap1_01_rails_00', + [-423850342] = 'ap1_01_a_ap1_01_rails_01', + [-728831425] = 'ap1_01_a_ap1_01_rails_02', + [-1046887339] = 'ap1_01_a_ap1_01_rails_03', + [-1320213568] = 'ap1_01_a_ap1_01_rails_04', + [915222090] = 'ap1_01_a_ap1_01_rails_05', + [616794807] = 'ap1_01_a_ap1_01_rails_06', + [325478381] = 'ap1_01_a_ap1_01_rails_07', + [115101554] = 'ap1_01_a_ap1_01_roofbar', + [-743675684] = 'ap1_01_a_ap1_01a_dec00', + [-916499390] = 'ap1_01_a_ap1_01a_dec01', + [-274980677] = 'ap1_01_a_ap1_01a_dec02', + [-433451561] = 'ap1_01_a_ap1_01a_dec03', + [780017278] = 'ap1_01_a_ap1_01a_dec04', + [481589995] = 'ap1_01_a_ap1_01a_dec05', + [-1587837877] = 'ap1_01_a_ap1_01a_dec06', + [-269909075] = 'ap1_01_a_ap1_01a_glue_02', + [-195274111] = 'ap1_01_a_ap1_01a_ladder_hd_002', + [-433144282] = 'ap1_01_a_ap1_01a_ladder_hd_003', + [286200810] = 'ap1_01_a_ap1_01a_ladder_hd_004', + [47740793] = 'ap1_01_a_ap1_01a_ladder_hd_005', + [-1952806657] = 'ap1_01_a_ap1_01a_ladder_hd_006', + [2110844264] = 'ap1_01_a_ap1_01a_ladder_hd_007', + [-1481817820] = 'ap1_01_a_ap1_01a_ladder_hd_008', + [1809462809] = 'ap1_01_a_ap1_01a_ladder_hd_01', + [1146432631] = 'ap1_01_a_ap1_01a_weed_01', + [379179265] = 'ap1_01_a_ap1_01a_weed_02', + [701003614] = 'ap1_01_a_ap1_01a_weed_03', + [-90826502] = 'ap1_01_a_ap1_01a_weed_04', + [-806108234] = 'ap1_01_a_ap1_01a_weed_05', + [633750261] = 'ap1_01_a_ap1_gm_grnd00', + [922805610] = 'ap1_01_a_ap1_gm_grnd01', + [135140741] = 'ap1_01_a_ap1_gm_grnd012', + [1409854841] = 'ap1_01_a_ap1_gm_grnd013', + [1853707362] = 'ap1_01_a_ap1_gm_grnd03', + [145590464] = 'ap1_01_a_ap1_gm_grnd04', + [743100410] = 'ap1_01_a_ap1_gm_grnd06', + [-1518943660] = 'ap1_01_a_ap1_gm_grnd07', + [1358600541] = 'ap1_01_a_ap1_gm_grnd09', + [-1767463468] = 'ap1_01_a_ap1_gm_grnd11', + [-1968564048] = 'ap1_01_a_aprds01', + [2021913700] = 'ap1_01_a_aprds02', + [536953696] = 'ap1_01_a_aprds04', + [315304120] = 'ap1_01_a_aprds07', + [-844489097] = 'ap1_01_a_aprds08', + [-281386601] = 'ap1_01_a_aprds09', + [-241166262] = 'ap1_01_a_arrowline', + [-1355871399] = 'ap1_01_a_arrows_003', + [-1116330009] = 'ap1_01_a_arrows_004', + [56308604] = 'ap1_01_a_arrows_005', + [-1601131610] = 'ap1_01_a_arrows_01', + [96368132] = 'ap1_01_a_arrows_02', + [-76686228] = 'ap1_01_a_beachs00', + [-1439450631] = 'ap1_01_a_beachs01', + [-671935113] = 'ap1_01_a_beachs02', + [-2077289645] = 'ap1_01_a_centreline_004', + [-1826508488] = 'ap1_01_a_centreline_005', + [-447556195] = 'ap1_01_a_centreline_006', + [-119669581] = 'ap1_01_a_centreline_007', + [-1157201659] = 'ap1_01_a_centreline_008', + [-833149018] = 'ap1_01_a_centreline_009', + [-671822330] = 'ap1_01_a_centreline_01', + [2035576706] = 'ap1_01_a_centreline_010', + [-432575861] = 'ap1_01_a_centreline_02', + [-1183903493] = 'ap1_01_a_centreline_03', + [-2024351444] = 'ap1_01_a_firedecal', + [-354660070] = 'ap1_01_a_foam01', + [-58985383] = 'ap1_01_a_foam02', + [-684938821] = 'ap1_01_a_foam03', + [-2060941868] = 'ap1_01_a_foam04', + [-1359357578] = 'ap1_01_a_foam05', + [-371404997] = 'ap1_01_a_foam06', + [-600095932] = 'ap1_01_a_glue_01d', + [1663822809] = 'ap1_01_a_glue_01d2', + [977843617] = 'ap1_01_a_glue_01d2bv', + [1706264838] = 'ap1_01_a_glue_01d2cv', + [-772133182] = 'ap1_01_a_glue_01e', + [-819268007] = 'ap1_01_a_gm_grnd014', + [968393305] = 'ap1_01_a_grnlite_b_018', + [-1338610776] = 'ap1_01_a_grnlite_b_1', + [1544405491] = 'ap1_01_a_grnlite_b_10', + [157686945] = 'ap1_01_a_grnlite_b_11', + [445955838] = 'ap1_01_a_grnlite_b_12', + [675502683] = 'ap1_01_a_grnlite_b_13', + [883585833] = 'ap1_01_a_grnlite_b_14', + [-1052996529] = 'ap1_01_a_grnlite_b_15', + [-803919360] = 'ap1_01_a_grnlite_b_16', + [-564181356] = 'ap1_01_a_grnlite_b_17', + [-1983472288] = 'ap1_01_a_grnlite_b_18', + [-1744487971] = 'ap1_01_a_grnlite_b_19', + [2112947998] = 'ap1_01_a_grnlite_b_2', + [854945439] = 'ap1_01_a_grnlite_b_20', + [-1128299979] = 'ap1_01_a_grnlite_b_21', + [-830921304] = 'ap1_01_a_grnlite_b_22', + [-399812340] = 'ap1_01_a_grnlite_b_23', + [-98697999] = 'ap1_01_a_grnlite_b_24', + [-2082992029] = 'ap1_01_a_grnlite_b_25', + [-1583395855] = 'ap1_01_a_grnlite_b_26', + [-1288311010] = 'ap1_01_a_grnlite_b_27', + [532433733] = 'ap1_01_a_grnlite_b_28', + [837087126] = 'ap1_01_a_grnlite_b_29', + [-1316131238] = 'ap1_01_a_grnlite_b_3', + [-941278824] = 'ap1_01_a_grnlite_b_30', + [-1164730635] = 'ap1_01_a_grnlite_b_31', + [-387712107] = 'ap1_01_a_grnlite_b_32', + [-626172120] = 'ap1_01_a_grnlite_b_33', + [-252310599] = 'ap1_01_a_grnlite_b_34', + [1655074588] = 'ap1_01_a_grnlite_b_35', + [208454310] = 'ap1_01_a_grnlite_b_36', + [-29153709] = 'ap1_01_a_grnlite_b_37', + [940546543] = 'ap1_01_a_grnlite_b_38', + [2138606129] = 'ap1_01_a_grnlite_b_4', + [1128206779] = 'ap1_01_a_grnlite_b_5', + [-1596601109] = 'ap1_01_a_grnlite_b_6', + [1757535424] = 'ap1_01_a_grnlite_b_7', + [1989638251] = 'ap1_01_a_grnlite_b_8', + [-30963827] = 'ap1_01_a_grnlite_b_9', + [121350140] = 'ap1_01_a_grnlites007', + [812972654] = 'ap1_01_a_grnlites008', + [1671651538] = 'ap1_01_a_grnlites009', + [755238251] = 'ap1_01_a_grnlites01', + [1251814062] = 'ap1_01_a_grnlites010', + [984976099] = 'ap1_01_a_grnlites011', + [-1378225878] = 'ap1_01_a_grnlites013', + [-2087543652] = 'ap1_01_a_grnlites014', + [1569121904] = 'ap1_01_a_grnlites02', + [-1823419889] = 'ap1_01_a_grnlites03', + [-1084378676] = 'ap1_01_a_grnlites0gg', + [-1578284045] = 'ap1_01_a_keepclear', + [-1397019196] = 'ap1_01_a_lad00', + [1976385501] = 'ap1_01_a_lad01', + [-935795521] = 'ap1_01_a_lad02', + [-15281554] = 'ap1_01_a_lad03', + [349240802] = 'ap1_01_a_lad04', + [-625842327] = 'ap1_01_a_ladrdr', + [532491217] = 'ap1_01_a_nufb', + [1559208681] = 'ap1_01_a_nufb003', + [1073394364] = 'ap1_01_a_nufbbbb', + [-1292794967] = 'ap1_01_a_overlay01', + [146353975] = 'ap1_01_a_overlay02', + [1072619329] = 'ap1_01_a_overlay1', + [-635265980] = 'ap1_01_a_radaar', + [544960257] = 'ap1_01_a_radar_base', + [-396006399] = 'ap1_01_a_radar_baseb', + [511980267] = 'ap1_01_a_runw02', + [1073182161] = 'ap1_01_a_runw04', + [-1673679856] = 'ap1_01_a_runw23', + [-1211496281] = 'ap1_01_a_runwhite_01', + [293288968] = 'ap1_01_a_runwhite_02', + [340607404] = 'ap1_01_a_runwhite_03', + [754097496] = 'ap1_01_a_sechut_gary', + [1305992242] = 'ap1_01_a_skidz1', + [738096498] = 'ap1_01_a_skidz69', + [1625256048] = 'ap1_01_a_skidz69b', + [-1980228255] = 'ap1_01_a_skidz69fff', + [-1008670195] = 'ap1_01_a_thingy', + [-963940317] = 'ap1_01_a_towerrail', + [-1764607603] = 'ap1_01_a_towerwire', + [-548074401] = 'ap1_01_a_towerwirea', + [-1104840832] = 'ap1_01_a_unit2eevens001', + [-1133112324] = 'ap1_01_a_wettest', + [-587939829] = 'ap1_01_aolayy00', + [409319148] = 'ap1_01_aolayy01', + [873754185] = 'ap1_01_aolayy03', + [642405045] = 'ap1_01_aolayy04', + [1631963311] = 'ap1_01_aolayy05', + [1418473276] = 'ap1_01_aolayy06', + [1877075431] = 'ap1_01_aolayy08', + [950990430] = 'ap1_01_aolayy14', + [152708144] = 'ap1_01_b_ap1_01b_glue_01', + [451266503] = 'ap1_01_b_ap1_01b_glue_02', + [-1225261079] = 'ap1_01_b_ap1_01b_glue_03', + [-1000826198] = 'ap1_01_b_ap1_01b_glue_04', + [-770263514] = 'ap1_01_b_ap1_01b_glue_05', + [-540257903] = 'ap1_01_b_ap1_01b_glue_06', + [2133135424] = 'ap1_01_b_ap1_01b_glue_07', + [-1927992288] = 'ap1_01_b_ap1_01b_glue_08', + [-1689270123] = 'ap1_01_b_ap1_01b_glue_09', + [-333810386] = 'ap1_01_b_ap1_01b_weed_01', + [2097190656] = 'ap1_01_b_ap1_01b_weed_03', + [-1359283468] = 'ap1_01_b_ap1_01b_weed_04', + [-166594151] = 'ap1_01_b_ap1_gm_grnd02', + [261570443] = 'ap1_01_b_ap1_gm_grnd10', + [198981629] = 'ap1_01_b_ap1_gm_grnd13', + [422236826] = 'ap1_01_b_ap1_gm_grnd14', + [779156774] = 'ap1_01_b_ap1_gm_grnd15', + [931973390] = 'ap1_01_b_aprds05', + [-1660775428] = 'ap1_01_b_aprds06', + [-236593223] = 'ap1_01_b_barrier1', + [-773495382] = 'ap1_01_b_barrier1bb', + [-993622661] = 'ap1_01_b_barrier2', + [-385921520] = 'ap1_01_b_barrier5', + [-574091616] = 'ap1_01_b_bitofgrass', + [1071507734] = 'ap1_01_b_cablemesh1050743_thvy', + [377224362] = 'ap1_01_b_cablemesh1050744_thvy', + [-1718844371] = 'ap1_01_b_cablemesh1050745_thvy', + [2030200176] = 'ap1_01_b_cablemesh1050783_thvy', + [-886469149] = 'ap1_01_b_cablemesh1050784_thvy', + [-1199202342] = 'ap1_01_b_cablemesh1050785_thvy', + [1164098344] = 'ap1_01_b_cablemesh1050786_thvy', + [-1960102530] = 'ap1_01_b_cablemesh1050787_thvy', + [-1459509694] = 'ap1_01_b_cablemesh1050788_thvy', + [393522195] = 'ap1_01_b_cablemesh1050789_thvy', + [-1820405012] = 'ap1_01_b_cablemesh1050790_thvy', + [-1114356002] = 'ap1_01_b_cablemesh1050791_thvy', + [-1187764228] = 'ap1_01_b_cablemesh1050792_thvy', + [-1580397730] = 'ap1_01_b_cablemesh1050793_thvy', + [1407291089] = 'ap1_01_b_cablemesh1053527_thvy', + [1942030602] = 'ap1_01_b_cablemesh1053528_thvy', + [1500062028] = 'ap1_01_b_cablemesh1053529_thvy', + [-548692727] = 'ap1_01_b_cablemesh1053530_thvy', + [164169428] = 'ap1_01_b_cablemesh1053531_thvy', + [1643778837] = 'ap1_01_b_cablemesh1053532_thvy', + [-1963596258] = 'ap1_01_b_cablemesh1053533_thvy', + [-1410410382] = 'ap1_01_b_cablemesh1053534_thvy', + [-1065699323] = 'ap1_01_b_cablemesh1053535_thvy', + [1488063181] = 'ap1_01_b_cablemesh1053536_thvy', + [1012116861] = 'ap1_01_b_cablemesh1053537_thvy', + [-2087117601] = 'ap1_01_b_cablemesh1053538_thvy', + [643725179] = 'ap1_01_b_cablemesh1053539_thvy', + [-2113130678] = 'ap1_01_b_cablemesh1053540_thvy', + [-1241596929] = 'ap1_01_b_cablemesh1053541_thvy', + [-1116056162] = 'ap1_01_b_cablemesh1053542_thvy', + [561566550] = 'ap1_01_b_cablemesh1053543_thvy', + [-1255694812] = 'ap1_01_b_cablemesh1053544_thvy', + [1500825353] = 'ap1_01_b_cablemesh1053545_thvy', + [722745785] = 'ap1_01_b_cablemesh1053546_thvy', + [-814243637] = 'ap1_01_b_cablemesh1053547_thvy', + [1085593944] = 'ap1_01_b_cablemesh1053548_thvy', + [1182629430] = 'ap1_01_b_cablemesh1053647_thvy', + [2116784985] = 'ap1_01_b_cablemesh1053648_thvy', + [263164250] = 'ap1_01_b_cablemesh1053649_thvy', + [2051660358] = 'ap1_01_b_cablemesh1053650_thvy', + [326013957] = 'ap1_01_b_cablemesh1053651_thvy', + [-312948035] = 'ap1_01_b_cablemesh1053652_thvy', + [-1863258069] = 'ap1_01_b_cablemesh783716_thvy', + [-361944479] = 'ap1_01_b_cablemesh783941_thvy', + [216142463] = 'ap1_01_b_cablemesh783942_thvy', + [1956293845] = 'ap1_01_b_cablemesh783943_thvy', + [978352379] = 'ap1_01_b_cablemesh783944_thvy', + [747911725] = 'ap1_01_b_cablemesh783945_thvy', + [-762213962] = 'ap1_01_b_cablemesh783946_thvy', + [-1114036754] = 'ap1_01_b_cablemesh783947_thvy', + [862872915] = 'ap1_01_b_fizzy_hd_123', + [2042786298] = 'ap1_01_b_fizzy_hd_124', + [1875926550] = 'ap1_01_b_fizzy_hd_125', + [-1776211273] = 'ap1_01_b_fizzy_hd_126', + [1435993460] = 'ap1_01_b_fizzy_hd_ent_01', + [-726924385] = 'ap1_01_b_fizzy_hd_ent_02', + [1195286407] = 'ap1_01_b_frovely00', + [1229890471] = 'ap1_01_b_frovely01', + [777690078] = 'ap1_01_b_frovely011', + [578868752] = 'ap1_01_b_frovely02', + [888142574] = 'ap1_01_b_frovely03', + [-1169115600] = 'ap1_01_b_frovely03b', + [-791934216] = 'ap1_01_b_gm_grnd017b', + [518104866] = 'ap1_01_b_gm_grnd017c', + [756827031] = 'ap1_01_b_gm_grnd017d', + [1572874375] = 'ap1_01_b_gm_grnd017ds', + [1526079398] = 'ap1_01_b_gm_grnd017e', + [-1223534652] = 'ap1_01_b_gm_grnd017e002', + [-1343680182] = 'ap1_01_b_gm_grnd017e4', + [-936019421] = 'ap1_01_b_gm_grnd017f', + [606627867] = 'ap1_01_b_grnnu', + [-1044312602] = 'ap1_01_b_hangera_03', + [-2100505616] = 'ap1_01_b_hangera_03b', + [795192611] = 'ap1_01_b_hangera_03f', + [658882799] = 'ap1_01_b_hangeradet1', + [1700609305] = 'ap1_01_b_hangeradet2', + [1205033307] = 'ap1_01_b_hangerpipe', + [684773309] = 'ap1_01_b_hej00', + [913992464] = 'ap1_01_b_hej01', + [1144882838] = 'ap1_01_b_hej02', + [1590733915] = 'ap1_01_b_hejtop00', + [1838303710] = 'ap1_01_b_hejtop01', + [-1823304354] = 'ap1_01_b_hejtop02', + [1515319512] = 'ap1_01_b_helopad', + [-1218260757] = 'ap1_01_b_idfafads017', + [-1062127786] = 'ap1_01_b_idfafads8', + [22233097] = 'ap1_01_b_ivy00_noshad', + [1815790348] = 'ap1_01_b_ivy00_noshadb', + [1867619058] = 'ap1_01_b_ivy01', + [-1175965666] = 'ap1_01_b_ivy02', + [-1878860716] = 'ap1_01_b_ivy03', + [-670110613] = 'ap1_01_b_ivy04', + [-1507391332] = 'ap1_01_b_ivy05', + [50838666] = 'ap1_01_b_ivy06_noshad', + [1171045676] = 'ap1_01_b_ivy06_noshadb', + [-2147335046] = 'ap1_01_b_ivy07_noshad', + [341415000] = 'ap1_01_b_ivy08_noshad', + [-800421071] = 'ap1_01_b_ivy08_noshadb', + [404749172] = 'ap1_01_b_ivy09_noshad', + [1580494178] = 'ap1_01_b_ivy09_noshadb', + [-1305501831] = 'ap1_01_b_ivy10', + [-1283680332] = 'ap1_01_b_ivy11_noshad', + [290058340] = 'ap1_01_b_ivy11_noshadb', + [230479506] = 'ap1_01_b_ivy12', + [-1319961123] = 'ap1_01_b_ivy13_noshad', + [1266112074] = 'ap1_01_b_ivy14_noshad', + [-2021419101] = 'ap1_01_b_ivy14_noshadb', + [375121876] = 'ap1_01_b_ivy15', + [-1181638893] = 'ap1_01_b_line_01', + [-405570666] = 'ap1_01_b_line_02', + [437772318] = 'ap1_01_b_line_03', + [-934396788] = 'ap1_01_b_line_04', + [1005797311] = 'ap1_01_b_lsiaterm_bits', + [230541877] = 'ap1_01_b_lsiaterm_reflect', + [-2034081885] = 'ap1_01_b_lsiaterm_shell', + [1368245520] = 'ap1_01_b_nurod00', + [1112024709] = 'ap1_01_b_nurod01', + [-1426327581] = 'ap1_01_b_nurod04', + [-1665016977] = 'ap1_01_b_nurod05', + [1869185215] = 'ap1_01_b_nurod06', + [1642784202] = 'ap1_01_b_nurod07', + [-518691819] = 'ap1_01_b_nurod08', + [-740865639] = 'ap1_01_b_nurod09', + [580118013] = 'ap1_01_b_nurod11', + [-1508053755] = 'ap1_01_b_nurod12', + [-1961969943] = 'ap1_01_b_nurod13', + [2101123909] = 'ap1_01_b_nurod14', + [1857486402] = 'ap1_01_b_nurod15', + [-304055157] = 'ap1_01_b_nurod16', + [-786152685] = 'ap1_01_b_nurod17', + [-1034574474] = 'ap1_01_b_nurod18', + [-1266775608] = 'ap1_01_b_nurod19', + [1524452511] = 'ap1_01_b_nurod20', + [-56913891] = 'ap1_01_b_nurod21', + [667966262] = 'ap1_01_b_nurod21b', + [-637190243] = 'ap1_01_b_nurod21c', + [2053079123] = 'ap1_01_b_nurod21d', + [-1398774572] = 'ap1_01_b_nurod21e', + [1228384596] = 'ap1_01_b_nurod23', + [1485522947] = 'ap1_01_b_nurod24', + [1187128433] = 'ap1_01_b_nurod27', + [-1272676552] = 'ap1_01_b_nurod29', + [316390285] = 'ap1_01_b_nurod35', + [1054741393] = 'ap1_01_b_nurod36', + [1890121510] = 'ap1_01_b_nurod37', + [-1755265895] = 'ap1_01_b_nurod38', + [1240410547] = 'ap1_01_b_nurod39', + [-381605381] = 'ap1_01_b_nurod39bb', + [1365463498] = 'ap1_01_b_nurod39bbv', + [-941177489] = 'ap1_01_b_nurod39bbv2', + [1073648830] = 'ap1_01_b_nurod40', + [1882503091] = 'ap1_01_b_pills', + [-1266340899] = 'ap1_01_b_pudal00', + [-280649419] = 'ap1_01_b_pudal01', + [-990098269] = 'ap1_01_b_pudal02', + [-340548365] = 'ap1_01_b_refl_18', + [-1957878262] = 'ap1_01_b_roadshadow', + [811748476] = 'ap1_01_b_runw52', + [-1799482066] = 'ap1_01_b_runw53', + [134151086] = 'ap1_01_b_runw56', + [2056415291] = 'ap1_01_b_runw62', + [-1302178098] = 'ap1_01_b_runw75', + [1717992428] = 'ap1_01_b_shad_ducttape', + [-1100328386] = 'ap1_01_b_shadmesh00', + [2069089302] = 'ap1_01_b_shadmesh01', + [-1985582917] = 'ap1_01_b_shadmesh02', + [-1319225306] = 'ap1_01_b_shadmesh03', + [-132397664] = 'ap1_01_b_shadmesh04', + [-840306371] = 'ap1_01_b_shadmesh05', + [-735215246] = 'ap1_01_b_shadowonly', + [-1433353926] = 'ap1_01_b_sidebit005', + [-23697354] = 'ap1_01_b_sidebit1', + [903910967] = 'ap1_01_b_sidebit1b001', + [-2087404543] = 'ap1_01_b_sidebit1b001bb', + [1660423971] = 'ap1_01_b_sidebit1f', + [-2114138126] = 'ap1_01_b_sidebit1f2', + [494995076] = 'ap1_01_b_sidebit1fx', + [1639699039] = 'ap1_01_b_sidebit1spl', + [-1985662238] = 'ap1_01_b_sidebit1spl2', + [1983921902] = 'ap1_01_b_sidebit1vv', + [-230764665] = 'ap1_01_b_sidebit4', + [341906174] = 'ap1_01_b_sidebit4b', + [1081805986] = 'ap1_01_b_sidebit4b001', + [-1248792841] = 'ap1_01_b_sidebit4b001b', + [-1896299454] = 'ap1_01_b_sidepipe1', + [-509908594] = 'ap1_01_b_sidepipe2', + [1774008716] = 'ap1_01_b_sign_airp_01a', + [2035381613] = 'ap1_01_b_sign_airp_01a02', + [-590757906] = 'ap1_01_b_sign_fizza_01', + [1440017301] = 'ap1_01_b_sign2_fizzb', + [-219657516] = 'ap1_01_b_subway', + [1608381895] = 'ap1_01_b_swallgh_ladder', + [-781854505] = 'ap1_01_b_swallgh', + [785062579] = 'ap1_01_b_swallgh001', + [-133878488] = 'ap1_01_b_swallgh004', + [-1281416951] = 'ap1_01_b_swallgh013', + [-699144582] = 'ap1_01_b_swallgh016', + [-1465002613] = 'ap1_01_b_sweed_a', + [616680881] = 'ap1_01_b_sweed_b', + [-1415500393] = 'ap1_01_b_tr4_wlbtys', + [-1569355450] = 'ap1_01_b_unit2d002', + [-150952966] = 'ap1_01_b_unit2ee001', + [-807651606] = 'ap1_01_b_unit2ee001v', + [-2142637987] = 'ap1_01_b_unit2ee001vx', + [864132351] = 'ap1_01_b_unit2ee003', + [1346518644] = 'ap1_01_b_unit2ee003b', + [-1531195828] = 'ap1_01_b_unit2eevens001', + [1415982586] = 'ap1_01_b_unit2eevens002', + [1332936831] = 'ap1_01_b_unit2groovea', + [1638704370] = 'ap1_01_b_unit2grooveb', + [592814580] = 'ap1_01_b_wedys00', + [328204905] = 'ap1_01_b_wedys01', + [-19277571] = 'ap1_01_b_wedys02', + [-1525144197] = 'ap1_01_b_wedys03', + [-602008698] = 'ap1_01_b_wedys04', + [275020818] = 'ap1_01_b_wedys05', + [1853263729] = 'ap1_01_b_weedlies', + [-559915664] = 'ap1_01_b_weeds11', + [1215675225] = 'ap1_01_bwyweed104', + [-369366369] = 'ap1_01_c__ladder_003', + [-617788158] = 'ap1_01_c__ladder_004', + [-981589596] = 'ap1_01_c__ladder_005', + [-1223129895] = 'ap1_01_c__ladder_006', + [-390993885] = 'ap1_01_c__ladder_007', + [-621327186] = 'ap1_01_c__ladder_008', + [-870535431] = 'ap1_01_c__ladder_009', + [-812095510] = 'ap1_01_c__ladder_01', + [-2065815539] = 'ap1_01_c__ladder_010', + [1557452875] = 'ap1_01_c__ladder_011', + [1671620071] = 'ap1_01_c__ladder_012', + [1079484241] = 'ap1_01_c__ladder_013', + [1313618746] = 'ap1_01_c__ladder_014', + [-1779545475] = 'ap1_01_c__ladder_015', + [-1130194963] = 'ap1_01_c__ladder_016', + [1902281062] = 'ap1_01_c__ladder_017', + [-2016301500] = 'ap1_01_c__ladder_018', + [507772926] = 'ap1_01_c_ap1_01_d_plinth_010', + [-739841211] = 'ap1_01_c_ap1_01_d_plinth_011', + [-124308315] = 'ap1_01_c_ap1_01_d_plinth_012', + [509739066] = 'ap1_01_c_ap1_01_d_plinth_013', + [1417505904] = 'ap1_01_c_ap1_01_d_plinth_014', + [228875967] = 'ap1_01_c_ap1_01_d_plinth_015', + [818586891] = 'ap1_01_c_ap1_01_d_plinth_016', + [-1712720056] = 'ap1_01_c_ap1_01_d_plinth_017', + [-2025369085] = 'ap1_01_c_ap1_01_d_plinth_018', + [1150930089] = 'ap1_01_c_ap1_01_d_plinth_019', + [-643866943] = 'ap1_01_c_ap1_01_daolayy06', + [-2014083062] = 'ap1_01_c_ap1_01_daolayy06b', + [-691679382] = 'ap1_01_c_ap1_01cstwal018', + [-804110117] = 'ap1_01_c_ap1_01cstwal041', + [2115808397] = 'ap1_01_c_ap1_01cstwal066', + [1744928855] = 'ap1_01_c_ap1_01cstwal067', + [1437723138] = 'ap1_01_c_aprds004', + [-1626184285] = 'ap1_01_c_aprds004bb', + [-1948765969] = 'ap1_01_c_aprds004cc', + [-1662955039] = 'ap1_01_c_aprds004dd', + [49838717] = 'ap1_01_c_arrow_01', + [-384088381] = 'ap1_01_c_arrow_02', + [608350716] = 'ap1_01_c_bch2_00', + [-7869922] = 'ap1_01_c_bitch00', + [-230076511] = 'ap1_01_c_bitch01', + [-386155258] = 'ap1_01_c_bitch02', + [1066034873] = 'ap1_01_c_bitch03_', + [-840464674] = 'ap1_01_c_bitch03', + [1184856136] = 'ap1_01_c_bitch04', + [957799735] = 'ap1_01_c_bitch05', + [1593364268] = 'ap1_01_c_bld4_det01', + [-283823934] = 'ap1_01_c_bld4_det01a', + [-520973187] = 'ap1_01_c_bld4_det01b', + [-51131265] = 'ap1_01_c_bld4_det01c', + [1200824417] = 'ap1_01_c_bld4_det02', + [1156193039] = 'ap1_01_c_bld4_det03', + [-1029695883] = 'ap1_01_c_bld4_det04', + [-1329237312] = 'ap1_01_c_bld4_det05', + [733629051] = 'ap1_01_c_crackweed00', + [1585065982] = 'ap1_01_c_crackweed01', + [-829747170] = 'ap1_01_c_crackweed02', + [-1664213594] = 'ap1_01_c_foam01', + [1721151800] = 'ap1_01_c_foam02', + [-1186343267] = 'ap1_01_c_foam03', + [530654030] = 'ap1_01_c_foam06', + [-597585030] = 'ap1_01_c_gapfiller', + [261646468] = 'ap1_01_c_gm_grnd017', + [2004678443] = 'ap1_01_c_grass_02', + [1044543423] = 'ap1_01_c_grass_02bb', + [791406182] = 'ap1_01_c_grass_03', + [-549202529] = 'ap1_01_c_grass_03bb', + [451591652] = 'ap1_01_c_grass_04', + [-1112337321] = 'ap1_01_c_grass_0422', + [35288214] = 'ap1_01_c_hd_overlays00', + [268046421] = 'ap1_01_c_hd_overlays01', + [-574313493] = 'ap1_01_c_hd_overlays02', + [-209791137] = 'ap1_01_c_hd_overlays03', + [-1947006963] = 'ap1_01_c_hd_overlays04', + [2047861831] = 'ap1_01_c_hd_overlays05', + [-1279207512] = 'ap1_01_c_hd_overlays06', + [-715351325] = 'ap1_01_c_hd_overlays08', + [-1020955023] = 'ap1_01_c_hd_overlays09', + [1077081118] = 'ap1_01_c_hd_overlays10', + [250679707] = 'ap1_01_c_hd_overlays11', + [622083553] = 'ap1_01_c_hd_overlays12', + [-220374668] = 'ap1_01_c_hd_overlays13', + [2036754056] = 'ap1_01_c_hd_overlays14', + [-237613016] = 'ap1_01_c_ld_overlays00', + [1094577910] = 'ap1_01_c_ld_overlays01', + [242551141] = 'ap1_01_c_ld_overlays02', + [1571923929] = 'ap1_01_c_ld_overlays03', + [730973086] = 'ap1_01_c_ld_overlays04', + [1373081645] = 'ap1_01_c_ld_overlays05', + [-2079034202] = 'ap1_01_c_ld_overlays06', + [928242442] = 'ap1_01_c_ld_overlays07', + [-1951726637] = 'ap1_01_c_ld_overlays09', + [1682747775] = 'ap1_01_c_ld_overlays11', + [1450579410] = 'ap1_01_c_ld_overlays12', + [-945424336] = 'ap1_01_c_ld_overlays13', + [-1176740707] = 'ap1_01_c_ld_overlays14', + [1995712432] = 'ap1_01_c_line_00', + [1748175406] = 'ap1_01_c_line_01', + [-629510469] = 'ap1_01_c_line_02', + [1515843244] = 'ap1_01_c_line_03', + [1285346098] = 'ap1_01_c_line_04', + [1054750645] = 'ap1_01_c_line_05', + [791156809] = 'ap1_01_c_line_06', + [-336948841] = 'ap1_01_c_line_07', + [-2125203381] = 'ap1_01_c_nu_blnd', + [-140909889] = 'ap1_01_c_nu_blnd2', + [-842035413] = 'ap1_01_c_nu_blnd3', + [-530860989] = 'ap1_01_c_nu_blnd4', + [-1867150490] = 'ap1_01_c_nuruns03', + [43446051] = 'ap1_01_c_nuruns04', + [-1407237575] = 'ap1_01_c_nuruns05', + [-170143082] = 'ap1_01_c_puds_00', + [-1666146239] = 'ap1_01_c_puds_01', + [-1705206887] = 'ap1_01_c_puds_02', + [-787248894] = 'ap1_01_c_puds_03', + [1054172292] = 'ap1_01_c_puds_04', + [101872383] = 'ap1_01_c_puds_05', + [-479973981] = 'ap1_01_c_puds_06', + [-376737143] = 'ap1_01_c_runolay11', + [-1977463565] = 'ap1_01_c_runw122', + [-81679784] = 'ap1_01_c_runw133', + [1324044782] = 'ap1_01_c_runw134', + [815666516] = 'ap1_01_c_runw136', + [880003954] = 'ap1_01_c_runw65', + [-646113062] = 'ap1_01_c_runw78', + [983920965] = 'ap1_01_c_stairs03457', + [1229027850] = 'ap1_01_c_stairs054', + [1888590874] = 'ap1_01_c_stairs07', + [707252279] = 'ap1_01_c_stairs345', + [-1349014547] = 'ap1_01_c_sthbld1', + [-694374604] = 'ap1_01_c_sthbld3_int', + [899135009] = 'ap1_01_c_sthbld3_intc', + [-1894782304] = 'ap1_01_c_sthbld3_lines', + [-1881641877] = 'ap1_01_c_sthbld3', + [-1228033225] = 'ap1_01_c_sthbld3bbb', + [809691381] = 'ap1_01_c_sthbld4_deta', + [-2120364042] = 'ap1_01_c_sthbld4', + [1170018649] = 'ap1_01_c_sweeda', + [-658552426] = 'ap1_01_c_sweeda001', + [-964942576] = 'ap1_01_c_sweeda002', + [1399073959] = 'ap1_01_c_sweedb', + [-1564521636] = 'ap1_01_c_sweedc', + [295032342] = 'ap1_01_c_sweedc001', + [-1356241872] = 'ap1_01_c_sweedd', + [366994563] = 'ap1_01_c_sweedextra', + [-1757861835] = 'ap1_01_c_wallsupport', + [868355920] = 'ap1_01_c_weed_01', + [2105582284] = 'ap1_01_c_weed_02', + [-1892137413] = 'ap1_01_c_weed_03', + [-686074368] = 'ap1_01_c_weed_04', + [-669176059] = 'ap1_01_d__ladder_019', + [866542346] = 'ap1_01_d__ladder_020', + [-554911336] = 'ap1_01_d__ladder_021', + [-793895653] = 'ap1_01_d__ladder_022', + [1350737090] = 'ap1_01_d__ladder_023', + [2051272772] = 'ap1_01_d__ladder_024', + [1846433753] = 'ap1_01_d__ladder_025', + [398830409] = 'ap1_01_d__ladder_026', + [1592739332] = 'ap1_01_d_5_det', + [1415136300] = 'ap1_01_d_5_det2', + [990979511] = 'ap1_01_d_5_rail1', + [1944590184] = 'ap1_01_d_5_rail2', + [-348506405] = 'ap1_01_d_5', + [-1458804786] = 'ap1_01_d_ap1_01_c_overlay007bb', + [-2090631144] = 'ap1_01_d_ap1_01_stairs03457', + [-362065112] = 'ap1_01_d_ap1_01_stairs054', + [-1436824517] = 'ap1_01_d_ap1_01_stairs07', + [1782689772] = 'ap1_01_d_ap1_01_stairs345', + [-1824260344] = 'ap1_01_d_ap1_01d_fizzystair_hd', + [-435977744] = 'ap1_01_d_ap1_01d_ladder_01', + [-1592021791] = 'ap1_01_d_ap1overlay007bb', + [289813942] = 'ap1_01_d_aprds00', + [847247401] = 'ap1_01_d_aprds02', + [1421065133] = 'ap1_01_d_arrows_007', + [-429575007] = 'ap1_01_d_arrows_01', + [-1616959718] = 'ap1_01_d_arrows_02', + [-1318565204] = 'ap1_01_d_arrows_03', + [1210759986] = 'ap1_01_d_bch2_01', + [1651208115] = 'ap1_01_d_bch2_02', + [569290137] = 'ap1_01_d_bjjbld', + [-96883717] = 'ap1_01_d_bjjbldbbb', + [-1847295823] = 'ap1_01_d_bjjbldbbbbb', + [-1866273280] = 'ap1_01_d_blncst2', + [-1027202250] = 'ap1_01_d_blncst2a', + [381701503] = 'ap1_01_d_blockos1', + [-1920814413] = 'ap1_01_d_box_01', + [1089345935] = 'ap1_01_d_box_02', + [-1290961464] = 'ap1_01_d_box_03', + [1478072657] = 'ap1_01_d_bpipe1', + [-968657501] = 'ap1_01_d_bpipe2', + [571190554] = 'ap1_01_d_bpipe4', + [-1546457161] = 'ap1_01_d_coasta', + [826788325] = 'ap1_01_d_coasta2', + [1113385999] = 'ap1_01_d_coasta3', + [1707880752] = 'ap1_01_d_crackweed00', + [-1201711531] = 'ap1_01_d_crackweed01', + [1647356413] = 'ap1_01_d_crackweed02', + [-1286157240] = 'ap1_01_d_crackweed03', + [-2043383292] = 'ap1_01_d_crackweed04', + [1474467169] = 'ap1_01_d_crackweed05', + [1683288312] = 'ap1_01_d_dyndor00', + [-99214212] = 'ap1_01_d_dyndor01', + [1186645273] = 'ap1_01_d_ffu_pipe1', + [863280781] = 'ap1_01_d_ffu_pipe2', + [-1657048551] = 'ap1_01_d_ffu_pipe3', + [775103637] = 'ap1_01_d_ffuuuuff', + [1992946661] = 'ap1_01_d_ffuuuuffg', + [512624835] = 'ap1_01_d_foam_01', + [-417916458] = 'ap1_01_d_foam_02', + [1012319316] = 'ap1_01_d_foam_03', + [158490252] = 'ap1_01_d_foam_04', + [415563057] = 'ap1_01_d_foam_05', + [523908199] = 'ap1_01_d_grass_00', + [1087927868] = 'ap1_01_d_grass_00bb', + [-314866225] = 'ap1_01_d_grass_00bbd', + [1664531551] = 'ap1_01_d_grass_01', + [-1371065731] = 'ap1_01_d_grass_01bb', + [-1669845279] = 'ap1_01_d_grass_05', + [-368096750] = 'ap1_01_d_grass_06', + [-1075448388] = 'ap1_01_d_grass_07', + [-407843731] = 'ap1_01_d_grass_07ola', + [-1918561989] = 'ap1_01_d_grass_08', + [-1729559445] = 'ap1_01_d_grass_z', + [1011299089] = 'ap1_01_d_ladder_002', + [2104046936] = 'ap1_01_d_ladder_003', + [-886746929] = 'ap1_01_d_ladder_004', + [-910310150] = 'ap1_01_d_line_01', + [-1015039874] = 'ap1_01_d_line_02', + [1381553706] = 'ap1_01_d_line_03', + [773492142] = 'ap1_01_d_line_04', + [1994694469] = 'ap1_01_d_line_05', + [1623028467] = 'ap1_01_d_line_06', + [-808417993] = 'ap1_01_d_nublnd', + [1839613160] = 'ap1_01_d_nublnd2', + [-689321394] = 'ap1_01_d_nuruns00', + [629893008] = 'ap1_01_d_nuruns01', + [-1646791240] = 'ap1_01_d_plinth_00', + [2130038039] = 'ap1_01_d_plinth_005', + [1640796869] = 'ap1_01_d_plinth_006', + [1401353782] = 'ap1_01_d_plinth_007', + [-1272432729] = 'ap1_01_d_plinth_008', + [-1503060951] = 'ap1_01_d_plinth_009', + [-1883186806] = 'ap1_01_d_plinth_01', + [2061643725] = 'ap1_01_d_plinth_02', + [1798574193] = 'ap1_01_d_plinth_03', + [-712547002] = 'ap1_01_d_plinth_04', + [-979284436] = 'ap1_01_d_runlight_b_', + [477365748] = 'ap1_01_d_runlight_g_', + [-57028672] = 'ap1_01_d_runlight_r_', + [-1504658386] = 'ap1_01_d_runlight_y_', + [-707991213] = 'ap1_01_d_runw115', + [-1300259007] = 'ap1_01_d_runw127', + [1099021959] = 'ap1_01_d_runw131', + [718967097] = 'ap1_01_d_runw132', + [1119024034] = 'ap1_01_d_runw29', + [1271044300] = 'ap1_01_d_runw29b', + [-1260429979] = 'ap1_01_d_runw39', + [-79842613] = 'ap1_01_d_runw39b', + [-1777164868] = 'ap1_01_d_runw51', + [-944235161] = 'ap1_01_d_skidzcc007', + [629778824] = 'ap1_01_d_skidzcc05', + [1848271595] = 'ap1_01_d_smaltermcc', + [-2039128817] = 'ap1_01_d_smaltermint', + [224990040] = 'ap1_01_d_splots00', + [530560965] = 'ap1_01_d_splots01', + [386386444] = 'ap1_01_d_sthbld005', + [-1206202371] = 'ap1_01_d_sthbld3_int001', + [1717014988] = 'ap1_01_d_sthbld3_lines001', + [-1903904858] = 'ap1_01_d_sthbld3bbb001', + [-984594871] = 'ap1_01_d_sthbld4ffr', + [-1790627328] = 'ap1_01_d_sthbld4sss', + [1276421298] = 'ap1_01_d_wall_cap', + [-782110585] = 'ap1_01_d_weed_01', + [-1535826617] = 'ap1_01_d_wet00', + [1454213561] = 'ap1_01_d_wet01', + [-2015925236] = 'ap1_01_d_wet02', + [-1696755180] = 'ap1_01_d_wet03', + [-844335183] = 'ap1_01_d_wet04', + [338073261] = 'ap1_01_dcstwal025', + [1066593669] = 'ap1_01_dcstwal026', + [984917676] = 'ap1_01_dcstwal05', + [-1852058399] = 'ap1_01_dcstwal07', + [219472273] = 'ap1_02_airbridge1', + [-983903698] = 'ap1_02_airbridge2', + [-1140736132] = 'ap1_02_airbridge3', + [-525498173] = 'ap1_02_airbridge4', + [1480196090] = 'ap1_02_b16_f', + [1840549866] = 'ap1_02_b19lad', + [904671736] = 'ap1_02_bboard006', + [-1728415725] = 'ap1_02_bboard008', + [-690130876] = 'ap1_02_bboard010', + [-2128591669] = 'ap1_02_bboard011', + [-478563442] = 'ap1_02_bboard1', + [-701851408] = 'ap1_02_bboard2', + [-1000049308] = 'ap1_02_bboard3', + [-1304047321] = 'ap1_02_bboard4', + [587986297] = 'ap1_02_bld01', + [288903634] = 'ap1_02_bld02', + [-1923374449] = 'ap1_02_bld025', + [-1361517175] = 'ap1_02_bld027', + [1441018785] = 'ap1_02_bld029', + [1457665417] = 'ap1_02_bld02a', + [1334562424] = 'ap1_02_bld03', + [-2126344795] = 'ap1_02_bld030', + [-1738589222] = 'ap1_02_bld031', + [2057109590] = 'ap1_02_bld032', + [-384574138] = 'ap1_02_bld03b', + [2067452028] = 'ap1_02_bld04_bar', + [627579981] = 'ap1_02_bld04_lad00', + [860928030] = 'ap1_02_bld04_lad01', + [-86161608] = 'ap1_02_bld04_lad02', + [151839639] = 'ap1_02_bld04_lad03', + [-446587839] = 'ap1_02_bld04_lad04', + [-206161686] = 'ap1_02_bld04_lad05', + [1033841311] = 'ap1_02_bld04', + [-457026689] = 'ap1_02_bld041', + [1860356487] = 'ap1_02_bld07_anx005e', + [1872446848] = 'ap1_02_bld07_anx006', + [775459196] = 'ap1_02_bld07_anx1', + [-1825974857] = 'ap1_02_bld07', + [-1465440965] = 'ap1_02_bld07df', + [-543980821] = 'ap1_02_bld10_noshad', + [1775302330] = 'ap1_02_bld10', + [1848743108] = 'ap1_02_bld10glass', + [594635260] = 'ap1_02_bld13', + [1633824385] = 'ap1_02_bld13xx', + [717548551] = 'ap1_02_bld13xxbot', + [2068212880] = 'ap1_02_bld13xxv', + [-2139085796] = 'ap1_02_bld14', + [-1064396063] = 'ap1_02_bld14vd001', + [1580949339] = 'ap1_02_bld15', + [389934331] = 'ap1_02_bld15ff', + [-286480961] = 'ap1_02_bld15ff2', + [1628988693] = 'ap1_02_bld16', + [852560007] = 'ap1_02_bld17', + [-1785115058] = 'ap1_02_bld19', + [641160945] = 'ap1_02_bussin00', + [-1593118731] = 'ap1_02_bussin003', + [1805157649] = 'ap1_02_bussin004', + [2038898926] = 'ap1_02_bussin005', + [1777566147] = 'ap1_02_bussin006', + [1481858687] = 'ap1_02_bussin007', + [1718942402] = 'ap1_02_bussin008', + [884315972] = 'ap1_02_bussin009', + [-566611162] = 'ap1_02_door_l', + [381090232] = 'ap1_02_door_l001', + [-551602996] = 'ap1_02_door_r', + [2147327434] = 'ap1_02_door_r001', + [-1959463130] = 'ap1_02_dyndor00', + [228129219] = 'ap1_02_dyndor002', + [7233390] = 'ap1_02_dyndor003', + [-368889192] = 'ap1_02_dyndor004', + [-1055530934] = 'ap1_02_dyndor005', + [-278381330] = 'ap1_02_dyndor006', + [-29959541] = 'ap1_02_dyndor007', + [2053920149] = 'ap1_02_dyndor01', + [-1039601870] = 'ap1_02_escal_master', + [-730024810] = 'ap1_02_fizza_01', + [573689859] = 'ap1_02_fizza_02', + [-238325965] = 'ap1_02_fizza_03', + [-1281669720] = 'ap1_02_frame01a', + [53796806] = 'ap1_02_frame02a', + [1043742258] = 'ap1_02_gatnums1', + [300213648] = 'ap1_02_gatnums2', + [-1847761537] = 'ap1_02_gatnums3', + [-286628922] = 'ap1_02_glue_01', + [-571817525] = 'ap1_02_glue_02', + [-881812265] = 'ap1_02_glue_03', + [-633718166] = 'ap1_02_glue_04', + [671340028] = 'ap1_02_glue_05', + [915829537] = 'ap1_02_glue_06', + [-650962057] = 'ap1_02_ground', + [-163794127] = 'ap1_02_hangings02', + [-393078820] = 'ap1_02_hangings03', + [1231772045] = 'ap1_02_hangings04', + [993049880] = 'ap1_02_hangings05', + [618631286] = 'ap1_02_hangings06', + [-1767967757] = 'ap1_02_hangings07', + [-2007935144] = 'ap1_02_hangings08', + [-1375672479] = 'ap1_02_ladda00', + [793176495] = 'ap1_02_ladda01', + [553143570] = 'ap1_02_ladda02', + [-990800574] = 'ap1_02_ladda03', + [-214142505] = 'ap1_02_ladda04', + [1990752369] = 'ap1_02_ladda05', + [690455091] = 'ap1_02_lightframea', + [400252823] = 'ap1_02_lightframeb', + [1302612780] = 'ap1_02_lightframec', + [1183572294] = 'ap1_02_mainframe', + [-209751199] = 'ap1_02_overlay00', + [-441133108] = 'ap1_02_overlay01', + [-1974591232] = 'ap1_02_overlay03', + [2088207699] = 'ap1_02_overlay04', + [-1495344607] = 'ap1_02_overlay05', + [-652624234] = 'ap1_02_overlay06', + [1017173682] = 'ap1_02_planes00', + [-1644019292] = 'ap1_02_planes003', + [-1720928135] = 'ap1_02_planes005', + [607829453] = 'ap1_02_planes005bb', + [-667503092] = 'ap1_02_planes009', + [1636087658] = 'ap1_02_sigs100', + [1345590473] = 'ap1_02_sigs101', + [2045208623] = 'ap1_02_sigs102', + [-619999813] = 'ap1_02_staircases', + [-2089052984] = 'ap1_02_staircases2', + [1641642043] = 'ap1_02_text1', + [-200643358] = 'ap1_02_texts00', + [-1160938903] = 'ap1_02_texts01', + [-2006051413] = 'ap1_02_texts02', + [1330258788] = 'ap1_02_texts03', + [-1391403280] = 'ap1_02_texts04', + [1877435550] = 'ap1_02_texts05', + [1098549189] = 'ap1_02_texts06', + [316942969] = 'ap1_02_texts07', + [1645693182] = 'ap1_02_texts08', + [642371908] = 'ap1_02_texts09', + [-1136001412] = 'ap1_02_texts09b', + [233987776] = 'ap1_02_walkway', + [-1109674967] = 'ap1_02_walkway2', + [-856927670] = 'ap1_02_walkway3', + [-215276672] = 'ap1_02_weed_01', + [-989509835] = 'ap1_02_weed_02', + [-745544630] = 'ap1_02_weed_03', + [-1211574368] = 'ap1_02_weesters00', + [-916522292] = 'ap1_02_weesters01', + [1531813547] = 'ap1_02_weesters02', + [1767586502] = 'ap1_02_weesters03', + [2134435457] = 'ap1_02_weesters04', + [294390565] = 'ap1_02_weesters05', + [600747946] = 'ap1_02_weesters06', + [875024476] = 'ap1_02_weesters07', + [1183151383] = 'ap1_02_weesters08', + [-658335341] = 'ap1_02_weesters09', + [-433279383] = 'ap1_02_westf1', + [-676032135] = 'ap1_02_westf2', + [2005750056] = 'ap1_02_westf3', + [-116936747] = 'ap1_02', + [-283045863] = 'ap1_03__ladder_002', + [-759092483] = 'ap1_03__ladder_01', + [393249829] = 'ap1_03_ap1_01_d_jumptest', + [2030512498] = 'ap1_03_bbrdgraf_slod', + [125198954] = 'ap1_03_bbrdgraf', + [-1548360425] = 'ap1_03_bbrds00', + [1123787680] = 'ap1_03_bbrds01', + [716392370] = 'ap1_03_bbrds01b', + [198969860] = 'ap1_03_bbrds01e', + [944344636] = 'ap1_03_bbrds02', + [335691981] = 'ap1_03_bld021', + [889062088] = 'ap1_03_bld024', + [1058909289] = 'ap1_03_bug1397658', + [-941189307] = 'ap1_03_cp_signs', + [554433317] = 'ap1_03_cp_signs001', + [-1186360251] = 'ap1_03_cppark00', + [473978239] = 'ap1_03_cppark008', + [805666053] = 'ap1_03_cppark009', + [-1484328768] = 'ap1_03_cppark01', + [-2035111110] = 'ap1_03_cppark010', + [1532318844] = 'ap1_03_cppark011', + [-1921074994] = 'ap1_03_cppark012', + [771386728] = 'ap1_03_cppark02bar_02', + [764551158] = 'ap1_03_cppark02bar', + [-2086097503] = 'ap1_03_cppark02bar001', + [651194197] = 'ap1_03_cppark07', + [1023006309] = 'ap1_03_cppark07pipes', + [-2114618223] = 'ap1_03_esc_cprk', + [-1829835090] = 'ap1_03_glue_01', + [1949675836] = 'ap1_03_glue_02', + [1737562099] = 'ap1_03_glue_03', + [-657327497] = 'ap1_03_glue_04', + [93039491] = 'ap1_03_hedge_cut_00', + [-153547234] = 'ap1_03_hedge_cut_01', + [-1636639397] = 'ap1_03_hedge_cut_02', + [-1994607953] = 'ap1_03_hedge_cut_03', + [-1041193898] = 'ap1_03_hedge_cut_04', + [-1397786156] = 'ap1_03_hedge_cut_05', + [1471631333] = 'ap1_03_hedge_cut_06', + [1089806945] = 'ap1_03_hedge_cut_07', + [2013991052] = 'ap1_03_hedge_cut_08', + [1700916026] = 'ap1_03_hedge_cut_09', + [-1342734592] = 'ap1_03_hedge_cut_10', + [-1127540569] = 'ap1_03_hedge_cut_11', + [-629189625] = 'ap1_03_hedge_cut_12', + [-332531868] = 'ap1_03_hedge_cut_13', + [-1089233616] = 'ap1_03_hedge_cut_14', + [1506274513] = 'ap1_03_jetsonsign002', + [-14665853] = 'ap1_03_jetsonsign003', + [-474089049] = 'ap1_03_jetsonsign1', + [-347159795] = 'ap1_03_jumptest2', + [430705327] = 'ap1_03_ladder_01_lod001', + [-1291923538] = 'ap1_03_lsiasubway_rprox', + [-1522582990] = 'ap1_03_lsiasubwayintshell', + [615470915] = 'ap1_03_metcan', + [1976961125] = 'ap1_03_metrostepsb', + [-223747318] = 'ap1_03_noose', + [-1326024363] = 'ap1_03_noose001', + [130213965] = 'ap1_03_nuhedges00', + [-114865386] = 'ap1_03_nuhedges01', + [-1825656233] = 'ap1_03_nuhedges016', + [-418044174] = 'ap1_03_nuhedges02', + [-668858100] = 'ap1_03_nuhedges03', + [1251569145] = 'ap1_03_nuhedges04', + [771470526] = 'ap1_03_nuhedges05', + [531470370] = 'ap1_03_nuhedges06', + [-1838678635] = 'ap1_03_nuhedges07', + [1964163819] = 'ap1_03_nuhedges08', + [1724982888] = 'ap1_03_nuhedges09', + [-916886289] = 'ap1_03_nuhedges10', + [-1759606662] = 'ap1_03_nuhedges11', + [15457291] = 'ap1_03_nuhedges12', + [262240630] = 'ap1_03_nuhedges13', + [-578022068] = 'ap1_03_nuhedges14', + [326485352] = 'ap1_03_oilspl00', + [-129646991] = 'ap1_03_oilspl002', + [-331221247] = 'ap1_03_oilspl01', + [-1173872511] = 'ap1_03_oilspl01bbb', + [1043541022] = 'ap1_03_rndb03', + [-1019595222] = 'ap1_03_rndb06', + [-455806565] = 'ap1_03_rndb14', + [463265578] = 'ap1_03_rndb18', + [2066325358] = 'ap1_03_rndb20', + [785548993] = 'ap1_03_rndb24', + [475750863] = 'ap1_03_rndb26', + [654309120] = 'ap1_03_rndb29', + [-630300914] = 'ap1_03_rndb32', + [905975352] = 'ap1_03_rndb39', + [1215421175] = 'ap1_03_rox00', + [-99041726] = 'ap1_03_rox01', + [1835575419] = 'ap1_03_sculpt', + [-117209361] = 'ap1_03_stair_break1', + [-1211345944] = 'ap1_03_stercase', + [-849911059] = 'ap1_03_stop_deleting005', + [-648005611] = 'ap1_03_stuff_2', + [1295705907] = 'ap1_03_stuff00', + [-1086418408] = 'ap1_03_stuff009', + [1617169797] = 'ap1_03_stuff01', + [1746397508] = 'ap1_03_stuff011', + [1458357998] = 'ap1_03_stuff012', + [1687249459] = 'ap1_03_stuff013', + [192799670] = 'ap1_03_stuff03', + [-609483757] = 'ap1_03_stuff04', + [-1082296725] = 'ap1_03_stuff04th', + [784312893] = 'ap1_03_stuff05', + [20369192] = 'ap1_03_stuff06', + [-1563127195] = 'ap1_03_stuff08', + [1107341855] = 'ap1_03_td_cpark', + [2012347155] = 'ap1_03_td_cpark2', + [1915968531] = 'ap1_03_thing00v', + [-654236099] = 'ap1_03_thing01t', + [-1624624496] = 'ap1_03_thing01u', + [1200656219] = 'ap1_03_thing03', + [-629135377] = 'ap1_03_thing05p', + [346532234] = 'ap1_03_thing06', + [1482337260] = 'ap1_03_thing06int', + [-1664276234] = 'ap1_03_thing06x', + [-2147022394] = 'ap1_03_towr013', + [-1847480965] = 'ap1_03_towr014', + [-1687240547] = 'ap1_03_towr015', + [88386740] = 'ap1_03_towr06', + [1371685102] = 'ap1_03_towr07_rl', + [-756365311] = 'ap1_03_towr07', + [-2091034642] = 'ap1_03_towr07aaz', + [915571079] = 'ap1_03_towr07b', + [252818054] = 'ap1_03_towr07f', + [1133855224] = 'ap1_03_towr69', + [1394685156] = 'ap1_03_tubeolay_', + [-836629677] = 'ap1_03_tubeolay_001', + [-1845128421] = 'ap1_03_tubeolay_002', + [-1362834279] = 'ap1_03_tubeolay_003', + [1956894804] = 'ap1_03_tubeolay_004', + [-2090469928] = 'ap1_03_tubeolay_005', + [1388385423] = 'ap1_03_tubeolay_006', + [-311268548] = 'ap1_03_tubething', + [-439154150] = 'ap1_03_tubething001', + [-1071104315] = 'ap1_03_tubething002', + [-912305741] = 'ap1_03_tubething003', + [318530668] = 'ap1_03_tubething004', + [-229694702] = 'ap1_03_tubething006', + [864383779] = 'ap1_03_weed_01', + [543378655] = 'ap1_03_weed_02', + [385858072] = 'ap1_03_weed_03', + [-1590762863] = 'ap1_03cpkng01', + [2048562281] = 'ap1_03cpkng03', + [-2010238828] = 'ap1_03cpkng04', + [2006978424] = 'ap1_03cpkng05', + [-587269823] = 'ap1_03grun05bxk', + [448066732] = 'ap1_03grun05bxo', + [1865555365] = 'ap1_03grun05bxs', + [-945598826] = 'ap1_03grun05bxt', + [384178007] = 'ap1_03grun05bxxx', + [-284451482] = 'ap1_03grun05bxz', + [1080565679] = 'ap1_04__decal002', + [1683189945] = 'ap1_04__ladder_01', + [-2085170827] = 'ap1_04_2ee_str', + [502746031] = 'ap1_04_2ee_str2', + [1797011122] = 'ap1_04_alley_01_o', + [-2064164542] = 'ap1_04_alley_01', + [-1743918879] = 'ap1_04_alley_01b', + [127228159] = 'ap1_04_alley_01blend1', + [-1688014691] = 'ap1_04_alley_01blend1b', + [-1868244191] = 'ap1_04_alley_01blend1c', + [1622937808] = 'ap1_04_alley_02', + [-881929294] = 'ap1_04_alley_02a', + [1938558829] = 'ap1_04_alley_barr1', + [267282737] = 'ap1_04_api_04_tempo010', + [576200718] = 'ap1_04_b_pills_lod', + [-946009723] = 'ap1_04_bannerbld', + [1598220589] = 'ap1_04_bannerpipe', + [-908852863] = 'ap1_04_billssss00', + [532720989] = 'ap1_04_billssss01', + [-317274106] = 'ap1_04_billssss02', + [1155954600] = 'ap1_04_billssss03', + [-1308490438] = 'ap1_04_bits4801c', + [-1142499677] = 'ap1_04_bits4811', + [-1758950105] = 'ap1_04_bits4812', + [1943125951] = 'ap1_04_bits48120', + [-1440863165] = 'ap1_04_bits48126', + [612589266] = 'ap1_04_bits48gls', + [-1973692662] = 'ap1_04_bits48in', + [-629477083] = 'ap1_04_bridge_cablehd', + [-175160361] = 'ap1_04_bridge_cables', + [50871870] = 'ap1_04_bridge_rail_1', + [373384364] = 'ap1_04_bridge_rail_2', + [126011183] = 'ap1_04_bridge_rail_3', + [-1164432037] = 'ap1_04_bridge_rail_4', + [-1476622300] = 'ap1_04_bridge_rail_5', + [-551815582] = 'ap1_04_bridge_rail_6', + [-762178336] = 'ap1_04_bridge01', + [-531124117] = 'ap1_04_bridge02', + [2115802345] = 'ap1_04_bridgedet', + [-1889299074] = 'ap1_04_brigge_decal002', + [-724487497] = 'ap1_04_brigge_decal002a', + [-1363024982] = 'ap1_04_brigge_decal2', + [2097590207] = 'ap1_04_brigge_decal2a', + [-913368720] = 'ap1_04_brigge_decal6', + [-706334178] = 'ap1_04_brigge_decal7', + [-660339764] = 'ap1_04_cablemesh_thvy', + [-1013806967] = 'ap1_04_chopshop003', + [-1396357897] = 'ap1_04_chopshop1_o', + [-2068405674] = 'ap1_04_chopshop2_gls', + [1790886961] = 'ap1_04_chopshop2_o', + [-705918315] = 'ap1_04_chopshop3_o', + [621422668] = 'ap1_04_chopshopwires', + [1850476691] = 'ap1_04_cp376', + [-1491094721] = 'ap1_04_crmdgrn_o', + [-111674828] = 'ap1_04_crmdgrn', + [-1202768473] = 'ap1_04_dirty00', + [206757405] = 'ap1_04_dirty01', + [-88890644] = 'ap1_04_extrabob_fizz', + [317144031] = 'ap1_04_extrabob009', + [540424306] = 'ap1_04_extrabob01', + [729312825] = 'ap1_04_extrabob011', + [856677925] = 'ap1_04_extrabob02', + [641056464] = 'ap1_04_extrabob04_fizz', + [1726989800] = 'ap1_04_extrabob04', + [524924573] = 'ap1_04_extrabob07', + [1949540343] = 'ap1_04_grun2', + [-2134694763] = 'ap1_04_grun2b', + [1176334521] = 'ap1_04_grun2bxx', + [-1079056545] = 'ap1_04_hdrails', + [-943374825] = 'ap1_04_hdrailsb', + [-1207353802] = 'ap1_04_hedge01', + [-1236087985] = 'ap1_04_hedge01top001', + [1811785244] = 'ap1_04_hedge02', + [83022621] = 'ap1_04_hedge02top', + [2050966175] = 'ap1_04_hedge03', + [1871862228] = 'ap1_04_hedgetop', + [1351213305] = 'ap1_04_ladder_fizz_hd', + [1424849476] = 'ap1_04_ladder003', + [117271896] = 'ap1_04_ladder1', + [169522370] = 'ap1_04_light_master', + [2046292941] = 'ap1_04_lsia_', + [1225951793] = 'ap1_04_mesh5', + [1259981033] = 'ap1_04_nusps00', + [824677637] = 'ap1_04_nusps01', + [-161172683] = 'ap1_04_object004', + [-1918070289] = 'ap1_04_object374', + [1129761504] = 'ap1_04_opium_emissive_lod', + [1814728438] = 'ap1_04_opium_emissive', + [1027047908] = 'ap1_04_overlay005', + [2140966536] = 'ap1_04_pipes', + [906265113] = 'ap1_04_pipes01', + [-1930743835] = 'ap1_04_pipes02', + [-1700672686] = 'ap1_04_pipes03', + [149102704] = 'ap1_04_planefizz', + [-1120036457] = 'ap1_04_refl_04', + [-1752252376] = 'ap1_04_roads00', + [-1482661813] = 'ap1_04_roads01', + [-1180957634] = 'ap1_04_roads02', + [-865261088] = 'ap1_04_roads03', + [-567292571] = 'ap1_04_roads04', + [-490219879] = 'ap1_04_roads05', + [-184157419] = 'ap1_04_roads06', + [166307036] = 'ap1_04_roads08', + [467355839] = 'ap1_04_roads09', + [1409455650] = 'ap1_04_roads09olay', + [73343083] = 'ap1_04_roads10', + [357089854] = 'ap1_04_roads11', + [687991216] = 'ap1_04_roads12', + [235269178] = 'ap1_04_sherlites00', + [1132456465] = 'ap1_04_sherlites002', + [-647359001] = 'ap1_04_sherlites003', + [-46904681] = 'ap1_04_sherlites01', + [-1871999266] = 'ap1_04_sheryplan00', + [-1186340710] = 'ap1_04_sheryplan01', + [-1394784319] = 'ap1_04_sheryplan02', + [-1004913775] = 'ap1_04_simu', + [1184398674] = 'ap1_04_standstrut00', + [887544303] = 'ap1_04_standstrut01', + [571716681] = 'ap1_04_standstrut02', + [274272468] = 'ap1_04_standstrut03', + [-1930556928] = 'ap1_04_standstrut04', + [1103989145] = 'ap1_04_tank', + [1884978968] = 'ap1_04_test_wire', + [1359713323] = 'ap1_04_test_wire01', + [377280163] = 'ap1_04_test_wireb', + [1066279089] = 'ap1_04_thing01u001', + [-683993487] = 'ap1_04_uni2grunn', + [-789706096] = 'ap1_04_uni2grunnb', + [437984489] = 'ap1_04_uni2grunnc', + [831726390] = 'ap1_04_unit003', + [-982267159] = 'ap1_04_unit005', + [1198455097] = 'ap1_04_unit005d', + [574169306] = 'ap1_04_unit081', + [1037346009] = 'ap1_04_unit081b', + [-82897150] = 'ap1_04_unit081bg', + [1461849606] = 'ap1_04_unit081bg001', + [-1768521803] = 'ap1_04_unit081bg1a', + [24255651] = 'ap1_04_unit081bgvens', + [1584875492] = 'ap1_04_unit081bits', + [-1896063543] = 'ap1_04_unit081bits1a', + [-1389243247] = 'ap1_04_unit081bits2', + [-2146516654] = 'ap1_04_unit081bits69', + [-67407365] = 'ap1_04_unit081bitsa', + [1319638357] = 'ap1_04_unit081bitsdets', + [1141745886] = 'ap1_04_unit081bt', + [-550838494] = 'ap1_04_unit081bv', + [-338461521] = 'ap1_04_unit08det_a', + [351227630] = 'ap1_04_unit08det_b', + [440826189] = 'ap1_04_unit1b', + [1225676812] = 'ap1_04_unit2d', + [-1574532561] = 'ap1_04_unit2e', + [85319361] = 'ap1_04_unit2ee', + [1241908996] = 'ap1_04_unit2eedec3', + [-1115770266] = 'ap1_04_unit2eevens', + [-339510507] = 'ap1_04_unit2eff', + [749645254] = 'ap1_04_unit2em', + [-1961915295] = 'ap1_04_unitdet', + [-971096351] = 'ap1_04_xerostair00', + [-69653926] = 'ap1_04_xerostair01', + [-881047139] = 'ap1_04_xerostair02', + [-2016034235] = 'ap1_04_xerostair03', + [-239523512] = 'ap1_04hotel', + [-711822279] = 'ap1_04hotel001', + [1328494252] = 'ap1_04hotelbxx', + [-200330871] = 'ap1_04hoteldd', + [-903616733] = 'ap1_04hoteldd002', + [55374813] = 'ap1_04hotelpipe00', + [1093889961] = 'ap1_04hotelpipe01', + [250907436] = 'ap1_04hotelpipe02', + [-662528411] = 'ap1_04hotelpipe03', + [1368538828] = 'ap1_04sculpt', + [1441353732] = 'ap1_emissive_ap1_01a_ema', + [1773402009] = 'ap1_emissive_ap1_01a_emb', + [-456979565] = 'ap1_emissive_ap1_01b_ema', + [1729957961] = 'ap1_emissive_ap1_01b_emb', + [-1734216878] = 'ap1_emissive_ap1_01b_emc', + [-519882390] = 'ap1_emissive_ap1_01b_emd_lod', + [-1954031330] = 'ap1_emissive_ap1_01b_emd', + [-1256121631] = 'ap1_emissive_ap1_02', + [1463138332] = 'ap1_emissive_ap1_04_ema', + [-1376361056] = 'ap1_emissive_ap1_04_emb', + [1958572843] = 'ap1_emissive_ap1_04_emc', + [663494042] = 'ap1_emissive_smterm_ew', + [-1072832652] = 'ap1_emissive_towr07_em', + [2083865423] = 'ap1_lod_emi_a_slod3', + [1078516728] = 'ap1_lod_emi_b_slod3', + [1851460340] = 'ap1_lod_emissive', + [-1008818392] = 'ap1_lod_slod4', + [-1207431159] = 'armytanker', + [-1476447243] = 'armytrailer', + [-1637149482] = 'armytrailer2', + [-1809822327] = 'asea', + [-1807623979] = 'asea2', + [-1903012613] = 'asterope', + [-2115793025] = 'avarus', + [-2140431165] = 'bagger', + [-399841706] = 'baletrailer', + [-808831384] = 'baller', + [142944341] = 'baller2', + [1878062887] = 'baller3', + [634118882] = 'baller4', + [470404958] = 'baller5', + [666166960] = 'baller6', + [-1041692462] = 'banshee', + [633712403] = 'banshee2', + [-823509173] = 'barracks', + [1074326203] = 'barracks2', + [630371791] = 'barracks3', + [-114291515] = 'bati', + [-891462355] = 'bati2', + [-1574447115] = 'beerrow_local', + [-715967502] = 'beerrow_world', + [2053223216] = 'benson', + [1824333165] = 'besra', + [1274868363] = 'bestiagts', + [86520421] = 'bf400', + [1126868326] = 'bfinjection', + [-1288359593] = 'bh1_01_ammuwin_noshadows', + [284768930] = 'bh1_01_bh150b', + [35560685] = 'bh1_01_bh150c', + [-144075714] = 'bh1_01_build_base', + [852283882] = 'bh1_01_detail', + [-84774192] = 'bh1_01_emissivesigns', + [-590689250] = 'bh1_01_ground_pool', + [2132095547] = 'bh1_01_ground', + [-1033595146] = 'bh1_01_mall_detail', + [1199251829] = 'bh1_01_mall002_signs', + [-1178255810] = 'bh1_01_mall002', + [-2050661774] = 'bh1_01_malladder1', + [567298342] = 'bh1_01_poolladder', + [-2010533777] = 'bh1_01_railings', + [813889502] = 'bh1_01_shadow', + [1167365005] = 'bh1_02_bh1_2_accessladder', + [1692391332] = 'bh1_02_bigframe_fizz_lod001', + [1522588539] = 'bh1_02_bigframe_fizz', + [-587754124] = 'bh1_02_bigframe_fizz001', + [698915883] = 'bh1_02_foodrainroof_01', + [918926949] = 'bh1_02_foodrainroof_02', + [1924868465] = 'bh1_02_fs1_d01', + [-1760890340] = 'bh1_02_fs1_d02', + [-2069050016] = 'bh1_02_fs1_d03', + [845588693] = 'bh1_02_fs1_d04', + [541295759] = 'bh1_02_fs1_d05', + [1307762669] = 'bh1_02_fs1_d06', + [5817514] = 'bh1_02_fs1_d07', + [-545338153] = 'bh1_02_fs1_dtl01', + [-315791308] = 'bh1_02_fs1_dtl02', + [-1141701184] = 'bh1_02_fs1_dtl03', + [-1746725677] = 'bh1_02_fs1_dtl2', + [687314612] = 'bh1_02_fs1_shutters', + [1067316503] = 'bh1_02_fs1', + [231936386] = 'bh1_02_fs2', + [781323563] = 'bh1_02_fsgrnd', + [1116637692] = 'bh1_02_fsscaff', + [1188058729] = 'bh1_02_fsscaffold_bar1', + [958610191] = 'bh1_02_fsscaffold_bar2', + [729063346] = 'bh1_02_fsscaffold_bar3', + [2115585278] = 'bh1_02_fsscaffold_bar4', + [-1949048717] = 'bh1_02_fsscaffold_bar5', + [333945782] = 'bh1_02_gangwayrail', + [2094697726] = 'bh1_02_girdera', + [-2030722764] = 'bh1_02_girderb', + [1496565169] = 'bh1_02_girderc', + [-555331304] = 'bh1_02_girderd', + [928156559] = 'bh1_02_grd_1', + [2039877653] = 'bh1_02_grd_2', + [639276393] = 'bh1_02_office1_d', + [-1004178851] = 'bh1_02_office1_det', + [-683104618] = 'bh1_02_office1_railing01_fizz', + [1911898762] = 'bh1_02_office1_railing02_fizz', + [356362657] = 'bh1_02_office1_railing03_fizz', + [2068173522] = 'bh1_02_office1_st02_fizz', + [-1664513820] = 'bh1_02_office1_stair_fizz', + [2075675266] = 'bh1_02_office1', + [-669122403] = 'bh1_02_officescaff', + [1582408027] = 'bh1_02_pool_detail', + [1567709474] = 'bh1_02_scaff_ir2_bakeproxy', + [1200610752] = 'bh1_02_sec_fence_01', + [-77313926] = 'bh1_02_securityrailing01', + [225569941] = 'bh1_02_securityrailing02', + [-1920308020] = 'bh1_02_securityrailing03', + [-688062910] = 'bh1_02_ss_01_d', + [679037611] = 'bh1_02_ss_01_d01', + [-699947447] = 'bh1_02_ss_01_d02', + [200354863] = 'bh1_02_ss_01_rail01_fizz', + [-780031607] = 'bh1_02_ss_01_rail02_fizz', + [2101504757] = 'bh1_02_ss_01_railingtop', + [-614316647] = 'bh1_02_ss_01_x01_fizz', + [527278189] = 'bh1_02_ss_01_x02_fizz', + [-104758259] = 'bh1_02_ss_01_x03_fizz', + [-1994805065] = 'bh1_02_ss_01_x04_fizz', + [35605697] = 'bh1_02_ss_01', + [-1402706424] = 'bh1_02_ss_04_d01', + [-707708703] = 'bh1_02_ss_04_d03', + [-341586127] = 'bh1_02_ss_04_rail01_fizz', + [-1387429708] = 'bh1_02_ss_04_rail02_fizz', + [-856168028] = 'bh1_02_ss_04_rail03_fizz', + [-1804912702] = 'bh1_02_ss_04_rail04_fizz', + [1633932595] = 'bh1_02_ss_04_rail05_fizz', + [-131417751] = 'bh1_02_ss_04_rail06_fizz', + [-1189594444] = 'bh1_02_ss_04', + [-1477714926] = 'bh1_02_stepsfizz', + [1348636033] = 'bh1_03_bld27_d', + [811563879] = 'bh1_03_bld27_dtl', + [-136112545] = 'bh1_03_bld27', + [-1820555747] = 'bh1_03_bld29_d', + [1048421275] = 'bh1_03_bld29', + [-878050612] = 'bh1_03_brig01_d', + [561635] = 'bh1_03_brig01', + [1678119375] = 'bh1_03_brigrail_lod', + [-1412119595] = 'bh1_03_brigrail', + [1891070752] = 'bh1_03_cable_ramp', + [-485047332] = 'bh1_03_cable_ramp2', + [509311795] = 'bh1_03_floaty_windows', + [1681408880] = 'bh1_03_gangwayrail', + [-353442574] = 'bh1_03_gate', + [20706687] = 'bh1_03_grnd1', + [-209331693] = 'bh1_03_grnd2', + [276522069] = 'bh1_03_laddergang', + [2092479837] = 'bh1_03_rail01', + [1801818807] = 'bh1_03_rail02', + [-504070189] = 'bh1_03_rail03', + [1223871923] = 'bh1_03_rain_proxy01', + [305094701] = 'bh1_03_rain_proxy02', + [-462125896] = 'bh1_03_rain_proxy03', + [665412286] = 'bh1_03_roofladder_01', + [-782873989] = 'bh1_03_s1_006_d01', + [-403210447] = 'bh1_03_s1_006', + [1152948144] = 'bh1_03_s1_railings', + [-1155151140] = 'bh1_03_s1_rework_dtl', + [-920216587] = 'bh1_03_s1_rework_frame', + [-9669451] = 'bh1_03_s1_rework', + [1211631067] = 'bh1_03_satdish', + [-1411996509] = 'bh1_03_satdish01_l1', + [1627881248] = 'bh1_03_satdish01', + [1844559325] = 'bh1_03_satdish02_l1', + [1314773453] = 'bh1_03_satdish02', + [-1695269540] = 'bh1_03_satdish03_l1', + [2091726443] = 'bh1_03_satdish03', + [1924853348] = 'bh1_03_securityrail01', + [-32504560] = 'bh1_03_securityrail02', + [1125642066] = 'bh1_03_ss_02_d', + [554410404] = 'bh1_03_ss_02_dtl', + [-904729199] = 'bh1_03_ss_02', + [-258453607] = 'bh1_03_ss02_frame01', + [-103390699] = 'bh1_03_ss02_frame02', + [-752118592] = 'bh1_03_ss02_frame03', + [-2031975776] = 'bh1_03_towerfizz', + [1799908842] = 'bh1_03_vent01', + [1488308425] = 'bh1_03_vent02', + [-1478578556] = 'bh1_03_ventrailing', + [-709377107] = 'bh1_03_wall01', + [-1023893969] = 'bh1_03_wall02', + [1024830347] = 'bh1_03_winbar01', + [1650456095] = 'bh1_03_winbar02', + [413393572] = 'bh1_03_winbar03', + [742459874] = 'bh1_03_winbar04', + [1727911140] = 'bh1_04_aptrail01', + [1431056769] = 'bh1_04_aptrail02', + [190619043] = 'bh1_04_aptrail03', + [2033121606] = 'bh1_04_aptrail04', + [536364762] = 'bh1_04_aptrail05', + [229810767] = 'bh1_04_aptrail06', + [1853657102] = 'bh1_04_bld2a02', + [-1743707105] = 'bh1_04_build004_fizz', + [-1309403343] = 'bh1_04_build004_ledge', + [642235009] = 'bh1_04_build004_ledge001', + [607716542] = 'bh1_04_build004', + [-463832007] = 'bh1_04_build04_emm_glow', + [-1991942930] = 'bh1_04_build04_emm', + [1578946836] = 'bh1_04_build1dr_lod', + [847387975] = 'bh1_04_build2_railing', + [-408663889] = 'bh1_04_build2_trelace', + [-1277332065] = 'bh1_04_build3', + [-1899574182] = 'bh1_04_details1', + [-1146885069] = 'bh1_04_details2_railing', + [589288806] = 'bh1_04_details2_railing02', + [-355056232] = 'bh1_04_details2a', + [-1219836952] = 'bh1_04_details2a02', + [1161624164] = 'bh1_04_details2b', + [1461558817] = 'bh1_04_details2c', + [-474532902] = 'bh1_04_details3a', + [-1207837588] = 'bh1_04_details3b', + [1684675576] = 'bh1_04_dets_orn_gates', + [-1708213219] = 'bh1_04_dets_orn_gates02', + [445189006] = 'bh1_04_dont_delete', + [-123231140] = 'bh1_04_ema', + [-362739761] = 'bh1_04_emb', + [472345435] = 'bh1_04_emc', + [846630014] = 'bh1_04_g01', + [-1421363226] = 'bh1_04_g01a', + [-2063176860] = 'bh1_04_g01b', + [1085286641] = 'bh1_04_g02', + [-1732309171] = 'bh1_04_g02a', + [-896175367] = 'bh1_04_g02b', + [267748605] = 'bh1_04_ground1', + [1972293678] = 'bh1_04_ground2', + [-1441906114] = 'bh1_04_railing_fizz01', + [-395833487] = 'bh1_04_wtr', + [1500551655] = 'bh1_05_bucketseat', + [-101984667] = 'bh1_05_build1_emm', + [426649662] = 'bh1_05_build1', + [636844841] = 'bh1_05_details', + [1012689026] = 'bh1_05_details01', + [-1123096087] = 'bh1_05_details02', + [1823288419] = 'bh1_05_ground1', + [-1428438233] = 'bh1_05_hedge_dtl', + [-463964775] = 'bh1_05_railinge', + [1823049281] = 'bh1_05_railings', + [869930135] = 'bh1_05_railingw', + [-1055861091] = 'bh1_05_shadowmesh', + [1792759856] = 'bh1_05_walkway_railing01', + [2100362459] = 'bh1_05_walkway_railing02', + [-1102915091] = 'bh1_05_walkway', + [359969983] = 'bh1_05_wtr', + [-551095741] = 'bh1_05_wtr02', + [-907764419] = 'bh1_06_building_wins', + [865034338] = 'bh1_06_building', + [2032548067] = 'bh1_06_details', + [-1517553296] = 'bh1_06_ivydecal', + [-91708484] = 'bh1_06_lifeinvadersign', + [-1023113751] = 'bh1_06_lobby_fake_lod', + [748223339] = 'bh1_06_lobby_fake', + [-1800053097] = 'bh1_06_railing', + [-1301581721] = 'bh1_06_v_int_lod', + [-1046905586] = 'bh1_07_bank', + [2146248619] = 'bh1_07_build1', + [1807053000] = 'bh1_07_build2_details', + [923309627] = 'bh1_07_build2', + [1936994544] = 'bh1_07_decal01', + [-1029648568] = 'bh1_07_decal02', + [-1729627177] = 'bh1_07_decal03', + [1714198113] = 'bh1_07_decal04', + [639774357] = 'bh1_07_decals05', + [1236137388] = 'bh1_07_decals07', + [670466200] = 'bh1_07_flagpoles', + [-1916682324] = 'bh1_07_fountainwater', + [-219734764] = 'bh1_07_ground', + [-952859393] = 'bh1_08_bld2', + [825822488] = 'bh1_08_building01', + [248533003] = 'bh1_08_cablemesh31596_tstd', + [1976150613] = 'bh1_08_cablemesh31597_tstd', + [1922297239] = 'bh1_08_cablemesh8486_hvstd', + [55174722] = 'bh1_08_carparkcanopy', + [-2038994718] = 'bh1_08_cp_fizz', + [-1206553917] = 'bh1_08_details1', + [-1445276082] = 'bh1_08_details2', + [-1668170820] = 'bh1_08_details3', + [-1907613903] = 'bh1_08_details4', + [1155209589] = 'bh1_08_em_a', + [-603554352] = 'bh1_08_em', + [198009442] = 'bh1_08_fixedseating', + [1347285254] = 'bh1_08_furhedge01', + [1728978546] = 'bh1_08_furhedge02', + [-441541687] = 'bh1_08_furhedge03', + [-101727157] = 'bh1_08_furhedge04', + [754693549] = 'bh1_08_glue', + [1493372499] = 'bh1_08_glue2', + [-271615357] = 'bh1_08_grnd', + [2008959775] = 'bh1_08_hedge_sqr', + [-2061180958] = 'bh1_08_parkingdoor', + [-593537274] = 'bh1_08_parkingdoor002', + [1713395415] = 'bh1_08_propertyfudger', + [708399690] = 'bh1_08_railing', + [1489770422] = 'bh1_08_shadow_proxy', + [-910187827] = 'bh1_08_shadowmesh_slod', + [2110457052] = 'bh1_08_shadowmesh', + [1336119588] = 'bh1_09_bld_01_canopy', + [1359069635] = 'bh1_09_bld_01', + [1812818898] = 'bh1_09_bld_02_details', + [322338655] = 'bh1_09_bld_02_wind1_iref003', + [-473129780] = 'bh1_09_bld_02_wind1', + [-1839542077] = 'bh1_09_bld_02_wind2_iref001', + [-418929854] = 'bh1_09_bld_02_wind2', + [-185267805] = 'bh1_09_bld_02', + [-644776607] = 'bh1_09_bld_03_adlegs', + [-1224604071] = 'bh1_09_bld_03_fuzz01', + [1438964380] = 'bh1_09_bld_03_leo_sign', + [-1370100572] = 'bh1_09_bld_03_rail01', + [-1048374526] = 'bh1_09_bld_03_rail02', + [-423793356] = 'bh1_09_bld_03', + [-1600591944] = 'bh1_09_bld_decals', + [-1309598738] = 'bh1_09_bld_sml', + [1311592879] = 'bh1_09_canopybars', + [-369334011] = 'bh1_09_details1', + [-653441241] = 'bh1_09_details2', + [-471546616] = 'bh1_09_details2b', + [-620597331] = 'bh1_09_fizzy_rails_01', + [218429569] = 'bh1_09_fizzy_rails', + [1720566708] = 'bh1_09_fizzy_steps', + [1455084130] = 'bh1_09_grnd_01', + [-403538651] = 'bh1_09_grnd_03_details', + [-798460479] = 'bh1_09_grnd_03_structures', + [822284434] = 'bh1_09_long_rail_fizzz', + [1455044551] = 'bh1_09_no_shadow', + [879580416] = 'bh1_09_pillars_01', + [1613171453] = 'bh1_09_props_lightsupport001', + [-1621611924] = 'bh1_09_proxy', + [1760105586] = 'bh1_09_shitaz', + [-1232967420] = 'bh1_11__build03', + [1381191739] = 'bh1_11_build01', + [1869056615] = 'bh1_11_build02', + [-580237681] = 'bh1_11_fizzy_strutts', + [-990088518] = 'bh1_11_glue_1', + [-1694294328] = 'bh1_11_glue_2', + [1476737062] = 'bh1_11_glue', + [-1015035763] = 'bh1_11_glue1', + [-1189891147] = 'bh1_11_glue2', + [-1363304695] = 'bh1_11_glue3', + [2131953521] = 'bh1_11_ground', + [695314763] = 'bh1_11_int', + [1000288188] = 'bh1_11_logos', + [12160631] = 'bh1_11fizzibars_01', + [-497921627] = 'bh1_11fizzibars_02', + [1311691311] = 'bh1_13_alground', + [-410473439] = 'bh1_13_alleygrdec1', + [-764029784] = 'bh1_13_bh13_carshowch003', + [1601594286] = 'bh1_13_build1', + [1362085665] = 'bh1_13_build2', + [71380293] = 'bh1_13_build3', + [1483736679] = 'bh1_13_build4_emis1', + [-190476786] = 'bh1_13_build4', + [587546567] = 'bh1_13_carpark_gate', + [2120965285] = 'bh1_13_carpark01', + [-503654922] = 'bh1_13_glue', + [663565805] = 'bh1_13_ivy001', + [-769658143] = 'bh1_13_park_bars', + [662319953] = 'bh1_13_shadowproxy', + [-376154091] = 'bh1_13_walldec1', + [-1682686890] = 'bh1_13_walldec2', + [-922839318] = 'bh1_13_walldec3', + [-130517667] = 'bh1_13_walldec4', + [2052159893] = 'bh1_13_walldec5', + [-1485018428] = 'bh1_13_weed', + [-1959132136] = 'bh1_14_bld1_rl', + [-402767186] = 'bh1_14_build1', + [-29855966] = 'bh1_14_build2', + [-940637552] = 'bh1_14_build3', + [-566939876] = 'bh1_14_build4', + [2038536976] = 'bh1_14_detail_1', + [-2100941427] = 'bh1_14_detail_2', + [1300410682] = 'bh1_14_detail', + [1111306782] = 'bh1_14_fizzi_frame', + [567964496] = 'bh1_14_grnd', + [-675945239] = 'bh1_14_ivy01', + [-1392996497] = 'bh1_14_ivy02', + [1423073602] = 'bh1_15_alleygr_dec', + [-1515753748] = 'bh1_15_alleygr', + [2023660193] = 'bh1_15_bench_posh', + [903702989] = 'bh1_15_bld1', + [-1214190254] = 'bh1_15_bld2', + [-1453993796] = 'bh1_15_bld3', + [-1693633493] = 'bh1_15_bld4', + [-2052734052] = 'bh1_15_decals_01', + [-1524923765] = 'bh1_15_decals_02', + [-1151226089] = 'bh1_15_decals_03', + [1823239905] = 'bh1_15_decals', + [-838902557] = 'bh1_15_details', + [-1814999854] = 'bh1_15_emis_1', + [998999324] = 'bh1_15_emis_lod', + [-398408169] = 'bh1_15_fizzladder', + [1556020831] = 'bh1_15_hedge_tops', + [531175976] = 'bh1_15_lastmin_cols', + [-834914240] = 'bh1_15_lastmin_cols2', + [-1019949860] = 'bh1_15_ponsonby_glass', + [-175009530] = 'bh1_15_trim_detail', + [-708059352] = 'bh1_15_usher_nonfizz', + [-620810183] = 'bh1_16_3_locked_doors', + [1276306648] = 'bh1_16_bld_rails', + [-1355799115] = 'bh1_16_bld_rails2', + [1463729611] = 'bh1_16_bld01_det_01', + [-1118297249] = 'bh1_16_bld01_det_ns', + [-65147102] = 'bh1_16_bld01_det', + [873104861] = 'bh1_16_bld01', + [1102848320] = 'bh1_16_bld02', + [251679191] = 'bh1_16_bld03_det', + [1325513779] = 'bh1_16_bld03', + [710596297] = 'bh1_16_bld03b', + [-1223149155] = 'bh1_16_bld04_det', + [1840746485] = 'bh1_16_bld04_signol', + [1563646102] = 'bh1_16_bld04', + [764939228] = 'bh1_16_dec_01', + [1040034983] = 'bh1_16_dec_02', + [1211875619] = 'bh1_16_dec_03', + [1481138492] = 'bh1_16_dec_04', + [-1795521776] = 'bh1_16_fakeint', + [-1136434737] = 'bh1_16_fountain', + [2067444438] = 'bh1_16_fountwater_dynamic', + [-959687626] = 'bh1_16_grd_01', + [437219855] = 'bh1_16_grdb_01', + [933783555] = 'bh1_16_jewel2_fake_lod', + [-877317073] = 'bh1_16_jewel2_fake', + [892244804] = 'bh1_16_ladder_mission_fizz', + [-960256113] = 'bh1_16_post_heist_boards', + [-285677174] = 'bh1_16_preflec_proxylod', + [-901984656] = 'bh1_16_rail_03', + [1262119790] = 'bh1_16_refl_proxy_dumhd', + [-49226685] = 'bh1_16_scaff', + [-446402197] = 'bh1_16_swallow_disp_m', + [376257781] = 'bh1_16_temprefitmilo_lod', + [-1295566325] = 'bh1_16_v_jewel_milo_lod', + [-994517155] = 'bh1_17_bld_d', + [-444352941] = 'bh1_17_bld', + [1406682134] = 'bh1_17_vapid_e_dummy', + [-789061585] = 'bh1_17_vapid', + [1770757352] = 'bh1_18_bh1_small_rail', + [-1418550949] = 'bh1_18_bigivy', + [115802712] = 'bh1_18_bld01_arch', + [-814666429] = 'bh1_18_bld01_d1', + [-1112110642] = 'bh1_18_bld01_d2', + [-1312394770] = 'bh1_18_bld01_d3', + [50994830] = 'bh1_18_bld01_glue', + [-768594598] = 'bh1_18_bld01_grime', + [-352357525] = 'bh1_18_bld1_rfsig_lod', + [-1094601675] = 'bh1_18_bld1_rfsig', + [552286716] = 'bh1_18_bld1a', + [-1773581475] = 'bh1_18_em', + [-504324858] = 'bh1_18_fireescapes_ref', + [-1063807625] = 'bh1_18_fringe_flap', + [-1478141548] = 'bh1_18_fringe_flap2', + [-1746683503] = 'bh1_18_fringe_flap3', + [-1984815826] = 'bh1_18_fringe_flap4', + [1105576219] = 'bh1_18_gate', + [447638003] = 'bh1_18_glass', + [-1255123174] = 'bh1_18_rd01', + [-654755003] = 'bh1_20_arch', + [-769705522] = 'bh1_20_copshop_int', + [-1339395275] = 'bh1_20_em', + [-600986733] = 'bh1_20_furhedge00', + [927883731] = 'bh1_20_furhedge01', + [693945840] = 'bh1_20_furhedge02', + [596621910] = 'bh1_20_furhedge03', + [366550761] = 'bh1_20_furhedge04', + [1537223286] = 'bh1_20_furhedge05', + [-630825938] = 'bh1_20_ground_d1', + [-956680870] = 'bh1_20_ground_d2', + [-515216902] = 'bh1_20_ground_d3', + [1901857311] = 'bh1_20_ground_d4', + [-2088587668] = 'bh1_20_ground_d5', + [-1887386008] = 'bh1_20_ground_d6', + [1537193924] = 'bh1_20_ground', + [334634808] = 'bh1_20_in_bld_dtl', + [-613149915] = 'bh1_20_in_bld', + [1699634493] = 'bh1_20_lad1', + [-1639783745] = 'bh1_20_lad11', + [-1868937362] = 'bh1_20_lad14', + [1205019207] = 'bh1_20_lad6', + [746941356] = 'bh1_20_lad8', + [1626540331] = 'bh1_20_out_bld', + [-732827072] = 'bh1_20_out_blde', + [617612637] = 'bh1_20b_em', + [1811296566] = 'bh1_21_bld_decals', + [1143804937] = 'bh1_21_bld_decals01', + [1383772324] = 'bh1_21_bld_decals02', + [-226820450] = 'bh1_21_bld_main', + [758673898] = 'bh1_21_bld_wing003', + [1384095576] = 'bh1_21_bld_wing01', + [993466710] = 'bh1_21_deta', + [734239870] = 'bh1_21_details_01', + [544400326] = 'bh1_21_detb', + [2112046757] = 'bh1_21_grnd_d_2', + [-1874826401] = 'bh1_21_grnd_d_3', + [1970545984] = 'bh1_21_grnd_d', + [-1123247171] = 'bh1_21_grnd02_1', + [1427227004] = 'bh1_21_hedges', + [-1084971674] = 'bh1_21_hedgesb', + [-924318798] = 'bh1_21_ladder1', + [-1160026187] = 'bh1_21_ladder2', + [1268880945] = 'bh1_21_props_combo_slod', + [1806845677] = 'bh1_21_proxy', + [1795825847] = 'bh1_21_railscastshadow', + [-648403614] = 'bh1_21_roof', + [1652013414] = 'bh1_21_steps', + [231815844] = 'bh1_21_wall', + [2032698431] = 'bh1_21_waterfall_new', + [-285059056] = 'bh1_21_wing_d', + [-59471862] = 'bh1_21_wing3_d', + [-1089094528] = 'bh1_22_base', + [-328365584] = 'bh1_22_basee', + [342087424] = 'bh1_22_door_det', + [1296206439] = 'bh1_22_doorfizz_1', + [-2134445713] = 'bh1_22_doorfizz_2', + [1861209537] = 'bh1_22_doorfizz_3', + [995458348] = 'bh1_22_emissive_22', + [2088201762] = 'bh1_22_emissive_22b', + [499290304] = 'bh1_22_emissivesign', + [-1778893031] = 'bh1_22_fakeint', + [-1918801716] = 'bh1_22_glue_02', + [1604302422] = 'bh1_22_overlays_01', + [1375378188] = 'bh1_22_overlays_02', + [181374135] = 'bh1_22_overlays_03', + [1820348439] = 'bh1_22_overlays_04', + [-428066519] = 'bh1_22_overlays', + [1774230317] = 'bh1_22_towere', + [-328995477] = 'bh1_22_towerw_dtl', + [-179981755] = 'bh1_22_towerw', + [-2823709] = 'bh1_29_buildings', + [-1382396826] = 'bh1_29_dcl_01', + [697648222] = 'bh1_29_dcl_02', + [437527900] = 'bh1_29_dcl_03', + [147751633] = 'bh1_29_dcl_04', + [110263893] = 'bh1_29_dcl_05', + [-637061723] = 'bh1_29_dfizz_01', + [-1083387932] = 'bh1_29_dfizz_01b', + [1560390578] = 'bh1_29_fence', + [-1165151113] = 'bh1_29_fnc', + [1902234873] = 'bh1_29_racetrack_01', + [-1339221501] = 'bh1_29_sportequip', + [-1832314118] = 'bh1_29_stands', + [-908498968] = 'bh1_30_bhs_gate_l001', + [-1651929043] = 'bh1_30_bhs_gate_r001', + [-1462167155] = 'bh1_30_carpark', + [1281750392] = 'bh1_30_dcl_01', + [655272650] = 'bh1_30_dcl_02', + [-119943583] = 'bh1_30_dcl_03', + [133131404] = 'bh1_30_dcl_04', + [-767164102] = 'bh1_30_dcl_05', + [-275563564] = 'bh1_30_dcl_06', + [-1109108617] = 'bh1_30_dcl_07', + [-1397475821] = 'bh1_30_dcl_08', + [-2031883661] = 'bh1_30_dcl_09', + [1424485288] = 'bh1_30_dcl_10', + [1177439797] = 'bh1_30_dcl_11', + [-957755494] = 'bh1_30_dcl_12', + [-1215123220] = 'bh1_30_dcl_13', + [-1454500765] = 'bh1_30_dcl_14', + [-1676674585] = 'bh1_30_dcl_15', + [469072304] = 'bh1_30_dcl_16', + [230415677] = 'bh1_30_dcl_17', + [-699348407] = 'bh1_30_flowers_00', + [1440762210] = 'bh1_30_flowers_01', + [2057507559] = 'bh1_30_flowers_03', + [-1344176797] = 'bh1_30_flowers_04', + [-503881398] = 'bh1_30_flowers_05', + [-1195831602] = 'bh1_30_flowers_06', + [-1787676123] = 'bh1_30_hdg_01', + [-1474306176] = 'bh1_30_hdg_02', + [1777558312] = 'bh1_30_hdg_03', + [2058224797] = 'bh1_30_hdg_04', + [1281927187] = 'bh1_30_hdg_05', + [1595559286] = 'bh1_30_hdg_06', + [747858053] = 'bh1_30_hdg_07', + [1036978912] = 'bh1_30_hdg_08', + [136126361] = 'bh1_30_hdg_09', + [1614434006] = 'bh1_30_hdg_10', + [914717577] = 'bh1_30_hdg_11', + [1210064546] = 'bh1_30_hdg_12', + [-115048248] = 'bh1_30_hdg_13', + [182723655] = 'bh1_30_hdg_14', + [-577648221] = 'bh1_30_hdg_15', + [-365632791] = 'bh1_30_hdg_16', + [-1006692738] = 'bh1_30_hdg_17', + [-826725390] = 'bh1_30_hdg_18', + [-1392809869] = 'bh1_30_hdg_19', + [-1897416504] = 'bh1_30_hdg_20', + [-1464770408] = 'bh1_30_irsref_pot_iref017', + [-704627915] = 'bh1_30_irsref_pot_iref019', + [-1217560423] = 'bh1_30_irsref_pot', + [-1050234753] = 'bh1_30_ladderpool_d', + [-1744559680] = 'bh1_30_m4_bal1', + [-1924527028] = 'bh1_30_m4_bal2', + [-2111048180] = 'bh1_30_m4_bal3', + [1885753985] = 'bh1_30_m4_bal4', + [-155033797] = 'bh1_30_m4_bal5', + [-452740162] = 'bh1_30_m4_bal6', + [-1188207598] = 'bh1_30_m4_bal7', + [-1461992593] = 'bh1_30_m4_bal8', + [-1750711532] = 'bh1_30_m4_bal9_l1', + [1089427794] = 'bh1_30_m4', + [-881977345] = 'bh1_30_m4ground', + [-1541431385] = 'bh1_30_m5ground', + [772135915] = 'bh1_30_ma_pipes_stonerails', + [-1327220406] = 'bh1_30_ma', + [-1185466065] = 'bh1_30_mid_balus1', + [-1416585822] = 'bh1_30_mid_balus2', + [1799462157] = 'bh1_30_mid_balus3', + [256447755] = 'bh1_30_mid2_balus1', + [-1335830728] = 'bh1_30_mid2_balus2', + [-1172313418] = 'bh1_30_mid2_balus3', + [1284673437] = 'bh1_30_mid2_balus4', + [-1483694462] = 'bh1_30_middleplot01_blg03', + [-1091732862] = 'bh1_30_plot3_gnd', + [-433962992] = 'bh1_30_plot4', + [-934598192] = 'bh1_30_treebase', + [1086381957] = 'bh1_31_dcl_01', + [-239943366] = 'bh1_31_dcl_02', + [590980159] = 'bh1_31_dcl_03', + [-264815037] = 'bh1_31_dcl_04', + [41837265] = 'bh1_31_dcl_05', + [1016092396] = 'bh1_31_dcl_06', + [1849604680] = 'bh1_31_dcl_07', + [930733592] = 'bh1_31_detail3', + [-423706993] = 'bh1_31_details', + [506234133] = 'bh1_31_fizziposts', + [1890666391] = 'bh1_31_flowers_1', + [1643063827] = 'bh1_31_flowers_2', + [1412140684] = 'bh1_31_flowers_3', + [-2053371020] = 'bh1_31_gate', + [869128399] = 'bh1_31_ground1', + [1508049039] = 'bh1_31_hdg_00', + [-1951275988] = 'bh1_31_hdg_01', + [2142489648] = 'bh1_31_hdg_02', + [-1570106976] = 'bh1_31_hdg_03', + [-754650411] = 'bh1_31_hdg_04', + [-990554442] = 'bh1_31_hdg_05', + [-294999648] = 'bh1_31_hdg_06', + [-552989985] = 'bh1_31_hdg_07', + [281538138] = 'bh1_31_hdg_08', + [863515582] = 'bh1_31_hdg_09', + [787195777] = 'bh1_31_hdg_10', + [1479866899] = 'bh1_31_hdg_11', + [-1955372913] = 'bh1_31_hdg_12', + [482345770] = 'bh1_31_hdg_13', + [1877322100] = 'bh1_31_hdg_14', + [-2112074271] = 'bh1_31_hdg_15', + [-730139999] = 'bh1_31_hdg_16', + [1706398996] = 'bh1_31_hdg_17', + [-1192805510] = 'bh1_31_hdg_18', + [51552368] = 'bh1_31_m1', + [-492871754] = 'bh1_31_m2', + [-1446226154] = 'bh1_31_m2g', + [-1897383871] = 'bh1_31_m3', + [-931847440] = 'bh1_31_plot03_gnd', + [786261260] = 'bh1_32_blg01', + [655392251] = 'bh1_32_main_d2', + [1126350796] = 'bh1_32_main_d2b', + [-244018488] = 'bh1_32_main_da', + [993033516] = 'bh1_32_stores', + [-143661634] = 'bh1_33__billboard_bulid02', + [-98384603] = 'bh1_33_blg01_details', + [48564284] = 'bh1_33_blg01_neon_slod', + [-1907931469] = 'bh1_33_blg01_neon', + [1548884782] = 'bh1_33_blg01', + [-1310575716] = 'bh1_33_build02_dtds', + [631684080] = 'bh1_33_build02_dtdsa', + [-1560099365] = 'bh1_33_bulid02', + [-2079218321] = 'bh1_33_detailly', + [-431334131] = 'bh1_33_gas_neon_lod', + [368827330] = 'bh1_33_gas_neon', + [-1162844625] = 'bh1_34_blgs01_billboard', + [-1705108084] = 'bh1_34_blgs01_details', + [-993087739] = 'bh1_34_blgs01', + [2142361405] = 'bh1_34_blgs02_details', + [1257310729] = 'bh1_34_blgs03_billboard', + [-179531776] = 'bh1_34_blgs03', + [45662378] = 'bh1_34_fizz_det', + [1331953957] = 'bh1_34_ground', + [1688079802] = 'bh1_34_shadow01', + [-2134476192] = 'bh1_34_tower_billboard', + [1278373611] = 'bh1_34_tower_ivydecal', + [325880767] = 'bh1_34_tower', + [1673949760] = 'bh1_34_towersign_emm', + [-2128950861] = 'bh1_35_beamsa', + [532842244] = 'bh1_35_beamsc', + [-490290836] = 'bh1_35_bldcl_01', + [-1390225883] = 'bh1_35_bldcl_02', + [-1083901271] = 'bh1_35_bldcl_03', + [1001059119] = 'bh1_35_bldcl_04', + [-110372012] = 'bh1_35_campusbuild_01a', + [-1886737475] = 'bh1_35_campusgnd', + [289885126] = 'bh1_35_campusgnd2', + [-527543087] = 'bh1_35_dcl_01', + [172468295] = 'bh1_35_dcl_02', + [-994009802] = 'bh1_35_dcl_03', + [-135756920] = 'bh1_35_flowers_1', + [-709083344] = 'bh1_35_flowers_2', + [-719884528] = 'bh1_35_glass', + [-1044593111] = 'bh1_35_library_main', + [1007351311] = 'bh1_35_pav_roof', + [-47887822] = 'bh1_35_pavballust1', + [265547663] = 'bh1_35_pavballust2', + [-1673693940] = 'bh1_35_pavc', + [351210621] = 'bh1_35_pavillion', + [-2145403691] = 'bh1_35_pavs', + [1681800969] = 'bh1_35_pillar', + [512126908] = 'bh1_35_strlg_e', + [2121576339] = 'bh1_35_strlg_n', + [-1254089431] = 'bh1_35_strlg_s', + [509865843] = 'bh1_35_strlg_w', + [72054168] = 'bh1_35_tenfen', + [-410596731] = 'bh1_35_water', + [-1325663282] = 'bh1_35_win1', + [-453549116] = 'bh1_35_win2', + [-1860256748] = 'bh1_35_win3', + [-948655937] = 'bh1_35_win4', + [907215782] = 'bh1_36_ballus01', + [-1421808128] = 'bh1_36_ballus02', + [-1719186803] = 'bh1_36_ballus03', + [2129466713] = 'bh1_36_ballus04', + [-1287946787] = 'bh1_36_ballus05', + [-1751300447] = 'bh1_36_ballus06', + [-2057395676] = 'bh1_36_ballus07', + [-420838598] = 'bh1_36_ballus08_l1', + [-649048395] = 'bh1_36_ballus09_l1', + [-1734884630] = 'bh1_36_ballus10', + [-1003873782] = 'bh1_36_ballus11', + [-697778553] = 'bh1_36_ballus12', + [-518007819] = 'bh1_36_ballus13', + [-278826888] = 'bh1_36_ballus14', + [-77363076] = 'bh1_36_ballus15', + [228470001] = 'bh1_36_ballus16', + [400769403] = 'bh1_36_ballus17', + [705226182] = 'bh1_36_ballus18', + [1444888054] = 'bh1_36_ballus19', + [-138934911] = 'bh1_36_ballus20', + [1100681368] = 'bh1_36_bld_details', + [168772571] = 'bh1_36_bld_details2', + [-207055094] = 'bh1_36_bld_details3', + [31929223] = 'bh1_36_bld_details4', + [-1451600495] = 'bh1_36_blgmain', + [1197674198] = 'bh1_36_decal_01', + [1545910329] = 'bh1_36_decal_03', + [1853250780] = 'bh1_36_decal_04', + [-1834211993] = 'bh1_36_decal_05', + [-2141355830] = 'bh1_36_decal_06', + [1869307622] = 'bh1_36_decal_07', + [1562491475] = 'bh1_36_decal_08', + [-640306247] = 'bh1_36_decal_09', + [1286642769] = 'bh1_36_decal_10', + [2062710996] = 'bh1_36_decal_11', + [-2115138997] = 'bh1_36_decal_11b', + [1765627242] = 'bh1_36_decal_12', + [1321149143] = 'bh1_36_decal_12b', + [154604891] = 'bh1_36_decal_13', + [929952200] = 'bh1_36_decal_14', + [1403464250] = 'bh1_36_decal_15', + [-2055495985] = 'bh1_36_decal_15b', + [1110181700] = 'bh1_36_decal_16', + [-1038121171] = 'bh1_36_decal_17', + [-405853282] = 'bh1_36_decal_grotto', + [2130418367] = 'bh1_36_flowers01', + [-1316388902] = 'bh1_36_flowers02', + [-1859471240] = 'bh1_36_gate_iref', + [1934640108] = 'bh1_36_gatefrm_iref', + [1996641440] = 'bh1_36_grnd_01', + [525411639] = 'bh1_36_grnd_02', + [421206219] = 'bh1_36_grnd_03', + [-251959696] = 'bh1_36_grnd_03b', + [1137438252] = 'bh1_36_grnd_04', + [764461494] = 'bh1_36_grnd_05', + [-707423675] = 'bh1_36_grnd_06', + [1210382050] = 'bh1_36_grnd_07', + [-794349044] = 'bh1_36_hedged_01', + [-487729511] = 'bh1_36_hedged_02', + [-1438587612] = 'bh1_36_hedged_03', + [-950919326] = 'bh1_36_hedged_04', + [511790527] = 'bh1_36_hedged_05', + [666591283] = 'bh1_36_hedged_06', + [-220301702] = 'bh1_36_hedged_07', + [219523816] = 'bh1_36_hedged_08', + [1733615465] = 'bh1_36_hedged_09', + [-1768997707] = 'bh1_36_hedged_10', + [-905796705] = 'bh1_36_hedged_11', + [-1144191180] = 'bh1_36_hedged_12', + [1671943911] = 'bh1_36_hedged_13', + [1305848643] = 'bh1_36_hedged_14', + [-2135224051] = 'bh1_36_hedged_15', + [1903129206] = 'bh1_36_hedged_16', + [445269161] = 'bh1_36_hedged_17', + [86120921] = 'bh1_36_hedged_18', + [1073024898] = 'bh1_36_hedged_19', + [-2111565157] = 'bh1_36_hedged_20', + [-1813465564] = 'bh1_36_hedged_21', + [328086893] = 'bh1_36_hedged_22', + [490358981] = 'bh1_36_hedged_23', + [788786264] = 'bh1_36_hedged_24', + [983368590] = 'bh1_36_hedged_25', + [-1134393577] = 'bh1_36_hedged_26', + [-435103117] = 'bh1_36_hedged_27', + [-171017746] = 'bh1_36_hedged_28', + [1282130934] = 'bh1_36_irsref_pot', + [-1000168448] = 'bh1_36_lightstringlights', + [436851026] = 'bh1_36_ponddecal', + [1491702691] = 'bh1_36_pool_water', + [-708771243] = 'bh1_36_pool_water2', + [-624161813] = 'bh1_36_pool_waters', + [-1232093905] = 'bh1_36_torch_iref', + [687548975] = 'bh1_36_water_proxy', + [222197524] = 'bh1_36_wtrproxy_hd', + [806128262] = 'bh1_37_decals_graf', + [-1631270633] = 'bh1_37_decals', + [2084335056] = 'bh1_37_railings', + [897688721] = 'bh1_37_restaurant', + [-548310164] = 'bh1_38_fox_d', + [-608894476] = 'bh1_38_grnd_1_d01', + [-267965800] = 'bh1_38_grnd_1_d02', + [-974858624] = 'bh1_38_grnd_1_d03', + [-2092578764] = 'bh1_38_grnd_1', + [-1474690987] = 'bh1_38_railing_lod', + [1651553088] = 'bh1_38_railing', + [1370705463] = 'bh1_38_tclub_1_fnc', + [-532908831] = 'bh1_38_tclub_1_fncb', + [-1756174877] = 'bh1_38_tclub_2_fnc', + [3372446] = 'bh1_38_tclub_2_fncb', + [-1735977071] = 'bh1_38_tclub_2', + [530033473] = 'bh1_38_tclub', + [-820684359] = 'bh1_38_tennis_rail', + [408068635] = 'bh1_38_theatre', + [1899401219] = 'bh1_39_billboardrailing', + [-1969500746] = 'bh1_39_crpk01_decals', + [-911038919] = 'bh1_39_crpk02_decals', + [2122544668] = 'bh1_39_crpk02_signs', + [-915855930] = 'bh1_39_crprk01_emsign_lod', + [-1306173239] = 'bh1_39_crprk01_emsign', + [746642406] = 'bh1_39_crprk01', + [-1126891179] = 'bh1_39_fake_em_glow', + [438592022] = 'bh1_39_fruiitbb_ipl', + [-1118967386] = 'bh1_39_fruitbb_ipl_lod', + [-859381146] = 'bh1_39_grnd', + [975416903] = 'bh1_39_pipe', + [334947675] = 'bh1_39_shelv', + [1863911442] = 'bh1_39_shop1_details01', + [-244937557] = 'bh1_39_shop1_details02', + [-1545158286] = 'bh1_39_shop1_ladders', + [237367582] = 'bh1_39_shop3_details01', + [-320033108] = 'bh1_39_shop3_details02', + [1827528698] = 'bh1_39_shop3_ladders', + [-1131405392] = 'bh1_39_shops01_billboard', + [1959454579] = 'bh1_39_shops01_railing', + [-591191033] = 'bh1_39_shops01', + [219042955] = 'bh1_39_shops02_billboard', + [-1192698793] = 'bh1_39_shops02', + [1782824722] = 'bh1_39_shops03', + [60891829] = 'bh1_39_stairrailing', + [838894886] = 'bh1_40_basicplants', + [-911619807] = 'bh1_40_blg01', + [-2050884287] = 'bh1_40_blg02_details', + [-672602721] = 'bh1_40_blg02', + [-746417900] = 'bh1_40_canopy', + [324857854] = 'bh1_40_gnd_details', + [738603988] = 'bh1_40_gnd_details02', + [79730233] = 'bh1_40_gnd02', + [366999773] = 'bh1_40_gndmain', + [-1532126903] = 'bh1_40_grndmain_wtr', + [1896442156] = 'bh1_40_outblg', + [900883308] = 'bh1_40_pipes', + [-758146521] = 'bh1_40_pool_water', + [-1247022288] = 'bh1_40_pool', + [763514225] = 'bh1_40_props_flower00', + [881914566] = 'bh1_40_props_flower007', + [428090741] = 'bh1_40_props_flower01', + [128877002] = 'bh1_40_props_flower02', + [72022787] = 'bh1_40_props_flower04', + [1920030574] = 'bh1_40_props_flower05', + [450459634] = 'bh1_40_props_prop_flowers07', + [-992437552] = 'bh1_40_rearrailing_01', + [-1290635452] = 'bh1_40_rearrailing_02', + [2129085253] = 'bh1_40_triblg_details01', + [1532951605] = 'bh1_40_triblg_details02', + [698620096] = 'bh1_40_triblg_details03', + [302858223] = 'bh1_40_triblg_int', + [1272036709] = 'bh1_40_triblg', + [-1176713795] = 'bh1_40_voncsign', + [429868150] = 'bh1_42_bld_02_water', + [-675008343] = 'bh1_42_bld_02', + [1852346177] = 'bh1_42_bld01_blcny_ref', + [-854648119] = 'bh1_42_bld01_dtl', + [-442499136] = 'bh1_42_bld01_hedge_dtl01', + [1713569992] = 'bh1_42_bld01_hedge_dtl04', + [-330333575] = 'bh1_42_bld01_ovl', + [894049433] = 'bh1_42_bld01_water', + [1411576204] = 'bh1_42_bld01', + [760165372] = 'bh1_42_bld02_dtl', + [-1997582799] = 'bh1_42_bld02_ovl', + [1483967426] = 'bh1_42_build_beam1', + [826522979] = 'bh1_42_build_beam2', + [1930248437] = 'bh1_42_build_beam3', + [1817469941] = 'bh1_42_conbuild_d', + [1672039505] = 'bh1_42_conbuild', + [-1646869672] = 'bh1_42_conground_o', + [501891598] = 'bh1_42_conground', + [1391068867] = 'bh1_42_east_rail', + [-581808034] = 'bh1_42_east_rail2', + [-1825915884] = 'bh1_42_east_rail3', + [-2120410887] = 'bh1_42_east_rail4', + [-75330350] = 'bh1_42_east_railb', + [-750468341] = 'bh1_42_eastplot_building', + [778151854] = 'bh1_42_eastplot_decal', + [-138861137] = 'bh1_42_eastplot_hedge', + [254760463] = 'bh1_42_eastplot_water', + [1072136522] = 'bh1_42_park_ovl', + [1883252135] = 'bh1_42_park', + [1768406028] = 'bh1_42_wall_01', + [1831781274] = 'bh1_42_wall_02', + [2128373493] = 'bh1_42_wall_03', + [-1264889286] = 'bh1_42_wall_04', + [-957942063] = 'bh1_42_wall_05', + [966052599] = 'bh1_42_wood1', + [668575617] = 'bh1_42_wood2', + [-1897419923] = 'bh1_42b_lightemissive', + [582782471] = 'bh1_42b_m006', + [469424264] = 'bh1_42b_m4_d', + [-82864374] = 'bh1_42b_m4_e', + [1382242024] = 'bh1_42b_m4_fizzers', + [640937298] = 'bh1_42b_m4_g', + [-23892466] = 'bh1_42b_m4_water', + [-1854558756] = 'bh1_42b_m4', + [655280274] = 'bh1_42b_m5_d', + [953052177] = 'bh1_42b_m5_e', + [1285690300] = 'bh1_42b_m5_g', + [2081039061] = 'bh1_42b_m5_water', + [-571254910] = 'bh1_42b_office', + [-1344609326] = 'bh1_42b_park_d', + [1406975955] = 'bh1_42b_park_detail_a', + [1045075119] = 'bh1_42b_park_detail_b', + [-264186227] = 'bh1_42b_park', + [-1708983894] = 'bh1_43_b4_d', + [-751189037] = 'bh1_43_bexp', + [-1661119409] = 'bh1_43_bexpdecals', + [724108853] = 'bh1_43_bh43_tee_01', + [989046218] = 'bh1_43_bh43_tee_02', + [785354118] = 'bh1_43_bh43_tee_03', + [1081848030] = 'bh1_43_bh43_tee_04', + [1379554395] = 'bh1_43_bh43_tee_05', + [1711242213] = 'bh1_43_bh43_tee_06', + [2044371863] = 'bh1_43_bh43_tee_07', + [-2008432523] = 'bh1_43_bh43_tee_08', + [-1705810808] = 'bh1_43_bh43_tee_09', + [-547027261] = 'bh1_43_blckfnc00', + [-240112807] = 'bh1_43_blckfnc01', + [2099102274] = 'bh1_43_blckfnc02', + [-901444793] = 'bh1_43_bridge', + [1535853363] = 'bh1_43_build_balus_1', + [1823532414] = 'bh1_43_build_balus_2', + [1059293796] = 'bh1_43_build_balus_3', + [1347300537] = 'bh1_43_build_balus_4', + [578277645] = 'bh1_43_build_balus_5', + [2100056117] = 'bh1_43_club_sup_iref', + [1939213683] = 'bh1_43_decallot', + [-1477966650] = 'bh1_43_decals_clubhouse', + [1178222041] = 'bh1_43_fencea_1', + [1753186919] = 'bh1_43_fencea_2', + [1523312380] = 'bh1_43_fencea_3', + [-1891348496] = 'bh1_43_fencea_4', + [2039948438] = 'bh1_43_fencea_5', + [-1411806950] = 'bh1_43_fencea_6', + [-1936180882] = 'bh1_43_fenceb02', + [-1159359408] = 'bh1_43_fenceb04', + [-860604435] = 'bh1_43_fenceb05', + [-327625078] = 'bh1_43_fencec_1', + [453539587] = 'bh1_43_fenced_00', + [-514292828] = 'bh1_43_fenced_01', + [-22757828] = 'bh1_43_fenced_02', + [-1163678894] = 'bh1_43_fencee_00', + [-1405940111] = 'bh1_43_fencee_01', + [789124123] = 'bh1_43_fencee_02', + [-1582761635] = 'bh1_43_fencee_03', + [-1803395312] = 'bh1_43_fencee_04', + [1474201104] = 'bh1_43_fencef_02', + [-1838941414] = 'bh1_43_fencef_04', + [1730847912] = 'bh1_43_fencef_05', + [1518304280] = 'bh1_43_flower_1', + [1075529552] = 'bh1_43_flower_2', + [-1918560616] = 'bh1_43_fountain_water', + [-1287283996] = 'bh1_43_fountain2_water', + [748211025] = 'bh1_43_fw_01', + [1632318641] = 'bh1_43_fw_02', + [788811812] = 'bh1_43_fw_03', + [-1829829416] = 'bh1_43_golf_1a_o', + [-821485481] = 'bh1_43_golf_1a', + [730936864] = 'bh1_43_golf_1b_o', + [-992867351] = 'bh1_43_golf_1b', + [1843092135] = 'bh1_43_golf_1c_o', + [-211556084] = 'bh1_43_golf_1c', + [1442384101] = 'bh1_43_golf_2a_o', + [-890070070] = 'bh1_43_golf_2a', + [-1074248953] = 'bh1_43_golf_2b_o', + [-684149674] = 'bh1_43_golf_2b', + [-1802734974] = 'bh1_43_golf_3a_o', + [-1671545534] = 'bh1_43_golf_3a', + [620445638] = 'bh1_43_golf_3b_o', + [-440283128] = 'bh1_43_golf_3b', + [-608062762] = 'bh1_43_golf_4a_o', + [1600273919] = 'bh1_43_golf_4a', + [28859155] = 'bh1_43_golf_4b_o', + [1850792924] = 'bh1_43_golf_4b', + [-956109552] = 'bh1_43_golf_5a_o', + [-1203542660] = 'bh1_43_golf_5a', + [775195005] = 'bh1_43_golf_5b_o', + [-1416279008] = 'bh1_43_golf_5b', + [-1135160415] = 'bh1_43_golf_6a_o', + [694995741] = 'bh1_43_golf_6a', + [1179613049] = 'bh1_43_golf_6b_o', + [2047863906] = 'bh1_43_golf_6b', + [-1303171253] = 'bh1_43_golf_7a_o', + [1592636670] = 'bh1_43_golf_7a', + [-851605886] = 'bh1_43_golf_fence1a', + [-123347630] = 'bh1_43_golf_fence1b', + [651344295] = 'bh1_43_golf_fence1c', + [900716445] = 'bh1_43_golf_fence1d', + [-856551089] = 'bh1_43_golf_fence3a', + [-547047884] = 'bh1_43_golf_fence3b', + [-99226730] = 'bh1_43_golf_fence3c', + [1593978161] = 'bh1_43_golf_fence4a', + [819646695] = 'bh1_43_golf_fence4b', + [-940867602] = 'bh1_43_golf_fence5a', + [-691462743] = 'bh1_43_golf_fence5b', + [-403030005] = 'bh1_43_golf_fence5c', + [-1641982465] = 'bh1_43_golf_fencehed', + [976456940] = 'bh1_43_ground1_o', + [2053087704] = 'bh1_43_ground2', + [-152372548] = 'bh1_43_ivy', + [1956064369] = 'bh1_43_lot_a', + [-2098083522] = 'bh1_43_lot_h', + [-1464134436] = 'bh1_43_lot_w', + [-80457608] = 'bh1_43_park_1', + [-1328956516] = 'bh1_43_park_2', + [1197011741] = 'bh1_43_park_flowera', + [2143806454] = 'bh1_43_park_flowerb', + [-1527621305] = 'bh1_43_park_flowerb1', + [1874773176] = 'bh1_43_pergola', + [382037456] = 'bh1_43_perim_dec_01', + [-2211838] = 'bh1_43_perim_dec_02', + [978859253] = 'bh1_43_perim_dec_03', + [627182345] = 'bh1_43_perim_dec_04', + [1607794670] = 'bh1_43_perim_dec_05', + [1228395188] = 'bh1_43_perim_dec_06', + [-2137669265] = 'bh1_43_perim_dec_07', + [1925850584] = 'bh1_43_perim_dec_08', + [-1601109659] = 'bh1_43_perim_dec_09', + [770685553] = 'bh1_43_perim_dec_10', + [865846729] = 'bh1_43_perim_dec_11', + [1096376644] = 'bh1_43_perim_dec_12', + [1618976640] = 'bh1_43_perim_dec_13', + [1850096397] = 'bh1_43_perim_dec_14', + [1933460733] = 'bh1_43_perim_dec_15', + [-2131238800] = 'bh1_43_perim_dec_16', + [126086538] = 'bh1_43_perim_dec_17', + [358517055] = 'bh1_43_perim_dec_18', + [637872780] = 'bh1_43_perim_dec_19', + [1599316176] = 'bh1_43_perim_dec_20', + [-1092395018] = 'bh1_43_perim_dec_21', + [-864748775] = 'bh1_43_perim_dec_22', + [-1705077011] = 'bh1_43_perim_dec_23', + [-1471728962] = 'bh1_43_perim_dec_24', + [-1099342054] = 'bh1_43_perim_dec_25', + [-859898971] = 'bh1_43_perim_dec_26', + [-1712548351] = 'bh1_43_perim_dec_27', + [-1470549286] = 'bh1_43_perim_dec_28', + [662090003] = 'bh1_43_perim_dec_29', + [970346602] = 'bh1_43_perim_dec_30', + [1276376293] = 'bh1_43_perim_dec_31', + [643606903] = 'bh1_43_perim_dec_32', + [-1567186463] = 'bh1_43_perim_dec_33', + [1953219988] = 'bh1_43_perim_dec_34', + [-2069404149] = 'bh1_43_perim_dec_35', + [1592269453] = 'bh1_43_perim_dec_36', + [-1178939447] = 'bh1_43_perim_dec_37', + [-477813923] = 'bh1_43_perim_dec_38', + [238909645] = 'bh1_43_perim_dec_39', + [-1267283767] = 'bh1_43_perim_dec_40', + [270663782] = 'bh1_43_perim_dec_41', + [573940877] = 'bh1_43_perim_dec_42', + [880527641] = 'bh1_43_perim_dec_43', + [1189768694] = 'bh1_43_perim_dec_44', + [-958009873] = 'bh1_43_perim_dec_45', + [-652602793] = 'bh1_43_perim_dec_46', + [-346310950] = 'bh1_43_perim_dec_47', + [-39527572] = 'bh1_43_perim_dec_48', + [-956928564] = 'bh1_43_perim_dec_49', + [-815138581] = 'bh1_43_perim_dec_50', + [-63090031] = 'bh1_43_perim_dec_51', + [-1375848940] = 'bh1_43_perim_dec_52', + [-2055576315] = 'bh1_43_perim_dec_53', + [2020887289] = 'bh1_43_perim_dec_54', + [-1056285652] = 'bh1_43_perim_dec_55', + [1402372414] = 'bh1_43_perim_dec_56', + [1265955067] = 'bh1_43_perim_dec_57', + [1025659990] = 'bh1_43_perim_dec_58', + [717893542] = 'bh1_43_perim_dec_59', + [1673766196] = 'bh1_43_perim_dec_60', + [91941028] = 'bh1_43_perim_dec_61', + [-684061661] = 'bh1_43_perim_dec_62', + [810499660] = 'bh1_43_perim_dec_63', + [2005126391] = 'bh1_43_perimeterdecal_05', + [1614035449] = 'bh1_43_perimeterfence01', + [-1242176133] = 'bh1_43_perimeterfence02', + [-319958166] = 'bh1_43_perimeterfence03', + [-508576530] = 'bh1_43_perimeterfence04', + [-2004251997] = 'bh1_43_perimeterfence05', + [437366193] = 'bh1_43_perimeterfence07', + [131533116] = 'bh1_43_perimeterfence08', + [900621546] = 'bh1_43_perimeterfence09', + [-7537596] = 'bh1_43_perimeterfence10', + [1071437035] = 'bh1_43_prewtrproxy_01', + [-719595478] = 'bh1_43_prewtrproxy_2', + [121093229] = 'bh1_43_prewtrproxy_3', + [-1141043754] = 'bh1_43_rivdetail_test', + [-326280480] = 'bh1_43_rivertest002', + [151196619] = 'bh1_43_rivertest004', + [-1023596665] = 'bh1_43_smallfnc00', + [-1799697661] = 'bh1_43_smallfnc01', + [-1551931252] = 'bh1_43_smallfnc02', + [48607163] = 'bh1_43_smallfnc03_lod', + [-424728782] = 'bh1_43_smallfnc04_lod', + [1565263688] = 'bh1_43_smallfnc05_lod', + [-1926222613] = 'bh1_43_smallfncb_02', + [1078006542] = 'bh1_43_smallfncb_04', + [1448099628] = 'bh1_43_smallfncb_05', + [-579280274] = 'bh1_43_tophedge', + [-424267620] = 'bh1_43_water004', + [189135291] = 'bh1_43_water006', + [1881740666] = 'bh1_43_water03', + [343391847] = 'bh1_43_wtrproxyhd_01', + [907084185] = 'bh1_43_wtrproxyhd_02', + [1741284618] = 'bh1_43_wtrproxyhd_03', + [1164414291] = 'bh1_44_bld_01a', + [-1812186533] = 'bh1_44_bld_01aa', + [1111004885] = 'bh1_44_bld_01ab', + [1399728480] = 'bh1_44_bld_01b', + [2109542165] = 'bh1_44_bld_01b2', + [-1460279926] = 'bh1_44_bld_01ba', + [1523271990] = 'bh1_44_bld_01bb', + [-1954993519] = 'bh1_44_bld_01bc', + [1032407599] = 'bh1_44_bld_02', + [1462383096] = 'bh1_44_bld_02b', + [1772702681] = 'bh1_44_bld_flag_poles', + [717890998] = 'bh1_44_builddec_01', + [-183256498] = 'bh1_44_builddec_02', + [126508859] = 'bh1_44_builddec_03', + [-1463836245] = 'bh1_44_builddec_04', + [-1165408962] = 'bh1_44_builddec_05', + [-2060526970] = 'bh1_44_builddec_06', + [-1760985541] = 'bh1_44_builddec_07', + [-248991108] = 'bh1_44_builddec_08', + [57104121] = 'bh1_44_builddec_09', + [1131730931] = 'bh1_44_builddec_10', + [1420425821] = 'bh1_44_builddec_11', + [-1255130260] = 'bh1_44_builddec_12', + [-949887025] = 'bh1_44_builddec_13', + [-1868729789] = 'bh1_44_builddec_14', + [-1610346220] = 'bh1_44_builddec_15', + [-335042278] = 'bh1_44_builddec_16', + [563627509] = 'bh1_44_door_left002', + [-1157025758] = 'bh1_44_door_left01', + [1071703347] = 'bh1_44_door_right002', + [477202441] = 'bh1_44_door_right01', + [93513485] = 'bh1_44_flowers_01', + [537009131] = 'bh1_44_flowers_02', + [826195556] = 'bh1_44_flowers_03', + [998560496] = 'bh1_44_flowers_04', + [1256780216] = 'bh1_44_flowers_05', + [548838748] = 'bh1_44_flowers_06', + [1922515228] = 'bh1_44_flowers_07', + [1059838534] = 'bh1_44_flowers_08', + [1366785757] = 'bh1_44_flowers_09', + [-686978333] = 'bh1_44_flowers_10', + [148336246] = 'bh1_44_flowers_11', + [-1285176436] = 'bh1_44_flowers_12', + [-450844919] = 'bh1_44_flowers_13', + [1340701849] = 'bh1_44_flowers_14', + [832585735] = 'bh1_44_flowers_15', + [754693822] = 'bh1_44_flowers_16', + [506829106] = 'bh1_44_flowers_17', + [1354504534] = 'bh1_44_hdg_01', + [1869174424] = 'bh1_44_hdg_02', + [-2135983836] = 'bh1_44_hdg_03', + [1272811393] = 'bh1_44_hdg_04', + [1563210271] = 'bh1_44_hdg_05', + [944007243] = 'bh1_44_hdg_06', + [-910882002] = 'bh1_44_hdg_07', + [2078516210] = 'bh1_44_hdg_frnt01', + [1278067847] = 'bh1_44_hdg_frnt02', + [1583933693] = 'bh1_44_hdg_frnt03', + [817237400] = 'bh1_44_hdg_frnt04', + [-1410989086] = 'bh1_44_hdg_frnt05', + [-1113807025] = 'bh1_44_hdg_frnt06', + [-1773741896] = 'bh1_44_hdg_frnt07', + [-1476559835] = 'bh1_44_hdg_frnt08', + [668231166] = 'bh1_44_ov011a', + [379962273] = 'bh1_44_ov011b', + [198684165] = 'bh1_44_ov011c', + [-59502786] = 'bh1_44_ov011d', + [1788570507] = 'bh1_44_ov011e', + [642295369] = 'bh1_44_ov02', + [-345984910] = 'bh1_44_ov03', + [-923973430] = 'bh1_44_ov03b', + [2057981707] = 'bh1_44_ov05', + [1837380799] = 'bh1_44_ov06', + [853652740] = 'bh1_44_ov07_lod', + [431428458] = 'bh1_44_poolwater', + [145115554] = 'bh1_44_prewtrproxy', + [-53127842] = 'bh1_44_t1_x1', + [191165053] = 'bh1_44_t1_x2', + [-1724969445] = 'bh1_44_t1_x3', + [-1476678732] = 'bh1_44_t1_x4', + [1061585163] = 'bh1_44_tennis_fence1', + [134255232] = 'bh1_44_tennis_fence2', + [1051983846] = 'bh1_44_tennis_fence3', + [-462107799] = 'bh1_44_tennis_fence4', + [-1532204338] = 'bh1_44_terrain01', + [1155294130] = 'bh1_44_terrain01dcs', + [-907365046] = 'bh1_44_terrain02', + [317696906] = 'bh1_44_terrain02dcs', + [-53594866] = 'bh1_44_white_1', + [-948188566] = 'bh1_44_white_2', + [-645239161] = 'bh1_44_white_3', + [-1543437451] = 'bh1_44_white_4', + [1468896392] = 'bh1_44_wtrproxyhd', + [1733046983] = 'bh1_45_flowers_1', + [-1652646101] = 'bh1_45_flowers_2', + [-879658160] = 'bh1_45_flowers_3', + [-7412918] = 'bh1_45_flowers_4', + [-1405207382] = 'bh1_45_flowers_5', + [-503175119] = 'bh1_45_flowers_6', + [509579701] = 'bh1_45_gate1', + [2073971761] = 'bh1_45_gate2', + [441643702] = 'bh1_45_plot_4_water', + [-1314083530] = 'bh1_45_plot1_d', + [1189479339] = 'bh1_45_plot1_d5', + [436447719] = 'bh1_45_plot1_d6', + [1783155312] = 'bh1_45_plot1_d7', + [-483562205] = 'bh1_45_plot1_ivy', + [1623567935] = 'bh1_45_plot1_ter', + [-1235705016] = 'bh1_45_plot1_water', + [-1721250419] = 'bh1_45_plot2_building', + [-480214075] = 'bh1_45_plot2_d_1', + [-216390856] = 'bh1_45_plot2_d_2', + [-988592341] = 'bh1_45_plot2_d_3', + [-690394441] = 'bh1_45_plot2_d_4', + [-1469739568] = 'bh1_45_plot2_d_5', + [-1412131670] = 'bh1_45_plot2_d_6', + [-250686999] = 'bh1_45_plot2_d2', + [-847902024] = 'bh1_45_plot2_d8', + [1593111900] = 'bh1_45_plot2_terrb', + [-455504738] = 'bh1_45_plot3_d', + [860918908] = 'bh1_45_plot3_d2', + [1091448823] = 'bh1_45_plot3_d3', + [1455610720] = 'bh1_45_plot3_d4', + [1274081035] = 'bh1_45_plot3_detailfence', + [-1965460498] = 'bh1_45_plot3_tea_dcl', + [-205912000] = 'bh1_45_plot3_tea_dcl2', + [-1845341053] = 'bh1_45_plot3_tera', + [2101390080] = 'bh1_45_plot3_terb', + [1323597332] = 'bh1_45_plot3_water', + [-835259213] = 'bh1_45_plot3b_d', + [53551416] = 'bh1_45_plot3b_d2_1', + [1433224623] = 'bh1_45_plot3b_d2_2', + [-1252948610] = 'bh1_45_plot3b_d2_3', + [541220395] = 'bh1_45_plot3b_hdg_01', + [1383645847] = 'bh1_45_plot3b_hdg_02', + [1679975914] = 'bh1_45_plot3b_hdg_03', + [2016120316] = 'bh1_45_plot3b_hdg_04', + [-2124570528] = 'bh1_45_plot3b_hdg_05', + [-1693297719] = 'bh1_45_plot3b_hdg_06', + [-1394608284] = 'bh1_45_plot3b_hdg_07', + [-1603477894] = 'bh1_45_plot3b_hdg_08', + [-994168842] = 'bh1_45_plot4a_d_4', + [-1303409895] = 'bh1_45_plot4a_d_5', + [-1446802710] = 'bh1_45_plot4a_d', + [358735603] = 'bh1_45_plot4a_d2_1', + [-995836554] = 'bh1_45_plot4a_d2_2', + [-2000534106] = 'bh1_45_plot4a_d2_3', + [-1734057949] = 'bh1_45_plot4a_ter_dcs', + [-700387201] = 'bh1_45_plot4b_d_1', + [-1001730925] = 'bh1_45_plot4b_d_2', + [-198592799] = 'bh1_45_plot4b_d', + [-500411330] = 'bh1_45_plot4b_ter', + [2131866720] = 'bh1_46_c_build_d1', + [-1921560277] = 'bh1_46_c_build_d2', + [-461111481] = 'bh1_46_c_build_d3', + [1901697264] = 'bh1_46_c_build_d4', + [-899953933] = 'bh1_46_c_build_d5', + [-671160775] = 'bh1_46_c_build_d6', + [285562949] = 'bh1_46_c_build_d9', + [791549765] = 'bh1_46_c_build_water', + [910483629] = 'bh1_46_c_build_wtr2', + [1902818600] = 'bh1_46_c_build', + [1963774490] = 'bh1_46_c_buildyanky_detail_1', + [-2022017291] = 'bh1_46_c_buildyanky_detail_2', + [1317045506] = 'bh1_46_c_buildyanky_detail_3', + [1626581480] = 'bh1_46_c_buildyanky_detail_4', + [810252008] = 'bh1_46_c_grnd', + [-1263483880] = 'bh1_46_em_a', + [-1024499563] = 'bh1_46_em_b', + [875354838] = 'bh1_46_fountainwater1', + [1668331873] = 'bh1_46_fountainwater2', + [-2143220928] = 'bh1_46_furgrass_south01', + [-1430560716] = 'bh1_46_furgrass_south02', + [-186092403] = 'bh1_46_furgrass_south03', + [-1893160689] = 'bh1_46_furgrass_south04', + [1227463950] = 'bh1_46_furgrass_south05', + [-802337274] = 'bh1_46_furhedge00', + [-628661574] = 'bh1_46_furhedge01', + [-187558065] = 'bh1_46_furhedge02', + [1172629932] = 'bh1_46_ground01', + [-1820431165] = 'bh1_46_ground01a', + [-1832457567] = 'bh1_46_hdg_01', + [-1782452069] = 'bh1_46_hdg_02', + [1734349784] = 'bh1_46_hdg_03', + [2050374020] = 'bh1_46_hdg_04', + [-872522477] = 'bh1_46_hdg_05', + [-825531731] = 'bh1_46_hdg_06', + [1920538727] = 'bh1_46_mansion01_d_iv', + [1503301272] = 'bh1_46_mansion01_d1', + [484906290] = 'bh1_46_mansion01_d2', + [1998571938] = 'bh1_46_mansion01_d3', + [-797574067] = 'bh1_46_mansion01_d4', + [-1699311409] = 'bh1_46_mansion01_d5', + [-1181191078] = 'bh1_46_mansion01_detail_2', + [-1763758360] = 'bh1_46_mansion01_detail_3', + [-2069067133] = 'bh1_46_mansion01_detail_4', + [84478778] = 'bh1_46_mansion01_detail_5', + [-226367956] = 'bh1_46_mansion01_detail_6', + [2132222347] = 'bh1_46_mansion01', + [1554104833] = 'bh1_46_pl1', + [-553367864] = 'bh1_46_pl2', + [-637799143] = 'bh1_46_plants1', + [-935767660] = 'bh1_46_plants2', + [1866702762] = 'bh1_46_plants3', + [1560673071] = 'bh1_46_plants4', + [-1574991483] = 'bh1_46b_a_build_d_1', + [604114252] = 'bh1_46b_a_build_d_2', + [842377651] = 'bh1_46b_a_build_d_3', + [1832704616] = 'bh1_46b_a_build_o', + [-1933941009] = 'bh1_46b_a_build_o2', + [-2030806173] = 'bh1_46b_a_build_o3', + [-1899042020] = 'bh1_46b_a_build_o4', + [1942905857] = 'bh1_46b_a_build', + [-687289398] = 'bh1_46b_a_buildb', + [-847462761] = 'bh1_46b_b_balust_1', + [-1209560211] = 'bh1_46b_b_balust_2', + [-367691832] = 'bh1_46b_b_balust_3', + [1682467888] = 'bh1_46b_b_balust_4', + [1339966300] = 'bh1_46b_b_balust_5', + [-2128337433] = 'bh1_46b_b_balust_6', + [-1438943211] = 'bh1_46b_b_balust_7', + [1191817639] = 'bh1_46b_b_balust_8', + [-280865979] = 'bh1_46b_b_build', + [-702360621] = 'bh1_46b_em_1', + [-337576113] = 'bh1_46b_em_2', + [1540636799] = 'bh1_46b_fence_1', + [819462836] = 'bh1_46b_flowergroup_a', + [-1330085261] = 'bh1_46b_flowergroup_b', + [-1691255147] = 'bh1_46b_flowergroup_c1', + [1682903249] = 'bh1_46b_flowergroup_c2', + [1992144302] = 'bh1_46b_flowergroup_c3', + [-354964539] = 'bh1_46b_furgrass01', + [-593359014] = 'bh1_46b_furgrass02', + [-1381080217] = 'bh1_46b_furhedge00', + [-1661156856] = 'bh1_46b_furhedge01', + [-1363974795] = 'bh1_46b_furhedge02', + [1080527071] = 'bh1_46b_furhedge03', + [1377905746] = 'bh1_46b_furhedge04', + [1190356752] = 'bh1_46b_ground_dcs', + [1683986739] = 'bh1_46b_ground', + [1107631626] = 'bh1_46b_groundb_dcs', + [-1719954317] = 'bh1_46b_groundb', + [-1553315544] = 'bh1_46b_hedge_02', + [-1857280788] = 'bh1_46b_hedge_03', + [2131853431] = 'bh1_46b_hedge_04', + [-26247391] = 'bh1_46b_hedge_05', + [-334636450] = 'bh1_46b_hedge_06', + [1827387825] = 'bh1_46b_plants', + [-310715319] = 'bh1_46b_water', + [823389161] = 'bh1_47_base_01', + [1005249067] = 'bh1_47_bld02_bal1', + [-258094186] = 'bh1_47_bld02_bal2', + [-1982222489] = 'bh1_47_bld02_dec_01', + [1328593422] = 'bh1_47_bld02_dec_02', + [-1520146820] = 'bh1_47_bld02_dec_03', + [-575449323] = 'bh1_47_bld02_dec_04', + [-260735847] = 'bh1_47_bld02_dec_05', + [1983252508] = 'bh1_47_bld02_dec_06', + [-1930349166] = 'bh1_47_bld02_dec_07', + [-1876543657] = 'bh1_47_bld02_dtl01', + [-279126603] = 'bh1_47_bld02_terrain', + [1709010950] = 'bh1_47_bld02', + [-1340443001] = 'bh1_47_bld03_dtl', + [623827067] = 'bh1_47_bld03_garage_ovl', + [-291890860] = 'bh1_47_bld03_ovl', + [726272860] = 'bh1_47_bld03_pergola', + [-1542260580] = 'bh1_47_bld03_terrain1', + [-398789441] = 'bh1_47_bld03', + [-1793534980] = 'bh1_47_burnt_decal_01', + [-1157743797] = 'bh1_47_burnt_details', + [603828004] = 'bh1_47_burnt_house', + [1899142671] = 'bh1_47_burnt_pool_decal_01', + [-2040933200] = 'bh1_47_burnt_slod', + [771477986] = 'bh1_47_decal_03', + [-1268830485] = 'bh1_47_detailsbase_01', + [-998270886] = 'bh1_47_flowers_01', + [1930237257] = 'bh1_47_gate_1', + [-2139443164] = 'bh1_47_gate_2', + [-423316851] = 'bh1_47_hedged1_01', + [1356138156] = 'bh1_47_hedged1_02', + [2115756345] = 'bh1_47_hedged1_03', + [2086264245] = 'bh1_47_hedged1_04', + [697743408] = 'bh1_47_hedged1_05', + [-1479625570] = 'bh1_47_hedged1_06', + [-1727981821] = 'bh1_47_hedged1_07', + [-951979132] = 'bh1_47_hedged1_08', + [1689398886] = 'bh1_47_hedged1_09', + [570141302] = 'bh1_47_hedged1_10', + [884559857] = 'bh1_47_hedged1_11', + [-1732807038] = 'bh1_47_hedged2_01', + [-2029661409] = 'bh1_47_hedged2_02', + [2101526425] = 'bh1_47_hedged2_03', + [1804082212] = 'bh1_47_hedged2_04', + [-1776193186] = 'bh1_47_hedged2_05', + [884453004] = 'bh1_47_hedged2_06', + [2057615973] = 'bh1_47_hedged2_07', + [1765185417] = 'bh1_47_hedged2_08', + [1058521932] = 'bh1_47_hedged2_09', + [-1049534710] = 'bh1_47_hedged2_10', + [1109876852] = 'bh1_47_hedged2_11', + [333874163] = 'bh1_47_hedged2_12', + [-1194068010] = 'bh1_47_joshhse_firevfx', + [-1753964904] = 'bh1_47_joshhse_firevfx001', + [-1521075621] = 'bh1_47_joshhse_firevfx002', + [-822440545] = 'bh1_47_joshhse_firevfx004', + [-592172782] = 'bh1_47_joshhse_firevfx005', + [-225684286] = 'bh1_47_joshhse_firevfx006', + [110263502] = 'bh1_47_joshhse_firevfx007', + [402661289] = 'bh1_47_joshhse_firevfx008', + [633191204] = 'bh1_47_joshhse_firevfx009', + [541340557] = 'bh1_47_joshhse_firevfx010', + [-320090907] = 'bh1_47_joshhse_firevfx011', + [255136119] = 'bh1_47_joshhse_firevfx012', + [1818204024] = 'bh1_47_pool02', + [-1154061131] = 'bh1_47_terrain_1', + [282919677] = 'bh1_47_terrain_hedge', + [1619214278] = 'bh1_47_unburnt_decal', + [-704158548] = 'bh1_47_unburnt_details', + [1508262081] = 'bh1_47_unburnt_emis_slod', + [-1136613807] = 'bh1_47_unburnt_emis', + [-1055384942] = 'bh1_47_unburnt_house', + [1427638297] = 'bh1_47_unburnt_pool_decal', + [155841957] = 'bh1_47_unburnt_slod', + [1879871808] = 'bh1_48_b_builda', + [-1504248364] = 'bh1_48_b_buildb', + [1851341544] = 'bh1_48_b_decal_a', + [2091145086] = 'bh1_48_b_decal_b', + [-1964051437] = 'bh1_48_b_decal_c', + [-305612347] = 'bh1_48_b_decal_d', + [-67709407] = 'bh1_48_b_decal_e', + [-292769785] = 'bh1_48_b_detailsa', + [-1069558942] = 'bh1_48_b_detailsb', + [-769165519] = 'bh1_48_b_detailsc', + [1413905273] = 'bh1_48_b_detailsd', + [-2080372624] = 'bh1_48_b_gate1', + [-1980453285] = 'bh1_48_b_ground', + [-1148178078] = 'bh1_48_b_wall', + [-1945644990] = 'bh1_48_balustrada', + [2105160487] = 'bh1_48_balustradb', + [597229410] = 'bh1_48_balustradc', + [277063902] = 'bh1_48_em_a', + [588205557] = 'bh1_48_em_b', + [1502329577] = 'bh1_48_em_t', + [1558978619] = 'bh1_48_flowers2', + [1007476365] = 'bh1_48_flowers3', + [717437946] = 'bh1_48_flowers4', + [1129536043] = 'bh1_48_fur_01', + [436012927] = 'bh1_48_fur_02', + [1587417284] = 'bh1_48_fur_03', + [1954102394] = 'bh1_48_fur_04', + [208268377] = 'bh1_48_fur_05', + [-632944622] = 'bh1_48_fur_06', + [688694686] = 'bh1_48_fur_07', + [-155074295] = 'bh1_48_fur_08', + [-709460217] = 'bh1_48_fur_09', + [821704369] = 'bh1_48_fur_10', + [-588411239] = 'bh1_48_fur_11', + [179268124] = 'bh1_48_fur_12', + [965396434] = 'bh1_48_fur_13', + [-414932153] = 'bh1_48_fur_14', + [-833883830] = 'bh1_48_fur_15', + [-998122058] = 'bh1_48_fur_16', + [1900583117] = 'bh1_48_grnd_hdg', + [-1744860020] = 'bh1_48_grnd', + [-1391260454] = 'bh1_48_grnd2_clth', + [-926619243] = 'bh1_48_grnd2_clthb', + [-214455419] = 'bh1_48_grnd2', + [-57738194] = 'bh1_48_mans_decal_1', + [-889841411] = 'bh1_48_mans_decal_2', + [-653249231] = 'bh1_48_mans_decal_3', + [-869194181] = 'bh1_48_mans_decal_4ay', + [1240951900] = 'bh1_48_mans_decal_em2', + [1587966903] = 'bh1_48_mans_decal_emiss', + [-1426400673] = 'bh1_48_mans_decal_pool', + [689431352] = 'bh1_48_mans_ivy1', + [994609053] = 'bh1_48_mans_ivy2', + [1524356907] = 'bh1_48_michael_decla', + [-549724171] = 'bh1_48_michael_declb', + [-318932104] = 'bh1_48_michael_declc', + [-71231233] = 'bh1_48_michael_decld', + [-887672284] = 'bh1_48_michael_deta', + [-1193669206] = 'bh1_48_michael_detb', + [723317294] = 'bh1_48_michael_detc', + [416664992] = 'bh1_48_michael_detd', + [113299972] = 'bh1_48_michaels', + [1854260036] = 'bh1_48_planter_ref', + [1827097148] = 'bh1_48_props_watrelfproxy', + [645202402] = 'bh1_48_tennis_detail', + [217437483] = 'bh1_48_water_fount', + [1115311664] = 'bh1_49_bld_11_em_lod', + [10758786] = 'bh1_49_bld_11_em', + [-259793739] = 'bh1_49_bld_11', + [292807669] = 'bh1_49_bld_chrch', + [-327094411] = 'bh1_49_bld_decal', + [-322154375] = 'bh1_49_bld_decal2', + [-864809015] = 'bh1_49_bld_decal3', + [1121526061] = 'bh1_49_bushdec_01', + [1966671512] = 'bh1_49_bushdec_02', + [-1545346067] = 'bh1_49_bushdec_03', + [-802407299] = 'bh1_49_bushdec_04', + [-1101162272] = 'bh1_49_bushdec_05', + [-294422261] = 'bh1_49_bushdec_06', + [-599698265] = 'bh1_49_bushdec_07', + [149663235] = 'bh1_49_bushdec_08', + [-123662994] = 'bh1_49_bushdec_09', + [-1600595125] = 'bh1_49_bushdec_10', + [1390460892] = 'bh1_49_bushdec_11', + [1579734632] = 'bh1_49_bushdec_12', + [1051137569] = 'bh1_49_chrch_em_lod', + [-1904787447] = 'bh1_49_chrch_em', + [-848986919] = 'bh1_49_cloister_d', + [-13038663] = 'bh1_49_cloister028_em_lod', + [278960799] = 'bh1_49_cloister028_em', + [-736652603] = 'bh1_49_cloister028', + [-1277031083] = 'bh1_49_decals', + [-795569752] = 'bh1_49_decalsb', + [-1036061674] = 'bh1_49_decalsb2', + [815442589] = 'bh1_49_flower1', + [1068583114] = 'bh1_49_flower2', + [-435579528] = 'bh1_49_flower3', + [1133089429] = 'bh1_49_grd_decal1', + [1513930747] = 'bh1_49_grd_decal2', + [-1476469890] = 'bh1_49_grd_decal3', + [2139687571] = 'bh1_49_grd_decal4', + [-113029518] = 'bh1_49_grnd', + [-46224274] = 'bh1_49_shadowcaster', + [-51067641] = 'bh1_49_water', + [742609507] = 'bh1_49_waterd', + [96940378] = 'bh1_49b_flower', + [-2137944101] = 'bh1_49b_park_fur', + [750588006] = 'bh1_49b_park_fur2', + [-1941123196] = 'bh1_49b_park_fur3', + [2065575207] = 'bh1_49b_park_fur4', + [-249433166] = 'bh1_49b_park_grd_d', + [-737921557] = 'bh1_49b_park_grd', + [2075954223] = 'bh1_49b_park_waterd', + [-1803893806] = 'bh1_emissive_b_bh1_31', + [1101424217] = 'bh1_emissive_bh1_01_a', + [-641263972] = 'bh1_emissive_bh1_01_b', + [838028652] = 'bh1_emissive_bh1_02_set', + [-1365885473] = 'bh1_emissive_bh1_02', + [-750064110] = 'bh1_emissive_bh1_03_ema', + [1580794864] = 'bh1_emissive_bh1_03_emb', + [-272763863] = 'bh1_emissive_bh1_04_ema', + [-555003260] = 'bh1_emissive_bh1_04_emb', + [-451073336] = 'bh1_emissive_bh1_05', + [-734295803] = 'bh1_emissive_bh1_06', + [169080062] = 'bh1_emissive_bh1_07_a', + [399609977] = 'bh1_emissive_bh1_07_b', + [935186440] = 'bh1_emissive_bh1_08', + [-1111750453] = 'bh1_emissive_bh1_09_ema', + [1309157761] = 'bh1_emissive_bh1_09_emb', + [-2091651161] = 'bh1_emissive_bh1_11', + [-1937473016] = 'bh1_emissive_bh1_13', + [-1684135877] = 'bh1_emissive_bh1_14', + [-998659842] = 'bh1_emissive_bh1_15_a', + [-1171301027] = 'bh1_emissive_bh1_15', + [1227455307] = 'bh1_emissive_bh1_17', + [-690514263] = 'bh1_emissive_bh1_18', + [1549207829] = 'bh1_emissive_bh1_20', + [-1292630005] = 'bh1_emissive_bh1_20b', + [1310682278] = 'bh1_emissive_bh1_21', + [-2119117880] = 'bh1_emissive_bh1_22', + [-325059166] = 'bh1_emissive_bh1_22b', + [844542373] = 'bh1_emissive_bh1_30', + [1442937082] = 'bh1_emissive_bh1_32', + [39223217] = 'bh1_emissive_bh1_33_semp', + [592647070] = 'bh1_emissive_bh1_33', + [2022489616] = 'bh1_emissive_bh1_34', + [-848097816] = 'bh1_emissive_bh1_35a', + [1187971234] = 'bh1_emissive_bh1_35b', + [1701592540] = 'bh1_emissive_bh1_35c', + [877091727] = 'bh1_emissive_bh1_35d', + [-462481953] = 'bh1_emissive_bh1_36', + [305983866] = 'bh1_emissive_bh1_37', + [-1300785683] = 'bh1_emissive_bh1_39_bda', + [912104891] = 'bh1_emissive_bh1_39_bdb', + [396386365] = 'bh1_emissive_bh1_39_bdc', + [1024884199] = 'bh1_emissive_bh1_39_s03e', + [1134261378] = 'bh1_emissive_bh1_40', + [-1063253189] = 'bh1_emissive_bh1_40b', + [1139506671] = 'bh1_emissive_bh1_42_plota', + [-354726960] = 'bh1_emissive_bh1_42_plotb', + [674676153] = 'bh1_emissive_bh1_42', + [-1221191516] = 'bh1_emissive_bh1_42b_ter', + [-942143005] = 'bh1_emissive_bh1_42b', + [364829048] = 'bh1_emissive_bh1_44_ema', + [1952947826] = 'bh1_emissive_bh1_44_ema1', + [2125312766] = 'bh1_emissive_bh1_44_ema2', + [902406455] = 'bh1_emissive_bh1_44_ema3', + [1192147971] = 'bh1_emissive_bh1_44_emb', + [1435788356] = 'bh1_emissive_bh1_44_emb1', + [-384660670] = 'bh1_emissive_bh1_44_emb2', + [-1783054353] = 'bh1_emissive_bh1_45_a', + [-873223068] = 'bh1_emissive_bh1_45_b', + [-1236893430] = 'bh1_emissive_bh1_45_c', + [814151053] = 'bh1_emissive_bh1_45_d', + [447662557] = 'bh1_emissive_bh1_45_e', + [354238138] = 'bh1_emissive_bh1_45_f', + [881630230] = 'bh1_emissive_bh1_46_a', + [947233768] = 'bh1_emissive_bh1_46_b', + [403278773] = 'bh1_emissive_bh1_47_a', + [2109462296] = 'bh1_emissive_bh1_47_c', + [-364915213] = 'bh1_emissive_bh1_48_a', + [-965308831] = 'bh1_emissive_bh1_48_b', + [1650476586] = 'bh1_emissive_bh1_48_t', + [-224204959] = 'bh1_emissive_bh1_a_31', + [-1887484302] = 'bh1_emissive_bh1_c_31', + [316291187] = 'bh1_emissive_em', + [1014135834] = 'bh1_emissive_hgemad', + [-166393464] = 'bh1_emissive_hgemad02', + [1438235569] = 'bh1_emissive_office', + [630273975] = 'bh1_emissive_theatresign', + [1318988087] = 'bh1_emissive1_46b', + [-62463627] = 'bh1_emissive2_46b', + [2052273332] = 'bh1_lod_emissive_6_20_slod3', + [1060762563] = 'bh1_lod_emissive_6_21_slod3', + [-1859040638] = 'bh1_lod_emissive', + [-692530331] = 'bh1_lod_slod3', + [-1058670740] = 'bh1_props_comboac_lod', + [616222599] = 'bh1_rd_furgrass_00', + [401126883] = 'bh1_rd_furgrass_01', + [155621535] = 'bh1_rd_furgrass_02', + [1888446255] = 'bh1_rd_furgrass_03', + [1657883571] = 'bh1_rd_furgrass_04', + [1426272279] = 'bh1_rd_furgrass_05', + [1196201130] = 'bh1_rd_furgrass_06', + [-1223625679] = 'bh1_rd_furgrass_07', + [-1446585955] = 'bh1_rd_furgrass_08', + [-1667416246] = 'bh1_rd_furgrass_09', + [-374258595] = 'bh1_rd_furgrass_10', + [-601151159] = 'bh1_rd_furgrass_11', + [-845575130] = 'bh1_rd_furgrass_12', + [-137371502] = 'bh1_rd_furgrass_13', + [-350009543] = 'bh1_rd_furgrass_14', + [628407263] = 'bh1_rd_furgrass_15', + [381492848] = 'bh1_rd_furgrass_16', + [1086812804] = 'bh1_rd_furgrass_17', + [808505687] = 'bh1_rd_furgrass_18', + [1786496492] = 'bh1_rd_furgrass_19', + [-1116608473] = 'bh1_rd_furgrass_20', + [-1522550845] = 'bh1_rd_furgrass_21', + [1930613606] = 'bh1_rd_furgrass_22', + [-2002518392] = 'bh1_rd_furgrass_23', + [1451104829] = 'bh1_rd_furgrass_24', + [1710143774] = 'bh1_rd_furgrass_25', + [733168808] = 'bh1_rd_furgrass_26', + [964354103] = 'bh1_rd_furgrass_27', + [285773651] = 'bh1_rd_furgrass_28', + [519252776] = 'bh1_rd_furgrass_29', + [-2131654945] = 'bh1_rd_furgrass_30', + [-98600647] = 'bh1_rd_furgrass_31', + [-330572398] = 'bh1_rd_furgrass_32', + [-710561722] = 'bh1_rd_furgrass_33', + [-940108567] = 'bh1_rd_furgrass_34', + [-87197091] = 'bh1_rd_furgrass_35', + [-324674034] = 'bh1_rd_furgrass_36', + [-678186006] = 'bh1_rd_furgrass_37', + [-920053995] = 'bh1_rd_furgrass_38', + [-3799986] = 'bh1_rd_furgrass_39', + [571723453] = 'bh1_rd_furgrass_40', + [-151062384] = 'bh1_rd_furgrass_41', + [-1127119818] = 'bh1_rd_furgrass_42', + [-1805536425] = 'bh1_rd_furgrass_43', + [-372220365] = 'bh1_rd_furgrass_44', + [-1595192214] = 'bh1_rd_furgrass_45', + [-1355683593] = 'bh1_rd_furgrass_46', + [1029309765] = 'bh1_rd_furgrass_47', + [1270063608] = 'bh1_rd_furgrass_48', + [1775623740] = 'bh1_rd_furgrass_49', + [519324910] = 'bh1_rd_furgrass_50', + [1727550709] = 'bh1_rd_furgrass_51', + [1963127050] = 'bh1_rd_furgrass_52', + [1262787982] = 'bh1_rd_furgrass_53', + [1495021885] = 'bh1_rd_furgrass_54', + [-1614035301] = 'bh1_rd_furgrass_55', + [-1382522316] = 'bh1_rd_furgrass_56', + [-2076307584] = 'bh1_rd_furgrass_57', + [-1842107541] = 'bh1_rd_furgrass_58', + [-1617312193] = 'bh1_rd_furgrass_59', + [-216208912] = 'bh1_rd_furgrass_60', + [-1381474552] = 'bh1_rd_furgrass_61', + [-681921940] = 'bh1_rd_furgrass_62', + [995392094] = 'bh1_rd_furgrass_63', + [763813571] = 'bh1_rd_furgrass_64', + [-456929986] = 'bh1_rd_furgrass_65', + [251797946] = 'bh1_rd_furgrass_66', + [-74188086] = 'bh1_rd_furgrass_67', + [-774199464] = 'bh1_rd_furgrass_68', + [475872348] = 'bh1_rd_furgrass_69', + [1530871190] = 'bh1_rd_furgrass_70', + [1266261515] = 'bh1_rd_furgrass_71', + [-1354340957] = 'bh1_rd_furgrass_72', + [-1593030353] = 'bh1_rd_furgrass_73', + [-1529982793] = 'bh1_rd_furgrass_74', + [-1744062670] = 'bh1_rd_furgrass_75', + [-1986618808] = 'bh1_rd_furgrass_76', + [-68026627] = 'bh1_rd_furgrass_77', + [-339452254] = 'bh1_rd_furgrass_78', + [-821746396] = 'bh1_rd_furgrass_79', + [845605574] = 'bh1_rd_furgrass_80', + [-7109344] = 'bh1_rd_furgrass_81', + [250749917] = 'bh1_rd_furgrass_82', + [2087255753] = 'bh1_rd_furgrass_83', + [1259478044] = 'bh1_rd_furgrass_84', + [1490892722] = 'bh1_rd_furgrass_85', + [-1483713257] = 'bh1_rd_furgrass_86', + [-1252593500] = 'bh1_rd_furgrass_87', + [384995061] = 'bh1_rd_props_busroof002', + [67365136] = 'bh1_rd_props_busroof003', + [-1158981920] = 'bh1_rd_props_busroof004', + [-1466060219] = 'bh1_rd_props_busroof005', + [1222712670] = 'bh1_rd_props_busroof01', + [1736313339] = 'bh1_rd2_alleyweeds', + [-1945474736] = 'bh1_rd2_bh1_metro_link_01', + [2050925148] = 'bh1_rd2_carpark1', + [1132770537] = 'bh1_rd2_carpark2', + [1186775938] = 'bh1_rd2_cp1_fizzys', + [-1759097832] = 'bh1_rd2_cp1_rail', + [20075322] = 'bh1_rd2_cp1_sgn_lod', + [-226807181] = 'bh1_rd2_cp1_sgn', + [1558411635] = 'bh1_rd2_cp1_stairs_lod', + [-890838246] = 'bh1_rd2_cp1_stairs_main', + [-964280405] = 'bh1_rd2_cp1bdecals', + [952080100] = 'bh1_rd2_cp1decals', + [1728750731] = 'bh1_rd2_cp1details', + [1553698780] = 'bh1_rd2_cp2_sgn', + [1564953971] = 'bh1_rd2_cp2decals', + [-1264215694] = 'bh1_rd2_cp2details', + [-114999207] = 'bh1_rd2_fur01', + [663526683] = 'bh1_rd2_fur02', + [-1544382987] = 'bh1_rd2_fur03', + [-1314115224] = 'bh1_rd2_fur04', + [-1032858897] = 'bh1_rd2_fur05', + [-792662127] = 'bh1_rd2_fur06', + [-1936627929] = 'bh1_rd2_fur07', + [-1698364526] = 'bh1_rd2_fur08', + [-956474366] = 'bh1_rd2_fur09', + [1394504470] = 'bh1_rd2_fur10', + [1155585691] = 'bh1_rd2_fur11', + [2017967464] = 'bh1_rd2_fur12', + [-358276495] = 'bh1_rd2_fur13', + [-396681763] = 'bh1_rd2_fur14', + [370211144] = 'bh1_rd2_fur15', + [62772386] = 'bh1_rd2_fur16', + [-1355928700] = 'bh1_rd2_fur17', + [-1662974230] = 'bh1_rd2_fur18', + [-894705025] = 'bh1_rd2_fur19', + [-529265481] = 'bh1_rd2_fur20', + [-207867129] = 'bh1_rd2_fur21', + [1146115170] = 'bh1_rd2_fur22', + [-985868727] = 'bh1_rd2_fur23', + [-669844491] = 'bh1_rd2_fur24', + [-1431264975] = 'bh1_rd2_fur25', + [-76365132] = 'bh1_rd2_fur26', + [-1038921746] = 'bh1_rd2_fur27', + [-765169520] = 'bh1_rd2_fur28', + [-1519282517] = 'bh1_rd2_fur29', + [651845179] = 'bh1_rd2_fur30', + [-303141788] = 'bh1_rd2_fur31', + [-123895358] = 'bh1_rd2_fur32', + [1400747901] = 'bh1_rd2_fur33', + [1826089521] = 'bh1_rd2_fur34', + [902429722] = 'bh1_rd2_fur35', + [1077219564] = 'bh1_rd2_fur36', + [496749550] = 'bh1_rd2_fur37', + [28939306] = 'bh1_rd2_fur38', + [954696321] = 'bh1_rd2_fur39', + [-973333016] = 'bh1_rd2_fur40', + [-253267010] = 'bh1_rd2_fur41', + [-495855917] = 'bh1_rd2_fur42', + [250490827] = 'bh1_rd2_fur43', + [-43807562] = 'bh1_rd2_fur44', + [663806224] = 'bh1_rd2_fur45', + [433014157] = 'bh1_rd2_fur46', + [147563310] = 'bh1_rd2_fur47', + [-25325934] = 'bh1_rd2_fur48', + [1144822283] = 'bh1_rd2_fur49', + [782266375] = 'bh1_rd2_fur50', + [-442900997] = 'bh1_rd2_fur51', + [1744069290] = 'bh1_rd2_fur53', + [1705664022] = 'bh1_rd2_fur54', + [-478661688] = 'bh1_rd2_hedge_shadow', + [-6983143] = 'bh1_rd2_islanddecal', + [-1141899104] = 'bh1_rd2_lowhedge', + [767127050] = 'bh1_rd2_metro_shadow', + [772960247] = 'bh1_rd2_metrolink_tunnel_lod', + [-5816020] = 'bh1_rd2_metrolink_tunnel', + [1419636801] = 'bh1_rd2_portola_shadbox', + [1633083285] = 'bh1_rd2_portola_subwaybits', + [1076531216] = 'bh1_rd2_portola_subwayshell', + [578883653] = 'bh1_rd2_road_sect', + [517886668] = 'bh1_rd2sect_01_r10_01_ovly', + [-659827385] = 'bh1_rd2sect_01_r10_01', + [155428494] = 'bh1_rd2sect_01_r10_02_ovly', + [-1850095780] = 'bh1_rd2sect_01_r10_02', + [-491818530] = 'bh1_rd2sect_01_r11_01', + [-414979116] = 'bh1_rd2sect_01_r12_01_ovly', + [-1148236897] = 'bh1_rd2sect_01_r13_01', + [-1020619147] = 'bh1_rd2sect_01_r2_03_ovly', + [-360507592] = 'bh1_rd2sect_01_r2_03', + [1045406481] = 'bh1_rd2sect_01_r4_ovly', + [1675501022] = 'bh1_rd2sect_01_r4', + [392318112] = 'bh1_rd2sect_01_r5_ovly', + [1919924993] = 'bh1_rd2sect_01_r5', + [-628913021] = 'bh1_rd2sect_01_r6_ovly', + [2133972101] = 'bh1_rd2sect_01_r6', + [2086265124] = 'bh1_rd2sect_01_r7_02_ovly', + [-353296408] = 'bh1_rd2sect_01_r7_04_ovly', + [1034793965] = 'bh1_rd2sect_01_r7_05_ovly', + [-1941060203] = 'bh1_rd2sect_01_r7_05a', + [37700113] = 'bh1_rd2sect_01_r8_01_ovly', + [-646664713] = 'bh1_rd2sect_01_r8_01', + [-1792349919] = 'bh1_rd2sect_01_r8_02_ovly', + [-1624852132] = 'bh1_rd2sect_01_r8_02', + [-141572023] = 'bh1_rd2sect_01_r9_ovly', + [735325647] = 'bh1_rd2sect_01_r9', + [-1256752102] = 'bh1_rd2sect_02_r10_01_ovly', + [-1295858346] = 'bh1_rd2sect_02_r10_01', + [-214511227] = 'bh1_rd2sect_02_r10_02_ovly', + [-1593761325] = 'bh1_rd2sect_02_r10_02', + [-1381059175] = 'bh1_rd2sect_02_r12_01', + [1130092257] = 'bh1_rd2sect_02_r2_004', + [-1850867802] = 'bh1_rd2sect_02_r2_03_ovly', + [1563624922] = 'bh1_rd2sect_02_r2_03', + [-1231865414] = 'bh1_rd2sect_02_r2_03a', + [757528049] = 'bh1_rd2sect_02_r4_ovly', + [-1091164162] = 'bh1_rd2sect_02_r4', + [-1020978744] = 'bh1_rd2sect_02_r5_ovly', + [-1359542272] = 'bh1_rd2sect_02_r5', + [1847192645] = 'bh1_rd2sect_02_r6_ovly', + [-1054364563] = 'bh1_rd2sect_02_r6', + [510614445] = 'bh1_rd2sect_02_r7_02_ovly', + [1004487425] = 'bh1_rd2sect_02_r7_02', + [-543880594] = 'bh1_rd2sect_02_r7_04', + [-629403997] = 'bh1_rd2sect_02_r7_05_ovly', + [251390267] = 'bh1_rd2sect_02_r7_05', + [2119615695] = 'bh1_rd2sect_02_r8_01_ovly', + [2034441431] = 'bh1_rd2sect_02_r8_01', + [-1430612115] = 'bh1_rd2sect_02_r8_02_ovly', + [-2088947381] = 'bh1_rd2sect_02_r8_02', + [1692241617] = 'bh1_rd2sect_02_r9_ovly', + [-698034457] = 'bh1_rd2sect_02_r9', + [-990090196] = 'bh1_rd2sect_03_r10_003', + [-1749630133] = 'bh1_rd2sect_03_r10_01_ovly', + [-527097143] = 'bh1_rd2sect_03_r10_02_ovly', + [1805065876] = 'bh1_rd2sect_03_r2_03', + [-1615486617] = 'bh1_rd2sect_03_r4_ovly', + [-1399765909] = 'bh1_rd2sect_03_r6_ovly', + [-1911793322] = 'bh1_rd2sect_03_r6', + [1620013124] = 'bh1_rd2sect_03_r7_02_ovly', + [886652950] = 'bh1_rd2sect_03_r7_02a', + [631939517] = 'bh1_rd2sect_03_r7_02b', + [-1754146782] = 'bh1_rd2sect_03_r7_05_ovly', + [-10415888] = 'bh1_rd2sect_03_r7_05', + [-1166824577] = 'bh1_rd2sect_03_r9_ovly', + [-2130080035] = 'bh1_rd2sect_04_r10_01_ovly', + [-2075849416] = 'bh1_rd2sect_04_r10_02_ovly', + [-881153590] = 'bh1_rd2sect_04_r10_02', + [-1963785136] = 'bh1_rd2sect_04_r6_ovly', + [260926168] = 'bh1_rd2sect_04_r6', + [690465503] = 'bh1_rd2sect_04_r7_05_ovly', + [223890098] = 'bh1_rd2sect_04_r9_ovly', + [1413601574] = 'bh1_rd2sect_05_r10_02_ovly', + [984667381] = 'bh1_rd2sect_05_r6_ovly', + [1685494175] = 'bh1_rd2sect_06_r6_ovly', + [1467277791] = 'bh1_rda_furgrass_00', + [1898616138] = 'bh1_rda_furgrass_01', + [-2097104650] = 'bh1_rda_furgrass_02', + [1247299502] = 'bh1_rda_furgrass_03', + [1536322082] = 'bh1_rda_furgrass_04', + [1976901287] = 'bh1_rda_furgrass_05', + [225579196] = 'bh1_rdsect_01_r1_01_ovly', + [1973788490] = 'bh1_rdsect_01_r1_01', + [-2028144440] = 'bh1_rdsect_01_r1_02_ovly', + [-1545634883] = 'bh1_rdsect_01_r1_02', + [-1658054736] = 'bh1_rdsect_01_r12_01', + [774977132] = 'bh1_rdsect_01_r14_01_ovly', + [1938336545] = 'bh1_rdsect_01_r14_01', + [2125422635] = 'bh1_rdsect_01_r2_01_ovly', + [-1293777761] = 'bh1_rdsect_01_r2_01', + [1529159220] = 'bh1_rdsect_01_r2_02_ovly', + [-60385370] = 'bh1_rdsect_01_r2_02', + [132432827] = 'bh1_rdsect_01_r3_01_ovly', + [-1390942014] = 'bh1_rdsect_01_r3_01', + [247556134] = 'bh1_rdsect_01_r3_02_ovly', + [-763481198] = 'bh1_rdsect_01_r3_02', + [1745765840] = 'bh1_rdsect_01_r7_01_ovly', + [2096392569] = 'bh1_rdsect_01_r7_01', + [-1820420463] = 'bh1_rdsect_01_r7_02', + [-539139296] = 'bh1_rdsect_01_r7_03_ovly', + [-1589366244] = 'bh1_rdsect_01_r7_03', + [948908070] = 'bh1_rdsect_01_r7_034', + [-1209311382] = 'bh1_rdsect_01_r7_04', + [1249629473] = 'bh1_rdsect_02_r1_02_ovly', + [1342828724] = 'bh1_rdsect_02_r1_02', + [-1649981264] = 'bh1_rdsect_02_r12_01_ovly', + [161521590] = 'bh1_rdsect_02_r2_01_ovly', + [-1708204376] = 'bh1_rdsect_02_r2_01', + [523843518] = 'bh1_rdsect_02_r2_02_ovly', + [-1536363740] = 'bh1_rdsect_02_r2_02', + [2012243315] = 'bh1_rdsect_02_r3_0', + [1007894452] = 'bh1_rdsect_02_r3_01_ovly', + [-1584364502] = 'bh1_rdsect_02_r3_01', + [-1085452682] = 'bh1_rdsect_02_r3_02_ovly', + [-1769690966] = 'bh1_rdsect_02_r7_01_ovly', + [-1250619900] = 'bh1_rdsect_02_r7_01', + [40666087] = 'bh1_rdsect_02_r7_03_ovly', + [341739741] = 'bh1_rdsect_02_r7_03a', + [-1771270925] = 'bh1_rdsect_02_r7_03b', + [248014758] = 'bh1_rdsect_02_r7_04_ovly', + [1502056534] = 'bh1_rdsect_03_r1_01_ovly', + [-804976807] = 'bh1_rdsect_03_r1_01', + [-1212515124] = 'bh1_rdsect_03_r1_02_ovly', + [462003805] = 'bh1_rdsect_03_r1_02', + [-1566004954] = 'bh1_rdsect_03_r3_02_ovly', + [494899267] = 'bh1_rdsect_03_r7_01_ovly', + [1158217053] = 'bh1_rdsect_03_r7_01', + [926674594] = 'bh1_rdsect_03_r7_03_ovly', + [629079439] = 'bh1_rdsect_03_r7_034', + [1130856219] = 'bh1_rdsect_03_r7_04_ovly', + [1375444210] = 'bh1_rdsect_03_r7_30', + [-1211969696] = 'bh1_rdsect_04_r1_01_ovly', + [-713013421] = 'bh1_rdsect_04_r1_01', + [-1678295311] = 'bh1_rdsect_04_r1_02_ovly', + [-24700576] = 'bh1_rdsect_04_r1_02', + [209373880] = 'bh1_rdsect_04_r7_02_ovly', + [1776773494] = 'bh1_rdsect_04_r7_03_ovly', + [378148821] = 'bh1_rdsect_05_r1_01_ovly', + [-700898980] = 'bh1_rdsect_05_r1_01', + [1427825420] = 'bh1_rdsect_06_r1_01', + [850991848] = 'biff', + [-349601129] = 'bifta', + [1384719738] = 'bike_test', + [-2123114957] = 'bink_3a_00', + [1537903265] = 'bink_3a_01', + [907657084] = 'bink_3a_02', + [4674520] = 'bink_3a_03', + [1219257505] = 'bink_3a_04', + [586619191] = 'bink_3a_05', + [-916593142] = 'bink_3a_07', + [-607974704] = 'bink_3a_08', + [-298209347] = 'bink_3a_09', + [-1713975] = 'bink_3a_10', + [-612783674] = 'bink_3a_100', + [-1165832700] = 'bink_3a_11', + [1154179731] = 'bink_3a_13', + [916506174] = 'bink_3a_14', + [-230408826] = 'bink_3a_15', + [-736296648] = 'bink_3a_16', + [2080559353] = 'bink_3a_17', + [1849439596] = 'bink_3a_18', + [695839728] = 'bink_3a_19', + [292683009] = 'bink_3a_20', + [-923931654] = 'bink_3a_21', + [-1775991192] = 'bink_3a_22', + [1022841867] = 'bink_3a_23', + [1252880247] = 'bink_3a_24', + [-511632096] = 'bink_3a_25', + [-272451165] = 'bink_3a_26', + [921716709] = 'bink_3a_27', + [1152574314] = 'bink_3a_28', + [-612134643] = 'bink_3a_29', + [-214680330] = 'bink_3a_30', + [-1771338918] = 'bink_3a_31', + [139519791] = 'bink_3a_32', + [-795609174] = 'bink_3a_33', + [-1446335976] = 'bink_3a_34', + [1835938144] = 'bink_3a_35', + [1606194685] = 'bink_3a_36', + [-1825702689] = 'bink_3a_37', + [2119160611] = 'bink_3a_38', + [681224118] = 'bink_3a_39', + [-406018233] = 'bink_3a_40', + [-1714681029] = 'bink_3a_41', + [138897468] = 'bink_3a_42', + [-1131425598] = 'bink_3a_43', + [-1370278839] = 'bink_3a_44', + [-757596846] = 'bink_3a_46', + [-375018735] = 'bink_3a_47', + [-93959022] = 'bink_3a_48', + [1143791646] = 'bink_3a_49', + [1921934940] = 'bink_3a_50', + [1541191929] = 'bink_3a_52', + [-637356733] = 'bink_3a_53', + [-934800946] = 'bink_3a_54', + [-1503277558] = 'bink_3a_55', + [-1800918385] = 'bink_3a_56', + [-144347156] = 'bink_3a_57', + [-450901151] = 'bink_3a_58', + [-1502621898] = 'bink_3a_60', + [-2116745727] = 'bink_3a_62', + [459094287] = 'bink_3a_63', + [-305570328] = 'bink_3a_64', + [-151556028] = 'bink_3a_65', + [702993958] = 'bink_3a_67', + [882961306] = 'bink_3a_68', + [64162303] = 'bink_3a_69', + [592818960] = 'bink_3a_72', + [-1645172660] = 'bink_3a_73', + [-1167695561] = 'bink_3a_75', + [1246658821] = 'bink_3a_77', + [2091148720] = 'bink_3a_78', + [-1496532480] = 'bink_3a_79', + [-456472153] = 'bink_3a_80', + [-763845373] = 'bink_3a_81', + [-1068171076] = 'bink_3a_82', + [1039989770] = 'bink_3a_83', + [767581073] = 'bink_3a_84', + [460470005] = 'bink_3a_85', + [154964618] = 'bink_3a_86', + [1667417817] = 'bink_3a_87', + [1430399640] = 'bink_3a_88', + [1131939588] = 'bink_3a_89', + [226566219] = 'bink_3a_90', + [1677774153] = 'bink_3a_91', + [1916692932] = 'bink_3a_92', + [-927787344] = 'bink_3a_93', + [-696667587] = 'bink_3a_94', + [757555095] = 'bink_3a_95', + [794846217] = 'bink_3a_96', + [1977938289] = 'bink_3a_97', + [1714573836] = 'bink_3a_98', + [485146494] = 'bink_3a_99', + [2043516651] = 'bink_3a_door', + [1992775731] = 'bink_3b_00', + [2089640895] = 'bink_3b_01', + [1380126507] = 'bink_3b_02', + [1120202811] = 'bink_3b_03', + [424582479] = 'bink_3b_04', + [503883459] = 'bink_3b_05', + [1808450118] = 'bink_3b_06', + [2088395685] = 'bink_3b_07', + [1369968129] = 'bink_3b_08', + [1591126110] = 'bink_3b_09', + [2077188323] = 'bink_3b_10', + [1847379326] = 'bink_3b_11', + [1749727706] = 'bink_3b_12', + [1603020897] = 'bink_3b_13', + [1377865098] = 'bink_3b_14', + [-1141808850] = 'bink_3b_15', + [-1397046591] = 'bink_3b_16', + [-1462387977] = 'bink_3b_17', + [-1712808675] = 'bink_3b_18', + [69169545] = 'bink_3b_19', + [-334611533] = 'bink_3b_20', + [-1056184913] = 'bink_3b_21', + [-1899953894] = 'bink_3b_22', + [1521129698] = 'bink_3b_23', + [-1913290889] = 'bink_3b_24', + [1060037099] = 'bink_3b_25', + [813974678] = 'bink_3b_26', + [631320272] = 'bink_3b_27', + [350195021] = 'bink_3b_28', + [157513301] = 'bink_3b_29', + [-535682341] = 'bink_3b_30', + [-1258566481] = 'bink_3b_31', + [-999658612] = 'bink_3b_32', + [-1045666284] = 'bink_3b_33', + [-1854175821] = 'bink_3b_34', + [-1507217649] = 'bink_3b_35', + [1953745820] = 'bink_3b_36', + [-2096731967] = 'bink_3b_37', + [1781937953] = 'bink_3b_38', + [931615172] = 'bink_3b_39', + [-155167617] = 'bink_3b_40', + [-453725976] = 'bink_3b_41', + [1128164730] = 'bink_3b_42', + [1434751442] = 'bink_3b_43', + [-1298117616] = 'bink_3b_44', + [-16948145] = 'bison', + [2072156101] = 'bison2', + [1739845664] = 'bison3', + [850565707] = 'bjxl', + [-1205801634] = 'blade', + [-2128233223] = 'blazer', + [-48031959] = 'blazer2', + [-1269889662] = 'blazer3', + [-440768424] = 'blazer4', + [-1590337689] = 'blazer5', + [-150975354] = 'blimp', + [-613725916] = 'blimp2', + [-344943009] = 'blista', + [1039032026] = 'blista2', + [-591651781] = 'blista3', + [1131912276] = 'bmx', + [524108981] = 'boattrailer', + [1069929536] = 'bobcatxl', + [-1435919434] = 'bodhi2', + [865552436] = 'bot_01b_bit_01', + [592258976] = 'bot_01b_bit_02', + [268730639] = 'bot_01b_bit_03', + [-1987130134] = 'boxville', + [-233098306] = 'boxville2', + [121658888] = 'boxville3', + [444171386] = 'boxville4', + [682434785] = 'boxville5', + [-1479664699] = 'brawler', + [-305727417] = 'brickade', + [1549126457] = 'brioso', + [1518498504] = 'bt1_01_alleydts01', + [-696161596] = 'bt1_01_alleydts02', + [561139103] = 'bt1_01_alleystuff01', + [-882990727] = 'bt1_01_alleystuff02', + [417619979] = 'bt1_01_build7_ovl', + [-79469195] = 'bt1_01_build7', + [860237875] = 'bt1_01_build91_dety', + [-533287020] = 'bt1_01_build91_ovl', + [1522033535] = 'bt1_01_build91', + [-1186202789] = 'bt1_01_cablemesh57166_tstd', + [-342702441] = 'bt1_01_crnrb2_ovl', + [1646328675] = 'bt1_01_crnrb2', + [1121275494] = 'bt1_01_fence01', + [805396804] = 'bt1_01_grddtdshad', + [733438063] = 'bt1_01_grdnoshad', + [1322173685] = 'bt1_01_ivy', + [-1047727237] = 'bt1_01_ladders01', + [-674816017] = 'bt1_01_ladders02', + [1420335536] = 'bt1_01_ladders03', + [1785316658] = 'bt1_01_ladders04', + [2068276973] = 'bt1_01_ladders05', + [-989193539] = 'bt1_01_railing01', + [-223316471] = 'bt1_01_railing02', + [1520883623] = 'bt1_01_terrainovl', + [157259099] = 'bt1_02_bldfront01', + [533341979] = 'bt1_02_block_01_ovl', + [2114599291] = 'bt1_02_building01_ovl_2', + [-1305876366] = 'bt1_02_building01_ovl', + [-312945501] = 'bt1_02_building01', + [1965716513] = 'bt1_02_building01dtd', + [1828079541] = 'bt1_02_building01noshad', + [589086762] = 'bt1_02_building02', + [-362139206] = 'bt1_02_chimney_iref', + [1628022640] = 'bt1_02_clth', + [-510950955] = 'bt1_02_cp_ovl01', + [1727603692] = 'bt1_02_curvebal_iref', + [1170356994] = 'bt1_02_emissive_b', + [-995313459] = 'bt1_02_emissive_c', + [938599247] = 'bt1_02_emissive_wind_hd_proxy', + [-1736775706] = 'bt1_02_emissive', + [2146788247] = 'bt1_02_frntrail01', + [1444941805] = 'bt1_02_frntrail02', + [1667345008] = 'bt1_02_frntrail03', + [-641750058] = 'bt1_02_ground_emm', + [-1740411840] = 'bt1_02_ground', + [-251053783] = 'bt1_02_ladder002', + [-340278951] = 'bt1_02_ladder01', + [-819197886] = 'bt1_02_ladder03', + [-592829634] = 'bt1_02_ladder04', + [-1035145592] = 'bt1_02_ladder05', + [1864567754] = 'bt1_02_ladderpool01', + [-2131120265] = 'bt1_02_ladderpool02', + [-1031325234] = 'bt1_02_loadingbay_ovl', + [-1881961158] = 'bt1_02_loadingbay_ovl02', + [-386799080] = 'bt1_02_maildtd00', + [-696597206] = 'bt1_02_maildtd01', + [-975887393] = 'bt1_02_maildtd02', + [-898978349] = 'bt1_02_mailrailing01', + [255211369] = 'bt1_02_mailrailing02', + [502977778] = 'bt1_02_mailrailing03', + [192029156] = 'bt1_02_mall_ov_2', + [-268875355] = 'bt1_02_mall_ov', + [-771226176] = 'bt1_02_mallblock', + [-1737877333] = 'bt1_02_shadowproxy01', + [2010703545] = 'bt1_02_signem_slod1', + [-1949463995] = 'bt1_02_stairs01', + [1878668534] = 'bt1_02_steps01', + [-673345303] = 'bt1_02_winfrane_iref', + [-1397303042] = 'bt1_03_building', + [1359185397] = 'bt1_03_detail', + [162170489] = 'bt1_03_detail2', + [-759223770] = 'bt1_03_dtd01', + [-725282187] = 'bt1_03_emissive', + [154294878] = 'bt1_03_frame01', + [-1046590665] = 'bt1_03_frame02', + [-978214413] = 'bt1_03_grd_noshad', + [-81064519] = 'bt1_03_interior01', + [1963786647] = 'bt1_03_interior02', + [-1219518044] = 'bt1_03_logo01', + [929440207] = 'bt1_03_logo02', + [685212850] = 'bt1_03_logo03', + [205410314] = 'bt1_03_railing01', + [1544875958] = 'bt1_03_railing02', + [-2068047980] = 'bt1_04_block_dtl01', + [-230016166] = 'bt1_04_block_dtl01b', + [-1750069446] = 'bt1_04_block_dtl01int', + [-1837190375] = 'bt1_04_block_dtl02', + [1752391423] = 'bt1_04_block_dtl03', + [89049497] = 'bt1_04_burton_subwaybits', + [1162648331] = 'bt1_04_burton_subwayshell', + [42793518] = 'bt1_04_carparkbitsint2', + [-257173908] = 'bt1_04_carparkbitsint3', + [-931934115] = 'bt1_04_carparkint_reflect', + [1017193224] = 'bt1_04_carparkint1', + [-111708157] = 'bt1_04_carparkint1bits', + [-1837904212] = 'bt1_04_carparkint2', + [394742867] = 'bt1_04_carparkint2bits', + [1287844003] = 'bt1_04_carparkintwallbit', + [-1339101434] = 'bt1_04_de04', + [-44024583] = 'bt1_04_de1', + [262234491] = 'bt1_04_de2', + [191255509] = 'bt1_04_eastglass01', + [1856663360] = 'bt1_04_fence01', + [1612075544] = 'bt1_04_fence02', + [-745775903] = 'bt1_04_glassframe01', + [-2066399372] = 'bt1_04_glassframe02', + [-1006374354] = 'bt1_04_glue_01', + [-1285599003] = 'bt1_04_glue_02', + [1755102049] = 'bt1_04_glue_03', + [-117418837] = 'bt1_04_glue_int', + [-304645104] = 'bt1_04_glue2_int', + [1718629960] = 'bt1_04_hedgetops01', + [-1053168678] = 'bt1_04_hedgetops02', + [806504841] = 'bt1_04_hedgetops03', + [-716008437] = 'bt1_04_hedgetops04', + [-847728878] = 'bt1_04_intcarparkbits2int', + [564500460] = 'bt1_04_intcarparkbitsint', + [1543405043] = 'bt1_04_lad1', + [-120255406] = 'bt1_04_mall_emit_slod', + [2034754878] = 'bt1_04_mall_emit01', + [-1846897017] = 'bt1_04_mall_emit02', + [1074779481] = 'bt1_04_mall01_dt01', + [-403319234] = 'bt1_04_mall01', + [-1953893014] = 'bt1_04_mall01int', + [-246945566] = 'bt1_04_mall02', + [-1601638373] = 'bt1_04_mall03_dt01', + [2122384214] = 'bt1_04_mall03', + [247843095] = 'bt1_04_malldoorsint', + [1867760399] = 'bt1_04_northglass01', + [-1170635066] = 'bt1_04_roof_dtl01', + [-361175228] = 'bt1_04_roof_dtl02', + [-658816055] = 'bt1_04_roof_dtl03', + [-1195773836] = 'bt1_04_roofsteps01', + [-1374889190] = 'bt1_04_roofsteps02', + [-409416111] = 'bt1_04_roofsteps03', + [-913403331] = 'bt1_04_roofsteps04', + [100928295] = 'bt1_04_roofsteps05', + [-156210048] = 'bt1_04_roofsteps06', + [545177628] = 'bt1_04_roofsteps07', + [-1752427146] = 'bt1_04_shop_dcal', + [-1621819717] = 'bt1_04_shop2', + [-720377296] = 'bt1_04_shop3', + [-161144795] = 'bt1_04_shopframe01', + [-1349509210] = 'bt1_04_shw_pxy', + [1075575058] = 'bt1_04_terrain02', + [331872972] = 'bt1_04_vine_emissive_slod', + [1733341753] = 'bt1_04_vine_emissive', + [1027688016] = 'bt1_04_weed_001', + [-2042055990] = 'bt1_04_weed_01', + [805668421] = 'bt1_04_weed_02', + [423641443] = 'bt1_04burtonsubways_reflect', + [233891262] = 'bt1_04burtonsubways_shadowb', + [-480612982] = 'bt1_05_ballarge_iref', + [-1876066435] = 'bt1_05_balsmall_iref', + [-1021066582] = 'bt1_05_buildmed_detail', + [-1733351955] = 'bt1_05_buildmed', + [1321214132] = 'bt1_05_details03', + [814926301] = 'bt1_05_fireescape_iref', + [-4737979] = 'bt1_05_flynt_dtl01', + [1016868365] = 'bt1_05_flynt_dtl02', + [1599959951] = 'bt1_05_flynt_dtl03', + [-580462050] = 'bt1_05_flyntbuilding', + [-1921699752] = 'bt1_05_flyntgrnd_01', + [1341499664] = 'bt1_05_flyntrail01', + [1653558851] = 'bt1_05_flyntrail02', + [-259659154] = 'bt1_05_flyntrail03', + [-491303215] = 'bt1_05_flyntrail04', + [-1546399477] = 'bt1_05_flyntrail05', + [-1779550912] = 'bt1_05_flyntrail06', + [1361423394] = 'bt1_05_ladderframe', + [-1101158735] = 'bt1_05_other_dtl01', + [1853359867] = 'bt1_05_other_dtl02', + [-1669186836] = 'bt1_05_othr2_dtl01', + [1878122956] = 'bt1_05_othr2_dtl02', + [-285053189] = 'bt1_05_paving_bt', + [-1094416795] = 'bt1_05_paving_btnoshad', + [-1908026648] = 'bt1_05_roof_vents', + [563337726] = 'bt1_05_roofrailing001', + [1937037038] = 'bt1_05_shadowproxy01', + [1207150570] = 'bt1_05_theatr_01', + [-1884122038] = 'bt1_05_theatr_signd', + [1921264340] = 'bt1_05_theatre_dtl01', + [-1509971461] = 'bt1_05_theatre_dtl01b', + [1682935403] = 'bt1_05_theatre_dtl02', + [117401876] = 'btype', + [-831834716] = 'btype2', + [-602287871] = 'btype3', + [-682211828] = 'buccaneer', + [-1013450936] = 'buccaneer2', + [-304802106] = 'buffalo', + [736902334] = 'buffalo2', + [237764926] = 'buffalo3', + [1886712733] = 'bulldozer', + [-1696146015] = 'bullet', + [-1346687836] = 'burrito', + [-907477130] = 'burrito2', + [-1743316013] = 'burrito3', + [893081117] = 'burrito4', + [1132262048] = 'burrito5', + [-713569950] = 'bus', + [788747387] = 'buzzard', + [745926877] = 'buzzard2', + [883937721] = 'cable1_root', + [923275822] = 'cable2_root', + [969577574] = 'cable3_root', + [-960289747] = 'cablecar', + [775520107] = 'cablemesh1915867_hvstd', + [-1637531279] = 'cablemesh1915883_hvstd', + [67517509] = 'cablemesh1915898_hvstd', + [1863395505] = 'cablemesh1915913_hvstd', + [2018793771] = 'cablemesh1915928_hvstd', + [-433286638] = 'cablemesh1915943_hvstd', + [397397253] = 'cablemesh1915958_hvstd', + [1648142215] = 'cablemesh1915973_hvstd', + [909675378] = 'cablemesh1915988_hvstd', + [636244595] = 'cablemesh1916003_hvstd', + [425042490] = 'cablemesh1916020_hvstd', + [-895978535] = 'cablemesh1916020_hvstd002', + [-1134176396] = 'cablemesh1916020_hvstd003', + [-299681034] = 'cablemesh1916020_hvstd004', + [-539648421] = 'cablemesh1916020_hvstd005', + [1937819051] = 'cablemesh1916020_hvstd006', + [1829877965] = 'cablemesh1916020_hvstd007', + [-1763079044] = 'cablemesh1916020_hvstd008', + [-743955348] = 'cablemesh1916036_hvstd', + [1316672895] = 'cablemesh1916051_hvstd', + [673204472] = 'cablemesh1916066_hvstd', + [824053513] = 'cablemesh1916083_hvstd', + [-1122592972] = 'cablemesh1916098_hvstd', + [229460387] = 'cablemesh1916113_hvstd', + [1430310064] = 'cablemesh1916128_hvstd', + [651540825] = 'cablemesh1916159_hvstd', + [1950347684] = 'cablemesh1916160_hvstd', + [-833481113] = 'cablemesh1916189_hvstd', + [-1656449766] = 'cablemesh1916190_hvstd', + [-599958689] = 'cablemesh1916221_hvstd', + [-376397930] = 'cablemesh1916222_hvstd', + [-676828859] = 'cablemesh1916251_hvstd', + [-2113017764] = 'cablemesh1916254_hvstd', + [947823449] = 'cablemesh1916467_hvstd', + [-964677165] = 'cablemesh1916482_hvstd', + [909495086] = 'cablemesh1916497_hvstd', + [-779144547] = 'cablemesh1916512_hvstd', + [-1591976080] = 'cablemesh1916527_hvstd', + [1681868109] = 'cablemesh1916548_hvstd', + [-1072014021] = 'cablemesh1916591_hvstd', + [-1029172980] = 'cablemesh1916592_hvstd', + [83369041] = 'cablemesh1916593_hvstd', + [589780624] = 'cablemesh1916636_hvstd', + [412581959] = 'cablemesh1916637_hvstd', + [-852074057] = 'cablemesh1916638_hvstd', + [119315529] = 'cablemesh1916653_hvstd', + [-1468336621] = 'cablemesh1916672_hvstd', + [613572786] = 'cablemesh1916690_hvstd', + [731682509] = 'cablemesh1916705_hvstd', + [1651479162] = 'cablemesh1916720_hvstd', + [836305091] = 'cablemesh1916736_hvstd', + [-1936332671] = 'cablemesh1916753_hvstd', + [453510880] = 'cablemesh1916768_hvstd', + [604058190] = 'cablemesh1916784_hvstd', + [-281483521] = 'cablemesh1916799_hvstd', + [1501648742] = 'cablemesh1916814_hvstd', + [-2129252625] = 'cablemesh1916829_hvstd', + [1946785085] = 'cablemesh1916844_hvstd', + [-286563195] = 'cablemesh1916860_hvstd', + [1579744140] = 'cablemesh1916875_hvstd', + [-1699901969] = 'cablemesh1916875_hvstd001', + [-1536188045] = 'cablemesh1916875_hvstd002', + [547235474] = 'cablemesh1916890_hvstd', + [-532284526] = 'cablemesh1916890_hvstd001', + [-1399417804] = 'cablemesh1916890_hvstd002', + [126770573] = 'cablemesh1923588_hvstd', + [-1627031373] = 'cablemesh1923588_hvstd001', + [-939685362] = 'cablemesh1923589_hvstd', + [872064885] = 'cablemesh1923589_hvstd001', + [181341922] = 'cablemesh1923596_hvstd', + [-809917902] = 'cablemesh1923596_hvstd001', + [984764024] = 'cablemesh1923597_hvstd', + [1608038357] = 'cablemesh1923597_hvstd001', + [1691587609] = 'cablemesh1923601_hvstd', + [-211653334] = 'cablemesh1923601_hvstd001', + [-564061992] = 'cablemesh1923603_hvstd', + [-1465356392] = 'cablemesh1923603_hvstd001', + [2095861055] = 'cablemesh1923689_hvstd', + [997078677] = 'cablemesh1923690_hvstd', + [214434223] = 'cablemesh1923691_hvstd', + [-1840042005] = 'cablemesh1923692_hvstd', + [1656576773] = 'cablemesh1923693_hvstd', + [-1749584113] = 'cablemesh1923694_hvstd', + [1268736143] = 'cablemesh1923788_hvstd', + [-1324526594] = 'cablemesh1923789_hvstd', + [735327310] = 'cablemesh1923790_hvstd', + [88785949] = 'cablemesh1923791_hvstd', + [-844119398] = 'cablemesh1923792_hvstd', + [-936926038] = 'cablemesh1923793_hvstd', + [1906903021] = 'cablemesh1923879_hvstd', + [-64498837] = 'cablemesh1923880_hvstd', + [-563497837] = 'cablemesh1923881_hvstd', + [-1511674896] = 'cablemesh1923882_hvstd', + [-1194696196] = 'cablemesh1923883_hvstd', + [141592264] = 'cablemesh1923884_hvstd', + [1361916704] = 'cablemesh1923970_hvstd', + [-1279715216] = 'cablemesh1923971_hvstd', + [-528112458] = 'cablemesh1923972_hvstd', + [-566992989] = 'cablemesh1923973_hvstd', + [-2139349668] = 'cablemesh1923974_hvstd', + [-427007713] = 'cablemesh1923975_hvstd', + [-1039988033] = 'cablemesh1924069_hvstd', + [-1177239377] = 'cablemesh1924071_hvstd', + [788679081] = 'cablemesh1924073_hvstd', + [-698595883] = 'cablemesh1924074_hvstd', + [1020162131] = 'cablemesh1924076_hvstd', + [-1659470999] = 'cablemesh1924077_hvstd', + [-2121460621] = 'cablemesh1924134_hvstd', + [-58817525] = 'cablemesh1924135_hvstd', + [-93951397] = 'cablemesh1924136_hvstd', + [-444076527] = 'cablemesh1924137_hvstd', + [1606480294] = 'cablemesh1924194_hvstd', + [962590878] = 'cablemesh1924195_hvstd', + [-281901608] = 'cablemesh1924196_hvstd', + [805444646] = 'cablemesh1924197_hvstd', + [-774564416] = 'cablemesh1924254_hvstd', + [-1415296590] = 'cablemesh1924255_hvstd', + [-543292693] = 'cablemesh1924256_hvstd', + [258423744] = 'cablemesh1924257_hvstd', + [-396862484] = 'cablemesh1924328_hvstd', + [-1931346338] = 'cablemesh1924329_hvstd', + [26108003] = 'cablemesh1924330_hvstd', + [161267888] = 'cablemesh1924331_hvstd', + [1590696013] = 'cablemesh1924388_hvstd', + [-1481484221] = 'cablemesh1924389_hvstd', + [-1181627511] = 'cablemesh1924390_hvstd', + [-55952115] = 'cablemesh1924391_hvstd', + [-1561035791] = 'cablemesh1924420_hvstd', + [133188235] = 'cablemesh1924421_hvstd', + [1052574943] = 'cablemesh1924478_hvstd', + [2045485592] = 'cablemesh1924479_hvstd', + [-187308082] = 'cablemesh1924480_hvstd', + [711508080] = 'cablemesh1924541_hvstd', + [-1972392662] = 'cablemesh1924542_hvstd', + [-1357497593] = 'cablemesh1924543_hvstd', + [-554327468] = 'cablemesh1924544_hvstd', + [893317972] = 'cablemesh1924601_hvstd', + [-1194851786] = 'cablemesh1924602_hvstd', + [-148876030] = 'cablemesh1924603_hvstd', + [924336802] = 'cablemesh1924604_hvstd', + [-1492880611] = 'cablemesh1924633_hvstd', + [1370501060] = 'cablemesh1924634_hvstd', + [1811077252] = 'cablemesh1924663_hvstd', + [2000843208] = 'cablemesh1924664_hvstd', + [124805598] = 'cablemesh1924693_hvstd', + [-1886781861] = 'cablemesh1924694_hvstd', + [-980867375] = 'cablemesh1929772_hvstd', + [-3995611] = 'cablemesh2161146_hvstd', + [1681405852] = 'cablemesh2161147_hvstd', + [285860031] = 'cablemesh2161148_hvstd', + [272578892] = 'cablemesh2161150_hvstd', + [1985308043] = 'cablemesh2161151_hvstd', + [-1632514362] = 'cablemesh2161152_hvstd', + [458306332] = 'cablemesh2161153_hvstd', + [-655938419] = 'cablemesh2161154_hvstd', + [-950840561] = 'cablemesh2161155_hvstd', + [1773447216] = 'cablemesh2161156_hvstd', + [-977331169] = 'cablemesh2161157_hvstd', + [1264917626] = 'cablemesh2161158_hvstd', + [481122767] = 'cablemesh2161159_hvstd', + [-416017083] = 'cablemesh2161160_hvstd', + [524816499] = 'cablemesh2161161_hvstd', + [481021780] = 'cablemesh2161162_hvstd', + [430586840] = 'cablemesh2161164_hvstd', + [267464723] = 'cablemesh2161165_hvstd', + [-854632264] = 'cablemesh2161195_hvstd', + [466100371] = 'cablemesh2161211_thvy', + [-1535027789] = 'cablemesh2271186_hvstd', + [-233797594] = 'cablemesh2271201_hvstd', + [365648388] = 'cablemesh2916020_hvstd001', + [-641900067] = 'cablemesh2916020_hvstd003', + [-999568245] = 'cablemesh2916051_hvstd001', + [1147287684] = 'caddy', + [-537896628] = 'caddy2', + [1876516712] = 'camper', + [2072687711] = 'carbonizzare', + [11251904] = 'carbonrs', + [-50547061] = 'cargobob', + [1621617168] = 'cargobob2', + [1394036463] = 'cargobob3', + [2025593404] = 'cargobob4', + [368211810] = 'cargoplane', + [941800958] = 'casco', + [2006918058] = 'cavalcade', + [-789894171] = 'cavalcade2', + [2088441666] = 'ce_xr_ctr2', + [338949371] = 'ch1_01__decal001', + [-298079989] = 'ch1_01__decal002', + [266324268] = 'ch1_01_bank', + [-683699338] = 'ch1_01_bankdtls', + [795755219] = 'ch1_01_barrier01', + [1879099489] = 'ch1_01_barrier01a', + [1653747076] = 'ch1_01_barrier01b', + [92320566] = 'ch1_01_basewalls00', + [1176421181] = 'ch1_01_beach008', + [1490610353] = 'ch1_01_beach009', + [89957090] = 'ch1_01_beach010', + [1936162558] = 'ch1_01_beach011', + [646833476] = 'ch1_01_beach012', + [350831099] = 'ch1_01_beach013', + [501094474] = 'ch1_01_beachdec_00', + [1152869884] = 'ch1_01_beachdec_01', + [-1380534287] = 'ch1_01_beachdec_02', + [-1686367364] = 'ch1_01_beachdec_03', + [1472433172] = 'ch1_01_beachdec_04', + [-2046662511] = 'ch1_01_beachdec_05', + [-943231970] = 'ch1_01_beachdec_06', + [-1241397101] = 'ch1_01_beachdec_07', + [-680530873] = 'ch1_01_beachrck_a', + [-307455808] = 'ch1_01_beachrck_b', + [-17548465] = 'ch1_01_beachrck_c', + [-358870349] = 'ch1_01_beachrck_d', + [6241849] = 'ch1_01_beachrck_e', + [923544466] = 'ch1_01_beachrck_f', + [483653410] = 'ch1_01_beachrck_g', + [1471638760] = 'ch1_01_beachrck_h', + [641501683] = 'ch1_01_beachrck_i', + [1945838959] = 'ch1_01_beachrck_j', + [1525421551] = 'ch1_01_beachtrax_003', + [-912240062] = 'ch1_01_beachtrax_01', + [-1143884123] = 'ch1_01_beachtrax_02', + [-1951751934] = 'ch1_01_bridge_lod', + [-291753084] = 'ch1_01_bridge', + [-949394949] = 'ch1_01_charthssign', + [1068639719] = 'ch1_01_chumash_sg_slod', + [-492035864] = 'ch1_01_chumash_sign', + [-1885639488] = 'ch1_01_church', + [656967517] = 'ch1_01_courtlines', + [-1656081367] = 'ch1_01_dec_06', + [-1522790080] = 'ch1_01_decalgrime_01', + [-2025911544] = 'ch1_01_decl03', + [-1851839212] = 'ch1_01_decl03b', + [-1230837297] = 'ch1_01_decl04', + [-605932467] = 'ch1_01_decl05', + [-788586873] = 'ch1_01_decl06', + [-21693966] = 'ch1_01_decl07', + [-442841154] = 'ch1_01_decl08', + [321495771] = 'ch1_01_decl09', + [-427373778] = 'ch1_01_decl10', + [-922021833] = 'ch1_01_decl12', + [-1151240988] = 'ch1_01_decl13', + [-1119763027] = 'ch1_01_dummyhd', + [1554665320] = 'ch1_01_flagpole_01_lod', + [-1573366618] = 'ch1_01_flagpole_01', + [-134602726] = 'ch1_01_foam_01_lod', + [-1559154583] = 'ch1_01_foam_01', + [-205227139] = 'ch1_01_foam_02_lod', + [-1820356282] = 'ch1_01_foam_02', + [1637818877] = 'ch1_01_foam_03_lod', + [-1007259085] = 'ch1_01_foam_03', + [233879812] = 'ch1_01_foam_04_lod', + [-1173791143] = 'ch1_01_foam_04', + [-131331229] = 'ch1_01_foam_05_lod', + [1758084060] = 'ch1_01_foam_05', + [-1827077244] = 'ch1_01_foam_06_lod', + [2088395580] = 'ch1_01_foam_06', + [567193894] = 'ch1_01_gvy_dtl01', + [395877562] = 'ch1_01_gvy_dtl02', + [1869466727] = 'ch1_01_gvy_dtl03', + [-1624003598] = 'ch1_01_gvy_dtl04', + [2012638181] = 'ch1_01_gvyard_a', + [-1403398997] = 'ch1_01_gvyard_b', + [1515171992] = 'ch1_01_gvyard_c', + [-1862394380] = 'ch1_01_gvyard_d', + [1562784043] = 'ch1_01_gvyard_stairs', + [1473668449] = 'ch1_01_hedgedtl_01', + [-1632603368] = 'ch1_01_hedgedtl_02', + [-1823056796] = 'ch1_01_hedgedtl_03', + [-1705186707] = 'ch1_01_hedgedtl_04', + [-1860184077] = 'ch1_01_hedgedtl_05', + [2076290359] = 'ch1_01_hedgedtl_06', + [1818955402] = 'ch1_01_hedgedtl_07', + [-678501168] = 'ch1_01_hedgedtl_08', + [-984268707] = 'ch1_01_hedgedtl_09', + [-1951117760] = 'ch1_01_hedgedtl_10', + [771723988] = 'ch1_01_hedgedtl_11', + [-1973335146] = 'ch1_01_hedgedtl_12', + [-1682772423] = 'ch1_01_hedgedtl_13', + [1930239214] = 'ch1_01_hedgedtl_14', + [2015176462] = 'ch1_01_hedgedtl_15', + [-791488392] = 'ch1_01_hedgedtl_16', + [-488997753] = 'ch1_01_hedgedtl_17', + [1092941051] = 'ch1_01_hedgetopc', + [-128297903] = 'ch1_01_korizhut', + [-137057721] = 'ch1_01_korizwall_lod', + [821890269] = 'ch1_01_korizwall', + [-1392804315] = 'ch1_01_ladder', + [11139288] = 'ch1_01_land_00a', + [-1762515606] = 'ch1_01_land_00b', + [145289054] = 'ch1_01_land_01', + [-98512306] = 'ch1_01_land_02', + [2119293606] = 'ch1_01_land_03', + [1881620049] = 'ch1_01_land_04', + [1105191363] = 'ch1_01_land_05', + [866796888] = 'ch1_01_land_06', + [-1212723856] = 'ch1_01_land_07', + [-486041740] = 'ch1_01_land_10', + [-1128314140] = 'ch1_01_land_11', + [1270130018] = 'ch1_01_land06', + [-1965451776] = 'ch1_01_laybyfloor', + [2066509898] = 'ch1_01_liquorsign01', + [1893817268] = 'ch1_01_liquorsign02', + [-1548662161] = 'ch1_01_liquorstr_wire', + [1896489202] = 'ch1_01_liquorstr', + [725917975] = 'ch1_01_liquorstrdtls', + [2075499324] = 'ch1_01_museentrncdcal', + [1413502017] = 'ch1_01_ndec_00', + [1730574861] = 'ch1_01_ndec_01', + [-180338418] = 'ch1_01_newhedgesa', + [184118400] = 'ch1_01_newhedgesb', + [-1345341918] = 'ch1_01_newhedgesc', + [39541105] = 'ch1_01_overpass_barsa', + [462293922] = 'ch1_01_overpass_barsb', + [675566201] = 'ch1_01_overpass', + [-362718399] = 'ch1_01_parkinglines_01', + [-59637918] = 'ch1_01_parkinglines_02', + [-2034560010] = 'ch1_01_parkinglines_03', + [-1232472969] = 'ch1_01_pierrck_a', + [510514096] = 'ch1_01_poolwtr', + [-1326799299] = 'ch1_01_props_towelsday', + [-1521687466] = 'ch1_01_props_towelsevening', + [323184897] = 'ch1_01_props_towelsmorn', + [503064999] = 'ch1_01_rd_lnd_dcl_01', + [1339525731] = 'ch1_01_rlswall01_glue001', + [950635029] = 'ch1_01_rlswall01', + [-330041870] = 'ch1_01_road007', + [321924741] = 'ch1_01_road06', + [-1388814481] = 'ch1_01_rsidedec_03', + [-1221539348] = 'ch1_01_rsidedec_03b', + [1237433499] = 'ch1_01_scch_beam', + [-1102434854] = 'ch1_01_scch_blgdecals01', + [1274042181] = 'ch1_01_scch_blgmain', + [2063237548] = 'ch1_01_scch_crprkdecals', + [2135906409] = 'ch1_01_scch_crprksurface', + [1869065700] = 'ch1_01_scch_stilts_lod', + [-1849587480] = 'ch1_01_scch_stilts', + [-562569724] = 'ch1_01_sea_alga002', + [1755584735] = 'ch1_01_sea_alga01', + [1431466556] = 'ch1_01_sea_alga03', + [1093421552] = 'ch1_01_sea_alga04', + [738825361] = 'ch1_01_sea_ch1_01_uw_01', + [1530655477] = 'ch1_01_sea_ch1_01_uw_02', + [351790702] = 'ch1_01_sea_ch1_01_uw_03', + [1062746926] = 'ch1_01_sea_ch1_01_uw_04', + [-132436811] = 'ch1_01_sea_ch1_01_uw_05', + [-499646225] = 'ch1_01_sea_ch1_01_uw_06', + [-594774632] = 'ch1_01_sea_ch1_01_uw_07', + [-967685852] = 'ch1_01_sea_ch1_01_uw_08', + [-1155452222] = 'ch1_01_sea_ch1_01_uw_09', + [1653343433] = 'ch1_01_sea_ch1_01_uw_10', + [1306778489] = 'ch1_01_sea_ch1_01_uw_11', + [1074610124] = 'ch1_01_sea_ch1_01_uw_12', + [426537611] = 'ch1_01_sea_ch1_01_uw_14', + [1307465795] = 'ch1_01_sea_ch1_01_uw_dec_00', + [630196103] = 'ch1_01_sea_ch1_01_uw_dec_01', + [861512474] = 'ch1_01_sea_ch1_01_uw_dec_02', + [55755533] = 'ch1_01_sea_ch1_01_uw_dec_03', + [419753585] = 'ch1_01_sea_ch1_01_uw_dec_04', + [-420935110] = 'ch1_01_sea_ch1_01_uw_dec_05', + [-89771596] = 'ch1_01_sea_ch1_01_uw_dec_06', + [-356281877] = 'ch1_01_sea_ch1_01_uw_dec_07', + [-2029719434] = 'ch1_01_sea_ch1_01_uw_decb_00', + [-1694754708] = 'ch1_01_sea_ch1_01_uw_decb_01', + [-528800919] = 'ch1_01_sea_ch1_01_uw_decb_03', + [276741382] = 'ch1_01_sea_ch1_01_uw_decc_00', + [-1558753739] = 'ch1_01_sea_ch1_01_uwb_00', + [1258855961] = 'ch1_01_sea_ch1_01_uwb_06', + [791758157] = 'ch1_01_sea_coral_2', + [1950283968] = 'ch1_01_sea_l', + [1077001967] = 'ch1_01_sea_uwb_01_lod', + [1345442365] = 'ch1_01_sea_uwb_01', + [-1473371669] = 'ch1_01_sea_uwb_02_lod', + [-1733500110] = 'ch1_01_sea_uwb_02', + [-734758372] = 'ch1_01_sea_uwb_03_lod', + [-1484357399] = 'ch1_01_sea_uwb_03', + [2133744557] = 'ch1_01_sea_uwb_04_lod', + [2108566837] = 'ch1_01_sea_uwb_04', + [1552801955] = 'ch1_01_sea_uwb_05_lod', + [-1948989054] = 'ch1_01_sea_uwb_05', + [-1312238887] = 'ch1_01_sea_uwb_07_lod', + [-39932648] = 'ch1_01_sea_uwb_07', + [534951662] = 'ch1_01_sea_wreck_2', + [302750528] = 'ch1_01_sea_wreck_3', + [83245915] = 'ch1_01_sea_wreck', + [-543002800] = 'ch1_01_seaground_01', + [-259682026] = 'ch1_01_seaground_02', + [39400637] = 'ch1_01_seaground_03', + [-2100447836] = 'ch1_01_seaground_04', + [-1803757310] = 'ch1_01_seaground_05', + [995632826] = 'ch1_01_seaground_08', + [2012206562] = 'ch1_01_seawall002_lod', + [1652354686] = 'ch1_01_seawall002', + [1017243346] = 'ch1_01_seawall003_lod', + [-324861236] = 'ch1_01_seawall003', + [402326602] = 'ch1_01_seawall004_lod', + [-18503855] = 'ch1_01_seawall004', + [-1973410781] = 'ch1_01_seawall005_lod', + [691403761] = 'ch1_01_seawall005', + [-2075435231] = 'ch1_01_seaweeds_00', + [1691310050] = 'ch1_01_seawrka_lod', + [949250813] = 'ch1_01_seawrkb_lod', + [308214521] = 'ch1_01_seawrkc_lod', + [786496676] = 'ch1_01_shop02', + [782314739] = 'ch1_01_shop02dtls', + [905829423] = 'ch1_01_shopbase', + [-1847750154] = 'ch1_01_shpbsdtls', + [1685575099] = 'ch1_01_sign_01_lod', + [1945640894] = 'ch1_01_sign_01', + [1187892487] = 'ch1_01_surfshack_rack', + [-431763373] = 'ch1_01_surfshack', + [-776624825] = 'ch1_01_surfshkdtls', + [-1629482019] = 'ch1_01_tccourts_raila', + [279213928] = 'ch1_01_tccourts_railb', + [1264676053] = 'ch1_01_tccourts_railc', + [-1492069993] = 'ch1_01_tccourts', + [130567957] = 'ch1_01_tccourtsdtls', + [478774588] = 'ch1_01_tcgate01', + [776382646] = 'ch1_01_tcgate02', + [-30095213] = 'ch1_01_tcgate03', + [268004380] = 'ch1_01_tcgate04', + [-2062639675] = 'ch1_01_tchuts_rail', + [533338455] = 'ch1_01_tchuts', + [-378461214] = 'ch1_01_tchutsdtls_bars', + [-1868089794] = 'ch1_01_tchutsdtls', + [-1729833099] = 'ch1_01_tcmain_raila', + [1193128944] = 'ch1_01_tcmain_railb', + [1023844290] = 'ch1_01_tcmain_railc', + [-2008521507] = 'ch1_01_tcmain', + [-1078622053] = 'ch1_01_tcmain02', + [195829895] = 'ch1_01_tcmain03', + [-975340603] = 'ch1_01_tcmaindtls_a', + [-1910797246] = 'ch1_01_tcmaindtls_b', + [-261665583] = 'ch1_01_tcpool_raila', + [1469055564] = 'ch1_01_tcpool_raillb', + [-388166026] = 'ch1_01_tcpool', + [1217119484] = 'ch1_01_tcpooldtls', + [-1426270012] = 'ch1_01_tnscrtfence01', + [213195831] = 'ch1_01_tnscrtfence02', + [306587481] = 'ch1_01_tnscrtfence03', + [-466171077] = 'ch1_01_tnscrtfence04', + [-171676074] = 'ch1_01_tnscrtfence05', + [1198199202] = 'ch1_01_tnscrtfence06', + [1495381263] = 'ch1_01_tnscrtfence07', + [721180869] = 'ch1_01_tnscrtfence08', + [1019608152] = 'ch1_01_tnscrtfence09', + [-1384588140] = 'ch1_01_tnscrtfence10', + [-1591486225] = 'ch1_01_trail1', + [-1815527878] = 'ch1_01_trail2', + [-2083734669] = 'ch1_01_treereflectioproxy', + [793004209] = 'ch1_01_uw_decb_02', + [1725446108] = 'ch1_01_uw_decb_04', + [1487018864] = 'ch1_01_uw_decb_05', + [-1980236261] = 'ch1_01_uw_decb_06', + [-341851803] = 'ch1_01_uw_decb_07', + [-537275904] = 'ch1_01_water_01', + [1144180335] = 'ch1_02_armco_left001_lod', + [-1113692887] = 'ch1_02_armco_left001', + [-2009563969] = 'ch1_02_armco_left001b_lod', + [49790872] = 'ch1_02_armco_left001b', + [1733609426] = 'ch1_02_beach_01_dec', + [-22100091] = 'ch1_02_beach_01', + [2022095667] = 'ch1_02_beach_02', + [-1378345778] = 'ch1_02_bigweed_01', + [-1255893178] = 'ch1_02_blends_00100', + [1853884926] = 'ch1_02_blends_00101', + [-1598624149] = 'ch1_02_blends_00102', + [-1543405268] = 'ch1_02_build_02_planks', + [1605836612] = 'ch1_02_build_02_rails', + [-1769625092] = 'ch1_02_build_02_stepsa', + [1691567768] = 'ch1_02_build_02_stepsb', + [-1160747194] = 'ch1_02_build_02', + [-771986381] = 'ch1_02_buildl_79_rails', + [2009342682] = 'ch1_02_buildl_79', + [555046688] = 'ch1_02_ch1_road01', + [-1508585684] = 'ch1_02_coastrok_01', + [-1270322285] = 'ch1_02_coastrok_02', + [-76318232] = 'ch1_02_coastrok_03', + [-735748984] = 'ch1_02_coastrok_03a', + [-927198086] = 'ch1_02_coastrok_04', + [-2132081407] = 'ch1_02_coastrok_05', + [-1293522697] = 'ch1_02_coastrok_06', + [-680676859] = 'ch1_02_coastrok_07', + [1566139549] = 'ch1_02_dcl_01', + [-335609366] = 'ch1_02_dcl_02', + [-56253641] = 'ch1_02_dcl_03', + [695467219] = 'ch1_02_dcl_04', + [-1204381098] = 'ch1_02_dcl_05', + [-955795464] = 'ch1_02_dcl_06', + [-744337107] = 'ch1_02_dcl_07', + [-468520434] = 'ch1_02_dcl_08', + [1879509496] = 'ch1_02_dcl_09', + [-332854782] = 'ch1_02_dcl_10', + [-43209591] = 'ch1_02_dcl_11', + [146195229] = 'ch1_02_dcl_12', + [437347794] = 'ch1_02_dcl_13', + [-857540512] = 'ch1_02_foam_01', + [-745142842] = 'ch1_02_foam_02', + [817602759] = 'ch1_02_gnd_02_rails', + [695708120] = 'ch1_02_gnd_02_railsb_lod', + [1354206936] = 'ch1_02_gnd_02_railsb', + [-503598417] = 'ch1_02_gnd_02', + [2142609614] = 'ch1_02_h05_skylight', + [547198799] = 'ch1_02_h05', + [-423978672] = 'ch1_02_h07_015', + [1076813847] = 'ch1_02_h07_015wood', + [-982923554] = 'ch1_02_h07_main_rails', + [550315547] = 'ch1_02_h07_main_railsb', + [-1893820521] = 'ch1_02_h07_main', + [-98947468] = 'ch1_02_h07_maindtls', + [493292358] = 'ch1_02_house_001_raila', + [2080786551] = 'ch1_02_house_001_railb', + [-766421119] = 'ch1_02_house_001', + [1807478187] = 'ch1_02_house03ih_rails_b', + [513672777] = 'ch1_02_house03ih_railsa', + [2083111267] = 'ch1_02_house03ih_railsc', + [-131611065] = 'ch1_02_house03ih_skylight', + [-716819284] = 'ch1_02_house03ih', + [1204685340] = 'ch1_02_housewood_rails', + [-483948859] = 'ch1_02_housewoodfnt', + [871757121] = 'ch1_02_hsewoodfntfence', + [-451795908] = 'ch1_02_ian19_planks', + [-1259518179] = 'ch1_02_ian19_rails1', + [-306399045] = 'ch1_02_ian19_rails2', + [-543744912] = 'ch1_02_ian19_rails3', + [713147570] = 'ch1_02_ian19', + [801125058] = 'ch1_02_ih06_58_rails', + [-1464254561] = 'ch1_02_ih06_58_railsb', + [1762604786] = 'ch1_02_ih06_58', + [475645244] = 'ch1_02_ih07_01_rails', + [1737330872] = 'ch1_02_ih07_01', + [-1191309053] = 'ch1_02_ihwhouse_07_rail', + [-1695462135] = 'ch1_02_ihwhouse_07', + [1860533773] = 'ch1_02_ihwhouse_07dtls', + [-1444021947] = 'ch1_02_int_closed', + [-1788961424] = 'ch1_02_int_open', + [1842996250] = 'ch1_02_kerb02', + [1772530236] = 'ch1_02_land_01', + [1482196896] = 'ch1_02_land_02', + [-392602943] = 'ch1_02_land_dcl', + [108805658] = 'ch1_02_plot3stairs_lod', + [253628142] = 'ch1_02_plot3stairs', + [-4697596] = 'ch1_02_props_combo06_18_lod', + [-1206735244] = 'ch1_02_props_l_005', + [-181870890] = 'ch1_02_props_s_006', + [-23924310] = 'ch1_02_props_s_007', + [-1985312805] = 'ch1_02_props_s_008', + [910077489] = 'ch1_02_retwall1a', + [1166494914] = 'ch1_02_retwall1b', + [233407443] = 'ch1_02_retwall2', + [253431857] = 'ch1_02_road_02', + [1057187893] = 'ch1_02_rockfall', + [-1294942871] = 'ch1_02_rockfall2', + [-1208408122] = 'ch1_02_sc02_blg_rail01', + [-900772750] = 'ch1_02_sc02_blg_rail02', + [-573082750] = 'ch1_02_sc02_blg_rail03', + [1874007863] = 'ch1_02_sc02_blg_rail04', + [-225005758] = 'ch1_02_sc02_blg_raila', + [-215515003] = 'ch1_02_sc02_blg', + [-2012361712] = 'ch1_02_sc04_blgmain_raila', + [-1680084052] = 'ch1_02_sc04_blgmain_railb', + [136518822] = 'ch1_02_sc04_blgmain', + [1909481576] = 'ch1_02_sc04_blgmainstairs', + [-143576950] = 'ch1_02_sc04_blgmainsupp', + [512925819] = 'ch1_02_sc05_blgmain_rails1', + [347638983] = 'ch1_02_sc05_blgmain_rails2', + [970381059] = 'ch1_02_sc05_blgmain_rails3', + [1746449286] = 'ch1_02_sc05_blgmain_rails4', + [-399821907] = 'ch1_02_sc05_blgmain_rails5', + [-574808367] = 'ch1_02_sc05_blgmain_rails6', + [175011891] = 'ch1_02_sc05_blgmain_rails7', + [-1062829251] = 'ch1_02_sc05_blgmain', + [-518564779] = 'ch1_02_sea_ch1_02_uw1_00', + [-629029074] = 'ch1_02_sea_ch1_02_uw1_01', + [152806493] = 'ch1_02_sea_ch1_02_uw1_02', + [-78804799] = 'ch1_02_sea_ch1_02_uw1_03', + [764439878] = 'ch1_02_sea_ch1_02_uw1_04', + [533287352] = 'ch1_02_sea_ch1_02_uw1_05', + [1377252947] = 'ch1_02_sea_ch1_02_uw1_06', + [1153244063] = 'ch1_02_sea_ch1_02_uw1_07', + [131934431] = 'ch1_02_sea_ch1_02_uw1_dec_00', + [-164756095] = 'ch1_02_sea_ch1_02_uw1_dec_01', + [1684300276] = 'ch1_02_sea_ch1_02_uw1_dec_02', + [1647893917] = 'ch1_02_sea_ch1_02_uw1_dec_03', + [1342060840] = 'ch1_02_sea_ch1_02_uw1_dec_04', + [1035801766] = 'ch1_02_sea_ch1_02_uw1_dec_05', + [-1417908189] = 'ch1_02_sea_ch1_02_uw1_dec_06', + [577450743] = 'ch1_02_sea_ch1_02_uw2_01_lod', + [-1568584208] = 'ch1_02_sea_ch1_02_uw2_01', + [-1432319552] = 'ch1_02_sea_ch1_02_uw2_02_lod', + [-1346901923] = 'ch1_02_sea_ch1_02_uw2_02', + [14660227] = 'ch1_02_snd_dcl', + [1329820840] = 'ch1_03_armco00', + [-2051645043] = 'ch1_03_armco01', + [872857135] = 'ch1_03_armco02', + [1750804183] = 'ch1_03_armco03', + [1989198658] = 'ch1_03_armco04', + [-1364890403] = 'ch1_03_bridge_ov', + [1828542008] = 'ch1_03_bridge001_supports', + [-303945667] = 'ch1_03_bridge001', + [-1077376968] = 'ch1_03_cstrckedge_003', + [-769774365] = 'ch1_03_cstrckedge_004', + [-328572541] = 'ch1_03_cstrckedge_005', + [-1915245627] = 'ch1_03_dcl_lyb02', + [-354120227] = 'ch1_03_dcl_lyby00', + [1531047574] = 'ch1_03_dcl_lyby01', + [699952384] = 'ch1_03_decal_004_lod', + [1957512629] = 'ch1_03_decal_004', + [1264813400] = 'ch1_03_decal02', + [-1035883491] = 'ch1_03_foamwet_01', + [-1392213597] = 'ch1_03_foamwet_02', + [1923353819] = 'ch1_03_foamwet_03', + [-590094023] = 'ch1_03_foamwet_04', + [1514599272] = 'ch1_03_land_001_decal', + [1301385023] = 'ch1_03_land_001', + [1606595489] = 'ch1_03_land_002', + [1778567201] = 'ch1_03_land_003', + [2074110812] = 'ch1_03_land_004', + [-1035722506] = 'ch1_03_land_dc05_lod', + [2129970183] = 'ch1_03_land_dcl05', + [-1376131756] = 'ch1_03_land_dcl05b_lod', + [-827454113] = 'ch1_03_land_dcl05b', + [-1506874643] = 'ch1_03_lnd_dcl1_lod', + [403598249] = 'ch1_03_lnd_dcl1', + [1445634661] = 'ch1_03_lnd_dcl2_lod', + [52183493] = 'ch1_03_lnd_dcl2', + [1538980321] = 'ch1_03_sea_ch1_03_uw_00', + [-491459741] = 'ch1_03_sea_ch1_03_uw_01_lod', + [759962884] = 'ch1_03_sea_ch1_03_uw_01', + [1044889339] = 'ch1_03_sea_ch1_03_uw_02', + [-1209748941] = 'ch1_03_sea_ch1_03_uw_03', + [-2056598208] = 'ch1_03_sea_ch1_03_uw_04', + [-1883708964] = 'ch1_03_sea_ch1_03_uw_05', + [868044784] = 'ch1_03_sea_ch1_03_uw_06_lod', + [1626866779] = 'ch1_03_sea_ch1_03_uw_06', + [872392739] = 'ch1_03_sea_ch1_03_uw_07_lod', + [-557023230] = 'ch1_03_sea_ch1_03_uw_07', + [-248503095] = 'ch1_03_sea_ch1_03_uw_08', + [46978107] = 'ch1_03_sea_ch1_03_uw_09_lod', + [-596575413] = 'ch1_03_sea_ch1_03_uw_09', + [1449403816] = 'ch1_03_sea_ch1_03_uw_dec_00', + [1679737117] = 'ch1_03_sea_ch1_03_uw_dec_01', + [-1175163705] = 'ch1_03_sea_ch1_03_uw_dec_02', + [1202784322] = 'ch1_03_sea_ch1_03_uw_dec_03', + [-1868686821] = 'ch1_03_sea_ch1_03_uw_dec_04', + [-1622919321] = 'ch1_03_sea_ch1_03_uw_dec_05', + [-467648226] = 'ch1_03_sea_ch1_03_uw_dec_06', + [47808144] = 'ch1_03_sea_ch1_03_uw_dec_07', + [-395982451] = 'ch1_03_sea_ch1_03_uw_dec_08', + [-174070783] = 'ch1_03_sea_ch1_03_uw_dec_09', + [-19794023] = 'ch1_03_sea_ch1_03_uw_dec_10', + [-1935043766] = 'ch1_03_sea_ch1_03_uw_dec_11', + [1834135174] = 'ch1_04_armco_endsmalll001', + [-293287060] = 'ch1_04_armco_left_10', + [584202551] = 'ch1_04_armco_rght_10', + [-1940283353] = 'ch1_04_culvert01_s', + [-600745613] = 'ch1_04_culvert01', + [-294191618] = 'ch1_04_culvert02', + [-2131518812] = 'ch1_04_dcl_04_lod', + [450170323] = 'ch1_04_dcl_04', + [-1991611708] = 'ch1_04_dcl_05', + [-509721025] = 'ch1_04_dcl_08c_lod', + [-1063419413] = 'ch1_04_dcl_08c', + [338705029] = 'ch1_04_dcl_11_lod', + [-1184226737] = 'ch1_04_dcl_11', + [-449840678] = 'ch1_04_dcl_13', + [-1065835483] = 'ch1_04_dcl_13b_lod', + [1673261881] = 'ch1_04_dcl_13b', + [-1916844178] = 'ch1_04_dcl_14_lod', + [340744164] = 'ch1_04_dcl_14', + [33928017] = 'ch1_04_dcl_15', + [264720136] = 'ch1_04_dcl_17', + [726992419] = 'ch1_04_dcl_19', + [-866876887] = 'ch1_04_dcl_20_lod', + [-827143296] = 'ch1_04_dcl_20', + [-1726097431] = 'ch1_04_dcl_21_lod', + [-595335390] = 'ch1_04_dcl_21', + [-114157674] = 'ch1_04_dcl_21b', + [-1285745451] = 'ch1_04_dcl_22', + [-987000185] = 'ch1_04_dcl_23a_lod', + [-2114278599] = 'ch1_04_dcl_23a', + [-325747467] = 'ch1_04_dcl_26r', + [398751053] = 'ch1_04_decal_bridge', + [-1602685052] = 'ch1_04_decalsfloor', + [-1380684055] = 'ch1_04_decalsflooredge', + [-798957422] = 'ch1_04_decalsfloorpark', + [313513025] = 'ch1_04_gasnew', + [-742940955] = 'ch1_04_gasnewroof', + [-1601205788] = 'ch1_04_gassign01', + [1991980604] = 'ch1_04_gassign02', + [-2064526679] = 'ch1_04_gassign03', + [180050437] = 'ch1_04_grills', + [1006687760] = 'ch1_04_hexdecals', + [923329994] = 'ch1_04_land002', + [1628816419] = 'ch1_04_land01', + [1391339476] = 'ch1_04_land02', + [-1300502782] = 'ch1_04_land03', + [-2141551936] = 'ch1_04_land04', + [1660562037] = 'ch1_04_refprox023_ch', + [664017020] = 'ch1_04_refprox024_ch', + [1671870307] = 'ch1_04_refprox025_ch', + [1489283597] = 'ch1_04_refprox027_ch', + [-970411175] = 'ch1_04_refprox028_ch', + [1131940427] = 'ch1_04_refprox029_ch', + [-669836836] = 'ch1_04_refprox030_ch', + [1529750140] = 'ch1_04_refprox031_ch', + [-1635586171] = 'ch1_04_refprox032_ch', + [992703513] = 'ch1_04_refprox033_ch', + [-792727366] = 'ch1_04_refprox034_ch', + [-1999503628] = 'ch1_04_rockgroup_1', + [-1897559265] = 'ch1_04_rockgroup_3', + [578557404] = 'ch1_04_sea_ch1_04_uw_01_lod', + [1275047988] = 'ch1_04_sea_ch1_04_uw_01', + [1580618913] = 'ch1_04_sea_ch1_04_uw_02', + [1580684662] = 'ch1_04_sea_ch1_04_uw_dec_01', + [-6351017] = 'ch1_04_sea_ch1_04_uw_dec_02', + [-300080000] = 'ch1_04_signglue', + [57831255] = 'ch1_04_ssbigsign_d008', + [1859705599] = 'ch1_04_stones_decal', + [1142298580] = 'ch1_04_truckmarkings', + [1572274500] = 'ch1_04_wetlands_01', + [726408295] = 'ch1_04_wetlands_02', + [966113530] = 'ch1_04_wetlands_03', + [-2016455316] = 'ch1_04_wetlands_04', + [-1780354671] = 'ch1_04_wetlands_05', + [-1430917773] = 'ch1_04_woodenstruc', + [2003984740] = 'ch1_04_woodenstruc2', + [1211859703] = 'ch1_04_woodenstruc3', + [-2035462136] = 'ch1_04b_ammo_decal', + [146986237] = 'ch1_04b_ammosign_lod', + [1573004296] = 'ch1_04b_ammosign', + [-1596821588] = 'ch1_04b_bdec_07g', + [-390130824] = 'ch1_04b_cardecals', + [-580163850] = 'ch1_04b_cardetails_lod', + [-1840327864] = 'ch1_04b_cardetails', + [1663382220] = 'ch1_04b_cliff_07', + [-1680988031] = 'ch1_04b_cliff_dcl_01_lod', + [479419282] = 'ch1_04b_cliff_dcl_01', + [-2032619493] = 'ch1_04b_cliff_dcl_05', + [1496962270] = 'ch1_04b_cliff_dcl_06', + [2106957205] = 'ch1_04b_cliff_dcl_08', + [-1296300063] = 'ch1_04b_cliff_dcl_09', + [-929582516] = 'ch1_04b_cliff_dcl_10', + [-23191984] = 'ch1_04b_cliff_dcl_11', + [-396201503] = 'ch1_04b_cliff_dcl_12', + [192624650] = 'ch1_04b_cliff_dcl_14', + [900271205] = 'ch1_04b_cliff_dcl_15', + [337226287] = 'ch1_04b_clothes_decal', + [-1690095993] = 'ch1_04b_clothese_emiss_lod', + [1561121555] = 'ch1_04b_clothese_emissiv', + [341003969] = 'ch1_04b_crk_dcl_05', + [-668414286] = 'ch1_04b_culv_shadw', + [-1334476730] = 'ch1_04b_culvert_shdw', + [990490525] = 'ch1_04b_culvert006', + [1748310538] = 'ch1_04b_culvert01_sb', + [-1248175503] = 'ch1_04b_culvert01', + [2029364866] = 'ch1_04b_dcl_01', + [-769828636] = 'ch1_04b_dcl_02', + [-967128866] = 'ch1_04b_dcl_02b', + [1369332179] = 'ch1_04b_dcl_09c', + [1459250315] = 'ch1_04b_dcl_09d', + [-1907920610] = 'ch1_04b_decalbuild006', + [684107290] = 'ch1_04b_decalbuild008', + [-2088199119] = 'ch1_04b_emissiv', + [1840110615] = 'ch1_04b_land_e', + [900133182] = 'ch1_04b_landa', + [2047474211] = 'ch1_04b_landb', + [818680725] = 'ch1_04b_landdcl_01', + [-1539061236] = 'ch1_04b_landdecal_lod', + [659672721] = 'ch1_04b_landdecal', + [-1304150549] = 'ch1_04b_landdecal01', + [-610528332] = 'ch1_04b_refproc_ch', + [44953858] = 'ch1_04b_refproc', + [1683510404] = 'ch1_04b_refprox026_ch', + [-1219049270] = 'ch1_04b_refprox036_ch', + [1406750216] = 'ch1_04b_refprox037_ch', + [857475009] = 'ch1_04b_refprox038_ch', + [-1798191903] = 'ch1_04b_refprox039_ch', + [2041392255] = 'ch1_04b_rock1', + [1181548787] = 'ch1_04b_rocklrg01', + [2000085638] = 'ch1_04b_rocklrg02', + [636370934] = 'ch1_04b_rocklrg03', + [828790498] = 'ch1_04b_rocklrg04', + [79089145] = 'ch1_04b_rocksml02', + [-960867839] = 'ch1_04b_rocksml03', + [-653789540] = 'ch1_04b_rocksml04', + [-1441490658] = 'ch1_04b_rocksml05', + [-1210665822] = 'ch1_04b_rocksml06', + [1480458114] = 'ch1_04b_shop_02axtra', + [1324364699] = 'ch1_04b_shop_jgs1', + [1153244981] = 'ch1_04b_shop_jgs2', + [1921186496] = 'ch1_04b_shop_jgs3', + [-707621490] = 'ch1_04b_shop_jgsxtr', + [188637696] = 'ch1_04b_shop_jgsxtr02', + [-489402741] = 'ch1_04b_shopdet', + [1973243990] = 'ch1_04b_shopdet02', + [131094024] = 'ch1_04b_vinegrapes__01', + [-158157939] = 'ch1_04b_vinegrapes__02', + [-803871188] = 'ch1_04b_vinegrapes__03', + [1591444409] = 'ch1_04b_vinegrapes__04', + [-1263980717] = 'ch1_04b_vinegrapes__05', + [-1083489065] = 'ch1_04b_vinegrapes__06', + [393573626] = 'ch1_04b_vinegrapes__07', + [-1513680497] = 'ch1_04b_vinegrapes__08', + [-69288499] = 'ch1_04b_vinegrapes__09', + [-1622932575] = 'ch1_04b_vinegrapes__10', + [1186321010] = 'ch1_04b_vinegrapes__11', + [1492875005] = 'ch1_04b_vinegrapes__12', + [305654135] = 'ch1_04b_vinegrapes__13', + [-461763076] = 'ch1_04b_vinegrapes__14', + [-1939022369] = 'ch1_04b_vinegrapes__15', + [-1915821917] = 'ch1_04b_vinegrapes__16', + [721885973] = 'ch1_04b_vinegrapes__17', + [1027850126] = 'ch1_04b_vinegrapes__18', + [-984461399] = 'ch1_04b_vinegrapes__19', + [-155667011] = 'ch1_04b_vinegrapes__20', + [-1345476636] = 'ch1_04b_vinegrapes__21', + [439188646] = 'ch1_04b_vinegrapes__22', + [-749900061] = 'ch1_04b_vinegrapes__23', + [-1114422417] = 'ch1_04b_vinegrapes__24', + [1993356778] = 'ch1_04b_vinegrapes__25', + [1628244580] = 'ch1_04b_vinegrapes__26', + [-696126140] = 'ch1_04b_vinegrapes__27', + [-1052456246] = 'ch1_04b_vinegrapes__28', + [2047261775] = 'ch1_04b_vinegrapes__29', + [-866983922] = 'ch1_04b_vinegrapes__30', + [-1553953238] = 'ch1_04b_vinegrapes__31', + [-1289474639] = 'ch1_04b_vinegrapes__32', + [-156650325] = 'ch1_04b_vinegrapes__33', + [283240731] = 'ch1_04b_vinegrapes__34', + [1514470368] = 'ch1_04b_vinegrapes__35', + [-335962293] = 'ch1_04b_vinegrapes__36', + [751247589] = 'ch1_04b_vinegrapes__37', + [1047905346] = 'ch1_04b_vinegrapes__38', + [-1930632913] = 'ch1_04b_vinegrapes__39', + [1978622296] = 'ch1_04b_vinegrapes__40', + [-1071745611] = 'ch1_04b_vinegrapes__41', + [1497802759] = 'ch1_04b_vinegrapes__42', + [-899020232] = 'ch1_04b_vinegrapes__43', + [821286730] = 'ch1_04b_vinegrapes__44', + [1033072777] = 'ch1_04b_vinegrapes__45', + [353181565] = 'ch1_04b_vinegrapes__46', + [1843768805] = 'ch1_04b_vinegrapes_01', + [1624282043] = 'ch1_04b_vinegrapes_02', + [-1834780832] = 'ch1_04b_vinegrapes_03', + [-2045157812] = 'ch1_04b_vinegrapes_04', + [-1744207316] = 'ch1_04b_vinegrapes_05', + [-944217719] = 'ch1_04b_vinegrapes_06', + [-1134736685] = 'ch1_04b_vinegrapes_07', + [-1542840583] = 'ch1_04b_vinegrapes_08', + [-1288651450] = 'ch1_04b_vinegrapes_09', + [-331895833] = 'ch1_04b_vinegrapes_10', + [298776341] = 'ch1_04b_vinegrapes_11', + [20403686] = 'ch1_04b_vinegrapes_12', + [788410739] = 'ch1_04b_vinegrapes_13', + [614145197] = 'ch1_04b_vinegrapes_14', + [1381562408] = 'ch1_04b_vinegrapes_15', + [910999568] = 'ch1_04b_vinegrapes_16', + [1748607973] = 'ch1_04b_vinegrapes_17', + [1571065531] = 'ch1_04b_vinegrapes_18', + [-1956222402] = 'ch1_04b_vinegrapes_19', + [861289227] = 'ch1_04b_vinegrapes_20', + [-1989220553] = 'ch1_04b_vinegrapes_21', + [1445724338] = 'ch1_04b_vinegrapes_22', + [1824075212] = 'ch1_04b_vinegrapes_23', + [-1128247847] = 'ch1_04b_vinegrapes_24', + [-900404990] = 'ch1_04b_vinegrapes_25', + [-1625976188] = 'ch1_04b_vinegrapes_26', + [-1259291078] = 'ch1_04b_vinegrapes_27', + [2002862892] = 'ch1_04b_vinegrapes_28', + [-1917915193] = 'ch1_04b_vinegrapes_29', + [-152222878] = 'ch1_04b_vinegrapes_30', + [92528783] = 'ch1_04b_vinegrapes_31', + [-597389735] = 'ch1_04b_vinegrapes_32', + [-424500491] = 'ch1_04b_vinegrapes_33', + [-8760188] = 'ch1_04b_vinegrapes_34', + [164456746] = 'ch1_04b_vinegrapes_35', + [-1587472305] = 'ch1_04b_vinegrapes_36', + [-1282753374] = 'ch1_04b_vinegrapes_37', + [1765025782] = 'ch1_04b_vinegrapes_38', + [-763102572] = 'ch1_04b_vinegrapes_39', + [189456305] = 'ch1_04b_vinegrapes_40', + [198762701] = 'ch1_04b_vinegrapes_41', + [-424208758] = 'ch1_04b_vinegrapes_42', + [-111526960] = 'ch1_04b_vinegrapes_43', + [808987019] = 'ch1_04b_vinegrapes_44', + [1108397372] = 'ch1_04b_vinegrapes_45', + [-1951309696] = 'ch1_04b_vinegrapes_46', + [230526058] = 'ch1_04b_vineland01', + [-244034600] = 'ch1_04b_vineland02', + [2031215194] = 'ch1_04b_vines_01', + [-1351725290] = 'ch1_04b_vines_02', + [-770632613] = 'ch1_04b_vines_04', + [-1068928820] = 'ch1_04b_vines_05', + [-160178912] = 'ch1_04b_vines_06', + [-455525909] = 'ch1_04b_vines_07', + [-236104689] = 'ch1_04b_vines_08', + [-532565832] = 'ch1_04b_vines_09', + [-1635374042] = 'ch1_04b_vines_10', + [-1371747437] = 'ch1_04b_vines_11', + [-1785849294] = 'ch1_04b_vines_12', + [-1546897746] = 'ch1_04b_vines_13', + [1800553919] = 'ch1_04b_vines_14', + [2031345986] = 'ch1_04b_vines_15', + [1294240100] = 'ch1_04b_vines_16', + [1525589240] = 'ch1_04b_vines_17', + [568603364] = 'ch1_04b_vines_18', + [1076195174] = 'ch1_04b_vines_19', + [-651540059] = 'ch1_04b_vines_20', + [-1100475359] = 'ch1_04b_vines_21', + [2072809067] = 'ch1_04b_vines_22', + [-371856644] = 'ch1_04b_vines_23', + [879132712] = 'ch1_04b_vines_24', + [-1408864414] = 'ch1_04b_vines_25', + [1616992285] = 'ch1_04b_vines_26', + [1191650665] = 'ch1_04b_vines_27', + [-15919754] = 'ch1_04b_vines_28', + [1831694773] = 'ch1_04b_vines_29', + [-1777025045] = 'ch1_04b_vines_30', + [-2082858122] = 'ch1_04b_vines_31', + [980551851] = 'ch1_04b_vines_32', + [1747739679] = 'ch1_04b_vines_33', + [518869410] = 'ch1_04b_vines_34', + [1286516004] = 'ch1_04b_vines_35', + [530862860] = 'ch1_04b_vines_36', + [1308340154] = 'ch1_04b_vines_37', + [52009463] = 'ch1_04b_vines_38', + [828896915] = 'ch1_04b_vines_39', + [851345176] = 'ch1_04b_vines_40', + [-1133735314] = 'ch1_04b_vines_41', + [-163281371] = 'ch1_04b_vines_42', + [100476310] = 'ch1_04b_vines_43', + [1465108546] = 'ch1_04b_vines_44', + [1771138237] = 'ch1_04b_vines_45', + [1022366587] = 'ch1_04b_vines_46', + [1325578144] = 'ch1_04b_vines_47', + [-710911980] = 'ch1_04b_vineslmbs_01', + [450683532] = 'ch1_04b_vineslmbs_02', + [-107765766] = 'ch1_04b_vineslmbs_03', + [-1943747302] = 'ch1_04b_vineslmbs_04', + [-1705287289] = 'ch1_04b_vineslmbs_05', + [-1344500595] = 'ch1_04b_vineslmbs_06', + [-1114232832] = 'ch1_04b_vineslmbs_07', + [1439815797] = 'ch1_04b_vineslmbs_08', + [1670640633] = 'ch1_04b_vineslmbs_09', + [1075981838] = 'ch1_04b_vineslmbs_10', + [241519257] = 'ch1_04b_vineslmbs_11', + [1705408790] = 'ch1_04b_vineslmbs_12', + [842076716] = 'ch1_04b_vineslmbs_13', + [-86891661] = 'ch1_04b_vineslmbs_14', + [-396231021] = 'ch1_04b_vineslmbs_15', + [489482280] = 'ch1_04b_vineslmbs_16', + [-317356038] = 'ch1_04b_vineslmbs_17', + [-452298740] = 'ch1_04b_vineslmbs_18', + [-1285483334] = 'ch1_04b_vineslmbs_19', + [251218053] = 'ch1_04b_vineslmbs_20', + [-1046073888] = 'ch1_04b_vineslmbs_21', + [66237048] = 'ch1_04b_vineslmbs_22', + [-165079323] = 'ch1_04b_vineslmbs_23', + [-738504054] = 'ch1_04b_vineslmbs_24', + [-2049493441] = 'ch1_04b_vineslmbs_25', + [-1199662191] = 'ch1_04b_vineslmbs_26', + [-364871916] = 'ch1_04b_vineslmbs_27', + [1094167809] = 'ch1_04b_vineslmbs_28', + [721256589] = 'ch1_04b_vineslmbs_29', + [-75783462] = 'ch1_04b_vineslmbs_30', + [156843669] = 'ch1_04b_vineslmbs_31', + [1519182087] = 'ch1_04b_vineslmbs_32', + [750847344] = 'ch1_04b_vineslmbs_33', + [-1366685448] = 'ch1_04b_vineslmbs_34', + [-1013042400] = 'ch1_04b_vineslmbs_35', + [366565269] = 'ch1_04b_vineslmbs_36', + [656701995] = 'ch1_04b_vineslmbs_37', + [1042229304] = 'ch1_04b_vineslmbs_38', + [754451946] = 'ch1_04b_vineslmbs_39', + [-18075817] = 'ch1_04b_vineslmbs_40', + [-407502613] = 'ch1_04b_vineslmbs_41', + [-617060368] = 'ch1_04b_vineslmbs_42', + [-730899874] = 'ch1_04b_vineslmbs_43', + [1389975332] = 'ch1_04b_vineslmbs_44', + [749341382] = 'ch1_04b_vineslmbs_45', + [514027205] = 'ch1_04b_vineslmbs_46', + [-593814746] = 'ch1_04b_vineslod_01', + [-822247453] = 'ch1_04b_vineslod_02', + [1942338968] = 'ch1_04b_vinetrck_01', + [492179642] = 'ch1_04b_vinetrck_02', + [-791115731] = 'ch1_04b_water_pool_slod', + [-1311186087] = 'ch1_04b_water_pool', + [593597437] = 'ch1_04b_water01', + [1056164589] = 'ch1_04b_water02', + [1360883520] = 'ch1_04b_water03', + [-1765255028] = 'ch1_04b_wetlands_tmp6', + [1460059961] = 'ch1_04b_wetlands01', + [1153112738] = 'ch1_04b_wetlands02', + [-650427488] = 'ch1_04b_wetlands03', + [976258698] = 'ch1_05_actcen_fen', + [1810781472] = 'ch1_05_actcen_rope', + [1730087529] = 'ch1_05_actcen_slats', + [-327498539] = 'ch1_05_activcen_raila', + [-1709141] = 'ch1_05_activcen_railb', + [-13224864] = 'ch1_05_activcen', + [-844065962] = 'ch1_05_activcendtls', + [1653345322] = 'ch1_05_activcensign01_lod', + [935153596] = 'ch1_05_activcensign01', + [-908544694] = 'ch1_05_activcensign02_lod', + [536551480] = 'ch1_05_activcensign02', + [-285935839] = 'ch1_05_atcn_suprt', + [-2088094434] = 'ch1_05_bd01a', + [-1624314777] = 'ch1_05_bd01c', + [-916373301] = 'ch1_05_bd01d', + [-1038597159] = 'ch1_05_cave_dec', + [-1484538330] = 'ch1_05_creek_006', + [116915445] = 'ch1_05_creek_007', + [-381501045] = 'ch1_05_creek_008', + [585544914] = 'ch1_05_creek_009', + [-1383740026] = 'ch1_05_creek_010', + [2080992177] = 'ch1_05_creekrcks_006', + [1838014987] = 'ch1_05_crkwater_1001', + [837216926] = 'ch1_05_crkwater_1005', + [539019026] = 'ch1_05_crkwater_1006', + [-2121709205] = 'ch1_05_crkwater_top', + [-929723431] = 'ch1_05_d00', + [-95457460] = 'ch1_05_d01', + [1138197079] = 'ch1_05_d03', + [1981048528] = 'ch1_05_d04', + [1867733326] = 'ch1_05_d05', + [-1922951829] = 'ch1_05_d08', + [-1474213143] = 'ch1_05_d09', + [59539614] = 'ch1_05_d10', + [-1741247976] = 'ch1_05_d15', + [-1910139402] = 'ch1_05_d16', + [244324045] = 'ch1_05_d17', + [2083942936] = 'ch1_05_d18', + [1868257378] = 'ch1_05_d19', + [-648237077] = 'ch1_05_d21', + [-1178308421] = 'ch1_05_d22', + [-1901979057] = 'ch1_05_d23', + [-1838276121] = 'ch1_05_d24', + [-1424829648] = 'ch1_05_d25', + [-1127582049] = 'ch1_05_d26', + [1167493177] = 'ch1_05_d27', + [1480535434] = 'ch1_05_d28', + [1639006318] = 'ch1_05_d29', + [1785437879] = 'ch1_05_d44', + [-1147977467] = 'ch1_05_d45', + [-1388600234] = 'ch1_05_d46', + [794863774] = 'ch1_05_d47', + [994731483] = 'ch1_05_d47a', + [-1762920521] = 'ch1_05_d49', + [864740674] = 'ch1_05_d50', + [1877990923] = 'ch1_05_d52', + [481474450] = 'ch1_05_d56', + [-1283824349] = 'ch1_05_d57', + [-1522513745] = 'ch1_05_d58', + [-268542422] = 'ch1_05_d59', + [1352359959] = 'ch1_05_dd10t001', + [859803400] = 'ch1_05_decal_00', + [-2050968563] = 'ch1_05_decal_02', + [640710730] = 'ch1_05_decal_13', + [-154494593] = 'ch1_05_decal_14', + [148979116] = 'ch1_05_decal_15', + [1543168990] = 'ch1_05_decal_16', + [761267881] = 'ch1_05_decal_17', + [652016031] = 'ch1_05_decal_18', + [-122479284] = 'ch1_05_decal_19', + [-1290727183] = 'ch1_05_decal_20', + [-993086356] = 'ch1_05_decal_21', + [390748510] = 'ch1_05_decal_22', + [470508256] = 'ch1_05_decal_23', + [1346620240] = 'ch1_05_decal_26', + [1628073181] = 'ch1_05_decal_27', + [1541235335] = 'ch1_05_decal_28', + [765101570] = 'ch1_05_decal_29', + [-1553503526] = 'ch1_05_decal_31', + [-656681534] = 'ch1_05_decal_34', + [162839862] = 'ch1_05_decal_34c', + [594081602] = 'ch1_05_dirttrack002', + [-2034915886] = 'ch1_05_gbdec_00', + [-269584318] = 'ch1_05_gbdec_01', + [1932132027] = 'ch1_05_gbdec_02', + [1582355721] = 'ch1_05_gbdec_03', + [1326593676] = 'ch1_05_gbdec_04', + [956566128] = 'ch1_05_gbdec_05', + [1398070564] = 'ch1_05_glue_rocks', + [198600754] = 'ch1_05_l1297', + [-70639047] = 'ch1_05_land_004', + [-1305496067] = 'ch1_05_land1', + [1645273000] = 'ch1_05_land10', + [1868429890] = 'ch1_05_land11', + [1167894208] = 'ch1_05_land12', + [-2012749394] = 'ch1_05_land2', + [-1715895027] = 'ch1_05_land3', + [1805199569] = 'ch1_05_land4', + [2103692390] = 'ch1_05_land5', + [1532364875] = 'ch1_05_land7', + [-1903823016] = 'ch1_05_nd_00', + [2092258231] = 'ch1_05_nd_01', + [-751140668] = 'ch1_05_nd_02', + [153873574] = 'ch1_05_nd_03', + [1332738349] = 'ch1_05_nd_04', + [-440982083] = 'ch1_05_nd_05', + [-1672408334] = 'ch1_05_nd_06', + [-876285479] = 'ch1_05_nd_07', + [-122926169] = 'ch1_05_nd_08', + [-1371949373] = 'ch1_05_nd_09', + [647342297] = 'ch1_05_nd_10', + [407571524] = 'ch1_05_nd_11', + [-1846378607] = 'ch1_05_nd_12', + [2076201773] = 'ch1_05_nd_13', + [-445733236] = 'ch1_05_nd_14', + [255326750] = 'ch1_05_nd_15', + [1214049383] = 'ch1_05_nd_16', + [850837787] = 'ch1_05_nd_17', + [-1681714378] = 'ch1_05_nd_18', + [-964663120] = 'ch1_05_nd_19', + [1299739390] = 'ch1_05_nd_20', + [-548464979] = 'ch1_05_nd_21', + [290509609] = 'ch1_05_newrsd_00', + [549417478] = 'ch1_05_newrsd_01', + [856561315] = 'ch1_05_newrsd_02', + [-1764693127] = 'ch1_05_newrsd_04c', + [1997577891] = 'ch1_05_newrsd_09', + [1397271671] = 'ch1_05_newrsd_14c', + [1033054933] = 'ch1_05_newrsd_16', + [432497470] = 'ch1_05_newrsd_18', + [186238435] = 'ch1_05_newrsd_19', + [2131623274] = 'ch1_05_newrsd_20', + [1840863937] = 'ch1_05_newrsd_21', + [1110737848] = 'ch1_05_newrsd_23', + [937848604] = 'ch1_05_newrsd_24', + [102239104] = 'ch1_05_newrsd_25', + [-330770462] = 'ch1_05_newrsd_26', + [-827056967] = 'ch1_05_newrsd_28', + [-1269307051] = 'ch1_05_newrsd_33', + [725407517] = 'ch1_05_newrsd_34', + [426914696] = 'ch1_05_newrsd_35', + [213268811] = 'ch1_05_roadd_01c', + [-197676453] = 'ch1_05_rocks_010', + [-434498016] = 'ch1_05_rocks_011', + [882132333] = 'ch1_05_small_rocks', + [1165541107] = 'ch1_05_small_rocksb', + [817796479] = 'ch1_05_small_rocksc', + [1403564505] = 'ch1_05_stdec_00', + [1657622562] = 'ch1_05_stdec_01', + [2041282014] = 'ch1_05_stdec_02', + [794913095] = 'ch1_05_stdec_03', + [711896776] = 'ch1_05_vine_slod', + [1881883116] = 'ch1_05_vinegrapes_01', + [-1192733851] = 'ch1_05_vinegrapes_02', + [-1364836639] = 'ch1_05_vinegrapes_03', + [-448648156] = 'ch1_05_vinegrapes_04', + [-267894352] = 'ch1_05_vinegrapes_05', + [30401855] = 'ch1_05_vinegrapes_06', + [777993821] = 'ch1_05_vinegrapes_07', + [956322719] = 'ch1_05_vinegrapes_08', + [1253177090] = 'ch1_05_vinegrapes_09', + [11332893] = 'ch1_05_vinegrapes_10', + [-288405150] = 'ch1_05_vinegrapes_11', + [-1673878474] = 'ch1_05_vinegrapes_12', + [-1906374529] = 'ch1_05_vinegrapes_13', + [-1734107868] = 'ch1_05_vinegrapes_14', + [-958170717] = 'ch1_05_vinegrapes_15', + [-1270786977] = 'ch1_05_vinegrapes_16', + [1651978444] = 'ch1_05_vinegrapes_17', + [1371148114] = 'ch1_05_vinegrapes_18', + [2147216341] = 'ch1_05_vinegrapes_19', + [-400639775] = 'ch1_05_vinegrapes_20', + [-103785404] = 'ch1_05_vinegrapes_21', + [72446278] = 'ch1_05_vinegrapes_22', + [-1768876605] = 'ch1_05_vinegrapes_23', + [-401127089] = 'ch1_05_vines_01', + [496874587] = 'ch1_05_vines_02', + [223548358] = 'ch1_05_vines_03', + [1111653796] = 'ch1_05_vines_04', + [805099801] = 'ch1_05_vines_05', + [1788792416] = 'ch1_05_vines_06', + [1491675893] = 'ch1_05_vines_07', + [466530497] = 'ch1_05_vines_08', + [2048421203] = 'ch1_05_vines_09', + [-1255087545] = 'ch1_05_vines_10', + [-1527692856] = 'ch1_05_vines_11', + [-1849025670] = 'ch1_05_vines_12', + [-14551512] = 'ch1_05_vines_13', + [1517923546] = 'ch1_05_vines_14', + [1211566165] = 'ch1_05_vines_15', + [-1229724335] = 'ch1_05_vines_16', + [-1529593454] = 'ch1_05_vines_17', + [590757460] = 'ch1_05_vines_18', + [316775851] = 'ch1_05_vines_19', + [-528107544] = 'ch1_05_vines_20', + [-256386996] = 'ch1_05_vines_21', + [1911184043] = 'ch1_05_vines_22', + [-2128611050] = 'ch1_05_vines_23', + [1357265228] = 'ch1_05_vinesleaf_01', + [1847981003] = 'ch1_05_vinesleaf_03', + [1668013655] = 'ch1_05_vinesleaf_04', + [-88699674] = 'ch1_05_vinesleaf_05', + [1607751460] = 'ch1_05_vinesleaf_06', + [386942361] = 'ch1_05_vinesleaf_07', + [71933964] = 'ch1_05_vinesleaf_08', + [-1012195632] = 'ch1_05_vinesleaf_09', + [-380737290] = 'ch1_05_vinesleaf_10', + [-1304986931] = 'ch1_05_vinesleaf_11', + [-2052120131] = 'ch1_05_vinesleaf_12', + [1321415654] = 'ch1_05_vinesleaf_13', + [1127357636] = 'ch1_05_vinesleaf_14', + [1781131955] = 'ch1_05_vinesleaf_15', + [1623185375] = 'ch1_05_vinesleaf_16', + [1701994816] = 'ch1_05_vinesleaf_17', + [1445446315] = 'ch1_05_vinesleaf_18', + [551835681] = 'ch1_05_vinesleaf_19', + [-414816210] = 'ch1_05_vinesleaf_20', + [-490414265] = 'ch1_05_vinesleaf_21', + [-242320166] = 'ch1_05_vinesleaf_22', + [642967138] = 'ch1_05_vinesleaf_23', + [-788448320] = 'ch1_05_vinesleaf_24', + [142355125] = 'ch1_05_vinesleaf_25', + [438947344] = 'ch1_05_vinesleaf_26', + [1800171580] = 'ch1_05_vinesleaf_27', + [-38398679] = 'ch1_05_vinesleaf_28', + [1535725806] = 'ch1_05_vinesleaf_29', + [1248308587] = 'ch1_05_vinesleaf_30', + [949815766] = 'ch1_05_vinesleaf_31', + [-1646013342] = 'ch1_05_vinesleaf_32', + [-1349224513] = 'ch1_05_vinesleaf_33', + [-1656958192] = 'ch1_05_vinesleaf_34', + [-1826177308] = 'ch1_05_vinesleaf_35', + [-2135418361] = 'ch1_05_vinesleaf_36', + [-456269263] = 'ch1_05_vinesleaf_37', + [-727957042] = 'ch1_05_vinesleaf_38', + [-900059830] = 'ch1_05_vinesleaf_39', + [53617265] = 'ch1_05_vinesleaf_40', + [-214400386] = 'ch1_05_vinesleaf_41', + [552590828] = 'ch1_05_vinesleaf_42', + [1433781983] = 'ch1_05_vinesleaf_43', + [1740106595] = 'ch1_05_vinesleaf_44', + [1280193708] = 'ch1_05_vinesleaf_45', + [974164017] = 'ch1_05_vinesleaf_46', + [1736239881] = 'ch1_05_vinesleaf_47', + [-1900978659] = 'ch1_05_vineslmb_01', + [-1737789039] = 'ch1_05_vineslmb_02', + [937767058] = 'ch1_05_vineslmb_03', + [1445227792] = 'ch1_05_vineslmb_04', + [1736052667] = 'ch1_05_vineslmb_05', + [1907368999] = 'ch1_05_vineslmb_06', + [-261512820] = 'ch1_05_vineslmb_07', + [35669241] = 'ch1_05_vineslmb_08', + [484211313] = 'ch1_05_vineslmb_09', + [855713750] = 'ch1_05_vineslmb_10', + [1573944692] = 'ch1_05_vineslmb_11', + [1852972727] = 'ch1_05_vineslmb_12', + [189978742] = 'ch1_05_vineslmb_13', + [429651208] = 'ch1_05_vineslmb_14', + [685675421] = 'ch1_05_vineslmb_15', + [892775501] = 'ch1_05_vineslmb_16', + [-1226756204] = 'ch1_05_vineslmb_17', + [-995046605] = 'ch1_05_vineslmb_18', + [-808525457] = 'ch1_05_vineslmb_19', + [-284876533] = 'ch1_05_vineslmb_20', + [80104589] = 'ch1_05_vineslmb_21', + [310896656] = 'ch1_05_vineslmb_22', + [-1435297816] = 'ch1_05_vineslmb_23', + [982100547] = 'ch1_05_vinetrck_002', + [-1152647489] = 'ch1_05_water_01old', + [-981106295] = 'ch1_05_water_02', + [525120790] = 'ch1_05_water_03', + [817616884] = 'ch1_05_water_04', + [1827794303] = 'ch1_05_water_05_lod', + [-2076410120] = 'ch1_05_water_05', + [575761854] = 'ch1_05b_bdec_00', + [267569409] = 'ch1_05b_bdec_01', + [-655303942] = 'ch1_05b_bdec_02', + [-957106432] = 'ch1_05b_bdec_03', + [1832551311] = 'ch1_05b_bdec_04', + [-374244229] = 'ch1_05b_bdec_05', + [-1881323308] = 'ch1_05b_bdec_06', + [1144992157] = 'ch1_05b_bdec_08', + [881431090] = 'ch1_05b_bdec_09', + [-1084544805] = 'ch1_05b_bdec_10', + [-1324839882] = 'ch1_05b_bdec_11', + [485123068] = 'ch1_05b_bdec_12', + [218940481] = 'ch1_05b_bdec_13', + [-2009089371] = 'ch1_05b_bdec_14', + [2055806776] = 'ch1_05b_bdec_15', + [-440207958] = 'ch1_05b_bdec_16', + [-702982569] = 'ch1_05b_bdec_17', + [850268023] = 'ch1_05b_bdec_18', + [1684239073] = 'ch1_05b_bdec_19', + [-1394703166] = 'ch1_05b_bdec_21', + [667843236] = 'ch1_05b_bdec_22', + [425844171] = 'ch1_05b_bdec_23', + [1980405531] = 'ch1_05b_bdec_24', + [-1478886727] = 'ch1_05b_bdec_25', + [-558438286] = 'ch1_05b_bdec_26', + [734593805] = 'ch1_05b_bdec_28', + [1643016023] = 'ch1_05b_bdec_29', + [-102850527] = 'ch1_05b_bdec_30', + [-775794715] = 'ch1_05b_bdec_31', + [395074428] = 'ch1_05b_bdec_32', + [-314243346] = 'ch1_05b_bdec_33', + [-984926473] = 'ch1_05b_bdec_34', + [-1829219758] = 'ch1_05b_bdec_35', + [-563680978] = 'ch1_05b_bdec_36', + [-1272212296] = 'ch1_05b_bdec_37', + [1340525620] = 'ch1_05b_bdec_38', + [-142669653] = 'ch1_05b_bdec_38z', + [1604938681] = 'ch1_05b_bdec_39', + [-2097070856] = 'ch1_05b_bdec_40', + [-2009905316] = 'ch1_05b_bdec_41', + [2039135481] = 'ch1_05b_culvert_dcl', + [-1514655736] = 'ch1_05b_land01', + [-542694427] = 'ch1_05b_land02', + [-714535063] = 'ch1_05b_land03', + [1257994892] = 'ch1_05b_land04', + [817251842] = 'ch1_05b_land05', + [632991755] = 'ch1_05b_land06', + [479239607] = 'ch1_05b_land07', + [1972031398] = 'ch1_05b_land08', + [1454443264] = 'ch1_05b_land09_lod', + [591964963] = 'ch1_05b_land09', + [141548801] = 'ch1_05b_pipeculvert', + [1659629020] = 'ch1_05b_rocks_005', + [-1650129452] = 'ch1_05b_sdec_05', + [-1027911680] = 'ch1_05b_sdec_07', + [1969239383] = 'ch1_05b_sdec_08', + [-1677440053] = 'ch1_05b_water_01', + [-1380389068] = 'ch1_05b_water_02', + [2087128209] = 'ch1_05b_water_03', + [-975561576] = 'ch1_06__r_hedge_dec_1', + [-1382939478] = 'ch1_06__r_hedge_dec_10', + [1233075334] = 'ch1_06__r_hedge_dec_11', + [1522917139] = 'ch1_06__r_hedge_dec_12', + [1687483057] = 'ch1_06__r_hedge_dec_13', + [-147875868] = 'ch1_06__r_hedge_dec_14', + [-1468603954] = 'ch1_06__r_hedge_dec_2', + [1187913354] = 'ch1_06__r_hedge_dec_3', + [707060956] = 'ch1_06__r_hedge_dec_4', + [399130663] = 'ch1_06__r_hedge_dec_5', + [158835586] = 'ch1_06__r_hedge_dec_6', + [-12284132] = 'ch1_06__r_hedge_dec_7', + [-320148887] = 'ch1_06__r_hedge_dec_8', + [-762792539] = 'ch1_06__r_hedge_dec_9', + [-82250298] = 'ch1_06_01_em_lod', + [1004619078] = 'ch1_06_01_em', + [-1265602907] = 'ch1_06_01', + [-470880964] = 'ch1_06_04_em_lod', + [-1622639020] = 'ch1_06_04_em', + [1291657088] = 'ch1_06_04', + [781017273] = 'ch1_06_12_em_lod', + [258259732] = 'ch1_06_12_em', + [-465809568] = 'ch1_06_12', + [823141127] = 'ch1_06_balcony', + [-767257825] = 'ch1_06_balconyb', + [785926531] = 'ch1_06_blackrail1', + [-149267960] = 'ch1_06_blackrail2', + [-250590737] = 'ch1_06_dec_00', + [-564779909] = 'ch1_06_dec_01', + [-866090864] = 'ch1_06_dec_02', + [-875331722] = 'ch1_06_dec_03', + [-1174086695] = 'ch1_06_dec_04', + [-1489062323] = 'ch1_06_dec_05', + [-1785261314] = 'ch1_06_dec_06', + [344363223] = 'ch1_06_dec_07', + [-2097844813] = 'ch1_06_dec_08', + [1914358782] = 'ch1_06_dec_09', + [1380619228] = 'ch1_06_gatefizz', + [-694082153] = 'ch1_06_land', + [-368536216] = 'ch1_06_poolwtr_01', + [262873764] = 'ch1_06_res1_decal_01', + [1613657340] = 'ch1_06_res1_em_lod', + [-2003242056] = 'ch1_06_res1_em', + [1378184681] = 'ch1_06_res1', + [-615911326] = 'ch1_06_res2_decheg_01', + [-2081046085] = 'ch1_06_res2_decheg_02', + [1975461198] = 'ch1_06_res2_decheg_03', + [1111146038] = 'ch1_06_res2_decheg_04', + [-1807588780] = 'ch1_06_res2_decheg_05', + [-1304912276] = 'ch1_06_res2_decheg_06', + [-812787434] = 'ch1_06_res2_decheg_08', + [-370207447] = 'ch1_06_res2_hedgedec_01', + [-627607942] = 'ch1_06_res2_hedgedec_02', + [-1237439032] = 'ch1_06_res2_hedgedec_03', + [-1610809018] = 'ch1_06_res2_hedgedec_04', + [532316351] = 'ch1_06_res2_hedgedec_05', + [293921876] = 'ch1_06_res2_hedgedec_06', + [209181242] = 'ch1_06_res2_hedgedec_07', + [-14598259] = 'ch1_06_res2_hedgedec_08', + [1681689026] = 'ch1_06_res2_hedgedec_09', + [-2066665856] = 'ch1_06_res4_deched_01', + [-1509199628] = 'ch1_06_res4_deched_02', + [-1721903207] = 'ch1_06_res4_deched_03', + [476568995] = 'ch1_06_res4_deched_04', + [-1106501387] = 'ch1_06_res4_deched_05', + [-1359707450] = 'ch1_06_res4_deched_06', + [-524589485] = 'ch1_06_res4_deched_07', + [1703112665] = 'ch1_06_res4_deched_08', + [112439867] = 'ch1_06_res4_deched_09', + [-1430029948] = 'ch1_06_res4_deched_10', + [-2132335728] = 'ch1_06_res4_em_lod', + [-1283147563] = 'ch1_06_res4_em', + [-1235667377] = 'ch1_06_res4', + [2027564676] = 'ch1_06_statue01_lod', + [-1534185780] = 'ch1_06_statue01', + [-1246831416] = 'ch1_06_wall01', + [-949746445] = 'ch1_06b_clotha_lod', + [-1470061540] = 'ch1_06b_clothb_lod', + [1263880884] = 'ch1_06b_clothc_lod', + [791179982] = 'ch1_06b_clothd_lod', + [-689908965] = 'ch1_06b_clothe_lod', + [927254358] = 'ch1_06b_clothf_lod', + [84981371] = 'ch1_06b_emissive_slod', + [2068092117] = 'ch1_06b_emissive', + [1745682137] = 'ch1_06b_kowall001', + [1968085340] = 'ch1_06b_kowall002', + [-1509442068] = 'ch1_06b_land_01', + [1536993559] = 'ch1_06b_land_02', + [-245702103] = 'ch1_06b_plot1_dtls_b_00', + [52659642] = 'ch1_06b_plot1_dtls_b_01', + [-723441354] = 'ch1_06b_plot1_dtls_b_02', + [-425800527] = 'ch1_06b_plot1_dtls_b_03', + [1047919710] = 'ch1_06b_plot1_dtls_b_04', + [1649813806] = 'ch1_06b_plot1', + [1561499487] = 'ch1_06b_plot2_dtls_b_00', + [-1739649577] = 'ch1_06b_plot2_dtls_b_01', + [2038812741] = 'ch1_06b_plot2_dtls_b_02', + [480581193] = 'ch1_06b_plot2_dtls_b_03', + [1332706269] = 'ch1_06b_plot2_dtls_b_04', + [-2004585078] = 'ch1_06b_plot2', + [-280051256] = 'ch1_06b_plot3_dtlsb_01', + [-412175864] = 'ch1_06b_plot3_dtlsb_02', + [-642967931] = 'ch1_06b_plot3_dtlsb_03', + [-1783591283] = 'ch1_06b_plot3_dtlsb_04', + [-1225666289] = 'ch1_06b_plot3_dtlsb_05', + [2007684055] = 'ch1_06b_plot3', + [-355546905] = 'ch1_06b_plot4_bars', + [-374873227] = 'ch1_06b_plot4_dtls_01', + [-660651672] = 'ch1_06b_plot4_dtls_02', + [-359078565] = 'ch1_06b_plot4_dtls_03', + [974233216] = 'ch1_06b_plot4_woodhi_lod', + [-2039602912] = 'ch1_06b_plot4_woodhi', + [754925185] = 'ch1_06b_plot4', + [-644313716] = 'ch1_06b_plot5_dtls_b_01', + [-472669694] = 'ch1_06b_plot5_dtls_b_02', + [-1948487151] = 'ch1_06b_plot5_dtls_b_03', + [1577096794] = 'ch1_06b_plot5_dtls_b_04', + [1725411913] = 'ch1_06b_plot5', + [-1698420455] = 'ch1_06b_plt1_dtls_00', + [1431445046] = 'ch1_06b_plt1_dtls_01', + [-2063598191] = 'ch1_06b_plt1_dtls_02', + [948331707] = 'ch1_06b_plt1_dtls_03', + [1672395503] = 'ch1_06b_plt1_dtls_04', + [471509988] = 'ch1_06b_plt1_dtls_05', + [208538763] = 'ch1_06b_plt1_dtls_06', + [-7408947] = 'ch1_06b_plt1_dtls_07', + [-667440211] = 'ch1_06b_plt2_dtls_04', + [290561504] = 'ch1_06b_plt2_dtls_05', + [847568966] = 'ch1_06b_plt2_dtls_06', + [1800262103] = 'ch1_06b_plt2_dtls_07', + [486192434] = 'ch1_06b_plt2_dtls_08', + [-1914521701] = 'ch1_06b_plt3_dtls_00', + [-543925507] = 'ch1_06b_plt3_dtls_01', + [-66546707] = 'ch1_06b_plt3_dtls_02', + [229455670] = 'ch1_06b_plt3_dtls_03', + [375015568] = 'ch1_06b_plt3_dtls_04', + [673836079] = 'ch1_06b_plt3_dtls_05', + [1000280857] = 'ch1_06b_plt3_dtls_06', + [1303885642] = 'ch1_06b_plt3_dtls_07', + [1450231996] = 'ch1_06b_plt3_dtls_08', + [1119566337] = 'ch1_06b_plt3_dtls_66', + [600282003] = 'ch1_06b_plt5_dtls_00', + [423329399] = 'ch1_06b_plt5_dtls_01', + [124508888] = 'ch1_06b_plt5_dtls_02', + [1822795086] = 'ch1_06b_plt5_dtls_03', + [1525744101] = 'ch1_06b_plt5_dtls_04', + [1338960801] = 'ch1_06b_plt5_dtls_05', + [1046825166] = 'ch1_06b_plt5_dtls_06', + [1969796840] = 'ch1_06b_plt5_dtls_07', + [1685722379] = 'ch1_06b_plt5_dtls_08', + [1503919967] = 'ch1_06b_plt5_dtls_09', + [-1159937893] = 'ch1_06b_plt5_dtls_10', + [-771681450] = 'ch1_06b_poolwtr', + [-193774164] = 'ch1_06b_props_props05_08_lod', + [2069853531] = 'ch1_06b_roadart_01_lod', + [316677475] = 'ch1_06b_roadart_01', + [1476245945] = 'ch1_06b_tdec_00', + [-1091139671] = 'ch1_06b_tdec_01', + [747692764] = 'ch1_06b_tdec_02', + [560188546] = 'ch1_06b_tdec_03', + [280374055] = 'ch1_06b_tdec_04', + [-1816055493] = 'ch1_06b_tdec_05', + [-1980818025] = 'ch1_06b_tdec_06', + [-564279689] = 'ch1_06b_tdec_07', + [1906074002] = 'ch1_06b_tdec_66', + [1728494960] = 'ch1_06c_base_01', + [1231358135] = 'ch1_06c_creepingivy2', + [-1571993431] = 'ch1_06c_decal1', + [-1346710056] = 'ch1_06c_emissive_lod', + [1389934802] = 'ch1_06c_emissive', + [-1463257667] = 'ch1_06c_hedge_2_00', + [2063473193] = 'ch1_06c_hedge_2_01', + [325372652] = 'ch1_06c_hedge_2_02', + [632778641] = 'ch1_06c_hedge_2_03', + [-1350466777] = 'ch1_06c_hedge_2_04', + [-1035228997] = 'ch1_06c_hedge_2_05', + [-30465907] = 'ch1_06c_hedge_2_06', + [1350911288] = 'ch1_06c_hedge_2_07', + [454089296] = 'ch1_06c_hedge_2_08', + [760708829] = 'ch1_06c_hedge_2_09', + [1397509646] = 'ch1_06c_hedge_2_10', + [1099541129] = 'ch1_06c_hedge_2_11', + [-586751655] = 'ch1_06c_hedge_2_12', + [-758919981] = 'ch1_06c_hedge_2_13', + [-1978144101] = 'ch1_06c_house47', + [2113601042] = 'ch1_06c_intemissive_dummy', + [-321814252] = 'ch1_06c_ldec_00', + [-15456871] = 'ch1_06c_ldec_01', + [-748191486] = 'ch1_06c_petrol', + [1962325646] = 'ch1_06c_water', + [-829294170] = 'ch1_06d_decal_00', + [-1292189064] = 'ch1_06d_decal_01', + [-383242542] = 'ch1_06d_decal_02', + [198669360] = 'ch1_06d_decal_03', + [-100216689] = 'ch1_06d_decal_04', + [813514107] = 'ch1_06d_decal_05', + [514824672] = 'ch1_06d_decal_06', + [1159915206] = 'ch1_06d_decal_07', + [857490105] = 'ch1_06d_decal_08', + [1769123693] = 'ch1_06d_decal_09', + [1201827021] = 'ch1_06d_decal_10', + [1522832153] = 'ch1_06d_decal_11', + [1829386148] = 'ch1_06d_decal_12', + [2118605342] = 'ch1_06d_decal_13', + [-1870528877] = 'ch1_06d_decal_14', + [-968496614] = 'ch1_06d_decal_15', + [-1735913825] = 'ch1_06d_decal_16', + [-337332905] = 'ch1_06d_decal_17', + [-1238808095] = 'ch1_06d_decal_18', + [257915980] = 'ch1_06d_decal_19', + [-1925253951] = 'ch1_06d_decal_20', + [1484360503] = 'ch1_06d_decal_21', + [1790586808] = 'ch1_06d_decal_22', + [-1229142084] = 'ch1_06d_decal_23', + [-1611228624] = 'ch1_06d_decal_24', + [-1304609091] = 'ch1_06d_decal_25', + [24927546] = 'ch1_06d_decal_26', + [226129206] = 'ch1_06d_decal_27', + [-676197978] = 'ch1_06d_decal_28', + [-386618325] = 'ch1_06d_decal_29', + [1054857528] = 'ch1_06d_decal_30', + [1246031874] = 'ch1_06d_decal_31', + [478614663] = 'ch1_06d_decal_32', + [1650904865] = 'ch1_06d_emissive_a_lod', + [1610071817] = 'ch1_06d_emissive_a', + [-555066806] = 'ch1_06d_emissive_b_lod', + [1085767817] = 'ch1_06d_emissive_b', + [-1762051227] = 'ch1_06d_emissive_c_lod', + [2077914830] = 'ch1_06d_emissive_c', + [1801219617] = 'ch1_06d_h1_dtl', + [167998261] = 'ch1_06d_h1_rails', + [-1535562302] = 'ch1_06d_h1', + [816828825] = 'ch1_06d_h2_dtl', + [-826998215] = 'ch1_06d_h2', + [434978953] = 'ch1_06d_h2g', + [15259684] = 'ch1_06d_h3_dtl', + [14608012] = 'ch1_06d_h3', + [-1077476230] = 'ch1_06d_h3g', + [258592004] = 'ch1_06d_hedge_00', + [960372912] = 'ch1_06d_hedge_01', + [723223659] = 'ch1_06d_hedge_02', + [-838022581] = 'ch1_06d_hedge_03', + [1502654699] = 'ch1_06d_hg1', + [-1578762192] = 'ch1_06d_land_01', + [-2132419634] = 'ch1_06d_land_01b', + [850575209] = 'ch1_06d_land_01c', + [2081561356] = 'ch1_06d_pool2', + [182740004] = 'ch1_06d_props_combo07_12_lod', + [1724844882] = 'ch1_06e_armco01', + [-1001274854] = 'ch1_06e_fizzrail01_lod', + [1013214513] = 'ch1_06e_fizzrail01', + [1408948465] = 'ch1_06e_fizzrail03_lod', + [550483464] = 'ch1_06e_fizzrail03', + [-322710696] = 'ch1_06e_fizzrail04_lod', + [186026646] = 'ch1_06e_fizzrail04', + [-331876165] = 'ch1_06e_fizzrail05_lod', + [-2088895641] = 'ch1_06e_fizzrail05', + [1854766374] = 'ch1_06e_fizzrail06_lod', + [1972854682] = 'ch1_06e_fizzrail06', + [1818999351] = 'ch1_06e_fizzrail07_lod', + [-1479818238] = 'ch1_06e_fizzrail07', + [1613365061] = 'ch1_06e_fizzrail08_lod', + [1376393344] = 'ch1_06e_fizzrail08', + [-1449043454] = 'ch1_06e_fizzrail09_lod', + [-539184045] = 'ch1_06e_fizzrail09', + [380368158] = 'ch1_06e_fizzrail10_lod', + [1306693437] = 'ch1_06e_fizzrail10', + [1265021644] = 'ch1_06e_fizzrail11_lod', + [1375836023] = 'ch1_06e_fizzrail11', + [-351765504] = 'ch1_06e_hedgedecal_00', + [311577359] = 'ch1_06e_hedgedecal_01', + [551249825] = 'ch1_06e_hedgedecal_02', + [-1240657402] = 'ch1_06e_hedgedecal_03', + [-1000526170] = 'ch1_06e_hedgedecal_04', + [1731032132] = 'ch1_06e_hedgedecal_05', + [956602355] = 'ch1_06e_hedgedecal_06', + [198327695] = 'ch1_06e_hedgedecal_07', + [1503746348] = 'ch1_06e_hedgedecal_08', + [-2140756294] = 'ch1_06e_hedgedecal_09', + [270583560] = 'ch1_06e_hedgedecal_10', + [1698296117] = 'ch1_06e_hedgedecal_11', + [1131589031] = 'ch1_06e_hedgedecal_12', + [154646834] = 'ch1_06e_hedgedecal_13', + [-166882594] = 'ch1_06e_hedgedecal_14', + [-1680482708] = 'ch1_06e_hedgedecal_15', + [-1971045431] = 'ch1_06e_hedgedecal_16', + [787448993] = 'ch1_06e_hedgedecal_17', + [-1666588652] = 'ch1_06e_hedgedecal_18', + [-478319170] = 'ch1_06e_hedgedecal_19', + [293388852] = 'ch1_06e_hedgedecal_20', + [-607136033] = 'ch1_06e_hedgedecal_21', + [-817971779] = 'ch1_06e_hedgedecal_22', + [-126283727] = 'ch1_06e_hedgedecal_23', + [-358386554] = 'ch1_06e_hedgedecal_24', + [-1779971320] = 'ch1_06e_hedgedecal_25', + [-1066229723] = 'ch1_06e_hedgedecal_26', + [-1287912008] = 'ch1_06e_hedgedecal_27', + [-1249867311] = 'ch1_06e_hedgedecal_28', + [-951177876] = 'ch1_06e_hedgedecal_29', + [833028988] = 'ch1_06e_hedgedecal_30', + [525655768] = 'ch1_06e_hedgedecal_31', + [1420478851] = 'ch1_06e_hedgedecal_32', + [1115923765] = 'ch1_06e_hedgedecal_33', + [2018414794] = 'ch1_06e_hedgedecal_34', + [1720872274] = 'ch1_06e_hedgedecal_35', + [-1679304708] = 'ch1_06e_hedgedecal_36', + [-1977142149] = 'ch1_06e_hedgedecal_37', + [-1625072017] = 'ch1_06e_hedgedecal_38', + [-1922974996] = 'ch1_06e_hedgedecal_39', + [-476551064] = 'ch1_06e_hedgedecal_40', + [-749320220] = 'ch1_06e_hedgedecal_41', + [406540717] = 'ch1_06e_hedgedecal_42', + [-168030929] = 'ch1_06e_hedgedecal_43', + [985044643] = 'ch1_06e_hedgedecal_44', + [678425110] = 'ch1_06e_hedgedecal_45', + [1600217080] = 'ch1_06e_hedgedecal_46', + [1294187389] = 'ch1_06e_hedgedecal_47', + [-1829878043] = 'ch1_06e_hedgedecal_48', + [-2135711120] = 'ch1_06e_hedgedecal_49', + [418436176] = 'ch1_06e_hedgedecal_50', + [643755820] = 'ch1_06e_hedgedecal_51', + [1032232315] = 'ch1_06e_hedgedecal_52', + [1194963169] = 'ch1_06e_hedgedecal_53', + [1537989061] = 'ch1_06e_hedgedecal_54', + [1837530490] = 'ch1_06e_hedgedecal_55', + [-1607867712] = 'ch1_06e_hedgedecal_56', + [1919878987] = 'ch1_06e_hedgedecal_57', + [-1500811393] = 'ch1_06e_hedgedecal_58', + [1892156409] = 'ch1_06e_hedgedecal_59', + [1197189493] = 'ch1_06e_hedgedecal_60', + [-487006059] = 'ch1_06e_hedgedecal_61', + [-1181381169] = 'ch1_06e_hedgedecal_62', + [-1895712576] = 'ch1_06e_hedgedecal_63', + [-704100684] = 'ch1_06e_hedgedecal_64', + [34184886] = 'ch1_06e_hedgedecal_65', + [279788541] = 'ch1_06e_hedgedecal_66', + [508778313] = 'ch1_06e_hedgedecal_67', + [756151494] = 'ch1_06e_hedgedecal_68', + [38510418] = 'ch1_06e_hedgedecal_69', + [1268986596] = 'ch1_06e_hedgedecal_70', + [-399348760] = 'ch1_06e_hedgedecal_71', + [-1115875714] = 'ch1_06e_hedgedecal_72', + [-2002604830] = 'ch1_06e_hedgedecal_73', + [-686700121] = 'ch1_06e_hedgedecal_74', + [789445022] = 'ch1_06e_hedgedecal_75', + [71607308] = 'ch1_06e_hedgedecal_76', + [70966030] = 'ch1_06e_house_1_dtl', + [937209763] = 'ch1_06e_house_1', + [-1552209158] = 'ch1_06e_house_2_dtl', + [572752945] = 'ch1_06e_house_2', + [-297041999] = 'ch1_06e_house_3_dtl_ncast', + [-433939171] = 'ch1_06e_house_3_dtl', + [324855460] = 'ch1_06e_house_3', + [-461363943] = 'ch1_06e_house_3b', + [-1675306660] = 'ch1_06e_mansio_3_dtl', + [-1141426179] = 'ch1_06e_mansion_1', + [-2077898661] = 'ch1_06e_mansion_2', + [-1772983116] = 'ch1_06e_mansion_3', + [1619525920] = 'ch1_06e_mansion_4', + [369373526] = 'ch1_06e_mansion_dtl_b', + [1802624048] = 'ch1_06e_mansion_dtl_c', + [1450359670] = 'ch1_06e_mansion_dtl', + [-1809439330] = 'ch1_06e_pool_1', + [1283691775] = 'ch1_06e_terrain_1', + [1372368582] = 'ch1_06e_terrain_1b', + [2048290852] = 'ch1_06e_terrain_2', + [575311923] = 'ch1_06f_emi_slod', + [341085004] = 'ch1_06f_emissivea', + [1480725270] = 'ch1_06f_emissiveb', + [-1968703519] = 'ch1_06f_emissivec', + [1845903006] = 'ch1_06f_emissivee', + [259424640] = 'ch1_06f_emissivef', + [1271986740] = 'ch1_06f_emissiveg', + [1305271660] = 'ch1_06f_fence_m00', + [1824791386] = 'ch1_06f_fence_m02', + [-2008559007] = 'ch1_06f_fence_m04', + [-1542616596] = 'ch1_06f_fence_m06', + [-1088208873] = 'ch1_06f_fence_m08', + [-1826115176] = 'ch1_06f_fence_mm01', + [1098059312] = 'ch1_06f_fence_mm02', + [1874193077] = 'ch1_06f_fence_mm03', + [-1422437377] = 'ch1_06f_hedged_01', + [-1728368761] = 'ch1_06f_hedged_02', + [-2034988294] = 'ch1_06f_hedged_03', + [1953326700] = 'ch1_06f_hedged_04', + [1747930608] = 'ch1_06f_hedged_05', + [278208197] = 'ch1_06f_hedged_06', + [535739768] = 'ch1_06f_hedged_07', + [-366390802] = 'ch1_06f_hedged_08', + [-76811149] = 'ch1_06f_hedged_09', + [-1978789135] = 'ch1_06f_hedged_10', + [1748225853] = 'ch1_06f_hedged_11', + [1376363241] = 'ch1_06f_hedged_12', + [1343725317] = 'ch1_06f_hedged_13', + [1064631744] = 'ch1_06f_hedged_14', + [732550698] = 'ch1_06f_hedged_15', + [454309119] = 'ch1_06f_hedged_16', + [154964304] = 'ch1_06f_hedged_17', + [-393392142] = 'ch1_06f_hedged_18', + [-726095799] = 'ch1_06f_hedged_19', + [-1128859238] = 'ch1_06f_hedged_20', + [-829317809] = 'ch1_06f_hedged_21', + [-554549744] = 'ch1_06f_hedged_22', + [-253533710] = 'ch1_06f_hedged_23', + [64423897] = 'ch1_06f_hedged_24', + [356330149] = 'ch1_06f_hedged_25', + [-1785582863] = 'ch1_06f_hedged_26', + [-2083518611] = 'ch1_06f_hedged_27', + [1895326142] = 'ch1_06f_hedged_28', + [1595883020] = 'ch1_06f_hedged_29', + [1989663837] = 'ch1_06f_hedged_30', + [1513989033] = 'ch1_06f_hedged_31', + [-1204330625] = 'ch1_06f_hedged_32', + [-1733615513] = 'ch1_06f_hedged_33', + [-1963686662] = 'ch1_06f_hedged_34', + [2099079500] = 'ch1_06f_hedged_35', + [-46077547] = 'ch1_06f_hedged_36', + [-277524994] = 'ch1_06f_hedged_37', + [-743696788] = 'ch1_06f_hedged_38', + [-971703494] = 'ch1_06f_hedged_39', + [-1238475563] = 'ch1_06f_hedged_40', + [-948961448] = 'ch1_06f_hedged_41', + [1270810616] = 'ch1_06f_hedged_42', + [1493017205] = 'ch1_06f_hedged_43', + [1865731811] = 'ch1_06f_hedged_44', + [2088397166] = 'ch1_06f_hedged_45', + [-674881536] = 'ch1_06f_hedged_46', + [-375340107] = 'ch1_06f_hedged_47', + [-10227909] = 'ch1_06f_hedged_48', + [220564158] = 'ch1_06f_hedged_49', + [-1301326305] = 'ch1_06f_hedged_50', + [-1065225660] = 'ch1_06f_hedged_51', + [-1166973457] = 'ch1_06f_hedged_52', + [-1476280048] = 'ch1_06f_hedged_53', + [-1493909770] = 'ch1_06f_hedged_54', + [-1805379115] = 'ch1_06f_hedged_55', + [353278764] = 'ch1_06f_hedged_56', + [46495386] = 'ch1_06f_hedged_57', + [-578016216] = 'ch1_06f_hedged_58', + [-816214077] = 'ch1_06f_hedged_59', + [1633957150] = 'ch1_06f_hedged_60', + [726321384] = 'ch1_06f_hedged_61', + [-1405138221] = 'ch1_06f_hedged_62', + [-1106973090] = 'ch1_06f_hedged_63', + [-2006219988] = 'ch1_06f_hedged_64', + [-1708775775] = 'ch1_06f_hedged_65', + [-1417328265] = 'ch1_06f_hedged_66', + [-1111036422] = 'ch1_06f_hedged_67', + [-1686402222] = 'ch1_06f_hs01a', + [-903124815] = 'ch1_06f_hs01b', + [141383340] = 'ch1_06f_hs01dtls', + [693212180] = 'ch1_06f_hs02_detail_01', + [-2144996484] = 'ch1_06f_hs02', + [1524869624] = 'ch1_06f_hs02dtls', + [1557376216] = 'ch1_06f_hs03', + [2003091792] = 'ch1_06f_hs03dtls', + [713410621] = 'ch1_06f_hs04', + [1741903197] = 'ch1_06f_hs04dtls', + [-938895259] = 'ch1_06f_hs05_trellis', + [959505811] = 'ch1_06f_hs05', + [489618078] = 'ch1_06f_hs05dtls', + [-1225039574] = 'ch1_06f_hs06', + [885728796] = 'ch1_06f_hs06dtls', + [-1815143726] = 'ch1_06f_hs07', + [2052173996] = 'ch1_06f_hs07dtls', + [-1036750964] = 'ch1_06f_land_01', + [-356990828] = 'ch1_06f_land_06', + [1494033274] = 'ch1_06f_metal_fence_01_lod', + [2022354727] = 'ch1_06f_metal_fence_01', + [-1992036674] = 'ch1_06f_metal_fence_02_lod', + [1767280831] = 'ch1_06f_metal_fence_02', + [135395070] = 'ch1_06f_metal_fence_03_lod', + [1526461450] = 'ch1_06f_metal_fence_03', + [1715127174] = 'ch1_06f_metal_fence_04_lod', + [1307630068] = 'ch1_06f_metal_fence_04', + [-916074276] = 'ch1_06f_metal_fence_05', + [-1132021986] = 'ch1_06f_metal_fence_06', + [-1363633278] = 'ch1_06f_metal_fence_07', + [-1610482155] = 'ch1_06f_metal_fence_08', + [66438667] = 'ch1_06f_metal_fence_09', + [1011471534] = 'ch1_06f_metal_fence_10', + [-1021484461] = 'ch1_06f_metal_fence_11', + [-1836154570] = 'ch1_06f_metal_fence_12', + [-1483101364] = 'ch1_06f_metal_fence_13', + [2031078969] = 'ch1_06f_metal_fence_14', + [-130986878] = 'ch1_06f_metal_fence_15', + [193360684] = 'ch1_06f_metal_fence_16', + [-591161945] = 'ch1_06f_metal_fence_17', + [-293750501] = 'ch1_06f_metal_fence_18', + [720187873] = 'ch1_06f_metal_fence_19', + [1968716998] = 'ch1_06f_metal_fence_20', + [-589394967] = 'ch1_06f_metal_fence_21', + [-289509730] = 'ch1_06f_rail', + [-1040870808] = 'ch1_06f_rd01', + [22863417] = 'ch1_06f_water', + [-1440166959] = 'ch1_07_banner01_lod', + [856441009] = 'ch1_07_banner01', + [-988808159] = 'ch1_07_banner02_lod', + [-464772302] = 'ch1_07_banner02', + [-751822836] = 'ch1_07_banner03_lod', + [391809358] = 'ch1_07_banner03', + [849954959] = 'ch1_07_banner04_lod', + [1221618745] = 'ch1_07_banner04', + [-1443032717] = 'ch1_07_banner05_lod', + [-1845395806] = 'ch1_07_banner05', + [-1019446226] = 'ch1_07_banner06_lod', + [2076201504] = 'ch1_07_banner06', + [-444937022] = 'ch1_07_banner08_lod', + [1614650139] = 'ch1_07_banner08', + [-1739205621] = 'ch1_07_banner20', + [2119431470] = 'ch1_07_banners_night_01', + [-1046079400] = 'ch1_07_banners_night_02_lod', + [1203374075] = 'ch1_07_banners_night_02', + [-1209973314] = 'ch1_07_banners_niz', + [915573599] = 'ch1_07_build01', + [1154197457] = 'ch1_07_build02', + [1349173003] = 'ch1_07_build03', + [1565120713] = 'ch1_07_build04', + [1804072261] = 'ch1_07_build05', + [2042007970] = 'ch1_07_build06', + [-1984089681] = 'ch1_07_build07', + [-1771746561] = 'ch1_07_build08', + [-1533057165] = 'ch1_07_build09', + [250165925] = 'ch1_07_build10', + [-1416274441] = 'ch1_07_carpark01', + [-1725777646] = 'ch1_07_carpark02', + [-1776225287] = 'ch1_07_d01_ne', + [1532898766] = 'ch1_07_d01_wire00', + [1762445611] = 'ch1_07_d01_wire01', + [-1310139678] = 'ch1_07_d01_wire02', + [-1080101298] = 'ch1_07_d01_wire03', + [403842899] = 'ch1_07_d01_wire04', + [643548134] = 'ch1_07_d01_wire05', + [2070113752] = 'ch1_07_d01_wire06', + [164039357] = 'ch1_07_d01_wire07', + [-551897755] = 'ch1_07_d01_wire08', + [-76288489] = 'ch1_07_d01_wire09', + [1618949936] = 'ch1_07_d01_wire10', + [1859703779] = 'ch1_07_d01_wire11', + [262780135] = 'ch1_07_d03_rail00', + [-23981384] = 'ch1_07_d03_rail01', + [877952572] = 'ch1_07_d03_rail02', + [-938236488] = 'ch1_07_d03_rail03', + [-1244528331] = 'ch1_07_d03_rail04', + [-341218077] = 'ch1_07_d03_rail05', + [-647051154] = 'ch1_07_d03_rail06', + [-936532508] = 'ch1_07_d03_rail07', + [-1242037895] = 'ch1_07_d03_rail08', + [-343184225] = 'ch1_07_d03_rail09', + [-1319126219] = 'ch1_07_d03_wires00', + [-13740335] = 'ch1_07_d03_wires01', + [217248346] = 'ch1_07_d03_wires02', + [-1710289764] = 'ch1_07_d03_wires03', + [-1471502061] = 'ch1_07_d03_wires04', + [-174242889] = 'ch1_07_d03_wires05', + [64741428] = 'ch1_07_d03_wires06', + [1365080878] = 'ch1_07_d03_wires07', + [-411523218] = 'ch1_07_d03_wires08', + [759214837] = 'ch1_07_d03_wires09', + [-867600140] = 'ch1_07_d03_wires10', + [-1810514928] = 'ch1_07_d08_c_rail_01', + [-2050744467] = 'ch1_07_d08_c_rail_02', + [-1330285233] = 'ch1_07_d08_c_rail_03', + [-538474200] = 'ch1_07_d08_c_rail', + [-312405986] = 'ch1_07_d08_rail00', + [558168037] = 'ch1_07_d08_rail01', + [1383029305] = 'ch1_07_d08_rail02', + [77676190] = 'ch1_07_d08_rail03', + [-599101971] = 'ch1_07_d08_rail04', + [-860959050] = 'ch1_07_d08_rail05', + [263738572] = 'ch1_07_d08_rail06', + [-1441166964] = 'ch1_07_d08_rail07', + [-1522466853] = 'ch1_07_d08_rail08', + [-1919430519] = 'ch1_07_d08_rail09', + [-1877879583] = 'ch1_07_d08_rail10', + [1784318323] = 'ch1_07_d08_rail11', + [879205770] = 'ch1_07_d08_rail12', + [1054716534] = 'ch1_07_d08_rail13', + [1304252469] = 'ch1_07_d08_rail14', + [1610020008] = 'ch1_07_d08_rail15', + [-230614722] = 'ch1_07_d08_rail16', + [73645443] = 'ch1_07_d08_rail17', + [202558689] = 'ch1_07_d08_rail18', + [363388941] = 'ch1_07_d08_rail19', + [1374119101] = 'ch1_07_d08_rail20', + [-1088020178] = 'ch1_07_d08_wires_01', + [1318807203] = 'ch1_07_d08_wires00', + [364377309] = 'ch1_07_d08_wires01', + [-267867777] = 'ch1_07_d08_wires02', + [709008882] = 'ch1_07_d08_wires03', + [-1805946330] = 'ch1_07_d08_wires04', + [1052853999] = 'ch1_07_d08_wires05', + [953039625] = 'ch1_07_d08_wires06', + [-963750273] = 'ch1_07_d08_wires07', + [-1589834787] = 'ch1_07_d08_wires08', + [-1460495244] = 'ch1_07_d08_wires13', + [-1221052161] = 'ch1_07_d08_wires14', + [-522122160] = 'ch1_07_d08_wires15', + [-282548001] = 'ch1_07_d08_wires16', + [-43072149] = 'ch1_07_d08_wires17', + [195387864] = 'ch1_07_d08_wires18', + [943635210] = 'ch1_07_d08_wires19', + [1291769296] = 'ch1_07_dc01', + [-894807767] = 'ch1_07_dc02', + [-588712538] = 'ch1_07_dc03', + [-1373726702] = 'ch1_07_dc04', + [-171980444] = 'ch1_07_dc04b', + [-2084256929] = 'ch1_07_dc06', + [-1778554928] = 'ch1_07_dc07', + [-1213504501] = 'ch1_07_fakeroom0001', + [1894875149] = 'ch1_07_fakeroom002', + [1678894670] = 'ch1_07_fakeroom003', + [1456196546] = 'ch1_07_fakeroom004', + [-1486721878] = 'ch1_07_fakeroom005', + [55214351] = 'ch1_07_g00_rail00', + [1282315094] = 'ch1_07_g00_rail01', + [-2110456094] = 'ch1_07_g00_rail02', + [-559630396] = 'ch1_07_g00_rail03', + [-865135783] = 'ch1_07_g00_rail04', + [958000301] = 'ch1_07_g00_rail05', + [652953680] = 'ch1_07_g00_rail06', + [32341585] = 'ch1_07_g00_rail07', + [-266151236] = 'ch1_07_g00_rail08', + [-562448534] = 'ch1_07_g00_rail09', + [-1549976026] = 'ch1_07_g00_rail10', + [-450576080] = 'ch1_07_g00_rail11', + [-485442296] = 'ch1_07_g00_rail12', + [-1983935897] = 'ch1_07_g00_rail13', + [-133863695] = 'ch1_07_g00_rail14', + [777671582] = 'ch1_07_g00_rail15', + [205000538] = 'ch1_07_g00_rail16', + [-829123568] = 'ch1_07_g00_rail17', + [1019146343] = 'ch1_07_g00_rail18', + [1990452268] = 'ch1_07_g00_rail19', + [-1276749016] = 'ch1_07_g00_rail20', + [1838075510] = 'ch1_07_g00_rail21', + [-1681151245] = 'ch1_07_g00_rail22', + [-576147800] = 'ch1_07_g00_rail23', + [-881915339] = 'ch1_07_g00_rail24', + [-1171789913] = 'ch1_07_g00_rail25', + [-1476312230] = 'ch1_07_g00_rail26', + [242257979] = 'ch1_07_g00_rail27', + [1152056495] = 'ch1_07_g00_rail28', + [-83760806] = 'ch1_07_g00_rail29', + [-413417790] = 'ch1_07_g00_rail30', + [444933400] = 'ch1_07_g00_rail31', + [147620263] = 'ch1_07_g00_rail32', + [-1474454726] = 'ch1_07_g00_wires00', + [632919652] = 'ch1_07_g00_wires01', + [1408791265] = 'ch1_07_g00_wires02', + [1122422974] = 'ch1_07_g00_wires03', + [-518189780] = 'ch1_07_g00_wires04', + [1617660875] = 'ch1_07_g00_wires05', + [-1909069985] = 'ch1_07_g00_wires06', + [2063483120] = 'ch1_07_g00_wires07', + [952286326] = 'ch1_07_g00_wires08', + [-1186775687] = 'ch1_07_g00_wires09', + [-962274400] = 'ch1_07_g00_wires10', + [712942374] = 'ch1_07_g00_wires11', + [483919833] = 'ch1_07_g00_wires12', + [235006509] = 'ch1_07_g00_wires13', + [4607670] = 'ch1_07_g00_wires14', + [-1061925009] = 'ch1_07_g00_wires15', + [-849024816] = 'ch1_07_g00_wires16', + [-592115836] = 'ch1_07_g00_wires17', + [-361323769] = 'ch1_07_g00_wires18', + [-2021335791] = 'ch1_07_g00_wires19', + [1111472920] = 'ch1_07_g00_wires20', + [1216464796] = 'ch1_07_g00_wires21', + [1551101824] = 'ch1_07_g00_wires22', + [-354644909] = 'ch1_07_g00_wires23', + [-114677522] = 'ch1_07_g00_wires24', + [527070574] = 'ch1_07_g00_wires25', + [-1374580086] = 'ch1_07_g00_wires26', + [-1098075264] = 'ch1_07_g00_wires27', + [-925906938] = 'ch1_07_g00_wires28', + [-618042183] = 'ch1_07_g00_wires29', + [1503791148] = 'ch1_07_g00_wires30', + [-1942426279] = 'ch1_07_g00_wires31', + [2092519002] = 'ch1_07_g00_wires32', + [504467720] = 'ch1_07_g00_wires33', + [1362982751] = 'ch1_07_g00_wires34', + [1132944371] = 'ch1_07_g00_wires35', + [791294785] = 'ch1_07_g00_wires36', + [553621228] = 'ch1_07_g00_wires37', + [1403452474] = 'ch1_07_g00_wires38', + [1165320151] = 'ch1_07_g00_wires39', + [-1492188603] = 'ch1_07_g00_wires40', + [523909428] = 'ch1_07_glue_01', + [288070935] = 'ch1_07_glue_02', + [1946247873] = 'ch1_07_glue_03', + [1707066942] = 'ch1_07_glue_04', + [1486728186] = 'ch1_07_glue_05', + [1244729121] = 'ch1_07_glue_06', + [1488235564] = 'ch1_07_glue_07', + [1189611667] = 'ch1_07_glue_08', + [-12654764] = 'ch1_07_groundcentre', + [-445329336] = 'ch1_07_korizbarrier01', + [-1631403291] = 'ch1_07_korizbarrier02', + [-1257967767] = 'ch1_07_korizbarrier03', + [1448105283] = 'ch1_07_ladder003', + [-1291449668] = 'ch1_07_ladder2', + [351831751] = 'ch1_07_maze_01', + [1179052387] = 'ch1_07_maze_02', + [-931107368] = 'ch1_07_maze_03', + [-2033031443] = 'ch1_07_mazebase', + [-201016987] = 'ch1_07_mazedtl01', + [-96287263] = 'ch1_07_mazedtl02', + [127951004] = 'ch1_07_mazedtl03', + [519409478] = 'ch1_07_mazedtl04', + [-1193229562] = 'ch1_07_mazedtl05', + [-944086855] = 'ch1_07_mazedtl06', + [-579695571] = 'ch1_07_mazedtl07', + [-334026378] = 'ch1_07_mazedtl08', + [-2102045008] = 'ch1_07_mazedtl09', + [-1815252080] = 'ch1_07_mazedtl10', + [-1444095465] = 'ch1_07_rooffiz', + [-1724339852] = 'ch1_07_sculpture_01', + [-1485978146] = 'ch1_07_sculpture_02', + [-1260887885] = 'ch1_07_sculpture_03', + [1410965303] = 'ch1_07_sculpture_04', + [1649097626] = 'ch1_07_sculpture_05', + [1873958504] = 'ch1_07_sculpture_06', + [2111894213] = 'ch1_07_sculpture_07', + [861693229] = 'ch1_07_shelterfiz007', + [1566488881] = 'ch1_07_shelterfiz008', + [1296177372] = 'ch1_07_shelterfiz009', + [1387785683] = 'ch1_07_shelterfiz01', + [-526939760] = 'ch1_07_shelterfiz02', + [-186732002] = 'ch1_07_shelterfiz03', + [962883060] = 'ch1_07_sign', + [-88434291] = 'ch1_07_signs01', + [1326203439] = 'ch1_07_signs02', + [1630856832] = 'ch1_07_signs03', + [1338327965] = 'ch1_07_signs04', + [1634854646] = 'ch1_07_signs05', + [842500226] = 'ch1_07_signs06', + [1173172205] = 'ch1_07_signs07', + [-1766010485] = 'ch1_07_signs08', + [-1463061080] = 'ch1_07_signs09', + [1877644223] = 'ch1_07_signs10', + [-1657278887] = 'ch1_07_signs11', + [-1974581114] = 'ch1_07_signs12', + [-1180391630] = 'ch1_07_signs13', + [-489227666] = 'ch1_07_signs20', + [-666688647] = 'ch1_07_smallstatues', + [1715676532] = 'ch1_07_smallstatues2', + [-187221232] = 'ch1_07_uplightsupport', + [-337448276] = 'ch1_07_water2', + [1382399916] = 'ch1_07_water3', + [-1023414467] = 'ch1_07_weed_01', + [-1988494282] = 'ch1_07_weed_02', + [-2126010477] = 'ch1_07_windowfiz', + [1713613972] = 'ch1_08_deco01', + [2011731030] = 'ch1_08_deco01b', + [1969965859] = 'ch1_08_deco02', + [-228702965] = 'ch1_08_deco03', + [8184136] = 'ch1_08_deco04', + [382668268] = 'ch1_08_deco05', + [-292244088] = 'ch1_08_land_01', + [895533855] = 'ch1_08_land_02', + [1266806625] = 'ch1_08_land_03', + [1660624535] = 'ch1_08_land_04', + [1832268557] = 'ch1_08_land_05', + [-875613811] = 'ch1_08_props_combo18_01_lod', + [715591630] = 'ch1_08_props_combo24_01_lod', + [898868226] = 'ch1_09__railch1_09_bridge00', + [709463406] = 'ch1_09__railch1_09_bridge01', + [-1946922814] = 'ch1_09__railch1_09_bridge02', + [1728434684] = 'ch1_09_arc_fizz', + [-964412429] = 'ch1_09_arc_hedges_dec', + [-819409238] = 'ch1_09_arc007', + [237455408] = 'ch1_09_bbd_00b', + [-244183622] = 'ch1_09_bbd_012', + [1665626475] = 'ch1_09_bbd_01g', + [9808905] = 'ch1_09_bbd_01h', + [937139099] = 'ch1_09_bbd_02', + [1704326927] = 'ch1_09_bbd_03', + [1405113188] = 'ch1_09_bbd_04', + [2141218] = 'ch1_09_bbd_05', + [1782677490] = 'ch1_09_bbd_06', + [846925926] = 'ch1_09_bbd_07', + [298247631] = 'ch1_09_bbd_07g', + [1152038085] = 'ch1_09_bbd_08', + [-1628149417] = 'ch1_09_bbd_09', + [2024643498] = 'ch1_09_bbd_10', + [-1972682971] = 'ch1_09_bbd_11', + [-733228319] = 'ch1_09_bbd_12', + [-437225942] = 'ch1_09_bbd_13', + [1254146001] = 'ch1_09_bbd_15', + [-1808575819] = 'ch1_09_bbd_16', + [1422111493] = 'ch1_09_bd_02', + [-509580447] = 'ch1_09_bdec_00a', + [-431727013] = 'ch1_09_bdec_01', + [-1721318239] = 'ch1_09_bdec_02', + [966892970] = 'ch1_09_bdec_02g', + [-1429903522] = 'ch1_09_bdec_03', + [-1609510415] = 'ch1_09_bdec_04', + [-348244060] = 'ch1_09_bridge_d', + [-677618863] = 'ch1_09_bridge', + [104387776] = 'ch1_09_d_01', + [336556141] = 'ch1_09_d_02', + [-90772540] = 'ch1_09_decs04', + [448967438] = 'ch1_09_drivedecals', + [269124589] = 'ch1_09_drivedecals2', + [1028078985] = 'ch1_09_gbdec_00', + [-1790415478] = 'ch1_09_gbdec_01', + [1982277237] = 'ch1_09_grassde_01', + [-1763889402] = 'ch1_09_hde_00', + [1776823666] = 'ch1_09_hde_01_lod', + [2141716636] = 'ch1_09_hde_01', + [1688684636] = 'ch1_09_hde_011', + [-1538405913] = 'ch1_09_hde_03', + [1545714064] = 'ch1_09_hde_04', + [1309875571] = 'ch1_09_hde_05', + [1922852485] = 'ch1_09_hde_06', + [1819171369] = 'ch1_09_hde_07', + [554484579] = 'ch1_09_hde_08', + [297477312] = 'ch1_09_hde_09', + [920673766] = 'ch1_09_hde_10', + [2043557505] = 'ch1_09_hdec_00', + [-642421004] = 'ch1_09_hdec_003', + [1738838574] = 'ch1_09_hdec_01', + [358149528] = 'ch1_09_hdec_02', + [-695417099] = 'ch1_09_hillhousedecals', + [150399090] = 'ch1_09_house_decals', + [-1109696234] = 'ch1_09_land_01', + [975101711] = 'ch1_09_land_01b', + [1038672175] = 'ch1_09_land_02', + [-789208005] = 'ch1_09_land_03_dec', + [806569348] = 'ch1_09_land_03', + [-363742718] = 'ch1_09_land_04', + [1683070643] = 'ch1_09_land004', + [-520414221] = 'ch1_09_mdhs_frnt_dec', + [-536510849] = 'ch1_09_missionculvert_sh', + [-62932174] = 'ch1_09_missionculvert', + [586850839] = 'ch1_09_modernhouse_awning', + [-1738020721] = 'ch1_09_modernhouse_fence00', + [-1975956430] = 'ch1_09_modernhouse_fence01', + [1035383594] = 'ch1_09_modernhouse_fence02', + [-1365389638] = 'ch1_09_modernhouse', + [273323424] = 'ch1_09_modernhousedriveblend', + [-1125779827] = 'ch1_09_ndex_00', + [-1666927085] = 'ch1_09_ndex_02', + [-1888379987] = 'ch1_09_ndex_03', + [-1064337944] = 'ch1_09_ndex_04', + [-1565572568] = 'ch1_09_ndex_05', + [-682513556] = 'ch1_09_ndex_06', + [-913502237] = 'ch1_09_ndex_07', + [-127472234] = 'ch1_09_ndex_08', + [437072098] = 'ch1_09_ndex_09', + [1563932178] = 'ch1_09_ndex_10', + [-1326293626] = 'ch1_09_ndex_11', + [1992524671] = 'ch1_09_pool', + [1034680781] = 'ch1_09_water_shallow', + [1815461770] = 'ch1_09_water', + [1166314732] = 'ch1_09_water2b', + [1088747014] = 'ch1_09b_creek_01', + [330996658] = 'ch1_09b_creek_02', + [1301789231] = 'ch1_09b_creekrcks_01', + [1608408764] = 'ch1_09b_creekrcks_02', + [-733129595] = 'ch1_09b_creekrcksl3', + [-442566872] = 'ch1_09b_creekrcksl4', + [1862273516] = 'ch1_09b_creekrcksl5', + [162615860] = 'ch1_09b_crkwater_01_lod', + [18419236] = 'ch1_09b_crkwater_01', + [417650468] = 'ch1_09b_crkwater_02_lod', + [352007656] = 'ch1_09b_crkwater_02', + [1322901303] = 'ch1_09b_culvert01_shadow', + [1781197499] = 'ch1_09b_culvert01', + [-2098152289] = 'ch1_09b_culvert02_shadow', + [1601099075] = 'ch1_09b_culvert02', + [326522724] = 'ch1_09b_culvert03_shadow', + [1302344102] = 'ch1_09b_culvert03', + [-1856598850] = 'ch1_09b_glue_02', + [1737013539] = 'ch1_09b_glue_03', + [1846036002] = 'ch1_09b_glue_05', + [2084496015] = 'ch1_09b_glue_06', + [468829784] = 'ch1_09b_land0_new', + [-51457607] = 'ch1_09b_land04a_new', + [-586302091] = 'ch1_09b_land04b_new', + [806447346] = 'ch1_09b_ovrly_07', + [110237172] = 'ch1_09b_ovrly_09', + [880112334] = 'ch1_09b_ovrly_10', + [-1025798248] = 'ch1_09b_ovrly_11', + [440974965] = 'ch1_09b_ovrly_12', + [678845136] = 'ch1_09b_ovrly_13', + [1535688948] = 'ch1_09b_ovrly_14', + [838103801] = 'ch1_09b_ovrly_15a', + [1337175675] = 'ch1_09b_ovrly_15b', + [1091963919] = 'ch1_09b_ovrly_16', + [1334290674] = 'ch1_09b_ovrly_17', + [-1497475230] = 'ch1_09b_ovrly_18', + [-1257442305] = 'ch1_09b_ovrly_19', + [-686737061] = 'ch1_09b_ovrly_20', + [-919233116] = 'ch1_09b_ovrly_21', + [847933520] = 'ch1_09b_ovrly_22', + [621008195] = 'ch1_09b_ovrly_23', + [1119064106] = 'ch1_09b_ovrly_25', + [-1184596594] = 'ch1_09b_ovrly_26', + [2030619493] = 'ch1_09b_rdbrg_01_shadow', + [1965865816] = 'ch1_09b_rdbrg_01', + [1723123789] = 'ch1_09b_roadbrdg_02_shadow', + [774131857] = 'ch1_09b_roadbrdg_02', + [-165659810] = 'ch1_09b_roadbrdg_03_shadow', + [-1812063169] = 'ch1_09b_roadbrdg_03', + [1171314616] = 'ch1_09b_roadbrdg_decal', + [-1955279094] = 'ch1_09b_rock01', + [-1948332146] = 'ch1_09b_rock02', + [-1698422586] = 'ch1_09b_rock05_b', + [842263295] = 'ch1_09b_rockinsrt_01', + [-115935034] = 'ch1_09b_rockinsrt_02', + [1276855729] = 'ch1_09b_rockinsrt_03_lod', + [-346989253] = 'ch1_09b_rockinsrt_03', + [912778345] = 'ch1_09b_rockinsrt_04_lod', + [-1913609621] = 'ch1_09b_rockinsrt_04', + [-111858575] = 'ch1_09b_rockinsrt_06_lod', + [1191318671] = 'ch1_09b_rockinsrt_06', + [-1539191027] = 'ch1_09b_rockinsrt_07', + [-709479947] = 'ch1_09b_rockinsrt_08', + [1924929910] = 'ch1_09b_shacks_d', + [-1155156225] = 'ch1_09b_shacks_smoke', + [-672623719] = 'ch1_09b_shacks', + [596929227] = 'ch1_09b_td_00', + [-121301715] = 'ch1_09b_td_01', + [114143550] = 'ch1_09b_td_02', + [-587506278] = 'ch1_09b_td_03', + [-358024971] = 'ch1_09b_td_04', + [-241432845] = 'ch1_09b_td_05', + [-11623848] = 'ch1_09b_td_06', + [-704622660] = 'ch1_09b_td_07', + [-475272429] = 'ch1_09b_td_08', + [-1201367931] = 'ch1_09b_td_09', + [-1905931644] = 'ch1_09b_td_10', + [-1307831852] = 'ch1_09b_td_11', + [-1011436247] = 'ch1_09b_td_12', + [-712517429] = 'ch1_09b_td_13', + [-414352298] = 'ch1_09b_td_14', + [551186287] = 'ch1_09b_td_15', + [1144665626] = 'ch1_09b_td_17', + [1726872449] = 'ch1_09b_td_19', + [-1538132164] = 'ch1_09b_td_20', + [-1765015529] = 'ch1_09b_vine_slod_00', + [-1490771768] = 'ch1_09b_vine_slod_01', + [2054080349] = 'ch1_09b_vine_slod_02', + [1685625713] = 'ch1_09b_vine_slod_03', + [1991655404] = 'ch1_09b_vine_slod_04', + [1646466754] = 'ch1_09b_vine_slod_05', + [1837116796] = 'ch1_09b_vine_slod_06', + [920305710] = 'ch1_09b_vine_slod_07', + [1292134056] = 'ch1_09b_vinegrapes_01', + [650385960] = 'ch1_09b_vinegrapes_02', + [-1506830095] = 'ch1_09b_vinegrapes_03', + [-1183432834] = 'ch1_09b_vinegrapes_04', + [-2103586342] = 'ch1_09b_vinegrapes_05', + [-1806338743] = 'ch1_09b_vinegrapes_06', + [-551613745] = 'ch1_09b_vinegrapes_07', + [-361750159] = 'ch1_09b_vinegrapes_08', + [-1153875196] = 'ch1_09b_vinegrapes_09', + [-1989517073] = 'ch1_09b_vinegrapes_10', + [2074441309] = 'ch1_09b_vinegrapes_100', + [-775118162] = 'ch1_09b_vinegrapes_101', + [679452443] = 'ch1_09b_vinegrapes_11', + [920992742] = 'ch1_09b_vinegrapes_12', + [1140086276] = 'ch1_09b_vinegrapes_13', + [1379857049] = 'ch1_09b_vinegrapes_14', + [-334125496] = 'ch1_09b_vinegrapes_15', + [-93306115] = 'ch1_09b_vinegrapes_16', + [161014094] = 'ch1_09b_vinegrapes_17', + [938360316] = 'ch1_09b_vinegrapes_18', + [-1256933305] = 'ch1_09b_vinegrapes_19', + [96588500] = 'ch1_09b_vinegrapes_20', + [1294852539] = 'ch1_09b_vinegrapes_21', + [-550664788] = 'ch1_09b_vinegrapes_22', + [-1598879548] = 'ch1_09b_vinegrapes_23', + [-1272402001] = 'ch1_09b_vinegrapes_24', + [-169594075] = 'ch1_09b_vinegrapes_25', + [127063682] = 'ch1_09b_vinegrapes_26', + [1769577042] = 'ch1_09b_vinegrapes_27', + [2071019073] = 'ch1_09b_vinegrapes_28', + [-1019458090] = 'ch1_09b_vinegrapes_29', + [882814849] = 'ch1_09b_vinegrapes_30', + [-1297601642] = 'ch1_09b_vinegrapes_31', + [-1470032120] = 'ch1_09b_vinegrapes_32', + [373125823] = 'ch1_09b_vinegrapes_33', + [197090755] = 'ch1_09b_vinegrapes_34', + [1767938308] = 'ch1_09b_vinegrapes_35', + [-1087224666] = 'ch1_09b_vinegrapes_36', + [-1392533439] = 'ch1_09b_vinegrapes_37', + [-1629682692] = 'ch1_09b_vinegrapes_38', + [603131434] = 'ch1_09b_vinegrapes_39', + [-1984251748] = 'ch1_09b_vinegrapes_40', + [-593371543] = 'ch1_09b_vinegrapes_41', + [-550902919] = 'ch1_09b_vinegrapes_42', + [1037443304] = 'ch1_09b_vinegrapes_43', + [-1826501762] = 'ch1_09b_vinegrapes_44', + [-1573623389] = 'ch1_09b_vinegrapes_45', + [1936886816] = 'ch1_09b_vinegrapes_46', + [120370046] = 'ch1_09b_vinegrapes_47', + [1474745609] = 'ch1_09b_vinegrapes_48', + [1796012885] = 'ch1_09b_vinegrapes_49', + [-1119773039] = 'ch1_09b_vinegrapes_50', + [1043243117] = 'ch1_09b_vinegrapes_51', + [-1880833064] = 'ch1_09b_vinegrapes_52', + [-1561466390] = 'ch1_09b_vinegrapes_53', + [1958219135] = 'ch1_09b_vinegrapes_54', + [1432637132] = 'ch1_09b_vinegrapes_55', + [1721200946] = 'ch1_09b_vinegrapes_56', + [971413457] = 'ch1_09b_vinegrapes_57', + [1260698189] = 'ch1_09b_vinegrapes_58', + [-876856442] = 'ch1_09b_vinegrapes_59', + [1007532751] = 'ch1_09b_vinegrapes_60', + [-449475296] = 'ch1_09b_vinegrapes_61', + [258531718] = 'ch1_09b_vinegrapes_62', + [-486504270] = 'ch1_09b_vinegrapes_63', + [351562905] = 'ch1_09b_vinegrapes_64', + [-634849533] = 'ch1_09b_vinegrapes_65', + [-203871645] = 'ch1_09b_vinegrapes_66', + [-1142736264] = 'ch1_09b_vinegrapes_67', + [-1376215389] = 'ch1_09b_vinegrapes_68', + [-1892589291] = 'ch1_09b_vinegrapes_69', + [978400870] = 'ch1_09b_vinegrapes_70', + [-768154061] = 'ch1_09b_vinegrapes_71', + [-1006843457] = 'ch1_09b_vinegrapes_72', + [230219062] = 'ch1_09b_vinegrapes_73', + [-697995636] = 'ch1_09b_vinegrapes_77', + [-928492782] = 'ch1_09b_vinegrapes_78', + [1612841479] = 'ch1_09b_vinegrapes_79', + [1689849489] = 'ch1_09b_vinegrapes_80', + [-1445586742] = 'ch1_09b_vinegrapes_81', + [-677546920] = 'ch1_09b_vinegrapes_82', + [-1879808765] = 'ch1_09b_vinegrapes_83', + [2110832828] = 'ch1_09b_vinegrapes_84', + [1920903704] = 'ch1_09b_vinegrapes_85', + [1644693803] = 'ch1_09b_vinegrapes_86', + [1495857005] = 'ch1_09b_vinegrapes_87', + [1197691874] = 'ch1_09b_vinegrapes_88', + [1014840854] = 'ch1_09b_vinegrapes_89', + [-1324472814] = 'ch1_09b_vinegrapes_90', + [1257724390] = 'ch1_09b_vinegrapes_91', + [1555692907] = 'ch1_09b_vinegrapes_92', + [1703513866] = 'ch1_09b_vinegrapes_93', + [2017899652] = 'ch1_09b_vinegrapes_94', + [822912525] = 'ch1_09b_vinegrapes_95', + [67259385] = 'ch1_09b_vinegrapes_96', + [1298423484] = 'ch1_09b_vinegrapes_97', + [518848974] = 'ch1_09b_vinegrapes_98', + [-133221357] = 'ch1_09b_vinegrapes_99', + [-1992857993] = 'ch1_09b_vineland01', + [1542786035] = 'ch1_09b_vineland02', + [812693694] = 'ch1_09b_vines_01', + [1109416989] = 'ch1_09b_vines_02', + [1994376631] = 'ch1_09b_vines_03', + [1661967895] = 'ch1_09b_vines_04', + [-780272910] = 'ch1_09b_vines_05', + [-1047471336] = 'ch1_09b_vines_06', + [1033753392] = 'ch1_09b_vines_07', + [726118020] = 'ch1_09b_vines_08', + [420088329] = 'ch1_09b_vines_09', + [-1589831343] = 'ch1_09b_vines_10', + [1774963925] = 'ch1_09b_vines_100', + [2064478040] = 'ch1_09b_vines_101', + [252245219] = 'ch1_09b_vines_11', + [-54112162] = 'ch1_09b_vines_12', + [-2085724620] = 'ch1_09b_vines_13', + [1902426529] = 'ch1_09b_vines_14', + [1586861059] = 'ch1_09b_vines_15', + [-854593290] = 'ch1_09b_vines_16', + [1012584330] = 'ch1_09b_vines_17', + [648848430] = 'ch1_09b_vines_18', + [398460501] = 'ch1_09b_vines_19', + [600777151] = 'ch1_09b_vines_20', + [-1842676099] = 'ch1_09b_vines_21', + [1617500922] = 'ch1_09b_vines_22', + [-560982206] = 'ch1_09b_vines_23', + [-370659854] = 'ch1_09b_vines_24', + [980635399] = 'ch1_09b_vines_25', + [1164731641] = 'ch1_09b_vines_26', + [-1528257544] = 'ch1_09b_vines_27', + [314277788] = 'ch1_09b_vines_28', + [-544630471] = 'ch1_09b_vines_29', + [553851655] = 'ch1_09b_vines_30', + [-1897597231] = 'ch1_09b_vines_31', + [2092061292] = 'ch1_09b_vines_32', + [-386323724] = 'ch1_09b_vines_33', + [-667186823] = 'ch1_09b_vines_34', + [1182754303] = 'ch1_09b_vines_35', + [867745906] = 'ch1_09b_vines_36', + [-1613784922] = 'ch1_09b_vines_37', + [252081938] = 'ch1_09b_vines_38', + [-45886579] = 'ch1_09b_vines_39', + [1287437570] = 'ch1_09b_vines_40', + [456055271] = 'ch1_09b_vines_41', + [-184709755] = 'ch1_09b_vines_42', + [1387251956] = 'ch1_09b_vines_43', + [1744434056] = 'ch1_09b_vines_44', + [1028365868] = 'ch1_09b_vines_45', + [1265711735] = 'ch1_09b_vines_46', + [-1867856671] = 'ch1_09b_vines_47', + [-1637261218] = 'ch1_09b_vines_48', + [1964445114] = 'ch1_09b_vines_49', + [1404947492] = 'ch1_09b_vines_50', + [49457807] = 'ch1_09b_vines_51', + [674362637] = 'ch1_09b_vines_52', + [1189917326] = 'ch1_09b_vines_53', + [1017552386] = 'ch1_09b_vines_54', + [1616831858] = 'ch1_09b_vines_55', + [1361397503] = 'ch1_09b_vines_56', + [-733131451] = 'ch1_09b_vines_57', + [-2104350256] = 'ch1_09b_vines_58', + [-1461684628] = 'ch1_09b_vines_59', + [-1508933710] = 'ch1_09b_vines_60', + [1482417224] = 'ch1_09b_vines_61', + [-2105919352] = 'ch1_09b_vines_62', + [-1394471593] = 'ch1_09b_vines_63', + [-686202427] = 'ch1_09b_vines_64', + [-1845274726] = 'ch1_09b_vines_65', + [-1152013762] = 'ch1_09b_vines_66', + [638287756] = 'ch1_09b_vines_67', + [-279440858] = 'ch1_09b_vines_68', + [946480201] = 'ch1_09b_vines_69', + [-1604291212] = 'ch1_09b_vines_70', + [837851282] = 'ch1_09b_vines_71', + [1137130559] = 'ch1_09b_vines_72', + [-650352853] = 'ch1_09b_vines_73', + [-1309861747] = 'ch1_09b_vines_74', + [124306307] = 'ch1_09b_vines_77', + [422995742] = 'ch1_09b_vines_78', + [-529238617] = 'ch1_09b_vines_79', + [1446403505] = 'ch1_09b_vines_80', + [242372138] = 'ch1_09b_vines_81', + [481684145] = 'ch1_09b_vines_82', + [839849319] = 'ch1_09b_vines_83', + [1120384728] = 'ch1_09b_vines_84', + [-126049725] = 'ch1_09b_vines_85', + [256888809] = 'ch1_09b_vines_86', + [1800833017] = 'ch1_09b_vines_87', + [2028282646] = 'ch1_09b_vines_88', + [1437850800] = 'ch1_09b_vines_89', + [880089935] = 'ch1_09b_vines_90', + [572782253] = 'ch1_09b_vines_91', + [266162720] = 'ch1_09b_vines_92', + [1325748331] = 'ch1_09b_vines_93', + [-2067940385] = 'ch1_09b_vines_94', + [842929885] = 'ch1_09b_vines_95', + [1609822792] = 'ch1_09b_vines_96', + [-1207754135] = 'ch1_09b_vines_97', + [-1380381227] = 'ch1_09b_vines_98', + [1930565768] = 'ch1_09b_vines_99', + [2032203707] = 'ch1_09b_vinesleaf_01', + [1188696878] = 'ch1_09b_vinesleaf_02', + [1552105088] = 'ch1_09b_vinesleaf_03', + [-1437181403] = 'ch1_09b_vinesleaf_04', + [-1345690355] = 'ch1_09b_vinesleaf_05', + [-2138077544] = 'ch1_09b_vinesleaf_06', + [-1816220426] = 'ch1_09b_vinesleaf_07', + [-503461517] = 'ch1_09b_vinesleaf_08', + [-247175168] = 'ch1_09b_vinesleaf_09', + [2037348656] = 'ch1_09b_vinesleaf_10', + [145021609] = 'ch1_09b_vinesleaf_100', + [-92389796] = 'ch1_09b_vinesleaf_101', + [1347430130] = 'ch1_09b_vinesleaf_11', + [1040024141] = 'ch1_09b_vinesleaf_12', + [1830248584] = 'ch1_09b_vinesleaf_13', + [1654672282] = 'ch1_09b_vinesleaf_14', + [1357555759] = 'ch1_09b_vinesleaf_15', + [1193579683] = 'ch1_09b_vinesleaf_16', + [-1249447578] = 'ch1_09b_vinesleaf_17', + [-1412833812] = 'ch1_09b_vinesleaf_18', + [-1700775015] = 'ch1_09b_vinesleaf_19', + [365179715] = 'ch1_09b_vinesleaf_20', + [1888807139] = 'ch1_09b_vinesleaf_21', + [1659522446] = 'ch1_09b_vinesleaf_22', + [1291657652] = 'ch1_09b_vinesleaf_23', + [1052214569] = 'ch1_09b_vinesleaf_24', + [-1349327138] = 'ch1_09b_vinesleaf_25', + [-1722172820] = 'ch1_09b_vinesleaf_26', + [-1951981817] = 'ch1_09b_vinesleaf_27', + [-195694493] = 'ch1_09b_vinesleaf_28', + [-427141940] = 'ch1_09b_vinesleaf_29', + [317770156] = 'ch1_09b_vinesleaf_30', + [1531894375] = 'ch1_09b_vinesleaf_31', + [1837203148] = 'ch1_09b_vinesleaf_32', + [913510616] = 'ch1_09b_vinesleaf_33', + [1239594935] = 'ch1_09b_vinesleaf_34', + [1401408257] = 'ch1_09b_vinesleaf_35', + [1703964434] = 'ch1_09b_vinesleaf_36', + [1870299878] = 'ch1_09b_vinesleaf_37', + [-2127288743] = 'ch1_09b_vinesleaf_38', + [-928697022] = 'ch1_09b_vinesleaf_39', + [849637175] = 'ch1_09b_vinesleaf_40', + [-1255705541] = 'ch1_09b_vinesleaf_41', + [-1428332633] = 'ch1_09b_vinesleaf_42', + [-1719026432] = 'ch1_09b_vinesleaf_43', + [-347512702] = 'ch1_09b_vinesleaf_44', + [1844700629] = 'ch1_09b_vinesleaf_45', + [1605749081] = 'ch1_09b_vinesleaf_46', + [1383083726] = 'ch1_09b_vinesleaf_47', + [1143542336] = 'ch1_09b_vinesleaf_48', + [-1335760288] = 'ch1_09b_vinesleaf_49', + [170827604] = 'ch1_09b_vinesleaf_50', + [182034602] = 'ch1_09b_vinesleaf_51', + [1559348445] = 'ch1_09b_vinesleaf_52', + [-202018078] = 'ch1_09b_vinesleaf_53', + [-1017867871] = 'ch1_09b_vinesleaf_54', + [-669861091] = 'ch1_09b_vinesleaf_55', + [701095562] = 'ch1_09b_vinesleaf_56', + [-1463853965] = 'ch1_09b_vinesleaf_57', + [-1403559005] = 'ch1_09b_vinesleaf_58', + [2104001990] = 'ch1_09b_vinesleaf_59', + [-1232340596] = 'ch1_09b_vinesleaf_60', + [422461135] = 'ch1_09b_vinesleaf_61', + [-409248854] = 'ch1_09b_vinesleaf_62', + [-1112733746] = 'ch1_09b_vinesleaf_63', + [-907042733] = 'ch1_09b_vinesleaf_64', + [1311877337] = 'ch1_09b_vinesleaf_65', + [609637663] = 'ch1_09b_vinesleaf_66', + [886896172] = 'ch1_09b_vinesleaf_67', + [52105897] = 'ch1_09b_vinesleaf_68', + [1469397768] = 'ch1_09b_vinesleaf_69', + [-2043834220] = 'ch1_09b_vinesleaf_70', + [-1717618825] = 'ch1_09b_vinesleaf_71', + [891776645] = 'ch1_09b_vinesleaf_72', + [116724257] = 'ch1_09b_vinesleaf_73', + [-758404657] = 'ch1_09b_vinesleaf_74', + [1308532787] = 'ch1_09b_vinesleaf_77', + [432060344] = 'ch1_09b_vinesleaf_78', + [1809210338] = 'ch1_09b_vinesleaf_79', + [2264728] = 'ch1_09b_vinesleaf_80', + [-304289267] = 'ch1_09b_vinesleaf_81', + [1426831465] = 'ch1_09b_vinesleaf_82', + [774793995] = 'ch1_09b_vinesleaf_83', + [534433380] = 'ch1_09b_vinesleaf_84', + [160473552] = 'ch1_09b_vinesleaf_85', + [-1813662180] = 'ch1_09b_vinesleaf_86', + [-2112351615] = 'ch1_09b_vinesleaf_87', + [2020802359] = 'ch1_09b_vinesleaf_88', + [1723620298] = 'ch1_09b_vinesleaf_89', + [-1084322231] = 'ch1_09b_vinesleaf_90', + [-1362957042] = 'ch1_09b_vinesleaf_91', + [-774196483] = 'ch1_09b_vinesleaf_92', + [-480291322] = 'ch1_09b_vinesleaf_93', + [-24212380] = 'ch1_09b_vinesleaf_94', + [156344810] = 'ch1_09b_vinesleaf_95', + [-2002313069] = 'ch1_09b_vinesleaf_96', + [-1702509488] = 'ch1_09b_vinesleaf_97', + [-1235944466] = 'ch1_09b_vinesleaf_98', + [-938959015] = 'ch1_09b_vinesleaf_99', + [567217965] = 'ch1_09b_vineslmbs_01', + [1268081337] = 'ch1_09b_vineslmbs_02', + [-1297764136] = 'ch1_09b_vineslmbs_03', + [-1609790554] = 'ch1_09b_vineslmbs_04', + [381942039] = 'ch1_09b_vineslmbs_05', + [142433418] = 'ch1_09b_vineslmbs_06', + [1655509224] = 'ch1_09b_vineslmbs_07', + [-1805126563] = 'ch1_09b_vineslmbs_08', + [-967223233] = 'ch1_09b_vineslmbs_09', + [-971121840] = 'ch1_09b_vineslmbs_10', + [1333299022] = 'ch1_09b_vineslmbs_100', + [1572021187] = 'ch1_09b_vineslmbs_101', + [-17183477] = 'ch1_09b_vineslmbs_11', + [-522219305] = 'ch1_09b_vineslmbs_12', + [-1990893120] = 'ch1_09b_vineslmbs_13', + [2066531695] = 'ch1_09b_vineslmbs_14', + [-1207288023] = 'ch1_09b_vineslmbs_15', + [459539867] = 'ch1_09b_vineslmbs_17', + [760293749] = 'ch1_09b_vineslmbs_18', + [99572402] = 'ch1_09b_vineslmbs_19', + [1158862852] = 'ch1_09b_vineslmbs_20', + [2009120083] = 'ch1_09b_vineslmbs_21', + [-1980243519] = 'ch1_09b_vineslmbs_22', + [286683148] = 'ch1_09b_vineslmbs_23', + [65590705] = 'ch1_09b_vineslmbs_24', + [901003591] = 'ch1_09b_vineslmbs_25', + [645765850] = 'ch1_09b_vineslmbs_26', + [-1469342028] = 'ch1_09b_vineslmbs_27', + [-1146305226] = 'ch1_09b_vineslmbs_28', + [-304600688] = 'ch1_09b_vineslmbs_29', + [441349028] = 'ch1_09b_vineslmbs_30', + [881829926] = 'ch1_09b_vineslmbs_31', + [1120715936] = 'ch1_09b_vineslmbs_32', + [-40158650] = 'ch1_09b_vineslmbs_33', + [200955652] = 'ch1_09b_vineslmbs_34', + [649825414] = 'ch1_09b_vineslmbs_35', + [880617481] = 'ch1_09b_vineslmbs_36', + [-1259886384] = 'ch1_09b_vineslmbs_37', + [-1026767718] = 'ch1_09b_vineslmbs_38', + [-772054281] = 'ch1_09b_vineslmbs_39', + [529431884] = 'ch1_09b_vineslmbs_40', + [747083582] = 'ch1_09b_vineslmbs_41', + [984232835] = 'ch1_09b_vineslmbs_42', + [-1189892024] = 'ch1_09b_vineslmbs_43', + [-924921890] = 'ch1_09b_vineslmbs_44', + [-692163683] = 'ch1_09b_vineslmbs_45', + [-480475927] = 'ch1_09b_vineslmbs_46', + [1649935058] = 'ch1_09b_vineslmbs_47', + [-1869127856] = 'ch1_09b_vineslmbs_48', + [-1614479957] = 'ch1_09b_vineslmbs_49', + [826188752] = 'ch1_09b_vineslmbs_50', + [236019062] = 'ch1_09b_vineslmbs_51', + [460650557] = 'ch1_09b_vineslmbs_52', + [2021503565] = 'ch1_09b_vineslmbs_53', + [-2009312822] = 'ch1_09b_vineslmbs_54', + [1154927360] = 'ch1_09b_vineslmbs_55', + [1796544380] = 'ch1_09b_vineslmbs_56', + [-1321655357] = 'ch1_09b_vineslmbs_57', + [-982365131] = 'ch1_09b_vineslmbs_58', + [-1684244342] = 'ch1_09b_vineslmbs_59', + [-1544578552] = 'ch1_09b_vineslmbs_60', + [-1213218424] = 'ch1_09b_vineslmbs_61', + [-378493683] = 'ch1_09b_vineslmbs_62', + [-610530972] = 'ch1_09b_vineslmbs_63', + [199944705] = 'ch1_09b_vineslmbs_64', + [-29798754] = 'ch1_09b_vineslmbs_65', + [813609768] = 'ch1_09b_vineslmbs_66', + [582227859] = 'ch1_09b_vineslmbs_67', + [1392932919] = 'ch1_09b_vineslmbs_68', + [1161747624] = 'ch1_09b_vineslmbs_69', + [1972781850] = 'ch1_09b_vineslmbs_70', + [1674387336] = 'ch1_09b_vineslmbs_71', + [-803637217] = 'ch1_09b_vineslmbs_72', + [-1170617248] = 'ch1_09b_vineslmbs_73', + [-1474877413] = 'ch1_09b_vineslmbs_74', + [-1724609962] = 'ch1_09b_vineslmbs_75', + [-174669027] = 'ch1_09b_vineslmbs_77', + [-479420727] = 'ch1_09b_vineslmbs_78', + [1343682588] = 'ch1_09b_vineslmbs_79', + [-1130606083] = 'ch1_09b_vineslmbs_80', + [1516604817] = 'ch1_09b_vineslmbs_81', + [1763388156] = 'ch1_09b_vineslmbs_82', + [2008205355] = 'ch1_09b_vineslmbs_83', + [-2040470137] = 'ch1_09b_vineslmbs_84', + [591404871] = 'ch1_09b_vineslmbs_85', + [840023274] = 'ch1_09b_vineslmbs_86', + [1010487612] = 'ch1_09b_vineslmbs_87', + [-624751026] = 'ch1_09b_vineslmbs_88', + [-405100419] = 'ch1_09b_vineslmbs_89', + [-1257029677] = 'ch1_09b_vineslmbs_90', + [-28061097] = 'ch1_09b_vineslmbs_91', + [272266788] = 'ch1_09b_vineslmbs_92', + [-533162463] = 'ch1_09b_vineslmbs_93', + [-336155235] = 'ch1_09b_vineslmbs_94', + [900546825] = 'ch1_09b_vineslmbs_95', + [1200743634] = 'ch1_09b_vineslmbs_96', + [2001650735] = 'ch1_09b_vineslmbs_97', + [633905448] = 'ch1_09b_vineslmbs_98', + [470191524] = 'ch1_09b_vineslmbs_99', + [956299420] = 'ch1_09b_vinetrck_01_lod', + [1498327417] = 'ch1_09b_vinetrck_01', + [-1731036555] = 'ch1_09b_vinetrck_02_lod', + [1813008124] = 'ch1_09b_vinetrck_02', + [-302345382] = 'ch1_09b_vnld01_dec', + [-1044729294] = 'ch1_09b_vnyrd_dec', + [166163626] = 'ch1_09b_vnyrdblg', + [1181626056] = 'ch1_09b_water_vin', + [1915516570] = 'ch1_09b_weed_02', + [1196765228] = 'ch1_10_culdec_01', + [1913675533] = 'ch1_10_culvert02_slod', + [-69887563] = 'ch1_10_culvert02', + [-433301545] = 'ch1_10_dc_029', + [-773331923] = 'ch1_10_dec_00', + [-529104566] = 'ch1_10_dec_01', + [-155931194] = 'ch1_10_dec_02', + [77089165] = 'ch1_10_dec_03', + [-209442983] = 'ch1_10_dec_04', + [4636894] = 'ch1_10_dec_05', + [369683554] = 'ch1_10_dec_06', + [616073681] = 'ch1_10_dec_07', + [951562703] = 'ch1_10_dec_08', + [1223971400] = 'ch1_10_dec_09', + [-1111418028] = 'ch1_10_glb_01', + [-1942229670] = 'ch1_10_glue', + [484690802] = 'ch1_10_glue001', + [194455769] = 'ch1_10_glue002', + [30283079] = 'ch1_10_glue003', + [1838438796] = 'ch1_10_h03dc004', + [690735636] = 'ch1_10_h04dc_06', + [728814705] = 'ch1_10_house04_wall', + [-9682560] = 'ch1_10_house04', + [1374177345] = 'ch1_10_house101', + [1278393558] = 'ch1_10_house102', + [1119570181] = 'ch1_10_house13', + [1305535147] = 'ch1_10_house2drivedecals', + [-1869378058] = 'ch1_10_land_01', + [-1642256119] = 'ch1_10_land_02', + [1810285725] = 'ch1_10_land_03', + [2040225798] = 'ch1_10_land_04', + [975134975] = 'ch1_10_land_05', + [759154496] = 'ch1_10_land_06', + [1603808244] = 'ch1_10_land_07', + [1345129758] = 'ch1_10_land_08', + [50557640] = 'ch1_10_land_09', + [1204979748] = 'ch1_10_lefthserail', + [685702032] = 'ch1_10_midhouse', + [737163879] = 'ch1_10_overpass02_barsa', + [506568426] = 'ch1_10_overpass02_barsb', + [-936323916] = 'ch1_10_overpass02', + [-1036301905] = 'ch1_10_pools', + [18285157] = 'ch1_10_props_l_076', + [1791424442] = 'ch1_10_retwall001', + [1512199793] = 'ch1_10_retwall002', + [-1792923277] = 'ch1_11__11ch1254', + [-980418028] = 'ch1_11__11ch1329', + [-1131022268] = 'ch1_11__11ch1904', + [-1656543151] = 'ch1_11_24-7_crprkdecals', + [-1312703405] = 'ch1_11_24-7_shop01main', + [-102453559] = 'ch1_11_24-7_undergnd', + [-1693922705] = 'ch1_11_bchrks_2', + [-1416868861] = 'ch1_11_bchrks_2a', + [1749574899] = 'ch1_11_bchrks_3', + [1872196497] = 'ch1_11_bchrks_4', + [-69104601] = 'ch1_11_bchrks_5', + [-756581309] = 'ch1_11_blg01_main', + [-2115088922] = 'ch1_11_blg01_stilts_001', + [-1538813180] = 'ch1_11_blg01_stilts_002', + [-625410074] = 'ch1_11_blg01_stilts_003', + [-2107431659] = 'ch1_11_blg01_stilts', + [2042292455] = 'ch1_11_blg02_decals', + [-1686553881] = 'ch1_11_blg02_main', + [2027674467] = 'ch1_11_blg03_decals', + [-468652059] = 'ch1_11_blg03_main', + [-299603091] = 'ch1_11_blg04_decals', + [969970184] = 'ch1_11_blg04_main', + [134855993] = 'ch1_11_blg05_decals', + [1942074108] = 'ch1_11_blg05_stilts', + [-1400334032] = 'ch1_11_blg06_main', + [1833438516] = 'ch1_11_blg06_stilts', + [1852379673] = 'ch1_11_blg07_decals', + [-1097217323] = 'ch1_11_blg07_main_rail', + [-1259589287] = 'ch1_11_blg07_main', + [634471883] = 'ch1_11_blg07stlts', + [1827470136] = 'ch1_11_blgs02_r', + [562935445] = 'ch1_11_blgs02pvmnt', + [-954307629] = 'ch1_11_bridgeshadprox', + [-1291758715] = 'ch1_11_ch1_malpier29', + [924838436] = 'ch1_11_ch1_pier_104', + [-1994000919] = 'ch1_11_ch1_shops21', + [-1704892276] = 'ch1_11_ch1pier_350', + [-38864366] = 'ch1_11_ch1pier_350a', + [2051004802] = 'ch1_11_coastline29', + [1715084521] = 'ch1_11_cornerblend_01', + [-1332332101] = 'ch1_11_curved_rail_01_lod', + [306431989] = 'ch1_11_curved_rail_01', + [-1538512189] = 'ch1_11_decal000_lod', + [665716186] = 'ch1_11_decal000', + [1125393270] = 'ch1_11_foam_01', + [-842188566] = 'ch1_11_foam_02', + [-53243659] = 'ch1_11_hs01_decals', + [-1176062544] = 'ch1_11_ladder_01_lod', + [1032359564] = 'ch1_11_ladder_01', + [364360972] = 'ch1_11_ladder_02_lod', + [1800366617] = 'ch1_11_ladder_02', + [1739602733] = 'ch1_11_ladder_pier_lod', + [1259156095] = 'ch1_11_ladder_pier', + [627261306] = 'ch1_11_land01', + [2074534962] = 'ch1_11_land01b', + [-1007815474] = 'ch1_11_lod00', + [823362327] = 'ch1_11_main_rail01_00', + [594864082] = 'ch1_11_main_rail01_01', + [1799518064] = 'ch1_11_main_rail01_02', + [1560304364] = 'ch1_11_main_rail01_03', + [1320140363] = 'ch1_11_main_rail01_04', + [845448629] = 'ch1_11_main_rail01_05', + [-1272411845] = 'ch1_11_main_rail01_06', + [-1512444770] = 'ch1_11_main_rail01_07', + [-1987464194] = 'ch1_11_main_rail01_08', + [2066487107] = 'ch1_11_main_rail01_09', + [522378766] = 'ch1_11_main_rail01_10', + [819921294] = 'ch1_11_main_rail01_11', + [1118414115] = 'ch1_11_main_rail01_12', + [1424804265] = 'ch1_11_main_rail01_13', + [-99675157] = 'ch1_11_main_rail01_14', + [139178084] = 'ch1_11_main_rail01_15', + [494000816] = 'ch1_11_main_rail01_16', + [2076575242] = 'ch1_11_main_rail0200', + [1294313670] = 'ch1_11_main_rail0201', + [1601785197] = 'ch1_11_main_rail0202', + [840692403] = 'ch1_11_main_rail0203', + [1137481236] = 'ch1_11_main_rail0204', + [-85359537] = 'ch1_11_main_rail0205', + [682614747] = 'ch1_11_main_rail0206', + [-9695912] = 'ch1_11_main_rail0207', + [152248486] = 'ch1_11_main_rail0208', + [-471181743] = 'ch1_11_main_rail0209', + [769877590] = 'ch1_11_main_rail0210', + [1253757276] = 'ch1_11_main_rail03_00', + [1090502118] = 'ch1_11_main_rail03_01', + [784996731] = 'ch1_11_main_rail03_02', + [358868655] = 'ch1_11_main_rail03_03', + [51724818] = 'ch1_11_main_rail03_04', + [-101437488] = 'ch1_11_main_rail03_05', + [82492468] = 'ch1_11_path01', + [2017886232] = 'ch1_11_pier_decals', + [1754720367] = 'ch1_11_pier_endmain01', + [1331475963] = 'ch1_11_pier_endmain02', + [-1849260014] = 'ch1_11_pier_steps', + [1076330640] = 'ch1_11_pier_stilts', + [-1555478668] = 'ch1_11_pierendsupport', + [-1649680846] = 'ch1_11_pierstartsupportb', + [699352511] = 'ch1_11_piersupport_lod_015', + [874403617] = 'ch1_11_piersupport_lod_047', + [492906817] = 'ch1_11_piersupport', + [4028011] = 'ch1_11_piersupport01_lod', + [1527405796] = 'ch1_11_piersupport02_lod', + [-968762450] = 'ch1_11_props_cablemsh101a_thvy', + [-1061845539] = 'ch1_11_props_l_007', + [-833085150] = 'ch1_11_props_l_008', + [-1694320008] = 'ch1_11_props_l_009', + [-412986290] = 'ch1_11_props_l_010', + [1998177463] = 'ch1_11_props_s_011', + [694167873] = 'ch1_11_props_s_012', + [-1170093201] = 'ch1_11_road_side_rail_01', + [-83112698] = 'ch1_11_road_side_rail_02', + [36172687] = 'ch1_11_road_side_rail', + [793291625] = 'ch1_11_roaddrive_decals', + [1957920665] = 'ch1_11_roadfile', + [-556892758] = 'ch1_11_rounded_r', + [475581194] = 'ch1_11_scmall_gun_decals', + [1353702351] = 'ch1_11_scmall_rrgnddcls02', + [-1179216778] = 'ch1_11_scmall_shop01decals', + [-1378714059] = 'ch1_11_scmall_shop02decals', + [-1803158185] = 'ch1_11_scmall_shop05decals', + [1948008214] = 'ch1_11_sea_ch1_11_uw_00', + [-1086139038] = 'ch1_11_sea_ch1_11_uw_01', + [-811567587] = 'ch1_11_sea_ch1_11_uw_02', + [841300765] = 'ch1_11_sea_ch1_11_uw_03', + [1149099982] = 'ch1_11_sea_ch1_11_uw_04', + [-1915063662] = 'ch1_11_sea_ch1_11_uw_05', + [1762516256] = 'ch1_11_sea_ch1_11_uw_06_lod', + [536942293] = 'ch1_11_sea_ch1_11_uw_06', + [-268004453] = 'ch1_11_sea_ch1_11_uw_07_lod', + [-376722965] = 'ch1_11_sea_ch1_11_uw_07', + [-1907207170] = 'ch1_11_sea_ch1_11_uw_dec_00', + [1250872452] = 'ch1_11_sea_ch1_11_uw_dec_01', + [954607923] = 'ch1_11_sea_ch1_11_uw_dec_02', + [-211673556] = 'ch1_11_sea_ch1_11_uw_dec_03', + [1462691268] = 'ch1_11_sea_ch1_11_uw_dec_04', + [268556139] = 'ch1_11_sea_ch1_11_uw_dec_05', + [-1827893060] = 'ch1_11_shp02_blg01', + [-1336226984] = 'ch1_11_shp02_blg02', + [1655484413] = 'ch1_11_shp02_blg03', + [1813627611] = 'ch1_11_shp02_blg04', + [1112566496] = 'ch1_11_shp02_crpk', + [1063314321] = 'ch1_11_shps01_crpk', + [-1415871901] = 'ch1_11_signsup', + [-2084454463] = 'ch1_11_small_curved', + [-1878437924] = 'ch1_11_stair_rail_00', + [-985122215] = 'ch1_11_stair_rail_01', + [-1283057963] = 'ch1_11_stair_rail_02', + [-354286192] = 'ch1_11_stair_rail_03', + [-667525067] = 'ch1_11_stair_rail_04', + [241159307] = 'ch1_11_stair_rail_05', + [-1883749163] = 'ch1_11_stair_rail_lod_02', + [890862219] = 'ch1_11_tattoo_e_dummy', + [438140813] = 'ch1_11_tattoo_emmisive', + [-281202665] = 'ch1_12_247_emissive_dummy', + [1651997636] = 'ch1_12_beach_01', + [-192798761] = 'ch1_12_beach_02', + [1363179345] = 'ch1_12_beach_roks_001', + [739257585] = 'ch1_12_beach_roks_002', + [2043693172] = 'ch1_12_beach_roks_003', + [-408378321] = 'ch1_12_beach_roks_005', + [922600152] = 'ch1_12_beach_roks_006', + [1411710246] = 'ch1_12_beach_roks_007', + [-1561290060] = 'ch1_12_beach_roks_009', + [1073641596] = 'ch1_12_bh01_decals', + [-12797071] = 'ch1_12_bh01_main', + [1323368548] = 'ch1_12_bh01_rails_02', + [171529128] = 'ch1_12_bh01_rails', + [-1053725490] = 'ch1_12_bh01_steps', + [950569618] = 'ch1_12_bh01_temp_steps', + [1996891865] = 'ch1_12_blend_0_01', + [1329317140] = 'ch1_12_br1', + [598665762] = 'ch1_12_bridgeshadprox', + [-2084311198] = 'ch1_12_buildglass006', + [-561312763] = 'ch1_12_buildl_79', + [-260817345] = 'ch1_12_buildl_r', + [1617249976] = 'ch1_12_buildl_r2', + [914715385] = 'ch1_12_buildl_r3', + [1403443872] = 'ch1_12_buildldecals_18', + [-112138582] = 'ch1_12_ch01_02_decalh04ih', + [1602708836] = 'ch1_12_ch01_02_h05', + [-1109256523] = 'ch1_12_ch01_02_h05decalih', + [904925962] = 'ch1_12_ch01_02_h0r', + [1215801341] = 'ch1_12_ch01_02_h0r1', + [1445282648] = 'ch1_12_ch01_02_h0r2', + [-1400318427] = 'ch1_12_ch01_02_house3decalih', + [-1957888777] = 'ch1_12_ch01_02_ih08_01', + [537536131] = 'ch1_12_ch01_02_ih08_06', + [-2062946576] = 'ch1_12_ch1_02_buildl_83', + [-2017299437] = 'ch1_12_ch1_02_plat_16_lod', + [55622169] = 'ch1_12_ch1_02_plat_16', + [-1075203596] = 'ch1_12_ch1_02_plat_20', + [1018802692] = 'ch1_12_coastobj_07', + [511963693] = 'ch1_12_coastobj_11', + [1412980121] = 'ch1_12_coastobj_18', + [1869611808] = 'ch1_12_coastobj_rail', + [-877416922] = 'ch1_12_coastobj_steps', + [1486862660] = 'ch1_12_coastrok_004', + [-1087042403] = 'ch1_12_cstrckedge_1', + [-330602807] = 'ch1_12_cstrckedge_2', + [1812369115] = 'ch1_12_drive05', + [-630854760] = 'ch1_12_drive06', + [-1619364414] = 'ch1_12_drive07', + [1681179043] = 'ch1_12_fence_001', + [-1953922695] = 'ch1_12_fences_001', + [-320256969] = 'ch1_12_fences_003', + [-901998365] = 'ch1_12_h04__rail_002', + [459747551] = 'ch1_12_h04__rail_01', + [-700109364] = 'ch1_12_h04_ih099', + [1403454883] = 'ch1_12_h04_ihc15', + [1039375821] = 'ch1_12_h04_rail_02', + [256589949] = 'ch1_12_h04_rail_03', + [-1839216988] = 'ch1_12_h04_rail_04', + [1995116475] = 'ch1_12_h04_rail_06', + [-342532609] = 'ch1_12_h04_steps', + [557801218] = 'ch1_12_house03ih_rail2', + [1243662224] = 'ch1_12_house03ih_roof', + [-382851166] = 'ch1_12_house03ih', + [-638508875] = 'ch1_12_houseblend006', + [-2116315629] = 'ch1_12_ih07_00', + [-1191213990] = 'ch1_12_ih07_01', + [-286297464] = 'ch1_12_ih07_r', + [1521645475] = 'ch1_12_ih07_r1', + [-475821705] = 'ch1_12_ih07_r2', + [1540535528] = 'ch1_12_ihwhouse_07_r', + [472554019] = 'ch1_12_ihwhouse_07_r2', + [252379108] = 'ch1_12_ihwhouse_07_r3', + [694472717] = 'ch1_12_ihwhouse_07_s', + [-1483279250] = 'ch1_12_ihwhouse_07', + [1159112960] = 'ch1_12_ihwhousedecal_15', + [2018182471] = 'ch1_12_island_001', + [-498365593] = 'ch1_12_lnd_001', + [1729046003] = 'ch1_12_props_towels1', + [2026981751] = 'ch1_12_props_towels2', + [-2125542088] = 'ch1_12_sc02_blgmain_l', + [-1415559913] = 'ch1_12_sc02_decalmain', + [-2025608145] = 'ch1_12_sc02_rail01', + [2023100116] = 'ch1_12_sc02_rail02', + [-1495995567] = 'ch1_12_sc02_rail03', + [-1676487219] = 'ch1_12_sc02_rail04', + [-1675610222] = 'ch1_12_sc02_rail1', + [-1981377761] = 'ch1_12_sc02_rail2', + [193599076] = 'ch1_12_sc02_rail3', + [1694110952] = 'ch1_12_sc02_sltstemp', + [-914966979] = 'ch1_12_sc02_sltstemp001', + [-1565643511] = 'ch1_12_sc03_decals', + [-186311581] = 'ch1_12_sc03_housemain', + [-1778022540] = 'ch1_12_sc03_rail_001', + [-533752449] = 'ch1_12_sc04_blgmain', + [1017356614] = 'ch1_12_sc04_decals', + [-2100818979] = 'ch1_12_sc04_fizzrail', + [202291423] = 'ch1_12_sc04_stairs', + [-2028006386] = 'ch1_12_sc04_stilts', + [1776057835] = 'ch1_12_sc05_blgmain', + [697771889] = 'ch1_12_sc05_decals', + [1996724172] = 'ch1_12_sc05_steps2', + [-162805188] = 'ch1_12_sc05_stilts', + [-1027158078] = 'ch1_12_sea_ch1_12_uw_00', + [-787125153] = 'ch1_12_sea_ch1_12_uw_01', + [-1747060239] = 'ch1_12_sea_ch1_12_uw_05', + [-192826557] = 'ch1_12_sea_ch1_12_uw_06', + [1129042134] = 'ch1_12_sea_ch1_12_uw_07', + [431914428] = 'ch1_12_sea_ch1_12_uw_08', + [-411264711] = 'ch1_12_sea_ch1_12_uw_09', + [-155691332] = 'ch1_12_sea_ch1_12_uw_10', + [-789050564] = 'ch1_12_sea_ch1_12_uw_11', + [-333987560] = 'ch1_12_sea_ch1_12_uw_dec_00', + [150862564] = 'ch1_12_sea_ch1_12_uw_dec_01', + [-2034174356] = 'ch1_12_sea_ch1_12_uw_dec_02', + [360813551] = 'ch1_12_sea_ch1_12_uw_dec_03', + [835767437] = 'ch1_12_sea_ch1_12_uw_dec_04', + [1067673650] = 'ch1_12_sea_ch1_12_uw_dec_05', + [-1639438990] = 'ch1_12_sea_ch1_12_uw_dec_06', + [2062039254] = 'ch1_12_sea_tyrepilea', + [1820564493] = 'ch1_12_sea_tyrepileb', + [411374730] = 'ch1_12_sea_uw_03_lod', + [-1411249474] = 'ch1_12_sea_uw_03', + [-1788790946] = 'ch1_12_sea_uw01_lod', + [-1415518007] = 'ch1_12_sea_uw01', + [-396017240] = 'ch1_12_waves_01', + [237993282] = 'ch1_12_waves_02_lod', + [1814513938] = 'ch1_12_waves_02', + [1928777331] = 'ch1_12_waves01_lod', + [1866918552] = 'ch1_emissive_0', + [1552729380] = 'ch1_emissive_1', + [-1165915118] = 'ch1_emissive_11', + [-872403185] = 'ch1_emissive_12', + [-630404120] = 'ch1_emissive_13', + [1408054245] = 'ch1_emissive_2', + [1094192763] = 'ch1_emissive_3', + [-1541483445] = 'ch1_emissive_4', + [-711936210] = 'ch1_emissive_5', + [-2007032628] = 'ch1_emissive_6', + [876237286] = 'ch1_emissive_7_slod', + [-1238501271] = 'ch1_emissive_7', + [1808098305] = 'ch1_emissive_8', + [1031178084] = 'ch1_emissive_9', + [96331624] = 'ch1_emissive_arc007_emi_slod', + [1631456652] = 'ch1_emissive_arc007_emi', + [-1503089081] = 'ch1_emissive_ch1_01_ema', + [-1263842612] = 'ch1_emissive_ch1_01_emb', + [-638282402] = 'ch1_emissive_ch1_01_emc', + [-370789055] = 'ch1_emissive_ch1_01_emd', + [-131608124] = 'ch1_emissive_ch1_01_eme', + [224721982] = 'ch1_emissive_ch1_01_emf', + [1461528417] = 'ch1_emissive_ch1_01_slod_01', + [-1345333051] = 'ch1_emissive_ch1_01_slod_02', + [-1047430072] = 'ch1_emissive_ch1_01_slod_03', + [-960413417] = 'ch1_emissive_ch1_02_01', + [-1143002285] = 'ch1_emissive_ch1_02_02', + [-1387557332] = 'ch1_emissive_ch1_02_03', + [-172384489] = 'ch1_emissive_ch1_02_04', + [66337676] = 'ch1_emissive_ch1_02_05', + [290608712] = 'ch1_emissive_ch1_02_06', + [531231479] = 'ch1_emissive_ch1_02_07', + [-1234067324] = 'ch1_emissive_ch1_02_08', + [-1937355602] = 'ch1_emissive_ch1_02_09', + [-662313464] = 'ch1_emissive_ch1_02_10', + [-1495268675] = 'ch1_emissive_ch1_02_11', + [1864569668] = 'ch1_emissive_ch1_02_12', + [-849031226] = 'ch1_emissive_ch1_02_13', + [-1820664845] = 'ch1_emissive_ch1_02_14', + [650134108] = 'ch1_emissive_ch1_02_slod_01', + [-971374339] = 'ch1_emissive_ch1_02_slod_02', + [-127102342] = 'ch1_emissive_ch1_06e_em_01', + [2027950947] = 'ch1_emissive_ch1_06e_em_02', + [-1960658968] = 'ch1_emissive_ch1_06e_em_03', + [-2131308879] = 'ch1_emissive_ch1_06e_em_slod', + [-149676109] = 'ch1_emissive_ch1_06e_em02', + [-2079884088] = 'ch1_emissive_ch1_09_mh_slod', + [1779039315] = 'ch1_emissive_ch1_09_mhouse_emi', + [413876404] = 'ch1_emissive_ch1_10_em_slod', + [-1868228690] = 'ch1_emissive_ch1_10_emissive01', + [-1707726128] = 'ch1_emissive_ch1_10_emissive02', + [-200581511] = 'ch1_emissive_ch1_10_emissive03', + [-37129739] = 'ch1_emissive_ch1_10_emissive04', + [901472732] = 'ch1_emissive_ch1_10_emissive05', + [-1463076448] = 'ch1_emissive_ch1_12_1', + [902169963] = 'ch1_emissive_ch1_12_10', + [1140040134] = 'ch1_emissive_ch1_12_11', + [659712132] = 'ch1_emissive_ch1_12_12', + [-1771432738] = 'ch1_emissive_ch1_12_2', + [-903578534] = 'ch1_emissive_ch1_12_3', + [-1206659015] = 'ch1_emissive_ch1_12_4', + [-1499613875] = 'ch1_emissive_ch1_12_5', + [-1821929759] = 'ch1_emissive_ch1_12_6', + [57274084] = 'ch1_emissive_ch1_12_7', + [-249607601] = 'ch1_emissive_ch1_12_8', + [-537581573] = 'ch1_emissive_ch1_12_9', + [1356216266] = 'ch1_emissive_ch1_12_slod', + [969528916] = 'ch1_emissive_ch1_12_slod1', + [1744089777] = 'ch1_emissive_ch1_12_slod2', + [811276863] = 'ch1_emissive_koriz01', + [-1281843000] = 'ch1_emissive_koriz02', + [-2132460702] = 'ch1_emissive_koriz03', + [-700586478] = 'ch1_emissive_koriz04', + [211014333] = 'ch1_emissive_koriz05', + [29670687] = 'ch1_emissive_koriz06', + [-1474524720] = 'ch1_emissive_koriz07', + [1001465858] = 'ch1_emissive_shacks_emi_slod', + [-1585920616] = 'ch1_emissive_shacks_emi', + [703166998] = 'ch1_emissive_slod1', + [-5167706] = 'ch1_emissive_slod2', + [-577019529] = 'ch1_emissive_slod3', + [-751416147] = 'ch1_emissive_slod4', + [1081171373] = 'ch1_emissive_vin_emi_slod', + [1801938544] = 'ch1_emissive_vnyrdblg_emi', + [1085905091] = 'ch1_emissivea_ch1_01_lod', + [526559000] = 'ch1_emissivef_ch1_01_lod', + [230365395] = 'ch1_lod_3_9_slod2', + [1283456725] = 'ch1_lod_5_20_emissive_proxy', + [1388125383] = 'ch1_lod_5_21_emissive_proxy', + [715920975] = 'ch1_lod_6_20_emissive_proxy', + [-2111047333] = 'ch1_lod_ch1_04b_water01_slod3', + [-1456196861] = 'ch1_lod_ch1_05_crkwater_slod3', + [604477612] = 'ch1_lod_ch1_05_water_slod3', + [467033690] = 'ch1_lod_slod3a', + [1375357601] = 'ch1_lod_slod3b', + [-147090139] = 'ch1_lod_slod3c', + [-1115315782] = 'ch1_lod_slod3d', + [-760296436] = 'ch1_lod_slod3e', + [-1065103877] = 'ch1_rdprops_50902_thvy', + [-291660366] = 'ch1_rdprops_50904_thvy', + [-1943664300] = 'ch1_rdprops_50908_thvy', + [432620850] = 'ch1_rdprops_50911_thvy', + [1272577905] = 'ch1_rdprops_50914_thvy', + [1004481479] = 'ch1_rdprops_50917_thvy', + [-982674488] = 'ch1_rdprops_50918_thvy', + [-530842152] = 'ch1_rdprops_50921_thvy', + [1590117320] = 'ch1_rdprops_50923_thvy', + [-631557872] = 'ch1_rdprops_50929_thvy', + [-804839835] = 'ch1_rdprops_50940_thvy', + [-956936554] = 'ch1_rdprops_50945_thvy', + [-402829282] = 'ch1_rdprops_50951_thvy', + [814167828] = 'ch1_rdprops_50955_thvy', + [1901904896] = 'ch1_rdprops_50958_thvy', + [-852540548] = 'ch1_rdprops_50965_thvy', + [-1633447234] = 'ch1_rdprops_50968_thvy', + [1347592227] = 'ch1_rdprops_50972_thvy', + [-2129704952] = 'ch1_rdprops_cab_11', + [-352939604] = 'ch1_rdprops_cab_mesh00', + [1859230036] = 'ch1_rdprops_cab_mesh01', + [-1004387324] = 'ch1_rdprops_cab_mesh02', + [-740498567] = 'ch1_rdprops_cab_mesh03', + [-1448505581] = 'ch1_rdprops_cab_mesh04', + [1900387880] = 'ch1_rdprops_cab_mesh05', + [-1696534178] = 'ch1_rdprops_cab_mesh06', + [-721099355] = 'ch1_rdprops_cab_mesh07', + [2119317569] = 'ch1_rdprops_cab_mesh08', + [643827806] = 'ch1_rdprops_cab_mesh09', + [1527447662] = 'ch1_rdprops_cable_new1', + [73979761] = 'ch1_rdprops_cable01_thvy', + [-1205944914] = 'ch1_rdprops_cable02_thvy', + [2119042722] = 'ch1_rdprops_cable03_thvy', + [742806151] = 'ch1_rdprops_cable04_thvy', + [-155550926] = 'ch1_rdprops_cable2a_tstd', + [-755013315] = 'ch1_rdprops_ch1_rd_sp016', + [-1939323303] = 'ch1_rdprops_combo_01_lod', + [177619350] = 'ch1_rdprops_combo_02_lod', + [-118911003] = 'ch1_rdprops_combo_03_lod', + [460493578] = 'ch1_rdprops_combo01_01_lod', + [292710752] = 'ch1_rdprops_combo01_02_lod', + [-1506374844] = 'ch1_rdprops_combo01_03_lod', + [-81119026] = 'ch1_rdprops_combo02_01_lod', + [1997089624] = 'ch1_rdprops_combo02_02_lod', + [-1515072825] = 'ch1_rdprops_combo02_03_lod', + [-56074267] = 'ch1_rdprops_combo03_01_lod', + [-405364165] = 'ch1_rdprops_combo04_01_lod', + [-294795470] = 'ch1_rdprops_combo05_01_lod', + [639701749] = 'ch1_rdprops_combo05_02_lod', + [1632031005] = 'ch1_rdprops_combo05_03_lod', + [1071601076] = 'ch1_rdprops_combo06_01_lod', + [457801691] = 'ch1_rdprops_combo07_01_lod', + [-1264092416] = 'ch1_rdprops_combo07_02_lod', + [-90075096] = 'ch1_rdprops_combo07_03_lod', + [-1823775230] = 'ch1_rdprops_combo07_04_lod', + [653632796] = 'ch1_rdprops_combo08_01_lod', + [-1757364451] = 'ch1_rdprops_combo08_02_lod', + [193118921] = 'ch1_rdprops_combo08_03_lod', + [853874674] = 'ch1_rdprops_combo09_01_lod', + [1925462331] = 'ch1_rdprops_combo09_02_lod', + [1694240206] = 'ch1_rdprops_combo09_03_lod', + [-784882730] = 'ch1_rdprops_combo10_01_lod', + [-136892029] = 'ch1_rdprops_combo10_02_lod', + [1107606860] = 'ch1_rdprops_combo10_03_lod', + [-2038108972] = 'ch1_rdprops_combo10_04_lod', + [1181721201] = 'ch1_rdprops_combo10_05_lod', + [-1223024675] = 'ch1_rdprops_combo11_01_lod', + [774842534] = 'ch1_rdprops_combo11_02_lod', + [2000049806] = 'ch1_rdprops_combo11_03_lod', + [190387292] = 'ch1_rdprops_combo12_01_lod', + [934389009] = 'ch1_rdprops_combo13_01_lod', + [1182956816] = 'ch1_rdprops_combo14_01_lod', + [-435167639] = 'ch1_rdprops_combo15_01_lod', + [-969078869] = 'ch1_rdprops_combo15_02_lod', + [806563109] = 'ch1_rdprops_combo15_03_lod', + [2078035667] = 'ch1_rdprops_combo15_04_lod', + [-197313833] = 'ch1_rdprops_combo16_01_lod', + [-27604630] = 'ch1_rdprops_combo17_01_lod', + [1293763682] = 'ch1_rdprops_combo18_01_lod', + [-1294353628] = 'ch1_rdprops_combo19_01_lod', + [1758542241] = 'ch1_rdprops_combo19_02_lod', + [-244452840] = 'ch1_rdprops_combo20_01_lod', + [-836180033] = 'ch1_rdprops_combo20_02_lod', + [-1504245864] = 'ch1_rdprops_combo20_03_lod', + [-262025657] = 'ch1_rdprops_combo20_04_lod', + [860047934] = 'ch1_rdprops_combo20_05_lod', + [-1941310420] = 'ch1_rdprops_combo21_01_lod', + [1329284405] = 'ch1_rdprops_combo21_02_lod', + [606581570] = 'ch1_rdprops_combo21_03_lod', + [-919906069] = 'ch1_rdprops_combo21_04_lod', + [131626876] = 'ch1_rdprops_combo22_01_lod', + [-1903725030] = 'ch1_rdprops_combo23_01_lod', + [-244565673] = 'ch1_rdprops_combo24_01_lod', + [18627814] = 'ch1_rdprops_combo25_01_lod', + [-2058979094] = 'ch1_rdprops_combo25_02_lod', + [1450195597] = 'ch1_rdprops_combo25_03_lod', + [1130227670] = 'ch1_rdprops_combo25_04_lod', + [-43496258] = 'ch1_rdprops_combo25_05_lod', + [314945401] = 'ch1_rdprops_combo25_06_lod', + [1512689820] = 'ch1_rdprops_combo26_01_lod', + [54966560] = 'ch1_rdprops_combo26_02_lod', + [1275158686] = 'ch1_rdprops_combo26_03_lod', + [49012828] = 'ch1_rdprops_combo27_01_lod', + [2121485147] = 'ch1_rdprops_combo27_02_lod', + [-1695839570] = 'ch1_rdprops_combo27_03_lod', + [-1999246541] = 'ch1_rdprops_combo27_04_lod', + [287829610] = 'ch1_rdprops_combo28_01_lod', + [1619606107] = 'ch1_rdprops_combo29_01_lod', + [-89443830] = 'ch1_rdprops_combo30_01_lod', + [-392314204] = 'ch1_rdprops_combo30_02_lod', + [-1021269928] = 'ch1_rdprops_combo30_03_lod', + [-2063433420] = 'ch1_rdprops_combo31_01_lod', + [1323635753] = 'ch1_rdprops_combo32_01_lod', + [109482385] = 'ch1_rdprops_combo32_02_lod', + [-175641461] = 'ch1_rdprops_combo32_03_lod', + [-143542340] = 'ch1_rdprops_combo33_01_lod', + [841383337] = 'ch1_rdprops_combo34_01_lod', + [220832852] = 'ch1_rdprops_combo35_01_lod', + [1554002949] = 'ch1_rdprops_combo35_02_lod', + [-1819484838] = 'ch1_rdprops_combo35_03_lod', + [599114572] = 'ch1_rdprops_combo36_01_lod', + [1470570042] = 'ch1_rdprops_combo37_01_lod', + [-139101346] = 'ch1_rdprops_combo38_01_lod', + [1928062269] = 'ch1_rdprops_combo39_01_lod', + [-2000507886] = 'ch1_rdprops_combo40_01_lod', + [-1342182934] = 'ch1_rdprops_combo41_01_lod', + [-1675146841] = 'ch1_rdprops_combo42_01_lod', + [-272705428] = 'ch1_rdprops_combo43_01_lod', + [1076470916] = 'ch1_rdprops_combo44_01_lod', + [-1968873994] = 'ch1_rdprops_combo45_01_lod', + [-1487514306] = 'ch1_rdprops_combo46_01_lod', + [-88518481] = 'ch1_rdprops_combo46_02_lod', + [-1813015363] = 'ch1_rdprops_combo46_03_lod', + [1381964985] = 'ch1_rdprops_combo47_01_lod', + [272736694] = 'ch1_rdprops_combo48_01_lod', + [-429441319] = 'ch1_rdprops_combo49_01_lod', + [1979001717] = 'ch1_rdprops_combo50_01_lod', + [-1694333894] = 'ch1_rdprops_combo51_01_lod', + [902657531] = 'ch1_rdprops_combo52_01_lod', + [-1412320776] = 'ch1_rdprops_combo53_01_lod', + [-390533246] = 'ch1_rdprops_combo54_01_lod', + [440228529] = 'ch1_rdprops_combo54_02_lod', + [1206937009] = 'ch1_rdprops_combo54_03_lod', + [-139282874] = 'ch1_rdprops_combo55_01_lod', + [1980707141] = 'ch1_rdprops_combo55_02_lod', + [-1714887291] = 'ch1_rdprops_combo55_03_lod', + [-540867688] = 'ch1_rdprops_combo56_01_lod', + [611604324] = 'ch1_rdprops_combo57_01_lod', + [-1378512818] = 'ch1_rdprops_tele_wire01', + [-721854827] = 'ch1_rdprops_tele_wire03', + [797643715] = 'ch1_rdprops_tele_wire04', + [-441483251] = 'ch1_rdprops_tele_wire08', + [1999250468] = 'ch1_rdprops_tele_wire10', + [-1686508349] = 'ch1_rdprops_tele_wire12', + [1796936102] = 'ch1_rdprops_tele_wire20', + [-670274681] = 'ch1_rdprops_tele_wire22', + [-1447457054] = 'ch1_rdprops_tele_wire23', + [1152435438] = 'ch1_rdprops_tele_wire27', + [576946260] = 'ch1_rdprops_tele_wire29', + [-1828003163] = 'ch1_rdprops_tele_wire30', + [-1209029522] = 'ch1_rdprops_tele_wire32', + [190734930] = 'ch1_rdprops_tele_wire40', + [-517468698] = 'ch1_rdprops_tele_wire41', + [-267801687] = 'ch1_rdprops_tele_wire42', + [1171085103] = 'ch1_rdprops_tele_wire43', + [2132756906] = 'ch1_rdprops_tele_wire44', + [-1864504025] = 'ch1_rdprops_tele_wire45', + [-1003858901] = 'ch1_rdprops_tele_wire50', + [1918906520] = 'ch1_rdprops_tele_wire51', + [1668715205] = 'ch1_rdprops_tele_wire52', + [-1849364639] = 'ch1_rdprops_tele_wire53', + [978141475] = 'ch1_rdprops_tele_wire54', + [-19673191] = 'ch1_rdprops_telewrs00', + [675619451] = 'ch1_rdprops_telewrs01', + [441616022] = 'ch1_rdprops_telewrs02', + [-740951646] = 'ch1_rdprops_telewrs03', + [-1005823473] = 'ch1_rdprops_telewrs04', + [-277761835] = 'ch1_rdprops_telewrs05', + [-1723923343] = 'ch1_rdprops_telewrs07', + [-1954486027] = 'ch1_rdprops_telewrs08', + [-699728248] = 'ch1_rdprops_telewrs09', + [-2005404121] = 'ch1_rdprops_telewrs10', + [610414069] = 'ch1_rdprops_telewrs11', + [303991150] = 'ch1_rdprops_telewrs12', + [1068295306] = 'ch1_rdprops_telewrs13', + [765608053] = 'ch1_rdprops_telewrs14', + [1070720216] = 'ch1_rdprops_telewrs15', + [764100683] = 'ch1_rdprops_telewrs16', + [-313802803] = 'ch1_rdprops_telewrs17', + [-620356798] = 'ch1_rdprops_telewrs18', + [148928246] = 'ch1_rdprops_telewrs19', + [263390607] = 'ch1_rdprops_telewrs20', + [494117136] = 'ch1_rdprops_telewrs21', + [1264909554] = 'ch1_rdprops_telewrs22', + [-653027247] = 'ch1_rdprops_telewrs23', + [-360105156] = 'ch1_rdprops_telewrs24', + [-130001238] = 'ch1_rdprops_telewrs25', + [99545607] = 'ch1_rdprops_telewrs26', + [-265533818] = 'ch1_rdprops_telewrs27', + [1506065256] = 'ch1_rdprops_wire_hang009', + [579783033] = 'ch1_rdprops_wire_hang010', + [496385928] = 'ch1_rdprops_wire_hang011', + [97783812] = 'ch1_rdprops_wire_hang012', + [-74876053] = 'ch1_rdprops_wire_hang014', + [519389762] = 'ch1_rdprops_wire_hang016', + [1902831732] = 'ch1_rdprops_wire_hang025', + [-1291212625] = 'ch1_rdprops_wire047', + [1962183539] = 'ch1_rdprops_wiresb_spline026', + [-2054948944] = 'ch1_rdprops_wiresb_spline026b', + [2056787410] = 'ch1_rdprops_wiresb_spline037', + [-1525224753] = 'ch1_rdprops_wiresb_spline039', + [157809147] = 'ch1_rdprops_wiresb_spline041', + [1347487688] = 'ch1_rdprops_wiresb_spline045', + [2061425895] = 'ch1_rdprops_wiresb_spline049', + [-1271509455] = 'ch1_rdprops_wiresb_spline050', + [-953032004] = 'ch1_roads_46', + [-950869246] = 'ch1_roads_48', + [1496205] = 'ch1_roads_49', + [-1020700301] = 'ch1_roads_50', + [722577734] = 'ch1_roads_51', + [492047819] = 'ch1_roads_52', + [109240361] = 'ch1_roads_53', + [-121617244] = 'ch1_roads_54', + [2134102493] = 'ch1_roads_55', + [-1855097264] = 'ch1_roads_56', + [-1568204669] = 'ch1_roads_57', + [-1269515234] = 'ch1_roads_58', + [-1203584006] = 'ch1_roads_59', + [-1868665122] = 'ch1_roads_60', + [1822664425] = 'ch1_roads_62', + [890877922] = 'ch1_roads_63', + [585044845] = 'ch1_roads_64', + [2064460056] = 'ch1_roads_armco_01_lod', + [502120877] = 'ch1_roads_armco_01', + [-1395579960] = 'ch1_roads_armco_02_lod', + [833555529] = 'ch1_roads_armco_02a_lod', + [1595577415] = 'ch1_roads_armco_02a', + [-770672079] = 'ch1_roads_armco_02b', + [1923989326] = 'ch1_roads_armco_02c_lod', + [-1001529684] = 'ch1_roads_armco_02c', + [1803604334] = 'ch1_roads_armco_03_lod', + [809109918] = 'ch1_roads_armco_03a_lod', + [-2007538872] = 'ch1_roads_armco_03a', + [877509434] = 'ch1_roads_armco_03b', + [382546868] = 'ch1_roads_armco_03c_lod', + [-117488482] = 'ch1_roads_armco_03c', + [-1199609248] = 'ch1_roads_dcl_jn_01', + [-328194928] = 'ch1_roads_junc_ovr01', + [975912965] = 'ch1_roads_junc_ovr02', + [1332243071] = 'ch1_roads_junc_ovr03', + [1667309446] = 'ch1_roadsb_100', + [-298266932] = 'ch1_roadsb_26', + [-1931965651] = 'ch1_roadsb_30', + [2131750808] = 'ch1_roadsb_31', + [-1040550544] = 'ch1_roadsb_32', + [-1673844238] = 'ch1_roadsb_33', + [-531516898] = 'ch1_roadsb_34', + [1499877507] = 'ch1_roadsb_35_mnm', + [-762571117] = 'ch1_roadsb_35', + [-85596346] = 'ch1_roadsb_36', + [-20783676] = 'ch1_roadsb_37_s', + [-182002744] = 'ch1_roadsb_37', + [668749719] = 'ch1_roadsb_38_s', + [520728465] = 'ch1_roadsb_38', + [1557540497] = 'ch1_roadsb_43', + [-2027257027] = 'ch1_roadsb_44', + [-1184143426] = 'ch1_roadsb_45', + [-1550861305] = 'ch1_roadsb_47', + [-944624444] = 'ch1_roadsb_81', + [-1789048813] = 'ch1_roadsb_82', + [1789186223] = 'ch1_roadsb_82b', + [2054427201] = 'ch1_roadsb_83', + [815087346] = 'ch1_roadsb_armco_00_lod', + [-828617409] = 'ch1_roadsb_armco_00', + [709662175] = 'ch1_roadsb_armco_01_lod', + [-531795807] = 'ch1_roadsb_armco_01', + [-1404748247] = 'ch1_roadsb_armco_02_lod', + [-1174789125] = 'ch1_roadsb_armco_02', + [801840731] = 'ch1_roadsb_armco_03_lod', + [-229174092] = 'ch1_roadsb_armco_03', + [1130042570] = 'ch1_roadsb_armco_04_lod', + [76167450] = 'ch1_roadsb_armco_04', + [-1371221292] = 'ch1_roadsb_armco_05_lod', + [-822260227] = 'ch1_roadsb_armco_05', + [715187839] = 'ch1_roadsb_armco_06_lod', + [-552997354] = 'ch1_roadsb_armco_06', + [-2026498929] = 'ch1_roadsb_armco_08_lod', + [1271809953] = 'ch1_roadsb_armco_08', + [417433305] = 'ch1_roadsb_bdg_rum_stp_01', + [1184064060] = 'ch1_roadsb_bdg_rum_stp_02', + [1405625352] = 'ch1_roadsb_brdg1_decal', + [2064506055] = 'ch1_roadsb_brdg1_s', + [-241810981] = 'ch1_roadsb_brdg1', + [-1144403807] = 'ch1_roadsb_brdg2_s', + [-489774004] = 'ch1_roadsb_brdg2', + [-1229187041] = 'ch1_roadsb_brdg3_decal', + [222093093] = 'ch1_roadsb_brdg3_s', + [-585525022] = 'ch1_roadsb_brdg3', + [1027290403] = 'ch1_roadsb_ch1_railings_01_lod', + [1473660142] = 'ch1_roadsb_ch1_railings_01', + [-2060230063] = 'ch1_roadsb_ch1_railings_02_lod', + [1241196856] = 'ch1_roadsb_ch1_railings_02', + [1894801248] = 'ch1_roadsb_ch1_railings_03_lod', + [1009356181] = 'ch1_roadsb_ch1_railings_03', + [-559449334] = 'ch1_roadsb_dcl_rd_jn_01', + [30058953] = 'ch1_roadsb_railings_04_lod', + [-1995262356] = 'ch1_roadsb_railings_04', + [481465728] = 'ch1_roadsb_rbrid1_decal', + [2000391579] = 'ch1_roadsb_rbrid1_s', + [-1761904177] = 'ch1_roadsb_rbrid1', + [1465493608] = 'ch1_roadsb_rbrid2_decal', + [338129961] = 'ch1_roadsb_rbrid2', + [-885982990] = 'ch1_roadsb_sign_01_lod', + [-1822964373] = 'ch1_roadsb_sign_01', + [-1172664025] = 'ch1_roadsb_sign_011', + [-378732067] = 'ch1_roadsb_sign_012_lod', + [-329747038] = 'ch1_roadsb_sign_012', + [13217739] = 'ch1_roadsb_sign_013_lod', + [-1461850450] = 'ch1_roadsb_sign_013', + [-2086449886] = 'ch1_roadsb_sign_014_lod', + [1998326571] = 'ch1_roadsb_sign_014', + [-213985805] = 'ch1_roadsb_sign_015_lod', + [-2055133195] = 'ch1_roadsb_sign_015', + [-633385228] = 'ch1_roadsb_sign_016_lod', + [1404453984] = 'ch1_roadsb_sign_016', + [-2142618686] = 'ch1_roadsb_sign_02_lod', + [-1583717904] = 'ch1_roadsb_sign_02', + [-1061186553] = 'ch1_roadsb_sign_03_lod', + [2107447798] = 'ch1_roadsb_sign_03', + [-203365957] = 'ch1_roadsb_sign_04_lod', + [-1916356023] = 'ch1_roadsb_sign_04', + [324921978] = 'ch1_roadsb_sign_05_lod', + [1539593789] = 'ch1_roadsb_sign_05', + [-1100957720] = 'ch1_roadsb_sign_06_lod', + [1782379310] = 'ch1_roadsb_sign_06', + [-1926144855] = 'ch1_roadsb_sign_07_lod', + [969085499] = 'ch1_roadsb_sign_07', + [-752169639] = 'ch1_roadsb_sign_08_lod', + [1351630805] = 'ch1_roadsb_sign_08', + [935565793] = 'ch1_roadsb_sign_09_lod', + [107228030] = 'ch1_roadsb_sign_09', + [-554725343] = 'ch1_roadsb_sign_10_lod', + [86976504] = 'ch1_roadsb_sign_10', + [223636340] = 'ch1_roadsb_sign_11_lod', + [155583355] = 'ch1_roadsc_02', + [-107584484] = 'ch1_roadsc_03', + [-285192464] = 'ch1_roadsc_04', + [-792325508] = 'ch1_roadsc_05', + [-1064930823] = 'ch1_roadsc_06', + [-1304111754] = 'ch1_roadsc_07', + [-957546838] = 'ch1_roadsc_08', + [-1456946398] = 'ch1_roadsc_09', + [1457259630] = 'ch1_roadsc_10', + [-1949829447] = 'ch1_roadsc_10b', + [-786302728] = 'ch1_roadsc_11', + [1704829425] = 'ch1_roadsc_13', + [832649613] = 'ch1_roadsc_14', + [-1215247638] = 'ch1_roadsc_61', + [-23701252] = 'ch1_roadsc_65', + [123366124] = 'ch1_roadsc_66', + [-173848706] = 'ch1_roadsc_67', + [-338644007] = 'ch1_roadsc_68', + [-1123234010] = 'ch1_roadsc_69a', + [1784850899] = 'ch1_roadsc_69b', + [1487898221] = 'ch1_roadsc_69c', + [-474144726] = 'ch1_roadsc_70', + [-637334346] = 'ch1_roadsc_71', + [1875699495] = 'ch1_roadsc_armco_18_lod', + [-1227435626] = 'ch1_roadsc_armco_18', + [1147011827] = 'ch1_roadsc_armco_18b_lod', + [-657978075] = 'ch1_roadsc_armco_18b', + [-177510221] = 'ch1_roadsc_armco_19_lod', + [-917866887] = 'ch1_roadsc_armco_19', + [970645781] = 'ch1_roadsc_armco_lb_002', + [-2012545134] = 'ch1_roadsc_armco_lb_1', + [-1260932542] = 'ch1_roadsc_armco01_lod', + [-1418756195] = 'ch1_roadsc_armco01', + [1824513839] = 'ch1_roadsc_armco02_lod', + [894735209] = 'ch1_roadsc_armco02', + [-1705115259] = 'ch1_roadsc_armco02a_lod', + [1113441934] = 'ch1_roadsc_armco02a', + [1049177369] = 'ch1_roadsc_armco03_lod', + [1696953086] = 'ch1_roadsc_armco03', + [815219769] = 'ch1_roadsc_armco03a_lod', + [-1043676295] = 'ch1_roadsc_armco03a', + [-2020640308] = 'ch1_roadsc_barrier00a_lod', + [1213652831] = 'ch1_roadsc_barrier00a', + [1966244446] = 'ch1_roadsc_barrier00b_lod', + [1451785154] = 'ch1_roadsc_barrier00b', + [-51843706] = 'ch1_roadsc_barrier00c_lod', + [1539474998] = 'ch1_roadsc_barrier00c', + [-1778116607] = 'ch1_roadsc_brd_hwsign_01', + [-1469924162] = 'ch1_roadsc_brd_hwsign_02', + [-651762533] = 'ch1_roadsc_dcl_frsgn_01', + [1184027521] = 'ch1_roadsc_jnt_sgn_1_lod', + [2095839890] = 'ch1_roadsc_jnt_sgn_1', + [-762234195] = 'ch1_roadsc_layby_rd_dlcs_01', + [1202665182] = 'ch1_roadsc_od_bigsign_01_lod', + [-1493756748] = 'ch1_roadsc_od_bigsign_01', + [-609356651] = 'ch1_roadsc_rd_sd_barr_01_lod', + [-1272862782] = 'ch1_roadsc_rd_sd_barr_01', + [106905833] = 'ch1_roadsc_rd_sd_barr_02_lod', + [-866985948] = 'ch1_roadsc_rd_sd_barr_02', + [-524588530] = 'ch1_roadsc_rd_sd_barr_03_lod', + [-1769542515] = 'ch1_roadsc_rd_sd_barr_03', + [1927413048] = 'ch1_roadsc_road_jn_dcl_02', + [-64838407] = 'ch1_roadsc_rum_strip00', + [-1309142879] = 'ch1_roadsc_rum_strip01', + [-415597787] = 'ch1_roadsc_rum_strip02', + [-1797466517] = 'ch1_roadsc_rum_strip03', + [-1020873986] = 'ch1_roadsc_rum_strip04', + [-2020656176] = 'ch1_roadsc_rum_strip05', + [1825965662] = 'ch1_roadsc_rum_strip06', + [1663202043] = 'ch1_roadsc_rum_strip07', + [1482710391] = 'ch1_roadsc_rum_strip08', + [403461342] = 'ch1_roadsc_sides_0100', + [-1326933463] = 'ch1_roadsc_sigb_oh_1', + [-32557963] = 'ch1_roadsc_sigb_oh_2', + [1412240552] = 'ch1_roadsc_sign_base_01', + [-325910085] = 'ch1_roadsc_trims_001', + [1649143087] = 'ch1_roadsc_trims_002', + [1580927834] = 'ch1_roadscdcls_08', + [656286014] = 'ch1_roadsd_01_sd', + [3186970] = 'ch1_roadsd_02_s', + [-272012817] = 'ch1_roadsd_03_s', + [370936373] = 'ch1_roadsd_04_sd', + [-1012848252] = 'ch1_roadsd_15', + [-415371075] = 'ch1_roadsd_17', + [-658025520] = 'ch1_roadsd_18', + [1924600317] = 'ch1_roadsd_21', + [-2076199666] = 'ch1_roadsd_22', + [322032980] = 'ch1_roadsd_24', + [979411893] = 'ch1_roadsd_27', + [1277642562] = 'ch1_roadsd_28', + [1575840462] = 'ch1_roadsd_29', + [2002554564] = 'ch1_roadsd_72', + [-1389266323] = 'ch1_roadsd_73', + [-1695328783] = 'ch1_roadsd_74', + [-756070936] = 'ch1_roadsd_75', + [-1064722147] = 'ch1_roadsd_76', + [-160494361] = 'ch1_roadsd_77', + [-466851742] = 'ch1_roadsd_78', + [394940189] = 'ch1_roadsd_79', + [-1169909681] = 'ch1_roadsd_80', + [-2045104758] = 'ch1_roadsd_armco_03_lod', + [-47684765] = 'ch1_roadsd_armco_03', + [1981091170] = 'ch1_roadsd_armco_04_lod', + [-135964451] = 'ch1_roadsd_armco_04', + [-184712637] = 'ch1_roadsd_armco_ent_01_lod', + [-2047628812] = 'ch1_roadsd_armco_ent_01', + [1983014996] = 'ch1_roadsd_armco_right_lod', + [-655941411] = 'ch1_roadsd_armco_right', + [-1173963811] = 'ch1_roadsd_armco_rr_1_lod', + [-769516717] = 'ch1_roadsd_armco_rr_1', + [959985672] = 'ch1_roadsd_bdg_end_01', + [1986264890] = 'ch1_roadsd_bdg_end_dcl01', + [1513994963] = 'ch1_roadsd_bdgent_dc2_lod', + [-51747235] = 'ch1_roadsd_bdgent_dc2', + [1953618927] = 'ch1_roadsd_bdgent_decal_lod', + [-779880118] = 'ch1_roadsd_bdgent_decal', + [-227075385] = 'ch1_roadsd_bdgent01a2', + [-713389332] = 'ch1_roadsd_bdgentb_01', + [731697520] = 'ch1_roadsd_ch1_09_zancudo_lod', + [843998175] = 'ch1_roadsd_ch1_09_zancudo', + [-1896860118] = 'ch1_roadsd_dcl_rd_jn_27', + [-1760915802] = 'ch1_roadsd_dcl_tugnd_01', + [1872112722] = 'ch1_roadsd_dst_dcls03', + [1536427086] = 'ch1_roadsd_dst_dcls04', + [-794712980] = 'ch1_roadsd_dst_dcls2', + [-955897601] = 'ch1_roadsd_flappybase_003', + [1138500265] = 'ch1_roadsd_flappybase_004', + [1114316743] = 'ch1_roadsd_flappybase_005', + [1901067664] = 'ch1_roadsd_flappybase_006', + [-45000514] = 'ch1_roadsd_flappybase_02', + [-1844246326] = 'ch1_roadsd_fwysign_007_lod', + [1445232398] = 'ch1_roadsd_fwysign_007', + [-183589683] = 'ch1_roadsd_introad', + [1339572730] = 'ch1_roadsd_introad2', + [-788478895] = 'ch1_roadsd_introad3', + [938898832] = 'ch1_roadsd_junt_01', + [676576038] = 'ch1_roadsd_layby_01_dcl', + [1633628623] = 'ch1_roadsd_ovrly01', + [2018176436] = 'ch1_roadsd_phc_brd_03', + [-2133880418] = 'ch1_roadsd_phc_brddcl_03', + [624691178] = 'ch1_roadsd_phc_brdg_02', + [1730159959] = 'ch1_roadsd_phc_brg_01', + [-1619295808] = 'ch1_roadsd_phc_brg_01s', + [-1424407269] = 'ch1_roadsd_phc_brgdcl_02', + [-2099719889] = 'ch1_roadsd_phc_brgdcls_01', + [-1029543826] = 'ch1_roadsd_phc_railings_1_lod', + [87969153] = 'ch1_roadsd_phc_railings_1', + [1040331239] = 'ch1_roadsd_phc_railings_2_lod', + [1662355762] = 'ch1_roadsd_phc_railings_2', + [-1124546952] = 'ch1_roadsd_phc_railings_3_lod', + [1892394142] = 'ch1_roadsd_phc_railings_3', + [-177720365] = 'ch1_roadsd_phc_railings_4_lod', + [1316708350] = 'ch1_roadsd_phc_railings_4', + [517434818] = 'ch1_roadsd_phc_railings_5_lod', + [1545993043] = 'ch1_roadsd_phc_railings_5', + [1701570209] = 'ch1_roadsd_phc_railings_6_lod', + [-638454039] = 'ch1_roadsd_phc_railings_6', + [2011850495] = 'ch1_roadsd_phc_rd_swctbc_1', + [-1916685480] = 'ch1_roadsd_r_armco_00_lod', + [1583903786] = 'ch1_roadsd_r_armco_00', + [2126341572] = 'ch1_roadsd_r_armco_01_lod', + [-125261736] = 'ch1_roadsd_r_armco_01', + [-602561585] = 'ch1_roadsd_r_armco_02_lod', + [163859151] = 'ch1_roadsd_r_armco_02', + [1364423747] = 'ch1_roadsd_r_armco_03_lod', + [352215363] = 'ch1_roadsd_r_armco_03', + [346766965] = 'ch1_roadsd_r_armco_04_lod', + [-1786912172] = 'ch1_roadsd_r_armco_04', + [-1236339728] = 'ch1_roadsd_r_armco_05_lod', + [666601169] = 'ch1_roadsd_r_armco_05', + [363750159] = 'ch1_roadsd_r_armco_06_lod', + [1090632029] = 'ch1_roadsd_r_armco_06', + [-417045973] = 'ch1_roadsd_r_armco_07_lod', + [1397186024] = 'ch1_roadsd_r_armco_07', + [852294706] = 'ch1_roadsd_r_armco_08_lod', + [-655169215] = 'ch1_roadsd_r_armco_08', + [-1039221425] = 'ch1_roadsd_r_armco_09_lod', + [1799720420] = 'ch1_roadsd_r_armco_09', + [1254625220] = 'ch1_roadsd_rbrid02_lod', + [1655791990] = 'ch1_roadsd_rbrid02', + [-2193595] = 'ch1_roadsd_rbrid02d', + [334400835] = 'ch1_roadsd_roadbrg_01_d', + [-2135677993] = 'ch1_roadsd_roadbrg_01', + [1026591813] = 'ch1_roadsd_rum_strip00', + [-669335017] = 'ch1_roadsd_rum_strip03', + [106503827] = 'ch1_roadsd_rum_strip04', + [365870462] = 'ch1_roadsd_rum_strip05', + [603216329] = 'ch1_roadsd_rum_strip06', + [-1586670399] = 'ch1_roadsd_rum_strip07', + [-1351225134] = 'ch1_roadsd_rum_strip08', + [-1097265388] = 'ch1_roadsd_rum_strip09', + [2001990827] = 'ch1_roadsd_rum_strip10', + [1776343493] = 'ch1_roadsd_rum_strip11', + [-1034491314] = 'ch1_roadsd_sign_01_lod', + [-1849633544] = 'ch1_roadsd_sign_01', + [-279976852] = 'ch1_roadsd_sign_02_lod', + [-1726913643] = 'ch1_roadsd_sign_02', + [-1906345546] = 'ch1_roadsd_sign_03_lod', + [-1966422264] = 'ch1_roadsd_sign_03', + [-1615629774] = 'ch1_roadsd_sign_05_lod', + [-1369928153] = 'ch1_roadsd_sign_05', + [1052433774] = 'ch1_roadsd_sign_06_lod', + [-231402017] = 'ch1_roadsd_sign_06', + [608744561] = 'ch1_roadsd_sign_pbluff_01_lod', + [-1370323493] = 'ch1_roadsd_sign_road003', + [-1043859667] = 'ch1_roadsd_sndy_dcl_jn_01', + [1706371580] = 'ch1_roadsd_sndydcljn_1_lod', + [83228292] = 'ch1_roadsd_t_lgt_01', + [-536826726] = 'ch1_roadsd_t_lgt_04', + [-1112807439] = 'ch1_roadsd_t_lgt_06', + [841634040] = 'ch1_roadsd_t_lgt_09', + [1720865851] = 'ch1_roadsd_t_lgt_12', + [-620249816] = 'ch1_roadsd_t_lgt_14', + [1052838729] = 'ch1_roadsd_t_lgt_38', + [-1715027853] = 'ch1_roadsd_t_lgt_43', + [-1084923618] = 'ch1_roadsd_tun_rd_1b', + [1574608634] = 'ch1_roadsd_tun_rd_2b', + [1878151009] = 'ch1_roadsd_tunrnd_1dcl', + [1188724227] = 'ch1_roadsd_tunrnd_1dcl2', + [-1230900250] = 'ch1_roadsd_tunshell_1b', + [1520710138] = 'ch1_roadsd_tunshell_1bshadow', + [1750133957] = 'ch1_roadsd_tunshell_2b', + [-1926447383] = 'ch1_roadsd_tunshell_2bshadow', + [-1935126821] = 'ch2_01_cliff_dcl_03', + [461690278] = 'ch2_01_dec01', + [1302804946] = 'ch2_01_dec02', + [1061330185] = 'ch2_01_dec03', + [5742384] = 'ch2_01_dec04', + [1567097117] = 'ch2_01_l1', + [1873913264] = 'ch2_01_l2', + [2145863195] = 'ch2_01_l3', + [715496345] = 'ch2_01_l4', + [1452208991] = 'ch2_01_l5', + [-391407718] = 'ch2_01_l6', + [1142283999] = 'ch2_01_rock4f', + [-762214329] = 'ch2_01_rocksml01', + [391279622] = 'ch2_01_water_01', + [578456178] = 'ch2_01_water_02', + [1418030727] = 'ch2_01_water_03', + [-1288775549] = 'ch2_01b_d1', + [-1048251089] = 'ch2_01b_d2', + [1096461599] = 'ch2_01b_d29', + [-1670946081] = 'ch2_01b_d2h', + [-1737008073] = 'ch2_01b_d30', + [1966314928] = 'ch2_01b_d32', + [-540480803] = 'ch2_01b_d34', + [-486590429] = 'ch2_01b_d4', + [1473084672] = 'ch2_01b_fnc', + [6285255] = 'ch2_01b_l1', + [475622736] = 'ch2_01b_l10', + [-1696064303] = 'ch2_01b_l2', + [417306822] = 'ch2_01b_l3', + [648655962] = 'ch2_01b_l4', + [890982717] = 'ch2_01b_l5', + [-741634401] = 'ch2_01b_l6', + [1907051096] = 'ch2_01b_l7', + [-2141100092] = 'ch2_01b_l8', + [237503315] = 'ch2_01b_l9', + [307337807] = 'ch2_01b_retwall_dec', + [473527461] = 'ch2_01b_retwall003', + [1270645446] = 'ch2_01b_retwall01', + [-1829515351] = 'ch2_01b_retwall02_lod', + [681958577] = 'ch2_01b_retwall03_lod', + [1918771206] = 'ch2_01b_retwall04_lod', + [-771059872] = 'ch2_01b_retwall04', + [-1186147135] = 'ch2_01c_ch2_02b_infoboard', + [395851712] = 'ch2_01c_l1', + [88445723] = 'ch2_01c_l2', + [2065727183] = 'ch2_01c_l3', + [1758517808] = 'ch2_01c_l4', + [1320396278] = 'ch2_01c_l5', + [1016267189] = 'ch2_01c_l6', + [1990575782] = 'ch2_01c_retainer', + [-1049669400] = 'ch2_01c_retwalb002', + [978982745] = 'ch2_02_armco01', + [576415580] = 'ch2_02_armco02', + [707432227] = 'ch2_02_barrier01_lod', + [1755390252] = 'ch2_02_barrier05_lod', + [153002165] = 'ch2_02_barrier05', + [-1010901451] = 'ch2_02_barrier06_lod', + [-95943928] = 'ch2_02_barrier06', + [1718952592] = 'ch2_02_deco40', + [548850198] = 'ch2_02_drain01_fiz', + [92328935] = 'ch2_02_drain01_lod', + [-1699503441] = 'ch2_02_drain01', + [-1220698395] = 'ch2_02_flag1_lod', + [-950637720] = 'ch2_02_flag2_lod', + [518632587] = 'ch2_02_flag3_lod', + [-690990263] = 'ch2_02_g00', + [-1470728602] = 'ch2_02_g03', + [-1781673643] = 'ch2_02_g04', + [1919486604] = 'ch2_02_g06', + [-1185474457] = 'ch2_02_g07', + [31143984] = 'ch2_02_glue_02', + [-2024005511] = 'ch2_02_glue_03b', + [-280334248] = 'ch2_02_glue_03c', + [523956975] = 'ch2_02_glue_04', + [284382816] = 'ch2_02_glue_05', + [-1062259291] = 'ch2_02_glue_06', + [-1390997899] = 'ch2_02_glue_07', + [-912013426] = 'ch2_02_glue_09', + [-2106017135] = 'ch2_02_glue_10', + [-1725831197] = 'ch2_02_glue_11', + [-2024389556] = 'ch2_02_glue_12', + [900079849] = 'ch2_02_glue_13', + [224120857] = 'ch2_02_glue_14', + [-1091128484] = 'ch2_02_glue_15', + [-1323165773] = 'ch2_02_glue_16', + [-900117983] = 'ch2_02_glue_17', + [1987420763] = 'ch2_02_glue_18', + [1756563158] = 'ch2_02_glue_19', + [1832220227] = 'ch2_02_glue_20', + [1059592745] = 'ch2_02_glue_21', + [-1825193397] = 'ch2_02_glue_22', + [-1516083420] = 'ch2_02_glue_23', + [2010647440] = 'ch2_02_glue_24', + [-2043828165] = 'ch2_02_glue_25', + [1992624486] = 'ch2_02_glue_26', + [-1997099575] = 'ch2_02_glue_27', + [-617983441] = 'ch2_02_glue_28', + [2053874479] = 'ch2_02_grddec_1e', + [-739395277] = 'ch2_02_l01', + [-629160361] = 'ch2_02_l02', + [-413573110] = 'ch2_02_l03', + [-38761288] = 'ch2_02_l04', + [2099645345] = 'ch2_02_l05', + [-1956861938] = 'ch2_02_l06', + [-1329335588] = 'ch2_02_l07', + [-962650474] = 'ch2_02_l08', + [1186242239] = 'ch2_02_l09', + [675898161] = 'ch2_02_l10', + [-987980583] = 'ch2_02_l11', + [-757974972] = 'ch2_02_l12', + [-509520414] = 'ch2_02_l13', + [-281022177] = 'ch2_02_l14', + [2113474191] = 'ch2_02_l15', + [-1945560249] = 'ch2_02_leaves01', + [-850016144] = 'ch2_02_mesh01', + [-1574229629] = 'ch2_02_ob00', + [-1962017979] = 'ch2_02_ob04', + [1897209192] = 'ch2_02_obbuilding', + [457048444] = 'ch2_02_obdecal02', + [761308609] = 'ch2_02_obdecal03', + [-600373479] = 'ch2_02_obgrnd01', + [-351951690] = 'ch2_02_obgrnd02', + [-959292336] = 'ch2_02_obgrnd03', + [613457129] = 'ch2_02_observ_shadobj_lod', + [-1348961567] = 'ch2_02_observ_shadobj', + [1583610618] = 'ch2_02_obtoilet', + [277759089] = 'ch2_02_parkentrance', + [76635152] = 'ch2_02_pathd_01', + [-624516189] = 'ch2_02_rail01', + [-862255284] = 'ch2_02_rail02', + [314119047] = 'ch2_02_rail03', + [82802676] = 'ch2_02_rail04', + [799198554] = 'ch2_02_rail05', + [561295614] = 'ch2_02_rail06', + [1274840593] = 'ch2_02_rail07', + [1033070907] = 'ch2_02_rail08', + [-2003534016] = 'ch2_02_rail09', + [1476481250] = 'ch2_02_rail10', + [585197211] = 'ch2_02_rail11', + [1045339517] = 'ch2_02_rail12', + [120827712] = 'ch2_02_rail13', + [346966581] = 'ch2_02_rail14', + [-675557295] = 'ch2_02_rail15', + [520564551] = 'ch2_02_rail50', + [1638786730] = 'ch2_02_rddcal01', + [2013003530] = 'ch2_02_refproxy1', + [-2042848369] = 'ch2_02_refproxy2', + [-1819953631] = 'ch2_02_refproxy3', + [-1580248396] = 'ch2_02_refproxy4', + [-1118205496] = 'ch2_02_refproxy5', + [-894983068] = 'ch2_02_refproxy6', + [-1746026779] = 'ch2_02_refproxy8', + [778620665] = 'ch2_02_retwall00_lod', + [-216118556] = 'ch2_02_retwall00', + [-192760186] = 'ch2_02_retwall01_lod', + [-1732667884] = 'ch2_02_retwall01', + [-964944477] = 'ch2_02_retwall02_lod', + [-811891745] = 'ch2_02_retwall02', + [1031061778] = 'ch2_02_retwall03_lod', + [66776221] = 'ch2_02_retwall03', + [-204206538] = 'ch2_02_retwall05_lod', + [51768015] = 'ch2_02_retwall05', + [1595297443] = 'ch2_02_retwall06_lod', + [817907235] = 'ch2_02_retwall06', + [-1185555974] = 'ch2_02_retwall07_lod', + [-546692232] = 'ch2_02_retwall07', + [-2086281902] = 'ch2_02_rocks04', + [1056760923] = 'ch2_02_trackwall01', + [-2015421177] = 'ch2_02_trailsign01', + [1512269313] = 'ch2_02_trailweeds', + [1222719889] = 'ch2_02_treetrunk', + [-558153531] = 'ch2_02_tunnel002', + [-30223439] = 'ch2_02_tunnelwall_lod', + [-428073079] = 'ch2_02_tunnelwall', + [741302299] = 'ch2_02_wall01_lod', + [1129524937] = 'ch2_02_wall02', + [-2119698540] = 'ch2_02_weed_01', + [127304563] = 'ch2_02_weed_02', + [-49960016] = 'ch2_02_woodpost01', + [1882173704] = 'ch2_02b_decs00', + [-2103224849] = 'ch2_02b_decs01', + [-1666151923] = 'ch2_02b_decs02', + [-1359139162] = 'ch2_02b_decs03', + [751479359] = 'ch2_02b_decs04', + [1056394904] = 'ch2_02b_decs05', + [1242391748] = 'ch2_02b_decs06', + [-440198091] = 'ch2_02b_decs08', + [-271699893] = 'ch2_02b_decs09', + [-502492900] = 'ch2_02b_decs10', + [-196135519] = 'ch2_02b_decs11', + [-977807245] = 'ch2_02b_decs12', + [-671777554] = 'ch2_02b_decs13', + [454460211] = 'ch2_02b_decs15', + [753215184] = 'ch2_02b_decs16', + [1514162026] = 'ch2_02b_infoboard', + [1768722208] = 'ch2_02b_juicestand_lod', + [1107670067] = 'ch2_02b_juicestand_ovl', + [970949864] = 'ch2_02b_juicestand', + [-57539871] = 'ch2_02b_l024', + [653725247] = 'ch2_02b_l16', + [1250612582] = 'ch2_02b_l18', + [1539471317] = 'ch2_02b_l19', + [633670895] = 'ch2_02b_l20', + [1860706100] = 'ch2_02b_l21', + [1483141682] = 'ch2_02b_l22', + [-2101033235] = 'ch2_02b_l23', + [-1836363824] = 'ch2_02b_retwall008_lod', + [-1688675923] = 'ch2_02b_retwall008', + [302923106] = 'ch2_03_barrier_04_lod', + [-815867178] = 'ch2_03_barrier_04', + [-102435203] = 'ch2_03_d11', + [-590380697] = 'ch2_03_d30', + [-1235237109] = 'ch2_03_decal01', + [-1686012150] = 'ch2_03_dishes001', + [1921817855] = 'ch2_03_dishesdetail', + [1812662526] = 'ch2_03_emis_sign_hd', + [-653073936] = 'ch2_03_emis_sign_slod', + [-68466659] = 'ch2_03_emissive_hut02_lod', + [625105776] = 'ch2_03_hut02_railinga', + [-1543010182] = 'ch2_03_hut02', + [203611151] = 'ch2_03_hut03_decal', + [-2116632386] = 'ch2_03_ladder_mesh_00', + [-1068679750] = 'ch2_03_ladder_mesh_01', + [65979724] = 'ch2_03_ladder_mesh_02', + [1029650476] = 'ch2_03_ladder_mesh_03', + [-484342862] = 'ch2_03_ladder_mesh_04', + [348874501] = 'ch2_03_ladder_mesh_05', + [-962278727] = 'ch2_03_ladder_mesh_06', + [-118902974] = 'ch2_03_ladder_mesh_07', + [-1177800440] = 'ch2_03_ladder_mesh_08', + [-1401186713] = 'ch2_03_ladder_mesh_09', + [-780606667] = 'ch2_03_ladder_mesh_10', + [781557101] = 'ch2_03_ladder_mesh_11', + [1011824864] = 'ch2_03_ladder_mesh_12', + [151114310] = 'ch2_03_ladder_mesh_13', + [415527371] = 'ch2_03_ladder_mesh_14', + [255631348] = 'ch2_03_land04', + [485440345] = 'ch2_03_land05', + [-733337072] = 'ch2_03_land06', + [-79988750] = 'ch2_03_land07', + [-1241453186] = 'ch2_03_land08', + [2070410981] = 'ch2_03_land10', + [1764381290] = 'ch2_03_land11', + [-251241121] = 'ch2_03_parkdet01', + [-466294386] = 'ch2_03_radio_tower_01_decal', + [-840785448] = 'ch2_03_radio_tower_01', + [-1887759324] = 'ch2_03_radio_tower_fizzhd', + [1673693621] = 'ch2_03_retwall_glue', + [-342701740] = 'ch2_03_retwall01', + [603086866] = 'ch2_03_retwalls', + [-1015721672] = 'ch2_03_sign', + [467969413] = 'ch2_03_signdcal', + [-1170032428] = 'ch2_03_signedge01', + [-1408885669] = 'ch2_03_signedge02', + [-694128241] = 'ch2_03_signedge03', + [-931474108] = 'ch2_03_signedge04', + [-812096645] = 'ch2_03_signedge05', + [-1051408652] = 'ch2_03_signedge06', + [1781864630] = 'ch2_03_signedge07', + [-1646723075] = 'ch2_03_signedge08', + [245955245] = 'ch2_03_signframinga', + [13459190] = 'ch2_03_signframingb', + [1412236724] = 'ch2_03_signframingc', + [-1923909632] = 'ch2_03_signframingd', + [935480543] = 'ch2_03_signframinge', + [1638244517] = 'ch2_03_signframingf', + [-1671916022] = 'ch2_03_signframingg', + [1356551784] = 'ch2_03_signjoins01', + [-791161245] = 'ch2_03_signjoins02', + [2130358950] = 'ch2_03_signjoins03', + [1968021324] = 'ch2_03_signjoins04', + [-1550550055] = 'ch2_03_signjoins05', + [368009361] = 'ch2_03_signjoins06', + [205344045] = 'ch2_03_signjoins07', + [-1331259903] = 'ch2_03_signjoins08', + [-1413661615] = 'ch2_03_signstructure_b', + [53225115] = 'ch2_03_signstructure_b2', + [896174871] = 'ch2_03_signstructure_b3', + [655421028] = 'ch2_03_signstructure_b4', + [116207157] = 'ch2_03_signstructure_b5', + [-240122949] = 'ch2_03_signstructure_b6', + [712570188] = 'ch2_03_signstructure_b7', + [353946252] = 'ch2_03_signstructure_b8', + [-349018684] = 'ch2_03_signstructure', + [904626145] = 'ch2_03_towerbase', + [1091986862] = 'ch2_03_vsignlite', + [1807169966] = 'ch2_03_wires01', + [388655830] = 'ch2_03b_barrier_01', + [889661696] = 'ch2_03b_bb_slod', + [1474817542] = 'ch2_03b_cg2_03b_bb', + [-605118215] = 'ch2_03b_d13', + [1218509404] = 'ch2_03b_d15', + [-615079991] = 'ch2_03b_d16', + [1843184847] = 'ch2_03b_d19', + [1439340047] = 'ch2_03b_d20', + [-1398324281] = 'ch2_03b_d22', + [-142026355] = 'ch2_03b_d23', + [-1931475911] = 'ch2_03b_d24', + [-638869933] = 'ch2_03b_d25', + [137132756] = 'ch2_03b_d26', + [914282360] = 'ch2_03b_d27', + [-297521970] = 'ch2_03b_decal_01', + [239594733] = 'ch2_03b_decal_02', + [527798088] = 'ch2_03b_decal_03', + [-123420249] = 'ch2_03b_decal_05', + [1696537246] = 'ch2_03b_decal_07', + [-481827481] = 'ch2_03b_decal_07a', + [2055686334] = 'ch2_03b_decal_10', + [-1872530314] = 'ch2_03b_decal_11', + [-205178060] = 'ch2_03b_decal_14', + [-1758526963] = 'ch2_03b_decal_16', + [1122588807] = 'ch2_03b_decal_21', + [-623735041] = 'ch2_03b_decal_84', + [-1564631338] = 'ch2_03b_decal_87', + [91358647] = 'ch2_03b_drtr1', + [1283331022] = 'ch2_03b_drtr2', + [-299145317] = 'ch2_03b_land05', + [318419337] = 'ch2_03b_land06', + [-1413007885] = 'ch2_03b_land15', + [-2145263959] = 'ch2_03b_land16', + [-759561232] = 'ch2_03b_land18', + [-462379171] = 'ch2_03b_land19', + [1225068000] = 'ch2_03b_road_decal', + [-213853094] = 'ch2_03b_road_decal001', + [-2047351897] = 'ch2_03b_road_decal01', + [1618024602] = 'ch2_03b_road_decal03', + [1622532229] = 'ch2_03c_awning_support', + [1242610882] = 'ch2_03c_awning_support01', + [-2031149779] = 'ch2_03c_awning', + [-1809564235] = 'ch2_03c_combo_a', + [451464000] = 'ch2_03c_combo_d', + [-2126981808] = 'ch2_03c_combo_interior_ovr', + [-1808164759] = 'ch2_03c_combo_interior_win', + [1556756009] = 'ch2_03c_combo_interior', + [-39387476] = 'ch2_03c_combo_win', + [-836077380] = 'ch2_03c_combo', + [-615032567] = 'ch2_03c_emissive_a_lod', + [1978685209] = 'ch2_03c_emissive_b_lod', + [-1805094930] = 'ch2_03c_fence_01_lod', + [1580860141] = 'ch2_03c_fence_01_ovr', + [1952381288] = 'ch2_03c_fence_01', + [1821346553] = 'ch2_03c_fence01', + [1574628764] = 'ch2_03c_fence02', + [2087409793] = 'ch2_03c_fountain_water', + [1843115443] = 'ch2_03c_gate_002', + [1785215547] = 'ch2_03c_gate_01', + [-1647840737] = 'ch2_03c_glue_01', + [881794987] = 'ch2_03c_glue_02', + [722111666] = 'ch2_03c_glue_03', + [-1800183802] = 'ch2_03c_glue_04', + [1586983883] = 'ch2_03c_glue_05', + [-996668113] = 'ch2_03c_hedge_decal_02', + [1186560391] = 'ch2_03c_hedge_decal', + [-475096939] = 'ch2_03c_props_rrlwindmill_lod', + [-79380377] = 'ch2_03c_ranch_ground_01', + [742939114] = 'ch2_03c_ranch_ground_ovr_01', + [496680079] = 'ch2_03c_ranch_ground_ovr_02', + [132747565] = 'ch2_03c_ranch_ground_ovr_03', + [-449164337] = 'ch2_03c_ranch_ground_ovr_04', + [1744916113] = 'ch2_03c_ranch_m_dummy', + [756744775] = 'ch2_03c_ranch_road_01', + [106116280] = 'ch2_03c_ranch_road_02', + [400480207] = 'ch2_03c_ranch_road_03', + [-663439224] = 'ch2_03c_ranch004', + [-902554617] = 'ch2_03c_ranch005', + [-28564563] = 'ch2_03c_ranch009_d', + [-1091395662] = 'ch2_03c_ranch009_detail', + [-40303920] = 'ch2_03c_ranch009', + [-1928588792] = 'ch2_03c_ranchgrnd_water', + [71406489] = 'ch2_03c_ranchgrnd003_ovr', + [603782128] = 'ch2_03c_ranchgrnd003', + [540307670] = 'ch2_03c_removed_doors', + [1613120448] = 'ch2_03c_removedwins', + [-1404670051] = 'ch2_03c_rnchgrnd001', + [1947569012] = 'ch2_03c_rnchgrndov1', + [1532414495] = 'ch2_03c_rnchrocks001', + [672032421] = 'ch2_03c_rnchstones_lod', + [2095667902] = 'ch2_03c_stable_a', + [479426447] = 'ch2_03c_stable_a002', + [396005402] = 'ch2_03c_stable_d', + [-745231810] = 'ch2_03c_stable_d002', + [280444201] = 'ch2_03c_stable', + [1121941362] = 'ch2_03c_stable006', + [1763001309] = 'ch2_03c_stable007', + [1859451195] = 'ch2_03c_stable2_a', + [-1791285023] = 'ch2_03c_stable2_a003', + [-249135644] = 'ch2_03c_stable2_d', + [106173373] = 'ch2_03c_stable2_d003', + [1781520760] = 'ch2_03c_stable2', + [-963803235] = 'ch2_03c_storage_detail', + [-685450131] = 'ch2_03c_storage', + [1899905475] = 'ch2_03c_wall_01_ovr', + [-1713672633] = 'ch2_03c_wall_01', + [-1854684790] = 'ch2_03c_weed_01', + [-1496716234] = 'ch2_03c_weed_02', + [-1967061530] = 'ch2_03d_barrier_02_lod', + [1239138084] = 'ch2_03d_barrier_02', + [-984634789] = 'ch2_03d_barrier_03_lod', + [-1820896674] = 'ch2_03d_barrier_03', + [928562057] = 'ch2_03d_culvert', + [2099082089] = 'ch2_03d_d105', + [1564230393] = 'ch2_03d_d45', + [-2084529492] = 'ch2_03d_d45a', + [-1846364400] = 'ch2_03d_d45b', + [1573113515] = 'ch2_03d_d45f', + [603672748] = 'ch2_03d_d4c', + [-1549906788] = 'ch2_03d_d59', + [168458037] = 'ch2_03d_d59a', + [-1316321839] = 'ch2_03d_l1', + [883330055] = 'ch2_03d_l2', + [1122510986] = 'ch2_03d_l3', + [708310826] = 'ch2_03d_l4', + [-1257345631] = 'ch2_03d_props_combo32_01_lod', + [1170457254] = 'ch2_03d_props_combo35_01_lod', + [-896628279] = 'ch2_03d_retwall00_slod', + [1023149938] = 'ch2_03d_retwall00121', + [-1122924645] = 'ch2_03d_retwall00122', + [1444657890] = 'ch2_04_armco01', + [-791760822] = 'ch2_04_armco02', + [831212965] = 'ch2_04_armco02b', + [-1012656651] = 'ch2_04_armco03', + [-1874645196] = 'ch2_04_armco05', + [-1338323177] = 'ch2_04_armco06_lod', + [169222876] = 'ch2_04_armco06', + [-1436426279] = 'ch2_04_armco10', + [-769541305] = 'ch2_04_b1_lad00', + [-1000136758] = 'ch2_04_b1_lad01', + [-771310827] = 'ch2_04_b1_lad02', + [-1001906280] = 'ch2_04_b1_lad03', + [616095864] = 'ch2_04_b1_lad04', + [385303797] = 'ch2_04_b1_lad05', + [154020195] = 'ch2_04_b1_lad06', + [-971069859] = 'ch2_04_bcarpark1', + [-1193243679] = 'ch2_04_bcarpark2', + [1040154980] = 'ch2_04_bowlrail01', + [1405922558] = 'ch2_04_bowlrail02', + [1785354809] = 'ch2_04_bowlrail03', + [1880122757] = 'ch2_04_bowlrail04', + [1859674957] = 'ch2_04_bowlrail05', + [1499084881] = 'ch2_04_bowlrail06', + [310258330] = 'ch2_04_bowlrail07', + [1692946285] = 'ch2_04_bowlrail08', + [905113987] = 'ch2_04_bowlrail09', + [52004937] = 'ch2_04_bowlrail10', + [291546327] = 'ch2_04_bowlrail11', + [-23625915] = 'ch2_04_bowlrail12', + [-858809418] = 'ch2_04_bowlrail13', + [-637422054] = 'ch2_04_bowlrail14', + [828040379] = 'ch2_04_bowlrail15', + [602458583] = 'ch2_04_bowlrail16', + [-303702574] = 'ch2_04_bowlrail17', + [503889431] = 'ch2_04_bowlrail18', + [-934210903] = 'ch2_04_bowlrail19', + [227188299] = 'ch2_04_bowlrail20', + [226047900] = 'ch2_04_build01_ladder_01', + [-1140395419] = 'ch2_04_build01', + [-422268293] = 'ch2_04_build03b_carpark', + [1838030697] = 'ch2_04_build03b_ovly01', + [1739348755] = 'ch2_04_build03b_railings', + [-1901949631] = 'ch2_04_build03b', + [1856340217] = 'ch2_04_bwall01', + [-670706760] = 'ch2_04_bwall02', + [168081325] = 'ch2_04_bwall03', + [1508595581] = 'ch2_04_bwall07', + [-1574533919] = 'ch2_04_c_shader1', + [-672791938] = 'ch2_04_cafe_detail_lod', + [1992733116] = 'ch2_04_cafe_detail', + [-407554076] = 'ch2_04_cafe_ivy', + [-832429635] = 'ch2_04_cafelightse', + [39235426] = 'ch2_04_cloth012_lod', + [-387905465] = 'ch2_04_cloth013_lod', + [2089796773] = 'ch2_04_cloth014_lod', + [-1130838496] = 'ch2_04_cloth015_lod', + [1528160715] = 'ch2_04_cloth016_lod', + [-1618235452] = 'ch2_04_cloth017_lod', + [-1972520642] = 'ch2_04_cloth018_lod', + [1820100942] = 'ch2_04_cloth019_lod', + [-167549391] = 'ch2_04_cloth020_lod', + [-1441184705] = 'ch2_04_cloth11_lod', + [1224412397] = 'ch2_04_frstdcal01', + [-1430138759] = 'ch2_04_frstdcal02', + [1702741490] = 'ch2_04_frstdcal03', + [2010311324] = 'ch2_04_frstdcal04', + [-896449152] = 'ch2_04_glue_01', + [-1506444091] = 'ch2_04_glue_03', + [591099603] = 'ch2_04_glue_04', + [229133229] = 'ch2_04_glue_05', + [-35036855] = 'ch2_04_ground_d', + [889895472] = 'ch2_04_house01_d', + [659876694] = 'ch2_04_house01_details', + [-428089096] = 'ch2_04_house01_wood1', + [-1207040995] = 'ch2_04_house01_wood2', + [-1211510360] = 'ch2_04_house01', + [-869589286] = 'ch2_04_house02_d', + [1719008853] = 'ch2_04_house02_details', + [235354372] = 'ch2_04_house02_railings', + [-980357834] = 'ch2_04_house02', + [21531908] = 'ch2_04_house03_d', + [1286904701] = 'ch2_04_house03_poolrails', + [560765447] = 'ch2_04_house03_railings', + [-452154303] = 'ch2_04_house03', + [392873849] = 'ch2_04_house04_d', + [-669575359] = 'ch2_04_house04_details', + [-1765462577] = 'ch2_04_house04_poolrails_lod', + [-1771336805] = 'ch2_04_house04_poolrails', + [-678719169] = 'ch2_04_house04', + [-369604775] = 'ch2_04_house05_d', + [-256716428] = 'ch2_04_house05_details', + [-1565826819] = 'ch2_04_house05_poolrails', + [2032026692] = 'ch2_04_house05_water', + [138965688] = 'ch2_04_house05', + [394479115] = 'ch2_04_land01', + [631890520] = 'ch2_04_land02', + [1036569581] = 'ch2_04_land02b', + [-1017897554] = 'ch2_04_land03', + [-788154095] = 'ch2_04_land04', + [1357396184] = 'ch2_04_land05', + [1598117258] = 'ch2_04_land06', + [-66482408] = 'ch2_04_land07', + [170994535] = 'ch2_04_land08', + [-78737974] = 'ch2_04_land09', + [1371112328] = 'ch2_04_nwobj03', + [1633741040] = 'ch2_04_pstat_rail01', + [1394035805] = 'ch2_04_pstat_rail02', + [875680226] = 'ch2_04_pstat', + [1747222518] = 'ch2_04_pstatdcal01', + [-365574331] = 'ch2_04_pstatgrnd', + [640765088] = 'ch2_04_rngrhut', + [1847488012] = 'ch2_04_rngrhutdcal', + [-1678940949] = 'ch2_04_shelter00', + [2086506766] = 'ch2_04_shelter002', + [-1233348083] = 'ch2_04_shelter01', + [-1119148650] = 'ch2_04_v00', + [-1585713676] = 'ch2_04_v01', + [-469841578] = 'ch2_04_v013', + [-1891743367] = 'ch2_04_v02', + [-2042513536] = 'ch2_04_v04', + [713359364] = 'ch2_04_v06', + [-1822993789] = 'ch2_04_v10', + [-903856104] = 'ch2_04_v11', + [2013371352] = 'ch2_04_v12', + [1580405125] = 'ch2_04_vbsign01_railings', + [-2062186816] = 'ch2_04_vbsign01', + [1123136035] = 'ch2_04_vbsign02_railings', + [-1811667811] = 'ch2_04_vbsign02', + [1682564725] = 'ch2_04_wall10', + [-917115715] = 'ch2_04_wall10dcal', + [1177056006] = 'ch2_04_walldcal02', + [-2042672185] = 'ch2_04_weed_02', + [-1744834744] = 'ch2_04_weed_03', + [871488374] = 'ch2_05_decal', + [879570297] = 'ch2_05_glue', + [1381959231] = 'ch2_05_glue2', + [977846741] = 'ch2_05_l', + [-312818185] = 'ch2_05_ladders', + [-1987543001] = 'ch2_05_nh1', + [1790872421] = 'ch2_05_nh2_detail', + [-2146144957] = 'ch2_05_nh2', + [-1025581071] = 'ch2_05_pool', + [-786197395] = 'ch2_05_weed_01', + [179341190] = 'ch2_05_weed_02', + [-1216730688] = 'ch2_05_xtb', + [-667901167] = 'ch2_05_xtb01', + [-1683657373] = 'ch2_05b_decal', + [223799074] = 'ch2_05b_glue', + [1676210345] = 'ch2_05b_glue2', + [-645788960] = 'ch2_05b_h_detail', + [-1402974422] = 'ch2_05b_h_detail2', + [-1727027063] = 'ch2_05b_h_detail3', + [1205798437] = 'ch2_05b_h_detail4', + [-1241226638] = 'ch2_05b_h_detail5', + [-798689439] = 'ch2_05b_h', + [-1658278097] = 'ch2_05b_land', + [492715149] = 'ch2_05b_pool001', + [-811129151] = 'ch2_05c_alpha', + [1927224200] = 'ch2_05c_b1_chophse', + [137357421] = 'ch2_05c_b1', + [-1049746666] = 'ch2_05c_b2_detail', + [-142489839] = 'ch2_05c_b2', + [-1399148220] = 'ch2_05c_b3', + [-1704620838] = 'ch2_05c_b4', + [451138167] = 'ch2_05c_b5_detail', + [-782075181] = 'ch2_05c_b5', + [-1079486625] = 'ch2_05c_b6', + [67106326] = 'ch2_05c_b7_railings', + [1988314390] = 'ch2_05c_b7', + [1602225199] = 'ch2_05c_b8_wall', + [1690411411] = 'ch2_05c_b8', + [-1365904176] = 'ch2_05c_decals_00', + [-693910289] = 'ch2_05c_decals_01', + [-944593139] = 'ch2_05c_decals_02', + [2045643649] = 'ch2_05c_decals_03', + [-342397226] = 'ch2_05c_decals_04', + [-1250683484] = 'ch2_05c_decals_04b', + [1618307984] = 'ch2_05c_decals_04c', + [1261125884] = 'ch2_05c_decals_04d', + [261535444] = 'ch2_05c_decals_05', + [-118847108] = 'ch2_05c_decals_06', + [613640413] = 'ch2_05c_decals_06b', + [854752651] = 'ch2_05c_decals_07', + [-1447102966] = 'ch2_05c_decals_07b', + [-446272176] = 'ch2_05c_decals_07c', + [-1285322421] = 'ch2_05c_decals_07d', + [-1758995505] = 'ch2_05c_garage_01', + [1436922025] = 'ch2_05c_h1_water_1', + [-1405067811] = 'ch2_05c_h1_water_2', + [1415797216] = 'ch2_05c_land', + [1022807748] = 'ch2_05c_props_combo_01_lod', + [-1292539008] = 'ch2_05c_tree_mirrorreflcproxy', + [2112025788] = 'ch2_05c_v_franklins_e_dummy', + [-892214633] = 'ch2_05c_v_franklins_e_lod', + [-1541911587] = 'ch2_05c_walldetails', + [1167670980] = 'ch2_05d_garage_01', + [-1798089384] = 'ch2_05d_h3_decal', + [-1037309744] = 'ch2_05d_house3', + [-1969062745] = 'ch2_05d_land', + [-718754039] = 'ch2_05d_pool', + [-157338359] = 'ch2_05d_res_decal', + [-1768592797] = 'ch2_05d_res1_dtl', + [993460681] = 'ch2_05d_res1', + [-1987031522] = 'ch2_05d_res3_dtl', + [-460668377] = 'ch2_05d_res3_dtlb', + [-156146060] = 'ch2_05d_res3_dtlc', + [1122655183] = 'ch2_05d_rescape', + [97521321] = 'ch2_05d_rescape2', + [1299427848] = 'ch2_05d_retwall01_lod', + [724995625] = 'ch2_05d_retwall01', + [1588786216] = 'ch2_05d_retwall02_lod', + [963914404] = 'ch2_05d_retwall02', + [1645516027] = 'ch2_05d_upper_3b_ladder', + [-1022758481] = 'ch2_05d_upper_house2_dtl', + [-406945226] = 'ch2_05d_upper_house2_dtl2', + [1937905987] = 'ch2_05d_upper_house2_dtlb', + [-2127219543] = 'ch2_05d_upper_house2_dtlc', + [522281875] = 'ch2_05d_upper_house2b', + [1555034574] = 'ch2_05d_upper_res_dtl', + [1778188361] = 'ch2_05d_upper_res1_dtl', + [-328049329] = 'ch2_05d_upper_res1', + [-171311804] = 'ch2_05d_upper_res3b_detail', + [1698729682] = 'ch2_05d_upper_res3b', + [1076159498] = 'ch2_05d_upper_res4_detail', + [-2000043075] = 'ch2_05d_upper_res4_dtl', + [-1897684433] = 'ch2_05d_upper_res4', + [1443166570] = 'ch2_05d_wickerwall', + [1027232254] = 'ch2_05e_l1_decal001', + [1218703072] = 'ch2_05e_l1', + [-2006405106] = 'ch2_05e_l2_decal001', + [232323403] = 'ch2_05e_l2', + [-726979548] = 'ch2_05e_land_walls_dtl', + [-980918354] = 'ch2_05e_land_walls', + [1671977006] = 'ch2_05e_res1_dtl', + [730618403] = 'ch2_05e_res1_dtlb', + [1553808452] = 'ch2_05e_res1_dtlc', + [1081082858] = 'ch2_05e_res1_dtld', + [-108619549] = 'ch2_05e_res1', + [1525516622] = 'ch2_05e_res2_dtl', + [566186903] = 'ch2_05e_res2_dtla', + [1472249757] = 'ch2_05e_res2_dtlb', + [278022936] = 'ch2_05e_res2_ladder', + [129742157] = 'ch2_05e_res2', + [-1439826051] = 'ch2_05e_res3_dtl', + [-218076660] = 'ch2_05e_res3_dtla', + [476815215] = 'ch2_05e_res3_ladder', + [1443484136] = 'ch2_05e_res3', + [-1235276244] = 'ch2_05e_res4_dtl', + [-1074332496] = 'ch2_05e_res4_dtla', + [-1076833469] = 'ch2_05e_res4_ladder', + [1679158784] = 'ch2_05e_res4', + [1705776090] = 'ch2_05e_res4frnt', + [-2002878485] = 'ch2_05e_res5_dtl', + [1958908490] = 'ch2_05e_res5_ladder', + [845154965] = 'ch2_05e_res5', + [1881055917] = 'ch2_05e_res7_dtl', + [876906414] = 'ch2_05e_res7_dtla', + [580641885] = 'ch2_05e_res7_dtlb', + [1608998643] = 'ch2_05e_res7_dtlc', + [1108943703] = 'ch2_05e_res7_dtld', + [-1825206934] = 'ch2_05e_res7_ladder', + [-1831220353] = 'ch2_05e_res7', + [1864917736] = 'ch2_05e_res8_dtl', + [-818107902] = 'ch2_05e_res8_dtlb', + [-1172587093] = 'ch2_05e_res8_ladder', + [-1606883779] = 'ch2_05e_res8', + [1014717456] = 'ch2_05e_ret_wall', + [2025821166] = 'ch2_05e_ret_wall2', + [-987542753] = 'ch2_05e_water_02', + [1503457945] = 'ch2_05e_weed_01', + [1802409532] = 'ch2_05e_weed_02', + [233437012] = 'ch2_05f_armco_lod', + [-322687572] = 'ch2_05f_armco', + [25340637] = 'ch2_05f_armco2_lod', + [1629545031] = 'ch2_05f_armco2', + [721433535] = 'ch2_05f_armcotop_lod', + [1773134418] = 'ch2_05f_armcotop', + [857008054] = 'ch2_05f_basearmcob_lod', + [-768459074] = 'ch2_05f_basearmcob', + [-2078096444] = 'ch2_05f_basearmcod_lod', + [785151985] = 'ch2_05f_basearmcod', + [9086002] = 'ch2_05f_hs02_dt', + [1379918023] = 'ch2_05f_hs02_dtla', + [-238739485] = 'ch2_05f_hs02_dtlb', + [-15025522] = 'ch2_05f_hs02_dtlc', + [206689532] = 'ch2_05f_hs02_dtld', + [463238033] = 'ch2_05f_hs02_dtle', + [-2045381162] = 'ch2_05f_hs02_railings', + [1002991805] = 'ch2_05f_hs02', + [1568008287] = 'ch2_05f_hs03_details', + [1541317863] = 'ch2_05f_hs03_rails', + [693891256] = 'ch2_05f_hs04_details', + [446975743] = 'ch2_05f_hs04_railings', + [-1095465708] = 'ch2_05f_hs04_railingsb', + [-856743543] = 'ch2_05f_hs04_railingsc', + [1358768547] = 'ch2_05f_hs04_railingsd', + [186224480] = 'ch2_05f_hs04', + [1183120439] = 'ch2_05f_hs05_details', + [699706198] = 'ch2_05f_hs05_detailsb', + [1950725649] = 'ch2_05f_hs05_dtlb', + [1319836849] = 'ch2_05f_hs05_glass_lod', + [979331582] = 'ch2_05f_hs05_glass', + [1059797102] = 'ch2_05f_hs05_railing_lod', + [-788552431] = 'ch2_05f_hs05_railing', + [-2005073648] = 'ch2_05f_hs05_railings', + [753128180] = 'ch2_05f_hs05', + [668461730] = 'ch2_05f_hs06_details', + [2144730560] = 'ch2_05f_hs06_pil_lod', + [-849940813] = 'ch2_05f_hs06_pil', + [-1292520924] = 'ch2_05f_hs06_railings', + [1721878127] = 'ch2_05f_hs06', + [-2082757149] = 'ch2_05f_hs07_details', + [1311166208] = 'ch2_05f_hs07_detailsa', + [1855255055] = 'ch2_05f_hs07_railings_lod', + [808627889] = 'ch2_05f_hs07_railings', + [-1119391476] = 'ch2_05f_hs07_wood', + [2018699729] = 'ch2_05f_hs07', + [-1223016177] = 'ch2_05f_hs08_details', + [1231440975] = 'ch2_05f_hs09_1', + [1409769873] = 'ch2_05f_hs09_2', + [1717632827] = 'ch2_05f_hs09_details', + [1931362982] = 'ch2_05f_hs09_railings', + [522575524] = 'ch2_05f_hs09_railingsb', + [-1807722096] = 'ch2_05f_hs09_wood', + [-1112281484] = 'ch2_05f_hs10_details', + [-1191917020] = 'ch2_05f_hs10_railings', + [1777832231] = 'ch2_05f_hs10_wood_lod', + [-1225354092] = 'ch2_05f_hs10_wood', + [894658371] = 'ch2_05f_hs10', + [-1037115308] = 'ch2_05f_hs10glass', + [-416463167] = 'ch2_05f_hs11_details', + [-1358561319] = 'ch2_05f_hs11_detailsb', + [1902886916] = 'ch2_05f_plot01interior', + [-490990170] = 'ch2_05f_plot06interior', + [1973554829] = 'ch2_05f_plot09interior', + [-1523913073] = 'ch2_05f_poolwtr03', + [1788542696] = 'ch2_05f_terrain_01', + [-204730036] = 'ch2_05f_terrain_02', + [-1094703311] = 'ch2_05f_terrain_03', + [1063672780] = 'ch2_06_brdgerail01', + [-126464539] = 'ch2_06_brdgerail02', + [446403127] = 'ch2_06_brdgerail03', + [-700380805] = 'ch2_06_brdgerail04', + [141749726] = 'ch2_06_brdgerail05', + [-1316274160] = 'ch2_06_brdgerail06', + [-2086650343] = 'ch2_06_bridge', + [-909201700] = 'ch2_06_docksteps01', + [536262795] = 'ch2_06_docksteps02_lod', + [396216953] = 'ch2_06_docksteps02', + [603906875] = 'ch2_06_docksteps03', + [28286621] = 'ch2_06_docksteps04', + [243415106] = 'ch2_06_docksteps05', + [1581045686] = 'ch2_06_docksteps06', + [346647344] = 'ch2_06_docksteps07_lod', + [1331804612] = 'ch2_06_docksteps07', + [1975577325] = 'ch2_06_emissive_02_slod', + [599190722] = 'ch2_06_emissive_03_slod', + [525157941] = 'ch2_06_emissive_04_slod', + [-90595827] = 'ch2_06_emissive_04b_lod', + [-935297086] = 'ch2_06_emissive_slod', + [1204354192] = 'ch2_06_estsign', + [1160483002] = 'ch2_06_estsigndcal', + [-85787022] = 'ch2_06_fence01_iref', + [1812084777] = 'ch2_06_fence02_iref', + [1475850410] = 'ch2_06_fencing_01', + [-1314397175] = 'ch2_06_fencing_02', + [-1013151758] = 'ch2_06_fencing_03', + [-1796593010] = 'ch2_06_fencing_04', + [-1497379271] = 'ch2_06_fencing_05', + [-125341241] = 'ch2_06_fencing_06', + [177608164] = 'ch2_06_fencing_07', + [-603998024] = 'ch2_06_fencing_08', + [-305439665] = 'ch2_06_fencing_09', + [1300699773] = 'ch2_06_fencing_10', + [875947995] = 'ch2_06_fencing_11', + [1776014118] = 'ch2_06_fencing_12', + [1587657906] = 'ch2_06_fencing_13', + [1994194394] = 'ch2_06_garden', + [-400963775] = 'ch2_06_guttering', + [-1675261163] = 'ch2_06_house02_dtlb', + [-405331337] = 'ch2_06_house02_dtlc', + [-442694499] = 'ch2_06_house02', + [831531986] = 'ch2_06_house1_dtl', + [671907594] = 'ch2_06_house1_dtl2', + [376429521] = 'ch2_06_house1_dtl3', + [63026805] = 'ch2_06_house1_dtl4', + [-238284150] = 'ch2_06_house1_dtl5', + [-678423613] = 'ch2_06_house1_dtl55', + [-1210868078] = 'ch2_06_house1_dtl6', + [-1514735015] = 'ch2_06_house1_dtl7', + [-1805854811] = 'ch2_06_house1_dtl8', + [1934659860] = 'ch2_06_house1_ivy', + [-1697864612] = 'ch2_06_house1_ivy2', + [-1976696033] = 'ch2_06_house1_ivy3', + [1875277219] = 'ch2_06_house1', + [-293169388] = 'ch2_06_house1b', + [-54447223] = 'ch2_06_house1c', + [1240190429] = 'ch2_06_house1d', + [1464690848] = 'ch2_06_house1e', + [-665589073] = 'ch2_06_house1f', + [1609039340] = 'ch2_06_house2_dtl', + [-2038714061] = 'ch2_06_house2_dtl2', + [126821351] = 'ch2_06_house2_rail1', + [-114718948] = 'ch2_06_house2_rail2', + [722987768] = 'ch2_06_house2_rail3', + [-39579296] = 'ch2_06_house2', + [-1600500968] = 'ch2_06_house3_dtl', + [220208566] = 'ch2_06_house3_dtl2', + [240825037] = 'ch2_06_house3', + [-1849570186] = 'ch2_06_miscdetail_', + [-749557965] = 'ch2_06_pool_01', + [975928079] = 'ch2_06_rddcal00', + [122754395] = 'ch2_06_rddcal01', + [370914032] = 'ch2_06_rddcal02', + [-502904106] = 'ch2_06_rddcal03', + [-203952519] = 'ch2_06_rddcal04', + [-1099856979] = 'ch2_06_rddcal05', + [2059271608] = 'ch2_06_reswall00_dtl', + [-369902061] = 'ch2_06_reswall00', + [332602883] = 'ch2_06_reswall02_dtl', + [-292862142] = 'ch2_06_reswall02', + [525336766] = 'ch2_06_reswall05_dtl', + [956292138] = 'ch2_06_reswall05', + [1475062402] = 'ch2_06_reswall06_dtl', + [1201895793] = 'ch2_06_reswall06', + [163167428] = 'ch2_06_reswall07_dtl', + [-1997571064] = 'ch2_06_reswall07', + [1440172398] = 'ch2_06_reswall09_dtl', + [241895173] = 'ch2_06_reswall09', + [-1534630411] = 'ch2_06_reswall11_dtl', + [-1548045698] = 'ch2_06_reswall11', + [-803236821] = 'ch2_06_reswall15_dtl', + [716488820] = 'ch2_06_reswall15', + [749772741] = 'ch2_06_reswall15a_dtl', + [1007117081] = 'ch2_06_reswall16', + [2119460786] = 'ch2_06_reswall17', + [-984355004] = 'ch2_06_reswall30', + [774381210] = 'ch2_06_reswall31_lod', + [-86320583] = 'ch2_06_reswall31', + [-1595857313] = 'ch2_06_reswall32', + [-1937048141] = 'ch2_06_reswall33', + [2052086078] = 'ch2_06_reswall34', + [-927331619] = 'ch2_06_reswalldcal', + [1767703781] = 'ch2_06_skidock01', + [-1296606538] = 'ch2_06_skidock02_dtl', + [-1035782476] = 'ch2_06_skidock02', + [-1877781935] = 'ch2_06_skidock03', + [-743219960] = 'ch2_06_skidock10', + [1177531473] = 'ch2_06_skidock9', + [1027866216] = 'ch2_06_terrain01a', + [-208200280] = 'ch2_06_terrain01b_dtl_000', + [-206181555] = 'ch2_06_terrain01b', + [-1122971665] = 'ch2_06_terrain01c_dtl', + [-529546047] = 'ch2_06_terrain01c', + [-2053616106] = 'ch2_06_terrain02', + [935752267] = 'ch2_06_tower', + [1906275157] = 'ch2_06_treetrunk', + [1216611153] = 'ch2_06_wall', + [-471384197] = 'ch2_06_wall01_iref', + [-1290975757] = 'ch2_06_windows_iref', + [-1712293655] = 'ch2_07_fence_01', + [1443110560] = 'ch2_07_fence_02a', + [1682684719] = 'ch2_07_fence_02b', + [1869849584] = 'ch2_07_fence_03', + [-603480291] = 'ch2_07_fence_04a', + [1031791116] = 'ch2_07_fence_04b', + [1076381018] = 'ch2_07_fence_05', + [1266248720] = 'ch2_07_fizzrail01', + [1027592093] = 'ch2_07_fizzrail02', + [-344609794] = 'ch2_07_fizzrail03', + [-680557582] = 'ch2_07_fizzrail04', + [468083523] = 'ch2_07_hedgedtl_01', + [273501201] = 'ch2_07_hedgedtl_02', + [-1098504060] = 'ch2_07_hedgedtl_03', + [-453085836] = 'ch2_07_hedgedtl_04', + [1758821660] = 'ch2_07_hedgedtl_05', + [1500175943] = 'ch2_07_hedgedtl_06', + [127777458] = 'ch2_07_hedgedtl_07', + [-305428722] = 'ch2_07_hedgedtl_08', + [-1940044753] = 'ch2_07_hedgedtl_09', + [-581146860] = 'ch2_07_hedgedtl_10', + [-38131765] = 'ch2_07_hedgedtl_11', + [-880589986] = 'ch2_07_hedgedtl_12', + [-516657472] = 'ch2_07_hedgedtl_13', + [-1359574459] = 'ch2_07_hedgedtl_14', + [1159478042] = 'ch2_07_house_l2c_dtl', + [-554346560] = 'ch2_07_house_l2c', + [435279616] = 'ch2_07_house03_dtl', + [-357469072] = 'ch2_07_house03', + [48601299] = 'ch2_07_house55_dtl', + [-318640635] = 'ch2_07_house55', + [-1906972361] = 'ch2_07_house78_dtl', + [-452699186] = 'ch2_07_house78', + [-313572627] = 'ch2_07_house79a_dtl', + [-1241971182] = 'ch2_07_house79a', + [348281276] = 'ch2_07_house81_dtl', + [-478655786] = 'ch2_07_house81', + [473419931] = 'ch2_07_house82_dtl', + [-634472381] = 'ch2_07_house82', + [1484940371] = 'ch2_07_house83_dtl', + [-923494961] = 'ch2_07_house83', + [-937868534] = 'ch2_07_house97_dtl', + [-1110670585] = 'ch2_07_house97', + [355797281] = 'ch2_07_l1', + [-1243949624] = 'ch2_07_land024_dcl', + [-2027210992] = 'ch2_07_poolladder_01', + [265111638] = 'ch2_07_poolladder_02', + [561441705] = 'ch2_07_poolladder_03', + [-1639391522] = 'ch2_07_water_01', + [-947352020] = 'ch2_07b_10', + [917613117] = 'ch2_07b_17_dtl', + [515816603] = 'ch2_07b_17', + [-1179436128] = 'ch2_07b_20_dtl', + [-1182568058] = 'ch2_07b_20', + [1510149509] = 'ch2_07b_31_dtl', + [850388313] = 'ch2_07b_31_ivy_dtl', + [-908717877] = 'ch2_07b_31', + [-1935054131] = 'ch2_07b_build_dtl', + [-1504799270] = 'ch2_07b_build', + [-1961139128] = 'ch2_07b_build01_dtl', + [1955792660] = 'ch2_07b_build01', + [1744451306] = 'ch2_07b_build02_dtl', + [-1497076874] = 'ch2_07b_build02', + [137028705] = 'ch2_07b_build03_dtl', + [-917473716] = 'ch2_07b_build03_raily', + [-1728131093] = 'ch2_07b_build03', + [2090340603] = 'ch2_07b_build04_dtl', + [-900124001] = 'ch2_07b_build04', + [-1839258019] = 'ch2_07b_build04b', + [450111494] = 'ch2_07b_build05_dtl', + [1233891590] = 'ch2_07b_build05', + [-217717462] = 'ch2_07b_build06_dtl', + [1664803940] = 'ch2_07b_build06', + [-1421128201] = 'ch2_07b_fences01', + [-1727551120] = 'ch2_07b_fences02', + [1205667612] = 'ch2_07b_fences03', + [1631757185] = 'ch2_07b_fencing009', + [-1353851236] = 'ch2_07b_fencing1', + [-2144750193] = 'ch2_07b_fencing10', + [-497859386] = 'ch2_07b_fencing2', + [-805658603] = 'ch2_07b_fencing3', + [-1709657010] = 'ch2_07b_fencing4', + [-2012606415] = 'ch2_07b_fencing5', + [-1097040555] = 'ch2_07b_fencing6', + [-1393763850] = 'ch2_07b_fencing7', + [1393108528] = 'ch2_07b_fencing8', + [-624280649] = 'ch2_07b_garage_01', + [508805940] = 'ch2_07b_hedgedtl_01', + [-412035729] = 'ch2_07b_hedgedtl_02', + [-1045919265] = 'ch2_07b_hedgedtl_03', + [2062974072] = 'ch2_07b_hedgedtl_04', + [1695240354] = 'ch2_07b_hedgedtl_05', + [239346453] = 'ch2_07b_hedgedtl_06', + [11438058] = 'ch2_07b_hedgedtl_07', + [1044480787] = 'ch2_07b_hedgedtl_08', + [-1346574840] = 'ch2_07b_hedgedtl_09', + [-1932220908] = 'ch2_07b_hedgedtl_10', + [1552598401] = 'ch2_07b_hedgedtl_11', + [81368544] = 'ch2_07b_hedgedtl_12', + [849113445] = 'ch2_07b_hedgedtl_13', + [-399450993] = 'ch2_07b_hedgedtl_14', + [368490522] = 'ch2_07b_hedgedtl_15', + [-839735277] = 'ch2_07b_hedgedtl_16', + [-1111980129] = 'ch2_07b_hedgedtl_17', + [-1286212906] = 'ch2_07b_hedgedtl_18', + [-1583427736] = 'ch2_07b_hedgedtl_19', + [994901862] = 'ch2_07b_hedgedtl_20', + [-914777151] = 'ch2_07b_hedgedtl_21', + [197730399] = 'ch2_07b_hedgedtl_22', + [706829583] = 'ch2_07b_hedgedtl_23', + [-2108650132] = 'ch2_07b_hedgedtl_24', + [-1872483949] = 'ch2_07b_hedgedtl_25', + [-691161495] = 'ch2_07b_hedgedtl_26', + [-445721685] = 'ch2_07b_hedgedtl_27', + [-1453696125] = 'ch2_07b_hedgedtl_28', + [-1222674675] = 'ch2_07b_hedgedtl_29', + [-152892853] = 'ch2_07b_poolladder_006', + [1068546550] = 'ch2_07b_poolladder_05_dlod', + [1434842390] = 'ch2_07b_poolladder_1', + [2135705766] = 'ch2_07b_poolladder_2', + [832318787] = 'ch2_07b_poolladder_3', + [-1863226352] = 'ch2_07b_poolladder_4', + [-705700049] = 'ch2_07b_props_g_door_lod', + [1304100248] = 'ch2_07b_water', + [-549681521] = 'ch2_07c_building_a_dtl', + [-1407290972] = 'ch2_07c_building_a_dtl2', + [746446587] = 'ch2_07c_building_a', + [35615749] = 'ch2_07c_building_b_dtl', + [238953084] = 'ch2_07c_building_b', + [1587724134] = 'ch2_07c_building_c_dtl', + [-643870249] = 'ch2_07c_building_c_dtl2', + [-1538607] = 'ch2_07c_building_c', + [-1041824311] = 'ch2_07c_constrplot_decals', + [1362275894] = 'ch2_07c_constrplot_gnd', + [789548290] = 'ch2_07c_fencing1', + [-965329971] = 'ch2_07c_fencing2', + [-666050694] = 'ch2_07c_fencing3', + [-656809836] = 'ch2_07c_fencing4', + [-507094324] = 'ch2_07c_hedgedtl_01', + [691628465] = 'ch2_07c_hedgedtl_02', + [-1233484747] = 'ch2_07c_hedgedtl_03', + [-1934118740] = 'ch2_07c_hedgedtl_04', + [-1408176290] = 'ch2_07c_hedgedtl_05', + [-230425657] = 'ch2_07c_hedgedtl_06', + [-1110739946] = 'ch2_07c_indust_det', + [-1098397382] = 'ch2_07c_poolladder1', + [-1032265514] = 'ch2_07c_terrain_a_lod', + [-424774544] = 'ch2_07c_terrain_a', + [-1393983257] = 'ch2_07c_terrain_b', + [-979799059] = 'ch2_07c_water_01', + [1235015851] = 'ch2_07d_b1a', + [-1077492706] = 'ch2_07d_build00_dtl', + [191722308] = 'ch2_07d_build00', + [-1656535363] = 'ch2_07d_build01_dtl', + [-1860796772] = 'ch2_07d_build01', + [-775181449] = 'ch2_07d_build02_dtl', + [1591056923] = 'ch2_07d_build02', + [-279005011] = 'ch2_07d_build02shutters', + [1647604710] = 'ch2_07d_build11_dtl', + [1913634143] = 'ch2_07d_build11', + [1775437034] = 'ch2_07d_fence140', + [-239572331] = 'ch2_07d_fencing_02', + [2138408465] = 'ch2_07d_fencing_03', + [1234334499] = 'ch2_07d_fencing_05a', + [1484361969] = 'ch2_07d_fencing_05b', + [725999023] = 'ch2_07d_fencing_06', + [2056912068] = 'ch2_07d_fencing_07_lod', + [931132963] = 'ch2_07d_fencing_07', + [-1532844580] = 'ch2_07d_fencing_08_dlod', + [-964848608] = 'ch2_07d_fencing_08', + [718555959] = 'ch2_07d_hedgedtl_01', + [1960566697] = 'ch2_07d_hedgedtl_02', + [128845035] = 'ch2_07d_hedgedtl_03', + [-34115202] = 'ch2_07d_hedgedtl_04', + [-198615582] = 'ch2_07d_hedgedtl_05', + [-630609309] = 'ch2_07d_hedgedtl_06', + [-792291555] = 'ch2_07d_hedgedtl_07', + [59899163] = 'ch2_07d_hedgedtl_08', + [-1788731207] = 'ch2_07d_hedgedtl_09', + [-1463597537] = 'ch2_07d_hedgedtl_10', + [1455759908] = 'ch2_07d_hedgedtl_11', + [1106770054] = 'ch2_07d_hedgedtl_12', + [682214890] = 'ch2_07d_hedgedtl_13', + [528692125] = 'ch2_07d_hedgedtl_14', + [338697463] = 'ch2_07d_hedgedtl_15', + [1811369108] = 'ch2_07d_hedgedtl_16', + [2001363770] = 'ch2_07d_hedgedtl_17', + [1215595919] = 'ch2_07d_hedgedtl_18', + [1859374480] = 'ch2_07d_hint120', + [-311336688] = 'ch2_07d_house140_dtl', + [-225766844] = 'ch2_07d_house140', + [539649976] = 'ch2_07d_house141_dtl', + [751371967] = 'ch2_07d_house141', + [213709691] = 'ch2_07d_house144_dtl', + [1506599110] = 'ch2_07d_house144', + [-1781764177] = 'ch2_07d_house84_dtl', + [-492820204] = 'ch2_07d_house84', + [-177625683] = 'ch2_07d_house85_dtl', + [942593088] = 'ch2_07d_house85', + [1000710384] = 'ch2_07d_house89_dtl', + [67628019] = 'ch2_07d_house89', + [348881028] = 'ch2_07d_l1', + [-1836483582] = 'ch2_07d_l2', + [477579246] = 'ch2_07d_newrail_01', + [735110817] = 'ch2_07d_newrail_02', + [1042484037] = 'ch2_07d_newrail_03', + [1329311094] = 'ch2_07d_newrail_04', + [1904931348] = 'ch2_07d_newrail_05', + [1210425154] = 'ch2_07d_newrail_06', + [1459371247] = 'ch2_07d_newrail_07', + [1536443935] = 'ch2_07d_newrail_08', + [1851681715] = 'ch2_07d_newrail_09', + [-578110658] = 'ch2_07d_newrail_10', + [-899574548] = 'ch2_07d_newrail_11', + [-1249350854] = 'ch2_07d_newrail_12', + [-1571994428] = 'ch2_07d_newrail_13', + [-1863605759] = 'ch2_07d_newrail_14', + [2145222629] = 'ch2_07d_newrail_15', + [1853807912] = 'ch2_07d_newrail_16', + [1530508958] = 'ch2_07d_newrail_17', + [1247024339] = 'ch2_07d_newrail_18', + [944140472] = 'ch2_07d_newrail_19', + [1686876849] = 'ch2_07d_poolladder_01', + [1473419583] = 'ch2_07d_poolladder_02', + [-236434068] = 'ch2_07d_poolladder_03', + [-536237649] = 'ch2_07d_poolladder_04', + [-1925905405] = 'ch2_07d_poolladder_05', + [-74686284] = 'ch2_07d_poolladder_06', + [-1977024243] = 'ch2_07d_structure_01', + [-1075876743] = 'ch2_07d_structure_02', + [-1319121030] = 'ch2_07d_structure_03', + [-568547089] = 'ch2_07d_structure_04', + [1176131484] = 'ch2_07d_terrain_decal', + [1947059599] = 'ch2_07d_water_01', + [-1806319931] = 'ch2_08_bamboo01', + [1048384281] = 'ch2_08_bamboo02', + [-1327335458] = 'ch2_08_bamboo03', + [-1244395504] = 'ch2_08_garage_outline', + [1541959547] = 'ch2_08_gate002', + [-1592690224] = 'ch2_08_gate003', + [-147423412] = 'ch2_08_gate01', + [2062214709] = 'ch2_08_house00_dtl', + [1499139232] = 'ch2_08_house00_prailing', + [-1263255645] = 'ch2_08_house00_railing', + [-797057439] = 'ch2_08_house00', + [-941675817] = 'ch2_08_house01_dtl', + [1154306457] = 'ch2_08_house01_fence', + [-1245144500] = 'ch2_08_house01_prails', + [-400568261] = 'ch2_08_house01_railings', + [1636040771] = 'ch2_08_house01', + [-1660994462] = 'ch2_08_house02_dtl', + [-1619755997] = 'ch2_08_house02', + [1414913266] = 'ch2_08_house03_dtl', + [1065126052] = 'ch2_08_house03_railing', + [-1859002466] = 'ch2_08_house03', + [-1372686994] = 'ch2_08_house04_dtl', + [-1092109559] = 'ch2_08_house04', + [-1423015895] = 'ch2_08_house05_dtl', + [-1395812651] = 'ch2_08_house05', + [-495336227] = 'ch2_08_house06_dtl', + [1584293041] = 'ch2_08_house06_dtlb', + [-511171298] = 'ch2_08_house06_railing', + [-615877682] = 'ch2_08_house06', + [-1149287281] = 'ch2_08_house07_dtl', + [2108784515] = 'ch2_08_house07_dtlb', + [41779076] = 'ch2_08_house07_railing', + [-130962020] = 'ch2_08_house07', + [-1181341575] = 'ch2_08_house08_dtl', + [-1327706577] = 'ch2_08_house08_dtlb', + [-828239105] = 'ch2_08_house08balcony', + [-1557602463] = 'ch2_08_house09_dtl', + [-1599816655] = 'ch2_08_house09_railing', + [5750252] = 'ch2_08_house09', + [1381847000] = 'ch2_08_l1_poles_lod', + [-990484658] = 'ch2_08_l1_poles', + [1357269667] = 'ch2_08_l1', + [619836091] = 'ch2_08_l2', + [1442257355] = 'ch2_08_mansionrail01', + [-285167443] = 'ch2_08_mansionsteps', + [-111653578] = 'ch2_08_nwbld03_dtl_b', + [-1691973277] = 'ch2_08_nwbld03_dtl', + [24640068] = 'ch2_08_nwbld03_dtlb', + [518370663] = 'ch2_08_nwbld03_dtlc', + [1443081255] = 'ch2_08_nwbld03_kit_03', + [355063362] = 'ch2_08_nwbld03', + [-238987451] = 'ch2_08_pole_03', + [-1566050978] = 'ch2_08_poles_01_lod', + [381089617] = 'ch2_08_poles_01', + [735544222] = 'ch2_08_poles_02_lod', + [-1527671868] = 'ch2_08_poles_02', + [-1469115377] = 'ch2_08_props_props03_01_lod', + [-1033254988] = 'ch2_08_props_props04_01_lod', + [-1224499126] = 'ch2_08_props_props04_02_lod', + [1111497744] = 'ch2_08_props_props05_14_lod', + [1542057908] = 'ch2_08_props_props05_27_lod', + [170462776] = 'ch2_08_props_props05_28_lod', + [-2082633286] = 'ch2_08_wall02_dtl', + [1347575686] = 'ch2_08_wall02', + [1228981798] = 'ch2_08_water_01', + [-2098874001] = 'ch2_08_water_03', + [1957108978] = 'ch2_08_water_04', + [-1637322636] = 'ch2_08_water_05', + [897276318] = 'ch2_08_wrail_01', + [2082707109] = 'ch2_08b_armco01_lod', + [-1229122089] = 'ch2_08b_armco01', + [-1136698797] = 'ch2_08b_armco01b_lod', + [509347032] = 'ch2_08b_armco01b', + [125404825] = 'ch2_08b_armco01c_lod', + [808069236] = 'ch2_08b_armco01c', + [440105061] = 'ch2_08b_armco026_lod', + [-652646140] = 'ch2_08b_armco026', + [847777683] = 'ch2_08b_armco20', + [-2085016837] = 'ch2_08b_fence1_a', + [1457115453] = 'ch2_08b_fence1_b', + [1202698287] = 'ch2_08b_fence2_a', + [1446827337] = 'ch2_08b_fence2_b', + [-2022854154] = 'ch2_08b_fence3', + [-765239620] = 'ch2_08b_fence4a', + [-1536884032] = 'ch2_08b_fence4b', + [1868667066] = 'ch2_08b_fence4c', + [-517735363] = 'ch2_08b_fence4d', + [-67358227] = 'ch2_08b_fence4e', + [-308243146] = 'ch2_08b_fence4f', + [410905328] = 'ch2_08b_fence4g', + [-1449462192] = 'ch2_08b_fence5', + [731052586] = 'ch2_08b_fence6', + [606276894] = 'ch2_08b_fence6a', + [1221809790] = 'ch2_08b_fence6b', + [2142192693] = 'ch2_08b_fence6c', + [847489503] = 'ch2_08b_fence6d', + [907265893] = 'ch2_08b_fizzwall', + [882046667] = 'ch2_08b_glassfence', + [-876053124] = 'ch2_08b_hs01_details', + [1798708724] = 'ch2_08b_hs01', + [-1649491117] = 'ch2_08b_hs02_details', + [-722669216] = 'ch2_08b_hs02', + [682419030] = 'ch2_08b_hs03_details', + [-941861057] = 'ch2_08b_hs03', + [-2137111622] = 'ch2_08b_hs04_details', + [-2057685962] = 'ch2_08b_hs04_veg1', + [1998362555] = 'ch2_08b_hs04_veg2', + [-1332139847] = 'ch2_08b_hs04', + [-699374689] = 'ch2_08b_hs05_details', + [-1554149822] = 'ch2_08b_hs05', + [-1229132736] = 'ch2_08b_hs06_details', + [238576630] = 'ch2_08b_hs06', + [692260872] = 'ch2_08b_hs06b_lod', + [1595198928] = 'ch2_08b_land01', + [740386794] = 'ch2_08b_land02', + [2016909665] = 'ch2_08b_pool_01', + [-1091819831] = 'ch2_08b_pool_02', + [-849493076] = 'ch2_08b_pool_03', + [-623985934] = 'ch2_08b_poolrail_1', + [-863166865] = 'ch2_08b_poolrail_2', + [1754534783] = 'ch2_08b_poolrail_3a', + [2036348183] = 'ch2_08b_poolrail_3b', + [-382085176] = 'ch2_08b_poolrail_4', + [1841209364] = 'ch2_08b_poolrail_5a', + [921350765] = 'ch2_08b_poolrail_5b', + [-1382326132] = 'ch2_08b_poolrail_6', + [-2005699404] = 'ch2_08b_retwall_lod', + [-1164033691] = 'ch2_08b_retwall', + [935109196] = 'ch2_08b_retwall01', + [-1148199471] = 'ch2_08b_windowcovers', + [127029055] = 'ch2_08b_windowcovers2', + [-1831292938] = 'ch2_09_build_a_59', + [-2017340079] = 'ch2_09_conhse002_details', + [1755312259] = 'ch2_09_conhse002', + [-966826861] = 'ch2_09_conhse002girder01', + [1511033847] = 'ch2_09_conhse002girder02', + [-732175366] = 'ch2_09_conhse002wood01', + [-1509554353] = 'ch2_09_conhse002wood02', + [902368932] = 'ch2_09_fizz_flatrail', + [-2071817100] = 'ch2_09_fizz_flatrailb', + [-284847513] = 'ch2_09_fizz_pladder1', + [-23121510] = 'ch2_09_fizz_pladder2', + [193022814] = 'ch2_09_fizz_pladder3', + [556955328] = 'ch2_09_fizz_pladder4', + [963192621] = 'ch2_09_fizz_pladder5', + [-2017639464] = 'ch2_09_fizz_pladder6', + [-2146288026] = 'ch2_09_fizz_prail1', + [-897416129] = 'ch2_09_fizz_stairs', + [909646315] = 'ch2_09_fizz_stairsb', + [1185904139] = 'ch2_09_hedgedetail_01', + [429464543] = 'ch2_09_hedgedetail_02', + [728743820] = 'ch2_09_hedgedetail_03', + [315166307] = 'ch2_09_hedgedetail_04', + [551922332] = 'ch2_09_hedgedetail_05', + [1712928006] = 'ch2_09_hedgedetail_06', + [1954599381] = 'ch2_09_hedgedetail_07', + [-940869463] = 'ch2_09_hedgedetail_08', + [1444779279] = 'ch2_09_hedgedetail_09', + [566972639] = 'ch2_09_hedgedetail_10', + [1402418298] = 'ch2_09_hedgedetail_11', + [1900507098] = 'ch2_09_hedgedetail_12', + [1521304230] = 'ch2_09_hedgedetail_13', + [1822353029] = 'ch2_09_hedgedetail_14', + [1716640235] = 'ch2_09_hedgedetail_15', + [-1751991188] = 'ch2_09_hedgedetail_16', + [-2118348608] = 'ch2_09_hedgedetail_17', + [-1625896076] = 'ch2_09_hedgedetail_18', + [-789860575] = 'ch2_09_hedgedetail_19', + [-84147927] = 'ch2_09_hedgedetail_20', + [751625418] = 'ch2_09_hedgedetail_21', + [512936022] = 'ch2_09_hedgedetail_22', + [1837079907] = 'ch2_09_house21', + [-753032997] = 'ch2_09_hs01_details', + [-1321497631] = 'ch2_09_hs01_main', + [-663988660] = 'ch2_09_hs02_details', + [522771014] = 'ch2_09_hs02', + [703010261] = 'ch2_09_hs03_details1', + [935834006] = 'ch2_09_hs03_details2', + [-841074766] = 'ch2_09_hs03', + [1596800431] = 'ch2_09_hs04_d', + [-1147563223] = 'ch2_09_hs04', + [-1646310993] = 'ch2_09_hs05_d', + [-401806321] = 'ch2_09_hs05', + [1029586871] = 'ch2_09_hs06_details', + [-706885711] = 'ch2_09_hs06', + [-2070502108] = 'ch2_09_hs07', + [-1531659738] = 'ch2_09_hs08_details', + [1913651223] = 'ch2_09_hs08', + [536059729] = 'ch2_09_hs10_main', + [469552473] = 'ch2_09_hs10a_details', + [597090325] = 'ch2_09_hs10b_details', + [776127751] = 'ch2_09_hs11_details', + [2062561603] = 'ch2_09_l2_a', + [-54382649] = 'ch2_09_l2_decal001', + [-1773899808] = 'ch2_09_l4', + [-163340222] = 'ch2_09_land_dtl', + [-472846641] = 'ch2_09_poolwater009', + [595076721] = 'ch2_09_retwall09', + [1201958873] = 'ch2_09_retwall10', + [-1601101383] = 'ch2_09_retwall11', + [1547841695] = 'ch2_09_tarp004', + [1848104042] = 'ch2_09_tarp005', + [-936834961] = 'ch2_09_tarp006', + [-631067422] = 'ch2_09_tarp007', + [-1965642086] = 'ch2_09_tcoachhse_detail', + [-301975492] = 'ch2_09_tcoachhse', + [-719767165] = 'ch2_09b_deshse_dtl', + [1172171880] = 'ch2_09b_deshse', + [-87772830] = 'ch2_09b_deshsegate_lod', + [1627314460] = 'ch2_09b_deshsegate01', + [-1475582158] = 'ch2_09b_deshsegate02', + [879820801] = 'ch2_09b_deshsegate03', + [-1948668211] = 'ch2_09b_deshsegate04', + [-1709683894] = 'ch2_09b_deshsegate05', + [1504584385] = 'ch2_09b_deshsegatea_lod', + [277494526] = 'ch2_09b_deshsegateb_lod', + [-501243042] = 'ch2_09b_deshsegatec_lod', + [-1407274778] = 'ch2_09b_deshsegated_lod', + [-1567878554] = 'ch2_09b_deshsegatee_lod', + [1338535371] = 'ch2_09b_fizz_fence00', + [1027590310] = 'ch2_09b_fizz_fence01', + [1284171580] = 'ch2_09b_fizz_fence02', + [1509392937] = 'ch2_09b_fizz_fence03', + [-2001739879] = 'ch2_09b_fizz_fence04', + [-1755480844] = 'ch2_09b_fizz_fence05', + [-1498965112] = 'ch2_09b_fizz_fence06', + [-631971678] = 'ch2_09b_fizz_pooldets', + [-1921347405] = 'ch2_09b_hedgedtl_01', + [-1693471779] = 'ch2_09b_hedgedtl_02', + [1442455991] = 'ch2_09b_hedgedtl_03', + [-1001390491] = 'ch2_09b_hedgedtl_04', + [-1838671210] = 'ch2_09b_hedgedtl_05', + [-1598408902] = 'ch2_09b_hedgedtl_06', + [520008641] = 'ch2_09b_hedgedtl_07', + [1769621687] = 'ch2_09b_hedgedtl_08', + [2081320415] = 'ch2_09b_hedgedtl_09', + [1332550193] = 'ch2_09b_hedgedtl_10', + [-822503096] = 'ch2_09b_hedgedtl_11', + [-8422829] = 'ch2_09b_hedgedtl_12', + [-484163171] = 'ch2_09b_hedgedtl_13', + [-1726829189] = 'ch2_09b_hedgedtl_14', + [381626578] = 'ch2_09b_hedgedtl_15', + [1014592582] = 'ch2_09b_hedgedtl_16', + [727437835] = 'ch2_09b_hedgedtl_17', + [-499367987] = 'ch2_09b_hedgedtl_18', + [-1568358309] = 'ch2_09b_hedgedtl_19', + [-1932359002] = 'ch2_09b_hs01_balcony', + [-1284351582] = 'ch2_09b_hs01_pool_ladder', + [-153529340] = 'ch2_09b_hs01_support', + [-751224617] = 'ch2_09b_hs01', + [-1147639241] = 'ch2_09b_hs01a_details', + [-1190959328] = 'ch2_09b_hs01b_details', + [-2029297101] = 'ch2_09b_hs02_balcony', + [923887183] = 'ch2_09b_hs02_door_railings', + [-1456606581] = 'ch2_09b_hs02_railing_01', + [-1156803000] = 'ch2_09b_hs02_railing_02', + [-821379516] = 'ch2_09b_hs02_railing_03', + [-511515852] = 'ch2_09b_hs02_railing_04', + [-379558619] = 'ch2_09b_hs02', + [449846410] = 'ch2_09b_hs02a_details', + [-178549838] = 'ch2_09b_hs02b_details', + [-374672861] = 'ch2_09b_hs03_balcony_01', + [-67332410] = 'ch2_09b_hs03_balcony_02', + [-2058213560] = 'ch2_09b_hs03_details', + [-1328843780] = 'ch2_09b_hs03', + [509572857] = 'ch2_09b_hs04_balcony_01', + [-337014258] = 'ch2_09b_hs04_balcony_02', + [-1028964462] = 'ch2_09b_hs04_balcony_03', + [275471121] = 'ch2_09b_hs04_balcony_04', + [-932754678] = 'ch2_09b_hs04_balcony_05', + [-717462348] = 'ch2_09b_hs04_balcony_06', + [1795362883] = 'ch2_09b_hs04_balcony_07', + [-537766975] = 'ch2_09b_hs04_details', + [-1526899616] = 'ch2_09b_hs04', + [-892962094] = 'ch2_09b_hs05_balc_01', + [-1131159955] = 'ch2_09b_hs05_balc_02', + [-1638751765] = 'ch2_09b_hs05_balc_03', + [-1883962192] = 'ch2_09b_hs05_balc_04', + [-1621253123] = 'ch2_09b_hs05_balc_05', + [-1168607682] = 'ch2_09b_hs05_details', + [-1401951423] = 'ch2_09b_hs05', + [227888696] = 'ch2_09b_hs07_details', + [1738459108] = 'ch2_09b_hs07_pool_ladder', + [-2012470662] = 'ch2_09b_hs07', + [1379206356] = 'ch2_09b_hs08_details', + [1179462523] = 'ch2_09b_hs08_ladder', + [2073692566] = 'ch2_09b_hs08', + [-527603720] = 'ch2_09b_hs09_details', + [-440952870] = 'ch2_09b_hs09_pool_ladder', + [-1588174337] = 'ch2_09b_hs09_railings_01', + [648834217] = 'ch2_09b_hs09_railings_02', + [350865700] = 'ch2_09b_hs09_railings_03', + [-63858764] = 'ch2_09b_hs09_railings_04', + [-395841503] = 'ch2_09b_hs09_railings_05', + [1769399636] = 'ch2_09b_hs09', + [-770737757] = 'ch2_09b_hs10_details', + [1625084728] = 'ch2_09b_hs10', + [627954419] = 'ch2_09b_l1_decal_01', + [884109692] = 'ch2_09b_l1_decal_02', + [303155034] = 'ch2_09b_l1', + [-781531679] = 'ch2_09b_l2', + [-508008836] = 'ch2_09b_l3', + [957810148] = 'ch2_09b_playgrounddecal', + [-675311093] = 'ch2_09b_pool01', + [-987786423] = 'ch2_09b_props_des_h_start_slod', + [-2082927660] = 'ch2_09b_props_des_h', + [1811100525] = 'ch2_09b_props_des_sh_end_b_lod', + [-854661173] = 'ch2_09b_props_des_sh_end_b', + [-741673665] = 'ch2_09b_props_des_sh_end_d', + [-859938436] = 'ch2_09b_props_des_sh_end_e_lod', + [-443475765] = 'ch2_09b_props_des_sh_end_e', + [1986111558] = 'ch2_09b_props_des_sh_end_slod', + [-1987528959] = 'ch2_09b_props_des_sh_rebuild', + [-1679992240] = 'ch2_09b_props_des_sh_start_a', + [-1567922260] = 'ch2_09b_props_des_sh_start_b', + [1883865897] = 'ch2_09b_props_des_sh_start_c', + [1438865882] = 'ch2_09b_props_stilthse_dj_area', + [668072695] = 'ch2_09b_rocks', + [-1635291989] = 'ch2_09c_build_fence01_lod', + [558918865] = 'ch2_09c_build_fence01', + [1899908759] = 'ch2_09c_dec_01', + [-197372787] = 'ch2_09c_dec_02', + [394794572] = 'ch2_09c_hedgedtl_01', + [-1977156728] = 'ch2_09c_hedgedtl_02', + [2079743783] = 'ch2_09c_hedgedtl_03', + [-541808658] = 'ch2_09c_hedgedtl_04', + [-840956859] = 'ch2_09c_hedgedtl_05', + [1120726561] = 'ch2_09c_hedgedtl_06', + [828590926] = 'ch2_09c_hedgedtl_07', + [546941371] = 'ch2_09c_hedgedtl_08', + [-2036828745] = 'ch2_09c_hedgedtl_09', + [-1789030199] = 'ch2_09c_hedgedtl_10', + [120058972] = 'ch2_09c_hedgedtl_11', + [-116041673] = 'ch2_09c_hedgedtl_12', + [-346374974] = 'ch2_09c_hedgedtl_13', + [-2078786912] = 'ch2_09c_hs01_dtls', + [726495965] = 'ch2_09c_hs01', + [900352836] = 'ch2_09c_hs01fence01', + [-1878687755] = 'ch2_09c_hs01fence02', + [2110184312] = 'ch2_09c_hs01fence03', + [1803663086] = 'ch2_09c_hs01fence04', + [1497109091] = 'ch2_09c_hs01fence05', + [1883358064] = 'ch2_09c_hs02_details', + [-568928143] = 'ch2_09c_hs02', + [1897340101] = 'ch2_09c_hs03_details', + [281001410] = 'ch2_09c_hs03', + [-425679907] = 'ch2_09c_hs04_details', + [486683630] = 'ch2_09c_hs04_fence', + [-388395098] = 'ch2_09c_hs04_rail_lod', + [526557098] = 'ch2_09c_hs04_rail', + [1463218295] = 'ch2_09c_hs04_raila_lod', + [-276983455] = 'ch2_09c_hs04_raila', + [-1012784248] = 'ch2_09c_hs04', + [-2005586588] = 'ch2_09c_hs05_railings_geometry', + [-1269725977] = 'ch2_09c_hs05', + [1756753911] = 'ch2_09c_hs05a_details', + [828404642] = 'ch2_09c_hs05b_details', + [-241428287] = 'ch2_09c_hs06_details', + [-876071976] = 'ch2_09c_hs06', + [1136554455] = 'ch2_09c_hs07_details', + [-1232074392] = 'ch2_09c_hs07', + [180807398] = 'ch2_09c_hs08_details', + [-1346405441] = 'ch2_09c_hs08', + [436021401] = 'ch2_09c_hs09_details', + [-1581260864] = 'ch2_09c_hs09', + [2081983057] = 'ch2_09c_hs10_details', + [337978994] = 'ch2_09c_hs10_gate', + [-1790248513] = 'ch2_09c_hs10_trellis_01', + [-367942833] = 'ch2_09c_hs10_trellis_02', + [-1901088340] = 'ch2_09c_hs10', + [-1930571300] = 'ch2_09c_hs11_details', + [-463708920] = 'ch2_09c_hs11', + [2078064754] = 'ch2_09c_hs12_details', + [499077105] = 'ch2_09c_hs12', + [160087440] = 'ch2_09c_hs13_details', + [705489036] = 'ch2_09c_hs13', + [1573759501] = 'ch2_09c_l1', + [1883459320] = 'ch2_09c_l2', + [-1089480586] = 'ch2_09c_poolwtr01', + [654331581] = 'ch2_10_culvert01', + [361606104] = 'ch2_10_culvert02', + [-93489768] = 'ch2_10_culvert03', + [-1968837651] = 'ch2_10_detail05', + [1402273232] = 'ch2_10_detail06', + [1020448844] = 'ch2_10_detail07', + [-557613785] = 'ch2_10_ds02', + [-950098029] = 'ch2_10_ds02vb', + [982725845] = 'ch2_10_ds05', + [-783490438] = 'ch2_10_ds09', + [937799258] = 'ch2_10_ds15', + [-1896197490] = 'ch2_10_ds20', + [1023167174] = 'ch2_10_ds20x', + [-1591683961] = 'ch2_10_house07wall_lod', + [346479746] = 'ch2_10_house07wall', + [370136937] = 'ch2_10_house09railings_lod', + [49773502] = 'ch2_10_hs01_wood', + [1998477328] = 'ch2_10_hs01', + [419234325] = 'ch2_10_hs01dtls', + [1186523747] = 'ch2_10_hs01dtlsb', + [1768996021] = 'ch2_10_hs02', + [783654472] = 'ch2_10_hs02dtls', + [108851321] = 'ch2_10_hs02dtlsb', + [-856849491] = 'ch2_10_hs03', + [1981080996] = 'ch2_10_hs03dtls', + [-2047219442] = 'ch2_10_hs03dtlsb_lod', + [-1923124535] = 'ch2_10_hs03dtlsb', + [2060346895] = 'ch2_10_hs03dtlsb1', + [1705393087] = 'ch2_10_hs03dtlsb2', + [227937184] = 'ch2_10_hs03dtlsb3', + [-11964669] = 'ch2_10_hs03dtlsb4', + [841274557] = 'ch2_10_hs03dtlsb5', + [992206872] = 'ch2_10_hs04', + [853023968] = 'ch2_10_hs04dtls', + [477216658] = 'ch2_10_hs04dtlsb', + [809159238] = 'ch2_10_hs05', + [462158852] = 'ch2_10_hs05dtls', + [559304157] = 'ch2_10_hs05dtlsb', + [-346072831] = 'ch2_10_hs05railings', + [581512995] = 'ch2_10_hs06', + [-1446111565] = 'ch2_10_hs06dtls', + [1226702631] = 'ch2_10_hs06dtlsb_rail', + [-1324376566] = 'ch2_10_hs06dtlsb', + [-1641077195] = 'ch2_10_hs07', + [474019285] = 'ch2_10_hs07dtls', + [253032506] = 'ch2_10_hs07dtlsb', + [-1880553047] = 'ch2_10_hs08', + [-1374143673] = 'ch2_10_hs08dtls', + [1765897710] = 'ch2_10_hs08dtlsb', + [-794082243] = 'ch2_10_hs09_rail_lod', + [-294202530] = 'ch2_10_hs09_rail', + [49704894] = 'ch2_10_hs09', + [1332608839] = 'ch2_10_hs09dtls', + [-1553161400] = 'ch2_10_hs09dtlsb', + [334150340] = 'ch2_10_hs10_rail_lod', + [172566804] = 'ch2_10_hs10_rail', + [-57417859] = 'ch2_10_hs10', + [1032721081] = 'ch2_10_hs10dtls', + [863437451] = 'ch2_10_hs10dtlsb', + [2132368645] = 'ch2_10_land_01', + [-1957399169] = 'ch2_10_land_02', + [2081281778] = 'ch2_10_land_03', + [1774662245] = 'ch2_10_land_04', + [1217392631] = 'ch2_10_land_05', + [881772533] = 'ch2_10_land_06', + [-143253008] = 'ch2_10_parkobj_2_lod', + [123224842] = 'ch2_10_parkobj_2', + [1657464641] = 'ch2_10_parkobj_brick', + [-1737643199] = 'ch2_10_parkobj', + [-2129404117] = 'ch2_10_parkrails_1', + [-868584073] = 'ch2_10_parkrails_2', + [-1661954332] = 'ch2_10_parkrails_3', + [-678556642] = 'ch2_10_parkrails_4', + [-1167207970] = 'ch2_10_parkrails_5', + [-1957348820] = 'ch2_10_poolladd1', + [-1117564408] = 'ch2_10_poolwtr003', + [-341292158] = 'ch2_10_poolwtr02', + [1043709506] = 'ch2_10_rehabdcl01', + [-178148197] = 'ch2_10_rehabdcl02', + [61557038] = 'ch2_10_rehabdcl03', + [-384986125] = 'ch2_10_rehabdcl05', + [-1304348158] = 'ch2_10_rehabgrounds', + [143923336] = 'ch2_10_rehabgrounds2', + [474136549] = 'ch2_10_rehabgrounds3', + [873590737] = 'ch2_10_rehabmain_rail', + [-737920002] = 'ch2_10_rehabmain', + [-1318956507] = 'ch2_10_rehabpool_net', + [1681974156] = 'ch2_10_rehabpool', + [1347143414] = 'ch2_10_rehabpooldcal', + [-2010722922] = 'ch2_10_rehed_00', + [-1295703294] = 'ch2_10_rehed_01', + [-1528002735] = 'ch2_10_rehed_02', + [-549979161] = 'ch2_10_rehed_03', + [-813147000] = 'ch2_10_rehed_04', + [-104156916] = 'ch2_10_rehed_05', + [-336063129] = 'ch2_10_rehed_06', + [491681811] = 'ch2_10_rehed_07', + [262331580] = 'ch2_10_rehed_08', + [970010904] = 'ch2_10_rehed_09', + [1617330346] = 'ch2_10_rehed_10', + [1302747946] = 'ch2_10_rehed_11', + [993539662] = 'ch2_10_rehed_12', + [690721333] = 'ch2_10_rehed_13', + [381840739] = 'ch2_10_rehed_14', + [84855292] = 'ch2_10_rehed_15', + [-230906792] = 'ch2_10_rehed_16', + [-540901532] = 'ch2_10_rehed_17', + [-839066663] = 'ch2_10_rehed_18', + [-1154501057] = 'ch2_10_rehed_19', + [-174118199] = 'ch2_10_rehed_20', + [177362095] = 'ch2_10_rehed_21', + [438498256] = 'ch2_10_rehed_22', + [750590212] = 'ch2_10_rehed_23', + [1117996240] = 'ch2_10_rehed_24', + [1400497789] = 'ch2_10_rehed_25', + [1730743771] = 'ch2_10_rehed_26', + [1974905590] = 'ch2_10_rehed_27', + [-1953311058] = 'ch2_10_rehed_28', + [-1738182573] = 'ch2_10_rehed_29', + [1586623273] = 'ch2_10_rehed_99', + [560698203] = 'ch2_10_rp_st', + [1527125677] = 'ch2_10_wall001', + [2009234131] = 'ch2_10_wood019', + [-1037366793] = 'ch2_10_wood020', + [-1593332810] = 'ch2_11_dtrack03', + [-1846289050] = 'ch2_11_hd6_railings_04', + [2095821650] = 'ch2_11_hd6_railings_05', + [-1953804143] = 'ch2_11_hd6_railings_06', + [-1589019635] = 'ch2_11_hd6_railings_07', + [806295962] = 'ch2_11_hd6_railings_08', + [1650227305] = 'ch2_11_hedgedtl_01', + [1427758564] = 'ch2_11_hedgedtl_02', + [-1129370351] = 'ch2_11_hedgedtl_03', + [-1451948387] = 'ch2_11_hedgedtl_04', + [-1705154450] = 'ch2_11_hedgedtl_05', + [-1938830189] = 'ch2_11_hedgedtl_06', + [-106977547] = 'ch2_11_hedgedtl_07', + [-388430488] = 'ch2_11_hedgedtl_08', + [-632035238] = 'ch2_11_hedgedtl_09', + [-1358917528] = 'ch2_11_hedgedtl_10', + [157304154] = 'ch2_11_hedgedtl_11', + [1124120730] = 'ch2_11_hedgedtl_12', + [-304771515] = 'ch2_11_hedgedtl_13', + [395108787] = 'ch2_11_hedgedtl_14', + [1382668140] = 'ch2_11_hedgedtl_15', + [1822559200] = 'ch2_11_hedgedtl_16', + [785944650] = 'ch2_11_hedgedtl_17', + [1630172397] = 'ch2_11_hedgedtl_18', + [1413602000] = 'ch2_11_hedgedtl_19', + [2030185556] = 'ch2_11_hedgedtl_20', + [-1041809891] = 'ch2_11_hedgedtl_21', + [-711432833] = 'ch2_11_hedgedtl_22', + [-1933356074] = 'ch2_11_hedgedtl_23', + [1395001789] = 'ch2_11_hs001_a_dtl', + [104766890] = 'ch2_11_hs001_b_dtl', + [-1898612316] = 'ch2_11_hs001_rail01', + [1612618807] = 'ch2_11_hs001_rail02', + [667624927] = 'ch2_11_hs001', + [-1104563602] = 'ch2_11_hs002_a_dtl', + [-105872846] = 'ch2_11_hs002_b_dtl', + [363561376] = 'ch2_11_hs002', + [210265746] = 'ch2_11_hs003_a_dtl', + [2070500447] = 'ch2_11_hs003_b_dtl', + [-1957401356] = 'ch2_11_hs003', + [232072246] = 'ch2_11_hs004_a_dtl', + [-486016149] = 'ch2_11_hs004_b_dtl', + [287871864] = 'ch2_11_hs004_c_dtl', + [1966653629] = 'ch2_11_hs004', + [1965981042] = 'ch2_11_hs005_a_dtl', + [842773245] = 'ch2_11_hs005_b_dtl', + [1030493667] = 'ch2_11_hs005_c_dtl', + [744790703] = 'ch2_11_hs005_d_dtl', + [-1895205790] = 'ch2_11_hs005', + [-35245421] = 'ch2_11_hs006_a_dtl', + [-1974656414] = 'ch2_11_hs006_b_dtl', + [1317224886] = 'ch2_11_hs006_c_dtl', + [-15487134] = 'ch2_11_hs006_d_dtl', + [2102317293] = 'ch2_11_hs006', + [446788319] = 'ch2_11_hs007_a_dtl', + [508649837] = 'ch2_11_hs007_b_dtl', + [886549451] = 'ch2_11_hs007_c_dtl', + [1935981849] = 'ch2_11_hs007', + [-207840565] = 'ch2_11_hs008_a_dtl', + [-401849536] = 'ch2_11_hs008_b_dtl', + [1629553223] = 'ch2_11_hs008_c_dtl', + [1637947794] = 'ch2_11_hs008', + [-854495292] = 'ch2_11_hs009_a_dtl', + [-955928612] = 'ch2_11_hs009_b_dtl', + [-1657618016] = 'ch2_11_hs009_c_dtl', + [-773555689] = 'ch2_11_hs009', + [-730413291] = 'ch2_11_hs01_pool_ladder', + [328464319] = 'ch2_11_hs010_a_dtl', + [805066978] = 'ch2_11_hs010_b_dtl', + [1999453390] = 'ch2_11_hs010', + [600934418] = 'ch2_11_hs011_dtl', + [-1182023322] = 'ch2_11_hs011', + [1429071163] = 'ch2_11_hs012_dtl', + [295021698] = 'ch2_11_hs012_frontbalcony', + [-1353601806] = 'ch2_11_hs012', + [-115042821] = 'ch2_11_hs013_a_dtl', + [651435855] = 'ch2_11_hs013_b_dtl', + [-1659434883] = 'ch2_11_hs013', + [-1547685083] = 'ch2_11_hs014_dtl', + [-1805256933] = 'ch2_11_hs014', + [731461300] = 'ch2_11_hs015_a_dtl', + [2052419273] = 'ch2_11_hs015_b_dtl', + [-2109713712] = 'ch2_11_hs015', + [664709224] = 'ch2_11_hs02_pool_ladder', + [623467815] = 'ch2_11_hs04_pool_ladder', + [-374434121] = 'ch2_11_hs06_rail_01', + [-1023063707] = 'ch2_11_hs06_rail_02', + [-716182022] = 'ch2_11_hs06_rail_03', + [-1635680162] = 'ch2_11_hs06_rail_04', + [10339481] = 'ch2_11_hs06_rail_05', + [502071095] = 'ch2_11_hs06_rail_06', + [-1774316760] = 'ch2_11_hs07_railing_01', + [1661512886] = 'ch2_11_hs07_railing_02', + [1895581853] = 'ch2_11_hs07_railing_03', + [-1079843343] = 'ch2_11_hs07_railing_04', + [1306559078] = 'ch2_11_hs07_railing_05', + [911201093] = 'ch2_11_hs07_railing_06', + [1283784623] = 'ch2_11_hs07_railing_07', + [-2101351388] = 'ch2_11_hs07_railing_08', + [-124273051] = 'ch2_11_hs07_railing_09_lod', + [284592275] = 'ch2_11_hs07_railing_09', + [714894296] = 'ch2_11_hs09_railing_01', + [-823937948] = 'ch2_11_hs09_railing_02', + [185019566] = 'ch2_11_hs09_railing_03', + [423938345] = 'ch2_11_hs09_railing_04', + [1736664485] = 'ch2_11_hs09_railing_05', + [-137689546] = 'ch2_11_hs09_railing_06', + [1939275216] = 'ch2_11_hs09_railing_07', + [22124871] = 'ch2_11_hs09_railing_08', + [968936323] = 'ch2_11_hs10_railing_01', + [1242983470] = 'ch2_11_hs10_railing_02', + [1612847057] = 'ch2_11_hs10_railing_03', + [1844949884] = 'ch2_11_hs10_railing_04', + [-2087788886] = 'ch2_11_hs10_railing_05', + [-1856144825] = 'ch2_11_hs10_railing_06', + [-1765309153] = 'ch2_11_hs10_railing_07', + [-1482086686] = 'ch2_11_hs10_railing_08', + [-1170584572] = 'ch2_11_hs10_railing_09', + [1823552079] = 'ch2_11_hs10_railing_10', + [1535807490] = 'ch2_11_hs10_railing_11', + [-783254652] = 'ch2_11_hs10_railing_12', + [-1871939139] = 'ch2_11_hs10_railing_13', + [-2111775450] = 'ch2_11_hs10_railing_14', + [1694343904] = 'ch2_11_hs10_railing_15', + [729324265] = 'ch2_11_hs13_railings_01', + [1027030630] = 'ch2_11_hs13_railings_02', + [1204900754] = 'ch2_11_hs13_railings_03', + [1500837593] = 'ch2_11_hs13_railings_04', + [709793933] = 'ch2_11_hs13_railings_05', + [1032404738] = 'ch2_11_hs13_railings_06', + [-574222365] = 'ch2_11_hs14_fence_01', + [581990038] = 'ch2_11_hs14_railing_01', + [892574620] = 'ch2_11_hs14_railing_02', + [1189494529] = 'ch2_11_hs14_railing_03', + [1203257509] = 'ch2_11_hs14_railing_04', + [-947601348] = 'ch2_11_hs14_railing_05', + [-644717481] = 'ch2_11_hs14_railing_06', + [-331445837] = 'ch2_11_hs14_railing_07', + [281989843] = 'ch2_11_hs14_railing_08', + [-1253172269] = 'ch2_11_hs14_railing_09', + [-1633671369] = 'ch2_11_hs14_railing_10', + [1881645356] = 'ch2_11_hs15_railing_01_lod', + [-2036969538] = 'ch2_11_hs15_railing_01', + [-1321490681] = 'ch2_11_hs15_railing_02_lod', + [-1806570699] = 'ch2_11_hs15_railing_02', + [-25798120] = 'ch2_11_hs15_railing_03_lod', + [1999286503] = 'ch2_11_hs15_railing_03', + [1046918077] = 'ch2_11_hs15_railing_04_lod', + [1289706577] = 'ch2_11_hs15_railing_04', + [-183615411] = 'ch2_11_hs4_railing_01', + [-1554080529] = 'ch2_11_hs4_railing_02', + [-1310082555] = 'ch2_11_hs4_railing_03', + [-1062742143] = 'ch2_11_hs4_railing_04', + [-791250978] = 'ch2_11_hs4_railing_05', + [-54094402] = 'ch2_11_hs6_railings_01', + [709718219] = 'ch2_11_hs6_railings_02', + [-1418923252] = 'ch2_11_hs6_railings_03', + [1935068846] = 'ch2_11_l1', + [-2054163680] = 'ch2_11_l2', + [1339688885] = 'ch2_11_l3', + [1125447580] = 'ch2_11_wall03', + [-42439580] = 'ch2_11_wall04', + [-2034679180] = 'ch2_11_wall23', + [261678834] = 'ch2_11_water01', + [-1826230758] = 'ch2_11_water02', + [636949438] = 'ch2_11_water03', + [934393651] = 'ch2_11_water04', + [1300833622] = 'ch2_11b_armco01', + [998015293] = 'ch2_11b_armco02', + [1122466483] = 'ch2_11b_b1_a', + [885120616] = 'ch2_11b_b1_b', + [855142000] = 'ch2_11b_b1_dtl', + [-1122129397] = 'ch2_11b_b1_feature01_dtl', + [1080491773] = 'ch2_11b_b1_railing_01', + [1262884027] = 'ch2_11b_b1_railing_02', + [1493413942] = 'ch2_11b_b1_railing_03', + [1756352398] = 'ch2_11b_b1_railing_04', + [1987210003] = 'ch2_11b_b1_railing_05', + [197367239] = 'ch2_11b_b1_railing_06', + [427635002] = 'ch2_11b_b1_railing_07', + [675106490] = 'ch2_11b_b1_railing_08', + [905177639] = 'ch2_11b_b1_railing_09', + [-510147960] = 'ch2_11b_b1_railing_10', + [-196122633] = 'ch2_11b_b1_railing_11', + [212113569] = 'ch2_11b_b1_railing_12', + [516766962] = 'ch2_11b_b1_railing_13', + [689394054] = 'ch2_11b_b1_railing_14', + [988345641] = 'ch2_11b_b1_railing_15', + [-1689500023] = 'ch2_11b_b1', + [-1316734091] = 'ch2_11b_b2_dtl', + [-210734465] = 'ch2_11b_b2_wood_01', + [-920248853] = 'ch2_11b_b2_wood_02', + [-1898239658] = 'ch2_11b_b2_wood_03', + [-460794704] = 'ch2_11b_b2_wood_04', + [1726306623] = 'ch2_11b_b2_wood_05', + [-1383437563] = 'ch2_11b_b2', + [65304347] = 'ch2_11b_b3_dtl', + [1960540584] = 'ch2_11b_b3', + [-1359165423] = 'ch2_11b_b4_dtl', + [-1981797105] = 'ch2_11b_b4_railing_01', + [-1739732502] = 'ch2_11b_b4_railing_02', + [780465750] = 'ch2_11b_b4_railing_03', + [-1127574813] = 'ch2_11b_b4_railing_04', + [-752500839] = 'ch2_11b_b4_railing_05', + [-713505729] = 'ch2_11b_b4_railing_06', + [1460160324] = 'ch2_11b_b4_railing_07', + [1757047464] = 'ch2_11b_b4_railing_08', + [-128775693] = 'ch2_11b_b4_railing_09', + [-18574426] = 'ch2_11b_b4_railing_10', + [373310037] = 'ch2_11b_b4_railing_11', + [-924276825] = 'ch2_11b_b4_railing_12', + [288634941] = 'ch2_11b_b4_railing_13', + [56007810] = 'ch2_11b_b4_railing_14', + [-614609775] = 'ch2_11b_b4_railing_15', + [-1911868943] = 'ch2_11b_b4_railing_16', + [-1210317426] = 'ch2_11b_b4_railing_17', + [775013155] = 'ch2_11b_b5_dtl', + [1346416755] = 'ch2_11b_b5', + [-802516548] = 'ch2_11b_b6_dtl', + [1652708598] = 'ch2_11b_b6', + [532399411] = 'ch2_11b_b7_dtl', + [1424701900] = 'ch2_11b_b7', + [2012366161] = 'ch2_11b_dtrack00', + [-2026839090] = 'ch2_11b_dtrack01', + [1550749258] = 'ch2_11b_dtrack02', + [-844238645] = 'ch2_11b_dtrack04', + [-909377050] = 'ch2_11b_hedgedtl_01', + [-612457141] = 'ch2_11b_hedgedtl_02', + [-1239098692] = 'ch2_11b_hedgedtl_03', + [-942178783] = 'ch2_11b_hedgedtl_04', + [2073224601] = 'ch2_11b_hedgedtl_05', + [-1522255621] = 'ch2_11b_hedgedtl_06', + [1594436742] = 'ch2_11b_hedgedtl_07', + [1758412818] = 'ch2_11b_hedgedtl_08', + [1148155727] = 'ch2_11b_hedgedtl_09', + [-1172445718] = 'ch2_11b_hedgedtl_10', + [-202319437] = 'ch2_11b_hedgedtl_12', + [18805775] = 'ch2_11b_hedgedtl_13', + [258183320] = 'ch2_11b_hedgedtl_14', + [1098395139] = 'ch2_11b_hs_04_gate', + [-862300049] = 'ch2_11b_hs_04', + [-1003086116] = 'ch2_11b_l1', + [838695529] = 'ch2_11b_l2', + [-1420527990] = 'ch2_11b_pools1', + [-1114203378] = 'ch2_11b_pools2', + [-972775253] = 'ch2_11b_railing_01', + [414172672] = 'ch2_11b_railing_02', + [839317678] = 'ch2_11b_railing_03', + [68951257] = 'ch2_11b_railing_04', + [-2072732272] = 'ch2_11b_railing_05', + [-1917734902] = 'ch2_11b_railing_06', + [-352621928] = 'ch2_11b_railing_07', + [-1462959159] = 'ch2_11b_retwall01', + [748631099] = 'ch2_11b_retwallpoles_01', + [-130757797] = 'ch2_11b_retwallpoles_02', + [175271894] = 'ch2_11b_retwallpoles_03', + [-357945274] = 'ch2_11b_retwallpoles_04', + [1022448851] = 'ch2_11b_retwallpoles_05', + [-1791428458] = 'ch2_12_building_b_dtl', + [-1919987537] = 'ch2_12_building_b_hedtl_1', + [1995154280] = 'ch2_12_building_b_hedtl_2', + [1831636970] = 'ch2_12_building_b_hedtl_3', + [-1789191271] = 'ch2_12_building_b', + [-436224840] = 'ch2_12_hdcal67', + [-2074338856] = 'ch2_12_hehdcal67_00', + [-817025095] = 'ch2_12_hehdcal67_01', + [-250711237] = 'ch2_12_hehdcal67_02', + [-1412831053] = 'ch2_12_hehdcal67_03', + [-1115452378] = 'ch2_12_hehdcal67_04', + [63346859] = 'ch2_12_hehdcal67_05', + [949865443] = 'ch2_12_house_03_dtl', + [-861134677] = 'ch2_12_house_03_hed_00', + [-1025012446] = 'ch2_12_house_03_hed_01', + [2096038186] = 'ch2_12_house_03_hed_02', + [-306617667] = 'ch2_12_house_03_hed_03', + [-480555519] = 'ch2_12_house_03_hed_04', + [-767841342] = 'ch2_12_house_03_hed_05', + [1207408444] = 'ch2_12_house_03_hed_06', + [-1262489397] = 'ch2_12_house_03_hed_07', + [2068363268] = 'ch2_12_house_03', + [-1958310436] = 'ch2_12_house_l2d_dtl', + [1270534450] = 'ch2_12_house_l2d_hedtl_1', + [384821149] = 'ch2_12_house_l2d_hedtl_2', + [-1086900179] = 'ch2_12_house_l2d_hedtl_3', + [-1426553239] = 'ch2_12_house_l2d', + [-1606567824] = 'ch2_12_house_l2e_dtl', + [959465209] = 'ch2_12_house_l2e_hedtl_00', + [-424074740] = 'ch2_12_house_l2e_hedtl_01', + [610377052] = 'ch2_12_house_l2e_hedtl_02', + [1394113225] = 'ch2_12_house_l2e_hedtl_03', + [-1983223760] = 'ch2_12_house_l2e_hedtl_04', + [814527922] = 'ch2_12_house_l2e_hedtl_05', + [1834561358] = 'ch2_12_house_l2e_hedtl_06', + [1545309395] = 'ch2_12_house_l2e_hedtl_07', + [-1789174997] = 'ch2_12_house_l2e', + [1090857234] = 'ch2_12_house01_dtl', + [140033636] = 'ch2_12_house01', + [866324091] = 'ch2_12_house02_dtl', + [1807624868] = 'ch2_12_house02_hegdtl_1', + [627318253] = 'ch2_12_house02_hegdtl_2', + [1193501035] = 'ch2_12_house02_hegdtl_3', + [-1275446501] = 'ch2_12_house02_hegdtl_4', + [-1565026154] = 'ch2_12_house02_hegdtl_5', + [-1884130676] = 'ch2_12_house02_hegdtl_6', + [-2122000847] = 'ch2_12_house02_hegdtl_7', + [-442671468] = 'ch2_12_house02_rail_lod', + [291185973] = 'ch2_12_house02_rail', + [2112519138] = 'ch2_12_house02_railing_01_lod', + [1167477500] = 'ch2_12_house02_railing_01', + [777103747] = 'ch2_12_house02_railing_02_lod', + [1464921713] = 'ch2_12_house02_railing_02', + [-1331135274] = 'ch2_12_house02_railing_03_lod', + [1756565813] = 'ch2_12_house02_railing_03', + [465167654] = 'ch2_12_house02', + [1084558333] = 'ch2_12_house04_dtl', + [1063627913] = 'ch2_12_house04', + [798893031] = 'ch2_12_house05_dtl', + [758908982] = 'ch2_12_house05', + [-406233860] = 'ch2_12_house06_dtl', + [1683584624] = 'ch2_12_house06', + [1803505613] = 'ch2_12_house07_dtl', + [1380110915] = 'ch2_12_house07', + [89594736] = 'ch2_12_house100_dtl', + [204609625] = 'ch2_12_house100_rail_lod', + [-182012546] = 'ch2_12_house100_rail', + [-1588559783] = 'ch2_12_house100', + [1899991676] = 'ch2_12_house101_dtl', + [-58739018] = 'ch2_12_house101', + [-1290236852] = 'ch2_12_house102_dtl', + [-215235378] = 'ch2_12_house102_railing_lod', + [508705465] = 'ch2_12_house102_railing', + [-962901266] = 'ch2_12_house102', + [1880759741] = 'ch2_12_house103', + [-1522953917] = 'ch2_12_house106a_dtl', + [-1911370507] = 'ch2_12_house106a', + [-208816488] = 'ch2_12_house107_dtl', + [589300682] = 'ch2_12_house107', + [-1701797380] = 'ch2_12_house11_dtl', + [2095982641] = 'ch2_12_house11', + [275785] = 'ch2_12_house16_dtl', + [516156466] = 'ch2_12_house16', + [-1989127817] = 'ch2_12_house20_dtl', + [630684449] = 'ch2_12_house20', + [-697701639] = 'ch2_12_house4_a_rgate_lod', + [-318366106] = 'ch2_12_house4_a_rgate', + [-1556073861] = 'ch2_12_house4_b_rgate_lod', + [963523844] = 'ch2_12_house4_b_rgate', + [595710209] = 'ch2_12_house4_c_rgate_lod', + [-115768302] = 'ch2_12_house4_c_rgate', + [251577070] = 'ch2_12_house4_d_rgate_lod', + [1162771857] = 'ch2_12_house4_d_rgate', + [-2030934512] = 'ch2_12_house4_dtl', + [-1180061401] = 'ch2_12_house4', + [-417347112] = 'ch2_12_house55_dtl', + [-250182768] = 'ch2_12_house55', + [451071952] = 'ch2_12_house97_dtl', + [-994201761] = 'ch2_12_house97', + [-1866320981] = 'ch2_12_house98_dtl', + [143863652] = 'ch2_12_house98_hddtl_1', + [383044583] = 'ch2_12_house98_hddtl_2', + [-348818263] = 'ch2_12_house98_hddtl_3', + [-110096098] = 'ch2_12_house98_hddtl_4', + [-809910862] = 'ch2_12_house98_hddtl_5', + [1263025190] = 'ch2_12_house98', + [-600619475] = 'ch2_12_house99_dtl', + [965384363] = 'ch2_12_house99', + [1213422685] = 'ch2_12_housesupport01_lod', + [-1457106781] = 'ch2_12_housesupport01', + [1570133077] = 'ch2_12_housesupport02_lod', + [-1157893042] = 'ch2_12_housesupport02', + [-635592278] = 'ch2_12_housesupport03_lod', + [-666751286] = 'ch2_12_housesupport03', + [-1937906486] = 'ch2_12_hs17', + [-233626679] = 'ch2_12_hse01_hgedtl_00', + [-1190776400] = 'ch2_12_hse01_hgedtl_01', + [-829399868] = 'ch2_12_hse01_hgedtl_02', + [-2011672615] = 'ch2_12_hse01_hgedtl_03', + [1909597005] = 'ch2_12_hse01_hgedtl_04', + [1554643197] = 'ch2_12_hse01_hgedtl_05', + [1313561664] = 'ch2_12_hse01_hgedtl_06', + [-905981097] = 'ch2_12_hse01_hgedtl_07', + [-1078083885] = 'ch2_12_hse01_hgedtl_08', + [-1384506804] = 'ch2_12_hse01_hgedtl_09', + [1202146180] = 'ch2_12_hse01_hgedtl_10', + [1008088162] = 'ch2_12_hse01_hgedtl_11', + [708677809] = 'ch2_12_hse01_hgedtl_12', + [-1868716673] = 'ch2_12_l1', + [-555957764] = 'ch2_12_l2', + [-1190640939] = 'ch2_12_modern_dtl', + [-1945844707] = 'ch2_12_modern_hedt_00', + [-1182851311] = 'ch2_12_modern_hedt_01', + [965975864] = 'ch2_12_modern_hedt_02', + [1730116175] = 'ch2_12_modern_hedt_03', + [738557793] = 'ch2_12_pool_water', + [1447485551] = 'ch2_12_railing01_lod', + [-497750770] = 'ch2_12_railing01', + [-1673404024] = 'ch2_12_railing02_lod', + [-1785834622] = 'ch2_12_railing02', + [1509822535] = 'ch2_12_railing03_lod', + [-2049919993] = 'ch2_12_railing03', + [-1361019679] = 'ch2_12_railing04_lod', + [873762948] = 'ch2_12_railing04', + [-983223579] = 'ch2_12_railing05_lod', + [-1489111327] = 'ch2_12_railing05', + [1628535241] = 'ch2_12_railing06_lod', + [1487034783] = 'ch2_12_railing06', + [1151584484] = 'ch2_12_railing07_lod', + [1223146026] = 'ch2_12_railing07', + [1583143658] = 'ch2_12_railing08_lod', + [53325495] = 'ch2_12_railing08', + [-959807699] = 'ch2_12_railing09_lod', + [-311983317] = 'ch2_12_railing09', + [1154579220] = 'ch2_12_railing10_lod', + [-702786747] = 'ch2_12_railing10', + [-1128800816] = 'ch2_12_railing11_lod', + [1894615273] = 'ch2_12_railing11', + [20561096] = 'ch2_12_railing12_lod', + [-1181050302] = 'ch2_12_railing12', + [-447788612] = 'ch2_12_railing13_lod', + [-932202516] = 'ch2_12_railing13', + [224641483] = 'ch2_12_railing14', + [730856995] = 'ch2_12_railing15', + [-253228844] = 'ch2_12_railing16', + [-14998214] = 'ch2_12_railing17', + [280053870] = 'ch2_12_railing18', + [525886908] = 'ch2_12_railing19', + [1930432406] = 'ch2_12_railing20', + [-598285790] = 'ch2_12_railing21', + [-842644223] = 'ch2_12_railing22', + [932573830] = 'ch2_12_railing23_lod', + [-930006377] = 'ch2_12_railing23', + [-383929505] = 'ch2_12_railing24_lod', + [-1183736744] = 'ch2_12_railing24', + [-515041378] = 'ch2_12_railing25_lod', + [605188508] = 'ch2_12_railing25', + [13642520] = 'ch2_12_railing26', + [-276395899] = 'ch2_12_railing27', + [1550738003] = 'ch2_12_railing28', + [-1810445645] = 'ch2_12_railing29_lod', + [1329317870] = 'ch2_12_railing29', + [1412815266] = 'ch2_12_railing30_lod', + [1621518783] = 'ch2_12_railing30', + [-460940215] = 'ch2_12_railing66', + [1334037995] = 'ch2_12_woodstruct01_lod', + [-1081739531] = 'ch2_12_woodstruct01', + [-2055261837] = 'ch2_12_woodstruct02_lod', + [-1378921592] = 'ch2_12_woodstruct02', + [726255491] = 'ch2_12_woodstruct03_lod', + [1678360570] = 'ch2_12_woodstruct03', + [1469483679] = 'ch2_12_woodstruct04_lod', + [1346377831] = 'ch2_12_woodstruct04', + [-2092677964] = 'ch2_12b_cutscenetowel', + [-1255074188] = 'ch2_12b_h1_vivid', + [-584623099] = 'ch2_12b_house_l1a', + [8990735] = 'ch2_12b_house_l1b_dtl_01', + [391077275] = 'ch2_12b_house_l1b_dtl_02', + [411787283] = 'ch2_12b_house_l1b_dtl_03', + [-403017301] = 'ch2_12b_house_l1b', + [-1700952937] = 'ch2_12b_house_l1c_dtl_01', + [-1257850519] = 'ch2_12b_house_l1c_dtl_02', + [-935895094] = 'ch2_12b_house_l1c_dtl_03', + [-1885497848] = 'ch2_12b_house_l1c_gate', + [-1325832886] = 'ch2_12b_house_l1c_gate001', + [1686137521] = 'ch2_12b_house_l1c', + [318873867] = 'ch2_12b_house_l1d_dtl_01', + [95880822] = 'ch2_12b_house_l1d_dtl_02', + [-2033907560] = 'ch2_12b_house_l1d_dtl_03', + [1878131100] = 'ch2_12b_house_l1d', + [-398031445] = 'ch2_12b_house_l1e_dtl_01', + [-92427751] = 'ch2_12b_house_l1e_dtl_02', + [348675758] = 'ch2_12b_house_l1e_dtl_03', + [-2128305151] = 'ch2_12b_house_l1e', + [-543992122] = 'ch2_12b_house_l2c_dtl_01', + [-1871005550] = 'ch2_12b_house_l2c_dtl_02', + [-2089572481] = 'ch2_12b_house_l2c', + [198022959] = 'ch2_12b_house03mc_a_dtl_01', + [408301632] = 'ch2_12b_house03mc_a_dtl_02', + [784096532] = 'ch2_12b_house03mc_a_dtl_03', + [-2005680468] = 'ch2_12b_house03mc', + [-661306666] = 'ch2_12b_house50_dtl_01', + [-356522197] = 'ch2_12b_house50_dtl_02', + [32902280] = 'ch2_12b_house50', + [-2098236359] = 'ch2_12b_hs_l1a_dtl_01', + [1898238116] = 'ch2_12b_hs_l1a_dtl_02', + [-1599262800] = 'ch2_12b_hs_l1a_dtl_03', + [1510157710] = 'ch2_12b_hse_l1a_dtl_00', + [-738057850] = 'ch2_12b_hse_l1a_dtl_01', + [-914289532] = 'ch2_12b_hse_l1a_dtl_02', + [-1866065137] = 'ch2_12b_hse_l1a_dtl_03', + [-417413185] = 'ch2_12b_hse_l1a_dtl_04', + [475771448] = 'ch2_12b_hse_l1a_dtl_05', + [2076478079] = 'ch2_12b_hse_l1c_dtl_00', + [-1436031035] = 'ch2_12b_hse_l1c_dtl_01', + [-1741077656] = 'ch2_12b_hse_l1c_dtl_02', + [579491856] = 'ch2_12b_hse_l1c_dtl_03', + [1362408804] = 'ch2_12b_hse_l1c_dtl_04', + [1058148639] = 'ch2_12b_hse_l1c_dtl_05', + [1572949629] = 'ch2_12b_hse_l1c_dtl_06', + [-605631802] = 'ch2_12b_hse_l1c_dtl_07', + [170600274] = 'ch2_12b_hse_l1c_dtl_08', + [61905501] = 'ch2_12b_hse_l1c_dtl_09', + [-1079864550] = 'ch2_12b_hse_l1c_dtl_10', + [-320082516] = 'ch2_12b_hse_l1c_dtl_11', + [-636008445] = 'ch2_12b_hse_l1c_dtl_12', + [-945839208] = 'ch2_12b_hse_l1c_dtl_13', + [-1187969349] = 'ch2_12b_hse_l1c_dtl_14', + [-499099431] = 'ch2_12b_hse_l1c_dtl_15', + [-1783480386] = 'ch2_12b_hse_l1c_dtl_16', + [277689718] = 'ch2_12b_hse_l1c_dtl_17', + [-97974098] = 'ch2_12b_hse_l1c_dtl_18', + [-807037585] = 'ch2_12b_hse_l1e_dtl_1', + [-1476356617] = 'ch2_12b_l1', + [1572700530] = 'ch2_12b_l2', + [844035688] = 'ch2_12b_lnddcal01', + [1076007435] = 'ch2_12b_lnddcal02', + [1696490509] = 'ch2_12b_railing_01', + [1781865318] = 'ch2_12b_railing_02_lod', + [1474316689] = 'ch2_12b_railing_02', + [-890547302] = 'ch2_12b_railing_03_lod', + [-1786100504] = 'ch2_12b_railing_03', + [-1965281396] = 'ch2_12b_railing_04', + [889881570] = 'ch2_12b_railing_05', + [-1694816806] = 'ch2_12b_railing_06_lod', + [-1502484809] = 'ch2_12b_railing_06', + [45784446] = 'ch2_12b_railing_07_lod', + [-542746337] = 'ch2_12b_railing_07', + [-772555334] = 'ch2_12b_railing_08', + [-1219345779] = 'ch2_12b_retainwall01_dtl_01', + [4478068] = 'ch2_12b_retainwall01_dtl_02', + [334396360] = 'ch2_12b_retainwall01_dtl_03', + [-1249134618] = 'ch2_12b_retwall01', + [-1513318296] = 'ch2_12b_retwall02', + [-932249093] = 'ch2_12b_treeproxy', + [-534545568] = 'ch2_emissive_casino_slod', + [429446185] = 'ch2_emissive_casinob_slod', + [1468170057] = 'ch2_emissive_casinob', + [-1633449889] = 'ch2_emissive_casinob2_slod', + [495815520] = 'ch2_emissive_casinoc', + [552822525] = 'ch2_emissive_casinocb', + [1887593324] = 'ch2_emissive_casinocb2', + [-1346292139] = 'ch2_emissive_ch2_02_ema_slod', + [973421825] = 'ch2_emissive_ch2_02_ema2', + [-1853286198] = 'ch2_emissive_ch2_02_emb_slod', + [116261031] = 'ch2_emissive_ch2_02_emb', + [52771962] = 'ch2_emissive_ch2_03_hut02_lod', + [1712740913] = 'ch2_emissive_ch2_03_hut02', + [714766594] = 'ch2_emissive_ch2_03_slod', + [-1292873730] = 'ch2_emissive_ch2_03c_lod', + [1724302862] = 'ch2_emissive_ch2_03c', + [1497086912] = 'ch2_emissive_ch2_04_01_slod', + [-1472721525] = 'ch2_emissive_ch2_04_01', + [-321986373] = 'ch2_emissive_ch2_04_02_slod', + [-14337180] = 'ch2_emissive_ch2_04_02', + [-782606385] = 'ch2_emissive_ch2_04_03', + [446493267] = 'ch2_emissive_ch2_04_04', + [-322627932] = 'ch2_emissive_ch2_04_05', + [675450270] = 'ch2_emissive_ch2_04_06', + [176181786] = 'ch2_emissive_ch2_04_07', + [1134838881] = 'ch2_emissive_ch2_04_08', + [1440966879] = 'ch2_emissive_ch2_04_09', + [306185524] = 'ch2_emissive_ch2_04_doors', + [238857854] = 'ch2_emissive_ch2_05_01', + [15569888] = 'ch2_emissive_ch2_05_02', + [-2076404193] = 'ch2_emissive_ch2_05_slod', + [-331273348] = 'ch2_emissive_ch2_05c_01', + [-1099018245] = 'ch2_emissive_ch2_05c_02', + [-1632825255] = 'ch2_emissive_ch2_05c_03', + [-1319258694] = 'ch2_emissive_ch2_05c_04', + [803549891] = 'ch2_emissive_ch2_05c_05', + [29185652] = 'ch2_emissive_ch2_05c_06', + [340229000] = 'ch2_emissive_ch2_05c_07', + [-434594005] = 'ch2_emissive_ch2_05c_08', + [-1570318450] = 'ch2_emissive_ch2_05c_slod', + [-145786799] = 'ch2_emissive_ch2_05d_01', + [-846715709] = 'ch2_emissive_ch2_05d_02', + [-1127447732] = 'ch2_emissive_ch2_05d_03', + [1051854613] = 'ch2_emissive_ch2_05d_04', + [-1395301538] = 'ch2_emissive_ch2_05d_05', + [-1737952541] = 'ch2_emissive_ch2_05d_slod', + [946890175] = 'ch2_emissive_ch2_05e_01', + [-13470908] = 'ch2_emissive_ch2_05e_02', + [-604492592] = 'ch2_emissive_ch2_05e_03', + [-1586055222] = 'ch2_emissive_ch2_05e_04', + [-281619635] = 'ch2_emissive_ch2_05e_05', + [-990216495] = 'ch2_emissive_ch2_05e_06', + [-1819894806] = 'ch2_emissive_ch2_05e_07', + [-1008171437] = 'ch2_emissive_ch2_05e_slod', + [582570255] = 'ch2_emissive_ch2_05f_01', + [-722061942] = 'ch2_emissive_ch2_05f_02', + [107583600] = 'ch2_emissive_ch2_05f_03', + [949255365] = 'ch2_emissive_ch2_05f_04', + [1334061780] = 'ch2_emissive_ch2_05f_05', + [-1581035695] = 'ch2_emissive_ch2_05f_06', + [1809048435] = 'ch2_emissive_ch2_05f_07', + [1038419862] = 'ch2_emissive_ch2_05f_08', + [70980671] = 'ch2_emissive_ch2_05f_09', + [-1360073520] = 'ch2_emissive_ch2_05f_10', + [-196970630] = 'ch2_emissive_ch2_05f_11', + [-1785821757] = 'ch2_emissive_ch2_05f_slod', + [1001872854] = 'ch2_emissive_ch2_06_02_slod', + [266950412] = 'ch2_emissive_ch2_06_02', + [1572903863] = 'ch2_emissive_ch2_06_03_slod', + [-906179840] = 'ch2_emissive_ch2_06_03', + [-675454368] = 'ch2_emissive_ch2_06_04_slod', + [-1135661147] = 'ch2_emissive_ch2_06_04', + [634450536] = 'ch2_emissive_ch2_06_04b_lod', + [-1712000256] = 'ch2_emissive_ch2_06_04b', + [-1543961018] = 'ch2_emissive_ch2_06_slod', + [90400011] = 'ch2_emissive_ch2_06', + [-200989116] = 'ch2_emissive_ch2_07_01', + [1410000466] = 'ch2_emissive_ch2_07_02', + [1137264079] = 'ch2_emissive_ch2_07_03', + [892741801] = 'ch2_emissive_ch2_07_04', + [652971028] = 'ch2_emissive_ch2_07_05', + [-1425107880] = 'ch2_emissive_ch2_07_06', + [144112531] = 'ch2_emissive_ch2_07_slod', + [-1515902363] = 'ch2_emissive_ch2_07b_01', + [-1746497816] = 'ch2_emissive_ch2_07b_02', + [-1498665865] = 'ch2_emissive_ch2_07b_03', + [-1998393115] = 'ch2_emissive_ch2_07b_04', + [2048086854] = 'ch2_emissive_ch2_07b_05', + [1817819091] = 'ch2_emissive_ch2_07b_06', + [1617862653] = 'ch2_emissive_ch2_07b_07', + [1102144123] = 'ch2_emissive_ch2_07b_08', + [867944080] = 'ch2_emissive_ch2_07b_09', + [1783384760] = 'ch2_emissive_ch2_07b_10', + [513016906] = 'ch2_emissive_ch2_07b_slod', + [-317974989] = 'ch2_emissive_ch2_07c_01', + [456520326] = 'ch2_emissive_ch2_07c_02', + [145214826] = 'ch2_emissive_ch2_07c_03', + [-985110200] = 'ch2_emissive_ch2_07c_slod', + [1541993007] = 'ch2_emissive_ch2_07d_01', + [1721599896] = 'ch2_emissive_ch2_07d_02', + [-807118300] = 'ch2_emissive_ch2_07d_03', + [-2098675666] = 'ch2_emissive_ch2_07d_04', + [-1792908127] = 'ch2_emissive_ch2_07d_05', + [806132327] = 'ch2_emissive_ch2_07d_06', + [1110392492] = 'ch2_emissive_ch2_07d_07', + [-177494746] = 'ch2_emissive_ch2_07d_08', + [1604614550] = 'ch2_emissive_ch2_07d_09', + [1227836380] = 'ch2_emissive_ch2_07d_10', + [980266585] = 'ch2_emissive_ch2_07d_11', + [614063407] = 'ch2_emissive_ch2_07d_slod', + [589303169] = 'ch2_emissive_ch2_08_01', + [-1872599020] = 'ch2_emissive_ch2_08_02', + [2014984068] = 'ch2_emissive_ch2_08_03', + [1710002985] = 'ch2_emissive_ch2_08_04', + [-400943242] = 'ch2_emissive_ch2_08_05', + [1447130051] = 'ch2_emissive_ch2_08_06', + [1267621469] = 'ch2_emissive_ch2_08_07', + [968604344] = 'ch2_emissive_ch2_08_08', + [-1285968394] = 'ch2_emissive_ch2_08_09', + [1756798513] = 'ch2_emissive_ch2_08_10', + [-1748992956] = 'ch2_emissive_ch2_08_11', + [594746811] = 'ch2_emissive_ch2_08_slod', + [-1605144853] = 'ch2_emissive_ch2_08b_01', + [-1416919713] = 'ch2_emissive_ch2_08b_02', + [2108959149] = 'ch2_emissive_ch2_08b_03', + [-1895183272] = 'ch2_emissive_ch2_08b_04', + [-149349255] = 'ch2_emissive_ch2_08b_05', + [21967077] = 'ch2_emissive_ch2_08b_06', + [1829520235] = 'ch2_emissive_ch2_08b_slod', + [1939476373] = 'ch2_emissive_ch2_09_01', + [-580787417] = 'ch2_emissive_ch2_09_02', + [-1807494936] = 'ch2_emissive_ch2_09_03', + [-2046348177] = 'ch2_emissive_ch2_09_04', + [973118563] = 'ch2_emissive_ch2_09_05', + [-1530105351] = 'ch2_emissive_ch2_09_06', + [1585472866] = 'ch2_emissive_ch2_09_07', + [1228421842] = 'ch2_emissive_ch2_09_08', + [1557226000] = 'ch2_emissive_ch2_09_09', + [-582032979] = 'ch2_emissive_ch2_09_10', + [-1292006133] = 'ch2_emissive_ch2_09_11', + [1698471060] = 'ch2_emissive_ch2_09_slod', + [1934235507] = 'ch2_emissive_ch2_09b_01', + [1680603447] = 'ch2_emissive_ch2_09b_02', + [1448893848] = 'ch2_emissive_ch2_09b_03', + [954671790] = 'ch2_emissive_ch2_09b_04', + [722896653] = 'ch2_emissive_ch2_09b_05', + [441312632] = 'ch2_emissive_ch2_09b_06', + [250924742] = 'ch2_emissive_ch2_09b_07', + [503147723] = 'ch2_emissive_ch2_09b_08', + [2568479] = 'ch2_emissive_ch2_09b_09', + [103267916] = 'ch2_emissive_ch2_09b_10', + [-655334434] = 'ch2_emissive_ch2_09b_11', + [-914242303] = 'ch2_emissive_ch2_09b_12', + [561450452] = 'ch2_emissive_ch2_09b_slod', + [-1081332392] = 'ch2_emissive_ch2_09c_01', + [-1338143045] = 'ch2_emissive_ch2_09c_02', + [567243229] = 'ch2_emissive_ch2_09c_03', + [305779378] = 'ch2_emissive_ch2_09c_04', + [89372902] = 'ch2_emissive_ch2_09c_05', + [-150528947] = 'ch2_emissive_ch2_09c_06', + [1521017739] = 'ch2_emissive_ch2_09c_07', + [1282754340] = 'ch2_emissive_ch2_09c_08', + [1046162160] = 'ch2_emissive_ch2_09c_09', + [-1434875737] = 'ch2_emissive_ch2_09c_10', + [-614700436] = 'ch2_emissive_ch2_09c_11', + [-954318352] = 'ch2_emissive_ch2_09c_12', + [-1941910518] = 'ch2_emissive_ch2_09c_13', + [946155990] = 'ch2_emissive_ch2_09c_slod', + [-1109323806] = 'ch2_emissive_ch2_11_01', + [-1661579791] = 'ch2_emissive_ch2_11_02', + [-1373278129] = 'ch2_emissive_ch2_11_03', + [991726143] = 'ch2_emissive_ch2_11_04', + [1296969378] = 'ch2_emissive_ch2_11_05', + [1470055236] = 'ch2_emissive_ch2_11_06', + [1775888313] = 'ch2_emissive_ch2_11_07', + [846821629] = 'ch2_emissive_ch2_11_08', + [70687864] = 'ch2_emissive_ch2_11_09', + [1371223724] = 'ch2_emissive_ch2_11_10', + [574740414] = 'ch2_emissive_ch2_11_11', + [805598019] = 'ch2_emissive_ch2_11_12', + [215231715] = 'ch2_emissive_ch2_11_13', + [-531311643] = 'ch2_emissive_ch2_11_14', + [-1107128511] = 'ch2_emissive_ch2_11_15', + [-879789680] = 'ch2_emissive_ch2_11_slod', + [-1591119746] = 'ch2_emissive_ch2_11b_01', + [-1770824942] = 'ch2_emissive_ch2_11b_02', + [-136602143] = 'ch2_emissive_ch2_11b_03', + [-922599373] = 'ch2_emissive_ch2_11b_04', + [-1137400168] = 'ch2_emissive_ch2_11b_05', + [-1384478428] = 'ch2_emissive_ch2_11b_06', + [841060972] = 'ch2_emissive_ch2_11b_07', + [-1752822179] = 'ch2_emissive_ch2_11b_slod', + [1148287288] = 'ch2_emissive_ch2_12_01', + [936370165] = 'ch2_emissive_ch2_12_02', + [557101759] = 'ch2_emissive_ch2_12_03', + [-1485324473] = 'ch2_emissive_ch2_12_04', + [-1841785655] = 'ch2_emissive_ch2_12_05', + [-2099513844] = 'ch2_emissive_ch2_12_06', + [1838664580] = 'ch2_emissive_ch2_12_07', + [-393035396] = 'ch2_emissive_ch2_12_08', + [-615373061] = 'ch2_emissive_ch2_12_09', + [580204256] = 'ch2_emissive_ch2_12_10', + [273388109] = 'ch2_emissive_ch2_12_11', + [117211051] = 'ch2_emissive_ch2_12_12', + [-209069882] = 'ch2_emissive_ch2_12_13', + [1509729710] = 'ch2_emissive_ch2_12_14', + [1200554195] = 'ch2_emissive_ch2_12_15', + [1014491813] = 'ch2_emissive_ch2_12_16', + [734087480] = 'ch2_emissive_ch2_12_17', + [1655551752] = 'ch2_emissive_ch2_12_18', + [1367610549] = 'ch2_emissive_ch2_12_19', + [-1682789895] = 'ch2_emissive_ch2_12_20', + [-2130807667] = 'ch2_emissive_ch2_12_21', + [1381209912] = 'ch2_emissive_ch2_12_22', + [1620259767] = 'ch2_emissive_ch2_12_23', + [-440517105] = 'ch2_emissive_ch2_12_24', + [699181396] = 'ch2_emissive_ch2_12_slod', + [-397604704] = 'ch2_emissive_ch2_12b_01', + [-96555901] = 'ch2_emissive_ch2_12b_02', + [210227477] = 'ch2_emissive_ch2_12b_03', + [-1573586043] = 'ch2_emissive_ch2_12b_04', + [804525825] = 'ch2_emissive_ch2_12b_05', + [1034465898] = 'ch2_emissive_ch2_12b_06', + [1534062072] = 'ch2_emissive_ch2_12b_07', + [-346386993] = 'ch2_emissive_ch2_12b_08', + [1635857228] = 'ch2_emissive_ch2_12b_slod', + [-1847632370] = 'ch2_emissive_em_a_slod', + [-482909493] = 'ch2_emissive_emi_00', + [-1677503388] = 'ch2_emissive_emi_01', + [-946885764] = 'ch2_emissive_emi_02', + [730166126] = 'ch2_emissive_emi_03', + [498522065] = 'ch2_emissive_emi_04', + [250133045] = 'ch2_emissive_emi_05', + [19209902] = 'ch2_emissive_emi_06', + [1199123281] = 'ch2_emissive_emi_07', + [963088174] = 'ch2_emissive_emi_08', + [706506904] = 'ch2_emissive_emi_09', + [1680466198] = 'ch2_emissive_emi_10', + [971410576] = 'ch2_emissive_emi_11', + [437503034] = 'ch2_emissive_emi_b_slod', + [-526698890] = 'ch2_emissive_emis01', + [-2126352660] = 'ch2_lod_emissive_slod3', + [-1344533778] = 'ch2_lod_slod3', + [-2088596540] = 'ch2_lod2_emissive_slod3', + [-467758802] = 'ch2_lod2_slod3', + [1506734260] = 'ch2_lod3_emissive_slod3', + [841438406] = 'ch2_lod3_slod3', + [-1087646514] = 'ch2_lod4_s3a', + [-1385746107] = 'ch2_lod4_s3b', + [-1557062439] = 'ch2_lod4_s3c', + [1895439374] = 'ch2_rdprops_cblmsh01', + [588969625] = 'ch2_rdprops_cblmsh90', + [-1183705922] = 'ch2_rdprops_ch2_rd_wire059', + [-1877229358] = 'ch2_rdprops_ch2_rd_wire060', + [-2024427706] = 'ch2_rdprops_ch2_rd_wire061', + [-1131374149] = 'ch2_rdprops_ch2_rd_wire062', + [-1580112835] = 'ch2_rdprops_ch2_rd_wire063', + [1335541713] = 'ch2_rdprops_ch2_rd_wire064', + [1028660028] = 'ch2_rdprops_ch2_rd_wire065', + [1797748458] = 'ch2_rdprops_ch2_rd_wire066', + [1490408007] = 'ch2_rdprops_ch2_rd_wire067', + [-180024509] = 'ch2_rdprops_ch2_rd_wire068', + [68856046] = 'ch2_rdprops_ch2_rd_wire069', + [-1950590609] = 'ch2_rdprops_ch2_rd_wire070', + [-1704102191] = 'ch2_rdprops_ch2_rd_wire071', + [-1472785820] = 'ch2_rdprops_ch2_rd_wire072', + [-1238421932] = 'ch2_rdprops_ch2_rd_wire073', + [-1028307104] = 'ch2_rdprops_ch2_rd_wire074', + [-788732945] = 'ch2_rdprops_ch2_rd_wire075', + [-551911382] = 'ch2_rdprops_ch2_rd_wire076', + [226286830] = 'ch2_rdprops_ch2_rd_wire077', + [508526227] = 'ch2_rdprops_ch2_rd_wire078', + [733485412] = 'ch2_rdprops_ch2_rd_wire079', + [1193332505] = 'ch2_rdprops_ch2_rd_wire080', + [1432251284] = 'ch2_rdprops_ch2_rd_wire081', + [1897014011] = 'ch2_rdprops_ch2_rd_wire083', + [-1777767191] = 'ch2_rdprops_ch2_rd_wire084', + [-1522332836] = 'ch2_rdprops_ch2_rd_wire085', + [-1304386217] = 'ch2_rdprops_ch2_rd_wire086', + [-1024047422] = 'ch2_rdprops_ch2_rd_wire087', + [-552829202] = 'ch2_rdprops_ch2_rd_wire088', + [-325379573] = 'ch2_rdprops_ch2_rd_wire089', + [1089683862] = 'ch2_rdprops_ch2_rd_wire090', + [850044165] = 'ch2_rdprops_ch2_rd_wire091', + [537624503] = 'ch2_rdprops_ch2_rd_wire092', + [154423817] = 'ch2_rdprops_ch2_rd_wire093', + [-196007373] = 'ch2_rdprops_ch2_rd_wire094', + [-365357565] = 'ch2_rdprops_ch2_rd_wire095', + [-638945946] = 'ch2_rdprops_ch2_rd_wire096', + [-936652311] = 'ch2_rdprops_ch2_rd_wire097', + [-1116357507] = 'ch2_rdprops_ch2_rd_wire098', + [-1416488778] = 'ch2_rdprops_ch2_rd_wire099', + [-314571052] = 'ch2_rdprops_ch2_rd_wire100', + [387013238] = 'ch2_rdprops_ch2_rd_wire101', + [-1271360318] = 'ch2_rdprops_ch2_rd_wire104', + [-559289948] = 'ch2_rdprops_ch2_rd_wire105', + [1004512266] = 'ch2_rdprops_ch2_rd_wire106', + [1713830040] = 'ch2_rdprops_ch2_rd_wire107', + [1466325783] = 'ch2_rdprops_ch2_rd_wire108', + [-1996603822] = 'ch2_rdprops_ch2_rd_wire109', + [368435351] = 'ch2_rdprops_ch2_rd_wire110', + [1432838009] = 'ch2_rdprops_ch2_rd_wire111', + [45136397] = 'ch2_rdprops_ch2_rd_wire112', + [1995874951] = 'ch2_rdprops_ch2_rd_wire113', + [-962346528] = 'ch2_rdprops_ch2_rd_wire114', + [-665164467] = 'ch2_rdprops_ch2_rd_wire115', + [-1007960976] = 'ch2_rdprops_ch2_rd_wire117', + [263017462] = 'ch2_rdprops_ch2_rd_wire118', + [-1772789656] = 'ch2_rdprops_ch2_rd_wire121', + [-2003581723] = 'ch2_rdprops_ch2_rd_wire122', + [-899725201] = 'ch2_rdprops_ch2_rd_wire123', + [-49074726] = 'ch2_rdprops_ch2_rd_wire124', + [-428474208] = 'ch2_rdprops_ch2_rd_wire125', + [406381605] = 'ch2_rdprops_ch2_rd_wire126', + [157501050] = 'ch2_rdprops_ch2_rd_wire127', + [874159080] = 'ch2_rdprops_ch2_rd_wire128', + [1691385171] = 'ch2_rdprops_ch2_rd_wire129', + [1641084412] = 'ch2_rdprops_ch2_rd_wire131', + [1443618418] = 'ch2_rdprops_ch2_rd_wire132', + [-2059617065] = 'ch2_rdprops_ch2_rd_wire133', + [-350821909] = 'ch2_rdprops_cm10968_tstd001', + [-245228707] = 'ch2_rdprops_combo41_01_lod', + [-662595029] = 'ch2_rdprops_combo42_02_lod', + [-809354461] = 'ch2_rdprops_combo43_01_lod', + [-183234223] = 'ch2_rdprops_combo43_02_lod', + [84764402] = 'ch2_rdprops_combo43_03_lod', + [1313116553] = 'ch2_rdprops_combo46_01_lod', + [-921978812] = 'ch2_rdprops_combo47_01_lod', + [325906790] = 'ch2_rdprops_combo49_01_lod', + [-982102933] = 'ch2_rdprops_combo51_01_lod', + [-2043337333] = 'ch2_rdprops_combo51_02_lod', + [893951728] = 'ch2_rdprops_combo51_03_lod', + [-1489658945] = 'ch2_rdprops_combo52_01_lod', + [-759781356] = 'ch2_rdprops_combo53_01_lod', + [-1474147841] = 'ch2_rdprops_combo54_01_lod', + [-2086743060] = 'ch2_rdprops_combo54_03_lod', + [-291372054] = 'ch2_rdprops_combo55_01_lod', + [1120695627] = 'ch2_rdprops_combo56_01_lod', + [157080718] = 'ch2_rdprops_combo56_02_lod', + [-2126964089] = 'ch2_rdprops_combo56_03_lod', + [1539791741] = 'ch2_rdprops_combo57_01_lod', + [750118065] = 'ch2_rdprops_combo57_02_lod', + [-896003620] = 'ch2_rdprops_combo57_03_lod', + [1260637196] = 'ch2_rdprops_combo58_01_lod', + [879978744] = 'ch2_rdprops_combo59_02_lod', + [290099903] = 'ch2_rdprops_combo59_03_lod', + [507853080] = 'ch2_rdprops_combo59_04_lod', + [-459325159] = 'ch2_rdprops_combo59_05_lod', + [1813024439] = 'ch2_rdprops_combo60_01_lod', + [1260810222] = 'ch2_rdprops_combo61_01_lod', + [-1588852169] = 'ch2_rdprops_combo62_02_lod', + [-1922289286] = 'ch2_rdprops_combo63_03_lod', + [1583748582] = 'ch2_rdprops_combo63_04_lod', + [551420588] = 'ch2_rdprops_combo64_01_lod', + [-1532969622] = 'ch2_rdprops_combo65_01_lod', + [1249514566] = 'ch2_rdprops_combo66_01_lod', + [-1519861053] = 'ch2_rdprops_combo66_02_lod', + [-1963924460] = 'ch2_rdprops_combo66_03_lod', + [-1586506824] = 'ch2_rdprops_combo67_02_lod', + [-1125743543] = 'ch2_rdprops_combo68_01_lod', + [2067254602] = 'ch2_rdprops_combo68_02_lod', + [753160103] = 'ch2_rdprops_combo68_03_lod', + [1168240609] = 'ch2_rdprops_combo69_01_lod', + [903867056] = 'ch2_rdprops_combo69_02_lod', + [-1365379109] = 'ch2_rdprops_combo69_03_lod', + [-1872549914] = 'ch2_rdprops_combo70_01_lod', + [-2059513476] = 'ch2_rdprops_combo70_02_lod', + [1375808959] = 'ch2_rdprops_combo70_03_lod', + [10959767] = 'ch2_rdprops_combo70_04_lod', + [38792473] = 'ch2_rdprops_combo70_05_lod', + [-440859822] = 'ch2_rdprops_combo71_01_lod', + [-898346223] = 'ch2_rdprops_combo72_01_lod', + [-2026741398] = 'ch2_rdprops_combo73_01_lod', + [-96845643] = 'ch2_rdprops_combo74_01_lod', + [-1992228038] = 'ch2_rdprops_combo75_01_lod', + [2140004518] = 'ch2_rdprops_combo75_02_lod', + [-844323838] = 'ch2_rdprops_combo75_03_lod', + [715123617] = 'ch2_rdprops_combo76_01_lod', + [-748346662] = 'ch2_rdprops_combo77_01_lod', + [-2046811437] = 'ch2_rdprops_combo78_01_lod', + [-1761025503] = 'ch2_rdprops_combo78_02_lod', + [1200885952] = 'ch2_rdprops_combo79_01_lod', + [-1255247171] = 'ch2_rdprops_ngcab01', + [1845650534] = 'ch2_rdprops_ngcab02', + [1485584762] = 'ch2_rdprops_ngcab03', + [-1667907268] = 'ch2_rdprops_ngcab04', + [-1975149412] = 'ch2_rdprops_ngcab05', + [1091734071] = 'ch2_rdprops_ngcab06', + [-1361418811] = 'ch2_rdprops_ngcab07', + [1706840970] = 'ch2_rdprops_ngcab08', + [1399729902] = 'ch2_rdprops_ngcab09', + [-1937366443] = 'ch2_rdprops_ngcab10', + [-2007426565] = 'ch2_rdprops_ngcab11', + [-1321407550] = 'ch2_rdprops_ngcab12', + [-1558491265] = 'ch2_rdprops_ngcab13', + [-1851544392] = 'ch2_rdprops_ngcab14', + [2077851940] = 'ch2_rdprops_ngcab15', + [1193514937] = 'ch2_rdprops_ngcab16', + [-1619703717] = 'ch2_rdprops_ngcab17', + [1690882819] = 'ch2_rdprops_ngcab18', + [1460811670] = 'ch2_rdprops_ngcab19', + [-403974757] = 'ch2_rdprops_ngcab20', + [786545094] = 'ch2_rdprops_ngcab200', + [10935633] = 'ch2_rdprops_ngcab201', + [1247637693] = 'ch2_rdprops_ngcab202', + [477730038] = 'ch2_rdprops_ngcab203', + [-822806030] = 'ch2_rdprops_ngcab204', + [-1602347771] = 'ch2_rdprops_ngcab205', + [-362499879] = 'ch2_rdprops_ngcab206', + [-1137126278] = 'ch2_rdprops_ngcab207', + [1505693576] = 'ch2_rdprops_ngcab208', + [1804940084] = 'ch2_rdprops_ngcab209', + [-194777461] = 'ch2_rdprops_ngcab21', + [807157171] = 'ch2_rdprops_ngcab210', + [-37398266] = 'ch2_rdprops_ngcab211', + [1270412524] = 'ch2_rdprops_ngcab212', + [426184777] = 'ch2_rdprops_ngcab213', + [-1037235682] = 'ch2_rdprops_ngcab22', + [-789174352] = 'ch2_rdprops_ngcab23', + [550061909] = 'ch2_rdprops_ngcab24', + [784196414] = 'ch2_rdprops_ngcab25', + [-417671847] = 'ch2_rdprops_ngcab31', + [-648168993] = 'ch2_rdprops_ngcab32', + [-896590782] = 'ch2_rdprops_ngcab33', + [539379567] = 'ch2_rdprops_ngcab35', + [-311544526] = 'ch2_rdprops_w_pt2210', + [926337218] = 'ch2_rdprops_w_pt2211', + [-392766589] = 'ch2_rdprops_w_sp_pt2130', + [693900483] = 'ch2_rdprops_w_spline_pt2108', + [1540585905] = 'ch2_rdprops_w_spline_pt2109', + [2145436451] = 'ch2_rdprops_w_spline_pt2111', + [-1262998319] = 'ch2_rdprops_w_spline_pt2112', + [-992228060] = 'ch2_rdprops_w_spline_pt2113', + [-178016717] = 'ch2_rdprops_w_spline_pt2114', + [-475985234] = 'ch2_rdprops_w_spline_pt2115', + [160126594] = 'ch2_rdprops_w_spline_pt2116', + [1044758518] = 'ch2_rdprops_w_spline_pt2117', + [737090377] = 'ch2_rdprops_w_spline_pt2118', + [1357014319] = 'ch2_rdprops_w_spline_pt2119', + [2050788083] = 'ch2_rdprops_w_spline_pt2120', + [-263227625] = 'ch2_rdprops_w_spline_pt2121', + [-575614502] = 'ch2_rdprops_w_spline_pt2122', + [-739787192] = 'ch2_rdprops_w_spline_pt2123', + [-1060759547] = 'ch2_rdprops_w_spline_pt2124', + [386188421] = 'ch2_rdprops_w_spline_pt2125', + [140650304] = 'ch2_rdprops_w_spline_pt2126', + [-164396317] = 'ch2_rdprops_w_spline_pt2127', + [1521929192] = 'ch2_rdprops_w_spline_pt2129', + [1355953867] = 'ch2_rdprops_w_spline_pt2130', + [-1560356065] = 'ch2_rdprops_w_spline_pt2131', + [-1269858880] = 'ch2_rdprops_w_spline_pt2132', + [-2067685723] = 'ch2_rdprops_w_spline_pt2133', + [-2015517475] = 'ch2_rdprops_w_spline_pt2134', + [-1143403309] = 'ch2_rdprops_w_spline_pt2137', + [521524047] = 'ch2_rdprops_w_spline_pt2138', + [819427026] = 'ch2_rdprops_w_spline_pt2139', + [-1394217579] = 'ch2_rdprops_w_spline_pt2140', + [-1711585344] = 'ch2_rdprops_w_spline_pt2141', + [1383413933] = 'ch2_rdprops_w_spline_pt2143', + [1085740337] = 'ch2_rdprops_w_spline_pt2144', + [1862791634] = 'ch2_rdprops_w_spline_pt2145', + [-1307248537] = 'ch2_rdprops_w_spline_pt2148', + [-2084103220] = 'ch2_rdprops_w_spline_pt2149', + [67443438] = 'ch2_rdprops_w_spline_pt2151', + [844134276] = 'ch2_rdprops_w_spline_pt2152', + [538628889] = 'ch2_rdprops_w_spline_pt2153', + [1022561481] = 'ch2_rdprops_w_spline_pt2154', + [1789716540] = 'ch2_rdprops_w_spline_pt2155', + [1502201334] = 'ch2_rdprops_w_spline_pt2156', + [1996423388] = 'ch2_rdprops_w_spline_pt2158', + [-1253671574] = 'ch2_rdprops_w_spline_pt2159', + [2006581550] = 'ch2_rdprops_w_spline_pt2160', + [-993092714] = 'ch2_rdprops_w_spline_pt2161', + [-1290995693] = 'ch2_rdprops_w_spline_pt2162', + [-807030332] = 'ch2_rdprops_w_spline_pt2164', + [-90798295] = 'ch2_rdprops_w_spline_pt2165', + [-330143075] = 'ch2_rdprops_w_spline_pt2166', + [856324112] = 'ch2_rdprops_w_spline_pt2167', + [147530642] = 'ch2_rdprops_w_spline_pt2168', + [1341141467] = 'ch2_rdprops_w_spline_pt2169', + [1311550720] = 'ch2_rdprops_w_spline_pt2170', + [-2054775889] = 'ch2_rdprops_w_spline_pt2171', + [1775920219] = 'ch2_rdprops_w_spline_pt2172', + [-1596370348] = 'ch2_rdprops_w_spline_pt2173', + [-857593243] = 'ch2_rdprops_w_spline_pt2175', + [-1132688998] = 'ch2_rdprops_w_spline_pt2176', + [-363928258] = 'ch2_rdprops_w_spline_pt2177', + [-670941019] = 'ch2_rdprops_w_spline_pt2178', + [396869619] = 'ch2_rdprops_w_spline_pt2179', + [-39318796] = 'ch2_rdprops_w_spline_pt2180', + [925957637] = 'ch2_rdprops_w_spline_pt2181', + [586339721] = 'ch2_rdprops_w_spline_pt2182', + [110599387] = 'ch2_rdprops_w_spline_pt2183', + [-236752017] = 'ch2_rdprops_w_spline_pt2184', + [740255722] = 'ch2_rdprops_w_spline_pt2185', + [-1121056251] = 'ch2_rdprops_w_spline_pt2187', + [-1351913856] = 'ch2_rdprops_w_spline_pt2188', + [-483928584] = 'ch2_rdprops_w_spline_pt2189', + [91265317] = 'ch2_rdprops_w_spline_pt2190', + [867104161] = 'ch2_rdprops_w_spline_pt2191', + [570118714] = 'ch2_rdprops_w_spline_pt2192', + [-655474623] = 'ch2_rdprops_w_spline_pt2193', + [-347282178] = 'ch2_rdprops_w_spline_pt2194', + [-1114994310] = 'ch2_rdprops_w_spline_pt2195', + [-808833543] = 'ch2_rdprops_w_spline_pt2196', + [-1479778818] = 'ch2_rdprops_w_spline_pt2197', + [1700580791] = 'ch2_rdprops_w_spline_pt2200', + [-1826969294] = 'ch2_rdprops_w_spline_pt2201', + [560547277] = 'ch2_rdprops_w_spline_pt2203', + [-64914626] = 'ch2_rdprops_w_spline_pt2207', + [-376941044] = 'ch2_rdprops_w_spline_pt2208', + [399454873] = 'ch2_rdprops_w_spline_pt2209', + [-196122054] = 'ch2_rdprops_w_spline_pt2210', + [96144657] = 'ch2_rdprops_w_spline_pt2211', + [-105122457] = 'ch2_rdprops_w_spline_pt2212', + [124293312] = 'ch2_rdprops_w_spline_pt2213', + [373272174] = 'ch2_rdprops_w_spline_pt2214', + [606554685] = 'ch2_rdprops_w_spline_pt2215', + [-1517171532] = 'ch2_rdprops_w_spline_pt2216', + [-1344478902] = 'ch2_rdprops_w_spline_pt2217', + [-583779240] = 'ch2_rdprops_w_spline_pt2218', + [-351676413] = 'ch2_rdprops_w_spline_pt2219', + [-1784789251] = 'ch2_rdprops_w_spline_pt2220', + [1018541072] = 'ch2_rdprops_w_spline_pt269b', + [-325624256] = 'ch2_rdprops_w_swire_pt2210', + [-1696974137] = 'ch2_rdprops_w_swire_pt2211', + [-337532644] = 'ch2_rdprops_w_wire_pt2209', + [906445010] = 'ch2_rdprops_w_wire_pt2210', + [-397662887] = 'ch2_rdprops_w_wire_pt2211', + [-629012027] = 'ch2_rdprops_w_wire_pt2212', + [215019106] = 'ch2_rdprops_w_wire_pt2213', + [-1553949467] = 'ch2_rdprops_wire131', + [-1322174330] = 'ch2_rdprops_wire132', + [1614558072] = 'ch2_roads_crds_lod_4', + [-1392919560] = 'ch2_roads_crds_sg_4', + [-835903823] = 'ch2_roads_rd_00', + [-673041893] = 'ch2_roads_rd_01', + [-1528116195] = 'ch2_roads_rd_02', + [-298197318] = 'ch2_roads_rd_06', + [-127995132] = 'ch2_roads_rd_07', + [-895674495] = 'ch2_roads_rd_08', + [-750180135] = 'ch2_roads_rd_09', + [533710165] = 'ch2_roads_rd_10', + [1670827230] = 'ch2_roads_rd_16', + [289187883] = 'ch2_roads_rd_17', + [-1838142832] = 'ch2_roads_rd_18', + [-473694006] = 'ch2_roads_rd_19_dcl', + [-2016996034] = 'ch2_roads_rd_19', + [-12463890] = 'ch2_roads_rd_24', + [283866177] = 'ch2_roads_rd_25', + [-1915523557] = 'ch2_roads_rd_26', + [1461059745] = 'ch2_roads_rd_27', + [1777051212] = 'ch2_roads_rd_28', + [1421573100] = 'ch2_roads_rd_29', + [628499142] = 'ch2_roads_rd_30', + [-983571809] = 'ch2_roads_rd_39', + [-911808483] = 'ch2_roads_rd_40', + [-1742338788] = 'ch2_roads_rd_41', + [434309268] = 'ch2_roads_rd_42', + [344325582] = 'ch2_roads_rd_46', + [-267832107] = 'ch2_roads_rd_48', + [1228137485] = 'ch2_roads_rd_51', + [1518372518] = 'ch2_roads_rd_52', + [362865869] = 'ch2_roads_rdrehab', + [-1789138752] = 'ch2_roadsa_07', + [-1747946607] = 'ch2_roadsa_58', + [-6587591] = 'ch2_roadsa_crds_lod_1', + [-1305026447] = 'ch2_roadsa_crds_lod_2', + [-507494525] = 'ch2_roadsa_crds_lod_3', + [-1768347338] = 'ch2_roadsa_crds_lod_4', + [-2066545238] = 'ch2_roadsa_crds_lod_5', + [-1726861724] = 'ch2_roadsa_crds_lod_6', + [-1999860263] = 'ch2_roadsa_crds_lod_7', + [1624682478] = 'ch2_roadsa_crds_sg_1', + [-1516717707] = 'ch2_roadsa_crds_sg_2', + [2066244753] = 'ch2_roadsa_crds_sg_3', + [1348210485] = 'ch2_roadsa_crds_sg_4', + [1049258898] = 'ch2_roadsa_crds_sg_5', + [1773715950] = 'ch2_roadsa_crds_sg_6', + [1602465156] = 'ch2_roadsa_crds_sg_7', + [882990490] = 'ch2_roadsa_dam', + [-1975996790] = 'ch2_roadsa_dcl_rd_join_01', + [383476691] = 'ch2_roadsa_junt_dcls_01', + [901892304] = 'ch2_roadsa_rd_00', + [1170761949] = 'ch2_roadsa_rd_01', + [-78294024] = 'ch2_roadsa_rd_03', + [279608994] = 'ch2_roadsa_rd_04', + [-525558105] = 'ch2_roadsa_rd_05', + [-293258664] = 'ch2_roadsa_rd_06', + [173652714] = 'ch2_roadsa_rd_060', + [-1303395858] = 'ch2_roadsa_rd_07', + [-950309883] = 'ch2_roadsa_rd_08', + [1502974115] = 'ch2_roadsa_rd_09', + [-1409434410] = 'ch2_roadsa_rd_10', + [1085250545] = 'ch2_roadsa_rd_100', + [132794873] = 'ch2_roadsa_rd_100dcal', + [-1294710141] = 'ch2_roadsa_rd_11', + [-1064671761] = 'ch2_roadsa_rd_12', + [-2001504702] = 'ch2_roadsa_rd_13', + [1457885863] = 'ch2_roadsa_rd_14', + [760889225] = 'ch2_roadsa_rd_15', + [2072009692] = 'ch2_roadsa_rd_16', + [444766682] = 'ch2_roadsa_rd_18', + [-525851098] = 'ch2_roadsa_rd_19', + [2006667994] = 'ch2_roadsa_rd_20', + [-1992690153] = 'ch2_roadsa_rd_21', + [1471943452] = 'ch2_roadsa_rd_22', + [1006459831] = 'ch2_roadsa_rd_24', + [241434757] = 'ch2_roadsa_rd_25', + [631844623] = 'ch2_roadsa_rd_26', + [-221886134] = 'ch2_roadsa_rd_27', + [151287238] = 'ch2_roadsa_rd_28', + [-1448593657] = 'ch2_roadsa_rd_29', + [-1820358262] = 'ch2_roadsa_rd_30', + [2013614742] = 'ch2_roadsa_rd_31', + [-1915781590] = 'ch2_roadsa_rd_32', + [1551932301] = 'ch2_roadsa_rd_33', + [1648600851] = 'ch2_roadsa_rd_34', + [796770688] = 'ch2_roadsa_rd_35', + [1161555196] = 'ch2_roadsa_rd_36', + [260735386] = 'ch2_roadsa_rd_37', + [616606726] = 'ch2_roadsa_rd_38', + [165312058] = 'ch2_roadsa_rd_39', + [-1716677442] = 'ch2_roadsa_rd_40', + [1869922381] = 'ch2_roadsa_rd_41', + [1638606010] = 'ch2_roadsa_rd_42', + [1392084823] = 'ch2_roadsa_rd_43', + [1102406887] = 'ch2_roadsa_rd_44', + [1023302521] = 'ch2_roadsa_rd_45', + [792772606] = 'ch2_roadsa_rd_46', + [411210370] = 'ch2_roadsa_rd_47', + [-204715754] = 'ch2_roadsa_rd_48', + [718649104] = 'ch2_roadsa_rd_49', + [1983127468] = 'ch2_roadsa_rd_50', + [-1569458133] = 'ch2_roadsa_rd_51', + [-1985427819] = 'ch2_roadsa_rd_52', + [-1207590066] = 'ch2_roadsa_rd_53', + [-1385198046] = 'ch2_roadsa_rd_54', + [-785918574] = 'ch2_roadsa_rd_55', + [-549948993] = 'ch2_roadsa_rd_56', + [-729064347] = 'ch2_roadsa_rd_57', + [-364574772] = 'ch2_roadsa_rd_59', + [-528718569] = 'ch2_roadsb_25', + [-1303508813] = 'ch2_roadsb_26', + [-1015370996] = 'ch2_roadsb_27', + [-825704024] = 'ch2_roadsb_28', + [-766927611] = 'ch2_roadsb_30', + [-1953329256] = 'ch2_roadsb_33', + [1987831147] = 'ch2_roadsb_39', + [-1210719034] = 'ch2_roadsb_40', + [-1975350880] = 'ch2_roadsb_41', + [-287157534] = 'ch2_roadsb_42', + [-9079800] = 'ch2_roadsb_43', + [-776529780] = 'ch2_roadsb_44', + [-483738765] = 'ch2_roadsb_45', + [656687973] = 'ch2_roadsb_46', + [949020222] = 'ch2_roadsb_47', + [181308090] = 'ch2_roadsb_48', + [468987141] = 'ch2_roadsb_49', + [1963910393] = 'ch2_roadsb_50', + [1243123469] = 'ch2_roadsb_51', + [1500720578] = 'ch2_roadsb_52', + [-1162678208] = 'ch2_roadsb_53', + [-1924655765] = 'ch2_roadsb_54', + [-1611253049] = 'ch2_roadsb_55', + [-238854560] = 'ch2_roadsb_56', + [-199597298] = 'ch2_roadsb_57', + [-967735427] = 'ch2_roadsb_58', + [-728030192] = 'ch2_roadsb_59', + [-1046184125] = 'ch2_roadsb_60', + [-1841684369] = 'ch2_roadsb_61', + [-485473766] = 'ch2_roadsb_62', + [-155883164] = 'ch2_roadsb_63', + [-852356562] = 'ch2_roadsb_armco_hill_0_lod', + [291268088] = 'ch2_roadsb_armco_hill_0', + [2117877180] = 'ch2_roadsb_armco_hill1_lod', + [1529399698] = 'ch2_roadsb_armco_hill1', + [-2120434820] = 'ch2_roadsb_armco_hill1b_lod', + [-1043037955] = 'ch2_roadsb_armco_hill1b', + [-1706587030] = 'ch2_roadsb_armco_hill2_lod', + [1745281870] = 'ch2_roadsb_armco_hill2', + [1801653754] = 'ch2_roadsb_armco_hill2a_lod', + [-2103901873] = 'ch2_roadsb_armco_hill2a', + [-1841501096] = 'ch2_roadsb_crossrd_sign_01', + [-2140911449] = 'ch2_roadsb_crossrd_sign_02', + [1855071491] = 'ch2_roadsb_crossrd_sign_03', + [-1490952443] = 'ch2_roadsb_crossrd_sign_lod_01', + [-1998019949] = 'ch2_roadsb_crossrd_sign_lod_02', + [2061174392] = 'ch2_roadsb_crossrd_sign_lod_03', + [-1879967994] = 'ch2_roadsb_dcl_jn_02', + [210651422] = 'ch2_roadsb_dcl_rdsd_04b', + [-96263032] = 'ch2_roadsb_dcl_rdsd_04c', + [230509448] = 'ch2_roadsb_dcl_rdsd_04h', + [-632306410] = 'ch2_roadsb_dcl_rdsd_1', + [935429269] = 'ch2_roadsb_ov02', + [1715364238] = 'ch2_roadsb_ov03', + [-1352502315] = 'ch2_roadsb_ov04', + [-1325026399] = 'ch2_roadsb_rd_100', + [-973138672] = 'ch2_roadsb_rd_jn_dcl_01', + [-1055977510] = 'ch2_roadsb_rd_ov_dcl_01', + [-2048583293] = 'ch2_roadsb_rd_ov_dcl_02', + [182112734] = 'ch2_roadsb_t_rd_sign_01_lod', + [-848073902] = 'ch2_roadsb_t_rd_sign_01', + [-43273422] = 'ch2_roadsb_t_rd_sign_02_lod', + [-419294386] = 'ch2_roadsb_t_rd_sign_03_lod', + [1474057484] = 'ch2_roadsb_t_rd_sign_2', + [-245266400] = 'ch2_roadsb_t_rd_sign_3', + [2025331137] = 'ch3_01_armco_00', + [-360153756] = 'ch3_01_armco_01', + [-733261590] = 'ch3_01_armco_02', + [-1260431863] = 'ch3_01_ch_coop', + [1044946106] = 'ch3_01_ch_coop001', + [-1827422403] = 'ch3_01_ch3_1_re_wll_013', + [-2125653072] = 'ch3_01_ch3_1_re_wll_014', + [-529107934] = 'ch3_01_ch3_1_re_wll_12', + [-1656814265] = 'ch3_01_cs5_04_trailerpk_sign', + [1499334548] = 'ch3_01_d00', + [-801213101] = 'ch3_01_d01', + [-1039050503] = 'ch3_01_d02', + [-1367658035] = 'ch3_01_d03', + [-1606052510] = 'ch3_01_d04', + [-616887480] = 'ch3_01_d05', + [217116339] = 'ch3_01_d06', + [-653228297] = 'ch3_01_d07', + [190180225] = 'ch3_01_d08', + [1101322270] = 'ch3_01_d09', + [1352791228] = 'ch3_01_d10', + [125035105] = 'ch3_01_d11', + [-29241347] = 'ch3_01_d12', + [1695554972] = 'ch3_01_d13', + [-1984469270] = 'ch3_01_d14', + [1087984939] = 'ch3_01_d15', + [1864446398] = 'ch3_01_d16', + [1295085087] = 'ch3_01_d17', + [551425401] = 'ch3_01_d18', + [1773676336] = 'ch3_01_d19', + [360514015] = 'ch3_01_d20', + [1863595280] = 'ch3_01_d21', + [-2115544394] = 'ch3_01_d22', + [1840460386] = 'ch3_01_d23', + [2143737481] = 'ch3_01_d24', + [-1164161997] = 'ch3_01_d25', + [1567330771] = 'ch3_01_d26', + [-1795784472] = 'ch3_01_d27', + [-1497619341] = 'ch3_01_d28', + [41933797] = 'ch3_01_d29', + [-1670869304] = 'ch3_01_d30', + [111567678] = 'ch3_01_d31', + [-148323261] = 'ch3_01_d32', + [855292914] = 'ch3_01_d33', + [608247423] = 'ch3_01_d34', + [-1907559783] = 'ch3_01_d35', + [-2121606891] = 'ch3_01_d36', + [1771186468] = 'ch3_01_d37', + [1540656553] = 'ch3_01_d38', + [-981966609] = 'ch3_01_d39', + [1103256793] = 'ch3_01_d40', + [1352137348] = 'ch3_01_d41', + [-695007620] = 'ch3_01_d42', + [-455236847] = 'ch3_01_d43', + [-83308697] = 'ch3_01_d44', + [-1653664715] = 'ch3_01_d45', + [-1414811474] = 'ch3_01_d46', + [-1356286084] = 'ch3_01_d48', + [1383598526] = 'ch3_01_d48a', + [1276570950] = 'ch3_01_d48zxc', + [-60108525] = 'ch3_01_d50', + [-1610442684] = 'ch3_01_d52', + [-1253391660] = 'ch3_01_d53', + [-997367463] = 'ch3_01_d54', + [1501399867] = 'ch3_01_d55', + [1807429558] = 'ch3_01_d56', + [1507494889] = 'ch3_01_d57', + [1805135716] = 'ch3_01_d58', + [2089570636] = 'ch3_01_d59', + [1043865817] = 'ch3_01_d60', + [-1803629203] = 'ch3_01_d61', + [-1567528558] = 'ch3_01_d62', + [-1671897827] = 'ch3_01_d63', + [-1433568890] = 'ch3_01_d64', + [-2119424060] = 'ch3_01_d65', + [-822328733] = 'ch3_01_d66', + [-568205138] = 'ch3_01_d67', + [-1281061964] = 'ch3_01_d68', + [-1027659287] = 'ch3_01_d69', + [1306588710] = 'ch3_01_d70', + [-2024893297] = 'ch3_01_decal_06', + [-1794101230] = 'ch3_01_decal_07', + [-419933215] = 'ch3_01_decal_08', + [2049341703] = 'ch3_01_decal_12', + [1619019195] = 'ch3_01_decal_13', + [-2146040598] = 'ch3_01_decal_14', + [-1249284144] = 'ch3_01_decal_15', + [-1536701043] = 'ch3_01_decal_16', + [-1729744954] = 'ch3_01_decal_35', + [1811601764] = 'ch3_01_decal_48', + [923297598] = 'ch3_01_decas00', + [1897520772] = 'ch3_01_decas57', + [-1088635986] = 'ch3_01_decsz01', + [1230015015] = 'ch3_01_des57', + [-16389381] = 'ch3_01_des78', + [-248361132] = 'ch3_01_des79', + [1819472970] = 'ch3_01_diner_neons001', + [-443021163] = 'ch3_01_dino_dec', + [-459878379] = 'ch3_01_dino', + [1398341493] = 'ch3_01_drtr_01_d', + [1772207445] = 'ch3_01_drtr_02_d', + [-1180441976] = 'ch3_01_drtr_03_d', + [-964228171] = 'ch3_01_drtr_04_d', + [1632760120] = 'ch3_01_drtr_05_d', + [31679415] = 'ch3_01_drtr_06_d', + [-391696300] = 'ch3_01_drtr_07_d', + [1996121181] = 'ch3_01_drtr_08_d', + [145036117] = 'ch3_01_drtr_09_d', + [-886917328] = 'ch3_01_drtr_10_d', + [-1909398563] = 'ch3_01_drtr_18_d', + [-1497029861] = 'ch3_01_drtr_21_d', + [-1738773812] = 'ch3_01_drtr_24_d', + [-1705078174] = 'ch3_01_drtr_26_d', + [-1190304996] = 'ch3_01_drtr_27_d', + [1931470713] = 'ch3_01_drtr_29_d', + [-911175953] = 'ch3_01_drtr_30_d', + [1386513203] = 'ch3_01_drtr_32_d', + [1771303221] = 'ch3_01_drtr_33_d', + [2141176369] = 'ch3_01_drtr_34_d', + [-1220299228] = 'ch3_01_drtr_35_d', + [-770949242] = 'ch3_01_drtr00', + [151137649] = 'ch3_01_drtr05', + [1048320076] = 'ch3_01_drtr06', + [1714644922] = 'ch3_01_drtr07', + [1353301159] = 'ch3_01_drtr09', + [-618374738] = 'ch3_01_drtr10', + [-325321571] = 'ch3_01_drtr11', + [-1112465720] = 'ch3_01_drtr12', + [-923781818] = 'ch3_01_drtr13', + [-1710336125] = 'ch3_01_drtr14', + [1936722503] = 'ch3_01_drtr15', + [-2070303590] = 'ch3_01_drtr16', + [1339179788] = 'ch3_01_drtr17', + [1629808049] = 'ch3_01_drtr18', + [981506153] = 'ch3_01_drtr19', + [-1135633683] = 'ch3_01_drtr20', + [692503988] = 'ch3_01_emm_01_lod', + [-1794841982] = 'ch3_01_emm_01', + [295506266] = 'ch3_01_emm_02_lod', + [1281478973] = 'ch3_01_emm_02', + [-64570259] = 'ch3_01_emm_03_lod', + [1048196462] = 'ch3_01_emm_03', + [1725895358] = 'ch3_01_emm_04_lod', + [-77287628] = 'ch3_01_emm_04', + [-1108180689] = 'ch3_01_emm_05_lod', + [160189315] = 'ch3_01_emm_05', + [-408750841] = 'ch3_01_garage', + [-1397043697] = 'ch3_01_land03b', + [-684445025] = 'ch3_01_land04', + [-569393066] = 'ch3_01_land07', + [472267906] = 'ch3_01_land08', + [652137363] = 'ch3_01_land11', + [-1339693533] = 'ch3_01_land13', + [2102329462] = 'ch3_01_land14', + [-342369018] = 'ch3_01_land15', + [1730335774] = 'ch3_01_land16', + [1964666893] = 'ch3_01_land17', + [1419620116] = 'ch3_01_land19', + [247676530] = 'ch3_01_lardnod03', + [1274719379] = 'ch3_01_missing', + [181110749] = 'ch3_01_missing01', + [-218671055] = 'ch3_01_missing02', + [-506776043] = 'ch3_01_missing03', + [-1315351118] = 'ch3_01_missing04', + [20100032] = 'ch3_01_props_ch3_01_d91', + [-1623263954] = 'ch3_01_rexfrees', + [2032597075] = 'ch3_01_rs_gnd_dec', + [1509469088] = 'ch3_01_rs_hos1a_rdbr', + [783524701] = 'ch3_01_rs_hos1a_rl', + [234389807] = 'ch3_01_rs_hos1a', + [541664720] = 'ch3_01_rs_hos1b', + [-1863235193] = 'ch3_01_rs_shp1a', + [-1498254071] = 'ch3_01_rs_shp1b', + [-1461393084] = 'ch3_01_rs_trlr2b', + [-1459946907] = 'ch3_01_tmp_trailr_014', + [-1693098342] = 'ch3_01_tmp_trailr_015', + [-790613227] = 'ch3_01_tmp_trailr_016_strs', + [-2055785634] = 'ch3_01_tmp_trailr_016', + [-963480632] = 'ch3_01_tmp_trailr_017_strs', + [2005571461] = 'ch3_01_tmp_trailr_017', + [181943826] = 'ch3_01_tmp_trailr_019', + [1414680629] = 'ch3_01_tmp_trailr_020', + [-1589056983] = 'ch3_01_tmp_trailr_023', + [492233279] = 'ch3_01_tmp_trailr_024', + [1770714391] = 'ch3_01_trail_14o', + [-1954801927] = 'ch3_01_trail_16o', + [1615970845] = 'ch3_01_trail_17o', + [905831421] = 'ch3_01_trail004_strs', + [1436461041] = 'ch3_01_trail004_strsa', + [861277346] = 'ch3_01_trail004', + [74640178] = 'ch3_01_trailr_13', + [1541236987] = 'ch3_01_trailr_13o', + [-150954645] = 'ch3_01_trailr_15o', + [977601590] = 'ch3_01_trlr_bits004', + [1268033237] = 'ch3_01_trlr_bits005', + [1498563152] = 'ch3_01_trlr_bits006', + [1880190926] = 'ch3_01_trlr_bits007', + [1806367075] = 'ch3_01_trlr_g', + [-717674599] = 'ch3_01_trlrinner_int', + [-2094269503] = 'ch3_01_wf_l01', + [1197900855] = 'ch3_01_wf_l02', + [1455891192] = 'ch3_01_wf_l03', + [-1391865988] = 'ch3_01_wf_l04', + [1761525052] = 'ch3_01_wf_off01', + [2122845687] = 'ch3_01_wf_prts01', + [87144653] = 'ch3_01_windmill_01', + [1794901092] = 'ch3_01_windmill_02', + [1504993745] = 'ch3_01_windmill_03', + [1332956495] = 'ch3_01_windmill_04', + [1043376842] = 'ch3_01_windmill_05', + [-1698503667] = 'ch3_01_windmill_06', + [-1459060584] = 'ch3_01_windmill_07', + [-1086345978] = 'ch3_01_windmill_08', + [-847361661] = 'ch3_01_windmill_09', + [-453705132] = 'ch3_01_windmill_10', + [-71815206] = 'ch3_01_windmill_11', + [142788975] = 'ch3_01_windmill_12', + [509277471] = 'ch3_01_windmill_13', + [-1640008458] = 'ch3_01_windmill_14', + [748949937] = 'ch3_01_windmill_15', + [-1091200917] = 'ch3_02_adboard', + [-2110185488] = 'ch3_02_decs00', + [1132419315] = 'ch3_02_decs00b', + [-1428492105] = 'ch3_02_decs06', + [75867151] = 'ch3_02_decs08', + [420533629] = 'ch3_02_decs10', + [-537304233] = 'ch3_02_decs14', + [702117646] = 'ch3_02_decs15', + [69217180] = 'ch3_02_decs16', + [-1690576419] = 'ch3_02_decs17', + [-1394770656] = 'ch3_02_decs18', + [-1313372460] = 'ch3_02_decs19', + [-1983366526] = 'ch3_02_decs21', + [345853998] = 'ch3_02_decs29', + [1953173116] = 'ch3_02_decs30', + [-1171383807] = 'ch3_02_decs31', + [-370673292] = 'ch3_02_decs32', + [-127395140] = 'ch3_02_land00', + [-508498690] = 'ch3_02_land04', + [-1980923288] = 'ch3_02_lnd06', + [786600103] = 'ch3_02_mesh234', + [-504436375] = 'ch3_02_meshes1', + [1650523743] = 'ch3_02_section1', + [1679143424] = 'ch3_03_bb_02_rock_slod', + [1033487903] = 'ch3_03_bb_02_rock', + [-693926862] = 'ch3_03_bb_fracking', + [1054554446] = 'ch3_03_bb3_robot', + [1131686650] = 'ch3_03_bb4_pop', + [279501427] = 'ch3_03_ch_03_bb_01', + [-267798493] = 'ch3_03_cliffrocks01', + [96068483] = 'ch3_03_cliffrocks02', + [637954506] = 'ch3_03_cliffrocks03a', + [-1165004155] = 'ch3_03_cliffrocks03b_lod', + [-752106474] = 'ch3_03_cliffrocks03b', + [702639592] = 'ch3_03_cliffrocks04a', + [-1075504655] = 'ch3_03_cliffrocks04b', + [-1367870838] = 'ch3_03_col', + [-976425983] = 'ch3_03_crashbar_01', + [-1339899731] = 'ch3_03_crashbar_02', + [-1651860611] = 'ch3_03_crashbar_03', + [-1882980376] = 'ch3_03_crashbar_04', + [250117687] = 'ch3_03_crashbar_05', + [-109423781] = 'ch3_03_crashbar_06', + [-363678452] = 'ch3_03_crashbar_07', + [-727873118] = 'ch3_03_crashbar_08', + [874891437] = 'ch3_03_crashbar_09', + [580069028] = 'ch3_03_crashbar_10', + [1965322261] = 'ch3_03_dcl_rd_jn_01', + [-412819699] = 'ch3_03_decal002', + [-1616034425] = 'ch3_03_decal002j', + [141173035] = 'ch3_03_decal003', + [-472426490] = 'ch3_03_decal005', + [-950001896] = 'ch3_03_decal007', + [-984395473] = 'ch3_03_decal007a', + [-375515838] = 'ch3_03_decal916', + [549646061] = 'ch3_03_decalbots', + [-1461689615] = 'ch3_03_decrt5467', + [-1386659418] = 'ch3_03_dusche_bb_slod', + [-1419945503] = 'ch3_03_dusche_bb', + [-327588061] = 'ch3_03_edgedecal01', + [-547992355] = 'ch3_03_edgedecal02', + [149594121] = 'ch3_03_edgedecal03', + [-74513070] = 'ch3_03_edgedecal04', + [333745760] = 'ch3_03_emissign_01_lod', + [359602489] = 'ch3_03_emissign_01', + [-213667375] = 'ch3_03_foamwet01', + [916469897] = 'ch3_03_foamwet02', + [508954613] = 'ch3_03_foamwet03', + [-1826918014] = 'ch3_03_foamwet04', + [97869483] = 'ch3_03_forecrta_decal2', + [-96773457] = 'ch3_03_forecrta', + [141326097] = 'ch3_03_forecrtb', + [-2125870517] = 'ch3_03_garage_rd_jn_01', + [1939025630] = 'ch3_03_garage_rd_jn_02', + [727727697] = 'ch3_03_glue_01', + [-804190284] = 'ch3_03_glue_03', + [-940214435] = 'ch3_03_glue_05', + [2117166038] = 'ch3_03_glue_06', + [-427758462] = 'ch3_03_land01', + [-179336665] = 'ch3_03_land02', + [184661387] = 'ch3_03_land03', + [-1416989030] = 'ch3_03_land04', + [-574170350] = 'ch3_03_land07', + [-2113971040] = 'ch3_03_lands01', + [1562114369] = 'ch3_03_lands015', + [-1714818292] = 'ch3_03_lands01a', + [1504218323] = 'ch3_03_lands13', + [1098805721] = 'ch3_03_lands15_decal', + [1976780072] = 'ch3_03_lands15', + [-1597315095] = 'ch3_03_lands15j_decal', + [-1591545735] = 'ch3_03_lands15j', + [-1343877633] = 'ch3_03_lands15k', + [-1990134710] = 'ch3_03_landsj5_decal2', + [-1281775003] = 'ch3_03_landsj5', + [1643616742] = 'ch3_03_log_01', + [1868477620] = 'ch3_03_log_02', + [-1995958129] = 'ch3_03_new_gasroof', + [1151673302] = 'ch3_03_new_gassign', + [850679507] = 'ch3_03_overlays01b', + [125987237] = 'ch3_03_overlays04', + [-1033150600] = 'ch3_03_overlays07', + [267368927] = 'ch3_03_overlays3401', + [-1998993600] = 'ch3_03_overlays912', + [1863653146] = 'ch3_03_overlays912a', + [-924694356] = 'ch3_03_overlays924', + [-1432140528] = 'ch3_03_overlays924a', + [-767013267] = 'ch3_03_overly00', + [-528356640] = 'ch3_03_overly01', + [1195325521] = 'ch3_03_overly02', + [1442928085] = 'ch3_03_overly03', + [825093946] = 'ch3_03_ovrpss', + [1037158866] = 'ch3_03_ps_backwall001_rl01', + [771435045] = 'ch3_03_ps_backwall001_rl02', + [1492877337] = 'ch3_03_ps_backwall001_rl03', + [294391895] = 'ch3_03_ps_backwall001', + [1029035200] = 'ch3_03_ps_backwall002_rl01', + [684239782] = 'ch3_03_ps_backwall002_rl02', + [453152794] = 'ch3_03_ps_backwall002_rl03', + [-2117018227] = 'ch3_03_ps_backwall002_rl04', + [140115443] = 'ch3_03_ps_backwall002', + [-1647056125] = 'ch3_03_ps_backwall003_rl01', + [-2076854329] = 'ch3_03_ps_backwall003_rl02', + [56374750] = 'ch3_03_ps_backwall003_rl03', + [-166962856] = 'ch3_03_ps_backwall003', + [158661763] = 'ch3_03_ps_overpass1', + [-1696358554] = 'ch3_03_ps_overpass2', + [-1525369912] = 'ch3_03_ps_overpass3', + [-1232120131] = 'ch3_03_ps_overpass4', + [-1191683189] = 'ch3_03_ps_overpass5', + [-572886397] = 'ch3_03_ps_pwr_d', + [-516449021] = 'ch3_03_ps_pwr', + [932921184] = 'ch3_03_rail1', + [629665065] = 'ch3_03_rail10', + [-1206173594] = 'ch3_03_rail2', + [-902503271] = 'ch3_03_rail3', + [-593557139] = 'ch3_03_rail4', + [-293098178] = 'ch3_03_rail5', + [2013184042] = 'ch3_03_rail6', + [-1976802171] = 'ch3_03_rail7', + [-1667724959] = 'ch3_03_rail8', + [-1362285110] = 'ch3_03_rail9', + [249736419] = 'ch3_03_rd_trn_dcl_01', + [-2014343539] = 'ch3_03_righteousslaughter', + [-1510513724] = 'ch3_03_road_decal', + [1648298689] = 'ch3_03_road_decal01', + [706878088] = 'ch3_03_road_decal02', + [-2140420326] = 'ch3_03_road_decal03', + [960739531] = 'ch3_03_road_decal05', + [1431994138] = 'ch3_03_roadsidedecal1', + [1520932810] = 'ch3_03_rr_decal03', + [1700048164] = 'ch3_03_rr_decal04', + [792805630] = 'ch3_03_rr_decal05', + [-1226303190] = 'ch3_03_rr_decal05b', + [1067704771] = 'ch3_03_rr_decal06', + [1454054012] = 'ch3_03_rsl_mr_bb', + [1904991912] = 'ch3_03_rsl_mr_bb2', + [-936452081] = 'ch3_03_rsl_mr_bb3_lod', + [548257005] = 'ch3_03_rsl_mr_bb3', + [-1709206964] = 'ch3_03_sea_end00', + [-1478906432] = 'ch3_03_sea_end01', + [193951010] = 'ch3_03_sea_end02', + [423039089] = 'ch3_03_sea_end03', + [-278086435] = 'ch3_03_sea_end04', + [11231066] = 'ch3_03_sea_end05', + [1804875054] = 'ch3_03_sea_end06', + [2041565541] = 'ch3_03_sea_end07', + [535896426] = 'ch3_03_sea_uw_decals00', + [-119123123] = 'ch3_03_sea_uw_decals01', + [55601185] = 'ch3_03_sea_uw_decals02', + [1223947115] = 'ch3_03_sea_uw_decals03', + [1527158672] = 'ch3_03_sea_uw_decals04', + [740571596] = 'ch3_03_sea_uw_decals05', + [1048305275] = 'ch3_03_sea_uw_decals06', + [2140233893] = 'ch3_03_sea_uw_decals07', + [-1847458490] = 'ch3_03_sea_uw_decals08', + [1796945849] = 'ch3_03_sea_uw_decals09', + [916967991] = 'ch3_03_sea_uw_decals10', + [194280457] = 'ch3_03_sea_uw_decals11', + [-614622308] = 'ch3_03_sea_uw_decals12', + [239206760] = 'ch3_03_sea_uw_decals13', + [737230022] = 'ch3_03_sea_uw_decals14', + [819414674] = 'ch3_03_sea_uw_decals15', + [1083041279] = 'ch3_03_sea_uw_decals16', + [1463653214] = 'ch3_03_sea_uw_decals17', + [-1261089140] = 'ch3_03_sea_uw_decals18', + [-2033039773] = 'ch3_03_sea_uw1_00_lod', + [746287555] = 'ch3_03_sea_uw1_00', + [-892227983] = 'ch3_03_sea_uw1_01', + [1697211142] = 'ch3_03_sea_uw1_04', + [-204799901] = 'ch3_03_sea_uw1_05', + [2100138766] = 'ch3_03_sea_uw1_06', + [-1887422541] = 'ch3_03_sea_uw1_07', + [939591862] = 'ch3_03_sea_uw1_09', + [376207490] = 'ch3_03_sea_uw1_12_lod', + [1013716816] = 'ch3_03_sea_uw1_12', + [1176251056] = 'ch3_03_sea_uw1_13', + [-1865053371] = 'ch3_03_sea_uw1_14_lod', + [-444208767] = 'ch3_03_sea_uw1_14', + [1944452463] = 'ch3_03_sea_uw1_15_lod', + [-144667338] = 'ch3_03_sea_uw1_15', + [-189205886] = 'ch3_03_sea_uw1_16_lod', + [19570890] = 'ch3_03_sea_uw1_16', + [-94178384] = 'ch3_03_sea_uw1_17_lod', + [318391401] = 'ch3_03_sea_uw1_17', + [2032051392] = 'ch3_03_sea_uw1_18_lod', + [-1359971241] = 'ch3_03_sea_uw1_18', + [-768526784] = 'ch3_03_sea_uw1_19_lod', + [-1069211904] = 'ch3_03_sea_uw1_19', + [-701863975] = 'ch3_03_sea_uw1_20_lod', + [1095705166] = 'ch3_03_sea_uw1_20', + [-460211301] = 'ch3_03_servrd_01', + [-1583434746] = 'ch3_03_servrd_02', + [-1807541937] = 'ch3_03_servrd_03', + [-2038399542] = 'ch3_03_servrd_04', + [1757299270] = 'ch3_03_servrd_05', + [1525982899] = 'ch3_03_servrd_06', + [1301777401] = 'ch3_03_servrd_07', + [803885211] = 'ch3_03_servrd_08', + [564835356] = 'ch3_03_servrd_09', + [721967027] = 'ch3_03_servrd_10', + [877488701] = 'ch3_03_servrd_11', + [124850309] = 'ch3_03_servrd_12', + [-2031903636] = 'ch3_03_sgn_sanfwy_002', + [-705455087] = 'ch3_03_sgn_sanfwy_01_lod001', + [-2052361554] = 'ch3_03_sign_fiz', + [945624980] = 'ch3_03_sign1_fiz', + [-916439545] = 'ch3_03_ss_brand', + [1971310077] = 'ch3_03_ss_bs_d', + [685428068] = 'ch3_03_ss_cb_d', + [1245023507] = 'ch3_03_ss_cb', + [460089520] = 'ch3_03_ss_emiss02_lod', + [1332999826] = 'ch3_03_ss_emiss02', + [530436584] = 'ch3_03_ss_emiss03_lod', + [-584216057] = 'ch3_03_ss_emiss03', + [-558124950] = 'ch3_03_ss_outerwall1', + [-1822287432] = 'ch3_03_ss_outerwall2', + [-1006591534] = 'ch3_03_ss_shop', + [-633638532] = 'ch3_03_ss_shops', + [-1359605515] = 'ch3_03_ss_shopsdecal', + [-2063352878] = 'ch3_03_ssbigsign_d', + [1855581911] = 'ch3_03_ssbigsign_d004', + [495728312] = 'ch3_03_ssbigsign', + [-1207029550] = 'ch3_03_ssbigsign004', + [-290944355] = 'ch3_03_weed_01', + [-747940833] = 'ch3_03_weed_02', + [-102220465] = 'ch3_03sliprdsswall01', + [846278228] = 'ch3_03sliprdsswall02', + [1085852387] = 'ch3_03sliprdsswall03', + [-1657699357] = 'ch3_03sliprdsswall04', + [-1298354503] = 'ch3_03sliprdsswall05', + [226092146] = 'ch3_03sliprdsswall07', + [-1391716915] = 'ch3_04_barrier_01', + [-912273676] = 'ch3_04_barrier_03', + [-683840977] = 'ch3_04_barrier_04', + [1173769175] = 'ch3_04_cave', + [1454512429] = 'ch3_04_cs_destarmactrack1_001', + [-2064550485] = 'ch3_04_cs_destarmactrack1_002', + [-1165336352] = 'ch3_04_cs_destarmactrack1_003', + [1774567252] = 'ch3_04_cs_destarmactrack1_004', + [570371327] = 'ch3_04_d00', + [-1610700540] = 'ch3_04_d01', + [-1908374136] = 'ch3_04_d02', + [176389640] = 'ch3_04_d03', + [-121513339] = 'ch3_04_d04', + [1519984182] = 'ch3_04_d05', + [-925861213] = 'ch3_04_d06', + [-1224255727] = 'ch3_04_d07', + [-1521437788] = 'ch3_04_d08', + [294882344] = 'ch3_04_d09', + [-156248135] = 'ch3_04_d10', + [-522015713] = 'ch3_04_d11', + [-820442996] = 'ch3_04_d12', + [-945391189] = 'ch3_04_d13', + [1559077947] = 'ch3_04_d14', + [-1543982512] = 'ch3_04_d15', + [-74988104] = 'ch3_04_d155678', + [-1707237670] = 'ch3_04_d16', + [1146254053] = 'ch3_04_d18', + [343163332] = 'ch3_04_d181234', + [1311021914] = 'ch3_04_d18a23', + [1863567467] = 'ch3_04_d19', + [1639440612] = 'ch3_04_d20', + [1399407687] = 'ch3_04_d21', + [1176971715] = 'ch3_04_d22', + [939756924] = 'ch3_04_d23', + [1399866449] = 'ch3_04_d27', + [478205847] = 'ch3_04_d30', + [707425002] = 'ch3_04_d31', + [-413274798] = 'ch3_04_d32', + [-172979721] = 'ch3_04_d33', + [1568856474] = 'ch3_04_d34', + [22670690] = 'ch3_04_d35_lod', + [1656742932] = 'ch3_04_d35', + [955650177] = 'ch3_04_d36', + [590778974] = 'ch3_04_d37_lod', + [1312570125] = 'ch3_04_d37', + [1987447684] = 'ch3_04_d38', + [-985421714] = 'ch3_04_d39_lod', + [-1682483706] = 'ch3_04_d39', + [-1319298843] = 'ch3_04_d399', + [2106867124] = 'ch3_04_d39x_lod', + [1301401948] = 'ch3_04_d39x', + [524940403] = 'ch3_04_d43_lod', + [954736405] = 'ch3_04_d43', + [1898516430] = 'ch3_04_d44', + [-293772351] = 'ch3_04_d45_lod', + [-1719771016] = 'ch3_04_d45', + [-238126356] = 'ch3_04_d46_lod', + [1689614051] = 'ch3_04_d46', + [1156094459] = 'ch3_04_d47a', + [838890543] = 'ch3_04_d47b', + [1523011104] = 'ch3_04_d47b1', + [540070032] = 'ch3_04_d47c', + [-1203855880] = 'ch3_04_d48', + [1080566129] = 'ch3_04_d99', + [-1585601263] = 'ch3_04_decal_1799', + [-212656588] = 'ch3_04_decal02', + [1551495296] = 'ch3_04_decal03', + [1339643711] = 'ch3_04_decal04', + [-1319626177] = 'ch3_04_decal05', + [-680762749] = 'ch3_04_emissive_01_hd', + [165246618] = 'ch3_04_emissive_02_hd', + [59759118] = 'ch3_04_emissive_03_hd', + [-1422167402] = 'ch3_04_emissive_slod', + [-1434869588] = 'ch3_04_extra01', + [2009480006] = 'ch3_04_extra02', + [2013941561] = 'ch3_04_fence01', + [1533064700] = 'ch3_04_fencesigns_a_lod', + [471746425] = 'ch3_04_fencesigns_b_lod', + [-1959487685] = 'ch3_04_foamwet_01', + [2104851389] = 'ch3_04_foamwet_02', + [1853808080] = 'ch3_04_foamwet_03', + [523798308] = 'ch3_04_govbweeds', + [-1116641119] = 'ch3_04_govdec_00', + [-1892512732] = 'ch3_04_govdec_01', + [-486984788] = 'ch3_04_govdec_02', + [-1261611175] = 'ch3_04_govdec_03', + [50230198] = 'ch3_04_govdec_04', + [-725838029] = 'ch3_04_govdec_05', + [644627089] = 'ch3_04_govdec_06', + [-128098700] = 'ch3_04_govdec_07', + [803884429] = 'ch3_04_govdec_08', + [967598353] = 'ch3_04_govdec_09', + [-303969051] = 'ch3_04_govdec_10', + [-611702730] = 'ch3_04_govdec_11', + [-902036070] = 'ch3_04_govdec_12', + [-1211146019] = 'ch3_04_govdec_13', + [-1449606032] = 'ch3_04_govdec_14', + [-1749671765] = 'ch3_04_govdec_15', + [-1761927371] = 'ch3_04_govdec_16', + [-2060354654] = 'ch3_04_govdec_17', + [1921996382] = 'ch3_04_govdec_18', + [1307381018] = 'ch3_04_govdec_19', + [1162902177] = 'ch3_04_govdec_20', + [883284300] = 'ch3_04_govdec_21', + [585938394] = 'ch3_04_govdec_22', + [272306295] = 'ch3_04_govdec_23', + [-26546985] = 'ch3_04_govdec_24', + [-306427014] = 'ch3_04_govdec_25', + [-604690452] = 'ch3_04_govdec_26', + [-918584703] = 'ch3_04_govdec_27', + [-1280387204] = 'ch3_04_govdec_28', + [-1570425623] = 'ch3_04_govdec_29', + [1356183619] = 'ch3_04_govdec_30', + [1125784780] = 'ch3_04_govdec_31', + [1712415418] = 'ch3_04_govdec_32', + [1481426737] = 'ch3_04_govdec_33', + [2074938865] = 'ch3_04_govdec_34', + [-190757213] = 'ch3_04_ground2_step1', + [780122727] = 'ch3_04_ground2_step2', + [-698643944] = 'ch3_04_ground2_step3', + [1417990870] = 'ch3_04_inlet001', + [693697663] = 'ch3_04_inlet005', + [-1214605064] = 'ch3_04_inlet006', + [1052156330] = 'ch3_04_inlet1', + [1820196152] = 'ch3_04_inlet2', + [1521441179] = 'ch3_04_inlet3', + [-1007569238] = 'ch3_04_inlet3dd_straybit', + [1432142059] = 'ch3_04_inlet3dd', + [-2021607620] = 'ch3_04_isledec1_lod', + [422008331] = 'ch3_04_isledec1', + [95508577] = 'ch3_04_ladder01', + [344421901] = 'ch3_04_ladder02', + [-487877930] = 'ch3_04_ladder03', + [1887153640] = 'ch3_04_ladder04', + [-46472288] = 'ch3_04_laddermain_lod', + [1764845665] = 'ch3_04_laddermain', + [1775684864] = 'ch3_04_laddermain001_lod', + [-1509379274] = 'ch3_04_laddermain001', + [-1599761696] = 'ch3_04_laddermain002_lod', + [-1027085132] = 'ch3_04_laddermain002', + [-2131674029] = 'ch3_04_laddermain003_lod', + [165214941] = 'ch3_04_laddermain003', + [197579276] = 'ch3_04_lnd01', + [649267172] = 'ch3_04_lnd03', + [1417274225] = 'ch3_04_lnd04', + [86652240] = 'ch3_04_lnd04b', + [1225706651] = 'ch3_04_lnd05', + [-1202840451] = 'ch3_04_lnd05a', + [1519906593] = 'ch3_04_lnd06', + [1024668696] = 'ch3_04_lnd08', + [-382174419] = 'ch3_04_lnd08a', + [1500383528] = 'ch3_04_lndwalldecal', + [-423959175] = 'ch3_04_lrg_roks_006', + [1634308069] = 'ch3_04_p2_lad1', + [-1786147449] = 'ch3_04_parking_d', + [1594622280] = 'ch3_04_parking1_d', + [168539773] = 'ch3_04_pground_1', + [-153874418] = 'ch3_04_pground_2', + [-1827981753] = 'ch3_04_poolwtr1_fountn', + [471105890] = 'ch3_04_pris08_top_door', + [-1018030735] = 'ch3_04_prison_det', + [979029725] = 'ch3_04_prison_det2', + [1212639926] = 'ch3_04_prison_det3', + [378079042] = 'ch3_04_prison_det4', + [755160751] = 'ch3_04_prison', + [-2133346099] = 'ch3_04_prison02', + [986950850] = 'ch3_04_prison05', + [-1179702661] = 'ch3_04_prison06', + [-459204158] = 'ch3_04_prison08_top_iref001', + [858155294] = 'ch3_04_prison08_top', + [1943871192] = 'ch3_04_prison09', + [555120740] = 'ch3_04_prison12', + [-1345481264] = 'ch3_04_prison13', + [750292904] = 'ch3_04_prison14', + [832680692] = 'ch3_04_props_props_towels006', + [-820004479] = 'ch3_04_railfizz_lod01', + [552394010] = 'ch3_04_railfizz_lod02', + [-475962748] = 'ch3_04_railfizz_lod03', + [-1250392525] = 'ch3_04_railfizz_lod04', + [644863529] = 'ch3_04_railfizz01', + [1229462489] = 'ch3_04_railfizz02', + [-1159102690] = 'ch3_04_railfizz03', + [1539031232] = 'ch3_04_railfizz04', + [-1144176773] = 'ch3_04_railing', + [-973484549] = 'ch3_04_railing02', + [-745248464] = 'ch3_04_railing03', + [-1588722524] = 'ch3_04_railing04', + [-1357799381] = 'ch3_04_railing05', + [247685005] = 'ch3_04_railing06', + [-963778424] = 'ch3_04_rd_dec1', + [-1206105179] = 'ch3_04_rd_dec2', + [1551733865] = 'ch3_04_rd_dec3', + [-2037152954] = 'ch3_04_roadsidedecal1', + [1724169827] = 'ch3_04_rock_lod_02', + [-633732694] = 'ch3_04_rockcrop1', + [-294639082] = 'ch3_04_rockcrop2', + [1181309447] = 'ch3_04_rockcrop3', + [1488125594] = 'ch3_04_rockcrop4', + [668212445] = 'ch3_04_rockcrop5', + [708256163] = 'ch3_04_rockcrop6', + [-1357436059] = 'ch3_04_rockcrop7', + [100546352] = 'ch3_04_roks002', + [527110586] = 'ch3_04_roof_ladder01', + [354352414] = 'ch3_04_roof_ladder02', + [47732881] = 'ch3_04_roof_ladder03', + [-389864345] = 'ch3_04_roof_ladder04', + [1236837226] = 'ch3_04_roofdec3', + [-1887809236] = 'ch3_04_sea__decal001', + [-680015785] = 'ch3_04_sea_00b', + [-411763505] = 'ch3_04_sea_00b1_lod', + [1593763825] = 'ch3_04_sea_00b1', + [-495603327] = 'ch3_04_sea_02b1_lod', + [-687030188] = 'ch3_04_sea_02b1', + [1267922230] = 'ch3_04_sea_03b1_lod', + [1426182521] = 'ch3_04_sea_03b1', + [374476566] = 'ch3_04_sea_04b', + [-1395049603] = 'ch3_04_sea_04b1_lod', + [-575475878] = 'ch3_04_sea_04b1', + [-81976089] = 'ch3_04_sea_06b1_lod', + [2043944219] = 'ch3_04_sea_06b1', + [955316637] = 'ch3_04_sea_14', + [-816765345] = 'ch3_04_sea_15', + [-593641224] = 'ch3_04_sea_16', + [2006644464] = 'ch3_04_sea_18', + [88379973] = 'ch3_04_sea_19', + [2016116101] = 'ch3_04_sea_20', + [1710086410] = 'ch3_04_sea_21', + [649452195] = 'ch3_04_sea_22', + [1409103153] = 'ch3_04_sea_23', + [1130009580] = 'ch3_04_sea_24', + [1620758124] = 'ch3_04_sea_25', + [-574601035] = 'ch3_04_sea_26', + [184787775] = 'ch3_04_sea_27', + [584505101] = 'ch3_04_sea_b01', + [2006806554] = 'ch3_04_sea_c00', + [-442738868] = 'ch3_04_sea_c006', + [1047264688] = 'ch3_04_sea_c01', + [1282841029] = 'ch3_04_sea_c02', + [1504949311] = 'ch3_04_sea_c03', + [1743868090] = 'ch3_04_sea_c04', + [1294428887] = 'ch3_04_sea_cont_004', + [1310575382] = 'ch3_04_sea_cont_1', + [1909330562] = 'ch3_04_sea_cont_2', + [1570196656] = 'ch3_04_sea_d_01', + [-1458264152] = 'ch3_04_sea_d_015', + [-1578395306] = 'ch3_04_sea_d_016', + [-759465227] = 'ch3_04_sea_d_017', + [-1118482391] = 'ch3_04_sea_d_018', + [1880044958] = 'ch3_04_sea_d_019', + [1747804636] = 'ch3_04_sea_d_02', + [-1981093263] = 'ch3_04_sea_d_020', + [1288874791] = 'ch3_04_sea_d_04', + [1953528426] = 'ch3_04_sea_d_05', + [1033243830] = 'ch3_04_sea_d_07', + [1210065354] = 'ch3_04_sea_d_08', + [-2135520857] = 'ch3_04_sea_d124', + [-1226050031] = 'ch3_04_sea_d125', + [-1604704567] = 'ch3_04_sea_deb001', + [436784071] = 'ch3_04_sea_details001', + [790432588] = 'ch3_04_sea_detailsb', + [416825721] = 'ch3_04_sea_end00', + [722265570] = 'ch3_04_sea_end01', + [1071976342] = 'ch3_04_sea_end02', + [1311681577] = 'ch3_04_sea_end03', + [-2078950288] = 'ch3_04_sea_n100', + [-1061931592] = 'ch3_04_sea_n101', + [-1434318508] = 'ch3_04_sea_n102', + [-619124095] = 'ch3_04_sea_n103', + [-856863190] = 'ch3_04_sea_n104', + [1238910962] = 'ch3_04_sea_n105', + [-215377246] = 'ch3_04_sea_n106', + [609516791] = 'ch3_04_sea_n107', + [-685752483] = 'ch3_04_sea_ship001', + [-1616556925] = 'ch3_04_sea_ship003_lod', + [1344478812] = 'ch3_04_sea_uw1_00', + [490510565] = 'ch3_04_sea_uw1_02_dcls', + [290529465] = 'ch3_04_sea_uw1_02', + [1229992022] = 'ch3_04_sea_uw1_04_lod', + [-2061072286] = 'ch3_04_sea_uw1_04', + [-655430090] = 'ch3_04_sea_uw1a00', + [-198531907] = 'ch3_04_sea_uw1a02', + [-1019034914] = 'ch3_04_sea_uw1a03', + [-1609335680] = 'ch3_04_sea_uw1a04', + [1875811319] = 'ch3_04_sea_uw1a05', + [-1129761365] = 'ch3_04_sea_uw1a06', + [-1971629744] = 'ch3_04_sea_uw1a07', + [616302035] = 'ch3_04_sea_uw1a08', + [-1292219388] = 'ch3_04_sea_uw1a09_lod', + [848339324] = 'ch3_04_sea_uw1a09', + [-1519224595] = 'ch3_04_sea_uw1a10_lod', + [607785227] = 'ch3_04_sea_uw1a10', + [783385275] = 'ch3_04_sea_uw1a11_lod', + [914863526] = 'ch3_04_sea_uw1a11', + [-776743343] = 'ch3_04_sea_uw1a12_lod', + [1389358646] = 'ch3_04_sea_uw1a12', + [-1972827111] = 'ch3_04_sea_uw1a15_lod', + [130275359] = 'ch3_04_sea_uw1a15', + [1187219854] = 'ch3_04_sea_uw1a17_lod', + [-1539337964] = 'ch3_04_sea_uw1a17', + [-497095440] = 'ch3_04_sea_uwdecals00', + [-793949811] = 'ch3_04_sea_uwdecals01', + [-515839300] = 'ch3_04_sea_uwdecals05', + [-1161519676] = 'ch3_04_sea_uwdecals07', + [985865663] = 'ch3_04_sea_uwdecals08', + [-1469613814] = 'ch3_04_sea_uwdecals09', + [1919814640] = 'ch3_04_sea_uwdecals10', + [2141529694] = 'ch3_04_sea_uwdecals11', + [-1423180437] = 'ch3_04_sea_uwdecals13', + [1253883002] = 'ch3_04_sea_uwdecals14', + [776110982] = 'ch3_04_sea_uwdecals15', + [1970377195] = 'ch3_04_sea_uwdecals18', + [-417139380] = 'ch3_04_sea_uwdecals19', + [-1713903829] = 'ch3_04_sea_uwdecals98', + [-785660599] = 'ch3_04_searock1', + [-8543764] = 'ch3_04_searock2', + [1595811309] = 'ch3_04_viewplatform_slod', + [-1997485166] = 'ch3_04_viewplatform', + [49942025] = 'ch3_04_wood_006', + [636856213] = 'ch3_06_concretebase01', + [1449003109] = 'ch3_06_concretebase04', + [-1300349643] = 'ch3_06_cs_road01', + [1425834547] = 'ch3_06_cs_road03', + [1588728487] = 'ch3_06_culvert01', + [-1214306501] = 'ch3_06_dec00', + [-917943665] = 'ch3_06_dec01', + [276519158] = 'ch3_06_dec02', + [573963371] = 'ch3_06_dec03', + [-1820066420] = 'ch3_06_dec0333a', + [-1459508785] = 'ch3_06_dec0334a', + [-321613399] = 'ch3_06_dec04', + [-22399660] = 'ch3_06_dec05', + [1228982912] = 'ch3_06_dec06', + [1527737885] = 'ch3_06_dec07', + [636748775] = 'ch3_06_dec08', + [934651754] = 'ch3_06_dec09', + [-201907358] = 'ch3_06_dec10', + [-424933172] = 'ch3_06_dec11', + [1427826088] = 'ch3_06_dec12', + [1120420099] = 'ch3_06_dec13', + [25476741] = 'ch3_06_dec14', + [-269018262] = 'ch3_06_dec15', + [1579808718] = 'ch3_06_dec16', + [1348000812] = 'ch3_06_dec17', + [305872912] = 'ch3_06_dec17a', + [-1034902312] = 'ch3_06_dec17a2', + [1075847281] = 'ch3_06_dec17a3', + [1863297196] = 'ch3_06_dec17asd', + [-1792518294] = 'ch3_06_dec17fuc12', + [197982504] = 'ch3_06_dec17q23', + [-1201198005] = 'ch3_06_dec18', + [-1497659148] = 'ch3_06_dec19', + [-774842046] = 'ch3_06_dec20', + [-467698209] = 'ch3_06_dec21', + [-1672450494] = 'ch3_06_dec22', + [1720320694] = 'ch3_06_dec23', + [175655572] = 'ch3_06_dec24', + [-1389359103] = 'ch3_06_dec26', + [-1082805108] = 'ch3_06_dec27', + [1670249662] = 'ch3_06_dec28', + [768315706] = 'ch3_06_dec29', + [1375722726] = 'ch3_06_dec30', + [1607170173] = 'ch3_06_dec31', + [-257943000] = 'ch3_06_dec32', + [-61394538] = 'ch3_06_dec33', + [221631315] = 'ch3_06_dec34', + [-1435300417] = 'ch3_06_dec35', + [-975846268] = 'ch3_06_dec37', + [-721394983] = 'ch3_06_dec38', + [1933025097] = 'ch3_06_dec39', + [-1892003133] = 'ch3_06_dec39a', + [-481983733] = 'ch3_06_dec40', + [-116150617] = 'ch3_06_dec41', + [-875998205] = 'ch3_06_dec42', + [-578881682] = 'ch3_06_dec43', + [-1437462251] = 'ch3_06_dec44', + [-1064551031] = 'ch3_06_dec45', + [-1897506242] = 'ch3_06_dec46', + [1695352460] = 'ch3_06_dec47', + [1973069735] = 'ch3_06_dec48', + [1120387586] = 'ch3_06_dec49', + [-448558461] = 'ch3_06_dec50', + [1960840828] = 'ch3_06_dec50a', + [-138924180] = 'ch3_06_dec51', + [-1042955352] = 'ch3_06_dec52', + [-192020128] = 'ch3_06_decal102', + [163982288] = 'ch3_06_decal105', + [42633248] = 'ch3_06_decal50', + [-8826733] = 'ch3_06_land_03', + [309786266] = 'ch3_06_land_06', + [-1382273818] = 'ch3_06_land_09', + [-1612473518] = 'ch3_06_land_1', + [721386965] = 'ch3_06_land_10a', + [-2114627303] = 'ch3_06_land_11', + [2103103456] = 'ch3_06_land_1a', + [-196197338] = 'ch3_06_land_2', + [-1364969269] = 'ch3_06_land_4', + [39041352] = 'ch3_06_land_4a', + [1410194623] = 'ch3_06_land_4b', + [-1587962314] = 'ch3_06_land_5', + [-1638633413] = 'ch3_06_land_5a', + [-1146662191] = 'ch3_06_land_7', + [1834563126] = 'ch3_06_land_8', + [759366917] = 'ch3_06_land_ex_08', + [1983273777] = 'ch3_06_new_road_decals3', + [1928892475] = 'ch3_06_new_road', + [918242652] = 'ch3_06_parkbench_decals', + [-575527354] = 'ch3_06_parkbench', + [-1719392107] = 'ch3_06_road_dec_00', + [-477570059] = 'ch3_06_road655', + [692437564] = 'ch3_06_stream_water', + [1786475818] = 'ch3_06_trk_23', + [-778709701] = 'ch3_06_trk_23a', + [-1437895471] = 'ch3_06_trk_24', + [424052908] = 'ch3_06_trk_24b', + [-251127450] = 'ch3_07_decalaa', + [-1778918761] = 'ch3_07_decals00', + [-2007220384] = 'ch3_07_decals01', + [1684109159] = 'ch3_07_decals03', + [-1093948354] = 'ch3_07_decals05', + [-1452441214] = 'ch3_07_decals06', + [-1687886479] = 'ch3_07_decals07', + [-533893319] = 'ch3_07_decals08', + [-893631401] = 'ch3_07_decals09', + [548433694] = 'ch3_07_decals10', + [699990554] = 'ch3_07_decals10a', + [-379715462] = 'ch3_07_decals11', + [-63723995] = 'ch3_07_decals12', + [-429753737] = 'ch3_07_decals13', + [1746009568] = 'ch3_07_decals14', + [829132948] = 'ch3_07_decals15', + [1049471704] = 'ch3_07_decals16', + [273665629] = 'ch3_07_decals17', + [-1961245709] = 'ch3_07_decals18', + [-1664653490] = 'ch3_07_decals19', + [-2072136305] = 'ch3_07_decals21', + [825003754] = 'ch3_07_decals23', + [684949004] = 'ch3_07_decals24', + [-1872084452] = 'ch3_07_decals42', + [2096929601] = 'ch3_07_decals44', + [-2092783667] = 'ch3_07_decals45', + [1720139276] = 'ch3_07_decals45ab', + [1472516298] = 'ch3_07_decals46', + [1068222248] = 'ch3_07_decals46ab', + [1624302242] = 'ch3_07_decals48', + [1468395350] = 'ch3_07_decals48ab', + [-2147311591] = 'ch3_07_decals50', + [-1552423165] = 'ch3_07_decals52', + [-1840954210] = 'ch3_07_decals53', + [1297365701] = 'ch3_07_decals57', + [-229931851] = 'ch3_07_decals58', + [-529473280] = 'ch3_07_decals59', + [-82209491] = 'ch3_07_decals60', + [217757935] = 'ch3_07_decals61', + [-979588556] = 'ch3_07_decals62', + [-381357692] = 'ch3_07_decals63', + [2004159922] = 'ch3_07_decals64', + [-1676716314] = 'ch3_07_decals65', + [1396589885] = 'ch3_07_decals66', + [547926346] = 'ch3_07_dirtdecal', + [1439740217] = 'ch3_07_land_003', + [-2024560461] = 'ch3_07_land_01', + [-564177195] = 'ch3_07_land_02', + [-1165324500] = 'ch3_07_land_04', + [-332467596] = 'ch3_07_land_05', + [1193453654] = 'ch3_07_land_06', + [948701993] = 'ch3_07_land_07', + [-1551703779] = 'ch3_07_land_08', + [-1793637306] = 'ch3_07_land_09', + [651815133] = 'ch3_07_land_10', + [205673800] = 'ch3_07_trk_01_decal001', + [2115851263] = 'ch3_07_trk_01', + [1595285046] = 'ch3_07_trk_01a', + [-40381706] = 'ch3_07_trk_02', + [266827669] = 'ch3_07_trk_03', + [1227422324] = 'ch3_07_trk_044', + [-444770846] = 'ch3_07_trk_044a', + [-1283768642] = 'ch3_07_trk_05', + [884162856] = 'ch3_07_trk_06', + [1165802011] = 'ch3_07_trk_arm_01', + [1643082496] = 'ch3_07_trk_arm_03', + [906828628] = 'ch3_07_trk_arm_04', + [1370018443] = 'ch3_07_trk_arm_06', + [1053931828] = 'ch3_07_wat_01a', + [-2094122891] = 'ch3_08_cablemesh39428_hvlit', + [-1826601604] = 'ch3_08_cablemesh39530_hvlit', + [-320379315] = 'ch3_08_cablemesh39706_hvstd', + [1124056642] = 'ch3_08_cablemesh39708_hvstd', + [-506333512] = 'ch3_08_cablemesh39714_hvstd', + [238159566] = 'ch3_08_cablemesh39715_hvlit', + [2052613446] = 'ch3_08_cablemesh39716_hvlit', + [-53306987] = 'ch3_08_cablemesh39717_hvlit', + [-1376489870] = 'ch3_08_ch2_08_fizz01', + [-1735900262] = 'ch3_08_ch2_08_fizz04', + [1112348457] = 'ch3_08_ch2_08_fizz05', + [1422801963] = 'ch3_08_ch2_08_fizz06', + [119114775] = 'ch3_08_ch2_08_fizz07_scaff', + [1551125367] = 'ch3_08_ch2_08_fizz08', + [-430466647] = 'ch3_08_ch2_08_fizz09_tower', + [252927788] = 'ch3_08_crashbar_01', + [891562829] = 'ch3_08_crashbar_02', + [579733025] = 'ch3_08_crashbar_03', + [-862558093] = 'ch3_08_crashbar_20', + [64341332] = 'ch3_08_dam_corr_lod', + [445070344] = 'ch3_08_dam_corr_o', + [822908483] = 'ch3_08_dam_corr', + [-945160379] = 'ch3_08_dam_jetty1', + [-1283418707] = 'ch3_08_dam_mp003', + [352401305] = 'ch3_08_dam_mp2_o001', + [-869299997] = 'ch3_08_dam_mp2_w', + [73774867] = 'ch3_08_dam_newbit1_w', + [2007726145] = 'ch3_08_dam_plat', + [-773753640] = 'ch3_08_dam_scaff', + [-1290411928] = 'ch3_08_dambed_1_lod', + [-300288895] = 'ch3_08_dambed_1', + [1598497322] = 'ch3_08_dambed_2_lod', + [-1602725569] = 'ch3_08_dambed_2', + [276332922] = 'ch3_08_dambed_3_lod', + [-1835156086] = 'ch3_08_dambed_3', + [267314244] = 'ch3_08_dambed_d1', + [-561249921] = 'ch3_08_dambed_d2', + [-627639991] = 'ch3_08_dambed_d3', + [404087846] = 'ch3_08_damculvert', + [-1179823585] = 'ch3_08_damculvert001_lod', + [-25379558] = 'ch3_08_damculvert001', + [-1805651687] = 'ch3_08_dec00', + [717626835] = 'ch3_08_dec01', + [1067272065] = 'ch3_08_dec02', + [1298391822] = 'ch3_08_dec03', + [-483324246] = 'ch3_08_dec04', + [-252925407] = 'ch3_08_dec05', + [114808311] = 'ch3_08_dec06', + [345534840] = 'ch3_08_dec07', + [-384427380] = 'ch3_08_dec08', + [-123749985] = 'ch3_08_dec09', + [1829851240] = 'ch3_08_dec10', + [1112335084] = 'ch3_08_dec100', + [947900242] = 'ch3_08_dec101', + [-1198174341] = 'ch3_08_dec102', + [986845051] = 'ch3_08_dec102b', + [-1496601624] = 'ch3_08_dec103', + [-1693805466] = 'ch3_08_dec104', + [-1994919807] = 'ch3_08_dec105', + [231274985] = 'ch3_08_dec106', + [-479582932] = 'ch3_08_dec107', + [-785612623] = 'ch3_08_dec108', + [-956601273] = 'ch3_08_dec109', + [1674788332] = 'ch3_08_dec11', + [1961642378] = 'ch3_08_dec110', + [1722723599] = 'ch3_08_dec111', + [1349484689] = 'ch3_08_dec112', + [1361877151] = 'ch3_08_dec12', + [-1501805763] = 'ch3_08_dec13', + [-1676988837] = 'ch3_08_dec14', + [-1975481658] = 'ch3_08_dec15', + [-7899818] = 'ch3_08_dec16', + [-307113557] = 'ch3_08_dec17', + [-488457203] = 'ch3_08_dec18', + [-786163568] = 'ch3_08_dec19', + [-649922310] = 'ch3_08_dec20', + [1794874477] = 'ch3_08_dec21', + [658032686] = 'ch3_08_dec22_lod', + [-1601632377] = 'ch3_08_dec22', + [-901293309] = 'ch3_08_dec23', + [-1018835816] = 'ch3_08_dec24', + [-779785961] = 'ch3_08_dec25', + [-1479928415] = 'ch3_08_dec26', + [-295787831] = 'ch3_08_dec28', + [483852217] = 'ch3_08_dec29', + [1759451412] = 'ch3_08_dec30', + [682628969] = 'ch3_08_dec30awe', + [1957803260] = 'ch3_08_dec30qwert', + [2068430313] = 'ch3_08_dec31', + [-1086044707] = 'ch3_08_dec32', + [-814356928] = 'ch3_08_dec33', + [-1578726622] = 'ch3_08_dec34', + [-2042440725] = 'ch3_08_dec36', + [-1752664458] = 'ch3_08_dec37', + [1769675356] = 'ch3_08_dec38', + [2075508433] = 'ch3_08_dec39', + [910714126] = 'ch3_08_dec3cv_lod', + [-471193208] = 'ch3_08_dec40', + [-1815738151] = 'ch3_08_dec44', + [-1176742651] = 'ch3_08_dec45', + [1996541775] = 'ch3_08_dec46', + [-2059834432] = 'ch3_08_dec47', + [202865114] = 'ch3_08_dec48', + [-533126626] = 'ch3_08_dec49', + [242908488] = 'ch3_08_dec50', + [482679261] = 'ch3_08_dec51', + [-57681549] = 'ch3_08_dec53', + [1745944285] = 'ch3_08_dec53cv', + [-670429080] = 'ch3_08_dec55', + [1962986999] = 'ch3_08_dec67', + [1790261600] = 'ch3_08_dec68', + [1484526830] = 'ch3_08_dec69', + [-930450495] = 'ch3_08_dec70', + [-1170221268] = 'ch3_08_dec71', + [-1408845126] = 'ch3_08_dec72', + [-1649074665] = 'ch3_08_dec73', + [-2127502065] = 'ch3_08_dec74', + [2062669969] = 'ch3_08_dec75', + [960386347] = 'ch3_08_dec76', + [1390250089] = 'ch3_08_dec77', + [512925652] = 'ch3_08_dec78', + [1212740416] = 'ch3_08_dec79', + [-465949016] = 'ch3_08_dec80', + [1906546700] = 'ch3_08_dec80aa', + [-232273277] = 'ch3_08_dec81', + [17131582] = 'ch3_08_dec82', + [-1420968856] = 'ch3_08_dec83', + [-1670111563] = 'ch3_08_dec84', + [-1363000495] = 'ch3_08_dec85', + [1609770420] = 'ch3_08_dec86', + [968448313] = 'ch3_08_dec88', + [1202353435] = 'ch3_08_dec89', + [1132784604] = 'ch3_08_dec90', + [869223537] = 'ch3_08_dec91', + [-655583571] = 'ch3_08_dec92', + [187890489] = 'ch3_08_dec93', + [-296697483] = 'ch3_08_dec94', + [-1635671568] = 'ch3_08_dec95', + [-1859713221] = 'ch3_08_dec96', + [-1025414481] = 'ch3_08_dec97', + [-1279669152] = 'ch3_08_dec98', + [1466569666] = 'ch3_08_dec99', + [858338771] = 'ch3_08_decal_32', + [-20458576] = 'ch3_08_decal_987', + [-661622849] = 'ch3_08_fence_01', + [-1368155258] = 'ch3_08_fence_02', + [-1121568533] = 'ch3_08_fence_03', + [-609126919] = 'ch3_08_fence_04', + [-1521425206] = 'ch3_08_fizz02', + [-1968792502] = 'ch3_08_fizz02b', + [-1165216557] = 'ch3_08_grime_01', + [1015101627] = 'ch3_08_grime_02', + [782736648] = 'ch3_08_grime_03', + [417952140] = 'ch3_08_grime_04', + [1976506050] = 'ch3_08_land_01', + [-797455342] = 'ch3_08_land_02', + [-498700369] = 'ch3_08_land_03', + [1177258638] = 'ch3_08_land_03a', + [-1385888275] = 'ch3_08_land_04', + [-1155096208] = 'ch3_08_land_05', + [-1758963292] = 'ch3_08_land_06', + [201352404] = 'ch3_08_land_06a', + [-1459421863] = 'ch3_08_land_07', + [-1964874762] = 'ch3_08_land_07a', + [1923059859] = 'ch3_08_land_08', + [-2073742306] = 'ch3_08_land_09', + [1910705034] = 'ch3_08_land_10', + [-364578656] = 'ch3_08_lightbase_01', + [-1488442722] = 'ch3_08_parkinglot_', + [1218750848] = 'ch3_08_pklines_01', + [2131662419] = 'ch3_08_pklines_05', + [-1978260719] = 'ch3_08_ppbldg003', + [961698980] = 'ch3_08_ppbldg006_d', + [352401641] = 'ch3_08_ppbldg006', + [-953233214] = 'ch3_08_pptube01', + [-626690129] = 'ch3_08_pptube02', + [-1545926117] = 'ch3_08_pptube03', + [639078034] = 'ch3_08_pptube04', + [105074410] = 'ch3_08_pptube05', + [267477574] = 'ch3_08_pptube06', + [2086265653] = 'ch3_08_props_combo170_01_lod', + [-823001744] = 'ch3_08_props_s_029', + [-1134569072] = 'ch3_08_props_s_030', + [-1373487851] = 'ch3_08_props_s_031', + [-1719209678] = 'ch3_08_pumprm_rd00', + [-1014774485] = 'ch3_08_pumprm_rd01', + [1970173256] = 'ch3_08_road003', + [2131475695] = 'ch3_08_road003a', + [-1471592537] = 'ch3_08_road13', + [-1849230487] = 'ch3_08_road652', + [-2131771372] = 'ch3_08_roadblend01', + [-2094414058] = 'ch3_08_trk_16', + [-1590623728] = 'ch3_08_trk_21', + [1868516726] = 'ch3_08_trk_arm_05', + [207040595] = 'ch3_08_tub01_dcl', + [1779417278] = 'ch3_08_tub02_dcl', + [-1903762886] = 'ch3_08_tub03_dcl', + [2076169544] = 'ch3_08_tub04_dcl', + [581637042] = 'ch3_08_tub05_dcl', + [800372682] = 'ch3_08_tub06_dcl', + [1055357395] = 'ch3_08_tub08_dcl', + [-2046121644] = 'ch3_08_tub10_dcl', + [1458015620] = 'ch3_08_tub15_dcl', + [1132841131] = 'ch3_08_tub18_dcl', + [825027715] = 'ch3_08_tub20_dcl', + [-1345582026] = 'ch3_08_tub20_dcl003', + [925686296] = 'ch3_08_tub24_dcl', + [-1732642658] = 'ch3_08_tub25_dcl', + [-749132645] = 'ch3_08_weir_01', + [-987822041] = 'ch3_08_weir_02', + [-1878254078] = 'ch3_08_weir_03', + [-836090305] = 'ch3_09_crashbar_021_lod', + [1100483508] = 'ch3_09_crashbar_022_lod', + [-1352003749] = 'ch3_09_crashbar_023_lod', + [1123863124] = 'ch3_09_crashbar_024_lod', + [-1764881703] = 'ch3_09_crashbar_09', + [-184432041] = 'ch3_09_crashbar_10', + [-1904280213] = 'ch3_09_crashbar_16', + [2091209800] = 'ch3_09_crashbar_20', + [-1870331984] = 'ch3_09_decals00', + [-1640522987] = 'ch3_09_decals01', + [-1559649095] = 'ch3_09_decals02', + [-1330429940] = 'ch3_09_decals03', + [-947098178] = 'ch3_09_decals04', + [-542597646] = 'ch3_09_decals06', + [-311477889] = 'ch3_09_decals07', + [-34219380] = 'ch3_09_decals08', + [61924866] = 'ch3_09_decals09', + [-1672025729] = 'ch3_09_decals10', + [1628074739] = 'ch3_09_decals11', + [2137501601] = 'ch3_09_decals12', + [-1249403924] = 'ch3_09_decals13', + [-1047415808] = 'ch3_09_decals14', + [-2014461767] = 'ch3_09_decals15', + [-88889785] = 'ch3_09_decals17', + [150553298] = 'ch3_09_decals18', + [-552210680] = 'ch3_09_decals19', + [586641170] = 'ch3_09_decals20', + [1836942377] = 'ch3_09_decals22', + [-2143049291] = 'ch3_09_decals23', + [-636887744] = 'ch3_09_decals24', + [1160262515] = 'ch3_09_decals26', + [1465505750] = 'ch3_09_decals27', + [-1882699586] = 'ch3_09_decals28', + [-1584206765] = 'ch3_09_decals29', + [367057505] = 'ch3_09_decals37', + [1019979830] = 'ch3_09_decals38', + [794103113] = 'ch3_09_decals39', + [-1468695232] = 'ch3_09_decals58', + [-1840885534] = 'ch3_09_decals59', + [35339126] = 'ch3_09_decals60', + [272717762] = 'ch3_09_decals61', + [1050621049] = 'ch3_09_decals63', + [1546088329] = 'ch3_09_decals64', + [-370144484] = 'ch3_09_decals65', + [-140171642] = 'ch3_09_decals66', + [2010687215] = 'ch3_09_decals67', + [-2054340008] = 'ch3_09_decals68', + [-1555268138] = 'ch3_09_decals69', + [-1073042802] = 'ch3_09_decals72', + [-1636079760] = 'ch3_09_decals73', + [-1934507043] = 'ch3_09_decals74', + [-977331276] = 'ch3_09_land_01', + [-723863061] = 'ch3_09_land_02', + [-433300338] = 'ch3_09_land_03', + [-802180963] = 'ch3_09_land_05', + [-481405222] = 'ch3_09_land_06', + [-1416018446] = 'ch3_09_props_combo10_dslod', + [-396751366] = 'ch3_09_props_combo11_dslod', + [-1754475451] = 'ch3_09_props_combo12_dslod', + [-49364721] = 'ch3_09_props_combo13_dslod', + [-1669263607] = 'ch3_09_props_combo14_dslod', + [-1679690193] = 'ch3_09_props_combo15_dslod', + [1951590537] = 'ch3_09_props_combo16_dslod', + [538575755] = 'ch3_09_props_combo17_dslod', + [-485688309] = 'ch3_09_props_combo18_dslod', + [1094168726] = 'ch3_09_trk_16', + [995001595] = 'ch3_09_trk_17b', + [504883807] = 'ch3_09_trk_18', + [261393856] = 'ch3_09_trk_18b', + [270945916] = 'ch3_09_trk_19', + [-2138935626] = 'ch3_09_trk_19a', + [876024697] = 'ch3_09_trk_20', + [695689610] = 'ch3_10_b1_railing', + [-2015949425] = 'ch3_10_b1', + [355704072] = 'ch3_10_b2_railing', + [218175461] = 'ch3_10_b2', + [1043888723] = 'ch3_10_b3', + [695520680] = 'ch3_10_decs07', + [242390948] = 'ch3_10_decs08', + [956197735] = 'ch3_10_decs51', + [1595586471] = 'ch3_10_decs54', + [1901452317] = 'ch3_10_decs55', + [-2136507712] = 'ch3_10_decs56', + [116426580] = 'ch3_10_decs57', + [339419625] = 'ch3_10_decs58', + [709643787] = 'ch3_10_decs59', + [1970070235] = 'ch3_10_decs60', + [1655422297] = 'ch3_10_decs61', + [415803796] = 'ch3_10_decs62', + [101352472] = 'ch3_10_decs63', + [916874575] = 'ch3_10_decs64', + [618643906] = 'ch3_10_decs65', + [-911996084] = 'ch3_10_decs67', + [1372273969] = 'ch3_10_dir_rd_sgn_01', + [-755156235] = 'ch3_10_ele_conc_base_01', + [-642025218] = 'ch3_10_fence01', + [-734466571] = 'ch3_10_fence02', + [164216704] = 'ch3_10_g1_multi', + [-1271000839] = 'ch3_10_g1_terrain', + [371161404] = 'ch3_10_g2_multi', + [1109293905] = 'ch3_10_g2_terrain', + [2117842222] = 'ch3_10_glue', + [-1140411524] = 'ch3_10_glue002', + [-951966168] = 'ch3_10_glue2', + [1401698060] = 'ch3_10_graff', + [-2094266393] = 'ch3_10_land_01_decal03', + [35492179] = 'ch3_10_land_01b', + [909917033] = 'ch3_10_land_02_decal02', + [496571095] = 'ch3_10_land_02', + [1349655077] = 'ch3_10_land_03_decal02', + [-1889700254] = 'ch3_10_land_03', + [-970717207] = 'ch3_10_land_04_decals02', + [2032880126] = 'ch3_10_land_04', + [1793699195] = 'ch3_10_land_05', + [1470924545] = 'ch3_10_land_06', + [-965286764] = 'ch3_10_land_07', + [-1364249339] = 'ch3_10_land_08', + [-1720579445] = 'ch3_10_land_09', + [820655661] = 'ch3_10_land_10', + [2059129305] = 'ch3_10_rbridge', + [1056063697] = 'ch3_10_road', + [446856490] = 'ch3_10_weed_01', + [-735973326] = 'ch3_10_weed_02', + [-1774041919] = 'ch3_11__decal001', + [-263785343] = 'ch3_11_armco1', + [1901033064] = 'ch3_11_armco2', + [1628755443] = 'ch3_11_armco3', + [1438039863] = 'ch3_11_armco4', + [1130306184] = 'ch3_11_armco5', + [-1467292450] = 'ch3_11_armco6', + [-1768800019] = 'ch3_11_armco7', + [-1935135463] = 'ch3_11_armco8', + [2061928854] = 'ch3_11_armco9', + [-491910524] = 'ch3_11_cabletarp1', + [-2029336656] = 'ch3_11_cdec_01h', + [1181754869] = 'ch3_11_ch2_11_decal', + [1175698662] = 'ch3_11_ch3_armco_10', + [2098047693] = 'ch3_11_ch3_armco_11', + [1657370193] = 'ch3_11_ch3_armco_12', + [1378407676] = 'ch3_11_ch3_armco_13', + [1835469692] = 'ch3_11_ch3_armco_14', + [-2002075133] = 'ch3_11_ch3_armco_16', + [185550538] = 'ch3_11_ch3_armco_17', + [644185462] = 'ch3_11_ch3_armco_18', + [814453186] = 'ch3_11_ch3_armco_19', + [-1734264607] = 'ch3_11_ch3_structures1_b', + [-2134516844] = 'ch3_11_ch3_tanksmall', + [538582608] = 'ch3_11_chimney1_decal001', + [1242356579] = 'ch3_11_des_tankercrash_end', + [-599149826] = 'ch3_11_des_tankercrash_start', + [1391354030] = 'ch3_11_detail_new4a', + [1402666496] = 'ch3_11_detail009', + [1668009666] = 'ch3_11_detail3a', + [1073154009] = 'ch3_11_detail3c', + [871192768] = 'ch3_11_detail4', + [742218974] = 'ch3_11_detail4b', + [1380259183] = 'ch3_11_detail6', + [1137834121] = 'ch3_11_detail7', + [201431831] = 'ch3_11_detail7b', + [413290682] = 'ch3_11_fan001', + [-1292995633] = 'ch3_11_gate_1_hd', + [-1211435954] = 'ch3_11_gate_2_hd', + [-1964467423] = 'ch3_11_gate_3_hd', + [984406577] = 'ch3_11_gate_4_hd', + [-1160753057] = 'ch3_11_ground_01', + [-785220317] = 'ch3_11_ground_02', + [-2025625274] = 'ch3_11_ground_03', + [1471253027] = 'ch3_11_ground_04', + [646588365] = 'ch3_11_ground_05', + [1949057816] = 'ch3_11_ground_06', + [1183672275] = 'ch3_11_ground_07', + [341738358] = 'ch3_11_ground_08', + [-249545478] = 'ch3_11_ground_09', + [-2095849545] = 'ch3_11_ground_10', + [1809690947] = 'ch3_11_ground_11', + [1619040905] = 'ch3_11_ground_12', + [-1907689955] = 'ch3_11_ground_13', + [2097501074] = 'ch3_11_ground_14', + [719957844] = 'ch3_11_ground_15', + [390793239] = 'ch3_11_ground_16', + [1178166771] = 'ch3_11_ground_17', + [-2114999981] = 'ch3_11_ground_18_o', + [868598028] = 'ch3_11_ground_18', + [-29698569] = 'ch3_11_ground_19', + [-1598334529] = 'ch3_11_ground_conc_o', + [1371079303] = 'ch3_11_ground_decal03', + [-1701324808] = 'ch3_11_jump', + [-1370456270] = 'ch3_11_ladder_b', + [-1367591952] = 'ch3_11_ladder01', + [-1070147739] = 'ch3_11_ladder02', + [1236045313] = 'ch3_11_lay_byovy_3', + [-1839648009] = 'ch3_11_mground_2_o', + [1825437987] = 'ch3_11_mground_2', + [217359003] = 'ch3_11_nwdcal01', + [-687819500] = 'ch3_11_pipe01', + [-1205074353] = 'ch3_11_pipe01b', + [-359044311] = 'ch3_11_pipe01c', + [-908944712] = 'ch3_11_pipe02', + [1060115317] = 'ch3_11_pipe02b', + [1506976263] = 'ch3_11_pipe03a_2_lod', + [-473881927] = 'ch3_11_pipe03a_2', + [-116062724] = 'ch3_11_pipe03a', + [1640453983] = 'ch3_11_pipe03b', + [-1937920817] = 'ch3_11_pipe03c', + [1621316591] = 'ch3_11_pipe04a', + [1247848298] = 'ch3_11_pipe04b', + [958858487] = 'ch3_11_pipe04c', + [267921154] = 'ch3_11_pipe05', + [44960878] = 'ch3_11_pipe06', + [1980166954] = 'ch3_11_pipe07', + [1748326279] = 'ch3_11_pipe08', + [1944361601] = 'ch3_11_pipedecal01', + [-1554155150] = 'ch3_11_pipedecal02', + [1227200259] = 'ch3_11_railing01', + [473605960] = 'ch3_11_railing01b', + [166855351] = 'ch3_11_railing01c', + [113704033] = 'ch3_11_railing01d', + [-158114822] = 'ch3_11_railing01e', + [-478857794] = 'ch3_11_railing01f', + [-1560917341] = 'ch3_11_railing02', + [1824546360] = 'ch3_11_railing03', + [1983476010] = 'ch3_11_railing04', + [-2061988116] = 'ch3_11_railing05', + [-326252419] = 'ch3_11_rf_tanker_end_slod', + [1026225904] = 'ch3_11_rf_tanker_start_slod', + [1280834262] = 'ch3_11_rubbish01', + [1494989652] = 'ch3_11_struc15_rail', + [-2006451316] = 'ch3_11_structures1', + [1926870575] = 'ch3_11_structures12', + [1588366805] = 'ch3_11_structures15', + [2052677487] = 'ch3_11_structures2', + [-1731035532] = 'ch3_11_structures2b', + [1290568854] = 'ch3_11_structures4', + [-1781098899] = 'ch3_11_structures5', + [1018984] = 'ch3_11_structures6_new', + [-1743541582] = 'ch3_11_structures6b_new', + [982867936] = 'ch3_11_structures9', + [-729433511] = 'ch3_11_tamov_01', + [1760672682] = 'ch3_11_tankbig', + [-397084148] = 'ch3_11_tankerexp_end_dec', + [-475010146] = 'ch3_11_tankerexp_end', + [-2077918235] = 'ch3_11_tankerexp_grp0_slod', + [1117786725] = 'ch3_11_tankerexp_grp0', + [-208919750] = 'ch3_11_tankerexp_grp3_slod', + [959905683] = 'ch3_11_tankerexp_grp3', + [-587517777] = 'ch3_11_tankerexp_petrol', + [-1076771576] = 'ch3_11_tankerexp_ptrl2', + [1511591386] = 'ch3_11_tankerexp_start_slod', + [-2003469124] = 'ch3_11_tankerexp_start', + [-621736190] = 'ch3_11_tanksmall_rail01_lod', + [1584325512] = 'ch3_11_tanksmall_rail01', + [-1303737526] = 'ch3_11_tanksmall_rail02', + [241877889] = 'ch3_11_tanksmall_rail04', + [589884669] = 'ch3_11_tanksmall_rail05', + [-341515861] = 'ch3_11_tbig_rail_lod01', + [395574536] = 'ch3_11_tbig_rail01', + [1902883002] = 'ch3_11_tbig_rail02', + [1662653463] = 'ch3_11_tbig_rail03', + [1318447887] = 'ch3_11_tbig_rail04', + [1088901042] = 'ch3_11_tbig_rail05', + [-1762624561] = 'ch3_11_tbig_rail06', + [-2001608878] = 'ch3_11_tbig_rail07', + [1809275886] = 'ch3_11_trk_dec00', + [97816522] = 'ch3_11_trk_dec02', + [-637716424] = 'ch3_11_trk_dec06', + [-875947346] = 'ch3_11_trk_dec10', + [1770116643] = 'ch3_11_trk_dec14', + [1424960766] = 'ch3_11_trk_dec16', + [-15137645] = 'ch3_11_trk_dec25', + [1029865509] = 'ch3_11_trk_dec32', + [123540475] = 'ch3_11_trk_dec36', + [-1421938368] = 'ch3_11_trk_dec41', + [-1698475931] = 'ch3_11_trk_dec48', + [-1314718468] = 'ch3_11_trk_dec52', + [-1170600402] = 'ch3_11_trk_dec56', + [935857344] = 'ch3_11_trk_dec60', + [106703225] = 'ch3_11_trk_dec66', + [1262203423] = 'ch3_11_trk_dec72', + [640378871] = 'ch3_11_trk_dec74', + [141798536] = 'ch3_11_trk_dec76', + [-1937328976] = 'ch3_11_trk_dec77', + [103001020] = 'ch3_11_trk_dec80', + [-2093575702] = 'ch3_11_wattower1', + [-1797638863] = 'ch3_11_wattower2', + [22191270] = 'ch3_11_weeds_01', + [244037400] = 'ch3_11_weeds_02', + [-689911857] = 'ch3_11_weeds_03', + [2053672672] = 'ch3_11_weeds_05', + [-57574957] = 'ch3_11_whirly_parent', + [-1091875848] = 'ch3_11_wires_md_06', + [-428138242] = 'ch3_11_wires_md_069', + [-1132685978] = 'ch3_11_yard01', + [95057815] = 'ch3_12_animplane01', + [-303347687] = 'ch3_12_animplane02', + [100618162] = 'ch3_12_animplane1_lod', + [26298863] = 'ch3_12_animplane2_lod', + [1022385496] = 'ch3_12_belucky', + [454153329] = 'ch3_12_casinodetailsa', + [-305169939] = 'ch3_12_casinodetailsb', + [-1535887408] = 'ch3_12_casinoovly', + [286261492] = 'ch3_12_dcl_00', + [-647145959] = 'ch3_12_dcl_00b', + [2076931426] = 'ch3_12_emissivea_lod', + [-1517221919] = 'ch3_12_emissivea', + [1219710487] = 'ch3_12_emissived', + [-1863445814] = 'ch3_12_emissivee_lod', + [1818989975] = 'ch3_12_emissivee', + [-451597541] = 'ch3_12_ff00', + [-1361690141] = 'ch3_12_ff00rail01', + [1595875958] = 'ch3_12_ff00rail02', + [-1926791546] = 'ch3_12_ff00rail03', + [-362183076] = 'ch3_12_ff049', + [-1726457964] = 'ch3_12_ff049rail01', + [1346782701] = 'ch3_12_ff049rail02', + [1388206108] = 'ch3_12_ff055', + [33943432] = 'ch3_12_ff10', + [1440257844] = 'ch3_12_ff12', + [-967494268] = 'ch3_12_ff12rail01', + [-735260365] = 'ch3_12_ff12rail02', + [705395951] = 'ch3_12_ff12rail03', + [-1211557780] = 'ch3_12_ff12rail04', + [-22239694] = 'ch3_12_ff12rail05', + [221659973] = 'ch3_12_ff12rail06', + [-857701046] = 'ch3_12_ff16', + [-1564037157] = 'ch3_12_ff16b', + [-335461809] = 'ch3_12_ff16c', + [-1350088027] = 'ch3_12_ff41rail02', + [-1164778481] = 'ch3_12_ff46', + [1567288242] = 'ch3_12_ff46rail01', + [1789068838] = 'ch3_12_ff46rail02', + [83837601] = 'ch3_12_ff4rail01', + [-669373428] = 'ch3_12_fizzrails01', + [-966817641] = 'ch3_12_fizzrails02', + [1035302721] = 'ch3_12_fizzrails03', + [737399742] = 'ch3_12_fizzrails04', + [559005306] = 'ch3_12_fizzrails05', + [269556729] = 'ch3_12_fizzrails06', + [1656799579] = 'ch3_12_fizzrails07', + [285744619] = 'ch3_12_fizzrails08', + [1162053217] = 'ch3_12_fizzrails09', + [1725745243] = 'ch3_12_fizzrails10', + [-1884382722] = 'ch3_12_fizzrails11', + [-1788369552] = 'ch3_12_fizzrails12', + [-1306403100] = 'ch3_12_fizzrails13', + [-1075545495] = 'ch3_12_fizzrails14', + [-406697432] = 'ch3_12_fizzrails15', + [-839182694] = 'ch3_12_fizzrails16', + [-2075196605] = 'ch3_12_fizzrails17', + [-1700974625] = 'ch3_12_fizzrails18', + [2028467881] = 'ch3_12_ground1_o', + [-1409449821] = 'ch3_12_ground1', + [1032276539] = 'ch3_12_ground2_o', + [-1119149250] = 'ch3_12_ground2', + [1970865178] = 'ch3_12_ground3_o', + [-650552550] = 'ch3_12_ground3', + [1015879150] = 'ch3_12_ground4_o', + [-341835801] = 'ch3_12_ground4', + [1211638081] = 'ch3_12_hay1', + [1734565783] = 'ch3_12_hay2', + [605443182] = 'ch3_12_hedgetops01', + [844165347] = 'ch3_12_hedgetops02', + [958398137] = 'ch3_12_hedgetops03', + [75692496] = 'ch3_12_hedgetopsa', + [295965718] = 'ch3_12_hedgetopsb', + [-1840671393] = 'ch3_12_hedgetopsc', + [-1602473532] = 'ch3_12_hedgetopsd', + [-1226453203] = 'ch3_12_landingdecals', + [874636820] = 'ch3_12_landingdecalsb', + [1330934962] = 'ch3_12_paddockfencea_hi', + [224636530] = 'ch3_12_paddockfenceb_hi', + [902852738] = 'ch3_12_paddockfencec_hi', + [312209214] = 'ch3_12_paddockfenced_hi', + [457109464] = 'ch3_12_paddockfencef_hi', + [301808585] = 'ch3_12_paddockfenceg_hi', + [868425575] = 'ch3_12_paddockfenceh_hi', + [-777165813] = 'ch3_12_paddockfencei_hi', + [-1323174630] = 'ch3_12_paddockfencej_hi', + [965609485] = 'ch3_12_paddockfencek_hi', + [-2104771919] = 'ch3_12_paddockfencel_hi', + [1106428156] = 'ch3_12_paddockfencem_hi', + [-785368230] = 'ch3_12_paddockfencema_hi', + [-1731358788] = 'ch3_12_paddockfencen_hi', + [-1282517078] = 'ch3_12_props_combo10_slod', + [793110064] = 'ch3_12_props_combo11_slod', + [1716345502] = 'ch3_12_props_combo12_slod', + [-2031424618] = 'ch3_12_props_combo13_slod', + [-2054937662] = 'ch3_12_props_combo14_slod', + [96833455] = 'ch3_12_props_combo15_slod', + [1135573407] = 'ch3_12_props_combo17_slod', + [-1410439771] = 'ch3_12_props_combo18_slod', + [-710513263] = 'ch3_12_props_para_slod1', + [-630456418] = 'ch3_12_rails01', + [915811770] = 'ch3_12_rails01b', + [2037857656] = 'ch3_12_rest', + [1285014320] = 'ch3_12_resta', + [-19814491] = 'ch3_12_restb', + [-1663474758] = 'ch3_12_restc', + [-1903179993] = 'ch3_12_restd', + [-1657521904] = 'ch3_12_smallpaddocka', + [-1545124234] = 'ch3_12_smallpaddockb', + [-1313807863] = 'ch3_12_smallpaddockc', + [1809372758] = 'ch3_12_smallpaddockd', + [-952003274] = 'ch3_12_smallpaddockda', + [567028211] = 'ch3_12_stables1_o', + [-214444329] = 'ch3_12_stables1', + [-245163413] = 'ch3_12_stables2a', + [1672183550] = 'ch3_12_stables2b', + [1878093086] = 'ch3_12_stablesovly1', + [670470424] = 'ch3_12_stablesovly1b', + [108130243] = 'ch3_12_stands001', + [746363832] = 'ch3_12_stands001pole01', + [839952096] = 'ch3_12_stands001pole02', + [384635045] = 'ch3_12_stands002', + [958627060] = 'ch3_12_stands002boards1', + [115447921] = 'ch3_12_stands002boards2', + [2106326798] = 'ch3_12_stands002pole01', + [1339204508] = 'ch3_12_stands002pole02', + [505004075] = 'ch3_12_stands002pole03', + [810509462] = 'ch3_12_stands002pole04', + [-1304598416] = 'ch3_12_stands002pole05', + [186270519] = 'ch3_12_stands002rail01', + [-920207487] = 'ch3_12_stands002rail02', + [-474778470] = 'ch3_12_stands002rail04', + [-1243211520] = 'ch3_12_stands002rail05', + [-1714197193] = 'ch3_12_stands002rail16', + [651263829] = 'ch3_12_stands002rail44', + [-801012347] = 'ch3_12_stands002steps01', + [-32022224] = 'ch3_12_stands002steps02', + [-89302436] = 'ch3_12_stands002steps03', + [949868116] = 'ch3_12_stands002steps04', + [1416905737] = 'ch3_12_standsovly1', + [1707206308] = 'ch3_12_standsovly2', + [871957267] = 'ch3_12_standsovly3', + [656752851] = 'ch3_12_standsrails1', + [1028812077] = 'ch3_12_standsrails2', + [1421286394] = 'ch3_12_standsrails3', + [-1652855133] = 'ch3_12_track02rail01', + [1798670872] = 'ch3_12_track02rail04', + [1861489033] = 'ch3_12_track02rail06', + [1507845985] = 'ch3_12_track02rail08', + [174475611] = 'ch3_12_track02rail10', + [-820981071] = 'ch3_12_track02rail11', + [-1948726210] = 'ch3_12_track02rail15', + [-1875389200] = 'ch3_12_track02rail18', + [-1374744306] = 'ch3_12_track02rail21', + [1511221784] = 'ch3_12_track02rail24', + [-272525950] = 'ch3_12_track02rail27', + [347037533] = 'ch3_12_track02rail29', + [-689773411] = 'ch3_12_track02rail32', + [730631659] = 'ch3_12_track02rail35', + [-274262483] = 'ch3_12_track02rail38', + [-432905600] = 'ch3_12_trackfence01', + [-664287509] = 'ch3_12_trackfence02', + [-1591453599] = 'ch3_12_trackfence03', + [-84252174] = 'ch3_12_trackfence03b', + [-1814643258] = 'ch3_12_trackfence04', + [1688670023] = 'ch3_12_trackfencea', + [-775060846] = 'ch3_12_trackovly1a', + [-812745196] = 'ch3_12_trackovly1b', + [-108474232] = 'ch3_12_water_a', + [-481549297] = 'ch3_12_water_b', + [1925166653] = 'ch3_13_armco_lb_03', + [-1580416506] = 'ch3_13_armco_lb_03b', + [-1919882273] = 'ch3_13_armco_lb_04', + [339818737] = 'ch3_13_bch_00', + [116301388] = 'ch3_13_bch_01', + [-261394106] = 'ch3_13_bch_02', + [-481437941] = 'ch3_13_bch_03', + [-1140782990] = 'ch3_13_bch_05', + [-1447959600] = 'ch3_13_bch_06', + [-1734852195] = 'ch3_13_bch_07', + [-1410860635] = 'ch3_13_car_pk_01', + [-1880768967] = 'ch3_13_cp_barr_01', + [1948246601] = 'ch3_13_decls00', + [1709000132] = 'ch3_13_decls01', + [-526107820] = 'ch3_13_decls02', + [-765026599] = 'ch3_13_decls03', + [956886044] = 'ch3_13_decls04', + [784586642] = 'ch3_13_decls05', + [-438843977] = 'ch3_13_decls06', + [-1754978093] = 'ch3_13_decls07', + [-495894806] = 'ch3_13_decls08', + [-207068840] = 'ch3_13_decls09', + [1690892875] = 'ch3_13_decls10', + [1265420179] = 'ch3_13_decls11', + [-220424608] = 'ch3_13_decls12', + [-533729017] = 'ch3_13_decls13', + [511405469] = 'ch3_13_decls14', + [210487742] = 'ch3_13_decls15', + [-1474625314] = 'ch3_13_decls16', + [-1655575736] = 'ch3_13_decls17', + [-878819356] = 'ch3_13_decls18', + [-1192254841] = 'ch3_13_decls19', + [-1569655174] = 'ch3_13_decls20', + [-1867558153] = 'ch3_13_decls21', + [1051504371] = 'ch3_13_decls22', + [1496933388] = 'ch3_13_decls24', + [1198768257] = 'ch3_13_decls25', + [66009445] = 'ch3_13_decls26', + [-189752600] = 'ch3_13_decls27', + [589690834] = 'ch3_13_decls28', + [283398991] = 'ch3_13_decls29', + [1668151741] = 'ch3_13_decls30', + [1351668739] = 'ch3_13_decls31', + [325736891] = 'ch3_13_decls32', + [808260436] = 'ch3_13_decls34', + [1289047204] = 'ch3_13_decls35', + [-866989171] = 'ch3_13_decls36', + [-93837385] = 'ch3_13_decls37', + [-191816695] = 'ch3_13_decls38', + [585365678] = 'ch3_13_decls39', + [-1925034319] = 'ch3_13_decls40', + [989014548] = 'ch3_13_decls41', + [582973865] = 'ch3_13_decls42', + [283989509] = 'ch3_13_decls43', + [1174356012] = 'ch3_13_decls44', + [104808517] = 'ch3_13_decls46', + [876518487] = 'ch3_13_decls47', + [1666415232] = 'ch3_13_decls48', + [1353274668] = 'ch3_13_decls49', + [595524564] = 'ch3_13_decls50', + [352870119] = 'ch3_13_decls51', + [-1836950995] = 'ch3_13_decls52', + [1079031243] = 'ch3_13_decls53', + [-1262444879] = 'ch3_13_decls56', + [-496272890] = 'ch3_13_decls57', + [-778184597] = 'ch3_13_decls58', + [2133472129] = 'ch3_13_decls59', + [-1089752029] = 'ch3_13_decls60', + [-828026026] = 'ch3_13_decls61', + [-301526459] = 'ch3_13_decls62', + [-61722917] = 'ch3_13_decls63', + [198495712] = 'ch3_13_decls64', + [429615469] = 'ch3_13_decls65', + [-116607390] = 'ch3_13_drain_01', + [-1970049957] = 'ch3_13_drain2', + [65004367] = 'ch3_13_foamwet_01', + [-188070620] = 'ch3_13_foamwet_02', + [-1625384506] = 'ch3_13_foamwet_03', + [-1366411095] = 'ch3_13_foamwet_04', + [-1597793004] = 'ch3_13_foamwet_05', + [-837224514] = 'ch3_13_foamwet_06', + [-1136438253] = 'ch3_13_foamwet_07', + [287747640] = 'ch3_13_hlandb_02h', + [-686351193] = 'ch3_13_land_03', + [80703927] = 'ch3_13_land_05b', + [-1787042221] = 'ch3_13_land_c_01', + [1869322803] = 'ch3_13_land_c_02', + [-282715734] = 'ch3_13_land_c_03', + [13876485] = 'ch3_13_land_c_04', + [1251102849] = 'ch3_13_land_c_05', + [58835549] = 'ch3_13_land_c_07', + [363095714] = 'ch3_13_land_c_08', + [425968355] = 'ch3_13_land_c_12b', + [-1671470689] = 'ch3_13_land_m_01', + [-915424317] = 'ch3_13_land_m_02', + [-1154146482] = 'ch3_13_land_m_03', + [-453348648] = 'ch3_13_land_m_04', + [-692529579] = 'ch3_13_land_m_05', + [472572220] = 'ch3_13_land_m_06', + [741156297] = 'ch3_13_land_r_02', + [471041430] = 'ch3_13_land_r_03', + [-1187136711] = 'ch3_13_landb_01', + [1703419183] = 'ch3_13_props_ch3_13_towels', + [1133335174] = 'ch3_13_rk_ins00', + [517277974] = 'ch3_13_rk_ins01', + [-38970024] = 'ch3_13_rk_ins01a', + [826781179] = 'ch3_13_rk_ins02', + [2052538393] = 'ch3_13_rk_ins03', + [-1933253388] = 'ch3_13_rk_ins04', + [1593543010] = 'ch3_13_rk_ins05', + [1899113935] = 'ch3_13_rk_ins06', + [-1164722027] = 'ch3_13_rk_ins07', + [-959388034] = 'ch3_13_sea_end00', + [-1192113472] = 'ch3_13_sea_end01', + [1910291607] = 'ch3_13_sea_end02', + [1427669775] = 'ch3_13_sea_end03', + [420219639] = 'ch3_13_sea_end04', + [2083311927] = 'ch3_13_sea_end05', + [896975820] = 'ch3_13_sea_end06', + [657205047] = 'ch3_13_sea_end07', + [-539191143] = 'ch3_13_sea_end08', + [-1042652276] = 'ch3_13_sea_sbed_03', + [-676107] = 'ch3_13_sea_sbed_d_04', + [-1079162387] = 'ch3_13_sea_uw1_01', + [-417523504] = 'ch3_13_sea_uw1_02', + [-312728242] = 'ch3_13_sea_uw1_03', + [175792010] = 'ch3_13_sea_uw1_04', + [418446455] = 'ch3_13_sea_uw1_05', + [-200691023] = 'ch3_13_sea_uw1_06', + [1238130229] = 'ch3_13_sea_uw1_07', + [-18397076] = 'ch3_13_sea_uw1_08', + [-442493474] = 'ch3_13_sea_uw1_09', + [1894559077] = 'ch3_13_sea_uw1_10', + [-1088697918] = 'ch3_13_sea_uw1_11', + [-520974989] = 'ch3_13_sea_uw1_12', + [-59816852] = 'ch3_13_sea_uw1_14', + [938261350] = 'ch3_13_sea_uw1_17', + [-240317477] = 'ch3_13_sea_uw1_18_lod', + [1059211729] = 'ch3_13_sea_uw1_18', + [1400402557] = 'ch3_13_sea_uw1_19', + [-1584708350] = 'ch3_13_sea_uw1_20_lod', + [-529625697] = 'ch3_13_sea_uw1_20', + [-307746798] = 'ch3_13_sea_uw1_21', + [900544539] = 'ch3_13_sea_uw1_22', + [65459343] = 'ch3_13_sea_uw1_23', + [1607797870] = 'ch3_13_sea_uw1_29', + [396623153] = 'ch3_13_sea_uw1_30', + [-1972496916] = 'ch3_13_sea_uw1_31_lod', + [-436463134] = 'ch3_13_sea_uw1_31', + [436699640] = 'ch3_13_sea_uw1_32', + [139943576] = 'ch3_13_sea_uw1_33', + [1049447171] = 'ch3_13_sea_uw1_34', + [1285318433] = 'ch3_13_sea_uw1_35', + [-1741816277] = 'ch3_13_sea_uw1_36', + [-1436147045] = 'ch3_13_sea_uw1_37', + [1041252010] = 'ch3_13_sea_uw1_dec_01', + [1471508980] = 'ch3_13_sea_uw1_dec_03', + [1225315483] = 'ch3_13_sea_uw1_dec_04', + [1695026329] = 'ch3_13_sea_uw1_dec_05', + [-1873190085] = 'ch3_13_sea_uw1_dec_06', + [-2103523386] = 'ch3_13_sea_uw1_dec_07', + [-1132643438] = 'ch3_13_sea_uw1_dec_08', + [14468180] = 'ch3_13_sea_uw1_dec_09', + [-1185467286] = 'ch3_13_sea_uw1_dec_10', + [-999732594] = 'ch3_13_sea_uw1_dec_11', + [-690229389] = 'ch3_13_sea_uw1_dec_12', + [-505215615] = 'ch3_13_sea_uw1_dec_13', + [701404227] = 'ch3_13_sea_uw1_dec_15', + [529563591] = 'ch3_13_sea_uw1_dec_16', + [241622388] = 'ch3_13_sea_uw1_dec_17', + [-64669455] = 'ch3_13_sea_uw1_dec_18', + [-488438163] = 'ch3_13_sea_uw1_dec_19', + [-1929785280] = 'ch3_13_sea_uw1_dec_20', + [-2110539084] = 'ch3_13_sea_uw1_dec_21', + [-665164028] = 'ch3_13_sea_uw1_dec_22', + [-943405607] = 'ch3_13_sea_uw1_dec_23', + [-1140478373] = 'ch3_13_sea_uw1_dec_24', + [690468368] = 'ch3_13_sea_uwb_00', + [393089693] = 'ch3_13_sea_uwb_01', + [1120299341] = 'ch3_13_sea_uwb_02', + [851429696] = 'ch3_13_sea_uwb_03', + [1614750790] = 'ch3_13_sea_uwb_04', + [1317109963] = 'ch3_13_sea_uwb_05', + [2142298921] = 'ch3_13_sea_uwb_06', + [-2076855252] = 'ch3_13_sea_uwb_d_00', + [-1158110795] = 'ch3_13_sea_uwb_d_01', + [-610391698] = 'ch3_13_sea_wreck_00', + [2146398702] = 'ch3_13_sea_wreck_01', + [1279527576] = 'ch3_13_sea_wreck_02', + [-1550501575] = 'ch3_13_sea_wreck_03', + [508610414] = 'ch3_13_sea_wreck_decal', + [1602759496] = 'ch3_13_sea_wreck_lod', + [-1704574113] = 'ch3_13_wall_00', + [-1344442803] = 'ch3_13_wall_01', + [-63071912] = 'ch3_13_waves_02', + [175420870] = 'ch3_13_waves_03', + [-1157978167] = 'ch3_14_blend01', + [78986045] = 'ch3_14_blend02', + [-1902660827] = 'ch3_14_clff00', + [-646428443] = 'ch3_14_clff01', + [-377886488] = 'ch3_14_clff02', + [-1210808930] = 'ch3_14_clff03', + [-1457285434] = 'ch3_14_coastdecs04', + [-758650354] = 'ch3_14_coastdecs05', + [-1579711982] = 'ch3_14_coastdecs10', + [165663265] = 'ch3_14_coastdecs11', + [478967674] = 'ch3_14_coastdecs12', + [564878859] = 'ch3_14_foam_01', + [58007967] = 'ch3_14_foam_02', + [335104871] = 'ch3_14_landdcal_01', + [-448444356] = 'ch3_14_landm_00', + [-257268043] = 'ch3_14_landm_00b', + [1079148117] = 'ch3_14_landm_01', + [177214161] = 'ch3_14_landm_02', + [1880975325] = 'ch3_14_landm_02b', + [1116996280] = 'ch3_14_landm_03', + [1414702645] = 'ch3_14_landm_04', + [409421555] = 'ch3_14_landm_05_decal', + [1728039823] = 'ch3_14_landm_05', + [-1535685309] = 'ch3_14_lnddecs01', + [1067123596] = 'ch3_14_lnddecs03', + [-549731633] = 'ch3_14_lnddecs04', + [-1859606870] = 'ch3_14_lnddecs05', + [-1140097937] = 'ch3_14_lnddecs06', + [-1497017885] = 'ch3_14_lnddecs07', + [643879192] = 'ch3_14_lnddecs08', + [1347704042] = 'ch3_14_lnddecs10', + [415000007] = 'ch3_14_lnddecs11', + [-427196062] = 'ch3_14_lnddecs12', + [-700023784] = 'ch3_14_rocks_00', + [-1055632972] = 'ch3_14_rocks_01', + [1213661262] = 'ch3_14_rocks_015', + [616118543] = 'ch3_14_rocks_017', + [-1857252808] = 'ch3_14_rocks_019', + [759613690] = 'ch3_14_rocks_020', + [-1535141689] = 'ch3_14_rocks_04', + [-1236714406] = 'ch3_14_rocks_05', + [-906402886] = 'ch3_14_rocks_06', + [1864609292] = 'ch3_14_rocks_09', + [399474809] = 'ch3_14_rocks_10', + [167634138] = 'ch3_14_rocks_11', + [-62142090] = 'ch3_14_rocks_12', + [-296669823] = 'ch3_14_rocks_13', + [208246685] = 'ch3_14_sea_uw_dec_00', + [1750060904] = 'ch3_14_sea_uw_dec_02', + [1419913229] = 'ch3_14_sea_uw_dec_03', + [1130694035] = 'ch3_14_sea_uw_dec_04', + [1503311103] = 'ch3_14_sea_uw1_00', + [1270585665] = 'ch3_14_sea_uw1_01', + [-1363026096] = 'ch3_14_sea_uw1_02', + [2132508676] = 'ch3_14_sea_uw1_03', + [1916921425] = 'ch3_14_sea_uw1_04', + [-380574295] = 'ch3_14_sea_uw1_05_lod', + [1689307951] = 'ch3_14_sea_uw1_05', + [2047938574] = 'ch3_14_sea_uw1_06_lod', + [-409153275] = 'ch3_14_sea_uw1_06', + [6465491] = 'ch3_14b_bch_uwcliff1', + [-241726915] = 'ch3_14b_bch_uwcliff2', + [1828124578] = 'ch3_14b_cliff_10a', + [1522357039] = 'ch3_14b_cliff_10b', + [1753661745] = 'ch3_14b_cst_cbed008', + [-1637274379] = 'ch3_14b_cst_cbed009', + [153364565] = 'ch3_14b_cst_cbed01', + [-294587669] = 'ch3_14b_cst_cbed04', + [-1628203877] = 'ch3_14b_cst_cbedbb', + [1907228421] = 'ch3_14b_cst_land01', + [1534579353] = 'ch3_14b_cst_land02', + [222410286] = 'ch3_14b_cst_land03', + [-149780016] = 'ch3_14b_cst_land04', + [1972595899] = 'ch3_14b_cstbeach_01', + [-1569077625] = 'ch3_14b_cstbeach_02', + [-567558678] = 'ch3_14b_cstbeach_04', + [-863298903] = 'ch3_14b_cstbeach_05', + [-716198858] = 'ch3_14b_cstbeach_06', + [1627500299] = 'ch3_14b_dcl02a', + [1104310441] = 'ch3_14b_dcl02b', + [341218738] = 'ch3_14b_dcl02c', + [816307884] = 'ch3_14b_dcl07b', + [1510355304] = 'ch3_14b_dcl07c', + [-1042139157] = 'ch3_14b_decss01', + [-1349086380] = 'ch3_14b_decss02', + [-935279448] = 'ch3_14b_decss04', + [48740869] = 'ch3_14b_decss06', + [-1470036747] = 'ch3_14b_decss09', + [562206698] = 'ch3_14b_decss12', + [906412274] = 'ch3_14b_decss14', + [1348924858] = 'ch3_14b_decss16', + [1125374740] = 'ch3_14b_decss17', + [-755213217] = 'ch3_14b_decss23', + [-459472992] = 'ch3_14b_decss24', + [1697054902] = 'ch3_14b_decss25', + [2005542268] = 'ch3_14b_decss26', + [-1581024786] = 'ch3_14b_decss27', + [872029785] = 'ch3_14b_decss28', + [1142931108] = 'ch3_14b_decss29', + [-798160627] = 'ch3_14b_decss30', + [1277362295] = 'ch3_14b_decss31', + [-1162289755] = 'ch3_14b_decss32', + [-1470285586] = 'ch3_14b_decss33', + [-1750132846] = 'ch3_14b_decss34', + [927848145] = 'ch3_14b_decss35', + [646395204] = 'ch3_14b_decss36', + [347902383] = 'ch3_14b_decss37', + [1686023870] = 'ch3_14b_decss52', + [1468568786] = 'ch3_14b_decss53', + [-1983710906] = 'ch3_14b_decss54', + [-415583168] = 'ch3_14b_decss55', + [-107336900] = 'ch3_14b_foamwet_01', + [991425023] = 'ch3_14b_foamwet_02_a', + [684248417] = 'ch3_14b_foamwet_02_b', + [513292544] = 'ch3_14b_foamwet_02_c', + [-156654129] = 'ch3_14b_foamwet_03', + [1629518523] = 'ch3_14b_foamwet_04', + [1397088006] = 'ch3_14b_foamwet_05', + [1035121632] = 'ch3_14b_foamwet_06', + [738267261] = 'ch3_14b_foamwet_07', + [631937000] = 'ch3_14b_landm_00', + [-1553460383] = 'ch3_14b_landm_01', + [1704112474] = 'ch3_14b_landm_010', + [-658276841] = 'ch3_14b_landm_02', + [-1131133511] = 'ch3_14b_landm_03', + [-358407718] = 'ch3_14b_landm_04', + [1879059602] = 'ch3_14b_landm_05', + [1573750829] = 'ch3_14b_landm_06', + [-2053187633] = 'ch3_14b_landm_07', + [-744614841] = 'ch3_14b_landm_07b', + [-1283345516] = 'ch3_14b_landm_08', + [1261150672] = 'ch3_14b_rck_01', + [1090686334] = 'ch3_14b_rck_02', + [1704580780] = 'ch3_14b_rck_03', + [326021719] = 'ch3_14b_rck_04', + [-1815006434] = 'ch3_14b_rck_05', + [-1984815392] = 'ch3_14b_rck_06', + [-1236994043] = 'ch3_14b_rck_07', + [-1643067491] = 'ch3_14b_rck_08', + [-1132821396] = 'ch3_14b_rck_09', + [255568081] = 'ch3_14b_rck_10', + [-1876088138] = 'ch3_14b_rck_11', + [-1500978745] = 'ch3_14b_sanddec_a', + [312850951] = 'ch3_14b_sanddec_b', + [-125925959] = 'ch3_14b_sanddec_c', + [2060145578] = 'ch3_14b_sea_1123', + [629662844] = 'ch3_14b_sea_1123b', + [-1993280853] = 'ch3_14b_sea_n00_lod', + [-1566826144] = 'ch3_14b_sea_n00', + [705371263] = 'ch3_14b_sea_n01_lod', + [549854638] = 'ch3_14b_sea_n01', + [2049035173] = 'ch3_14b_sea_n20_lod', + [1550276003] = 'ch3_14b_sea_n20', + [1702343841] = 'ch3_14b_sea_nd1', + [1683764543] = 'ch3_14b_sea_nd122', + [1873987863] = 'ch3_14b_sea_nd2', + [-2071274622] = 'ch3_14b_sea_seawd1', + [-1831885056] = 'ch3_14b_sea_uw_dec_00', + [411972251] = 'ch3_14b_sea_uw_dec_01', + [130715924] = 'ch3_14b_sea_uw_dec_02', + [-100076143] = 'ch3_14b_sea_uw_dec_03', + [-750082027] = 'ch3_14b_sea_uw_dec_04', + [1434922124] = 'ch3_14b_sea_uw_dec_05', + [1086456578] = 'ch3_14b_sea_uw_dec_06', + [856975271] = 'ch3_14b_sea_uw_dec_07', + [744249911] = 'ch3_14b_sea_uw_dec_08', + [-1421780993] = 'ch3_14b_sea_uw_dec_09', + [732453871] = 'ch3_14b_sea_uw_dec_10', + [-192320078] = 'ch3_14b_sea_uw_dec_11', + [-1102905050] = 'ch3_14b_sea_uw_dec_12', + [403715263] = 'ch3_14b_sea_uw_dec_13', + [1909450813] = 'ch3_14b_sea_uw_dec_14', + [932410309] = 'ch3_14b_sea_uw_dec_15', + [-793075443] = 'ch3_14b_sea_uw1_00', + [780164267] = 'ch3_14b_sea_uw1_01', + [406925357] = 'ch3_14b_sea_uw1_02', + [201496496] = 'ch3_14b_sea_uw1_03', + [-165254152] = 'ch3_14b_sea_uw1_04', + [-405483691] = 'ch3_14b_sea_uw1_05', + [-778329373] = 'ch3_14b_sea_uw1_06', + [-1018100146] = 'ch3_14b_sea_uw1_07', + [-217283607] = 'ch3_14b_sea_uw1_08_lod', + [-1361126038] = 'ch3_14b_sea_uw1_08', + [-1123059257] = 'ch3_14b_sea_uw1_09', + [2107097887] = 'ch3_14b_sea_uw1_10_lod', + [1834703692] = 'ch3_14b_sea_uw1_10', + [2078079055] = 'ch3_14b_sea_uw1_11', + [-1909285638] = 'ch3_14b_sea_uw1_12', + [-1738034844] = 'ch3_14b_sea_uw1_13', + [-1435085439] = 'ch3_14b_sea_uw1_14', + [-994539003] = 'ch3_14b_sea_uw1_15', + [-310015774] = 'ch3_14b_sea_uw1_16_lod', + [-685101336] = 'ch3_14b_sea_uw1_16', + [-1960223518] = 'ch3_14b_sea_uw1_17_lod', + [-858875339] = 'ch3_14b_sea_uw1_17', + [-553632104] = 'ch3_14b_sea_uw1_18', + [-377662574] = 'ch3_14b_sea_uw1_19', + [-60656080] = 'ch3_14b_sea_uw1_20', + [544294727] = 'ch3_14b_sea_uw1_21_lod', + [-784588828] = 'ch3_14b_sea_uw1_21', + [-54189319] = 'ch3_14b_sea_wrk00', + [-662447585] = 'ch3_14b_sea_wrk01', + [-965560835] = 'ch3_14b_sea_wrk02', + [-1272704672] = 'ch3_14b_sea_wrk03', + [297585808] = 'ch3_14b_sea_wrk04', + [-1917205368] = 'ch3_14b_sea_wrk05', + [2116724074] = 'ch3_14b_sea_wrk06', + [1818821095] = 'ch3_14b_sea_wrk07', + [-356122973] = 'ch3_14b_sea_wrk08', + [1790606986] = 'ch3_14b_sea_wrk09', + [156482810] = 'ch3_14b_sea_wrk10', + [1700394257] = 'ch3_14b_sea_wrk12', + [-92901990] = 'ch3_lod_1_2_slod3', + [1290592802] = 'ch3_lod_101114b_slod3', + [-1194309971] = 'ch3_lod_11b13_slod3', + [936194584] = 'ch3_lod_1414b2_slod3', + [250163260] = 'ch3_lod_3_4_slod3', + [-473353655] = 'ch3_lod_6_10_slod3', + [214339677] = 'ch3_lod_789_12_slod3', + [-1164053467] = 'ch3_lod_emissive_slod3', + [701992] = 'ch3_lod_emissive1_slod3', + [-979502700] = 'ch3_lod_emissive3_slod3', + [475124433] = 'ch3_lod_water_slod3', + [1985399133] = 'ch3_lod_weir_01_slod3', + [-1844520964] = 'ch3_railway_00', + [-1102335895] = 'ch3_railway_01', + [1998758436] = 'ch3_railway_02', + [1586983170] = 'ch3_railway_06', + [1281641628] = 'ch3_railway_07', + [1754918582] = 'ch3_railway_08_b', + [1109571609] = 'ch3_railway_08', + [839423973] = 'ch3_railway_09', + [134300563] = 'ch3_railway_10', + [969811760] = 'ch3_railway_11', + [-1580697821] = 'ch3_railway_12', + [-1642118603] = 'ch3_railway_bridge_00', + [-1666381691] = 'ch3_railway_bridge01_decal', + [-1910821238] = 'ch3_railway_bridge01_rl1_lod', + [1968814374] = 'ch3_railway_bridge01_rl1', + [2000662749] = 'ch3_railway_bridge01_rl2_lod', + [-2007671011] = 'ch3_railway_bridge01_rl2', + [942917036] = 'ch3_railway_bridge01', + [2132585586] = 'ch3_railwayslod2', + [1144937047] = 'ch3_railwyb_00', + [1393653757] = 'ch3_railwyb_01', + [166553014] = 'ch3_railwyb_02', + [395510017] = 'ch3_railwyb_03', + [2080229825] = 'ch3_railwyb_04', + [1655496824] = 'ch3_railwyb_04b', + [-1974540701] = 'ch3_railwyb_05', + [-233275803] = 'ch3_railwyb_05b', + [1596919844] = 'ch3_railwyb_06', + [1843998104] = 'ch3_railwyb_07', + [471453513] = 'ch3_railwyb_08_b', + [-1303071102] = 'ch3_railwyb_08', + [-590114276] = 'ch3_railwyb_bridge_01_a', + [1333262171] = 'ch3_railwyb_bridge_01_b', + [163805982] = 'ch3_railwyb_bridge_01', + [-545735804] = 'ch3_railwyb_bridge_01d', + [2078105163] = 'ch3_railwyb_bridge_02_a', + [-1991640796] = 'ch3_railwyb_bridge_02_b', + [-1031017553] = 'ch3_railwyb_bridge_02_c', + [-683796972] = 'ch3_railwyb_bridge_02', + [-1250334002] = 'ch3_railwyb_bridge_02d', + [2042269003] = 'ch3_railwyb_bridge_04_b', + [-1622301136] = 'ch3_railwyb_bridge_04', + [648185968] = 'ch3_railwyc_00', + [892904860] = 'ch3_railwyc_01', + [-65752235] = 'ch3_railwyc_02', + [-875306769] = 'ch3_railwyc_03_rails', + [1490971879] = 'ch3_railwyc_03', + [508557259] = 'ch3_railwyc_04', + [-333376658] = 'ch3_railwyc_05', + [-1291116221] = 'ch3_railwyc_06', + [-1759017564] = 'ch3_railwyc_bridge_01_dcl', + [339907733] = 'ch3_railwyc_bridge_01_rl', + [3576390] = 'ch3_railwyc_bridge_01', + [-639613770] = 'ch3_railwyc_bridge_02_dcl', + [1853240758] = 'ch3_railwyc_bridge_02_rl', + [-223545549] = 'ch3_railwyc_bridge_02', + [1996851362] = 'ch3_railwyc_bridge_05_dcl', + [-1719081274] = 'ch3_railwyc_bridge_05_rl', + [939131344] = 'ch3_railwyc_bridge_05', + [-1018415528] = 'ch3_railwyc_bridge_07_dcl', + [438709930] = 'ch3_railwyc_bridge_07_rl', + [1338782072] = 'ch3_railwyc_bridge_07', + [-1529412948] = 'ch3_rd1_03', + [-1458533613] = 'ch3_rd1_05', + [2143521818] = 'ch3_rd1_05b', + [196628577] = 'ch3_rd1_06', + [-34425642] = 'ch3_rd1_07', + [-266036934] = 'ch3_rd1_08', + [-988898326] = 'ch3_rd1_09_rl01', + [-1232470303] = 'ch3_rd1_09_rl02', + [-525315283] = 'ch3_rd1_09_rl03', + [-755058742] = 'ch3_rd1_09_rl04', + [1845685720] = 'ch3_rd1_09_rl05', + [1645018393] = 'ch3_rd1_09', + [111856026] = 'ch3_rd1_15', + [405302441] = 'ch3_rd1_16', + [58082117] = 'ch3_rd1_17', + [887957026] = 'ch3_rd1_18', + [1604090752] = 'ch3_rd1_19', + [-1755024677] = 'ch3_rd1_20', + [1042759778] = 'ch3_rd1_25', + [462650171] = 'ch3_rd1_27', + [800426894] = 'ch3_rd1_27b', + [-1601075923] = 'ch3_rd1_28', + [-823631398] = 'ch3_rd1_29', + [1943315996] = 'ch3_rd1_30', + [-1926251105] = 'ch3_rd1_armco_02_02_lod', + [1168197175] = 'ch3_rd1_armco_02_02', + [1651471192] = 'ch3_rd1_armco_02_03_lod', + [-198827198] = 'ch3_rd1_armco_02_03', + [-1462891891] = 'ch3_rd1_armco_02_lod', + [1952326500] = 'ch3_rd1_armco_02', + [1733540995] = 'ch3_rd1_armco_04_02_lod', + [-819832362] = 'ch3_rd1_armco_04_02', + [354210304] = 'ch3_rd1_armco_04_03_lod', + [-1546583244] = 'ch3_rd1_armco_04_03', + [1930088003] = 'ch3_rd1_armco_04_lod', + [-1614087619] = 'ch3_rd1_armco_04', + [1035351580] = 'ch3_rd1_armco_04b_02_lod', + [1612510359] = 'ch3_rd1_armco_04b_02', + [-1513846034] = 'ch3_rd1_armco_04b_03_lod', + [1370970060] = 'ch3_rd1_armco_04b_03', + [-1083358143] = 'ch3_rd1_armco_04b_04_lod', + [1124416104] = 'ch3_rd1_armco_04b_04', + [-1776906397] = 'ch3_rd1_armco_04b_lod', + [-1987801805] = 'ch3_rd1_armco_04b', + [-96636930] = 'ch3_rd1_armco_2a_02_lod', + [-7676857] = 'ch3_rd1_armco_2a_02', + [1026205969] = 'ch3_rd1_armco_2a_03_lod001', + [-1666574713] = 'ch3_rd1_armco_2a_03', + [-813575356] = 'ch3_rd1_armco_2a_lod', + [-270328664] = 'ch3_rd1_armco_2a', + [-915957104] = 'ch3_rd1_armco_2b_02_lod001', + [-49551853] = 'ch3_rd1_armco_2b_02', + [1179187443] = 'ch3_rd1_armco_2b_03_lod', + [863752946] = 'ch3_rd1_armco_2b_03', + [-1583743126] = 'ch3_rd1_armco_2b_lod001', + [-641404820] = 'ch3_rd1_armco_2b', + [-1092043802] = 'ch3_rd1_bleand_redone001', + [1066217882] = 'ch3_rd1_dec_00b', + [-1139350757] = 'ch3_rd1_dec_01', + [-1195189133] = 'ch3_rd1_dec_02', + [1720825878] = 'ch3_rd1_dec_03', + [1424135352] = 'ch3_rd1_dec_04', + [493870923] = 'ch3_rd1_dust_dcl_03b', + [-908686852] = 'ch3_rd1_fwysgn_01_lod', + [1575509998] = 'ch3_rd1_fwysgn_01bovly', + [1276162504] = 'ch3_rd1_fwysgn_01ovly', + [-1082763872] = 'ch3_rd1_fwysgn_1b_lod', + [-246460967] = 'ch3_rd1_fwysgnfrm_01_lod', + [-1021398018] = 'ch3_rd1_fwysgnfrm_1b_lod', + [-1455856580] = 'ch3_rd1_fwysign_01', + [1464589359] = 'ch3_rd1_fwysign_01b', + [1181108460] = 'ch3_rd1_fwysignfrm_01', + [1013214240] = 'ch3_rd1_fwysignfrm_01b', + [1803197539] = 'ch3_rd1_props_ch3_11_spline049', + [1793663804] = 'ch3_rd1_props_ch3_11_spline050', + [1074515310] = 'ch3_rd1_props_ch3_11_spline051', + [-1788086207] = 'ch3_rd1_props_ch3_11_spline052', + [1562216357] = 'ch3_rd1_props_ch3_11_spline053', + [-1309626038] = 'ch3_rd1_props_ch3_11_spline054', + [-2101619999] = 'ch3_rd1_props_ch3_11_spline055', + [-1107736229] = 'ch3_rd1_props_ch3_11_spline056', + [-1541335637] = 'ch3_rd1_props_ch3_11_spline057', + [-1082504119] = 'ch3_rd1_props_ch3_11_spline058', + [-817959982] = 'ch3_rd1_props_ch3_11_spline059', + [-1617962272] = 'ch3_rd1_props_ch3_11_spline060', + [58827462] = 'ch3_rd1_props_ch3_11_spline061', + [-220528263] = 'ch3_rd1_props_ch3_11_spline062', + [1761996237] = 'ch3_rd1_props_ch3_11_spline063', + [1449805974] = 'ch3_rd1_props_ch3_11_spline064', + [-1166536524] = 'ch3_rd1_props_ch3_11_spline065', + [-373395648] = 'ch3_rd1_props_ch3_11_spline066', + [537811935] = 'ch3_rd1_props_ch3_11_spline067', + [-841435275] = 'ch3_rd1_props_ch3_11_spline068', + [-1313046699] = 'ch3_rd1_props_ch3_11_spline069', + [-1585914414] = 'ch3_rd1_props_ch3_11_spline070', + [-111145565] = 'ch3_rd1_props_ch3_11_spline071', + [656533798] = 'ch3_rd1_props_ch3_11_spline072', + [1845786346] = 'ch3_rd1_props_ch3_11_spline073', + [1539494503] = 'ch3_rd1_props_ch3_11_spline074', + [-1072129259] = 'ch3_rd1_props_ch3_11_spline075', + [-355012463] = 'ch3_rd1_props_ch3_11_spline076', + [331563625] = 'ch3_rd1_props_ch3_11_spline077', + [-787104497] = 'ch3_rd1_props_ch3_11_spline078', + [-1526635265] = 'ch3_rd1_props_ch3_11_spline079', + [848070559] = 'ch3_rd1_props_ch3_11_spline080', + [-2019708480] = 'ch3_rd1_props_ch3_11_spline081', + [-1775350047] = 'ch3_rd1_props_ch3_11_spline083', + [-1545278898] = 'ch3_rd1_props_ch3_11_spline084', + [-1311308214] = 'ch3_rd1_props_ch3_11_spline085', + [-1073569119] = 'ch3_rd1_props_ch3_11_spline086', + [-582099657] = 'ch3_rd1_props_ch3_11_spline087', + [-341935656] = 'ch3_rd1_props_ch3_11_spline088', + [-235829634] = 'ch3_rd1_props_ch3_11_spline089', + [1169665301] = 'ch3_rd1_props_ch3_11_spline090', + [-1922712464] = 'ch3_rd1_props_ch3_11_spline091', + [1656121106] = 'ch3_rd1_props_ch3_11_spline092', + [-1445759669] = 'ch3_rd1_props_ch3_11_spline093', + [-1743203882] = 'ch3_rd1_props_ch3_11_spline094', + [1829956218] = 'ch3_rd1_props_combo_01_lod', + [1624354314] = 'ch3_rd1_props_combo01_01_lod', + [-477421703] = 'ch3_rd1_props_wires_01', + [-1341297858] = 'ch3_rd1_props_wires_60', + [2117207944] = 'ch3_rd1_props_wires_61', + [-749063721] = 'ch3_rd1_props_wires_62', + [825945499] = 'ch3_rd1_props_wires_63', + [-148440720] = 'ch3_rd1_props_wires_64', + [-994470762] = 'ch3_rd1_props_wires_65', + [-92438499] = 'ch3_rd1_props_wires_66', + [204088182] = 'ch3_rd1_props_wires_67', + [568348386] = 'ch3_rd1_props_wires_68', + [798353997] = 'ch3_rd1_props_wires_69', + [-403514392] = 'ch3_rd1_props_wires_70', + [-105283723] = 'ch3_rd1_props_wires_71', + [57709287] = 'ch3_rd1_props_wires_72', + [355087962] = 'ch3_rd1_props_wires_73', + [517753278] = 'ch3_rd1_props_wires_74', + [814673187] = 'ch3_rd1_props_wires_75', + [982122777] = 'ch3_rd1_props_wires_76', + [1280648743] = 'ch3_rd1_rd_dust_dcl_01', + [1966602164] = 'ch3_rd1_rd_dust_dcl_02', + [1489190603] = 'ch3_rd1_rd_dust_dcl_04', + [329352252] = 'ch3_rd1_rd_dust_dcl_3', + [-527213011] = 'ch3_rd1_wal_02', + [-1429952157] = 'ch3_rd1_wal_d00', + [-1735752465] = 'ch3_rd1_wal_d01', + [-946216179] = 'ch3_rd1_wal_d02', + [829699984] = 'ch3_rd1_wal_d03', + [525046591] = 'ch3_rd1_wal_d04', + [-823393319] = 'ch3_rd1a_05', + [1085892474] = 'ch3_rd1a_06', + [-530651988] = 'ch3_rd1a_07_ov', + [846678774] = 'ch3_rd1a_07', + [-389769644] = 'ch3_rd1a_08_ov', + [605859393] = 'ch3_rd1a_08', + [-1880226249] = 'ch3_rd1a_09_ov', + [-1475037653] = 'ch3_rd1a_09', + [-1423260741] = 'ch3_rd1a_10', + [2012188017] = 'ch3_rd1a_11_ov', + [-1173266040] = 'ch3_rd1a_11', + [944522363] = 'ch3_rd1a_12_ov', + [-1899820308] = 'ch3_rd1a_12', + [-731664220] = 'ch3_rd1a_13_ov', + [257395735] = 'ch3_rd1a_13', + [-222693892] = 'ch3_rd1a_14_ov', + [497625274] = 'ch3_rd1a_14', + [-1626933142] = 'ch3_rd1a_15_ov', + [84735870] = 'ch3_rd1a_15', + [-790396278] = 'ch3_rd1a_16_ov', + [-751103013] = 'ch3_rd1a_16', + [1448942113] = 'ch3_rd1a_17', + [839643491] = 'ch3_rd1a_18_ov', + [1559504719] = 'ch3_rd1a_18', + [913682918] = 'ch3_rd1a_18b_rl01', + [671552777] = 'ch3_rd1a_18b_rl02', + [1244354873] = 'ch3_rd1a_18b_rl03', + [1136151635] = 'ch3_rd1a_18b_rl04', + [549495482] = 'ch3_rd1a_18b', + [846415391] = 'ch3_rd1a_18c', + [719209252] = 'ch3_rd1a_19', + [1562486414] = 'ch3_rd1a_20', + [-1509073002] = 'ch3_rd1a_21_ov', + [-607575081] = 'ch3_rd1a_21', + [-257839013] = 'ch3_rd1a_21b_br01_lod', + [-912722967] = 'ch3_rd1a_21b_br01', + [-1691441215] = 'ch3_rd1a_21b', + [-1316106399] = 'ch3_rd1a_22', + [1817123874] = 'ch3_rd1a_23_ov', + [-1002638145] = 'ch3_rd1a_23', + [1857400025] = 'ch3_rd1a_24_ov', + [-1844506524] = 'ch3_rd1a_24', + [-2146353974] = 'ch3_rd1a_25_ov', + [337810573] = 'ch3_rd1a_25', + [1673653620] = 'ch3_rd1a_26_ov', + [571814002] = 'ch3_rd1a_26', + [-806160678] = 'ch3_rd1a_27_ov', + [-123675258] = 'ch3_rd1a_27', + [-524307828] = 'ch3_rd1a_28_ov', + [109869405] = 'ch3_rd1a_28', + [-1954663426] = 'ch3_rd1a_29_ov', + [1295648443] = 'ch3_rd1a_29', + [1306675964] = 'ch3_rd1a_30_ov', + [1441533551] = 'ch3_rd1a_30', + [-1427692140] = 'ch3_rd1a_31_ov', + [1662392444] = 'ch3_rd1a_32_ov', + [282841207] = 'ch3_rd1a_33_ov', + [2090947442] = 'ch3_rd1a_34_rl01', + [-1987678916] = 'ch3_rd1a_34_rl02', + [1477282379] = 'ch3_rd1a_34_rl03', + [1693164551] = 'ch3_rd1a_34_rl04', + [-1288257380] = 'ch3_rd1a_34_rl05', + [1088478182] = 'ch3_rd1a_34_rl06', + [-224018575] = 'ch3_rd1a_34_rl07', + [461115677] = 'ch3_rd1a_34_rl08', + [-2067141682] = 'ch3_rd1a_34', + [1236506573] = 'ch3_rd1a_35_rl01', + [1466774336] = 'ch3_rd1a_35_rl02', + [1221105139] = 'ch3_rd1a_35_rl03', + [1450586446] = 'ch3_rd1a_35_rl04', + [1696878250] = 'ch3_rd1a_35_rl05', + [1385072472] = 'ch3_rd1a_35', + [232619638] = 'ch3_rd1a_99_ov', + [799061614] = 'ch3_rd1a_decal1', + [1038570235] = 'ch3_rd1a_decal2', + [-1252452191] = 'ch3_rd1a_gov_sign_01_lod', + [-443858705] = 'ch3_rd1a_gov_sign_01', + [802806220] = 'ch3_rd1a_props_ch3_rd1a_ss_spline004', + [1023669280] = 'ch3_rd1a_props_ch3_rd1a_ss_spline005', + [188682391] = 'ch3_rd1a_props_ch3_rd1a_ss_spline006', + [589211396] = 'ch3_rd1a_props_elec_w_127', + [358648712] = 'ch3_rd1a_props_elec_w_128', + [1302181921] = 'ch3_rd1a_props_prop01_slod', + [-1152738719] = 'ch3_rd1a_props_prop02_01_lod', + [1297930769] = 'ch3_rd1a_props_prop03_01_lod', + [-972581623] = 'ch3_rd1a_props_prop04_01_lod', + [-109172317] = 'ch3_rd1a_props_prop05_01_lod', + [643303315] = 'ch3_rd1a_props_prop06_01_lod', + [109413176] = 'ch3_rd1a_props_prop06_02_lod', + [364878985] = 'ch3_rd1a_props_prop06_03_lod', + [289523182] = 'ch3_rd1a_props_prop07_01_lod', + [-1603390596] = 'ch3_rd1a_props_prop07_02_lod', + [-610674519] = 'ch3_rd1a_props_prop07_03_lod', + [-1206167873] = 'ch3_rd1a_props_prop08_01_lod', + [187138787] = 'ch3_rd1a_props_prop08_02_lod', + [-1133562891] = 'ch3_rd1a_props_prop08_03_lod', + [1208507783] = 'ch3_rd1a_props_prop09_02_lod', + [164365917] = 'ch3_rd1a_props_prop09_03_lod', + [-936539744] = 'ch3_rd1a_props_prop09_04_lod', + [353628058] = 'ch3_rd1a_props_prop10_01_lod', + [-1747458193] = 'ch3_rd1a_props_prop10_02_lod', + [239224267] = 'ch3_rd1a_props_prop10_03_lod', + [700800478] = 'ch3_rd1a_props_py_w01', + [928315649] = 'ch3_rd1a_props_py_w02', + [-870374765] = 'ch3_rd1a_props_py_w03', + [-1039528343] = 'ch3_rd1a_props_py_w04', + [-256119860] = 'ch3_rd1a_props_py_w05', + [-427960496] = 'ch3_rd1a_props_py_w06', + [-1830309851] = 'ch3_rd1a_props_py_w07', + [-1710801308] = 'ch3_rd1a_props_py_w08', + [-2011587959] = 'ch3_rd1a_props_py_w09', + [1415262189] = 'ch3_rd1a_props_py_w10', + [-1729742590] = 'ch3_rd1a_props_py_w13', + [-1958437441] = 'ch3_rd1a_props_py_w14', + [-322215733] = 'ch3_rd1a_props_py_w15', + [2059969214] = 'ch3_rd1a_props_spline_elec023', + [2028576512] = 'ch3_rd1a_props_spline_elec024', + [-799617571] = 'ch3_rd1a_props_spline_elec025', + [-32724664] = 'ch3_rd1a_props_spline_elec026', + [-993511744] = 'ch3_rd1a_props_spline_elec027', + [-1299279283] = 'ch3_rd1a_props_spline_elec028', + [350082794] = 'ch3_rd1a_props_spline_elec029', + [-248343884] = 'ch3_rd1a_props_spline_elec030', + [363879343] = 'ch3_rd1a_props_spline_elec032', + [630979506] = 'ch3_rd1a_props_spline_elec033', + [974398630] = 'ch3_rd1a_props_spline_elec034', + [1227539155] = 'ch3_rd1a_props_spline_elec035', + [1604317117] = 'ch3_rd1a_props_spline_elec036', + [-494537337] = 'ch3_rd1a_props_spline_elec037', + [-257912388] = 'ch3_rd1a_props_spline_elec038', + [97172496] = 'ch3_rd1a_props_spline_elec039', + [1168424703] = 'ch3_rd1a_props_spline_elec040', + [-1087327723] = 'ch3_rd1a_props_spline_elec041', + [-1424258581] = 'ch3_rd1a_props_spline_elec042', + [-589664920] = 'ch3_rd1a_props_spline_elec043', + [-962576140] = 'ch3_rd1a_props_spline_elec044', + [-1918710066] = 'ch3_rd1a_props_spline_elec045', + [-884879238] = 'ch3_rd1a_props_spline_tele01', + [-1097582817] = 'ch3_rd1a_props_spline_tele02', + [-1310384703] = 'ch3_rd1a_props_spline_tele03', + [53395539] = 'ch3_rd1a_props_spline_tele04', + [-195747168] = 'ch3_rd1a_props_spline_tele05', + [-410318580] = 'ch3_rd1a_props_spline_tele06', + [-99308013] = 'ch3_rd1a_props_spline_tele07', + [-322333827] = 'ch3_rd1a_props_spline_tele08', + [1584330438] = 'ch3_rd1a_props_spline_tele09', + [223138303] = 'ch3_rd1a_props_spline_tele10', + [516846850] = 'ch3_rd1a_props_spline_tele11', + [-1194874638] = 'ch3_rd1a_props_spline_tele12', + [882024586] = 'ch3_rd1a_props_spline_tele13', + [1179534337] = 'ch3_rd1a_props_spline_tele14', + [1477699468] = 'ch3_rd1a_props_spline_tele15', + [-236905688] = 'ch3_rd1a_props_spline_tele16', + [-1913498808] = 'ch3_rd1a_props_spline_tele17', + [-1615333677] = 'ch3_rd1a_props_spline_tele18', + [964700769] = 'ch3_rd1a_props_spline_tele19', + [384256728] = 'ch3_rd1a_props_spline_tele20', + [1163044782] = 'ch3_rd1a_props_spline_tele21', + [855966483] = 'ch3_rd1a_props_spline_tele22', + [-1289977020] = 'ch3_rd1a_props_spline_tele23', + [-513943890] = 'ch3_rd1a_sgn_sanfwy_01_lod', + [-400381952] = 'ch3_rd1a_sgn_sanfwy_01', + [-1090035789] = 'ch3_rd1a_wal00', + [-1665819884] = 'ch3_rd1a_wal05', + [1742789942] = 'ch3_rd1b_00', + [-36491671] = 'ch3_rd1b_01b', + [-532876483] = 'ch3_rd1b_01c', + [980877923] = 'ch3_rd1b_02', + [925572576] = 'ch3_rd1b_10', + [1156233567] = 'ch3_rd1b_11', + [-402030690] = 'ch3_rd1b_12', + [-173466915] = 'ch3_rd1b_13', + [175785087] = 'ch3_rd1b_14', + [-1344408123] = 'ch3_rd1b_armco_01_lod', + [1473815908] = 'ch3_rd1b_armco_01', + [-1093553067] = 'ch3_rd1b_armco_02_lod', + [1190921131] = 'ch3_rd1b_armco_02', + [-973431177] = 'ch3_rd1b_armco_03_lod', + [2083941919] = 'ch3_rd1b_armco_03', + [-1841020506] = 'ch3_rd1b_armco_04_lod', + [1213400669] = 'ch3_rd1b_armco_04', + [-853569889] = 'ch3_rd1b_armco_05_lod', + [1988682440] = 'ch3_rd1b_armco_05', + [-1437592547] = 'ch3_rd1b_armco_06_lod', + [1768409222] = 'ch3_rd1b_armco_06', + [-1784939987] = 'ch3_rd1b_armco_07_lod', + [454405091] = 'ch3_rd1b_armco_07', + [1862544542] = 'ch3_rd1b_armco_08_lod', + [262509827] = 'ch3_rd1b_armco_08', + [1613505739] = 'ch3_rd1b_armco_09_lod', + [1046966918] = 'ch3_rd1b_armco_09', + [535959452] = 'ch3_rd1b_armco_10_lod', + [1105883536] = 'ch3_rd1b_armco_10', + [-53850326] = 'ch3_rd1b_armco_11_lod', + [943414834] = 'ch3_rd1b_armco_11', + [-1085418632] = 'ch3_rd1b_armco_12_lod', + [1703819479] = 'ch3_rd1b_armco_12', + [1761316748] = 'ch3_rd1b_armco_13_lod', + [2076075319] = 'ch3_rd1b_armco_13', + [-787476258] = 'ch3_rd1b_armco_14_lod', + [-1403763110] = 'ch3_rd1b_armco_14', + [-537495973] = 'ch3_rd1b_armco_15_lod', + [-1773790658] = 'ch3_rd1b_armco_15', + [-988660995] = 'ch3_rd1b_armco_16_lod', + [-806220395] = 'ch3_rd1b_armco_16', + [-1452701345] = 'ch3_rd1b_armco_17_lod', + [-641392325] = 'ch3_rd1b_armco_17', + [288996878] = 'ch3_rd1b_armco_18_lod', + [-207760148] = 'ch3_rd1b_armco_18', + [-213579790] = 'ch3_rd1b_armco_19_lod', + [-45225908] = 'ch3_rd1b_armco_19', + [949878491] = 'ch3_rd1b_armco_20_lod', + [-107355628] = 'ch3_rd1b_armco_20', + [829573348] = 'ch3_rd1b_armco_21_lod', + [199132833] = 'ch3_rd1b_armco_21', + [-1035065560] = 'ch3_rd1b_curb_', + [603709941] = 'ch3_rd1b_dcl_01', + [364725624] = 'ch3_rd1b_dcl_02', + [2063798218] = 'ch3_rd1b_dcl_03', + [1566543395] = 'ch3_rd1b_dcl_jn_01', + [2023907654] = 'ch3_rd1b_dus_02', + [1085252527] = 'ch3_rd1b_dus_lb_003', + [-747889953] = 'ch3_rd1b_dus_lb_01', + [-449986974] = 'ch3_rd1b_dus_lb_02', + [1619560116] = 'ch3_rd1b_dust_dcl_01', + [525742074] = 'ch3_rd1b_dust_rd_dcl_01', + [-945750233] = 'ch3_rd2_armco_01_lod', + [-1323362228] = 'ch3_rd2_armco_01', + [1163778887] = 'ch3_rd2_armco_03a_lod', + [2023611714] = 'ch3_rd2_armco_03a', + [13659623] = 'ch3_rd2_armco_03b_lod', + [781175079] = 'ch3_rd2_armco_03b', + [-1615017391] = 'ch3_rd2_armco_03c_lod', + [1548625059] = 'ch3_rd2_armco_03c', + [555371987] = 'ch3_rd2_armco_03d_lod', + [-292665051] = 'ch3_rd2_armco_03d', + [49067236] = 'ch3_rd2_armco_03e_lod', + [472556641] = 'ch3_rd2_armco_03e', + [1366025047] = 'ch3_rd2_armco_03f_lod', + [-753429960] = 'ch3_rd2_armco_03f', + [-1537303130] = 'ch3_rd2_armco_04_b01_lod', + [208440367] = 'ch3_rd2_armco_04_b01', + [-1207187204] = 'ch3_rd2_armco_04_b02_lod', + [838588237] = 'ch3_rd2_armco_04_b02', + [2028114199] = 'ch3_rd2_armco_04_b03_lod', + [1375639378] = 'ch3_rd2_armco_04_b03', + [384815769] = 'ch3_rd2_armco_04_b04_lod', + [-2143718457] = 'ch3_rd2_armco_04_b04', + [-1326133767] = 'ch3_rd2_armco_04_b05_lod', + [1970953801] = 'ch3_rd2_armco_04_b05', + [1966578193] = 'ch3_rd2_armco_04_lod', + [1267977523] = 'ch3_rd2_armco_04', + [-2044329799] = 'ch3_rd2_armco_05_lod', + [-170450505] = 'ch3_rd2_armco_05', + [-1019209829] = 'ch3_rd2_armco_08_01_lod', + [-842276014] = 'ch3_rd2_armco_08_01', + [-1341067468] = 'ch3_rd2_armco_08_02_lod', + [1792613718] = 'ch3_rd2_armco_08_02', + [808523012] = 'ch3_rd2_armco_08_03_lod', + [2032908795] = 'ch3_rd2_armco_08_03', + [-287067331] = 'ch3_rd2_billboard01', + [1783812936] = 'ch3_rd2_billboard01graffiti', + [-1256327450] = 'ch3_rd2_bridge_01_rl01_lod', + [-1180576353] = 'ch3_rd2_bridge_01_rl01', + [1055620608] = 'ch3_rd2_bridge_01_rl02_lod', + [-420696012] = 'ch3_rd2_bridge_01_rl02', + [1323979737] = 'ch3_rd2_bridge_01', + [997607763] = 'ch3_rd2_bridge_02_rl01_lod', + [-1982943537] = 'ch3_rd2_bridge_02_rl01', + [239885496] = 'ch3_rd2_bridge_02_rl02_lod', + [-1425149619] = 'ch3_rd2_bridge_02_rl02', + [1554083655] = 'ch3_rd2_bridge_02', + [-834239745] = 'ch3_rd2_bridge_02a_rl01_lod', + [-1789013659] = 'ch3_rd2_bridge_02a_rl01', + [925893799] = 'ch3_rd2_bridge_02a_rl02_lod', + [1326859375] = 'ch3_rd2_bridge_02a_rl02', + [-1902852524] = 'ch3_rd2_bridge_02a', + [-1907424509] = 'ch3_rd2_bridge_03_rl01_lod', + [-1001633492] = 'ch3_rd2_bridge_03_rl01', + [-1774332852] = 'ch3_rd2_bridge_03_rl02_lod', + [-1425729890] = 'ch3_rd2_bridge_03_rl02', + [664052285] = 'ch3_rd2_bridge_03_rl03_lod', + [1597472516] = 'ch3_rd2_bridge_03_rl03', + [1137884642] = 'ch3_rd2_bridge_03', + [-1998013890] = 'ch3_rd2_bridge_04_rl01_lod', + [1059265126] = 'ch3_rd2_bridge_04_rl01', + [-1186871725] = 'ch3_rd2_bridge_04_rl02_lod001', + [1844017138] = 'ch3_rd2_bridge_04_rl02', + [-1722728133] = 'ch3_rd2_bridge_04_rl03_lod', + [1534907161] = 'ch3_rd2_bridge_04_rl03', + [-181665681] = 'ch3_rd2_bridge_04_rl04_lod', + [-2008011585] = 'ch3_rd2_bridge_04_rl04', + [1141753856] = 'ch3_rd2_bridge_04_rl05_lod', + [1993902544] = 'ch3_rd2_bridge_04_rl05', + [1408065047] = 'ch3_rd2_bridge_04', + [1834735422] = 'ch3_rd2_ch3_condecal2', + [-1941106774] = 'ch3_rd2_dcl_bdg_sup_01', + [938405904] = 'ch3_rd2_decals', + [1286375210] = 'ch3_rd2_decals01', + [2134830158] = 'ch3_rd2_decals02', + [1916195390] = 'ch3_rd2_decals03', + [-1528580197] = 'ch3_rd2_decals04', + [-933855616] = 'ch3_rd2_decals06', + [-2072749407] = 'ch3_rd2_dust_decal', + [-162338163] = 'ch3_rd2_frywy_rd_sgn_01', + [-683497511] = 'ch3_rd2_frywy_rd_sgnfm_01', + [1908837857] = 'ch3_rd2_fww_dcl_sign_01', + [-723337632] = 'ch3_rd2_props_combo0102_06_lod', + [1210434047] = 'ch3_rd2_props_combo0102_09_lod', + [502032016] = 'ch3_rd2_props_combo0103_slod', + [-853300954] = 'ch3_rd2_props_combo0203_03_lod', + [2075597339] = 'ch3_rd2_props_combo0205_03_lod', + [-41126879] = 'ch3_rd2_props_combo0205_08_lod', + [-385013034] = 'ch3_rd2_props_combo0206_03_lod', + [-1525121481] = 'ch3_rd2_props_combo0208_04_lod', + [-2016367027] = 'ch3_rd2_props_combo08_slod', + [-1633461023] = 'ch3_rd2_props_combo13_slod', + [-2041797022] = 'ch3_rd2_props_combo16_07_lod', + [-287712252] = 'ch3_rd2_props_combo17_slod', + [-459355767] = 'ch3_rd2_props_combo19_08_lod', + [-826493730] = 'ch3_rd2_props_combo20_slod', + [2007884538] = 'ch3_rd2_props_elec_w_200', + [813880485] = 'ch3_rd2_props_elec_w_201', + [1513170945] = 'ch3_rd2_props_elec_w_202', + [-382351864] = 'ch3_rd2_props_elec_w_206', + [-156081915] = 'ch3_rd2_props_elec_w_207', + [-634345470] = 'ch3_rd2_props_elec_w_209', + [1409522930] = 'ch3_rd2_props_elec_w_210', + [-1929998629] = 'ch3_rd2_props_elec_w_211', + [-1335503431] = 'ch3_rd2_props_elec_w_212', + [448703081] = 'ch3_rd2_props_elec_w_213', + [214699652] = 'ch3_rd2_props_elec_w_214', + [1999364930] = 'ch3_rd2_props_elec_w_215', + [-360078733] = 'ch3_rd2_props_elec_w_306', + [1681490233] = 'ch3_rd2_props_elec_w145', + [-233641116] = 'ch3_rd2_props_elec_wires_sp145', + [349188310] = 'ch3_rd2_props_elec_wires_sp146', + [120034693] = 'ch3_rd2_props_elec_wires_sp147', + [-77595369] = 'ch3_rd2_rd1_01', + [-383166294] = 'ch3_rd2_rd1_02', + [-1068824850] = 'ch3_rd2_rd1_03', + [84056260] = 'ch3_rd2_rd1_05_rl_lod', + [-494243181] = 'ch3_rd2_rd1_05_rl', + [-1296798783] = 'ch3_rd2_rd1_05', + [-1778535852] = 'ch3_rd2_rd1_07', + [-1933598760] = 'ch3_rd2_rd1_08', + [1178604242] = 'ch3_rd2_rd1_09', + [-1198688725] = 'ch3_rd2_rd1_11', + [-391259657] = 'ch3_rd2_rd1_22', + [-318515071] = 'ch3_rd2_rd1_30', + [-1594139686] = 'ch3_rd2_rd1_31_rl01_lod', + [28828991] = 'ch3_rd2_rd1_31_rl01', + [-2019060154] = 'ch3_rd2_rd1_31_rl02_lod', + [785858429] = 'ch3_rd2_rd1_31_rl02', + [274160256] = 'ch3_rd2_rd1_31_rl03_lod', + [1019468630] = 'ch3_rd2_rd1_31_rl03', + [-44394746] = 'ch3_rd2_rd1_31_rl04_lod', + [1251342074] = 'ch3_rd2_rd1_31_rl04', + [2031953314] = 'ch3_rd2_rd1_31_rl05_lod', + [1482134141] = 'ch3_rd2_rd1_31_rl05', + [-1027374079] = 'ch3_rd2_rd1_31', + [-122849912] = 'ch3_rd2_rd1_46', + [-381704663] = 'ch3_rd2_rum_strip00', + [326630041] = 'ch3_rd2_rum_strip01', + [80043316] = 'ch3_rd2_rum_strip02', + [780316846] = 'ch3_rd2_rum_strip03', + [508891219] = 'ch3_rd2_rum_strip04', + [1276603351] = 'ch3_rd2_rum_strip05', + [1037094730] = 'ch3_rd2_rum_strip06', + [1169810808] = 'ch3_rd2_support_03_rl01_lod', + [1172761258] = 'ch3_rd2_support_03_rl01', + [-954161885] = 'ch3_rd2_support_03_rl02_lod', + [1475710655] = 'ch3_rd2_support_03_rl02', + [817256088] = 'ch3_rd2_support_03_rl03_lod', + [2055197651] = 'ch3_rd2_support_03_rl03', + [958645342] = 'ch3_rd2_support_03_rl04_lod', + [-2000850866] = 'ch3_rd2_support_03_rl04', + [2016502010] = 'ch3_rd2_support_03', + [-195818454] = 'ch3_rd2b_b1_rl01', + [537289614] = 'ch3_rd2b_b1_rl02', + [287819217] = 'ch3_rd2b_b1_rl03', + [982587555] = 'ch3_rd2b_b1_rl04', + [-1526462065] = 'ch3_rd2b_b2_rl01', + [-1789892056] = 'ch3_rd2b_b2_rl02', + [1028471387] = 'ch3_rd2b_b2_rl03', + [1334042312] = 'ch3_rd2b_b2_rl04', + [432632660] = 'ch3_rd2b_b2_rl05', + [737744819] = 'ch3_rd2b_b2_rl06', + [-1991598765] = 'ch3_rd2b_b5_rl01', + [-1759495938] = 'ch3_rd2b_b5_rl02', + [1313482455] = 'ch3_rd2b_b5_rl03', + [-1195377723] = 'ch3_rd2b_b5_rl04', + [-1984422474] = 'ch3_rd2b_b5_rl05', + [-1807076646] = 'ch3_rd2b_b5_rl06', + [-420115350] = 'ch3_rd2b_barrier_00_lod', + [391110660] = 'ch3_rd2b_barrier_00', + [769854766] = 'ch3_rd2b_barrier_01', + [1386895036] = 'ch3_rd2b_barrier_02', + [-866344450] = 'ch3_rd2b_barrier_03_lod', + [1616245267] = 'ch3_rd2b_barrier_03', + [-526155070] = 'ch3_rd2b_barrier_04_lod', + [-516787254] = 'ch3_rd2b_barrier_04', + [-148267080] = 'ch3_rd2b_barrier_05', + [1946901676] = 'ch3_rd2b_barrier_06_lod001', + [81804069] = 'ch3_rd2b_barrier_06', + [1910816271] = 'ch3_rd2b_bdg_endbariers_lod', + [-670732483] = 'ch3_rd2b_bdg_endbariers', + [-1637227523] = 'ch3_rd2b_bdg_rl01_lod', + [-1211770880] = 'ch3_rd2b_bdg_rl01', + [995768142] = 'ch3_rd2b_bdg_rl02_lod', + [-1304081157] = 'ch3_rd2b_bdg_rl02', + [-1302999313] = 'ch3_rd2b_bdg_rl03_lod', + [-1075582920] = 'ch3_rd2b_bdg_rl03', + [2043440436] = 'ch3_rd2b_bdg_rl04_lod', + [1366133581] = 'ch3_rd2b_bdg_rl04', + [1445320119] = 'ch3_rd2b_bdg_rl05_lod', + [1734326065] = 'ch3_rd2b_bdg_rl05', + [-311765089] = 'ch3_rd2b_billboard01', + [1952235351] = 'ch3_rd2b_ch3_rd2c_fwy_01', + [-1554645946] = 'ch3_rd2b_decals05', + [-1991137279] = 'ch3_rd2b_dl_004', + [-194345995] = 'ch3_rd2b_dl_1', + [279362669] = 'ch3_rd2b_dl_2', + [383076554] = 'ch3_rd2b_dl_3', + [-856565312] = 'ch3_rd2b_fw_18a', + [1938630388] = 'ch3_rd2b_fw_18b', + [1311835708] = 'ch3_rd2b_fw_ov_14', + [338432567] = 'ch3_rd2b_fw_ov_15', + [-2043578820] = 'ch3_rd2b_fw_ov_16', + [823249922] = 'ch3_rd2b_fw_ov_17', + [161414201] = 'ch3_rd2b_fw_ov_21', + [-329399881] = 'ch3_rd2b_fw_ov_22', + [-1457308865] = 'ch3_rd2b_fw_ov_23', + [-1748723582] = 'ch3_rd2b_fw_ov_24', + [-996806108] = 'ch3_rd2b_fw_ov_25', + [-1218422855] = 'ch3_rd2b_fw_ov_26', + [1885718981] = 'ch3_rd2b_fw_ov_27', + [-57728685] = 'ch3_rd2b_fw_ov_29a', + [1022763576] = 'ch3_rd2b_fw_ov_29b', + [178322645] = 'ch3_rd2b_fw_ov_30', + [591474205] = 'ch3_rd2b_fw_ov_32', + [-267962138] = 'ch3_rd2b_fw_ov_85', + [-2036641100] = 'ch3_rd2b_fwy_01', + [-1672577510] = 'ch3_rd2b_fwy_02', + [1881449927] = 'ch3_rd2b_fwy_04', + [-101402371] = 'ch3_rd2b_fwy_05', + [-402680557] = 'ch3_rd2b_fwy_06', + [-1969447083] = 'ch3_rd2b_fwy_06b', + [392786918] = 'ch3_rd2b_fwy_07', + [586987978] = 'ch3_rd2b_fwy_3', + [458548820] = 'ch3_rd2b_fwy_4_rd_41a_ovly2', + [-257035924] = 'ch3_rd2b_fwysign_001_bb', + [181457696] = 'ch3_rd2b_fwysign_001', + [-745372834] = 'ch3_rd2b_fwysign_002_bb', + [-759007220] = 'ch3_rd2b_fwysign_002_bba', + [-610778068] = 'ch3_rd2b_fwysign_002_o', + [531561692] = 'ch3_rd2b_fwysign_002', + [-400767868] = 'ch3_rd2b_fwysign_003_bb', + [1466346107] = 'ch3_rd2b_fwysign_003_bba', + [32932232] = 'ch3_rd2b_fwysign_003_o', + [-311158681] = 'ch3_rd2b_fwysign_003', + [-197843479] = 'ch3_rd2b_fwysign_004', + [-833168851] = 'ch3_rd2b_fwysign_005', + [705958171] = 'ch3_rd2b_ovly_fwysgn_01', + [-1773917015] = 'ch3_rd2b_rd04_d', + [1360251284] = 'ch3_rd2b_rd06_d', + [-1406659532] = 'ch3_rd2b_rd1_12', + [2031267338] = 'ch3_rd2b_rd1_13', + [-878488790] = 'ch3_rd2b_rd1_14', + [-1801951979] = 'ch3_rd2b_rd1_15', + [1734281891] = 'ch3_rd2b_rd1_16', + [810097784] = 'ch3_rd2b_rd1_17', + [-2089827644] = 'ch3_rd2b_rd1_18', + [803347366] = 'ch3_rd2b_rd1_19', + [-1689029781] = 'ch3_rd2b_rd1_20', + [1418487262] = 'ch3_rd2b_rd1_21', + [394687871] = 'ch3_rd2b_rdbr_03', + [1126340248] = 'ch3_rd2b_shadowb01', + [-1626059126] = 'ch3_rd2b_shadowb02', + [1587705338] = 'ch3_rd2b_support00', + [-781460070] = 'ch3_rd2b_support00b', + [-1969762844] = 'ch3_rd2b_support01', + [2016356627] = 'ch3_rd2b_support02', + [-776691721] = 'ch3_rd2b_wall01', + [-628182613] = 'ch3_rd2b_wall02', + [-1408707424] = 'ch3_rd2b_wall03', + [-1904699008] = 'ch3_rd2b_wall04', + [-1629996481] = 'ch3_rd2b_wall05', + [1778241675] = 'ch3_rd2b_wall06', + [2082501840] = 'ch3_rd2b_wall07', + [1301452725] = 'ch3_rd2b_wall08', + [662850485] = 'ch3_rd2b_wall09', + [411184817] = 'ch3_rd2b_wall10', + [-1311154784] = 'cheetah', + [6774487] = 'chimera', + [349605904] = 'chino', + [-1361687965] = 'chino2', + [-1607885248] = 'cj_arrow_icon_2', + [1081190986] = 'cj_arrow_icon', + [162031196] = 'cj_cone', + [-1493538113] = 'cj_cylinder', + [-893085711] = 'cj_parachute', + [1940981977] = 'cj_proc_tin2', + [-378442850] = 'cj_r_icon_flag', + [-1360947797] = 'cj_ring_icon_2', + [390201602] = 'cliffhanger', + [205439253] = 'cloudhat_altitude_heavy_a', + [-49995102] = 'cloudhat_altitude_heavy_b', + [-1209821092] = 'cloudhat_altitude_heavy_c', + [-2133727222] = 'cloudhat_altitude_light_a', + [339971823] = 'cloudhat_altitude_light_b', + [-1218474800] = 'cloudhat_altitude_med_a', + [-959108165] = 'cloudhat_altitude_med_b', + [-737196497] = 'cloudhat_altitude_med_c', + [-148317136] = 'cloudhat_altitude_vlight_a', + [680836867] = 'cloudhat_altitude_vlight_b', + [1151047359] = 'cloudhat_altostatus_a', + [1916432892] = 'cloudhat_altostatus_b', + [-319149160] = 'cloudhat_cirrocumulus_a', + [-1071197714] = 'cloudhat_cirrocumulus_b', + [1455206113] = 'cloudhat_cirrus', + [1225604557] = 'cloudhat_clear01_a', + [843583555] = 'cloudhat_clear01_b', + [-157968149] = 'cloudhat_clear01_c', + [-236557773] = 'cloudhat_cloudy_a', + [-414296829] = 'cloudhat_cloudy_b', + [-94699222] = 'cloudhat_cloudy_base', + [-1897520076] = 'cloudhat_cloudy_c', + [2100396235] = 'cloudhat_cloudy_d', + [1251220369] = 'cloudhat_cloudy_e', + [-1599682635] = 'cloudhat_cloudy_f', + [-1166320547] = 'cloudhat_contrails_a', + [-1466713970] = 'cloudhat_contrails_b', + [-1915976960] = 'cloudhat_contrails_c', + [68185990] = 'cloudhat_contrails_d', + [1119489215] = 'cloudhat_fog', + [954540222] = 'cloudhat_horizon_a', + [946741200] = 'cloudhat_horizon_b', + [644709323] = 'cloudhat_horizon_c', + [1582233807] = 'cloudhat_nimbus_a', + [814488906] = 'cloudhat_nimbus_b', + [58442538] = 'cloudhat_nimbus_c', + [1273060922] = 'cloudhat_puff_a', + [975944399] = 'cloudhat_puff_b', + [-791779310] = 'cloudhat_puff_c', + [-514083688] = 'cloudhat_puff_old', + [-820737959] = 'cloudhat_rain_a', + [-556029977] = 'cloudhat_rain_b', + [-1813883975] = 'cloudhat_shower_a', + [-1513949318] = 'cloudhat_shower_b', + [2042929022] = 'cloudhat_shower_c', + [-1957486405] = 'cloudhat_snowy01', + [215951106] = 'cloudhat_stormy01_a', + [-609074011] = 'cloudhat_stormy01_b', + [-378281944] = 'cloudhat_stormy01_c', + [-206801763] = 'cloudhat_stormy01_d', + [-1047424920] = 'cloudhat_stormy01_e', + [-668942970] = 'cloudhat_stormy01_f', + [1514654836] = 'cloudhat_stratocumulus', + [-1151479258] = 'cloudhat_stripey_a', + [-845121877] = 'cloudhat_stripey_b', + [-321936622] = 'cloudhat_test_anim', + [690321156] = 'cloudhat_test_animsoft', + [-1971667422] = 'cloudhat_test_fast', + [-1652574385] = 'cloudhat_test_fog', + [2037653808] = 'cloudhat_wispy_a', + [1874464188] = 'cloudhat_wispy_b', + [-2072933068] = 'coach', + [906642318] = 'cog55', + [704435172] = 'cog552', + [330661258] = 'cogcabrio', + [-2030171296] = 'cognoscenti', + [-604842630] = 'cognoscenti2', + [-1045541610] = 'comet2', + [-2022483795] = 'comet3', + [683047626] = 'contender', + [108773431] = 'coquette', + [1011753235] = 'coquette2', + [784565758] = 'coquette3', + [-670052629] = 'cropduster01_skin', + [-1339103244] = 'cropduster02_skin', + [-934194459] = 'cropduster1_skin', + [-1651166217] = 'cropduster2_skin', + [192578208] = 'cropduster3_skin', + [-1376441533] = 'cropduster4_skin', + [448402357] = 'cruiser', + [321739290] = 'crusader', + [-1779492637] = 'cs_amandatownley', + [-413773017] = 'cs_andreas', + [650367097] = 'cs_ashley', + [-1755309778] = 'cs_bankman', + [1767447799] = 'cs_barry', + [-1267809450] = 'cs_beverly', + [-270159898] = 'cs_brad', + [1915268960] = 'cs_bradcadaver', + [-1932625649] = 'cs_carbuyer', + [-359228352] = 'cs_casey', + [819699067] = 'cs_chengsr', + [-1041006362] = 'cs_chrisformage', + [-607414220] = 'cs_clay', + [216536661] = 'cs_dale', + [-2054740852] = 'cs_davenorton', + [-321892375] = 'cs_debra', + [1870669624] = 'cs_denise', + [788622594] = 'cs_devin', + [1198698306] = 'cs_dom', + [1012965715] = 'cs_dreyfuss', + [-1549575121] = 'cs_drfriedlander', + [1191403201] = 'cs_fabien', + [1482427218] = 'cs_fbisuit_01', + [103106535] = 'cs_floyd', + [261428209] = 'cs_guadalope', + [-1022036185] = 'cs_gurk', + [1531218220] = 'cs_hunter', + [808778210] = 'cs_janet', + [1145088004] = 'cs_jewelass', + [60192701] = 'cs_jimmyboston', + [-1194552652] = 'cs_jimmydisanto', + [-258122199] = 'cs_joeminuteman', + [-91572095] = 'cs_johnnyklebitz', + [1167549130] = 'cs_josef', + [1158606749] = 'cs_josh', + [1269774364] = 'cs_karen_daniels', + [1162230285] = 'cs_lamardavis', + [949295643] = 'cs_lazlow', + [-1248528957] = 'cs_lestercrest', + [1918178165] = 'cs_lifeinvad_01', + [1477887514] = 'cs_magenta', + [-72125238] = 'cs_manuel', + [1464721716] = 'cs_marnie', + [1129928304] = 'cs_martinmadrazo', + [161007533] = 'cs_maryann', + [1890499016] = 'cs_michelle', + [-1217776881] = 'cs_milton', + [1167167044] = 'cs_molly', + [1270514905] = 'cs_movpremf_01', + [-1922568579] = 'cs_movpremmale', + [-1010001291] = 'cs_mrk', + [1334976110] = 'cs_mrs_thornhill', + [-872569905] = 'cs_mrsphillips', + [1325314544] = 'cs_natalia', + [2023152276] = 'cs_nervousron', + [-515400693] = 'cs_nigel', + [518814684] = 'cs_old_man1a', + [-1728452752] = 'cs_old_man2', + [-1955548155] = 'cs_omega', + [-1389097126] = 'cs_orleans', + [1798879480] = 'cs_paper', + [-544533759] = 'cs_patricia', + [1299047806] = 'cs_priest', + [512955554] = 'cs_prolsec_02', + [123708879] = 'cs_remote_01', + [1179785778] = 'cs_russiandrunk', + [-1064078846] = 'cs_siemonyetarian', + [-154017714] = 'cs_solomon', + [-1528782338] = 'cs_stevehains', + [-1992464379] = 'cs_stretch', + [1123963760] = 'cs_tanisha', + [-2006710211] = 'cs_taocheng', + [1397974313] = 'cs_taostranslator', + [1545995274] = 'cs_tenniscoach', + [978452933] = 'cs_terry', + [1776856003] = 'cs_tom', + [-1945119518] = 'cs_tomepsilon', + [101298480] = 'cs_tracydisanto', + [-765011498] = 'cs_wade', + [1555078454] = 'cs_x_array02', + [796869332] = 'cs_x_array03', + [207160315] = 'cs_x_rublrga', + [503686996] = 'cs_x_rublrgb', + [1992513746] = 'cs_x_rublrgc', + [-2005468103] = 'cs_x_rublrgd', + [-1973157825] = 'cs_x_rublrge', + [-1215587719] = 'cs_x_rubmeda', + [634353407] = 'cs_x_rubmedb', + [349754642] = 'cs_x_rubmedc', + [-1062851382] = 'cs_x_rubmedd', + [-438470856] = 'cs_x_rubmede', + [726677991] = 'cs_x_rubsmla', + [-243022249] = 'cs_x_rubsmlb', + [189594089] = 'cs_x_rubsmlc', + [350653724] = 'cs_x_rubsmld', + [513319040] = 'cs_x_rubsmle', + [-1119102666] = 'cs_x_rubweea', + [-1714089399] = 'cs_x_rubweec', + [-1332461625] = 'cs_x_rubweed', + [212137959] = 'cs_x_rubweee', + [-432178804] = 'cs_x_weesmlb', + [-357782800] = 'cs_zimbor', + [500896100] = 'cs1_01_barn01_detail', + [686297575] = 'cs1_01_barn01', + [1344109197] = 'cs1_01_barn02_dec', + [-1988858538] = 'cs1_01_barn02_det', + [422408818] = 'cs1_01_barn02', + [-1806014262] = 'cs1_01_barn03', + [-1583757621] = 'cs1_01_billboard', + [1658297197] = 'cs1_01_culvert001_decal', + [-234712503] = 'cs1_01_culvert001', + [810065309] = 'cs1_01_deadtree02', + [-378103811] = 'cs1_01_dec11', + [-1349374491] = 'cs1_01_deca_aa1', + [-1196118295] = 'cs1_01_decal02', + [-1742787124] = 'cs1_01_decal02a', + [1634517096] = 'cs1_01_decal02b', + [-1147013935] = 'cs1_01_decal02c', + [-329478670] = 'cs1_01_decal02c001', + [-518602822] = 'cs1_01_decal02e', + [-650580911] = 'cs1_01_decal10', + [143674099] = 'cs1_01_decal16', + [1566962845] = 'cs1_01_decal17', + [-335965754] = 'cs1_01_decal18', + [-2089533243] = 'cs1_01_decal19', + [-1194055012] = 'cs1_01_decal69', + [-1918430007] = 'cs1_01_emissive_01_lod', + [-955160385] = 'cs1_01_emissive_01', + [-2130093763] = 'cs1_01_emissive_02_lod', + [-1371523299] = 'cs1_01_emissive_02', + [-1112678596] = 'cs1_01_emissive_03_lod', + [1759226965] = 'cs1_01_emissive_03', + [-1617236980] = 'cs1_01_fence_wire02', + [-1545817940] = 'cs1_01_fence03', + [-1721807691] = 'cs1_01_fencebits', + [-285349131] = 'cs1_01_glue_007', + [-1994337096] = 'cs1_01_glue_01', + [-1961711188] = 'cs1_01_glue_02a', + [347499489] = 'cs1_01_glue_03', + [-437809596] = 'cs1_01_glue_04', + [-278748870] = 'cs1_01_glue_05', + [1369040299] = 'cs1_01_glue_06', + [-1552644623] = 'cs1_01_land_009', + [1830822473] = 'cs1_01_land_08a', + [1214849210] = 'cs1_01_land03', + [-1680621700] = 'cs1_01_land11_decal01', + [1693962693] = 'cs1_01_land11_decal05', + [496749628] = 'cs1_01_land11', + [-156893615] = 'cs1_01_land14', + [819718327] = 'cs1_01_polytunnels_010', + [-1238863038] = 'cs1_01_polytunnels_012', + [417653192] = 'cs1_01_propane_sign', + [-1759873242] = 'cs1_01_props_elec_wire_06b', + [2028324394] = 'cs1_01_props_elec_wire_new020', + [-879704471] = 'cs1_01_props_elec_wire_s03b', + [-14775816] = 'cs1_01_props_elec_wire_sp03', + [827092563] = 'cs1_01_props_elec_wire_sp06', + [1257316988] = 'cs1_01_props_elec_wire_sp11', + [834924578] = 'cs1_01_props_elec_wire_sp15', + [926858370] = 'cs1_01_props_elec_wire_sp15b', + [536849065] = 'cs1_01_props_elec_wire11b', + [1482266408] = 'cs1_01_props_pylon_wire07', + [-965610657] = 'cs1_01_props_pylon_wire08', + [-232891809] = 'cs1_01_props_pylon_wire121', + [2059538246] = 'cs1_01_props_pylon_wire200', + [-1490831412] = 'cs1_01_props_pylon_wire301', + [-1532852387] = 'cs1_01_scrub', + [1437795656] = 'cs1_01_shed03', + [-682800176] = 'cs1_01_signs01', + [45621925] = 'cs1_01_signs02', + [1767174117] = 'cs1_01_signs03', + [-1235258992] = 'cs1_01_silo_002_ovr', + [178751227] = 'cs1_01_silo_002', + [2000010372] = 'cs1_01_silo_det_lod', + [-619879544] = 'cs1_01_silo_det', + [-1578053562] = 'cs1_01_silo', + [-604837460] = 'cs1_01_smallshed', + [-238595328] = 'cs1_01_template_drainage_039', + [-136377374] = 'cs1_01_templates_bales_005', + [-331549546] = 'cs1_01_templates_bales_006', + [-628666069] = 'cs1_01_templates_bales_007', + [-320868068] = 'cs1_01_templates_bales_03_d002', + [140464641] = 'cs1_01_truckbuild1', + [496270443] = 'cs1_01_truckbuild2', + [759569358] = 'cs1_01_truckbuild3', + [1070252247] = 'cs1_01_truckbuild5', + [1418848869] = 'cs1_01_truckbuild6', + [-120883601] = 'cs1_01_tunnel11', + [477025672] = 'cs1_01_tunnelhoops01', + [956364290] = 'cs1_01_tunnels_014', + [-398406445] = 'cs1_01_tunnels_027', + [-328149813] = 'cs1_01_tunnels_07', + [-161331385] = 'cs1_01_util02', + [52486340] = 'cs1_01_util05', + [1583982486] = 'cs1_01_wall02', + [-1426247821] = 'cs1_01_watertank01', + [-1757504760] = 'cs1_01_weed_01', + [-1459732857] = 'cs1_01_weed_02', + [1396838982] = 'cs1_01_weldshed_a', + [-1332924853] = 'cs1_01_weldshed', + [1090465763] = 'cs1_02_050_dec', + [-827104492] = 'cs1_02_050_ladders', + [980476069] = 'cs1_02_050', + [-507362406] = 'cs1_02_28_glue', + [511326633] = 'cs1_02_28aa_glue', + [1641786747] = 'cs1_02_28b_glue', + [1707802587] = 'cs1_02_28bb_glue', + [1077471875] = 'cs1_02_33_glue', + [-1777388846] = 'cs1_02_33_rail_glue', + [-1050389536] = 'cs1_02_33_rail', + [1720337801] = 'cs1_02_33b_glue', + [-150808201] = 'cs1_02_33c_glue', + [-1231647556] = 'cs1_02_37_chick', + [-1916728028] = 'cs1_02_bb_brand_hd', + [-374172712] = 'cs1_02_bb2_brand_hd', + [1323780898] = 'cs1_02_bb2_brandb_hd', + [1991978464] = 'cs1_02_beam04_rail', + [-808475034] = 'cs1_02_beam04', + [-1698433478] = 'cs1_02_biln019_dec', + [-763407615] = 'cs1_02_biln019_rail', + [1926798123] = 'cs1_02_biln019', + [-1029398238] = 'cs1_02_biln020', + [933823517] = 'cs1_02_biln04_dec', + [-1192977805] = 'cs1_02_biln04', + [-853490290] = 'cs1_02_buntingflags_01', + [-1638242302] = 'cs1_02_buntingflags_02', + [1878625089] = 'cs1_02_buntingflags_03', + [1873685238] = 'cs1_02_buntingflags', + [276780974] = 'cs1_02_carpark01a_dec', + [-1728789530] = 'cs1_02_carpark02', + [-925548910] = 'cs1_02_carpark03_d', + [-430432741] = 'cs1_02_carpark03_ladder', + [-967696732] = 'cs1_02_carpark03', + [1665456259] = 'cs1_02_carpark04', + [901061010] = 'cs1_02_cbf1slod', + [2054705809] = 'cs1_02_cfdoor_front', + [1959688621] = 'cs1_02_cfdoor_side', + [1025110825] = 'cs1_02_cfdoor_slod', + [361246720] = 'cs1_02_cfdr_back', + [764286573] = 'cs1_02_chair_tarped001', + [-1820729602] = 'cs1_02_chikn12_dec', + [1479804249] = 'cs1_02_chikn12_ladder001', + [1554213045] = 'cs1_02_chikn12_rail2', + [-411647072] = 'cs1_02_chikn12', + [1461817122] = 'cs1_02_cprk1_d', + [1970764590] = 'cs1_02_cprk1', + [-1443414103] = 'cs1_02_cprk2_d', + [-1282476224] = 'cs1_02_cprk2', + [1801569475] = 'cs1_02_cprk3_dec', + [-997516972] = 'cs1_02_cprk3', + [-367935283] = 'cs1_02_cprk4_dc1', + [-1911870407] = 'cs1_02_cprk4', + [-1598140001] = 'cs1_02_cprk5', + [-1786408510] = 'cs1_02_deco03_dec', + [1279856009] = 'cs1_02_deco03_ladder', + [-513045951] = 'cs1_02_deco03_windows', + [-814302300] = 'cs1_02_deco03', + [321266885] = 'cs1_02_emissive01_lod', + [751284865] = 'cs1_02_emissive01', + [1267452218] = 'cs1_02_emissive02_lod', + [1251012115] = 'cs1_02_emissive02', + [-864564792] = 'cs1_02_emissive03_lod', + [-1910278857] = 'cs1_02_emissive03', + [7326082] = 'cs1_02_emissive04_lod', + [517478050] = 'cs1_02_emissive04', + [-2058655367] = 'cs1_02_emissive05_lod', + [1111711088] = 'cs1_02_emissive05', + [-1143426531] = 'cs1_02_emissive06_lod', + [1351219709] = 'cs1_02_emissive06', + [-535309648] = 'cs1_02_festival_stage', + [-1672905681] = 'cs1_02_festivalbanners', + [1977076315] = 'cs1_02_glue_01', + [1083858953] = 'cs1_02_glue_02', + [776846192] = 'cs1_02_glue_04', + [1472299569] = 'cs1_02_indust_02', + [-1181665246] = 'cs1_02_indust_02d_', + [748718668] = 'cs1_02_indust_08_d', + [1934620438] = 'cs1_02_indust_08_ladder', + [-324588546] = 'cs1_02_indust_08', + [-566983557] = 'cs1_02_milo_window_dummy', + [886074271] = 'cs1_02_milo2_lod', + [-1722460612] = 'cs1_02_milo2_slod1', + [1769525396] = 'cs1_02_milo3_lod', + [1502218657] = 'cs1_02_rail01', + [2136626497] = 'cs1_02_rail02', + [-1399705828] = 'cs1_02_rail03_d', + [-1875380484] = 'cs1_02_rail03', + [-886313761] = 'cs1_02_rail04', + [58492072] = 'cs1_02_retainer024', + [1440360802] = 'cs1_02_retainer025', + [672419287] = 'cs1_02_retainer026', + [2082928123] = 'cs1_02_retainer027', + [1281889918] = 'cs1_02_retainer028', + [-1633699092] = 'cs1_02_retainer029', + [1813011290] = 'cs1_02_retainer13', + [-1237618765] = 'cs1_02_retainer14', + [-678251935] = 'cs1_02_retainer15', + [-1851414904] = 'cs1_02_retainer16', + [-2062316188] = 'cs1_02_retainer17', + [-559988614] = 'cs1_02_retainer18', + [280110239] = 'cs1_02_retainer19', + [83201518] = 'cs1_02_retainer20', + [374976694] = 'cs1_02_retainer21', + [1396910732] = 'cs1_02_retainer22', + [-1567405781] = 'cs1_02_retainer23', + [-2041927399] = 'cs1_02_rwshed01', + [1068847033] = 'cs1_02_smstation', + [511451732] = 'cs1_02_stage_rails', + [785022080] = 'cs1_02_tower_rail', + [-19938490] = 'cs1_02_weed', + [168340054] = 'cs1_02_wtower', + [-1744196223] = 'cs1_03_bigware_alpha', + [-1615813331] = 'cs1_03_bigware_rail', + [832306070] = 'cs1_03_bigware', + [50999745] = 'cs1_03_build_d01', + [-281015763] = 'cs1_03_build_d02', + [562425528] = 'cs1_03_build_d03', + [292769427] = 'cs1_03_build_d04', + [-1138449417] = 'cs1_03_build_d05', + [-1403714472] = 'cs1_03_build_d06', + [-779681331] = 'cs1_03_condeets1', + [-549554049] = 'cs1_03_cons1', + [-1360324647] = 'cs1_03_cons2', + [-1122281850] = 'cs1_03_consbill1', + [-1351075008] = 'cs1_03_consbill2', + [-1580818467] = 'cs1_03_consbill3', + [60303638] = 'cs1_03_consgrnd_dec', + [-460555672] = 'cs1_03_consgrnd', + [-1906379174] = 'cs1_03_emissive_lod', + [747073808] = 'cs1_03_emissive', + [354702678] = 'cs1_03_glue_001', + [-953632428] = 'cs1_03_glue_002', + [-1192551207] = 'cs1_03_glue_003', + [-308148750] = 'cs1_03_glue_004', + [1321242795] = 'cs1_03_hedgebase_1', + [-593515413] = 'cs1_03_hedgebase_2', + [-1628959439] = 'cs1_03_hedgedecal_1', + [-1849036043] = 'cs1_03_hedgedecal_2', + [2141966489] = 'cs1_03_house_alpha', + [-1231197872] = 'cs1_03_house1_alpha', + [-994629715] = 'cs1_03_house1', + [-1994666419] = 'cs1_03_house2_alpha', + [-1278179872] = 'cs1_03_house2', + [1757512289] = 'cs1_03_house3_alpha', + [-1476170170] = 'cs1_03_house3', + [-1355326414] = 'cs1_03_house4_alpha', + [-1759130485] = 'cs1_03_house4', + [-1921601270] = 'cs1_03_house5_alpha', + [-1987464877] = 'cs1_03_house5', + [-294529626] = 'cs1_03_house6_dec', + [-1600004281] = 'cs1_03_house6', + [1259092018] = 'cs1_03_house7_alpha', + [1917944487] = 'cs1_03_house7', + [-421394744] = 'cs1_03_hsegrnda_dec', + [1289253213] = 'cs1_03_hsegrnda_dets', + [-936009440] = 'cs1_03_hsegrnda', + [-1819101221] = 'cs1_03_hsegrndb', + [204493111] = 'cs1_03_hsegrowth', + [474867474] = 'cs1_03_hsewall1', + [455350863] = 'cs1_03_iron_spikes', + [-635932768] = 'cs1_03_poster1', + [1514481512] = 'cs1_03_posters2', + [-831439152] = 'cs1_03_shps1_dets', + [1323113141] = 'cs1_03_shps1', + [954325658] = 'cs1_03_shps2_alpha', + [981365240] = 'cs1_03_shps2', + [1344367720] = 'cs1_03_shps3_alpha', + [689830025] = 'cs1_03_shps3_dets', + [-2003169746] = 'cs1_03_shps3', + [1781300532] = 'cs1_03_shpsgrnd_d', + [781316872] = 'cs1_03_shpsgrnd', + [535698739] = 'cs1_03_shpss_dec', + [1482752112] = 'cs1_03_sprmgrnd_d', + [-940902850] = 'cs1_03_sprmkt_d', + [-1571344999] = 'cs1_03_sprmkt', + [-156024109] = 'cs1_03_sprmktgrnd', + [-1614601457] = 'cs1_03_wareh1_d', + [-1220353920] = 'cs1_03_wareh1', + [-1561305444] = 'cs1_03_weed', + [1787580084] = 'cs1_04_63_ov', + [514604305] = 'cs1_04_63', + [-1297084746] = 'cs1_04_adstslod', + [1122175852] = 'cs1_04_aldstslod', + [320507128] = 'cs1_04_apt_balc_rail', + [1004196714] = 'cs1_04_apt_dec_dest', + [-1734045561] = 'cs1_04_apt_decals', + [-816303176] = 'cs1_04_apt_dest', + [-2004637554] = 'cs1_04_apt_grnd_dec', + [2057151048] = 'cs1_04_apt_grnd_dst_dec', + [-636665748] = 'cs1_04_apt_grnd_dst', + [778463341] = 'cs1_04_apt_grnd_lod', + [766382206] = 'cs1_04_apt_grnd', + [-1837682020] = 'cs1_04_apt_hole_dest', + [918483307] = 'cs1_04_apt_signs', + [-1973270115] = 'cs1_04_apt_slod', + [-341551967] = 'cs1_04_apt', + [1462966863] = 'cs1_04_aptdestgrnd_lod', + [-381646973] = 'cs1_04_bank_bb', + [1502194279] = 'cs1_04_bank_ov', + [-961180886] = 'cs1_04_bank', + [-630677966] = 'cs1_04_bankgrnd', + [-1495883599] = 'cs1_04_bnkcarpark_ov', + [1883955272] = 'cs1_04_building_01', + [959509013] = 'cs1_04_building_02', + [756412540] = 'cs1_04_burnt_rubble', + [-1367366038] = 'cs1_04_canopy', + [883999951] = 'cs1_04_emissive_lod', + [-916350315] = 'cs1_04_emissive', + [-484971063] = 'cs1_04_emptylot_ov', + [-414328756] = 'cs1_04_emptylot', + [150257251] = 'cs1_04_garage_build', + [2083732794] = 'cs1_04_garage_det', + [321210883] = 'cs1_04_garage_grnd', + [-155691249] = 'cs1_04_garagegrnd_ov', + [-1617719906] = 'cs1_04_gardens_a', + [1074896842] = 'cs1_04_gardens', + [1049225362] = 'cs1_04_gasparticle_grp2_02', + [1839351486] = 'cs1_04_gasparticle_grp2_03', + [451223881] = 'cs1_04_gasparticle_grp2_04', + [-405554397] = 'cs1_04_gasparticle_grp2_05', + [-837318741] = 'cs1_04_gasparticle_grp2_06', + [1215921261] = 'cs1_04_gasparticle_grp2_07', + [917756130] = 'cs1_04_gasparticle_grp2_08', + [369784200] = 'cs1_04_gasparticle_grp2', + [921846686] = 'cs1_04_gassign_grp1', + [-1757670021] = 'cs1_04_gassign_slod_grp1', + [2035201291] = 'cs1_04_gasstation_burn_decals', + [1022004524] = 'cs1_04_gasstation_details_grp1', + [1595073649] = 'cs1_04_gasstation_grp1_slod', + [-1838391287] = 'cs1_04_gasstation_grp1', + [-275069589] = 'cs1_04_gasstation_grp2_slod', + [-852339292] = 'cs1_04_gasstation_grp2', + [-470206842] = 'cs1_04_glue_weed01', + [-1102910698] = 'cs1_04_glue_weed02', + [2025054201] = 'cs1_04_glue_weed03', + [1655223267] = 'cs1_04_glue_weed04', + [1721244447] = 'cs1_04_hedgebase_1', + [1974581586] = 'cs1_04_hedgebase_2', + [-702677820] = 'cs1_04_hedgedecal_1', + [1490223680] = 'cs1_04_hedgedecal_2', + [-934294401] = 'cs1_04_indusgrnd_a', + [-131012177] = 'cs1_04_indusgrnd', + [1832692018] = 'cs1_04_indusgrndb', + [-999956102] = 'cs1_04_induswall', + [-2128103296] = 'cs1_04_motel_alpha', + [314069656] = 'cs1_04_motel_rail_01', + [612365863] = 'cs1_04_motel_rail_02', + [1615556029] = 'cs1_04_motel_rail_03', + [1102917793] = 'cs1_04_motel_rail_04', + [369977972] = 'cs1_04_motel_wall_rail', + [-113511864] = 'cs1_04_motel_wall', + [-2074204311] = 'cs1_04_motel', + [-1447197336] = 'cs1_04_motelsign', + [458167383] = 'cs1_04_motelsigna', + [209097157] = 'cs1_04_motlgrnd', + [2012593192] = 'cs1_04_motlgrowth_g', + [-1391605449] = 'cs1_04_motlgrowth', + [-57046472] = 'cs1_04_noticeboard', + [-1383345426] = 'cs1_04_ov1', + [-1691898330] = 'cs1_04_ov2', + [1350605017] = 'cs1_04_ov3', + [-1234218649] = 'cs1_04_particle_dummy', + [-202549442] = 'cs1_04_restgrnd_alf', + [2140987077] = 'cs1_04_restgrnd', + [-360868865] = 'cs1_04_restrnt_alpha', + [446939869] = 'cs1_04_restrnt_night', + [-351038852] = 'cs1_04_restrnt_sign', + [-2107632904] = 'cs1_04_restrnt', + [-1803060165] = 'cs1_04_rf_chopper_lod', + [-413862630] = 'cs1_04_rf_chopper', + [41650019] = 'cs1_04_shadow_proxy', + [1532319592] = 'cs1_04_ware1_alpha', + [130978011] = 'cs1_04_ware1_bb', + [-1571158030] = 'cs1_04_ware1', + [-974776275] = 'cs1_04_ware2_alpha', + [-39973240] = 'cs1_04_ware2_bb', + [-1341152419] = 'cs1_04_ware2', + [17499132] = 'cs1_05__ext01', + [1229876266] = 'cs1_05_bar_neon', + [177279207] = 'cs1_05_bar001_dec', + [1309431798] = 'cs1_05_bar001', + [-600694780] = 'cs1_05_bonds_dec', + [-288640320] = 'cs1_05_bonds', + [559754158] = 'cs1_05_carlot_build_d', + [-415020090] = 'cs1_05_carlot_build', + [-1064616111] = 'cs1_05_carlot_mainsign', + [-1619580933] = 'cs1_05_carlot_ov', + [-69433691] = 'cs1_05_carlot_rail', + [-1033084430] = 'cs1_05_carlot_shops_dec', + [964772369] = 'cs1_05_carlot_shops', + [470294214] = 'cs1_05_carlot_wall', + [1788477959] = 'cs1_05_carlot', + [1646098549] = 'cs1_05_clinic_grnd_ov', + [1748922202] = 'cs1_05_clinic_grnd', + [1401264817] = 'cs1_05_clinic_grnd2', + [1857861929] = 'cs1_05_clinic_ov', + [1970986867] = 'cs1_05_clinic_ov2', + [-1152499815] = 'cs1_05_clinic_shops_alpha', + [-1060326916] = 'cs1_05_clinic_shops_det', + [-2033597696] = 'cs1_05_clinic_shops', + [1754084014] = 'cs1_05_clinic', + [-1551970164] = 'cs1_05_emissive_lod', + [45334894] = 'cs1_05_emissive', + [1278237441] = 'cs1_05_festival_banners02', + [1988782063] = 'cs1_05_garage_01', + [1203767899] = 'cs1_05_garage_02', + [-1641136696] = 'cs1_05_garage02', + [-1609154759] = 'cs1_05_glue_02', + [-1416924036] = 'cs1_05_glue01', + [8101475] = 'cs1_05_glue03', + [-403182252] = 'cs1_05_glue04', + [-446016903] = 'cs1_05_hedgebase', + [139449214] = 'cs1_05_house_005', + [-257726147] = 'cs1_05_house_01', + [-2036695259] = 'cs1_05_house_02_dec', + [-2124870998] = 'cs1_05_house_02', + [1105038582] = 'cs1_05_house_03_dec', + [51285523] = 'cs1_05_house_03', + [366130075] = 'cs1_05_house_04', + [2135103048] = 'cs1_05_house_decals', + [1551729046] = 'cs1_05_house_ext01_dec', + [6410829] = 'cs1_05_house_rail', + [-1978718469] = 'cs1_05_indust_18', + [133356657] = 'cs1_05_indust_18d_', + [1447286921] = 'cs1_05_jnkyrdbld_ovly', + [-1864746683] = 'cs1_05_junkyardbld_ov', + [1892437410] = 'cs1_05_junkyardbld', + [659775987] = 'cs1_05_junkyardgrnd_ov', + [-1073961156] = 'cs1_05_junkyardgrnd', + [-968063536] = 'cs1_05_res_grnd_ov', + [1166034253] = 'cs1_05_res_grnd_ov2', + [1275837038] = 'cs1_05_res_grnd', + [371884825] = 'cs1_05_res_grnd2', + [-1345298635] = 'cs1_05_res_walls2', + [1972464312] = 'cs1_05_res_walls3', + [-1892940555] = 'cs1_05_scrap_frame', + [-323451289] = 'cs1_05_shop003_bb', + [1990020874] = 'cs1_05_shop003', + [-144328483] = 'cs1_05_shop01_ov', + [1810534758] = 'cs1_05_shop01', + [-499548605] = 'cs1_05_shop03_dec', + [934903988] = 'cs1_05_wiresa', + [695723057] = 'cs1_05_wiresb', + [-1675428646] = 'cs1_06_church_alpha', + [-772051253] = 'cs1_06_church', + [44338259] = 'cs1_06_churchdets', + [542531032] = 'cs1_06_churchgrnd_dec', + [1961311925] = 'cs1_06_churchgrnd', + [-102006507] = 'cs1_06_churchsign', + [163483664] = 'cs1_06_emissive_lod', + [1998847728] = 'cs1_06_emissive', + [-1467998699] = 'cs1_06_firest_det01', + [1890546004] = 'cs1_06_firest_grnd', + [821404969] = 'cs1_06_firest01_d', + [-765670279] = 'cs1_06_firest01_dec', + [-1731811828] = 'cs1_06_firest01_ldr002', + [-1173626066] = 'cs1_06_firest01_ldr01', + [-1050787317] = 'cs1_06_firest01', + [-749722728] = 'cs1_06_firestnrailings_lod', + [1426989615] = 'cs1_06_firestnrailings', + [1110814991] = 'cs1_06_glue_01', + [-492277250] = 'cs1_06_glue_02', + [-1779989936] = 'cs1_06_glue_02b', + [-2110085937] = 'cs1_06_hedgebase', + [-1425427465] = 'cs1_06_hedgedecal', + [365975681] = 'cs1_06_house1_alpha', + [334776410] = 'cs1_06_house1', + [-1191632451] = 'cs1_06_house2_alpha', + [2083887339] = 'cs1_06_house2', + [-538235896] = 'cs1_06_house3_alpha', + [-1840986871] = 'cs1_06_house3', + [-1852984466] = 'cs1_06_house4_alpha', + [-1581685774] = 'cs1_06_house4', + [-1403772691] = 'cs1_06_house5_alpha', + [-1245475834] = 'cs1_06_house5', + [-1354864001] = 'cs1_06_hsegrnd_alpha', + [1148569746] = 'cs1_06_hsegrnd', + [-2080905418] = 'cs1_06_hsewalls1', + [-114211505] = 'cs1_06_liquorstore_alpha', + [-955548236] = 'cs1_06_liquorstore', + [758464583] = 'cs1_06_lngwrhse_ldr', + [694178974] = 'cs1_06_longwarehouse_a', + [-1322482288] = 'cs1_06_longwarehouse_details', + [-1321757852] = 'cs1_06_longwarehouse', + [1728698824] = 'cs1_06_lowbuild_alpha', + [846429286] = 'cs1_06_lowbuild_ldr', + [2040679213] = 'cs1_06_lowbuild', + [-53132574] = 'cs1_06_lowbuildgrnd_a', + [-10516986] = 'cs1_06_lowbuildgrnd', + [-1536053400] = 'cs1_06_market_alpha', + [1635915387] = 'cs1_06_market_bb', + [-356919094] = 'cs1_06_market_dets', + [1400875814] = 'cs1_06_market', + [-173239731] = 'cs1_06_mktgrnd', + [-874925509] = 'cs1_06_netting', + [-2037120409] = 'cs1_06_noticeboard', + [-187731734] = 'cs1_06_oldshed', + [1818032496] = 'cs1_06_pb_archsign_d', + [168495826] = 'cs1_06_pb_archsign', + [-665229001] = 'cs1_06_shadow_proxy', + [-2035323739] = 'cs1_06_shop_building', + [1701765935] = 'cs1_06_shop_decals', + [2098530057] = 'cs1_06_shop_details', + [771858246] = 'cs1_06_shop1_dec', + [1197449754] = 'cs1_06_shops01_detail', + [1370436671] = 'cs1_06_shops01_ldr', + [-54372032] = 'cs1_06_shops01', + [-524553974] = 'cs1_06_shops02_alpha', + [326796976] = 'cs1_06_shops02', + [-1213413330] = 'cs1_06_sign', + [2124175559] = 'cs1_06_substation_dec', + [-1571045444] = 'cs1_06_substation_details', + [-543380191] = 'cs1_06_substation', + [157617703] = 'cs1_06_tractor_alpha', + [-617135026] = 'cs1_06_tractor', + [671230856] = 'cs1_06_v_tattoo2_e_dmy', + [-995678779] = 'cs1_06_v_tattoo2_e_lod', + [212256103] = 'cs1_06_weed', + [756105914] = 'cs1_07_beach_00', + [1034347493] = 'cs1_07_beach_01', + [-815954096] = 'cs1_07_beach_02', + [-402016088] = 'cs1_07_beach_03', + [-104047571] = 'cs1_07_beach_04', + [99578995] = 'cs1_07_beach_05', + [-1599755807] = 'cs1_07_beach_06', + [-1302704822] = 'cs1_07_beach_07', + [-1021251881] = 'cs1_07_beach_08', + [-735112989] = 'cs1_07_beach_09', + [-387391170] = 'cs1_07_beach_clf_00', + [-643611981] = 'cs1_07_beach_clf_01', + [-972463851] = 'cs1_07_beachhut_dec', + [1648590642] = 'cs1_07_beachhut', + [-951463438] = 'cs1_07_beachhut2_dec', + [-368909319] = 'cs1_07_beachhut2', + [82148095] = 'cs1_07_beachhut3_dec', + [-1280313520] = 'cs1_07_beachhut3', + [-1547269059] = 'cs1_07_beachsteps', + [925642569] = 'cs1_07_birdsnest', + [1750155493] = 'cs1_07_bridge_dec', + [-443973803] = 'cs1_07_bridge_rail', + [-40852083] = 'cs1_07_bridge', + [786101614] = 'cs1_07_build1', + [414370078] = 'cs1_07_build2', + [184626619] = 'cs1_07_build3', + [-197787611] = 'cs1_07_build4', + [-438702039] = 'cs1_07_d_00', + [-54062701] = 'cs1_07_d_00b', + [1718972770] = 'cs1_07_d_01', + [1018109398] = 'cs1_07_d_02', + [1260567229] = 'cs1_07_d_03', + [-1587255489] = 'cs1_07_d_04', + [629305205] = 'cs1_07_d_05', + [-209220736] = 'cs1_07_d_06', + [40446275] = 'cs1_07_d_07', + [1475269717] = 'cs1_07_d_08', + [-280852418] = 'cs1_07_dec_hom2', + [-336275527] = 'cs1_07_decal3', + [573162530] = 'cs1_07_decal4', + [964657365] = 'cs1_07_effluent', + [1583361498] = 'cs1_07_effluent2', + [563529816] = 'cs1_07_emissive1_lod', + [756637765] = 'cs1_07_emissive1', + [-2079180942] = 'cs1_07_emissive2_lod', + [531744118] = 'cs1_07_emissive2', + [-2110218355] = 'cs1_07_emissive3_lod', + [347582338] = 'cs1_07_emissive3', + [-1152035491] = 'cs1_07_foam_01', + [-914427472] = 'cs1_07_foam_02', + [-1868890135] = 'cs1_07_foam_03', + [-1638098068] = 'cs1_07_foam_04', + [1806644754] = 'cs1_07_foam_05', + [-615552491] = 'cs1_07_glue_01', + [34060153] = 'cs1_07_glue_02', + [-585601637] = 'cs1_07_glue_03', + [-892024556] = 'cs1_07_glue_04', + [-1195727648] = 'cs1_07_glue_05', + [-1501560725] = 'cs1_07_glue_06', + [-1812324197] = 'cs1_07_grnd01', + [-516235364] = 'cs1_07_grnd020a', + [715027042] = 'cs1_07_grnd020b', + [-813729781] = 'cs1_07_grnd021', + [1430815647] = 'cs1_07_grnd022', + [380798168] = 'cs1_07_grnd03a', + [820623686] = 'cs1_07_grnd03b', + [-2116191126] = 'cs1_07_grnd07', + [-733798056] = 'cs1_07_grnd08', + [-234529572] = 'cs1_07_grnd09', + [395716893] = 'cs1_07_grnd11', + [1834931341] = 'cs1_07_grnd12', + [2098230256] = 'cs1_07_grnd13', + [1273267682] = 'cs1_07_grnd13b', + [-1259244770] = 'cs1_07_hedgebasea', + [1256923582] = 'cs1_07_hedgedecala', + [1007410426] = 'cs1_07_house08_obj', + [-1746506046] = 'cs1_07_house08', + [1624526046] = 'cs1_07_hs009_dec', + [443205799] = 'cs1_07_hs009', + [-396974465] = 'cs1_07_hsesteps_railing', + [-429222290] = 'cs1_07_hsesteps1', + [1509165164] = 'cs1_07_land3_dets', + [530310066] = 'cs1_07_newhouse_obj', + [1934306666] = 'cs1_07_newhousea_dec', + [1875808553] = 'cs1_07_newhousea_obj', + [-952812281] = 'cs1_07_newhousea', + [-204260004] = 'cs1_07_newhouseb_dec', + [-1100682619] = 'cs1_07_newhouseb_rail', + [591656231] = 'cs1_07_newhouseb', + [1487229989] = 'cs1_07_newhousec_dec', + [558123349] = 'cs1_07_newhousec_rails', + [869832272] = 'cs1_07_newhousec', + [1778620057] = 'cs1_07_newhoused_dec', + [964250469] = 'cs1_07_newhoused_rail', + [-366116101] = 'cs1_07_newhoused', + [-432128162] = 'cs1_07_pier_decals', + [4352823] = 'cs1_07_pier_rail', + [-1779173517] = 'cs1_07_pier_rail2', + [1620329686] = 'cs1_07_pier', + [-29722692] = 'cs1_07_platform_dec', + [-1845583920] = 'cs1_07_platform_rail', + [-1186816710] = 'cs1_07_platform', + [826926677] = 'cs1_07_props_combo17_02_lod', + [1550555894] = 'cs1_07_props_combo24_13_lod', + [381395553] = 'cs1_07_props_combo24_14_lod', + [158386659] = 'cs1_07_props_towels006', + [2074748931] = 'cs1_07_pumping_dec', + [-901608304] = 'cs1_07_pumping', + [-1297057001] = 'cs1_07_retwall1', + [-444189735] = 'cs1_07_sea_01', + [-575270838] = 'cs1_07_sea_01b', + [-5216211] = 'cs1_07_sea_02', + [421274220] = 'cs1_07_sea_1_00_lod', + [424480559] = 'cs1_07_sea_1_00', + [-302492221] = 'cs1_07_sea_1_01_lod', + [1199696792] = 'cs1_07_sea_1_01', + [-667708105] = 'cs1_07_sea_1_02_lod', + [-190364188] = 'cs1_07_sea_1_02', + [410940547] = 'cs1_07_sea_1_03_lod', + [585704039] = 'cs1_07_sea_1_03', + [1438706573] = 'cs1_07_sea_1_04_lod', + [1844623485] = 'cs1_07_sea_1_04', + [661067764] = 'cs1_07_sea_1_05_lod', + [1408533633] = 'cs1_07_sea_1_05', + [-132576427] = 'cs1_07_sea_1_06_lod', + [1365475159] = 'cs1_07_sea_1_06', + [1563632371] = 'cs1_07_sea_1_07_lod', + [1076485348] = 'cs1_07_sea_1_07', + [-2139406327] = 'cs1_07_sea_1_08_lod', + [-1494341005] = 'cs1_07_sea_1_08', + [-1839097454] = 'cs1_07_sea_1_09_lod', + [-864127597] = 'cs1_07_sea_1_09', + [-285581847] = 'cs1_07_sea_1_10_lod', + [1155753851] = 'cs1_07_sea_1_10', + [1294262609] = 'cs1_07_sea_1_11_lod', + [849396470] = 'cs1_07_sea_1_11', + [-9282406] = 'cs1_07_sea_1_12', + [757938191] = 'cs1_07_sea_1_13', + [-1497686350] = 'cs1_07_sea_1_14_lod', + [1870019748] = 'cs1_07_sea_1_14', + [470776504] = 'cs1_07_sea_1_15_lod', + [1563990057] = 'cs1_07_sea_1_15', + [1003201644] = 'cs1_07_sea_1_15b_lod', + [-319798935] = 'cs1_07_sea_1_15b', + [-820500077] = 'cs1_07_sea_1_16_lod', + [1276736995] = 'cs1_07_sea_1_16', + [-677034091] = 'cs1_07_sea_1_17_lod', + [1013372542] = 'cs1_07_sea_1_17', + [349362390] = 'cs1_07_sea_1_18_lod', + [-1837890913] = 'cs1_07_sea_1_18', + [-829052923] = 'cs1_07_sea_de1b', + [1546251872] = 'cs1_07_sea_de2', + [-361526539] = 'cs1_07_sea_de3', + [1138081208] = 'cs1_07_sea_de4', + [1360549949] = 'cs1_07_sea_de5', + [149425720] = 'cs1_07_sea_metal_beams', + [-153944367] = 'cs1_07_sea_plane_00', + [-1009794645] = 'cs1_07_sea_plane_016', + [-750700626] = 'cs1_07_sea_plane_02', + [1496543168] = 'cs1_07_sea_plane_022', + [-1057254621] = 'cs1_07_sea_plane_03', + [-1347555196] = 'cs1_07_sea_plane_04', + [-1922126842] = 'cs1_07_sea_plane_05', + [2088634917] = 'cs1_07_sea_plane_06', + [1782310305] = 'cs1_07_sea_plane_07', + [-326735384] = 'cs1_07_sea_plane_08', + [-420126738] = 'cs1_07_sea_plane_13', + [-307566184] = 'cs1_07_sea_pln_deb_00', + [-13464405] = 'cs1_07_sea_pln_deb_01', + [149463063] = 'cs1_07_sea_pln_deb_02', + [480593808] = 'cs1_07_sea_pln_deb_03', + [-1231717522] = 'cs1_07_sea_pln_deb_04', + [-932110555] = 'cs1_07_sea_pln_deb_05', + [-1641967363] = 'cs1_07_sea_pln_debb_01', + [-1336724128] = 'cs1_07_sea_pln_debb_02', + [384643919] = 'cs1_07_sea_pln_rub_01', + [2028395707] = 'cs1_07_sea_ub_00_lod', + [-474268976] = 'cs1_07_sea_ub_00', + [-708881488] = 'cs1_07_sea_ub_04_lod', + [449489134] = 'cs1_07_sea_ub_04', + [-784723876] = 'cs1_07_sea_un_bb_00_d', + [479864026] = 'cs1_07_sea_un_bb_00_lod', + [1612388817] = 'cs1_07_sea_un_bb_00', + [1831288349] = 'cs1_07_sea_uw_bb_04', + [-1561438346] = 'cs1_07_sea_uw_bb_06_d', + [393790868] = 'cs1_07_sea_uw_bb_06_lod', + [-1985218778] = 'cs1_07_sea_uw_bb_06', + [-466675645] = 'cs1_07_sea_uw_bb_06b_lod', + [1343960847] = 'cs1_07_sea_uw_bb_06b', + [-1711974405] = 'cs1_07_sea_uw_bb_07_d', + [-1524748790] = 'cs1_07_sea_uw_bb_08', + [1346459934] = 'cs1_07_sea_uw_dec_00', + [2038064321] = 'cs1_07_sea_uw_dec_012b', + [717557286] = 'cs1_07_sea_uw_dec_02', + [130435113] = 'cs1_07_sea_uw_dec_03', + [1417973900] = 'cs1_07_sea_uw_dec_03z', + [443805060] = 'cs1_07_sea_uw_dec_04', + [1569223596] = 'cs1_07_sea_uw_dec_05', + [-960543204] = 'cs1_07_sea_uw_dec_07', + [-508920846] = 'cs1_07_sea_uw_dec_08', + [-1539047130] = 'cs1_07_sea_uw_dec_09', + [-1743689827] = 'cs1_07_sea_uw_dec_10', + [-1022313057] = 'cs1_07_sea_uw_dec_11', + [-953693891] = 'cs1_07_sea_uw_dec_21', + [93566946] = 'cs1_07_sea_uw2_00', + [-575510496] = 'cs1_07_sea_uw2_01', + [-1342993245] = 'cs1_07_sea_uw2_02', + [-1171152609] = 'cs1_07_sea_uw2_03', + [-1938307672] = 'cs1_07_sea_uw2_04', + [-1650563083] = 'cs1_07_sea_uw2_05', + [1994529405] = 'cs1_07_sea_uw2_06', + [1683027291] = 'cs1_07_sea_uw2_09', + [602602048] = 'cs1_07_sea_uw2_11', + [966403490] = 'cs1_07_sea_uw2_12', + [682591181] = 'cs1_07_sea_uw2_13', + [1579544249] = 'cs1_07_sea_uw2_14', + [1257654362] = 'cs1_07_sea_uw2_15', + [2086742831] = 'cs1_07_sea_uw2_16', + [1870860659] = 'cs1_07_sea_uw2_17', + [-1523221289] = 'cs1_07_sea_uw2_18', + [-429084586] = 'cs1_07_shack', + [1289399560] = 'cs1_07_shed', + [1136019473] = 'cs1_07_stairsd_rail', + [1792197356] = 'cs1_07_stairsd', + [270674597] = 'cs1_07_substation_dec', + [207473807] = 'cs1_07_substation_details', + [-1060973428] = 'cs1_07_substation', + [-451311644] = 'cs1_07_tempblockb_dec', + [-1771743848] = 'cs1_07_tempblockb', + [-1270729532] = 'cs1_07_temphouse1_dec', + [1713687640] = 'cs1_07_temphouse1', + [425243325] = 'cs1_07_temphouse7', + [-24404907] = 'cs1_07_temphouse8_dec', + [935501713] = 'cs1_07_weed_01', + [639433794] = 'cs1_07_weed_02', + [343628031] = 'cs1_07_weed_03', + [-1604904306] = 'cs1_08_bridgedecal_01', + [306544233] = 'cs1_08_bridgedecal_02', + [1760832525] = 'cs1_08_bridgedecal_03', + [-1980460782] = 'cs1_08_coastdec00', + [-1480340304] = 'cs1_08_coastdec01', + [514800261] = 'cs1_08_coastdec02', + [241211880] = 'cs1_08_coastdec03', + [1445246585] = 'cs1_08_cs_ft1', + [-655372173] = 'cs1_08_cst01_d1', + [-1079321179] = 'cs1_08_cst01', + [-380892029] = 'cs1_08_cst03_d3', + [-635465074] = 'cs1_08_cst03', + [467217785] = 'cs1_08_cst04_d2', + [609841295] = 'cs1_08_cst04_decals', + [-337496557] = 'cs1_08_cst04', + [1058467226] = 'cs1_08_cst05_d', + [-161428720] = 'cs1_08_cst05', + [2128824530] = 'cs1_08_decal_002', + [1886792837] = 'cs1_08_foam_01', + [1436546777] = 'cs1_08_foam_02', + [1072089959] = 'cs1_08_foam_03', + [956579234] = 'cs1_08_foam_04', + [592581182] = 'cs1_08_foam_05', + [-329898937] = 'cs1_08_foam_06', + [382564661] = 'cs1_08_foam_07', + [-284565805] = 'cs1_08_island_d_1', + [-1683191386] = 'cs1_08_land07_d_track', + [-2129216503] = 'cs1_08_land07', + [1914027623] = 'cs1_08_pier_emissive_lod', + [-1378904225] = 'cs1_08_pier_emissive', + [-732411154] = 'cs1_08_pier_post1', + [112603049] = 'cs1_08_pier_post2', + [1960569689] = 'cs1_08_pier_post2a', + [-126545113] = 'cs1_08_pier_post3', + [-1329797558] = 'cs1_08_pier_rail1', + [2130182849] = 'cs1_08_pier_rail2', + [1594320028] = 'cs1_08_pier_rail2a', + [1504336354] = 'cs1_08_pier_rail2b', + [-34364810] = 'cs1_08_pier_rail2c', + [-2051721807] = 'cs1_08_pier01_dec', + [649823432] = 'cs1_08_pier01', + [-809675059] = 'cs1_08_pier02', + [-1465605771] = 'cs1_08_rks_01', + [-1147582626] = 'cs1_08_rks_02', + [-842306622] = 'cs1_08_rks_03', + [1275512901] = 'cs1_08_roaddecal_01', + [-229742402] = 'cs1_08_rockcp_hut', + [2005442127] = 'cs1_08_rockcrop01', + [1323589283] = 'cs1_08_rockcrop010', + [-1760432399] = 'cs1_08_rockcrop01a', + [-147776106] = 'cs1_08_rockcrop02', + [84195645] = 'cs1_08_rockcrop03', + [303747945] = 'cs1_08_rockcrop04', + [543780870] = 'cs1_08_rockcrop05', + [-872724697] = 'cs1_08_rockcrop08', + [-644619688] = 'cs1_08_rockcrop09', + [-917496772] = 'cs1_08_sa02_d', + [-1459095554] = 'cs1_08_sandbar01_d1', + [-1723803536] = 'cs1_08_sandbar01_d2', + [-1613733946] = 'cs1_08_sandbar01', + [-1824700772] = 'cs1_08_sandbar02', + [957855057] = 'cs1_08_sandbar03_d', + [-1524077966] = 'cs1_08_sandbar03', + [939858695] = 'cs1_08_sea_00_lod', + [-1217984358] = 'cs1_08_sea_00', + [600594340] = 'cs1_08_sea_01_lod', + [239449686] = 'cs1_08_sea_01', + [504649203] = 'cs1_08_sea_02', + [1930690545] = 'cs1_08_sea_03', + [13933428] = 'cs1_08_sea_04', + [1017254670] = 'cs1_08_sea_05', + [1248013968] = 'cs1_08_sea_06', + [-1625532415] = 'cs1_08_sea_07', + [-1357219843] = 'cs1_08_sea_08', + [-444963644] = 'cs1_08_sea_09', + [1559647422] = 'cs1_08_sea_10', + [1137943161] = 'cs1_08_sea_11', + [-1960183407] = 'cs1_08_sea_base', + [895761631] = 'cs1_08_sea_d_00', + [-891754554] = 'cs1_08_sea_d_02', + [-1153447788] = 'cs1_08_sea_d_03', + [-294867215] = 'cs1_08_sea_d_04', + [-526216355] = 'cs1_08_sea_d_05', + [1717018309] = 'cs1_08_sea_d_06', + [2024129377] = 'cs1_08_sea_d_07', + [-1480089180] = 'cs1_08_sea_d_08', + [-1675982262] = 'cs1_08_sea_d_09', + [-479026439] = 'cs1_08_sea_d_10', + [-1297628820] = 'cs1_08_sea_d_11', + [-1715662953] = 'cs1_08_sea_d_13', + [-339843891] = 'cs1_08_sea_rok_01', + [409484836] = 'cs1_08_sea_rok_03', + [2105750349] = 'cs1_08_sea_rok_030', + [-2013502937] = 'cs1_08_sea_rok_08a', + [-2073486928] = 'cs1_08_sea_rok_13', + [1498104697] = 'cs1_08_sea_rok_15', + [1125197813] = 'cs1_08_sea_shard_009', + [-2036992909] = 'cs1_08_sea_shard_5b001', + [1468441926] = 'cs1_08_sea_shard_9b', + [1469919108] = 'cs1_08_sea_udec_00', + [1097794344] = 'cs1_08_sea_udec_01', + [2066216601] = 'cs1_08_sea_udec_02', + [1693895223] = 'cs1_08_sea_udec_03', + [-1732955725] = 'cs1_08_sea_udec_04', + [-1396733] = 'cs1_08_sea_uw_dec_00', + [1855458652] = 'cs1_08_sea_uw_dec_08', + [1558407663] = 'cs1_08_sea_uw_dec_09', + [64927439] = 'cs1_08_sea_uw_dec_20', + [-928858020] = 'cs1_08_sea_uw_dec_23', + [-1130321832] = 'cs1_08_sea_uw_dec_24', + [-1375204569] = 'cs1_08_sea_uw_dec_25', + [-1605537870] = 'cs1_08_sea_uw_dec_26', + [1820657990] = 'cs1_08_sea_uw_dec_30', + [2127015371] = 'cs1_08_sea_uw_dec_31', + [367852682] = 'cs1_08_sea_uw_dec_31b', + [-829633204] = 'cs1_08_sea_uw_dec_32', + [395468634] = 'cs1_08_sea_uw_dec_36', + [931782219] = 'cs1_08_sea_uw1_00_lod', + [1317359736] = 'cs1_08_sea_uw1_00', + [-998582139] = 'cs1_08_sea_uw1_01_lod', + [1620374679] = 'cs1_08_sea_uw1_01', + [-260127357] = 'cs1_08_sea_uw1_02_lod', + [1927485747] = 'cs1_08_sea_uw1_02', + [-17450471] = 'cs1_08_sea_uw1_03_lod', + [-2062172776] = 'cs1_08_sea_uw1_03', + [595286138] = 'cs1_08_sea_uw1_04_lod', + [423618026] = 'cs1_08_sea_uw1_04', + [2032151320] = 'cs1_08_sea_uw1_08a_lod', + [336746425] = 'cs1_08_sea_uw1_08a', + [-464236085] = 'cs1_08_sea_uw1_b_00_lod', + [14757637] = 'cs1_08_sea_uw1_b_00', + [476104714] = 'cs1_08_sea_uw1_b_03_lod', + [297226417] = 'cs1_08_sea_uw1_b_03', + [689226956] = 'cs1_08_sea_uw2_01', + [1044451919] = 'cs1_08_sea_uw2_029_lod', + [992653327] = 'cs1_08_sea_uw2_029', + [-1498020072] = 'cs1_08_sea_uw2_02b', + [-1313773946] = 'cs1_08_sea_uw2_03_lod', + [209324951] = 'cs1_08_sea_uw2_03', + [-1780239855] = 'cs1_08_sea_uw2_030_lod', + [-1434021967] = 'cs1_08_sea_uw2_030', + [621151338] = 'cs1_08_sea_uw2_03b', + [985987199] = 'cs1_08_sea_uw2_04_lod', + [-240069115] = 'cs1_08_sea_uw2_04', + [1297141051] = 'cs1_08_sea_uw2_04b', + [1946889609] = 'cs1_08_sea_uw2_05_lod', + [21591350] = 'cs1_08_sea_uw2_05', + [-446460148] = 'cs1_08_sea_uw2_05b_lod', + [-34984081] = 'cs1_08_sea_uw2_05b', + [39827898] = 'cs1_08_sea_uw2_06b', + [-1203686987] = 'cs1_08_sea_uw2_07b', + [-1392240101] = 'cs1_08_sea_uw2_08b', + [70892166] = 'cs1_08_sea_uw2_09b_lod', + [-673124732] = 'cs1_08_sea_uw2_09b', + [-189637276] = 'cs1_08_sea_uw2_10', + [-1464810146] = 'cs1_08_sea_uw2_11', + [1925360065] = 'cs1_08_sea_uw2_13_lod', + [-1940648795] = 'cs1_08_sea_uw2_13', + [-236363353] = 'cs1_08_sea_uw2_15_lod', + [-1716607170] = 'cs1_08_sea_uw2_15', + [-2040004431] = 'cs1_08_sea_uw2_16', + [2063689728] = 'cs1_08_sea_uw2_19_lod', + [1588801864] = 'cs1_08_sea_uw2_19', + [478130786] = 'cs1_08_sea_uw2_25', + [852090614] = 'cs1_08_sea_uw2_26', + [-723636340] = 'cs1_08_sea_uw2_33b', + [-637777059] = 'cs1_08_sea_uwb00_lod', + [512194865] = 'cs1_08_sea_uwb00', + [-65969874] = 'cs1_08_sea_uwb01_lod', + [711561461] = 'cs1_08_sea_uwb01', + [1740021517] = 'cs1_08_sea_uwb02_lod', + [1009529978] = 'cs1_08_sea_uwb02', + [-739763931] = 'cs1_08_sea_uwb03_lod', + [1170589613] = 'cs1_08_sea_uwb03', + [885134282] = 'cs1_08_sea_uwb04_lod', + [1475275775] = 'cs1_08_sea_uwb04', + [-445676985] = 'cs1_08_sea_uwb05_lod', + [2125707660] = 'cs1_08_sea_uwb05', + [-146551198] = 'cs1_08_sea_uwb06_lod', + [1352850795] = 'cs1_08_sea_uwb06', + [-1216131709] = 'cs1_08_sea_uwb07_lod', + [-1705414441] = 'cs1_08_sea_uwb07', + [-766097235] = 'cs1_08_sea_uwdecals00', + [-2137283271] = 'cs1_08_sea_uwdecals01', + [159135484] = 'cs1_08_sea_uwdecals02', + [1538972536] = 'cs1_08_sea_uwdecals03', + [1821015319] = 'cs1_08_sea_uwdecals04', + [1060184677] = 'cs1_08_sea_uwdecals05', + [-1068587862] = 'cs1_08_sea_uwdecals06', + [308627662] = 'cs1_08_sea_uwdecals07', + [665809762] = 'cs1_08_sea_uwdecals08', + [-102131753] = 'cs1_08_sea_uwdecals09', + [-955567817] = 'cs1_08_sea_uwdecals10', + [-1524961961] = 'cs1_08_sea_uwdecals11', + [1911326451] = 'cs1_08_sea_uwdecals12', + [-2142559312] = 'cs1_08_sea_uwdecals13', + [-1823127100] = 'cs1_08_sea_uwdecals14', + [-1550259637] = 'cs1_08_sea_uwdecals15', + [959399522] = 'cs1_08_steps_rail', + [468158278] = 'cs1_08_steps', + [814739774] = 'cs1_08_str102', + [1954634453] = 'cs1_08_weedz', + [-638663836] = 'cs1_09_build_00', + [884650142] = 'cs1_09_build_01_rail1', + [614830196] = 'cs1_09_build_01_rail2', + [-274075942] = 'cs1_09_build_01', + [1921381520] = 'cs1_09_build_02', + [-2139778957] = 'cs1_09_build_03', + [-1758741025] = 'cs1_09_build_04', + [-1529849560] = 'cs1_09_build_05', + [1816376317] = 'cs1_09_build01_emm01_lod', + [389940346] = 'cs1_09_build01_emm01', + [-959898165] = 'cs1_09_culvert004', + [-1265469090] = 'cs1_09_culvert005', + [-867645921] = 'cs1_09_decals_01', + [1833215384] = 'cs1_09_decals_01b', + [-1150369313] = 'cs1_09_decals_01c', + [-91774308] = 'cs1_09_decals_02', + [-255750384] = 'cs1_09_decals_03', + [527264871] = 'cs1_09_decals_04', + [325997673] = 'cs1_09_decals_05', + [1104752962] = 'cs1_09_decals_06', + [-1533231507] = 'cs1_09_decals_build_02', + [-1866885465] = 'cs1_09_decals_build_03', + [-1073777358] = 'cs1_09_decals_build_04', + [2125577412] = 'cs1_09_diner_d', + [970067215] = 'cs1_09_diner_emmis', + [-2019822240] = 'cs1_09_diner_neons', + [1546026557] = 'cs1_09_diner_posts', + [-26669571] = 'cs1_09_diner_rocket', + [38220778] = 'cs1_09_diner', + [-1673452049] = 'cs1_09_elec_wire_spline18', + [1320085512] = 'cs1_09_elec_wire_spline21', + [-1738474641] = 'cs1_09_elec_wire_spline24', + [-1841263698] = 'cs1_09_elec_wire_spline31', + [-1627114163] = 'cs1_09_emissive_01', + [989468834] = 'cs1_09_foam_01', + [961287482] = 'cs1_09_foam_02', + [1207546517] = 'cs1_09_foam_03', + [481778705] = 'cs1_09_foam_04', + [1333191807] = 'cs1_09_ld_007', + [1183362461] = 'cs1_09_ld_007b', + [-417668481] = 'cs1_09_ld_01', + [-1128952395] = 'cs1_09_ld_02', + [-1607576409] = 'cs1_09_ld_03', + [2142835645] = 'cs1_09_ld_05', + [-1844561817] = 'cs1_09_ld_06', + [-775037749] = 'cs1_09_props_elec_spider_spline053b001', + [-1546719482] = 'cs1_09_props_elec_spider_spline054', + [-1495981469] = 'cs1_09_rockcrop01_d', + [-2104548740] = 'cs1_09_rockcrop01', + [-1721000414] = 'cs1_09_rockcrop02_d', + [1496567750] = 'cs1_09_rockcrop02', + [-1852342981] = 'cs1_09_rockcrop03_d', + [1728473963] = 'cs1_09_rockcrop03', + [1917869645] = 'cs1_09_rockcrop04_d', + [1244541371] = 'cs1_09_rockcrop04', + [-65033233] = 'cs1_09_sea_11_00_lod', + [1421233725] = 'cs1_09_sea_11_00', + [544954074] = 'cs1_09_sea_11_01_lod', + [410637765] = 'cs1_09_sea_11_01', + [738864128] = 'cs1_09_sea_11_02_lod', + [641954136] = 'cs1_09_sea_11_02', + [1869853205] = 'cs1_09_sea_11_03_lod', + [-1143235446] = 'cs1_09_sea_11_03', + [-233571349] = 'cs1_09_sea_11_04_lod', + [-911067081] = 'cs1_09_sea_11_04', + [763056379] = 'cs1_09_sea_cs1_09_udec_01', + [40239485] = 'cs1_09_sea_rok_01', + [-79400134] = 'cs1_09_sea_rok_02', + [-979712032] = 'cs1_09_sea_slod_01', + [-336740389] = 'cs1_09_sea_ub_00_lod', + [600672409] = 'cs1_09_sea_ub_00', + [-1467510976] = 'cs1_09_sea_ub_01_lod', + [842704243] = 'cs1_09_sea_ub_01', + [271705353] = 'cs1_09_sea_ub_02_lod', + [1081360870] = 'cs1_09_sea_ub_02', + [-859086736] = 'cs1_09_sea_ub_03_lod', + [1388701321] = 'cs1_09_sea_ub_03', + [-490003375] = 'cs1_09_sea_ub_04_lod', + [1628930860] = 'cs1_09_sea_ub_04', + [-1503908793] = 'cs1_09_sea_ub_05_lod', + [2106571804] = 'cs1_09_sea_ub_05', + [1674790703] = 'cs1_09_sea_udecb_00', + [1549318198] = 'cs1_09_sea_udecb_02', + [350589690] = 'cs1_09_sea_ufo', + [-504013165] = 'cs1_09_sea_uw0_00_lod', + [-1402013630] = 'cs1_09_sea_uw0_00', + [1647394198] = 'cs1_09_sea_uw0_01_lod', + [-1817786702] = 'cs1_09_sea_uw0_01', + [-371165007] = 'cs1_09_sea_uw0_02_lod', + [-2123292089] = 'cs1_09_sea_uw0_02', + [-1831827082] = 'cs1_09_sea_uw0_03_lod', + [2017595369] = 'cs1_09_sea_uw0_03', + [-1915183410] = 'cs1_09_sea_uw0_04_lod', + [1711500140] = 'cs1_09_sea_uw0_04', + [-251643488] = 'cs1_09_sea_uw0_05_lod', + [865470094] = 'cs1_09_sea_uw0_05', + [677538060] = 'cs1_09_sea_uw0_06_lod', + [559178251] = 'cs1_09_sea_uw0_06', + [1850165893] = 'cs1_09_sea_uw0_07_lod', + [402739045] = 'cs1_09_sea_uw0_07', + [-923538936] = 'cs1_09_sea_uw0_08_lod', + [-87419657] = 'cs1_09_sea_uw0_08', + [113309067] = 'cs1_09_sea_uw0_09_lod', + [-392400740] = 'cs1_09_sea_uw0_09', + [-1740680231] = 'cs1_09_sea_uw0_10_lod', + [1017026943] = 'cs1_09_sea_uw0_10', + [1535853701] = 'cs1_09_sea_uw0_11_lod', + [1364050653] = 'cs1_09_sea_uw0_11', + [-37119733] = 'cs1_09_sea_uw0_12_lod', + [1739648931] = 'cs1_09_sea_uw0_12', + [-798636320] = 'cs1_09_sea_uw1_01_lod', + [1858492358] = 'cs1_09_sea_uw1_01', + [-2118456412] = 'cs1_09_sea_uw1_03_lod', + [1246924511] = 'cs1_09_sea_uw1_03', + [-1523821697] = 'cs1_09_sea_uw1_04_lod', + [1461266540] = 'cs1_09_sea_uw1_04', + [-1131535352] = 'cs1_09_sea_uw1_05_lod', + [-1519926008] = 'cs1_09_sea_uw1_05', + [-1167937769] = 'cs1_09_sea_uw1_06_lod', + [1610562108] = 'cs1_09_sea_uw1_06', + [-1569234189] = 'cs1_09_sea_uw1_08_lod', + [-1148489389] = 'cs1_09_sea_uw1_08', + [-45497210] = 'cs1_09_sea_uw1_09_lod', + [-1974202651] = 'cs1_09_sea_uw1_09', + [2045829726] = 'cs1_09_sea_uw1_46_lod', + [-427757038] = 'cs1_09_sea_uw1_46', + [1740588592] = 'cs1_09_sea_uw2_00_lod', + [-111056920] = 'cs1_09_sea_uw2_00', + [71460872] = 'cs1_09_sea_uw2_01_lod', + [-885879925] = 'cs1_09_sea_uw2_01', + [1371511924] = 'cs1_09_sea_uw2_02_lod', + [-584568970] = 'cs1_09_sea_uw2_02', + [1857350451] = 'cs1_09_sea_uw2_02a', + [735988961] = 'cs1_09_sea_uw2_03', + [229052531] = 'cs1_09_sea_uw2_04', + [1099462705] = 'cs1_09_sea_uw2_05', + [338795908] = 'cs1_09_sea_uw2_06', + [1678584628] = 'cs1_09_sea_uw2_07_lod', + [368288008] = 'cs1_09_sea_uw2_07', + [1757726381] = 'cs1_09_sea_uw2_08', + [2103308255] = 'cs1_09_sea_uw2_09', + [-2851997] = 'cs1_09_sea_uw2_10_lod', + [-1611156494] = 'cs1_09_sea_uw2_10', + [-243214585] = 'cs1_09_sea_uw2_11', + [41548025] = 'cs1_09_sea_uw2_12', + [-396916776] = 'cs1_09_sea_uw2_12a', + [527216798] = 'cs1_09_sea_uw2_13_lod', + [-696606469] = 'cs1_09_sea_uw2_13', + [675660944] = 'cs1_09_sea_uw2_14', + [983820620] = 'cs1_09_sea_uw2_15', + [217255403] = 'cs1_09_sea_uw2_16', + [1640445738] = 'cs1_09_sea_uw2_17', + [814765241] = 'cs1_09_sea_uw2_18', + [236003266] = 'cs1_09_sea_uw2_19_lod', + [1168539365] = 'cs1_09_sea_uw2_19', + [-507962468] = 'cs1_09_sea_uw2_20_lod', + [-1279600116] = 'cs1_09_sea_uw2_20', + [-1129092095] = 'cs1_09_sea_uw2_21', + [-1481555459] = 'cs1_09_sea_uw2_22', + [51692293] = 'cs1_09_sea_uw2_26_lod', + [-2055897722] = 'cs1_09_sea_uw2_26', + [-2085138118] = 'cs1_09_sea_uw2_27_lod', + [668648014] = 'cs1_09_sea_uw2_27', + [-1234951077] = 'cs1_09_sea_uw2_28_lod', + [1509926555] = 'cs1_09_sea_uw2_28', + [-1953760626] = 'cs1_09_sea_uw2_29_lod', + [38434602] = 'cs1_09_sea_uw2_29', + [1269027823] = 'cs1_09_sea_uw2_30_lod', + [-1629901038] = 'cs1_09_sea_uw2_30', + [-2000715042] = 'cs1_09_sea_uw2_31', + [2055136861] = 'cs1_09_sea_uw2_32', + [111214263] = 'cs1_09_sea_uw2_33', + [355310544] = 'cs1_09_sea_uw2_34', + [-871724661] = 'cs1_09_sea_uw2_35', + [-258944361] = 'cs1_09_sea_uw2_36', + [-1479229156] = 'cs1_09_sea_uw2_37', + [-1792468027] = 'cs1_09_sea_uw2_39', + [1346410973] = 'cs1_09_sea_uw2_40', + [-1047397250] = 'cs1_09_sea_uw2_41', + [-1415851886] = 'cs1_09_sea_uw2_42', + [1508507911] = 'cs1_09_sea_uwd_18b', + [-1042256878] = 'cs1_09_sea_uwdec00', + [-1400684200] = 'cs1_09_sea_uwdec01', + [-1723065622] = 'cs1_09_sea_uwdec02', + [420780673] = 'cs1_09_sea_uwdec03', + [-1965621756] = 'cs1_09_sea_uwdec04', + [1948766374] = 'cs1_09_sea_uwdec05', + [1739995075] = 'cs1_09_sea_uwdec06', + [-112305419] = 'cs1_09_sea_uwdec07', + [-352600496] = 'cs1_09_sea_uwdec08', + [-710372438] = 'cs1_09_sea_uwdec09', + [-2104294652] = 'cs1_09_sea_uwdec10', + [526335130] = 'cs1_09_sea_uwdec11', + [-315205559] = 'cs1_09_sea_uwdec12', + [-31720940] = 'cs1_09_sea_uwdec13', + [-907374158] = 'cs1_09_sea_uwdec14', + [1296537706] = 'cs1_09_sea_uwdec15', + [121075717] = 'cs1_09_sea_uwdecal_00', + [-753944341] = 'cs1_09_sea_uwdecal_11', + [-1483939358] = 'cs1_09_sea_uwdecal_13', + [-1523786462] = 'cs1_09_sea_uwdecal_14', + [-1984059836] = 'cs1_09_sea_uwdecal_15', + [2014905083] = 'cs1_09_sea_uwdecal_16', + [1965161741] = 'cs1_09_sea_uwdecal_17', + [1669749206] = 'cs1_09_sea_uwdecal_18', + [1205019248] = 'cs1_09_sea_uwdecal_19', + [1220083011] = 'cs1_09_sea_uwdecal_20', + [2109957975] = 'cs1_09_sea_uwdecal_21', + [1820640474] = 'cs1_09_sea_uwdecal_22', + [-1194065176] = 'cs1_10_cable_door1', + [-887941253] = 'cs1_10_cable_pylon_lod_002', + [-2097543358] = 'cs1_10_cable_pylon_lod_003', + [-1848072961] = 'cs1_10_cable_pylon_lod_004', + [-1498952035] = 'cs1_10_cable_pylon_lod_005', + [-1842866086] = 'cs1_10_cable_pylon_lod_01', + [411918885] = 'cs1_10_cablebld_d', + [1038815645] = 'cs1_10_cablebld', + [288064194] = 'cs1_10_clue_moon01', + [662286174] = 'cs1_10_clue_moon02', + [-1299210198] = 'cs1_10_clue_mountain01', + [716338215] = 'cs1_10_clue_rain01', + [420204762] = 'cs1_10_clue_rain02', + [1459346617] = 'cs1_10_culvert1_lod', + [-1132837573] = 'cs1_10_culvert1', + [-719036818] = 'cs1_10_decal_trail_a', + [-788738195] = 'cs1_10_decals01', + [-1521059799] = 'cs1_10_decals03', + [-1274112611] = 'cs1_10_decals04', + [-1042337474] = 'cs1_10_decals05', + [1305823528] = 'cs1_10_decals06', + [-249076980] = 'cs1_10_decals100', + [887904019] = 'cs1_10_decals100a', + [860495491] = 'cs1_10_decals12', + [2113319887] = 'cs1_10_decals13', + [-1884072120] = 'cs1_10_decals14', + [-665655162] = 'cs1_10_decals15', + [1786612957] = 'cs1_10_decals16', + [-1223678463] = 'cs1_10_decals17', + [-957692490] = 'cs1_10_decals18', + [334782412] = 'cs1_10_decals19', + [-188899317] = 'cs1_10_decals20', + [1308086910] = 'cs1_10_decals21', + [1681522434] = 'cs1_10_decals22', + [-447938254] = 'cs1_10_decals23', + [1139064416] = 'cs1_10_decals28', + [2036312393] = 'cs1_10_decals29', + [-2064957592] = 'cs1_10_decals30', + [245650140] = 'cs1_10_decals31', + [554694579] = 'cs1_10_decals32', + [-1294787785] = 'cs1_10_decals33', + [-1014645604] = 'cs1_10_decals34', + [1162592298] = 'cs1_10_decals35', + [1475962245] = 'cs1_10_decals36', + [-370767519] = 'cs1_10_decals37', + [-158358861] = 'cs1_10_decals38', + [-1603438992] = 'cs1_10_decals39', + [1028206313] = 'cs1_10_decals40', + [1878496313] = 'cs1_10_decals41', + [-1700075105] = 'cs1_10_decals42', + [-731587310] = 'cs1_10_decals43', + [2131636838] = 'cs1_10_decals44', + [-1193204213] = 'cs1_10_decals45', + [372957377] = 'cs1_10_decals47', + [135283820] = 'cs1_10_decals48', + [-92460730] = 'cs1_10_decals49', + [1863644764] = 'cs1_10_decals50', + [-1053975928] = 'cs1_10_decals51', + [-749256997] = 'cs1_10_decals52', + [491639503] = 'cs1_10_decals53', + [788428336] = 'cs1_10_decals54', + [-1975374670] = 'cs1_10_decals55', + [-1671802654] = 'cs1_10_decals56', + [2028374523] = 'cs1_10_decals58', + [1398456036] = 'cs1_10_decals59', + [1653496815] = 'cs1_10_decals60', + [-1028570290] = 'cs1_10_decals60a1', + [112436283] = 'cs1_10_decals61', + [-186056538] = 'cs1_10_decals62', + [1954152398] = 'cs1_10_decals63', + [1647598403] = 'cs1_10_decals64', + [114664583] = 'cs1_10_decals65', + [-191430646] = 'cs1_10_decals66', + [-1690088100] = 'cs1_10_decals67', + [-1987991079] = 'cs1_10_decals68', + [1313551217] = 'cs1_10_decals69', + [-1486461874] = 'cs1_10_decals70', + [1366405812] = 'cs1_10_decals70b', + [804844917] = 'cs1_10_decals71', + [497766618] = 'cs1_10_decals72', + [-749814754] = 'cs1_10_decals73', + [-985784323] = 'cs1_10_decals74', + [1764517851] = 'cs1_10_decals75', + [1997849526] = 'cs1_10_elec_spider_spline052b002', + [1079125479] = 'cs1_10_flag_post002', + [1233962181] = 'cs1_10_flag_post01', + [1744076185] = 'cs1_10_hd_01', + [-545483194] = 'cs1_10_hd_01a', + [836637037] = 'cs1_10_hd_02', + [-76602224] = 'cs1_10_hd_03', + [326960210] = 'cs1_10_hd_03a', + [-446826382] = 'cs1_10_hd_04', + [543092335] = 'cs1_10_hd_05', + [-350977061] = 'cs1_10_hd_06', + [-687186933] = 'cs1_10_hd_07', + [-369393175] = 'cs1_10_hd_08', + [-1260218436] = 'cs1_10_hd_09', + [407657770] = 'cs1_10_hd_10', + [1526850196] = 'cs1_10_hd_11', + [939728023] = 'cs1_10_hd_12', + [-781791388] = 'cs1_10_hd_13', + [-609623062] = 'cs1_10_hd_14', + [617084449] = 'cs1_10_hd_15', + [-26629787] = 'cs1_10_hd_16', + [-1946368879] = 'cs1_10_hd_17', + [375055783] = 'cs1_10_hd_22', + [-850275434] = 'cs1_10_hd_23', + [-1086834845] = 'cs1_10_hd_24', + [2012457179] = 'cs1_10_hd_25', + [1772686406] = 'cs1_10_hd_26', + [-1783077788] = 'cs1_10_hd_27', + [-2005775912] = 'cs1_10_hd_28', + [1279381588] = 'cs1_10_hd_30', + [-1712624726] = 'cs1_10_hd_31', + [-254570735] = 'cs1_10_hd_32_dec', + [732827437] = 'cs1_10_hd_32', + [1214830650] = 'cs1_10_hd_81', + [2129282412] = 'cs1_10_hd_85', + [-40287836] = 'cs1_10_hd_99', + [1262821715] = 'cs1_10_mountainviewp_fizz', + [1120907305] = 'cs1_10_mountainviewpoint_d', + [-661632656] = 'cs1_10_mountainviewpoint_lod', + [-1022725366] = 'cs1_10_mountainviewpoint', + [1405190493] = 'cs1_10_netting01', + [768189342] = 'cs1_10_platform_b_d', + [-1166372184] = 'cs1_10_platform_b_lod', + [-8994836] = 'cs1_10_platform_b', + [1820211126] = 'cs1_10_props_combo0501_dslod', + [-544828714] = 'cs1_10_pylon_guide_wire06', + [217312688] = 'cs1_10_pylon_guide_wire07', + [-83015197] = 'cs1_10_pylon_guide_wire08', + [2015773723] = 'cs1_10_pylon_guide_wire09', + [966445093] = 'cs1_10_pylon_guide_wire10', + [-415770029] = 'cs1_10_pylon_tense_wire06', + [-101351474] = 'cs1_10_pylon_tense_wire07', + [-93224742] = 'cs1_10_pylon_tense_wire08', + [205005927] = 'cs1_10_pylon_tense_wire09', + [-265721110] = 'cs1_10_pylon_tense_wire10', + [1287895804] = 'cs1_10_redeye', + [635579383] = 'cs1_10_retwall01_slod', + [-560840151] = 'cs1_10_retwall01', + [-584013820] = 'cs1_10_retwall018', + [-254286156] = 'cs1_10_retwall02', + [1904289944] = 'cs1_10_retwall03_lod', + [-1912180217] = 'cs1_10_retwall03_slod', + [944960941] = 'cs1_10_retwall03', + [-1631191921] = 'cs1_10_retwall04_lod', + [478803256] = 'cs1_10_retwall04_slod', + [176724505] = 'cs1_10_retwall04', + [-1012822964] = 'cs1_10_retwall05', + [638275870] = 'cs1_10_retwall06', + [-1237439991] = 'cs1_10_retwall07_lod003', + [1839620179] = 'cs1_10_retwall07', + [-2029246821] = 'cs1_10_retwall08_lod', + [1071088822] = 'cs1_10_retwall08', + [489373534] = 'cs1_10_retwall09', + [852815441] = 'cs1_10_retwall10', + [-1757202644] = 'cs1_10_retwall12', + [-2074767023] = 'cs1_10_retwall13', + [-99517241] = 'cs1_10_retwall14', + [1049068982] = 'cs1_10_retwall16', + [-1288933630] = 'cs1_10_retwall17', + [-1466168459] = 'cs1_10_retwallbroken', + [-368142756] = 'cs1_10_sign_post_01', + [-129420591] = 'cs1_10_sign_post_02', + [2002563318] = 'cs1_10_sign_post_03', + [1164528912] = 'cs1_10_sign_post_04', + [1422978015] = 'cs1_10_sign_post_05', + [-274502043] = 'cs1_10_tower01', + [51320064] = 'cs1_10_tower02', + [-1023503076] = 'cs1_10_tower03', + [-784256607] = 'cs1_10_tower04', + [-1588407915] = 'cs1_10_tower05', + [1022440667] = 'cs1_10_tyretrack01_d', + [-2111317758] = 'cs1_11_bigtenta2', + [-174382383] = 'cs1_11_cs1_fault_01', + [-2101802467] = 'cs1_11_cs1_fault_01a', + [190664277] = 'cs1_11_cs1_fault_02', + [420997578] = 'cs1_11_cs1_fault_03', + [-1361046180] = 'cs1_11_cs1_fault_04', + [798529219] = 'cs1_11_cs1_fault_05', + [-1713214635] = 'cs1_11_cs1_fault_06', + [1394826712] = 'cs1_11_cs1_fault_07', + [1030042204] = 'cs1_11_cs1_fault_08', + [1716388909] = 'cs1_11_cs1_fault_09', + [-1023397048] = 'cs1_11_cs1_fault_10', + [1346129342] = 'cs1_11_cs1_fault_11', + [1567352861] = 'cs1_11_cs1_fault_12', + [1813120361] = 'cs1_11_cs1_fault_13', + [2045288726] = 'cs1_11_cs1_fault_14', + [989242159] = 'cs1_11_cs1_fault_15', + [262360205] = 'cs1_11_cs1_fault_16', + [-210989584] = 'cs1_11_culvert_bars', + [784662630] = 'cs1_11_culvert_bars2', + [-840631836] = 'cs1_11_decals00', + [-1079550615] = 'cs1_11_decals01', + [-1853816547] = 'cs1_11_decals02', + [-2076809592] = 'cs1_11_decals03', + [1948108375] = 'cs1_11_decals04', + [1725672403] = 'cs1_11_decals05', + [1502548282] = 'cs1_11_decals06', + [1260221503] = 'cs1_11_decals07', + [115667269] = 'cs1_11_decals07aaz', + [-901515220] = 'cs1_11_decals07abz', + [-697267477] = 'cs1_11_decals08', + [-928911538] = 'cs1_11_decals09', + [-1773923965] = 'cs1_11_decals10', + [-1586019054] = 'cs1_11_decals100', + [-739071480] = 'cs1_11_decals101', + [-1659913149] = 'cs1_11_decals102', + [-1353719613] = 'cs1_11_decals103', + [1570127233] = 'cs1_11_decals104', + [652136467] = 'cs1_11_decals105', + [1648477912] = 'cs1_11_decals106', + [1266784600] = 'cs1_11_decals107', + [-2134965294] = 'cs1_11_decals108', + [-1841387823] = 'cs1_11_decals109', + [-206123929] = 'cs1_11_decals11', + [-1491152467] = 'cs1_11_decals110', + [-1194822400] = 'cs1_11_decals111', + [-894723898] = 'cs1_11_decals112', + [-597803989] = 'cs1_11_decals113', + [-1007711406] = 'cs1_11_decals114', + [-714723777] = 'cs1_11_decals115', + [376614999] = 'cs1_11_decals116', + [-391654206] = 'cs1_11_decals117', + [1012890672] = 'cs1_11_decals118', + [118034820] = 'cs1_11_decals119', + [-1191094531] = 'cs1_11_decals12', + [1511736959] = 'cs1_11_decals120', + [-2007620872] = 'cs1_11_decals121', + [1401731426] = 'cs1_11_decals122', + [1773594038] = 'cs1_11_decals123', + [-1137739748] = 'cs1_11_decals124_lod', + [-1622224663] = 'cs1_11_decals124', + [1385219550] = 'cs1_11_decals12433', + [-429288626] = 'cs1_11_decals124a1', + [-719176561] = 'cs1_11_decals125', + [2094140400] = 'cs1_11_decals126', + [-1305217357] = 'cs1_11_decals127', + [-1147991691] = 'cs1_11_decals128', + [1209462584] = 'cs1_11_decals129_lod', + [-330175758] = 'cs1_11_decals129', + [-937167550] = 'cs1_11_decals13', + [1611809065] = 'cs1_11_decals130', + [1889526340] = 'cs1_11_decals131', + [1251481141] = 'cs1_11_decals132', + [1563048793] = 'cs1_11_decals133', + [-1487122500] = 'cs1_11_decals134', + [-947548146] = 'cs1_11_decals135', + [-2113174245] = 'cs1_11_decals136', + [-1814976345] = 'cs1_11_decals137', + [316122861] = 'cs1_11_decals138', + [622709625] = 'cs1_11_decals139', + [-1365818835] = 'cs1_11_decals14', + [1360371724] = 'cs1_11_decals140', + [1130038423] = 'cs1_11_decals141', + [277192429] = 'cs1_11_decals142', + [584958877] = 'cs1_11_decals143', + [202380734] = 'cs1_11_decals144', + [980677253] = 'cs1_11_decals145', + [-408531733] = 'cs1_11_decals146', + [366946652] = 'cs1_11_decals147', + [-847806483] = 'cs1_11_decals15', + [1392839434] = 'cs1_11_decals16', + [1606558852] = 'cs1_11_decals17', + [670774511] = 'cs1_11_decals18', + [1986941404] = 'cs1_11_decals19', + [-234666040] = 'cs1_11_decals20', + [54618692] = 'cs1_11_decals21', + [-731345773] = 'cs1_11_decals22', + [-408046819] = 'cs1_11_decals23', + [-657713826] = 'cs1_11_decals24', + [-310493502] = 'cs1_11_decals25', + [-1138271211] = 'cs1_11_decals26', + [-1894776345] = 'cs1_11_decals27', + [-1547490483] = 'cs1_11_decals28', + [1954565320] = 'cs1_11_decals29', + [345410522] = 'cs1_11_decals30', + [-152678278] = 'cs1_11_decals31', + [221543702] = 'cs1_11_decals32', + [-619210531] = 'cs1_11_decals33', + [-505764253] = 'cs1_11_decals34', + [-1349336620] = 'cs1_11_decals35', + [-965939320] = 'cs1_11_decals36', + [-1811019061] = 'cs1_11_decals37', + [-1084857985] = 'cs1_11_decals38', + [-1852668424] = 'cs1_11_decals39', + [-449106948] = 'cs1_11_decals40', + [-630843822] = 'cs1_11_decals41', + [-990942363] = 'cs1_11_decals42', + [-1178970885] = 'cs1_11_decals43', + [-1486180260] = 'cs1_11_decals44', + [-1647534816] = 'cs1_11_decals45', + [-1947862701] = 'cs1_11_decals46', + [1620878017] = 'cs1_11_decals47', + [-1096720651] = 'cs1_11_decals48', + [-1404650944] = 'cs1_11_decals49', + [-832436554] = 'cs1_11_decals50', + [-599154043] = 'cs1_11_decals51', + [850939745] = 'cs1_11_decals52', + [1090448366] = 'cs1_11_decals53', + [983457585] = 'cs1_11_decals54', + [1195571322] = 'cs1_11_decals55', + [2105304304] = 'cs1_11_decals56', + [195625287] = 'cs1_11_decals57', + [1643752939] = 'cs1_11_decals58', + [1876707760] = 'cs1_11_decals59', + [2026986026] = 'cs1_11_decals60', + [663467932] = 'cs1_11_decals61', + [356389633] = 'cs1_11_decals62', + [1601578872] = 'cs1_11_decals63', + [1302102981] = 'cs1_11_decals64', + [-1982137279] = 'cs1_11_decals65', + [2015910108] = 'cs1_11_decals66', + [-1768188478] = 'cs1_11_decals67', + [187203286] = 'cs1_11_decals68', + [-1055233345] = 'cs1_11_decals69', + [-1226877635] = 'cs1_11_decals70', + [1818837046] = 'cs1_11_decals71', + [2126177497] = 'cs1_11_decals72', + [1357154605] = 'cs1_11_decals73', + [1664167366] = 'cs1_11_decals74', + [909235168] = 'cs1_11_decals75', + [1206482767] = 'cs1_11_decals76', + [431954683] = 'cs1_11_decals77', + [732806872] = 'cs1_11_decals78', + [-327794610] = 'cs1_11_decals79', + [1445991084] = 'cs1_11_decals80', + [-1919745679] = 'cs1_11_decals81', + [-1614764596] = 'cs1_11_decals82', + [-2098631650] = 'cs1_11_decals83', + [219840634] = 'cs1_11_decals84', + [1757394891] = 'cs1_11_decals85', + [1894828077] = 'cs1_11_decals86', + [-95855916] = 'cs1_11_decals87', + [203161209] = 'cs1_11_decals88', + [1122626580] = 'cs1_11_decals89', + [-859731979] = 'cs1_11_decals90', + [-121970713] = 'cs1_11_decals91', + [18739373] = 'cs1_11_decals92', + [323720456] = 'cs1_11_decals93', + [495561092] = 'cs1_11_decals94', + [162628056] = 'cs1_11_decals95', + [462628251] = 'cs1_11_decals96', + [735364638] = 'cs1_11_decals97', + [1450384222] = 'cs1_11_decals98', + [1651323730] = 'cs1_11_decals99', + [-2003911291] = 'cs1_11_dect02a', + [862988395] = 'cs1_11_drain1', + [-299949405] = 'cs1_11_emissive1_lod', + [-777485346] = 'cs1_11_emissive1', + [-1619121881] = 'cs1_11_fault_07b', + [-845712949] = 'cs1_11_fault_07b2', + [1105804300] = 'cs1_11_land_01', + [-1070221145] = 'cs1_11_land_02', + [-1351641317] = 'cs1_11_land_03', + [513308011] = 'cs1_11_land_04', + [186994309] = 'cs1_11_land_05', + [-2053028993] = 'cs1_11_land_06', + [-523142690] = 'cs1_11_land_08', + [-1561329892] = 'cs1_11_land_11', + [-72605999] = 'cs1_11_land01_02', + [1927686463] = 'cs1_11_pipe1', + [110886388] = 'cs1_11_props_tent_wspline001', + [550836224] = 'cs1_11_retaining_wall_036', + [-306558328] = 'cs1_11_retaining_wall_09', + [-1043598432] = 'cs1_11_retaining_wall_13', + [602879973] = 'cs1_11_retaining_wall_16', + [-62101344] = 'cs1_11_retaining_wall_18', + [1611936522] = 'cs1_11_retaining_wall_21', + [-2139366771] = 'cs1_11_retaining_wall_40', + [56309644] = 'cs1_11_retainwll1', + [287429401] = 'cs1_11_retainwll2', + [1805501465] = 'cs1_11_tentbridge', + [240433192] = 'cs1_11_tentcity01', + [1621155007] = 'cs1_11_tentcity02', + [1230056992] = 'cs1_11_tentcity04', + [1920814137] = 'cs1_11_tentcity043', + [-1513658613] = 'cs1_11_tentcity06', + [2121799789] = 'cs1_11_tentcity07', + [-1874019306] = 'cs1_11_tentcity08', + [-628141950] = 'cs1_11_tentcity09', + [637688534] = 'cs1_11_tentcityfizz07', + [-2021099951] = 'cs1_11_tentrailer', + [-1954104067] = 'cs1_11_tmplt03', + [-1715269434] = 'cs1_11_tunnel_dec', + [2114631513] = 'cs1_11_tunnel', + [388725593] = 'cs1_11b_barn_gnd', + [-480326486] = 'cs1_11b_bridge_sml_rail', + [1506285816] = 'cs1_11b_bridge_sml', + [1292044854] = 'cs1_11b_cable04', + [-655430902] = 'cs1_11b_cs1_build02', + [-356042927] = 'cs1_11b_culvert_01', + [-656854355] = 'cs1_11b_decals00', + [-28535772] = 'cs1_11b_decals00045', + [-409874402] = 'cs1_11b_decals01', + [124325836] = 'cs1_11b_decals02', + [336374035] = 'cs1_11b_decals03', + [568247479] = 'cs1_11b_decals04', + [-1678296618] = 'cs1_11b_decals08', + [1871503618] = 'cs1_11b_decals09', + [758422940] = 'cs1_11b_decals100', + [991377761] = 'cs1_11b_decals101', + [-1982535013] = 'cs1_11b_decals111', + [2044349094] = 'cs1_11b_decals112', + [1746347808] = 'cs1_11b_decals113', + [1449493437] = 'cs1_11b_decals114', + [-795183067] = 'cs1_11b_decals115', + [-1063528408] = 'cs1_11b_decals116', + [-1355369122] = 'cs1_11b_decals117', + [-1146228009] = 'cs1_11b_decals12', + [-848792907] = 'cs1_11b_decals122', + [-1156362741] = 'cs1_11b_decals123', + [-1446925464] = 'cs1_11b_decals124', + [41835748] = 'cs1_11b_decals126', + [-267077615] = 'cs1_11b_decals127', + [-555903581] = 'cs1_11b_decals128', + [1286074678] = 'cs1_11b_decals129', + [-1309155477] = 'cs1_11b_decals13', + [2042940503] = 'cs1_11b_decals130', + [-2021267495] = 'cs1_11b_decals131', + [1478723853] = 'cs1_11b_decals132', + [1717609863] = 'cs1_11b_decals133', + [1972782066] = 'cs1_11b_decals134', + [1695078318] = 'cs1_11b_decals13499', + [-1831043458] = 'cs1_11b_decals135', + [522819354] = 'cs1_11b_decals136', + [1001574444] = 'cs1_11b_decals138', + [-641594292] = 'cs1_11b_decals139', + [-1768913286] = 'cs1_11b_decals140', + [-2135032670] = 'cs1_11b_decals140a', + [278297228] = 'cs1_11b_decals141', + [51371903] = 'cs1_11b_decals142', + [600195168] = 'cs1_11b_decals142a', + [-578677660] = 'cs1_11b_decals144', + [942918086] = 'cs1_11b_decals145', + [628270148] = 'cs1_11b_decals146', + [1153467646] = 'cs1_11b_decals15', + [1925603593] = 'cs1_11b_decals16', + [1765035493] = 'cs1_11b_decals17', + [427044454] = 'cs1_11b_decals18', + [1863998649] = 'cs1_11b_decals20', + [669863516] = 'cs1_11b_decals25', + [75532163] = 'cs1_11b_decals27', + [-1274160917] = 'cs1_11b_decals33', + [-1959262396] = 'cs1_11b_decals37', + [1901811411] = 'cs1_11b_decals42', + [126190445] = 'cs1_11b_decals46', + [950822330] = 'cs1_11b_decals47', + [-456868440] = 'cs1_11b_decals48', + [-711057573] = 'cs1_11b_decals49', + [1815997192] = 'cs1_11b_decals50', + [35526350] = 'cs1_11b_decals51', + [257405249] = 'cs1_11b_decals52', + [-793902698] = 'cs1_11b_decals52asd', + [-216270642] = 'cs1_11b_decals54', + [-1021175589] = 'cs1_11b_decals55', + [-933223593] = 'cs1_11b_decals56', + [-1632776205] = 'cs1_11b_decals57', + [-1406899488] = 'cs1_11b_decals58', + [-1676883283] = 'cs1_11b_decals59', + [-1700419801] = 'cs1_11b_decals60', + [-1917874881] = 'cs1_11b_decals63', + [2137944249] = 'cs1_11b_decals64', + [1933400151] = 'cs1_11b_decals65', + [1693629378] = 'cs1_11b_decals66', + [1459757025] = 'cs1_11b_decals67', + [684376947] = 'cs1_11b_decals68', + [904224236] = 'cs1_11b_decals69', + [625557464] = 'cs1_11b_decals70', + [-610259837] = 'cs1_11b_decals71', + [697124960] = 'cs1_11b_decals72', + [-128129540] = 'cs1_11b_decals73', + [-974913269] = 'cs1_11b_decals74', + [867261720] = 'cs1_11b_decals75', + [-505398925] = 'cs1_11b_decals76', + [260347071] = 'cs1_11b_decals77', + [1026650136] = 'cs1_11b_decals78', + [-1787714689] = 'cs1_11b_decals82', + [-603082570] = 'cs1_11b_decals83', + [-305376205] = 'cs1_11b_decals84', + [-529188471] = 'cs1_11b_decals85', + [-230761188] = 'cs1_11b_decals86', + [891380448] = 'cs1_11b_decals87', + [-960297435] = 'cs1_11b_decals88', + [429960159] = 'cs1_11b_decals89', + [-553242341] = 'cs1_11b_decals90', + [-1196268424] = 'cs1_11b_decals91', + [-1421784682] = 'cs1_11b_decals92', + [-1527333631] = 'cs1_11b_decals93', + [-2029092559] = 'cs1_11b_decals94', + [-2112161978] = 'cs1_11b_decals95', + [1953750008] = 'cs1_11b_decals96', + [713607203] = 'cs1_11b_decals97', + [1556589728] = 'cs1_11b_decals98', + [-400768188] = 'cs1_11b_decals99', + [1729299423] = 'cs1_11b_decalsq1', + [2025105186] = 'cs1_11b_decalsq2', + [1731593233] = 'cs1_11b_decalsq3', + [-780281693] = 'cs1_11b_decalsq4', + [234243623] = 'cs1_11b_decalsx1', + [731439657] = 'cs1_11b_emmi01_lod', + [-584475588] = 'cs1_11b_emmi01', + [1271788673] = 'cs1_11b_emmi02_lod', + [-345753423] = 'cs1_11b_emmi02', + [-1029834551] = 'cs1_11b_fault02', + [2075388658] = 'cs1_11b_fault03', + [-552584431] = 'cs1_11b_fault03a', + [33658661] = 'cs1_11b_fbox01', + [-1697732167] = 'cs1_11b_fence05', + [1573163701] = 'cs1_11b_frmland007', + [782440600] = 'cs1_11b_gullywall_00', + [-1527682274] = 'cs1_11b_house_gutter01', + [-315984034] = 'cs1_11b_house_pipe01', + [829543101] = 'cs1_11b_house001', + [-1015716234] = 'cs1_11b_house01_dec003', + [1249113297] = 'cs1_11b_house01_dec006', + [294377437] = 'cs1_11b_land_01', + [1237862485] = 'cs1_11b_land_02', + [1781190651] = 'cs1_11b_land_02b', + [-64148192] = 'cs1_11b_land_03', + [-2124645122] = 'cs1_11b_land_03a', + [643989898] = 'cs1_11b_land_04', + [1523903086] = 'cs1_11b_land_05', + [-1795301693] = 'cs1_11b_land_06', + [927474517] = 'cs1_11b_land_07', + [1872630788] = 'cs1_11b_land_08', + [-1553695856] = 'cs1_11b_land_09', + [864491691] = 'cs1_11b_land_10', + [1645639113] = 'cs1_11b_land_11', + [1349243508] = 'cs1_11b_land_12', + [2122329760] = 'cs1_11b_land_13', + [1825475389] = 'cs1_11b_land_14', + [-1755291552] = 'cs1_11b_land_15', + [-457835766] = 'cs1_11b_land_16', + [2136931247] = 'cs1_11b_land01', + [-1463660939] = 'cs1_11b_land06', + [-1406642889] = 'cs1_11b_ptunnel_supp', + [-830062151] = 'cs1_11b_ptunnelcover', + [-1202073049] = 'cs1_11b_sign', + [-340621789] = 'cs1_11b_small_barn_dec', + [-1861008055] = 'cs1_11b_small_barn', + [-1941064722] = 'cs1_11b_tintractor_shed_dec', + [2126145123] = 'cs1_11b_tintractor_shed', + [1095241381] = 'cs1_11b_trk01', + [1857874318] = 'cs1_11b_trk02', + [-1889113634] = 'cs1_12_alttrk003', + [336264502] = 'cs1_12_alttrk02', + [859727702] = 'cs1_12_b01_a', + [628181948] = 'cs1_12_b01_d', + [2137679139] = 'cs1_12_b01_decal', + [-253955655] = 'cs1_12_b02_d', + [1311506985] = 'cs1_12_b02_railings', + [310536815] = 'cs1_12_b02_slod', + [-824634354] = 'cs1_12_b02', + [-1828819538] = 'cs1_12_b1_slod1', + [-1768660284] = 'cs1_12_bdecal007', + [1458727479] = 'cs1_12_bestclvrt001', + [425436905] = 'cs1_12_bridge1', + [923008782] = 'cs1_12_bridgedust', + [1655845964] = 'cs1_12_bridrockdecal', + [1252744918] = 'cs1_12_building0004', + [1695717941] = 'cs1_12_building001', + [1396864657] = 'cs1_12_building002', + [-51969161] = 'cs1_12_building003_ovr', + [-769395626] = 'cs1_12_building003', + [-1364185745] = 'cs1_12_building005', + [-859832658] = 'cs1_12_clothesdetails', + [242210886] = 'cs1_12_coastdecal_002', + [908240811] = 'cs1_12_coastdecal_004', + [2100835797] = 'cs1_12_coastdecal_008', + [-1901700943] = 'cs1_12_coastdecal_009', + [-645172162] = 'cs1_12_coastdecal_012', + [1884922252] = 'cs1_12_coastdecal_013', + [741440380] = 'cs1_12_coastdecalt007', + [-399446191] = 'cs1_12_culvert_01', + [-563373833] = 'cs1_12_decal_001', + [-91296692] = 'cs1_12_decal_001a', + [-1300636637] = 'cs1_12_decal_001b', + [995388882] = 'cs1_12_decal_001x', + [256473778] = 'cs1_12_decal_002', + [1564455648] = 'cs1_12_decal_002c', + [-86617652] = 'cs1_12_decal_003', + [424742593] = 'cs1_12_decal_005', + [307205965] = 'cs1_12_decal_005b', + [-1314089831] = 'cs1_12_decal_027', + [-289963738] = 'cs1_12_decal_066', + [291721397] = 'cs1_12_decal_07a', + [-2018165421] = 'cs1_12_decal_07b', + [-2062723876] = 'cs1_12_decal_15', + [2042904138] = 'cs1_12_decal_18', + [-2012982251] = 'cs1_12_decal_66', + [-1892457869] = 'cs1_12_decal_67', + [-2118561919] = 'cs1_12_decal_farm', + [-1596909178] = 'cs1_12_decal_farms02', + [-1062539332] = 'cs1_12_decal_farmsbig', + [2145163125] = 'cs1_12_decal_house01', + [384125096] = 'cs1_12_decal_road', + [-1546361791] = 'cs1_12_decal_rock01', + [-1241806697] = 'cs1_12_decal_rock02', + [-1729017828] = 'cs1_12_detailout', + [1226165500] = 'cs1_12_detailsadv003', + [-1944902772] = 'cs1_12_detailsadv02', + [-1084956904] = 'cs1_12_drttk_01', + [1623204336] = 'cs1_12_drttk_02', + [1380877581] = 'cs1_12_drttk_03', + [117552381] = 'cs1_12_drttk_03a', + [-2078414677] = 'cs1_12_drttk_04', + [1977830454] = 'cs1_12_drttk_05', + [-261537480] = 'cs1_12_drttk_06', + [-218904135] = 'cs1_12_drttk_11', + [328719186] = 'cs1_12_drttk_d01', + [2081269387] = 'cs1_12_fence001_ovr', + [779508496] = 'cs1_12_fence001', + [922579433] = 'cs1_12_fence002_ovr', + [549568423] = 'cs1_12_fence002', + [2044126787] = 'cs1_12_flagsdetails', + [104864721] = 'cs1_12_gdecal01a', + [-361634763] = 'cs1_12_gdecal01b', + [1383936600] = 'cs1_12_gnd_12_trk', + [298835615] = 'cs1_12_gnd_13_armco', + [1810305644] = 'cs1_12_gnd_13_clvrt', + [1459471376] = 'cs1_12_gnd_13_trk', + [180592951] = 'cs1_12_guldecal00', + [358888331] = 'cs1_12_guldecal009', + [1045235785] = 'cs1_12_guldecal01', + [1888939228] = 'cs1_12_guldecal02', + [-1565699828] = 'cs1_12_guldecal03', + [1441085305] = 'cs1_12_guldecal04', + [-1924192688] = 'cs1_12_guldecal05', + [-1206879278] = 'cs1_12_guldecal06', + [-238588097] = 'cs1_12_guldecal07', + [-595508045] = 'cs1_12_guldecal08', + [-791007899] = 'cs1_12_guldecal09', + [-30931296] = 'cs1_12_guldecal10', + [1244503722] = 'cs1_12_guldecal11', + [-1509435807] = 'cs1_12_guldecal13', + [-1307230856] = 'cs1_12_guldecal13a', + [1428010122] = 'cs1_12_guldecal14', + [-2121200268] = 'cs1_12_guldecal15', + [1413673644] = 'cs1_12_houserail_01', + [1198512390] = 'cs1_12_houserail_02', + [1394339930] = 'cs1_12_houserail_03', + [1164530933] = 'cs1_12_houserail_04', + [812657411] = 'cs1_12_houserail_05', + [1322800090] = 'cs1_12_jetty_overlay', + [2133280248] = 'cs1_12_jetty', + [-529556129] = 'cs1_12_jettyrail_01', + [-93073073] = 'cs1_12_jettyrail_02', + [736670776] = 'cs1_12_jettyrail_03', + [2123005036] = 'cs1_12_jettysteps_01', + [-1993240134] = 'cs1_12_jettysteps_02', + [-1027742120] = 'cs1_12_mnttrk01', + [-24748592] = 'cs1_12_mnttrk02', + [-366162180] = 'cs1_12_pdecal00', + [84990013] = 'cs1_12_pdecal002a', + [-1056441165] = 'cs1_12_pdecal01', + [-1899489228] = 'cs1_12_pdecal02', + [763450788] = 'cs1_12_pdecal03', + [-101355891] = 'cs1_12_pdecal05', + [1968234210] = 'cs1_12_pdecal05a', + [-942962118] = 'cs1_12_pdecal06', + [-1423370487] = 'cs1_12_rdecal_005', + [-867804901] = 'cs1_12_rdecal_006', + [-587990410] = 'cs1_12_rdecal_007', + [1669594343] = 'cs1_12_rdecal_008b', + [-1323162925] = 'cs1_12_rdecal_009', + [2104691876] = 'cs1_12_riverbed1_lod', + [1062716907] = 'cs1_12_riverbed1', + [1200190187] = 'cs1_12_rockdecal_005', + [-1224571456] = 'cs1_12_shadowdecal01', + [-35548295] = 'cs1_12_shadowdecal02', + [1825480420] = 'cs1_12_smallbridge_01', + [-1761873090] = 'cs1_12_smallbridge_02', + [1901146581] = 'cs1_12_smlbrg01_decal', + [-1582519176] = 'cs1_12_smlbrg02_decal', + [2135551329] = 'cs1_12_tarrd01', + [-997754917] = 'cs1_12_tarrd02', + [436431016] = 'cs1_12_terrain_hd_01', + [-338916293] = 'cs1_12_terrain_hd_02', + [-1320609983] = 'cs1_12_terrain_hd_03', + [189778753] = 'cs1_12_terrain_hd_04', + [-746202182] = 'cs1_12_terrain_hd_05', + [-453149015] = 'cs1_12_terrain_hd_06', + [1714389263] = 'cs1_12_terrain_hd_07', + [2020091264] = 'cs1_12_terrain_hd_08', + [1082078635] = 'cs1_12_terrain_hd_09', + [-213803907] = 'cs1_12_terrain_hd_10', + [1544678940] = 'cs1_12_terrain_hd_11', + [-95278442] = 'cs1_12_terrain_hd_13', + [-309128936] = 'cs1_12_terrain_hd_14', + [1452827425] = 'cs1_12_terrain_hd_15', + [-2135588977] = 'cs1_12_terrain_hd_16x', + [-1050888008] = 'cs1_12_terrain_hd_17', + [-1289544635] = 'cs1_12_terrain_hd_18', + [498266455] = 'cs1_12_terrain_hd_19', + [-1909665019] = 'cs1_12_terrain_hd_20', + [-290122732] = 'cs1_12_terrain_hd_21', + [-43470469] = 'cs1_12_terrain_hd_22', + [1009004273] = 'cs1_12_terrain_hd_23', + [1243138778] = 'cs1_12_terrain_hd_24', + [-1198053403] = 'cs1_12_terrain_hd_26', + [316988531] = 'cs1_12_terrain_hd_27', + [555710696] = 'cs1_12_terrain_hd_28', + [2117612328] = 'cs1_12_terrain_hd_29', + [1740867375] = 'cs1_12_terrain_hd_30', + [-694623016] = 'cs1_12_terrain_hd_31', + [1132215965] = 'cs1_12_terrain_hd_33', + [770052977] = 'cs1_12_terrain_hd_34', + [-1627949674] = 'cs1_12_terrain_hd_35', + [-1991751112] = 'cs1_12_terrain_hd_36', + [1650422143] = 'cs1_12_terrain_hd_99', + [1530866151] = 'cs1_12_traildecal_001a', + [766856516] = 'cs1_12_traildecal_002a', + [-2138402344] = 'cs1_12_traildecal01', + [-1095757140] = 'cs1_12_traildecal01a', + [1265805225] = 'cs1_12_traildecal06', + [1495548684] = 'cs1_12_traildecal07', + [1446838238] = 'cs1_12_trailz01', + [528978548] = 'cs1_12_trailz02', + [1881317372] = 'cs1_12_tunl_01b_d', + [-1789482780] = 'cs1_12_tunl_01b_lod', + [-1195034483] = 'cs1_12_tunl_01b', + [1000447332] = 'cs1_12_tunnel01_end', + [-2111525240] = 'cs1_12_tunnel01_lod', + [-377406141] = 'cs1_12_tunnel01shell_int', + [-54586701] = 'cs1_12_tunnel01sproxy_int', + [-1473903654] = 'cs1_12_tunnel01stuff_int', + [-1005066311] = 'cs1_12_tunnel02_end', + [577938017] = 'cs1_12_tunnel02shell_int', + [126439381] = 'cs1_12_tunnel02stuff_int', + [-1731045468] = 'cs1_12_tunnel03_lod', + [2011046727] = 'cs1_12_tunnel03shell_int', + [982455543] = 'cs1_12_tunnel03stuff_int', + [1571990589] = 'cs1_13__fpdecal004', + [-1017317488] = 'cs1_13__fpdecal006', + [-1254892738] = 'cs1_13__fpdecal007', + [1752928578] = 'cs1_13_alttrk01', + [2115976329] = 'cs1_13_alttrk02', + [-447051353] = 'cs1_13_armco_v01', + [-2089533271] = 'cs1_13_boathouse001', + [-638915163] = 'cs1_13_boathouse002', + [1744341426] = 'cs1_13_boathouse003', + [1373101425] = 'cs1_13_boathouse004', + [1332876794] = 'cs1_13_boatyd_drttk', + [-134843765] = 'cs1_13_culvert005', + [1798619454] = 'cs1_13_culvert01_slod1', + [-1996262662] = 'cs1_13_culvert01', + [-134283653] = 'cs1_13_culvert02_slod1', + [2067912567] = 'cs1_13_culvert02', + [973154984] = 'cs1_13_culvert03_slod', + [-26354227] = 'cs1_13_culvert03', + [1902399379] = 'cs1_13_culvert03shadbox', + [-637107112] = 'cs1_13_culvert04_slod1', + [-290767288] = 'cs1_13_culvert04', + [1913027580] = 'cs1_13_draindecal02', + [-323165065] = 'cs1_13_drttk_01', + [-1082488333] = 'cs1_13_drttk_02', + [-816371284] = 'cs1_13_drttk_03', + [555633977] = 'cs1_13_drttk_04', + [61346381] = 'cs1_13_drttk_05', + [375502784] = 'cs1_13_drttk_06', + [-700646751] = 'cs1_13_drttk_ov_01', + [-1396760846] = 'cs1_13_emissive_02_lod', + [286122622] = 'cs1_13_emissive_02', + [873163565] = 'cs1_13_emissive_lod', + [-88555682] = 'cs1_13_emissive', + [-1174330474] = 'cs1_13_garage7', + [-2080124381] = 'cs1_13_gnd_14_decal', + [550667354] = 'cs1_13_gnd_hd_01', + [1999089927] = 'cs1_13_gnd_hd_02', + [1759581306] = 'cs1_13_gnd_hd_03', + [1571814888] = 'cs1_13_gnd_hd_04', + [206354997] = 'cs1_13_house2', + [208912991] = 'cs1_13_houses', + [1436526398] = 'cs1_13_jetty_ovr', + [1864675385] = 'cs1_13_jetty', + [-1353391235] = 'cs1_13_jettypoles01', + [-1584510992] = 'cs1_13_jettypoles02', + [129340481] = 'cs1_13_jettypoles03', + [972552389] = 'cs1_13_jettypoles04', + [1962798800] = 'cs1_13_jettypoles05', + [-1068912938] = 'cs1_13_lakerock_01', + [-1367667911] = 'cs1_13_lakerock_02', + [-640327187] = 'cs1_13_lakerock_03', + [1721911373] = 'cs1_13_land_07', + [-1704864319] = 'cs1_13_metal_interior', + [1745628858] = 'cs1_13_mid_decal001', + [457025538] = 'cs1_13_millarsfishsign_slod', + [1952920943] = 'cs1_13_millarsfishsign', + [-1255572891] = 'cs1_13_props_combo0119_01_lod', + [-1249341366] = 'cs1_13_props_combo0224_01_lod', + [-238842560] = 'cs1_13_props_combo0224_02_lod', + [-1019950719] = 'cs1_13_props_combo0224_03_lod', + [2126829581] = 'cs1_13_props_wires01', + [-2063604605] = 'cs1_13_props_wires02', + [1418331032] = 'cs1_13_props_wires03', + [1753230212] = 'cs1_13_props_wires04', + [-67072073] = 'cs1_13_rail01', + [1698062881] = 'cs1_13_rail02', + [1468253884] = 'cs1_13_rail03', + [331300652] = 'cs1_13_rail04', + [41000081] = 'cs1_13_rail05', + [733777876] = 'cs1_13_screedecal01', + [-1477699029] = 'cs1_13_shore_decal01', + [-1171341648] = 'cs1_13_shore_decal02', + [74928964] = 'cs1_13_shore_decal03', + [317911099] = 'cs1_13_shore_decal04', + [1306027525] = 'cs1_13_shore_decal08', + [43617700] = 'cs1_13_slipwaypost', + [1623016534] = 'cs1_13_streambed01', + [1937205706] = 'cs1_13_streambed02', + [467500975] = 'cs1_13_terrain_hd_01', + [-22744621] = 'cs1_13_terrain_hd_011', + [161209132] = 'cs1_13_terrain_hd_02', + [627216619] = 'cs1_13_terrain_hd_03_1', + [-1762397172] = 'cs1_13_terrain_hd_03_2', + [786638266] = 'cs1_13_terrain_hd_03', + [1398206113] = 'cs1_13_terrain_hd_05', + [1670035185] = 'cs1_13_terrain_hd_05a', + [1084442938] = 'cs1_13_terrain_hd_06', + [-2089113267] = 'cs1_13_terrain_hd_07a', + [469565406] = 'cs1_13_terrain_hd_08', + [-706054934] = 'cs1_13_terrain_hd_10', + [-1693377136] = 'cs1_13_towndecal01', + [-105453307] = 'cs1_13_warehouse2', + [-1487861031] = 'cs1_13_wh2_rail', + [-40891276] = 'cs1_13mapblend', + [-409196318] = 'cs1_14_brdg1_ovrly', + [-11549012] = 'cs1_14_brdg1', + [212484310] = 'cs1_14_breakers01', + [253059353] = 'cs1_14_canriv_04', + [-524385172] = 'cs1_14_canriv_05', + [999373328] = 'cs1_14_canriv_06', + [233004725] = 'cs1_14_canriv_07', + [1479603023] = 'cs1_14_canriv_08', + [-1668220766] = 'cs1_14_canstrm_01', + [-1943970475] = 'cs1_14_cliff3', + [1225414424] = 'cs1_14_cliff7', + [800236649] = 'cs1_14_cliff8', + [-1402330509] = 'cs1_14_cliffovrly07', + [-687308028] = 'cs1_14_cs_stream', + [1318361432] = 'cs1_14_cs_stream2', + [-442787736] = 'cs1_14_cultmp', + [-1551937334] = 'cs1_14_efefe', + [518631270] = 'cs1_14_footpath020', + [1983077884] = 'cs1_14_footpath024', + [-951926618] = 'cs1_14_foreststrm2', + [-45916205] = 'cs1_14_island01', + [-375780032] = 'cs1_14_nuterr01', + [-2096709609] = 'cs1_14_nuterr03', + [286110817] = 'cs1_14_nuterr03b', + [899327296] = 'cs1_14_nuterr04', + [678988540] = 'cs1_14_nuterr05', + [-1401711888] = 'cs1_14_nuterr06', + [-227446103] = 'cs1_14_nuterr07b', + [-465643964] = 'cs1_14_nuterr07c', + [-2104344786] = 'cs1_14_nuterr09', + [-322372170] = 'cs1_14_nutrail01', + [-653142456] = 'cs1_14_nutrail02', + [131544010] = 'cs1_14_nutrail04', + [-199488428] = 'cs1_14_nutrail05', + [577497331] = 'cs1_14_nutrail06', + [941036629] = 'cs1_14_nutrail07', + [1711796278] = 'cs1_14_nutrail08', + [1438699432] = 'cs1_14_nutrail09', + [-1256817134] = 'cs1_14_nutrail11', + [-2065130057] = 'cs1_14_nutrail12', + [-639711326] = 'cs1_14_nutrail14', + [-347870612] = 'cs1_14_nutrail15', + [-1115025671] = 'cs1_14_nutrail16', + [-858113155] = 'cs1_14_nutrail23', + [-610739974] = 'cs1_14_nutrail24', + [1033188932] = 'cs1_14_ovrly01', + [811539416] = 'cs1_14_ovrly02', + [367322852] = 'cs1_14_ovrly07', + [-1417276888] = 'cs1_14_ovrly09', + [953756652] = 'cs1_14_ovrly10', + [-2044213624] = 'cs1_14_ovrly11', + [1567356177] = 'cs1_14_ovrly12', + [732238212] = 'cs1_14_ovrly13', + [-4212294] = 'cs1_14_ovrly14', + [1291998270] = 'cs1_14_ovrly15', + [584417253] = 'cs1_14_ovrly16', + [-258827424] = 'cs1_14_ovrly17', + [-1468626135] = 'cs1_14_ovrly18', + [-1254841179] = 'cs1_14_ovrly19', + [-560792667] = 'cs1_14_ovrly20', + [-99241302] = 'cs1_14_ovrly22', + [357198099] = 'cs1_14_ovrly24', + [659361048] = 'cs1_14_ovrly25', + [831201684] = 'cs1_14_ovrly26', + [1121109027] = 'cs1_14_ovrly27', + [731190688] = 'cs1_14_ovrly28', + [895559992] = 'cs1_14_ovrly29', + [-586615179] = 'cs1_14_ovrly30', + [-1424026974] = 'cs1_14_ovrly31', + [-1067107026] = 'cs1_14_ovrly32', + [-1805195982] = 'cs1_14_ovrly33', + [1654718887] = 'cs1_14_ovrly34', + [2010262537] = 'cs1_14_ovrly35', + [2002308840] = 'cs1_14_ovrly35a', + [1695230541] = 'cs1_14_ovrly35b', + [1407059955] = 'cs1_14_ovrly35c', + [1178814700] = 'cs1_14_ovrly36', + [1504767943] = 'cs1_14_ovrly37', + [653658706] = 'cs1_14_ovrly38', + [1013724478] = 'cs1_14_ovrly39', + [632228596] = 'cs1_14_ovrly40', + [304407520] = 'cs1_14_ovrly41', + [67389343] = 'cs1_14_ovrly42', + [-221141702] = 'cs1_14_ovrly43', + [-599295962] = 'cs1_14_ovrly44', + [-849225125] = 'cs1_14_ovrly45', + [-1088274980] = 'cs1_14_ovrly46', + [-2014162995] = 'cs1_14_ovrly49', + [1783239481] = 'cs1_14_ovrly51', + [-311944841] = 'cs1_14_ovrly58', + [-538804628] = 'cs1_14_ovrly59', + [-183120018] = 'cs1_14_ovrly598', + [23029761] = 'cs1_14_ovrly599', + [-1090708860] = 'cs1_14_pipe01', + [-447518928] = 'cs1_14_pipe02', + [-648458436] = 'cs1_14_pipe03', + [-64115796] = 'cs1_14_ranghut', + [1525574525] = 'cs1_14_ranghutd', + [-1508774173] = 'cs1_14_rdecal002', + [-658857837] = 'cs1_14_rghjj', + [-1819020690] = 'cs1_14_riverbddeep', + [1019875567] = 'cs1_14_riverbdshllw', + [-81982582] = 'cs1_14_riverbed01', + [410601034] = 'cs1_14_riverbed02', + [-634621234] = 'cs1_14_riverbed02b', + [652010257] = 'cs1_14_riverbed03', + [-167902892] = 'cs1_14_riverbed04', + [-3878394] = 'cs1_14_stream1', + [1131472525] = 'cs1_14_terr07b', + [-217547008] = 'cs1_14_terr11', + [1273450558] = 'cs1_14b_a_wb', + [-1531586659] = 'cs1_14b_bouldertun', + [-2019466538] = 'cs1_14b_brdg1_ovrly', + [1557671830] = 'cs1_14b_brdg1', + [-1078605248] = 'cs1_14b_canriv_01', + [1848583988] = 'cs1_14b_canriv_02', + [-931537964] = 'cs1_14b_canriv_03', + [355088060] = 'cs1_14b_canyonb005', + [531244056] = 'cs1_14b_cmouth01', + [1171320933] = 'cs1_14b_cmouth02', + [941249784] = 'cs1_14b_cmouth03', + [-320291186] = 'cs1_14b_cmouth04', + [-1618896906] = 'cs1_14b_cs1_14b_tc01', + [-1097681488] = 'cs1_14b_decal_0011', + [367312518] = 'cs1_14b_decal_0011a', + [751128997] = 'cs1_14b_decal_007', + [-1296292701] = 'cs1_14b_decal_007a', + [444804385] = 'cs1_14b_decal_008', + [-1674283404] = 'cs1_14b_decal_008c', + [-61753691] = 'cs1_14b_decal_008d', + [182342590] = 'cs1_14b_decal_008e', + [189828796] = 'cs1_14b_decal_009', + [1058202399] = 'cs1_14b_decal_011', + [960621350] = 'cs1_14b_decal_05', + [503362724] = 'cs1_14b_decal_06', + [1234075634] = 'cs1_14b_des_railing_end', + [-2071645912] = 'cs1_14b_des_railing_start', + [-13282362] = 'cs1_14b_des_train_engine', + [-1537886904] = 'cs1_14b_fcara_chassis002', + [-1245652962] = 'cs1_14b_fcara_chassis003', + [308817600] = 'cs1_14b_fconta_chassis013', + [546032391] = 'cs1_14b_fconta_chassis014', + [786819003] = 'cs1_14b_fconta_chassis015', + [-382280614] = 'cs1_14b_fconta_chassis017', + [-95125867] = 'cs1_14b_fconta_chassis018', + [-2050910863] = 'cs1_14b_fconta_chassis019', + [2062122593] = 'cs1_14b_fconta_chassis021', + [94016453] = 'cs1_14b_fconta_chassis022', + [390936362] = 'cs1_14b_fconta_chassis023', + [639095999] = 'cs1_14b_fconta_chassis024', + [-262721704] = 'cs1_14b_locoa_chassis003', + [-996050405] = 'cs1_14b_mnttrack01', + [-1375548190] = 'cs1_14b_mnttrack02', + [-1147574257] = 'cs1_14b_mnttrack03', + [-2089486393] = 'cs1_14b_mnttrack04', + [-1857383566] = 'cs1_14b_mnttrack05', + [1691957904] = 'cs1_14b_mnttrack06', + [-431951397] = 'cs1_14b_nuterr10', + [137086236] = 'cs1_14b_nutrail10', + [-2046705466] = 'cs1_14b_nutrail17', + [995568498] = 'cs1_14b_nutrail18', + [-1326803005] = 'cs1_14b_nutrail20', + [1847663207] = 'cs1_14b_ovrly_02', + [1229356326] = 'cs1_14b_ovrly_02a', + [1095221429] = 'cs1_14b_ovrly_03', + [847258406] = 'cs1_14b_ovrly_04', + [631376234] = 'cs1_14b_ovrly_05', + [187163861] = 'cs1_14b_railbg01_d', + [-741716338] = 'cs1_14b_railbg01_d2', + [-404721697] = 'cs1_14b_railbg03', + [-701838220] = 'cs1_14b_railbg04', + [847113661] = 'cs1_14b_rckcliff_03', + [-588627245] = 'cs1_14b_rckcliff_04', + [-101225641] = 'cs1_14b_refprx01_ch', + [-1594070234] = 'cs1_14b_refprx02_ch', + [1179182679] = 'cs1_14b_refprx03_ch', + [2108313460] = 'cs1_14b_refprx04_ch', + [-900657850] = 'cs1_14b_refprx05_ch', + [1484321663] = 'cs1_14b_refprx06_ch', + [960083088] = 'cs1_14b_refprx07_ch', + [-972985511] = 'cs1_14b_riverland_001', + [900128769] = 'cs1_14b_riverland', + [-1746607828] = 'cs1_14b_riverrock00', + [-766290420] = 'cs1_14b_riverrock02', + [-1576351897] = 'cs1_14b_rvrbed_01', + [-816274942] = 'cs1_14b_rvrbed_02', + [927444814] = 'cs1_14b_smallbrdg_hd', + [1057017213] = 'cs1_14b_smallbrdg_lod', + [2119659647] = 'cs1_14b_tc_debris4', + [1843482515] = 'cs1_14b_tc_debris5', + [-968387093] = 'cs1_14b_terr21a', + [-144574433] = 'cs1_14b_terr21b', + [-1837840340] = 'cs1_14b_traincrash_slod', + [-1169198463] = 'cs1_14b_tunn_ent_003', + [-627359310] = 'cs1_14b_tunn_entdc_01', + [-62245692] = 'cs1_14b_water_trncrsh', + [2114584384] = 'cs1_14b_waterblend_slod', + [-70511385] = 'cs1_14b_waterblend', + [-496070126] = 'cs1_14b_wb_ov', + [-44445619] = 'cs1_14b_wtr_trncrsh_slod', + [81563134] = 'cs1_15_barn_support', + [1150431115] = 'cs1_15_barn', + [-907824369] = 'cs1_15_bridgea_rail', + [-588483223] = 'cs1_15_bridgea', + [-646694954] = 'cs1_15_bridgeb_rail', + [-910995721] = 'cs1_15_bridgeb', + [680014337] = 'cs1_15_bridgeter_rail', + [-927570067] = 'cs1_15_bridgeter', + [1979852223] = 'cs1_15_culvert01', + [1673232690] = 'cs1_15_culvert02', + [-645042988] = 'cs1_15_culvert03', + [-951072679] = 'cs1_15_culvert04', + [1579131602] = 'cs1_15_decals01', + [-2107020443] = 'cs1_15_decals03', + [-1529008052] = 'cs1_15_decals05', + [-917440205] = 'cs1_15_decals07', + [-1147773506] = 'cs1_15_decals08', + [-648668867] = 'cs1_15_decals09', + [1500256915] = 'cs1_15_decals10', + [314445112] = 'cs1_15_decals11', + [2102911594] = 'cs1_15_decals12', + [1318533030] = 'cs1_15_lumber_sign', + [1772489241] = 'cs1_15_mnt_chiliad_hi', + [1200973641] = 'cs1_15_mnt_chiliad_hi001', + [2105688964] = 'cs1_15_mwall_01', + [-1830064554] = 'cs1_15_mwall_02', + [-757231462] = 'cs1_15_stream05_d', + [772542482] = 'cs1_15_terrain01', + [1555459430] = 'cs1_15_terrain02', + [326720217] = 'cs1_15_terrain03', + [1373279928] = 'cs1_15_terrain03b', + [1077982331] = 'cs1_15_terrain04', + [566540217] = 'cs1_15_terrain04b', + [473787465] = 'cs1_15_terrain05', + [-1752025623] = 'cs1_15_terrain05b', + [-266923011] = 'cs1_15_terrain06', + [956310978] = 'cs1_15_terrain07', + [-872531745] = 'cs1_15_track04', + [374855429] = 'cs1_15b_barn_detail', + [-1984919048] = 'cs1_15b_barn', + [1428448516] = 'cs1_15b_bridge_det1', + [1834947775] = 'cs1_15b_chimneydet1', + [2065739842] = 'cs1_15b_chimneydet2', + [1416063603] = 'cs1_15b_cs1_15_barn_d', + [-1531106997] = 'cs1_15b_culv01_det', + [1986885186] = 'cs1_15b_culv01', + [-921353092] = 'cs1_15b_det_00', + [1906185627] = 'cs1_15b_det_05', + [-272449848] = 'cs1_15b_det_05a', + [-578282925] = 'cs1_15b_det_05b', + [962850995] = 'cs1_15b_det_10a', + [1766497836] = 'cs1_15b_drugpallets_det01', + [-1810762822] = 'cs1_15b_drugpallets_det02', + [-2050992361] = 'cs1_15b_drugpallets_det03', + [-1955470738] = 'cs1_15b_drugpallets_det04', + [2107393731] = 'cs1_15b_drugpallets_det05', + [651925827] = 'cs1_15b_drugpallets_det06', + [-164150905] = 'cs1_15b_drugpallets2', + [-81872760] = 'cs1_15b_int_detail', + [340492096] = 'cs1_15b_ladder_01', + [1752921900] = 'cs1_15b_land_1', + [1512397440] = 'cs1_15b_land_2', + [1275117111] = 'cs1_15b_land_3', + [-1616353915] = 'cs1_15b_land_4', + [-1854584545] = 'cs1_15b_land_5', + [-2094879622] = 'cs1_15b_land_6', + [837782141] = 'cs1_15b_lumb_decals_1', + [-1541017880] = 'cs1_15b_lumb_decals_2', + [1697870084] = 'cs1_15b_lumb_decals_3', + [1467340169] = 'cs1_15b_lumb_decals_4', + [674100966] = 'cs1_15b_lumb_decals_5', + [-1233939597] = 'cs1_15b_lumb_decals_6', + [-2112621582] = 'cs1_15b_nuforlnd03_04_d', + [-1860459794] = 'cs1_15b_nufrld03_04_d1', + [-1569569381] = 'cs1_15b_nufrld03_04_d2', + [-590841769] = 'cs1_15b_sawm_det01', + [-865642603] = 'cs1_15b_sawm_det02', + [-271835554] = 'cs1_15b_sawm_det04', + [-2087565844] = 'cs1_15b_sawm_det05', + [1899209007] = 'cs1_15b_sawm_det06', + [1907482916] = 'cs1_15b_sawmain_01', + [1676494235] = 'cs1_15b_sawmain_02', + [-481835950] = 'cs1_15b_sawmain_03', + [386608088] = 'cs1_15b_sawmain_04', + [1406054398] = 'cs1_15b_sawmil_d_01', + [-1894928317] = 'cs1_15b_sawmil_d_01b', + [-2124213010] = 'cs1_15b_sawmil_d_01c', + [1851846374] = 'cs1_15b_sawmil_d_01d', + [-363665716] = 'cs1_15b_sawmil_d_01g', + [-1287358288] = 'cs1_15b_sawmil_d_01h', + [1519407279] = 'cs1_15b_sawmill_00', + [130853673] = 'cs1_15b_sawmill_01', + [2016556089] = 'cs1_15b_sawmill_014', + [1717538964] = 'cs1_15b_sawmill_015', + [-1818891520] = 'cs1_15b_sawmill_016', + [885817808] = 'cs1_15b_sawmill_02_b', + [1195648703] = 'cs1_15b_sawmill_02_c', + [-1276772355] = 'cs1_15b_sawmill_02_d', + [1165697833] = 'cs1_15b_sawmill_02_e', + [-1876379517] = 'cs1_15b_sawmill_02_f', + [2095092211] = 'cs1_15b_sawmill_02_i', + [-650851686] = 'cs1_15b_sawmill_02_k', + [-663762676] = 'cs1_15b_sawmill_02_m', + [269072455] = 'cs1_15b_sawmill_02_q', + [1514589376] = 'cs1_15b_sawmill_02_r', + [1804496719] = 'cs1_15b_sawmill_02_s', + [1897496001] = 'cs1_15b_sawmill_03', + [-1518606715] = 'cs1_15b_sawmill_04', + [1178356470] = 'cs1_15b_sawmill_04b', + [187248053] = 'cs1_15b_sawmill_05_det', + [1321482519] = 'cs1_15b_sawmill_05', + [1933705746] = 'cs1_15b_sawmill_07', + [-250413646] = 'cs1_15b_sawmill_08', + [1652916032] = 'cs1_15b_sawmill_08a', + [-630665122] = 'cs1_15b_sawmill_09', + [-1939262584] = 'cs1_15b_sawmill_10', + [-1404437981] = 'cs1_15b_sawmill_11_bdgrl', + [2115540711] = 'cs1_15b_sawmill_11', + [-492970000] = 'cs1_15b_sawmill_13', + [990273920] = 'cs1_15b_sheddet1', + [756078460] = 'cs1_15b_smll_detail_00_a', + [276831835] = 'cs1_15b_smll_detail_00_c', + [-233774723] = 'cs1_15b_smll_detail_00_d', + [-2102354167] = 'cs1_15b_smll_detail_01_a', + [1508887964] = 'cs1_15b_smll_detail_01_b', + [1671553280] = 'cs1_15b_smll_detail_01_c', + [-2048767886] = 'cs1_15b_smll_detail_01', + [315902771] = 'cs1_15b_smll_detail_016', + [-1083497784] = 'cs1_15b_smll_detail_02_a', + [-621684267] = 'cs1_15b_smll_detail_02_c', + [-324371130] = 'cs1_15b_smll_detail_02_d', + [-1384343642] = 'cs1_15b_smll_detail_02', + [-2139751975] = 'cs1_15b_smll_detail_03_b', + [1777945796] = 'cs1_15b_smll_detail_03_c', + [-1083541595] = 'cs1_15b_smll_detail_03_e', + [1294930736] = 'cs1_15b_smll_detail_03_f', + [-617385197] = 'cs1_15b_smll_detail_03', + [-1480055865] = 'cs1_15b_smll_detail_04_a', + [-1032595170] = 'cs1_15b_smll_detail_04_c', + [-734626653] = 'cs1_15b_smll_detail_04_d', + [1596291833] = 'cs1_15b_smll_detail_04', + [-1643141637] = 'cs1_15b_smll_detail_08_a', + [18541584] = 'cs1_15b_smll_detail_08_c', + [1647193649] = 'cs1_15b_smll_detail_08_d', + [1426723817] = 'cs1_15b_smll_detail_08_e', + [-979208932] = 'cs1_15b_smll_detail_08_f', + [-1199219998] = 'cs1_15b_smll_detail_08_g', + [2094457730] = 'cs1_15b_smll_detail_08_j', + [644888234] = 'cs1_15b_smll_detail_08_l', + [436936160] = 'cs1_15b_smll_detail_08_m', + [-504561526] = 'cs1_15b_smll_detail_08', + [806848150] = 'cs1_15b_smll_detail_10_c', + [-2008238341] = 'cs1_15b_smll_detail_10_d', + [-1760340856] = 'cs1_15b_smll_detail_10_g', + [995007728] = 'cs1_15b_smll_detail_10_n', + [1024734723] = 'cs1_15b_smll_detail_10', + [2007506180] = 'cs1_15b_smll_detail_11_a', + [-629153102] = 'cs1_15b_smll_detail_11_b', + [730239720] = 'cs1_15b_smll_detail_11', + [-1904328979] = 'cs1_15b_smll_detail_13_a', + [2103418032] = 'cs1_15b_smll_detail_13_b', + [-655462987] = 'cs1_15b_smll_detail_13', + [62037693] = 'cs1_15b_smll_detail_14_a', + [235189089] = 'cs1_15b_smll_detail_14_b', + [541546470] = 'cs1_15b_smll_detail_14_c', + [-1840104462] = 'cs1_15b_smll_detail_14_d', + [-1383861675] = 'cs1_15b_smll_detail_14_f', + [1071617810] = 'cs1_15b_smll_detail_14_g', + [-971519992] = 'cs1_15b_smll_detail_14', + [-2058707080] = 'cs1_15b_smll_detail_15_c', + [1949049906] = 'cs1_15b_smll_detail_15', + [1578432384] = 'cs1_15b_smll_detail_16', + [919382256] = 'cs1_15b_smll_detail_17', + [-1989169145] = 'cs1_15b_smll_detail_lads01', + [-1481184107] = 'cs1_15b_smll_detail_lads02', + [-232887086] = 'cs1_15b_terraindet1', + [1168118740] = 'cs1_15b_terraindet2', + [1467856783] = 'cs1_15b_terraindet3', + [-1454089413] = 'cs1_15b_terraindet4', + [-746079773] = 'cs1_15b_wallmr', + [-1048947322] = 'cs1_15c__decal_03', + [-814419589] = 'cs1_15c__decal_04', + [-677073756] = 'cs1_15c__decal_cliff', + [1394437791] = 'cs1_15c_antennea', + [-1048173991] = 'cs1_15c_brgbit03', + [1429115722] = 'cs1_15c_cable_00', + [-1009323875] = 'cs1_15c_cable_01', + [354960480] = 'cs1_15c_clt_lgs_001', + [1631324785] = 'cs1_15c_cult_barn_2', + [814229498] = 'cs1_15c_cult_barn_o', + [-1305876480] = 'cs1_15c_cult_barn', + [2100951239] = 'cs1_15c_cult_cloth_1', + [1404085685] = 'cs1_15c_cult_cloth_2', + [-1178057746] = 'cs1_15c_cult_gate_1', + [349421996] = 'cs1_15c_cult_gate_3_o', + [2015801548] = 'cs1_15c_cult_ground_o', + [-967611332] = 'cs1_15c_cult_guard_1', + [-1840643030] = 'cs1_15c_cult_guard_2', + [-1601658713] = 'cs1_15c_cult_guard_3', + [2065475953] = 'cs1_15c_cult_hut_1_o', + [1947781348] = 'cs1_15c_cult_hut_1', + [-1788428292] = 'cs1_15c_cult_hut_2_o', + [-1951500277] = 'cs1_15c_cult_hut_2', + [-2135798568] = 'cs1_15c_cult_hut_3_o', + [1921271223] = 'cs1_15c_cult_hut_3', + [159276701] = 'cs1_15c_cult_hut_4_o', + [-1455869152] = 'cs1_15c_cult_hut_4', + [-236404662] = 'cs1_15c_cult_hut_5_o', + [-1645601662] = 'cs1_15c_cult_hut_5', + [-1191492642] = 'cs1_15c_cult_hut_69_o', + [-341541937] = 'cs1_15c_cult_hut_8_o', + [-216873262] = 'cs1_15c_cult_hut_8', + [-2115245175] = 'cs1_15c_cult_ivy_7', + [-690044843] = 'cs1_15c_cult_logs_2', + [-1116314441] = 'cs1_15c_cult_spkrs_1', + [-512943173] = 'cs1_15c_cult_steps1', + [1122066862] = 'cs1_15c_cult_stock1', + [-1109665887] = 'cs1_15c_cult_stock2', + [1811788774] = 'cs1_15c_cult_stock3', + [1479445576] = 'cs1_15c_cult_stock4', + [-2020054245] = 'cs1_15c_cult_stock5', + [116713938] = 'cs1_15c_cult_stock6', + [-197016468] = 'cs1_15c_cult_stock7', + [519440598] = 'cs1_15c_cult_wmill_1', + [816884811] = 'cs1_15c_cult_wmill_2', + [325742943] = 'cs1_15c_cult_wmill_3', + [-683289378] = 'cs1_15c_cult_wtow_1_o', + [-1206142583] = 'cs1_15c_cult_wtow_1', + [-1109474033] = 'cs1_15c_cult_wtow_2', + [-982363078] = 'cs1_15c_cult_wtow_3', + [-288029051] = 'cs1_15c_cultcliff_d', + [1746956826] = 'cs1_15c_culvert_dd', + [1668805674] = 'cs1_15c_culvert005', + [412376676] = 'cs1_15c_culvert006', + [1188772593] = 'cs1_15c_culvert007', + [1641405916] = 'cs1_15c_culvert2', + [-1282919929] = 'cs1_15c_culvertwall', + [-1667576752] = 'cs1_15c_dd_culvert', + [-796676549] = 'cs1_15c_dd_culvert002', + [-1771664815] = 'cs1_15c_dd_culvert002b', + [563318071] = 'cs1_15c_decal_01', + [1414066849] = 'cs1_15c_decal_02', + [-360308967] = 'cs1_15c_decal_05', + [-42515205] = 'cs1_15c_decal_06', + [2012917972] = 'cs1_15c_decalb_01', + [1773999193] = 'cs1_15c_decalb_02', + [-404765905] = 'cs1_15c_frrd02', + [-457392919] = 'cs1_15c_frrd03', + [-739435702] = 'cs1_15c_frrd04', + [1480099214] = 'cs1_15c_ftrk03', + [-1635020233] = 'cs1_15c_ftrk04', + [-1128083803] = 'cs1_15c_ftrk05', + [-142654447] = 'cs1_15c_ftrk08', + [-1514659708] = 'cs1_15c_ftrk09', + [2098024591] = 'cs1_15c_ftrk10', + [-255560998] = 'cs1_15c_ghh_69', + [-481768150] = 'cs1_15c_hut_070', + [-1934989179] = 'cs1_15c_hut_det', + [1891737529] = 'cs1_15c_l_11', + [2133408900] = 'cs1_15c_l_12', + [1893507051] = 'cs1_15c_l_13', + [1135297929] = 'cs1_15c_l_14', + [1492004670] = 'cs1_15c_land0022', + [690188647] = 'cs1_15c_land013333', + [1722411540] = 'cs1_15c_land02', + [514644507] = 'cs1_15c_land03', + [-78703776] = 'cs1_15c_land05', + [243255674] = 'cs1_15c_land05b', + [995894046] = 'cs1_15c_land05c', + [928450575] = 'cs1_15c_land33', + [-1216825568] = 'cs1_15c_lb_00', + [-885924218] = 'cs1_15c_lb_01', + [-1188545933] = 'cs1_15c_lb_02', + [1857398159] = 'cs1_15c_lb_03', + [-493115773] = 'cs1_15c_missionculvert', + [-1520526498] = 'cs1_15c_missionculvert2', + [-1150461319] = 'cs1_15c_mr_detail', + [1262263814] = 'cs1_15c_mr_rails', + [1246136473] = 'cs1_15c_mr_rails2', + [2026628515] = 'cs1_15c_mr_rails3', + [1720795438] = 'cs1_15c_mr_rails4', + [329423694] = 'cs1_15c_mr_rails5', + [1096873674] = 'cs1_15c_mr_rails6', + [1658589231] = 'cs1_15c_ovrly02', + [-445656863] = 'cs1_15c_ovrly02b', + [-882314000] = 'cs1_15c_retwalb002', + [1225289769] = 'cs1_15c_retwalb003', + [100919801] = 'cs1_15c_retwalb010', + [-904494144] = 'cs1_15c_slipdecal16', + [1114697762] = 'cs1_15c_trk09', + [-999256755] = 'cs1_15c_trk13_dcl', + [-105875790] = 'cs1_15c_trk13', + [-507853109] = 'cs1_15c_trk16', + [1705485908] = 'cs1_15c_tunl_01b_d', + [895596743] = 'cs1_15c_tunl_01b', + [-1513684054] = 'cs1_15c_tunl_01b001', + [-1349229098] = 'cs1_16_bikehire', + [-791372275] = 'cs1_16_cable_02', + [223910225] = 'cs1_16_cable_railings_a', + [918842408] = 'cs1_16_cable_railings_b', + [553795748] = 'cs1_16_cable_railings_c', + [49129279] = 'cs1_16_cable_railings', + [1825871626] = 'cs1_16_cable_tarmac', + [1354613695] = 'cs1_16_cable', + [770090991] = 'cs1_16_carpark_d', + [279246450] = 'cs1_16_copbillboard', + [-1496746610] = 'cs1_16_dcl_forpth_04', + [645016583] = 'cs1_16_emissive_slod', + [-739401417] = 'cs1_16_emissive', + [265828076] = 'cs1_16_fence_01', + [2118023015] = 'cs1_16_forroad2', + [-657617746] = 'cs1_16_frstlnd01', + [-427349983] = 'cs1_16_frstlnd02', + [1267528227] = 'cs1_16_frstlnd03', + [748141621] = 'cs1_16_glue_01', + [-451891928] = 'cs1_16_glue_02', + [114946234] = 'cs1_16_glue_03', + [1051739663] = 'cs1_16_hedge_rnd_a_sm_decr002', + [1664978464] = 'cs1_16_hedge_rnd_a_smr001', + [-1250211721] = 'cs1_16_helidecal', + [2092099097] = 'cs1_16_lodge_03_ovr', + [1674045572] = 'cs1_16_lodge_03_ovr01', + [1439779991] = 'cs1_16_lodge_03_ovr02', + [957879077] = 'cs1_16_lodge_03_ovr03', + [-2106934516] = 'cs1_16_lodge_ground_ovr', + [493527916] = 'cs1_16_lodge_lights', + [732004594] = 'cs1_16_lodge_woodrails', + [150786064] = 'cs1_16_lodge', + [-1878664611] = 'cs1_16_police_building', + [-316372447] = 'cs1_16_police_dec', + [-1009891630] = 'cs1_16_police_det_fizz', + [-1535667780] = 'cs1_16_police_details', + [1171181612] = 'cs1_16_police_tarmac', + [-842271910] = 'cs1_16_roadz04', + [-1821344084] = 'cs1_16_roadz05', + [-2128946687] = 'cs1_16_roadz06', + [1161302532] = 'cs1_16_sheriff_con_sign_d', + [-341451465] = 'cs1_16_sheriff_e_dummy', + [1253895058] = 'cs1_16_sheriff2_windows', + [-1776434031] = 'cs1_16_signage', + [-1788229762] = 'cs1_16_str_bridge2', + [-1026186667] = 'cs1_16_str_bridge3', + [1284655385] = 'cs1_16_struct_bridge', + [-459683126] = 'cs1_16_structure_a', + [459667598] = 'cs1_16_structure_b_railings', + [-164008443] = 'cs1_16_structure_b', + [2115245904] = 'cs1_16_structure_bb', + [1243591009] = 'cs1_16_weed_01', + [1756950163] = 'cs1_16_weed_02', + [-442865576] = 'cs1_16_weed_03', + [-732936764] = 'cs1_16_weed_04', + [477887679] = 'cs1_lod_08_slod3', + [1057364270] = 'cs1_lod_14_slod3', + [1895792488] = 'cs1_lod_14b_slod3', + [450498068] = 'cs1_lod_15_slod3', + [-1561123356] = 'cs1_lod_15b_slod3', + [141389683] = 'cs1_lod_15c_slod3', + [12343246] = 'cs1_lod_16_slod3', + [-623287818] = 'cs1_lod_riva_slod3', + [1009076235] = 'cs1_lod_rivb_slod3', + [380132802] = 'cs1_lod_roadsa_slod3', + [1638163755] = 'cs1_lod2_01_7_slod3', + [2078865856] = 'cs1_lod2_09_slod3', + [-766129007] = 'cs1_lod2_emissive_slod3', + [1554295200] = 'cs1_lod3_terrain_slod3_01', + [1307249709] = 'cs1_lod3_terrain_slod3_02', + [992601771] = 'cs1_lod3_terrain_slod3_03', + [711410982] = 'cs1_lod3_terrain_slod3_04', + [1683863838] = 'cs1_lod3_terrain_slod3_05', + [1444945059] = 'cs1_lod3_terrain_slod3_06', + [-852086952] = 'cs1_railway_br01_rail', + [1224894275] = 'cs1_railway_br01', + [-497325064] = 'cs1_railway_br02_rail', + [465833159] = 'cs1_railway_br02', + [-1639853105] = 'cs1_railway_br03_rail', + [747417176] = 'cs1_railway_br03', + [-1157144066] = 'cs1_railway_t01', + [1749597310] = 'cs1_railway_t02', + [1451432179] = 'cs1_railway_t03', + [-2073135927] = 'cs1_railway_t04', + [1930678804] = 'cs1_railway_t05', + [565784416] = 'cs1_railway_t06', + [244812061] = 'cs1_railway_t07', + [1028187775] = 'cs1_railway_t08', + [-399164323] = 'cs1_railway_t09', + [173764949] = 'cs1_railway_t10', + [884688404] = 'cs1_railway_t11', + [1667375969] = 'cs1_railway_t12', + [2108664256] = 'cs1_railwyb_int_slod1', + [1534072704] = 'cs1_railwyb_shadow_ext', + [1385455931] = 'cs1_railwyb_shadow_int_lod', + [348769469] = 'cs1_railwyb_steps', + [-2109567732] = 'cs1_railwyb_stepsground', + [1286502999] = 'cs1_railwyb_trk02', + [696038380] = 'cs1_railwyb_trk04', + [1376584972] = 'cs1_railwyb_trk06', + [2126634613] = 'cs1_railwyb_trk08', + [1072514934] = 'cs1_railwyb_trk1', + [1838094141] = 'cs1_railwyb_trk1int', + [-1675460641] = 'cs1_railwyb_trk3', + [536220620] = 'cs1_railwyb_trk4int', + [10963179] = 'cs1_railwyb_trk5', + [-646707159] = 'cs1_railwyb_trk6int', + [-587497068] = 'cs1_railwyb_trk7', + [1323558243] = 'cs1_railwyb_trk8', + [1228770240] = 'cs1_railwyb_trkint2', + [1837028418] = 'cs1_railwyb_trkint3', + [-1160646937] = 'cs1_railwyb_trkint5', + [177071451] = 'cs1_railwyb_tunnel_1_dec', + [-909928979] = 'cs1_railwyb_tunnel_1_wires', + [1401939921] = 'cs1_railwyb_tunnel_1', + [236813934] = 'cs1_railwyb_tunnel_2_dec', + [1173783198] = 'cs1_railwyb_tunnel_2_wires', + [1096106844] = 'cs1_railwyb_tunnel_2', + [-184001033] = 'cs1_railwyb_tunnel_3_dec', + [-131087152] = 'cs1_railwyb_tunnel_3_wires', + [-383315199] = 'cs1_railwyb_tunnel_3', + [1735914352] = 'cs1_railwyb_tunnel_4_dec', + [869628881] = 'cs1_railwyb_tunnel_4_wires', + [-571933563] = 'cs1_railwyb_tunnel_4', + [1701724765] = 'cs1_railwyb_tunnel_5_dec', + [215169147] = 'cs1_railwyb_tunnel_5_wires', + [333768828] = 'cs1_railwyb_tunnel_5', + [298041609] = 'cs1_railwyb_tunnel_6_dec', + [-2013580455] = 'cs1_railwyb_tunnel_6_wires', + [-91376178] = 'cs1_railwyb_tunnel_6', + [201572558] = 'cs1_railwyb_tunnel_reflect1', + [728563616] = 'cs1_railwyb_tunnel_reflect2', + [-1194485149] = 'cs1_railwyb_tunnel_reflect3', + [-956057905] = 'cs1_railwyb_tunnel_reflect4', + [-698854024] = 'cs1_railwyb_tunnel_reflect5', + [-940820324] = 'cs1_railwyb_tunnel_reflect6', + [1136919711] = 'cs1_railwyc_1_slod1', + [1098775905] = 'cs1_railwyc_2_slod1', + [225028467] = 'cs1_railwyc_3_slod1', + [-846109309] = 'cs1_railwyc_trk01_lod', + [-775861882] = 'cs1_railwyc_trk01', + [-150180113] = 'cs1_railwyc_trk02_lod', + [677050040] = 'cs1_railwyc_trk02', + [1423027071] = 'cs1_railwyc_trk03_lod', + [-1282667236] = 'cs1_railwyc_trk03', + [-350354789] = 'cs1_railwyc_trk04_lod', + [214974371] = 'cs1_railwyc_trk04', + [489415085] = 'cs1_railwyc_trk05_lod', + [450550712] = 'cs1_railwyc_trk05', + [1412294154] = 'cs1_railwyc_trk06_lod', + [1299726578] = 'cs1_railwyc_trk06', + [-10208023] = 'cs1_railwyc_trk07_lod', + [-57696478] = 'cs1_railwyc_trk07', + [-1201094887] = 'cs1_railwyc_trk08_lod', + [836995529] = 'cs1_railwyc_trk08', + [995923637] = 'cs1_railwyc_trk09_lod', + [1060152419] = 'cs1_railwyc_trk09', + [-884979505] = 'cs1_rdprops_cblb_00', + [-581505796] = 'cs1_rdprops_cblb_01', + [-257682550] = 'cs1_rdprops_cblb_02', + [41531189] = 'cs1_rdprops_cblb_03', + [-1497169963] = 'cs1_rdprops_cblb_04', + [1878757959] = 'cs1_rdprops_cblb_05', + [-1438218532] = 'cs1_rdprops_cblb_06', + [670257862] = 'cs1_rdprops_pb_mot_w002', + [-1064203661] = 'cs1_rdprops_pb_vantim01_dslod', + [673923696] = 'cs1_rdprops_pb_wi137', + [1307778] = 'cs1_rdprops_pb_wi151', + [1437926274] = 'cs1_rdprops_pb_wi851', + [1339686023] = 'cs1_rdprops_pb_wii137', + [-2013770070] = 'cs1_rdprops_pb_wire_em01', + [1917920092] = 'cs1_rdprops_pb_wire_em02', + [729028003] = 'cs1_rdprops_pb_wire_em03', + [98159215] = 'cs1_rdprops_pb_wire_em04', + [1323621508] = 'cs1_rdprops_pb_wire_em05', + [958640386] = 'cs1_rdprops_pb_wire_em06', + [-767925455] = 'cs1_rdprops_pb_wire_em07', + [-857843591] = 'cs1_rdprops_pb_wire_em08', + [-167695682] = 'cs1_rdprops_pb_wire_em09', + [1359045021] = 'cs1_rdprops_pb_wire_em10', + [-2048078989] = 'cs1_rdprops_pb_wire_em11', + [2006855382] = 'cs1_rdprops_pb_wire_em12', + [506985483] = 'cs1_rdprops_pb_wire_em13', + [167629719] = 'cs1_rdprops_pb_wire_em14', + [1122616686] = 'cs1_rdprops_pb_wire_em15', + [746625180] = 'cs1_rdprops_pb_wire_em16', + [-681546147] = 'cs1_rdprops_pb_wire_em17', + [-955134528] = 'cs1_rdprops_pb_wire_em18', + [-667851809] = 'cs1_rdprops_pb_wire_em20', + [-256142089] = 'cs1_rdprops_pb_wire_em22', + [-1800610601] = 'cs1_rdprops_pb_wire_em23', + [-1628049047] = 'cs1_rdprops_pb_wire_em24', + [-1455389186] = 'cs1_rdprops_pb_wire_em25', + [-1011303698] = 'cs1_rdprops_pb_wire_em26', + [2003378756] = 'cs1_rdprops_pb_wire_em27', + [1239041843] = 'cs1_rdprops_pb_wire_em28', + [-1135867835] = 'cs1_rdprops_pb_wspline_em027', + [1710835662] = 'cs1_rdprops_pb_wspline077', + [983101710] = 'cs1_rdprops_pb_wspline079', + [-2035389300] = 'cs1_rdprops_pb_wspline080', + [-1674963069] = 'cs1_rdprops_pb_wspline081', + [-10363407] = 'cs1_rdprops_pb_wspline084', + [-896339148] = 'cs1_rdprops_pb_wspline093', + [-445142787] = 'cs1_rdprops_pb_wspline095', + [772389408] = 'cs1_rdprops_pb_wspline096', + [1257731067] = 'cs1_rdprops_pb_wspline098', + [1010620038] = 'cs1_rdprops_pb_wspline099', + [-124046747] = 'cs1_rdprops_pb_wspline100', + [782540407] = 'cs1_rdprops_pb_wspline101', + [-218323164] = 'cs1_rdprops_pb_wspline105', + [-515439687] = 'cs1_rdprops_pb_wspline106', + [-1721240580] = 'cs1_rdprops_pb_wspline107', + [1987096078] = 'cs1_rdprops_pb_wspline108', + [1249072364] = 'cs1_rdprops_pb_wspline111', + [951234923] = 'cs1_rdprops_pb_wspline112', + [1861295591] = 'cs1_rdprops_pb_wspline113', + [-243588355] = 'cs1_rdprops_pb_wspline116', + [338585699] = 'cs1_rdprops_pb_wspline118', + [-1438870347] = 'cs1_rdprops_pb_wspline119', + [911455497] = 'cs1_rdprops_pb_wspline121', + [-1669037703] = 'cs1_rdprops_pb_wspline123', + [-107562084] = 'cs1_rdprops_pb_wspline125', + [-355918335] = 'cs1_rdprops_pb_wspline126', + [1802805078] = 'cs1_rdprops_pb_wspline127', + [-995700291] = 'cs1_rdprops_pb_wspline129', + [424868148] = 'cs1_rdprops_pb_wspline131', + [101175966] = 'cs1_rdprops_pb_wspline132', + [-182570805] = 'cs1_rdprops_pb_wspline133', + [-420834204] = 'cs1_rdprops_pb_wspline134', + [-1392533365] = 'cs1_rdprops_pb_wspline135', + [-1613363656] = 'cs1_rdprops_pb_wspline136', + [417462350] = 'cs1_rdprops_pb_wspline137', + [187915505] = 'cs1_rdprops_pb_wspline138', + [-1951015432] = 'cs1_rdprops_pb_wspline139', + [-652008486] = 'cs1_rdprops_shape017x', + [1871483815] = 'cs1_rdprops_tele_wire02', + [-2128726326] = 'cs1_rdprops_tele_wire03', + [-663367572] = 'cs1_rdprops_tele_wire10', + [-293405562] = 'cs1_rdprops_tele_wire11', + [-1821619099] = 'cs1_rdprops_wire_072', + [2115183027] = 'cs1_rdprops_wire_073', + [1850245662] = 'cs1_rdprops_wire_074', + [-1186523118] = 'cs1_rdprops_wire_075', + [1816464577] = 'cs1_rdprops_wire_e075', + [-557001673] = 'cs1_rdprops_wire_hi_01', + [-820562740] = 'cs1_rdprops_wire_hi_02', + [710994782] = 'cs1_rdprops_wire_hi_03', + [479350721] = 'cs1_rdprops_wire_hi_04', + [97788485] = 'cs1_rdprops_wire_hi_05', + [-168787330] = 'cs1_rdprops_wire_hi_06', + [1746265803] = 'cs1_rdprops_wire_hi_07', + [1666964823] = 'cs1_rdprops_wire_hi_08', + [1301918163] = 'cs1_rdprops_wire_hi_09', + [-306854774] = 'cs1_rdprops_wire_hi_10', + [599797914] = 'cs1_rdprops_wire_hi_11', + [-2114458360] = 'cs1_rdprops_wire_hi_12', + [500435413] = 'cs1_rdprops_wire_poly035', + [-971551843] = 'cs1_rdprops_wire_poly045', + [-203577559] = 'cs1_rdprops_wire_poly046', + [-503446678] = 'cs1_rdprops_wire_poly047', + [-1541761968] = 'cs1_rdprops_wire_poly050', + [-1225737732] = 'cs1_rdprops_wire_poly051', + [1452079406] = 'cs1_rdprops_wire_poly057', + [-1666246742] = 'cs1_rdprops_wire_spline_091', + [-2139726015] = 'cs1_rdprops_wire_spline_093', + [1854585706] = 'cs1_rdprops_wire_spline_094', + [-804676844] = 'cs1_rdprops_wire_spline028', + [38305681] = 'cs1_rdprops_wire_spline029', + [-1457005991] = 'cs1_rdprops_wire_spline029b002', + [-439072959] = 'cs1_rdprops_wire_spline030', + [1417080209] = 'cs1_rdprops_wire_spline034b002', + [-943336733] = 'cs1_rdprops_wire_spline035b002', + [-13014043] = 'cs1_rdprops_wire_spline036b003', + [513291660] = 'cs1_rdprops_wire_spline066', + [142805346] = 'cs1_rdprops_wire_spline067', + [2050190529] = 'cs1_rdprops_wire_spline068', + [-1160741170] = 'cs1_rdprops_wire_spline070', + [-1465787791] = 'cs1_rdprops_wire_spline071', + [-1164824091] = 'cs1_rdprops_wire_spline071b', + [-540817228] = 'cs1_rdprops_wire_spline074', + [-218075347] = 'cs1_rdprops_wire_spline077', + [683236002] = 'cs1_rdprops_wire_spline078', + [2147456329] = 'cs1_rdprops_wire_spline081', + [928416764] = 'cs1_rdprops_wire_spline082', + [1284025952] = 'cs1_rdprops_wire_spline083', + [1301065768] = 'cs1_rdprops_wire_spline084', + [-729172644] = 'cs1_rdprops_wire_test_ac017', + [-2004314887] = 'cs1_rdprops_wiree074', + [-1058368971] = 'cs1_roads_armco_08_lod', + [-493449974] = 'cs1_roads_armco_brdg_nrt_01', + [435780559] = 'cs1_roads_armco_brdg_nrt_02', + [666305074] = 'cs1_roads_armcojl2_02', + [1972696768] = 'cs1_roads_armcojl2', + [-1210222300] = 'cs1_roads_armcojl3_02', + [-1453401049] = 'cs1_roads_armcojl3_03', + [1691571517] = 'cs1_roads_armcojl3', + [615429520] = 'cs1_roads_armcojlz_02', + [-952264116] = 'cs1_roads_armcojlz', + [1613005668] = 'cs1_roads_bdge_dcl_01b', + [1577042512] = 'cs1_roads_decals_01b', + [-1260720411] = 'cs1_roads_decals_02b', + [-1776635547] = 'cs1_roads_decals_02c', + [-107349918] = 'cs1_roads_decals_02e', + [-365012561] = 'cs1_roads_decals_02f', + [995825993] = 'cs1_roads_pb_01_r1_01_ovly', + [1848923972] = 'cs1_roads_pb_01_r1_01', + [-1647998477] = 'cs1_roads_pb_01_r1_02_ovly', + [616121423] = 'cs1_roads_pb_01_r1_02', + [434833966] = 'cs1_roads_pb_01_r1_03_ovly', + [931424741] = 'cs1_roads_pb_01_r1_03', + [-307747281] = 'cs1_roads_pb_01_r2_01_ovly', + [717866268] = 'cs1_roads_pb_01_r2_01', + [1497634363] = 'cs1_roads_pb_01_r2_02_ovly', + [89651769] = 'cs1_roads_pb_01_r2_03', + [-778692470] = 'cs1_roads_pb_01_r3_01_ovly', + [645908845] = 'cs1_roads_pb_01_r3_01', + [-1425922449] = 'cs1_roads_pb_01_r3_02_ovly', + [1489350136] = 'cs1_roads_pb_01_r3_02', + [-1286569480] = 'cs1_roads_pb_01_r3_03_ovly', + [-660066881] = 'cs1_roads_pb_01_r3_03', + [-1936546272] = 'cs1_roads_pb_01_r3_04_ovly', + [-1042677725] = 'cs1_roads_pb_01_r3_04', + [-1529106413] = 'cs1_roads_pb_01_r4_02_ovly', + [-55442626] = 'cs1_roads_pb_01_r4_02', + [1622619093] = 'cs1_roads_pb_01_r4_02a_ovly', + [1034009392] = 'cs1_roads_pb_01_r4_03_ovly', + [1852335785] = 'cs1_roads_pb_01_r4_03', + [149499090] = 'cs1_roads_pb_01_r4_04_ovrly', + [1562231828] = 'cs1_roads_pb_01_r4_04', + [-267678066] = 'cs1_roads_pb_dcl_rd_jn1', + [-385297464] = 'cs1_roads_pb_dec01', + [473443023] = 'cs1_roads_pb_junc_01', + [-747058828] = 'cs1_roads_pb_tiredcls_ent_01', + [985794821] = 'cs1_roads_pbdst_land_01', + [2122027135] = 'cs1_roads_pbdst_land_02', + [-985101531] = 'cs1_roads_ph01', + [684752529] = 'cs1_roads_ph01b', + [187122495] = 'cs1_roads_ph01c', + [203430099] = 'cs1_roads_ph05', + [-963483542] = 'cs1_roads_phc_rd_swtbc_strt005', + [1603269462] = 'cs1_roads_phc_roadz02', + [812848413] = 'cs1_roads_phc_roadz03', + [152833579] = 'cs1_roads_rd_dcl_jn_02', + [-1209150967] = 'cs1_roads_rd_isnd_02', + [843519861] = 'cs1_roads_rd_jo_dcl_05', + [1882242106] = 'cs1_roads_rd_sign_002', + [-1688358044] = 'cs1_roads_rd_sign_01', + [1574018367] = 'cs1_roads_rd_sng_2', + [1276248062] = 'cs1_roads_rd_sng_3b01', + [-1708897106] = 'cs1_roads_roadz01', + [114123555] = 'cs1_roads_rum_strip_02', + [-177553314] = 'cs1_roads_rum_strip_03', + [-1088783362] = 'cs1_roads_wallret_01', + [-1940384134] = 'cs1_roads_wallret_02', + [1702086774] = 'cs1_roads_wallret_03', + [-1674496528] = 'cs1_roads_wallret_04', + [-718230290] = 'cs1_roads_wallret003', + [759683534] = 'cs1_roadsa_armco_05', + [-170945975] = 'cs1_roadsa_armcojl_lod', + [1568261962] = 'cs1_roadsa_armcojl', + [1176301106] = 'cs1_roadsa_bdg_dcl_01', + [1357013571] = 'cs1_roadsa_bdg_dcl_5', + [1127204574] = 'cs1_roadsa_bdg_dcl_6', + [2101095738] = 'cs1_roadsa_cst_dcl_01', + [1533274622] = 'cs1_roadsa_cst_dcl_02', + [1732260364] = 'cs1_roadsa_dcl_jn_01', + [293794957] = 'cs1_roadsa_dcl_sdd', + [827094469] = 'cs1_roadsa_flap_sup_01', + [75138757] = 'cs1_roadsa_flappy_stp_01_w', + [-991305470] = 'cs1_roadsa_flappybase_02', + [525122596] = 'cs1_roadsa_flappybase_3', + [-306099627] = 'cs1_roadsa_m04b', + [165394080] = 'cs1_roadsa_ncumasign1', + [-109963827] = 'cs1_roadsa_ncumasign2', + [199357469] = 'cs1_roadsa_rd_sgn_02', + [-459168379] = 'cs1_roadsa_rd_sgn_04', + [-218128729] = 'cs1_roadsa_rd_sng_03', + [-45567175] = 'cs1_roadsa_rd_sng_04', + [1187005751] = 'cs1_roadsa_rd_sng_3b', + [-2144730991] = 'cs1_roadsa_stop_bdcl', + [-2014120123] = 'cs1_roadsa00', + [562309729] = 'cs1_roadsa01', + [811976740] = 'cs1_roadsa02', + [1040245594] = 'cs1_roadsa03', + [-930547600] = 'cs1_roadsa04', + [700033310] = 'cs1_roadsa05_d', + [867403730] = 'cs1_roadsa05_side01', + [485644880] = 'cs1_roadsa05_side02', + [1443843209] = 'cs1_roadsa05_side03', + [1517657163] = 'cs1_roadsa05', + [1748679860] = 'cs1_roadsa06_d', + [-1901849959] = 'cs1_roadsa06_side01', + [-1437840919] = 'cs1_roadsa06_side02', + [1544891772] = 'cs1_roadsa06_side03', + [1707848439] = 'cs1_roadsa06', + [1995986256] = 'cs1_roadsa07', + [-1819341187] = 'cs1_roadsa09', + [-1478347861] = 'cs1_roadsa10', + [2038126302] = 'cs1_roadsa11', + [-1941144448] = 'cs1_roadsa12', + [792427319] = 'cs2_01__decal001', + [1172383802] = 'cs2_01_bb_global_hd', + [-86863031] = 'cs2_01_bridge_05_ovr', + [-777987573] = 'cs2_01_bridge_05', + [-1531575764] = 'cs2_01_bridge_fizz01', + [-1958084256] = 'cs2_01_bridge', + [1445137254] = 'cs2_01_clothshop_obja', + [770681773] = 'cs2_01_clothshop', + [-1832723667] = 'cs2_01_clshop_lite_emiss', + [-1591192280] = 'cs2_01_decal_02', + [-1805093582] = 'cs2_01_decal_carpark', + [-1882628976] = 'cs2_01_desert_house_004_dec', + [-1118163597] = 'cs2_01_desert_house_004_dec2', + [71772186] = 'cs2_01_desert_house2_dec1', + [454055340] = 'cs2_01_desert_house2_dec2', + [1929479565] = 'cs2_01_desert_house2_dec3', + [-1750576174] = 'cs2_01_deshous_2', + [1293336240] = 'cs2_01_deshous_3', + [-2072529103] = 'cs2_01_deshous1', + [-1331982472] = 'cs2_01_deshous4', + [903047763] = 'cs2_01_doorglass005', + [475687200] = 'cs2_01_doorglass01', + [-711061957] = 'cs2_01_ed_barn_01', + [-1170945493] = 'cs2_01_ed_fruit_dec', + [-1139484893] = 'cs2_01_ed_fruitshop_ovr', + [-1253124969] = 'cs2_01_ed_fruitshop', + [425634674] = 'cs2_01_ed_gs_01', + [1161447730] = 'cs2_01_ed_gs_ovr_01', + [383806591] = 'cs2_01_ed_gs_ovr_02', + [-884157095] = 'cs2_01_ed_gs_ovr_09', + [922328525] = 'cs2_01_ed_gs_ovr_10', + [-303546491] = 'cs2_01_feedstore_decal', + [804734036] = 'cs2_01_feedstore_grounddcl', + [595967615] = 'cs2_01_feedstore', + [-1989855777] = 'cs2_01_frmland01', + [1435782802] = 'cs2_01_frmland03', + [48738446] = 'cs2_01_garden_a', + [232022418] = 'cs2_01_garden_b_d', + [324620649] = 'cs2_01_garden_b', + [1336834606] = 'cs2_01_garden_c_dec', + [1403071077] = 'cs2_01_garden_dec', + [-1750837932] = 'cs2_01_gardens_a_d', + [-1384077013] = 'cs2_01_gas_obj1', + [-2124263173] = 'cs2_01_gas_obj2', + [1918413817] = 'cs2_01_gas_stop_ovr', + [1162163552] = 'cs2_01_gas_stop', + [-2038553432] = 'cs2_01_ground_det1', + [339551708] = 'cs2_01_ground', + [1733808062] = 'cs2_01_house5', + [-1931309079] = 'cs2_01_land02', + [-674703964] = 'cs2_01_land04_o', + [-1452685065] = 'cs2_01_land04', + [1908244593] = 'cs2_01_lds_bw_garden_a_dec', + [1302780361] = 'cs2_01_lds_bw_house_d', + [704825452] = 'cs2_01_markets_dec', + [-92746238] = 'cs2_01_markets_dec2', + [-1886525161] = 'cs2_01_markets_obj1b', + [101767523] = 'cs2_01_markets_obj2a', + [16724284] = 'cs2_01_markets', + [1189588132] = 'cs2_01_markets2_obj1b', + [430373999] = 'cs2_01_markets2_obj2a', + [1261917982] = 'cs2_01_markets2', + [1678215358] = 'cs2_01_markets3', + [782933509] = 'cs2_01_markets4', + [-383599949] = 'cs2_01_obj_group1a', + [149220827] = 'cs2_01_obj_group2a', + [-237354770] = 'cs2_01_obj_group3b', + [1979698891] = 'cs2_01_obj_group4b', + [1681927276] = 'cs2_01_obj_group5b', + [1205280930] = 'cs2_01_obj_group6', + [966624303] = 'cs2_01_obj_group7', + [1910752515] = 'cs2_01_obj_group8a', + [-1983961995] = 'cs2_01_obj_group9', + [-903785216] = 'cs2_01_obj_ladder_02', + [-17057073] = 'cs2_01_obj_ladder', + [713450210] = 'cs2_01_roadditch1', + [-1836170284] = 'cs2_01_shop_dec1', + [-2084067769] = 'cs2_01_shop_dec2', + [960729400] = 'cs2_01_shop_dec3', + [-1103616004] = 'cs2_01_shps1_dec', + [1634668100] = 'cs2_01_sm_shed', + [1942822166] = 'cs2_01_sm', + [-296252013] = 'cs2_01_streampipe', + [-1038933703] = 'cs2_01_sup_decal', + [544946009] = 'cs2_01_super_sidedoors', + [1315428494] = 'cs2_01_weed01', + [1616084065] = 'cs2_01_weed02', + [1374740380] = 'cs2_01_weed03', + [-69651602] = 'cs2_01_weed04', + [-308570381] = 'cs2_01_weed05', + [388885015] = 'cs2_01_weed06', + [-95768279] = 'cs2_01_weed11', + [-685020437] = 'cs2_01_weed12', + [-1281383468] = 'cs2_01_weed14', + [573090990] = 'cs2_02_airp_sign', + [945587311] = 'cs2_02_airstrip_dec_003', + [1654380781] = 'cs2_02_airstrip_dec_004', + [93405186] = 'cs2_02_bales_002', + [-331377291] = 'cs2_02_bdec_01c', + [-1557542598] = 'cs2_02_bdec_06', + [1155369871] = 'cs2_02_bdec_18', + [1131508731] = 'cs2_02_bdec_25', + [-954139420] = 'cs2_02_bdec_25a', + [-1337899144] = 'cs2_02_bdec_30i', + [184614134] = 'cs2_02_bdec_30j', + [-1491977989] = 'cs2_02_bdec_46', + [-27236462] = 'cs2_02_bdec_48', + [-2143720630] = 'cs2_02_bdec_49', + [1695436258] = 'cs2_02_bdec_49b', + [1287313383] = 'cs2_02_bdec_56b', + [360355534] = 'cs2_02_bdec_57', + [-1365301146] = 'cs2_02_bent_barrel', + [1124690726] = 'cs2_02_brick_pform002', + [-1567136776] = 'cs2_02_brick_pform01', + [1311227420] = 'cs2_02_bridge13', + [1393758288] = 'cs2_02_bridge13b', + [1873628754] = 'cs2_02_cloth_004_lod', + [-1863575437] = 'cs2_02_cloth_007_lod', + [-767389015] = 'cs2_02_cs1_11b_house01_dec006', + [1075232008] = 'cs2_02_ditchfence', + [-1662104041] = 'cs2_02_drttrk1', + [1734664965] = 'cs2_02_drttrk2', + [909246624] = 'cs2_02_drttrk3', + [-1567735] = 'cs2_02_drttrk4', + [1795837382] = 'cs2_02_drttrk4a', + [316029413] = 'cs2_02_drttrk5', + [476957972] = 'cs2_02_drttrk6', + [-1929439419] = 'cs2_02_dtrk_brdg015', + [1055547895] = 'cs2_02_emissive_lod', + [-342830861] = 'cs2_02_emissive', + [-176223160] = 'cs2_02_emissive2_lod', + [-1565295821] = 'cs2_02_emissive2', + [-1542771718] = 'cs2_02_emissive3_lod', + [-1810244096] = 'cs2_02_emissive3', + [1167254092] = 'cs2_02_fbox01', + [-665397564] = 'cs2_02_fdec_02d', + [-1010039947] = 'cs2_02_fence_001', + [-2024805850] = 'cs2_02_fence035', + [-573504644] = 'cs2_02_field_dec01', + [-267999257] = 'cs2_02_field_dec02', + [1472954571] = 'cs2_02_field_rocks', + [-1595320034] = 'cs2_02_fnc_mesh001', + [1317123148] = 'cs2_02_fnc_mesh002', + [-336236747] = 'cs2_02_fnc_mesh004', + [-634467416] = 'cs2_02_fnc_mesh005', + [-2011486334] = 'cs2_02_fnc_mesh006', + [1976664815] = 'cs2_02_fnc_mesh007', + [883639638] = 'cs2_02_freshplough_01', + [-257511577] = 'cs2_02_frmland01', + [-11252542] = 'cs2_02_frmland02', + [1539720336] = 'cs2_02_frmland02b', + [2105945161] = 'cs2_02_frmland02b001', + [-1107359488] = 'cs2_02_frmland02c', + [2070262232] = 'cs2_02_frmland02x001', + [1696438359] = 'cs2_02_frmland03', + [1945089531] = 'cs2_02_frmland04', + [698130770] = 'cs2_02_frmland05', + [1865475573] = 'cs2_02_frmland05b', + [-1008816290] = 'cs2_02_g_silo_xtra', + [1244162708] = 'cs2_02_glue_01', + [1080317708] = 'cs2_02_glue_02', + [-351490982] = 'cs2_02_glue_03', + [-409779356] = 'cs2_02_grainsilos_a001', + [1189428729] = 'cs2_02_grainsilos001', + [-112577501] = 'cs2_02_hangar_detail', + [2091558338] = 'cs2_02_hanger_desk', + [1782063243] = 'cs2_02_hanger_filing_cab', + [-269703656] = 'cs2_02_haybale_stack_01', + [-49856435] = 'cs2_02_haybale_stack_02', + [-1396662335] = 'cs2_02_haybale_stack_03', + [-1154073428] = 'cs2_02_haybale_stack_04', + [-923936741] = 'cs2_02_haybale_stack_05', + [-702811529] = 'cs2_02_haybale_stack_06', + [1702532315] = 'cs2_02_house_gutter01', + [-364229291] = 'cs2_02_house001', + [1247417556] = 'cs2_02_house01_dec003', + [1203996278] = 'cs2_02_irr_003', + [1266869633] = 'cs2_02_irr_003w', + [302563417] = 'cs2_02_irr_004_grill01', + [252679439] = 'cs2_02_irr_004', + [469236192] = 'cs2_02_irr_004w', + [2103308714] = 'cs2_02_irr_005', + [1136101534] = 'cs2_02_irr_01_grill01', + [-1551033515] = 'cs2_02_irr_01', + [261461307] = 'cs2_02_irr_01w', + [-1180765842] = 'cs2_02_irr_03_grill01', + [865911952] = 'cs2_02_irr_05w', + [1136225453] = 'cs2_02_irr_2weed', + [1674370945] = 'cs2_02_irr_3weed', + [2012015880] = 'cs2_02_irr_5weed', + [1936491040] = 'cs2_02_irr_5weed001', + [-2055068085] = 'cs2_02_irr_5weed002', + [1942586070] = 'cs2_02_irr_5weed003', + [1228926761] = 'cs2_02_irrtemp_01', + [-1901331956] = 'cs2_02_irrtemp_04', + [1946004720] = 'cs2_02_landnew1', + [1884075748] = 'cs2_02_ndec_03', + [1948630390] = 'cs2_02_ndec_12', + [923071049] = 'cs2_02_ndec_23a', + [1828702447] = 'cs2_02_pipe_19', + [917416974] = 'cs2_02_pipe_broken', + [-1614951693] = 'cs2_02_pipe_broken002', + [2129132562] = 'cs2_02_pipe20', + [348427698] = 'cs2_02_pipedept_rocks', + [-1928143863] = 'cs2_02_pipedept_shed', + [-571778269] = 'cs2_02_pipeglue03', + [165387976] = 'cs2_02_plastic_01', + [-183347022] = 'cs2_02_plasticdec_01', + [533484485] = 'cs2_02_polytunnels_09', + [2142377131] = 'cs2_02_polytunnels_14', + [469757180] = 'cs2_02_polytunnels_22', + [1090471767] = 'cs2_02_pt_hoops', + [-1332300422] = 'cs2_02_pt_plastic01', + [352560891] = 'cs2_02_pt_plastic01a', + [1847417137] = 'cs2_02_pt_plastic01f', + [-1691645276] = 'cs2_02_pt_plastic02', + [-855937469] = 'cs2_02_pt_plastic03', + [1689493029] = 'cs2_02_pt_plastic04', + [-1822131322] = 'cs2_02_pt_plastic05', + [8886041] = 'cs2_02_pt_support06', + [1291125122] = 'cs2_02_pt_support06a', + [831133817] = 'cs2_02_roadditch004', + [934356167] = 'cs2_02_roadditch005', + [796136813] = 'cs2_02_roadditch015', + [-1354542223] = 'cs2_02_rubbish_pile', + [2073940961] = 'cs2_02_ruined_barn', + [-725256682] = 'cs2_02_shed_ovrly003', + [845090772] = 'cs2_02_shed002', + [-2134109532] = 'cs2_02_shed1_bits001', + [-2098601691] = 'cs2_02_shed1_decals001', + [518784056] = 'cs2_02_signs2', + [1608943267] = 'cs2_02_small_hanger', + [2078933270] = 'cs2_02_sml_farm_barn', + [-1866082745] = 'cs2_02_sml_farm_shed', + [-234970500] = 'cs2_02_sml_frm_drttrk_a', + [-400519488] = 'cs2_02_sml_frm_drttrk_b', + [2092322224] = 'cs2_02_sml_shed', + [-1276538214] = 'cs2_02_sml_sheddec', + [-1349731891] = 'cs2_02_smll_shelter', + [-1504791082] = 'cs2_02_temp_store', + [969405412] = 'cs2_02_temp_trailer', + [-528461076] = 'cs2_02_track_overlays008', + [-1844291007] = 'cs2_02_track_overlays010', + [-605032965] = 'cs2_02_track_overlays014', + [-1557882148] = 'cs2_02_tunnel_cloth_25_lod', + [1127079112] = 'cs2_02_waterpdec_02', + [1111526197] = 'cs2_02_waterpipe_009', + [749953407] = 'cs2_02_waterpipe_010', + [443890947] = 'cs2_02_waterpipe_011', + [-488400539] = 'cs2_02_waterpipe_02', + [1265396293] = 'cs2_02_waterpipe_03', + [-1367535775] = 'cs2_02_waterpipe_03d', + [1899214295] = 'cs2_02_waterpipe_04', + [1201356951] = 'cs2_02_waterpipe_04d', + [669557566] = 'cs2_02_waterpipe_05', + [498241234] = 'cs2_02_waterpipe_06', + [308738107] = 'cs2_02_waterpipe_07', + [-124009307] = 'cs2_02_waterpipe_08', + [-666457501] = 'cs2_02_weed_01', + [-421673071] = 'cs2_02_weed_02', + [-190618852] = 'cs2_02_weed_03', + [1011761551] = 'cs2_02_wetfield_01', + [878221878] = 'cs2_02_wetfield_01d', + [-2114089259] = 'cs2_02_wood_posts', + [1534418931] = 'cs2_02_wpipes_01', + [1554211407] = 'cs2_02_wpipes_02', + [920622792] = 'cs2_02_wpipes_03', + [1200437283] = 'cs2_02_wpipes_04', + [610070979] = 'cs2_02_wpipes_05', + [-1241344748] = 'cs2_02_wpipes_06', + [943261415] = 'cs2_03__armco_end_12', + [1238862394] = 'cs2_03__brgrail_01', + [872229096] = 'cs2_03_armco_right_glue', + [1334430499] = 'cs2_03_barn_002_a', + [1085587731] = 'cs2_03_barn_002', + [1623503812] = 'cs2_03_barn001_ovr', + [-347727313] = 'cs2_03_barn001', + [-1004841278] = 'cs2_03_barn03_a', + [1410544716] = 'cs2_03_barn03', + [1011939887] = 'cs2_03_bigbrdge1', + [-107839253] = 'cs2_03_brdg1', + [-2107260221] = 'cs2_03_brick_pform008', + [1935211718] = 'cs2_03_brick_pform01', + [648757316] = 'cs2_03_bridge_03_shad', + [-612535782] = 'cs2_03_bridge_03', + [-1239369911] = 'cs2_03_bridge_shad03_slod1', + [933660346] = 'cs2_03_bridgerail_01', + [-1521556979] = 'cs2_03_bridgerail_02', + [-1675571279] = 'cs2_03_bridgerail_03', + [-122042845] = 'cs2_03_brokengate01', + [-1727724782] = 'cs2_03_burntovly', + [-304014782] = 'cs2_03_catshed_filler01', + [578100013] = 'cs2_03_cattleshade03_a', + [-1657784408] = 'cs2_03_cattleshade03', + [102288761] = 'cs2_03_cattleshed01', + [-94404824] = 'cs2_03_channel_water', + [1550203565] = 'cs2_03_concplnth', + [-718333615] = 'cs2_03_crop_sml_008', + [-411255316] = 'cs2_03_crop_sml_009', + [1023535573] = 'cs2_03_crop_sml_010', + [1320324406] = 'cs2_03_crop_sml_011', + [1634972344] = 'cs2_03_crop_sml_012', + [-512347453] = 'cs2_03_crop_sml_013', + [-214444474] = 'cs2_03_crop_sml_014', + [97975172] = 'cs2_03_crop_sml_015', + [395812609] = 'cs2_03_crop_sml_016', + [-1062604505] = 'cs2_03_crop_sml_017', + [1195099250] = 'cs2_03_culvert02', + [-332107999] = 'cs2_03_culvert1', + [-1251441280] = 'cs2_03_dcl_rd_join_01', + [-955875505] = 'cs2_03_decal_001', + [158121720] = 'cs2_03_decal1', + [-1403989447] = 'cs2_03_desfrmhsend_02', + [-477708124] = 'cs2_03_desfrmhsend_03', + [-1865999578] = 'cs2_03_desfrmhsend_04', + [-936113665] = 'cs2_03_desfrmhsend_05', + [-648696766] = 'cs2_03_desfrmhsend_06', + [745689722] = 'cs2_03_desfrmhsend_07', + [1051784951] = 'cs2_03_desfrmhsend_08', + [1024816108] = 'cs2_03_desfrmhsend_09', + [-1801923630] = 'cs2_03_desfrmhsend_1', + [-1047560710] = 'cs2_03_desfrmhsend_11', + [-2084634022] = 'cs2_03_desfrmhsend_12', + [165558336] = 'cs2_03_desfrmhsstrt', + [1059772523] = 'cs2_03_drain_t03w', + [1299725938] = 'cs2_03_drain3_grid01', + [-447558503] = 'cs2_03_drainage_jun1w', + [-401342494] = 'cs2_03_drainage_junct_shdw', + [390576244] = 'cs2_03_drainage_junct_shdw001', + [636933586] = 'cs2_03_drainage_junct_shdw002', + [1731180013] = 'cs2_03_drainage_junct001', + [-284951851] = 'cs2_03_drainage_tmplt003', + [1455955598] = 'cs2_03_drainagewide_03', + [1480289393] = 'cs2_03_draingrll001', + [-762322664] = 'cs2_03_draingrll002', + [-2143798166] = 'cs2_03_draingrll003', + [1540053324] = 'cs2_03_drttrk03', + [817103646] = 'cs2_03_drttrk04', + [642313800] = 'cs2_03_drttrk05', + [-1494323311] = 'cs2_03_drttrk06', + [-1799173318] = 'cs2_03_drttrk07', + [-1986284308] = 'cs2_03_drttrk08', + [-1821074801] = 'cs2_03_drttrk1', + [1776043867] = 'cs2_03_drttrk2', + [-874399838] = 'cs2_03_emissive_lod', + [1580969984] = 'cs2_03_emissive', + [-1921634635] = 'cs2_03_emissive002_lod', + [-963236916] = 'cs2_03_emissive02', + [1484829460] = 'cs2_03_farm_burnt_slod', + [525240746] = 'cs2_03_farm_grp3_winfire00', + [1210054181] = 'cs2_03_farm_grp3_winsmoke00', + [1136394147] = 'cs2_03_farm_slod', + [-1070155493] = 'cs2_03_farmsign_01', + [-769630994] = 'cs2_03_farmsign_02', + [2063771268] = 'cs2_03_field_dec_06', + [-499784214] = 'cs2_03_field_dec01', + [-1325759627] = 'cs2_03_field_dec01a', + [-103312082] = 'cs2_03_field_dec01b', + [-1520997342] = 'cs2_03_field_dec02', + [-1886764920] = 'cs2_03_field_dec03', + [-617064477] = 'cs2_03_field_dec04', + [-1268250045] = 'cs2_03_field_dec05', + [-895538974] = 'cs2_03_field_dec05a', + [1584750183] = 'cs2_03_field_dec07', + [-2117163759] = 'cs2_03_field_dec08', + [-1031676737] = 'cs2_03_fl3_grill001', + [415989429] = 'cs2_03_fmhse_vfx_parent', + [-1031867995] = 'cs2_03_fmhse_vfx_parent001', + [-1807477456] = 'cs2_03_fmhse_vfx_parent002', + [-399262450] = 'cs2_03_fmhse_vfx_parent003', + [-1306439446] = 'cs2_03_fmhse_vfx_parent004', + [-79011013] = 'cs2_03_fmhse_vfx_parent005', + [-707061667] = 'cs2_03_fmhse_vfx_parent006', + [-195930801] = 'cs2_03_fmhse_vfx_parent007', + [-819918099] = 'cs2_03_fmhse_vfx_parent008', + [404561120] = 'cs2_03_fmhse_vfx_parent009', + [989324901] = 'cs2_03_fmhse_vfx_parent010', + [-1278093285] = 'cs2_03_fmhse_vfx_parent011', + [-1485815976] = 'cs2_03_fmhse_vfx_parent012', + [-1867116060] = 'cs2_03_fmhse_vfx_parent013', + [-2115013549] = 'cs2_03_fmhse_vfx_parent014', + [-995755589] = 'cs2_03_fmhse_vfx_parent015', + [-2134434564] = 'cs2_03_frm005', + [-286674634] = 'cs2_03_frm01_int_lod', + [-330125695] = 'cs2_03_frm01_ovly', + [-443038002] = 'cs2_03_frm01_windows_lod', + [403326683] = 'cs2_03_frm01_windows', + [-1729474944] = 'cs2_03_frm01', + [1858297200] = 'cs2_03_frm02_ovly', + [1970767771] = 'cs2_03_frm03', + [-1493505383] = 'cs2_03_frm04', + [1589309938] = 'cs2_03_frmbnt_det01', + [879009094] = 'cs2_03_frmbnt_det02', + [-878114240] = 'cs2_03_frmburnt01', + [-101947706] = 'cs2_03_frmburnt02', + [-1609290903] = 'cs2_03_frmland1', + [1310613275] = 'cs2_03_frmland12', + [2118903769] = 'cs2_03_frmland2', + [1803567682] = 'cs2_03_frmland3', + [1760640292] = 'cs2_03_frmland4', + [1462540699] = 'cs2_03_frmland5', + [-1035780990] = 'cs2_03_frmland6_dcl', + [1968231931] = 'cs2_03_frmland6', + [585150752] = 'cs2_03_frmland7', + [1605905098] = 'cs2_03_frmland8', + [1266135730] = 'cs2_03_frmland8b', + [-2044168278] = 'cs2_03_frmland9', + [-340778799] = 'cs2_03_frmtrk05', + [-1457170826] = 'cs2_03_glue_01', + [1926621656] = 'cs2_03_glue_02', + [1150881119] = 'cs2_03_glue_03', + [-1551283362] = 'cs2_03_glue_04', + [1410346093] = 'cs2_03_glue_05', + [-258841233] = 'cs2_03_glue_08', + [-912296881] = 'cs2_03_grainsilos_dec', + [-146701665] = 'cs2_03_grainsilos', + [-383627714] = 'cs2_03_haystack001', + [-1275927584] = 'cs2_03_haystack002', + [-592135087] = 'cs2_03_irr_005w', + [-354908598] = 'cs2_03_irr_01weed', + [1911933755] = 'cs2_03_irr_1weed', + [-1510741500] = 'cs2_03_irr_2weed', + [-89604507] = 'cs2_03_irr_3weed', + [-2013269392] = 'cs2_03_irr_4weed', + [-204335713] = 'cs2_03_irr_5weed', + [-1894564192] = 'cs2_03_land01', + [-1655317723] = 'cs2_03_land02', + [1782707454] = 'cs2_03_land03', + [1318444857] = 'cs2_03_props_combo_dslod', + [-403802279] = 'cs2_03_ranch008_temp', + [-490592519] = 'cs2_03_rd_dec1', + [445058012] = 'cs2_03_s_tank_frm1', + [-3939911] = 'cs2_03_shed002', + [-804978116] = 'cs2_03_shed003', + [1296825528] = 'cs2_03_shed004', + [-1920841590] = 'cs2_03_shel_roof_005', + [1875344579] = 'cs2_03_shelter_002', + [457123875] = 'cs2_03_shittank_a', + [-856911448] = 'cs2_03_shittank_ladder_02', + [97107144] = 'cs2_03_shittank_ladder01', + [1832630528] = 'cs2_03_shittank', + [-732144519] = 'cs2_03_signs01', + [-436142142] = 'cs2_03_signs02', + [415184416] = 'cs2_03_silo_002_ladder', + [892363859] = 'cs2_03_silo_002_ovr', + [-1301837731] = 'cs2_03_silo_002', + [1039425572] = 'cs2_03_silo_ladder_10', + [-1361206594] = 'cs2_03_silo_ladder10', + [-1637416495] = 'cs2_03_silo_ladder11', + [1779655388] = 'cs2_03_silos_dec', + [-2117521020] = 'cs2_03_silos_pipe01', + [-1773043014] = 'cs2_03_silos_pipe01b', + [-927515855] = 'cs2_03_silos_sign001', + [1829494195] = 'cs2_03_silos', + [277389680] = 'cs2_03_sluice_ladr', + [-535128328] = 'cs2_03_sluicetest', + [-267000568] = 'cs2_03_stable2_o', + [-2119268230] = 'cs2_03_stables', + [1220401235] = 'cs2_03_stubble031', + [-571833698] = 'cs2_03_stubble033', + [-273930719] = 'cs2_03_stubble034', + [39734149] = 'cs2_03_stubble035', + [279078925] = 'cs2_03_stubble036', + [989412526] = 'cs2_03_stubble037', + [-1167474963] = 'cs2_03_stubble040', + [-457763961] = 'cs2_03_stubble041', + [352646178] = 'cs2_03_stubble042', + [-982349022] = 'cs2_03_trough_small_01', + [-1291033002] = 'cs2_03_trough_small_02', + [-231889854] = 'cs2_03_tunl_fizz01', + [-1089454584] = 'cs2_03_tunl_fizz02', + [270244177] = 'cs2_03_tunnel11', + [-549539738] = 'cs2_03_tunnel11b', + [-1982692816] = 'cs2_03_wall001', + [-2052752938] = 'cs2_03_wall002', + [1399690599] = 'cs2_03_wall005', + [765872597] = 'cs2_03_wall006', + [529444262] = 'cs2_03_wall007', + [123029347] = 'cs2_03_waterpipe_008', + [1502604531] = 'cs2_03_waterpipe_010', + [1709475228] = 'cs2_03_waterpipe_012', + [745777695] = 'cs2_03_weed_01', + [1060196250] = 'cs2_03_weed_02', + [-803704474] = 'cs2_03_weed_03', + [-488696077] = 'cs2_03_weed_04', + [-206948215] = 'cs2_03_weed_05', + [-1405706229] = 'cs2_03_windmill_dummy_01', + [1998447572] = 'cs2_03_windmill_lod', + [194214649] = 'cs2_03_wire_support', + [331842022] = 'cs2_03_wpipes_002', + [-1162171862] = 'cs2_03_wpipes_01', + [1696181688] = 'cs2_04_barn01', + [-265960498] = 'cs2_04_barn02', + [545039483] = 'cs2_04_barn03', + [-757659343] = 'cs2_04_barn04', + [872744202] = 'cs2_04_barndet01', + [-1049616418] = 'cs2_04_barndet02', + [-820856029] = 'cs2_04_barndet03', + [-1662298411] = 'cs2_04_barndet04', + [-1432030648] = 'cs2_04_barndet05', + [829751270] = 'cs2_04_barndet06', + [1776025784] = 'cs2_04_barns_o', + [-1851357300] = 'cs2_04_bhack_d', + [-2060261324] = 'cs2_04_bhack', + [-2103726506] = 'cs2_04_branches-', + [-1201477264] = 'cs2_04_carwash_building_dec', + [998228192] = 'cs2_04_carwash_building', + [622645954] = 'cs2_04_carwash_bunting_1', + [1376529572] = 'cs2_04_carwash_bunting_2', + [1085377007] = 'cs2_04_carwash_bunting_3', + [1843913819] = 'cs2_04_carwash_bunting_4', + [1312000182] = 'cs2_04_carwash_forecourt_dec', + [-1263999656] = 'cs2_04_carwash_forecourta_dec', + [6033873] = 'cs2_04_ch2_02b_juicestand_ovl', + [-833131649] = 'cs2_04_deadtree01', + [1466312516] = 'cs2_04_doghut_a_d', + [-1372630536] = 'cs2_04_doghut_a', + [-360243802] = 'cs2_04_doghut_b_d', + [1668463740] = 'cs2_04_doghut_b', + [-580858370] = 'cs2_04_drain_suprt005', + [837809951] = 'cs2_04_drain_suprt007', + [1613278014] = 'cs2_04_drain_suprt01', + [136290271] = 'cs2_04_drain_suprt011', + [-843994368] = 'cs2_04_drain_suprt012', + [-478554480] = 'cs2_04_drain_suprt013', + [1793123684] = 'cs2_04_drain_suprt015', + [824046047] = 'cs2_04_drain_suprt016', + [1193352677] = 'cs2_04_drain_suprt017', + [-1542465595] = 'cs2_04_drain_suprt018', + [-550513573] = 'cs2_04_emissive_barn', + [-453438187] = 'cs2_04_emissive_barnlod', + [-555078165] = 'cs2_04_emissive_gas', + [1645698227] = 'cs2_04_emissive_gaslod', + [1996323258] = 'cs2_04_farmtrack00', + [1294727354] = 'cs2_04_farmtrack00a', + [-2094211] = 'cs2_04_farmtrack01', + [364918589] = 'cs2_04_farmtrack02', + [343764826] = 'cs2_04_farmtrack03a', + [1085378887] = 'cs2_04_field_d_01', + [762866385] = 'cs2_04_field_d_02', + [570348510] = 'cs2_04_field_d_03', + [-748535053] = 'cs2_04_frmland2', + [-389270487] = 'cs2_04_frmland2a', + [-970446729] = 'cs2_04_frmland3', + [-825566219] = 'cs2_04_glue_01', + [-1543272857] = 'cs2_04_glue_02', + [829062472] = 'cs2_04_grapesign', + [1450234590] = 'cs2_04_haybale01', + [74788536] = 'cs2_04_haybale02', + [635040129] = 'cs2_04_haybale04', + [921136261] = 'cs2_04_juicestand', + [-1181569975] = 'cs2_04_land_01_d', + [-1553391122] = 'cs2_04_land_01', + [-566552687] = 'cs2_04_land_02', + [267680515] = 'cs2_04_land_03', + [149317593] = 'cs2_04_land_03a', + [849238054] = 'cs2_04_land_04_dcl003', + [1166671357] = 'cs2_04_land_04_dcl004', + [-1792375435] = 'cs2_04_land_04', + [1654099246] = 'cs2_04_land_04a', + [1014958747] = 'cs2_04_log_stack', + [-1288552061] = 'cs2_04_log_stack001', + [-795902915] = 'cs2_04_log_stack002', + [832618078] = 'cs2_04_log_stack003', + [1268952568] = 'cs2_04_logging_d01', + [-1941208028] = 'cs2_04_polytunl_poles01', + [-1402435711] = 'cs2_04_polytunnels_01', + [-1904465871] = 'cs2_04_refproxy_02', + [-593509253] = 'cs2_04_refproxy_03', + [-109248971] = 'cs2_04_refproxy_04', + [-922542782] = 'cs2_04_refproxy_05', + [1173886762] = 'cs2_04_refproxy_06', + [1352454362] = 'cs2_04_roadside_decal_a', + [2064196799] = 'cs2_04_shed002', + [1763023715] = 'cs2_04_sign03', + [21177128] = 'cs2_04_signneon_lod', + [-1539913351] = 'cs2_04_signneon', + [-1028576883] = 'cs2_04_signs02', + [2144243307] = 'cs2_04_stubble01', + [-1390593992] = 'cs2_04_stubble015', + [-1613980265] = 'cs2_04_stubble016', + [-1316765435] = 'cs2_04_stubble017', + [-785383315] = 'cs2_04_stubble018', + [-10396465] = 'cs2_04_stubble019', + [-49149708] = 'cs2_04_stubble02', + [1180525162] = 'cs2_04_stubble020', + [411600577] = 'cs2_04_stubble021', + [-1785921336] = 'cs2_04_stubble022', + [-1488673737] = 'cs2_04_stubble023', + [317488005] = 'cs2_04_stubble024', + [-362159200] = 'cs2_04_stubble03', + [1193993509] = 'cs2_04_stubble031', + [914342863] = 'cs2_04_stubble032', + [868007497] = 'cs2_04_stubble033', + [-1288553166] = 'cs2_04_stubble034', + [-1585931841] = 'cs2_04_stubble035', + [248018013] = 'cs2_04_stubble036', + [-50212656] = 'cs2_04_stubble037', + [1758505060] = 'cs2_04_stubble038', + [1519586281] = 'cs2_04_stubble039', + [-644267521] = 'cs2_04_stubble04', + [-433871836] = 'cs2_04_stubble040', + [-691651495] = 'cs2_04_stubble05', + [912849877] = 'cs2_04_stubble06', + [1430276131] = 'cs2_04_stubble12', + [1738337500] = 'cs2_04_stubble13', + [836403544] = 'cs2_04_stubble14', + [-1909938362] = 'cs2_04_watertank01', + [485084846] = 'cs2_04_weed_02', + [-1105194724] = 'cs2_04_weed_03', + [-866007076] = 'cs2_05_barn01_o', + [-297503601] = 'cs2_05_barn01', + [-1547443603] = 'cs2_05_barn02_o', + [-2141808459] = 'cs2_05_barn02', + [-78665011] = 'cs2_05_barn03_o', + [-861327015] = 'cs2_05_barn03', + [-553921026] = 'cs2_05_barn04', + [1867071116] = 'cs2_05_barn05_o', + [656795217] = 'cs2_05_barn05', + [765600670] = 'cs2_05_brick_pform01', + [-426568319] = 'cs2_05_brick_pform02', + [1874557778] = 'cs2_05_bridge_1', + [255318503] = 'cs2_05_bridge_decal001', + [1945994158] = 'cs2_05_bridge_w', + [-1874374009] = 'cs2_05_bridge2', + [-908346793] = 'cs2_05_bridgefizz01', + [-92063325] = 'cs2_05_build2_o_02', + [1725016042] = 'cs2_05_build2_o', + [1677571757] = 'cs2_05_culvert006', + [1475664966] = 'cs2_05_culvert01', + [-355809585] = 'cs2_05_d00', + [-1012369273] = 'cs2_05_d01', + [-705946350] = 'cs2_05_d02', + [-172951437] = 'cs2_05_decal_003', + [237808006] = 'cs2_05_decal_008', + [-886312022] = 'cs2_05_draingrll', + [395225693] = 'cs2_05_fnc_mesh001', + [165875462] = 'cs2_05_fnc_mesh002', + [1949950898] = 'cs2_05_fnc_mesh003', + [1854805582] = 'cs2_05_frmdecs00', + [148980446] = 'cs2_05_frmdecs01a', + [1183825482] = 'cs2_05_frmdecs01b', + [1230554076] = 'cs2_05_frmdecs01c', + [53264281] = 'cs2_05_frmdecs02', + [-1443197658] = 'cs2_05_frmdecs03', + [1037426148] = 'cs2_05_frmland1_dec01', + [-1926656783] = 'cs2_05_frmland1_ed', + [-423418386] = 'cs2_05_frmland1', + [-201801639] = 'cs2_05_frmland2', + [-826558539] = 'cs2_05_glue_01', + [-1075406325] = 'cs2_05_glue_02', + [931605833] = 'cs2_05_glue_02a', + [694030583] = 'cs2_05_glue_02b', + [1413211826] = 'cs2_05_glue_02c', + [1173998126] = 'cs2_05_glue_02d', + [1421523016] = 'cs2_05_grainsilo_a_xtra', + [1709228198] = 'cs2_05_grainsilo_a', + [1947510660] = 'cs2_05_grainsilo_ad1', + [-187245302] = 'cs2_05_grainsilo_d1', + [554305623] = 'cs2_05_grainsilo', + [-804318029] = 'cs2_05_grainsiloxtra', + [508438839] = 'cs2_05_grainsiloxtra2', + [256936760] = 'cs2_05_grainsiloxtra3', + [-1055343610] = 'cs2_05_gs_ground_o', + [1468943420] = 'cs2_05_gs_ground', + [1515235929] = 'cs2_05_haystacks', + [-1044607949] = 'cs2_05_haystacks02', + [-259654433] = 'cs2_05_house', + [-1313579127] = 'cs2_05_irr_006', + [445788531] = 'cs2_05_irr_009', + [1993751669] = 'cs2_05_irripipes01', + [-323250846] = 'cs2_05_ladder_003_lod', + [498692875] = 'cs2_05_ladder_003', + [269342644] = 'cs2_05_ladder_004', + [-1052558816] = 'cs2_05_ladder_005', + [-235860076] = 'cs2_05_ladder_01', + [-1916529378] = 'cs2_05_ladder_010', + [-544884576] = 'cs2_05_ladder_011', + [-247440363] = 'cs2_05_ladder_012', + [1327222579] = 'cs2_05_land01_dec', + [-15530268] = 'cs2_05_land01', + [1398049879] = 'cs2_05_land09_d', + [1441503778] = 'cs2_05_land09_da1', + [739919488] = 'cs2_05_land09_da2', + [1902596377] = 'cs2_05_land09_da3', + [1738620301] = 'cs2_05_land09_da4', + [713868125] = 'cs2_05_land09_da5', + [540192425] = 'cs2_05_land09_da6', + [1571411903] = 'cs2_05_land09_da623', + [-579481231] = 'cs2_05_land09_desert', + [901272869] = 'cs2_05_land09_g_culv', + [-1507371770] = 'cs2_05_land09', + [-108068334] = 'cs2_05_land09b_desert', + [1940519183] = 'cs2_05_land09b', + [1016972828] = 'cs2_05_littlewall', + [1887942973] = 'cs2_05_pipesnolod', + [-1111701560] = 'cs2_05_plane_crash_lod', + [2018517429] = 'cs2_05_plane_crash', + [169528046] = 'cs2_05_plastic019', + [-1240979918] = 'cs2_05_prkdetails', + [972577570] = 'cs2_05_puddle_dec', + [2081961474] = 'cs2_05_retaining_walld_003', + [-1667959053] = 'cs2_05_retaining_walld_004', + [534803735] = 'cs2_05_retwall', + [-1391176642] = 'cs2_05_retwalldec', + [259277810] = 'cs2_05_roadditch015', + [-2022206706] = 'cs2_05_shed01', + [866855113] = 'cs2_05_signs', + [-475596062] = 'cs2_05_silo_ladr_01', + [967524399] = 'cs2_05_silobuild_details', + [-266095510] = 'cs2_05_silobuild_nolod', + [-377869464] = 'cs2_05_silobuild_rails', + [375370588] = 'cs2_05_silobuild', + [-1442532779] = 'cs2_05_track008', + [-1182916237] = 'cs2_05_track01', + [-496897234] = 'cs2_05_track06', + [237849296] = 'cs2_05_track07', + [-599579549] = 'cs2_05_trainhouse_dec', + [-812678922] = 'cs2_05_trainhouse', + [1355703271] = 'cs2_05_wall002', + [-845132415] = 'cs2_05_waterpipe_01', + [-565705143] = 'cs2_05_watertank01', + [-458428082] = 'cs2_05_weeds01', + [1995085259] = 'cs2_05_weeds02', + [-2009614235] = 'cs2_05_weeds03', + [-1651449065] = 'cs2_05_weeds04', + [-1775553587] = 'cs2_05_xing_01', + [-1877912206] = 'cs2_06_b1', + [750554822] = 'cs2_06_b2', + [-831543758] = 'cs2_06_beach2', + [98211083] = 'cs2_06_beach5', + [1384951406] = 'cs2_06_beach7', + [-1937864353] = 'cs2_06_clusster_01', + [-1860288782] = 'cs2_06_clutter04', + [-271007067] = 'cs2_06_clutter045', + [1543296176] = 'cs2_06_clutter05', + [1838381021] = 'cs2_06_clutter06', + [-1246099415] = 'cs2_06_clutter07', + [-941118332] = 'cs2_06_clutter08', + [-1841020610] = 'cs2_06_clutter09', + [-544613788] = 'cs2_06_clutter10', + [1585666141] = 'cs2_06_clutter11', + [-1532502523] = 'cs2_06_clutter32', + [1398455152] = 'cs2_06_clutter33', + [-2126637262] = 'cs2_06_clutter34', + [-1341590329] = 'cs2_06_clutter35', + [1676763065] = 'cs2_06_clutter41', + [-1379798187] = 'cs2_06_clutter42', + [1045795970] = 'cs2_06_clutter43', + [49788031] = 'cs2_06_decal_04', + [-668016922] = 'cs2_06_decal_08', + [-437224855] = 'cs2_06_decal_09', + [352343984] = 'cs2_06_decal_10', + [1118515973] = 'cs2_06_decal_11', + [-1654264935] = 'cs2_06_decal_20', + [-1353384033] = 'cs2_06_decal_20b', + [-1902490110] = 'cs2_06_decal_21', + [14299780] = 'cs2_06_decal_22', + [-231369413] = 'cs2_06_decal_23', + [-911490012] = 'cs2_06_decal_25', + [671416533] = 'cs2_06_decal_26', + [431711298] = 'cs2_06_decal_27', + [-1570720329] = 'cs2_06_jk_00', + [1092383536] = 'cs2_06_jk_01', + [1340018869] = 'cs2_06_jk_02', + [-313995035] = 'cs2_06_lakebed_d_00', + [-19237880] = 'cs2_06_lakebed_d_01', + [-1966634016] = 'cs2_06_lakebed_d_02', + [-1213995596] = 'cs2_06_lakebed_d_03', + [1675312676] = 'cs2_06_lakebed_d_04', + [1846629008] = 'cs2_06_lakebed_d_05', + [-1769621839] = 'cs2_06_lakebed_d_05b', + [-341655595] = 'cs2_06_lakebed_d_05bb', + [-2139687077] = 'cs2_06_lakebed_d_06', + [451128370] = 'cs2_06_lakebed_d_08', + [627949894] = 'cs2_06_lakebed_d_09', + [-1515565303] = 'cs2_06_lakebed_d_10', + [-1278284970] = 'cs2_06_lakebed_d_11', + [-813653319] = 'cs2_06_lakebed_d_13', + [-263509803] = 'cs2_06_lakebed_d_13b', + [74109204] = 'cs2_06_lakebed_d_13c', + [-1051851180] = 'cs2_06_lakebed_d_14', + [383562096] = 'cs2_06_lakebed_d_16', + [140383347] = 'cs2_06_lakebed_d_17', + [873950181] = 'cs2_06_lakebed_d_18', + [1364567445] = 'cs2_06_lakebed_d_19', + [1530509329] = 'cs2_06_lakebed_d_20', + [1294932988] = 'cs2_06_lakebed_d_21', + [586073980] = 'cs2_06_lakebed_d_22', + [840656337] = 'cs2_06_lakebed_d_23', + [544719498] = 'cs2_06_lakebed_d_24', + [357149742] = 'cs2_06_lakebed_d_25', + [56297553] = 'cs2_06_lakebed_d_26', + [-85592217] = 'cs2_06_lakebed_d_27', + [-309535563] = 'cs2_06_lakebed_d_28', + [-559792416] = 'cs2_06_lakebed_d_29', + [105615830] = 'cs2_06_lakebed_d_30', + [381235885] = 'cs2_06_lakebed_d_31', + [99782944] = 'cs2_06_lakebed_d_32', + [591055792] = 'cs2_06_lakebed_d_33', + [-797694428] = 'cs2_06_lakebed_d_34', + [-1089633449] = 'cs2_06_lakebed_d_35', + [-44892191] = 'cs2_06_lakebed_d_36', + [-376874930] = 'cs2_06_lakebed_d_37', + [-1749633878] = 'cs2_06_lakebed_d_38', + [1658342106] = 'cs2_06_lakebed_d_39', + [-1257115976] = 'cs2_06_lakebed_d_40', + [2136179516] = 'cs2_06_lakebed_d_41', + [-1914101657] = 'cs2_06_lakebed_d_42', + [2122875306] = 'cs2_06_lakebed_d_43', + [-1872878251] = 'cs2_06_lakebed_d_44', + [-356132317] = 'cs2_06_lakebed_d_45', + [-55280128] = 'cs2_06_lakebed_d_46', + [-919726348] = 'cs2_06_lakebed_d_47', + [592890692] = 'cs2_06_lakebed_d_48', + [899772377] = 'cs2_06_lakebed_d_49', + [1865342343] = 'cs2_06_lakebed_d_50', + [813326271] = 'cs2_06_lakebed_d_51', + [505395978] = 'cs2_06_lakebed_d_52', + [227187168] = 'cs2_06_lakebed_d_53', + [-69962124] = 'cs2_06_lakebed_d_54', + [-676581852] = 'cs2_06_lakebed_d_55', + [-974222679] = 'cs2_06_lakebed_d_56', + [-1267767381] = 'cs2_06_lakebed_d_57', + [-1565735898] = 'cs2_06_lakebed_d_58', + [-386117680] = 'cs2_06_lakebed_d_60', + [-173348563] = 'cs2_06_lakebed_d_61', + [-1015446325] = 'cs2_06_lakebed_d_62', + [-171579041] = 'cs2_06_lakebed_d_63', + [-1009744523] = 'cs2_06_lakebed_d_64', + [-771612200] = 'cs2_06_lakebed_d_65', + [-1105069544] = 'cs2_06_lakebed_d_66', + [-1938581828] = 'cs2_06_lakebed_d_67', + [-1700187353] = 'cs2_06_lakebed_d_68', + [1732103249] = 'cs2_06_lakebed_d_69', + [-1795511458] = 'cs2_06_lakebed_d_70', + [1768444902] = 'cs2_06_lakebed_d_71', + [2007691371] = 'cs2_06_lakebed_d_72', + [-1930683667] = 'cs2_06_lakebed_d_73', + [-1624916128] = 'cs2_06_lakebed_d_74', + [-1604468272] = 'cs2_06_lakebed_d_75', + [-1297848739] = 'cs2_06_lakebed_d_76', + [-1009547077] = 'cs2_06_lakebed_d_77', + [-703517386] = 'cs2_06_lakebed_d_78', + [-952201323] = 'cs2_06_lakebed_d_79', + [-304068152] = 'cs2_06_lakebed_d_80', + [-1011813018] = 'cs2_06_lakebed_d_81', + [-764243219] = 'cs2_06_lakebed_d_82', + [1081896699] = 'cs2_06_lakebed_d_83', + [1294927996] = 'cs2_06_lakebed_d_84', + [618641346] = 'cs2_06_lakebed_d_85', + [843534993] = 'cs2_06_lakebed_d_86', + [-1786111695] = 'cs2_06_lakebed_d_87', + [-1506231666] = 'cs2_06_lakebed_d_88', + [1494949972] = 'cs2_06_lakebed_d_89', + [-1483126489] = 'cs2_06_lakebed_d_90', + [37846650] = 'cs2_06_lakebed_d_91', + [-730324248] = 'cs2_06_lakebed_d_92', + [-1640089995] = 'cs2_06_lakebed_d_93', + [-1870128375] = 'cs2_06_lakebed_d_94', + [-220438521] = 'cs2_06_lakebed_rcks_00', + [495334746] = 'cs2_06_lakebed_rcks_01', + [1850824431] = 'cs2_06_lakebed_rcks_02', + [1074395745] = 'cs2_06_lakebed_rcks_03', + [1571625956] = 'cs2_06_lkb_00', + [1866645263] = 'cs2_06_lkb_01', + [-966660788] = 'cs2_06_lkb_02', + [-807075750] = 'cs2_06_lkb_03', + [-1696328111] = 'cs2_06_lkb_04', + [-1262859779] = 'cs2_06_lkb_05', + [592652185] = 'cs2_06_lkb_06', + [1033722925] = 'cs2_06_lkb_07', + [113208946] = 'cs2_06_lkb_08', + [352258801] = 'cs2_06_lkb_09', + [1982385147] = 'cs2_06_lkb_10', + [-1605243153] = 'cs2_06_lkbed_00', + [-1347973734] = 'cs2_06_lkbed_01', + [-1566215262] = 'cs2_06_lkbed_02', + [-1321725753] = 'cs2_06_lkbed_03', + [-2043626823] = 'cs2_06_lkbed_04', + [-1746248148] = 'cs2_06_lkbed_05', + [1332628785] = 'cs2_06_lkbed_06', + [1511809677] = 'cs2_06_lkbed_07', + [854168616] = 'cs2_06_lkbed_08', + [1034987958] = 'cs2_06_lkbed_09', + [-1664718588] = 'cs2_06_lkbed_10', + [-1357640289] = 'cs2_06_lkbed_11', + [2016288724] = 'cs2_06_lkbed_12', + [-2123287974] = 'cs2_06_lkbed_13', + [1253328093] = 'cs2_06_lkbed_14', + [-1783247966] = 'cs2_06_props_lod', + [1500304176] = 'cs2_06_refprox_01', + [1244148903] = 'cs2_06_refprox_02', + [870909993] = 'cs2_06_refprox_03', + [649194939] = 'cs2_06_refprox_04', + [266846247] = 'cs2_06_refprox_05', + [-312935678] = 'cs2_06_refprox_07', + [-1425803675] = 'cs2_06_refprox_09', + [197735626] = 'cs2_06_refprox_13', + [98445552] = 'cs2_06_refprox_14', + [576446955] = 'cs2_06_refprox_16', + [-199621272] = 'cs2_06_refprox_17', + [389907771] = 'cs2_06_rks_00', + [-1745615198] = 'cs2_06_rks_01', + [-1515740663] = 'cs2_06_rks_02', + [-1131294755] = 'cs2_06_rks_03', + [-899912846] = 'cs2_06_rks_04', + [-1744173370] = 'cs2_06_rks_05', + [-1510890859] = 'cs2_06_rks_06', + [-1134571663] = 'cs2_06_rks_07', + [-898733170] = 'cs2_06_rks_08', + [-551316232] = 'cs2_06_rks_09', + [987583598] = 'cs2_06_rks_10', + [1282865057] = 'cs2_06_rks_11', + [1513657124] = 'cs2_06_rks_12', + [-701527312] = 'cs2_06_rks_13', + [-940970395] = 'cs2_06_rks_14', + [193885613] = 'cs2_06_rks_15', + [-447796945] = 'cs2_06_rks_16', + [-1627775866] = 'cs2_06_rks_17', + [-1999638478] = 'cs2_06_rks_18', + [-1276721569] = 'cs2_06_rks_19', + [1830584680] = 'cs2_06_rks_20', + [-1019531868] = 'cs2_06_rks_21', + [-746926557] = 'cs2_06_rks_22', + [431872680] = 'cs2_06_rks_23', + [673642362] = 'cs2_06_rks_24', + [1068541545] = 'cs2_06_rks_25', + [845646807] = 'cs2_06_rks_26', + [-1540493470] = 'cs2_06_rks_27', + [-2032683850] = 'cs2_06_rks_28', + [2036963802] = 'cs2_06_rks_29', + [1186313067] = 'cs2_06_rks_30', + [-1791438736] = 'cs2_06_rks_31', + [1870281298] = 'cs2_06_terrain00', + [1837544259] = 'cs2_06_terrain19', + [587529760] = 'cs2_06_wall_004', + [1577800932] = 'cs2_06_woodenpier', + [-842211310] = 'cs2_06b_b_rks_00', + [161142685] = 'cs2_06b_b_rks_01', + [-1302714067] = 'cs2_06b_b_rks_02', + [-317907326] = 'cs2_06b_b_rks_03', + [382628356] = 'cs2_06b_b_rks_04', + [1319395759] = 'cs2_06b_b_rks_05', + [1082312044] = 'cs2_06b_b_rks_06', + [835758088] = 'cs2_06b_b_rks_07', + [606604471] = 'cs2_06b_b_rks_08', + [1311400147] = 'cs2_06b_b_rks_09', + [1418687317] = 'cs2_06b_b_rks_10', + [-357064793] = 'cs2_06b_b_rks_11', + [-116310950] = 'cs2_06b_b_rks_12', + [-1354291005] = 'cs2_06b_b_rks_13', + [-40385177] = 'cs2_06b_b_rks_14', + [-690849831] = 'cs2_06b_b_rks_15', + [-1532783748] = 'cs2_06b_b_rks_16', + [2052996850] = 'cs2_06b_b_rks_17', + [-941008377] = 'cs2_06b_b_rks_18', + [2111489515] = 'cs2_06b_b_rks_19', + [1061274906] = 'cs2_06b_b_rks_20', + [-1082970585] = 'cs2_06b_b1_rks_00', + [75924935] = 'cs2_06b_boat03', + [675891327] = 'cs2_06b_cs2_06_b_lkbed_00', + [-1463629452] = 'cs2_06b_cs2_06_b_lkbed_01', + [1671614581] = 'cs2_06b_cs2_06_b_lkbed_02z', + [1593456100] = 'cs2_06b_cs2_06_b_lkbed_04', + [678381807] = 'cs2_06b_cs2_06_b_lkbed_05', + [-2073821001] = 'cs2_06b_cs2_06_b_lkbed_07', + [-1776966630] = 'cs2_06b_cs2_06_b_lkbed_08', + [-880916136] = 'cs2_06b_cs2_06_b_lkbed_08bb', + [2031822575] = 'cs2_06b_cs2_06_b_lkbed_08cc', + [-1385548054] = 'cs2_06b_cs2_06_clutter00', + [1664098935] = 'cs2_06b_cs2_06_clutter01', + [-1847099419] = 'cs2_06b_cs2_06_clutter02', + [1199729436] = 'cs2_06b_cs2_06_clutter03', + [-302256987] = 'cs2_06b_cs2_06_clutter40', + [1951016621] = 'cs2_06b_dec_00', + [1667466464] = 'cs2_06b_dec_01', + [1478520410] = 'cs2_06b_dec_02', + [-683807613] = 'cs2_06b_dec_03', + [-896281809] = 'cs2_06b_dec_04', + [-1145490054] = 'cs2_06b_dec_05', + [-1377560112] = 'cs2_06b_dec_06', + [279666545] = 'cs2_06b_dec_07', + [-12731242] = 'cs2_06b_dec_08', + [-736336300] = 'cs2_06b_dec_09', + [81282199] = 'cs2_06b_dec_10', + [-2059156116] = 'cs2_06b_dec_11', + [863609305] = 'cs2_06b_dec_12', + [832413217] = 'cs2_06b_dec_13', + [1607432836] = 'cs2_06b_dec_14', + [-127063131] = 'cs2_06b_dec_15', + [1242779376] = 'cs2_06b_dec_16', + [717819996] = 'cs2_06b_dec_17', + [1023128769] = 'cs2_06b_dec_18', + [-1055933205] = 'cs2_06b_dec_19', + [-1481307318] = 'cs2_06b_dec_20', + [-706254930] = 'cs2_06b_dec_21', + [-1021787631] = 'cs2_06b_dec_22', + [12860775] = 'cs2_06b_dec_23', + [-290547396] = 'cs2_06b_dec_24', + [484242840] = 'cs2_06b_dec_25', + [176443623] = 'cs2_06b_dec_26', + [1890000167] = 'cs2_06b_dec_27', + [-1774950335] = 'cs2_06b_dec_28', + [-2064497219] = 'cs2_06b_dec_29', + [-694817145] = 'cs2_06b_dec_30', + [1425894232] = 'cs2_06b_dec_31', + [2068232170] = 'cs2_06b_dec_32', + [-1987029891] = 'cs2_06b_dec_33', + [-1903457202] = 'cs2_06b_lkd_00', + [1912755004] = 'cs2_06b_lkd_01', + [1624879339] = 'cs2_06b_lkd_02', + [1384584262] = 'cs2_06b_lkd_03', + [1160247684] = 'cs2_06b_lkd_04', + [922377513] = 'cs2_06b_lkd_05', + [1044507572] = 'cs2_06b_lkd_06', + [802442969] = 'cs2_06b_lkd_07', + [275910677] = 'cs2_06b_lkd_08', + [48198896] = 'cs2_06b_lkd_09', + [345248973] = 'cs2_06b_lkd_10', + [1103785785] = 'cs2_06b_lkd_11', + [225314429] = 'cs2_06b_lkd_12', + [918837545] = 'cs2_06b_lkd_13', + [-385008196] = 'cs2_06b_lkd_14', + [-768602110] = 'cs2_06b_lkd_15', + [-1111981008] = 'cs2_06b_refprox_01', + [211132845] = 'cs2_06b_refprox_02', + [483148314] = 'cs2_06b_refprox_03', + [1878190182] = 'cs2_06b_refprox_04', + [36801765] = 'cs2_06b_refprox_05', + [1269735390] = 'cs2_06b_refprox_06', + [1406119968] = 'cs2_06b_refprox_07', + [-1625700681] = 'cs2_06b_refprox_08', + [-156482436] = 'cs2_06c_c_rks_00', + [81191121] = 'cs2_06c_c_rks_01', + [-1540743307] = 'cs2_06c_c_rks_02', + [-1304708200] = 'cs2_06c_c_rks_03', + [802010814] = 'cs2_06c_c_rks_04', + [1057248555] = 'cs2_06c_c_rks_05', + [1296101796] = 'cs2_06c_c_rks_06', + [-361681914] = 'cs2_06c_c_rks_07', + [-2059443808] = 'cs2_06c_c_rks_08', + [579836998] = 'cs2_06c_c_rks_09', + [458198114] = 'cs2_06c_c_rks_10', + [1309274582] = 'cs2_06c_c_rks_11', + [-254396560] = 'cs2_06c_c_rks_13', + [1793076106] = 'cs2_06c_c_rks_14', + [-1188411363] = 'cs2_06c_c_rks_15', + [-1904938317] = 'cs2_06c_c_rks_16', + [1557434227] = 'cs2_06c_c_rks_17', + [68836864] = 'cs2_06c_c_rks_18', + [308411023] = 'cs2_06c_c_rks_19', + [510300600] = 'cs2_06c_c_rks_20', + [1336767549] = 'cs2_06c_c_rks_21', + [-463770454] = 'cs2_06c_cargoplane_iplgroup', + [382594959] = 'cs2_06c_cargoplane_iplgroup2', + [1790883643] = 'cs2_06c_cargoplane_skin_decals', + [-1441135958] = 'cs2_06c_clutter046', + [785615923] = 'cs2_06c_clutter047', + [2025315099] = 'cs2_06c_cs2_06_clutter37', + [1323272043] = 'cs2_06c_cs2_06_clutter38', + [-2145373501] = 'cs2_06c_jnk_012', + [-1339487166] = 'cs2_06c_jnk_02', + [1258570226] = 'cs2_06c_jnk_03', + [-113074572] = 'cs2_06c_jnk_06', + [-63282012] = 'cs2_06c_jnk_11', + [751955877] = 'cs2_06c_lakebed_d_00', + [-1183020800] = 'cs2_06c_lakebed_d_01', + [-950164286] = 'cs2_06c_lakebed_d_02', + [1274326506] = 'cs2_06c_lakebed_d_03', + [1479394908] = 'cs2_06c_lakebed_d_04', + [1732797585] = 'cs2_06c_lakebed_d_05', + [-175636206] = 'cs2_06c_lakebed_d_06', + [-1799602308] = 'cs2_06c_lakebed_d_07', + [-1593583605] = 'cs2_06c_lakebed_d_08', + [-1339951545] = 'cs2_06c_lakebed_d_09', + [-1406176778] = 'cs2_06c_lakebed_d_10', + [-1589617640] = 'cs2_06c_lakebed_d_11', + [-1886734163] = 'cs2_06c_lakebed_d_12', + [-81195036] = 'cs2_06c_lakebed_d_13', + [1751673441] = 'cs2_06c_lakebed_d_14', + [1587435213] = 'cs2_06c_lakebed_d_15', + [1276359096] = 'cs2_06c_lakebed_d_16', + [-880398177] = 'cs2_06c_lakebed_d_17', + [-1037033997] = 'cs2_06c_lakebed_d_18', + [385927059] = 'cs2_06c_lakebed_d_19', + [-1583064128] = 'cs2_06c_lakebed_d_20', + [-1843479371] = 'cs2_06c_lakebed_d_21', + [2078380091] = 'cs2_06c_lakebed_d_22', + [-1916366776] = 'cs2_06c_lkbed_00', + [-1609222939] = 'cs2_06c_lkbed_01', + [1800588129] = 'cs2_06c_lkbed_02', + [2103996300] = 'cs2_06c_lkbed_03', + [1199375286] = 'cs2_06c_lkbed_04', + [1488430635] = 'cs2_06c_lkbed_05', + [-1311090593] = 'cs2_06c_lkbed_06', + [-1004798750] = 'cs2_06c_lkbed_07', + [-1909812992] = 'cs2_06c_lkbed_08', + [-1602669155] = 'cs2_06c_lkbed_09', + [1238534505] = 'cs2_06c_lkbed_10', + [1477944819] = 'cs2_06c_lkbed_11', + [-715382662] = 'cs2_06c_lkbed_12', + [1152188186] = 'cs2_06c_lkbed_13', + [318708671] = 'cs2_06c_lkbed_14', + [202247645] = 'cs2_06c_lkbed_15', + [-1988458284] = 'cs2_06c_lkbed_16', + [-1698288789] = 'cs2_06c_lkbed_17', + [-383858689] = 'cs2_06c_lkbed_18', + [-154049692] = 'cs2_06c_lkbed_19', + [-2080015738] = 'cs2_06c_lkbed_20', + [-1705412783] = 'cs2_06c_refprox_01', + [1753453478] = 'cs2_06c_refprox_02', + [-1529934788] = 'cs2_06c_refprox_03', + [-1295472593] = 'cs2_06c_refprox_04', + [-1050753701] = 'cs2_06c_refprox_05', + [-810851852] = 'cs2_06c_refprox_06', + [-336946574] = 'cs2_06c_refprox_07', + [-234969446] = 'cs2_06c_refprox_08', + [138957613] = 'cs2_06c_refprox_09', + [1847643513] = 'cs2_06c_rks11', + [1907464894] = 'cs2_08_animboxmain', + [566904397] = 'cs2_08_bridge_dec1', + [-426726049] = 'cs2_08_bridge', + [-1461646553] = 'cs2_08_carport_supp', + [-2065326706] = 'cs2_08_carport', + [-1760948330] = 'cs2_08_cj_boatlod', + [886305665] = 'cs2_08_coast_01', + [654071762] = 'cs2_08_coast_02', + [-1462150262] = 'cs2_08_coast_03', + [-338927249] = 'cs2_08_coast_05', + [-577321724] = 'cs2_08_coast_06', + [-531355329] = 'cs2_08_crowman', + [1618579581] = 'cs2_08_culvert004', + [418302713] = 'cs2_08_culvert01', + [-188153170] = 'cs2_08_culvert03', + [-450145069] = 'cs2_08_decal_a2_decal001', + [-1657782495] = 'cs2_08_decal_cbot_01', + [-731310132] = 'cs2_08_decal_ctop_01', + [372685450] = 'cs2_08_decal01', + [134553127] = 'cs2_08_decal02', + [-346759960] = 'cs2_08_foam_01', + [-117147577] = 'cs2_08_foam_02', + [-477180584] = 'cs2_08_foam_03', + [-245339909] = 'cs2_08_foam_04', + [23401261] = 'cs2_08_garden', + [283401669] = 'cs2_08_generic01a', + [-834711011] = 'cs2_08_generic02_tag', + [656071565] = 'cs2_08_generic02', + [-1964126497] = 'cs2_08_house_01', + [-623566556] = 'cs2_08_house_emmi01_lod', + [-1983550665] = 'cs2_08_house_emmi01', + [-282709839] = 'cs2_08_house_fnce_01', + [2041456411] = 'cs2_08_house08decal', + [762563858] = 'cs2_08_inletdcl04', + [-1206408448] = 'cs2_08_inletdcl3top', + [143597418] = 'cs2_08_isl_dec', + [-245074291] = 'cs2_08_island', + [-1030360673] = 'cs2_08_land01', + [-876903446] = 'cs2_08_land02', + [2020109340] = 'cs2_08_land024_d', + [247876486] = 'cs2_08_land024b_d', + [209806109] = 'cs2_08_land029_d', + [-519983498] = 'cs2_08_land03', + [822103774] = 'cs2_08_land032_d1', + [-311376044] = 'cs2_08_land04', + [967420827] = 'cs2_08_land05_decal001', + [-71605271] = 'cs2_08_land05', + [1218575793] = 'cs2_08_land06', + [375068964] = 'cs2_08_land07', + [1159624366] = 'cs2_08_land08', + [316445227] = 'cs2_08_land09', + [1847414291] = 'cs2_08_land10', + [2086791836] = 'cs2_08_land11', + [1370002730] = 'cs2_08_land12', + [1608790433] = 'cs2_08_land13', + [893770853] = 'cs2_08_land14', + [1133017322] = 'cs2_08_land15', + [1652684368] = 'cs2_08_land30_d', + [1807870562] = 'cs2_08_lighthouserailing', + [-901274751] = 'cs2_08_lighthsglass_lod', + [40087631] = 'cs2_08_lighthsglass', + [687028424] = 'cs2_08_lightmw_d', + [-1992024636] = 'cs2_08_lightmw', + [463943828] = 'cs2_08_planks', + [210820645] = 'cs2_08_railingtowater', + [1360082015] = 'cs2_08_rckdecal', + [522349430] = 'cs2_08_rckdecal01', + [1313562626] = 'cs2_08_rckdecal01a', + [441475546] = 'cs2_08_rckdecal06', + [178766473] = 'cs2_08_rckdecal07', + [-1777739437] = 'cs2_08_rckdecal08', + [-1002228283] = 'cs2_08_rckdecal09', + [1797588050] = 'cs2_08_rckdecal12', + [1650124285] = 'cs2_08_rckdecal12a', + [1719932281] = 'cs2_08_ret_wall_00', + [-1353308384] = 'cs2_08_ret_wall_01', + [-1334294943] = 'cs2_08_road_accessd', + [1918994968] = 'cs2_08_road_accessd001_lod', + [-1836971562] = 'cs2_08_road01', + [1648326658] = 'cs2_08_roadb', + [554591989] = 'cs2_08_sea_uw_dec_00', + [-983421026] = 'cs2_08_sea_uw_dec_02', + [907481358] = 'cs2_08_sea_uw_dec_03', + [1795521258] = 'cs2_08_sea_uw_dec_04', + [1504368693] = 'cs2_08_sea_uw_dec_05', + [209960416] = 'cs2_08_sea_uw_dec_06', + [-1534235147] = 'cs2_08_sea_uw_dec_07', + [-851643158] = 'cs2_08_sea_uw_rocks_00', + [725720675] = 'cs2_08_sea_uw1_00', + [-2020157684] = 'cs2_08_sea_uw1_02', + [962330676] = 'cs2_08_sea_uw2_00', + [1820976783] = 'cs2_08_sea_uw2_01', + [1708841265] = 'cs2_08_sea_uw2_02', + [-1937430907] = 'cs2_08_sea_uw2_03', + [-2049959653] = 'cs2_08_sea_uw2_04', + [-1187053576] = 'cs2_08_sea_uw2_05', + [-1572548092] = 'cs2_08_sea_uw2_06', + [1948266458] = 'cs2_08_sea_uw2_07_lod', + [-1114961772] = 'cs2_08_sea_uw2_07', + [-997982088] = 'cs2_08_sea_uw2_08_lod', + [-289281279] = 'cs2_08_sea_uw2_08', + [-2112622796] = 'cs2_08_sea_uw2b_02', + [1347029921] = 'cs2_08_sea_uw2b_03', + [405132611] = 'cs2_08_sea_uwdecb_04', + [596413195] = 'cs2_08_signs01', + [1160028668] = 'cs2_08_stepstowater_d', + [-1844131725] = 'cs2_08_stepstowater', + [1538045633] = 'cs2_08_trailretainer_001', + [1959717125] = 'cs2_08_trailretainer_002', + [1023278432] = 'cs2_08_trailsteps_001', + [404566943] = 'cs2_08_trailsteps_003', + [-1814391348] = 'cs2_08_trk01_dcl', + [-658569328] = 'cs2_08_trk01b_dcl', + [-146328017] = 'cs2_08_trunkbarrier', + [-269290972] = 'cs2_08_wallsupports', + [1953798243] = 'cs2_08_wretainer', + [76411658] = 'cs2_09_armco', + [-153396377] = 'cs2_09_armco2', + [-1664450327] = 'cs2_09_boathouse_base', + [-717517221] = 'cs2_09_boats_dec', + [1111746670] = 'cs2_09_boats_det', + [2135852471] = 'cs2_09_boats', + [-753572837] = 'cs2_09_brace1', + [537591297] = 'cs2_09_brace2', + [-293266698] = 'cs2_09_brace3', + [565215564] = 'cs2_09_brace4', + [265182600] = 'cs2_09_brace5', + [-720017385] = 'cs2_09_brace6', + [209303233] = 'cs2_09_build001_ovr001', + [265420602] = 'cs2_09_building002', + [2134599897] = 'cs2_09_building4_det', + [-1044711887] = 'cs2_09_building4', + [517672876] = 'cs2_09_creekbridge_d', + [211523497] = 'cs2_09_creekbridge_shdw', + [572766676] = 'cs2_09_creekbridge', + [817315237] = 'cs2_09_cs_09_tarp01_s', + [-1587594681] = 'cs2_09_cs_09_tarp01_sl', + [-1295258630] = 'cs2_09_cs2_9_drain002', + [1107913597] = 'cs2_09_cs2_9_drain1', + [1032098994] = 'cs2_09_decal01', + [1536556453] = 'cs2_09_decal02_b_dd', + [-1123176061] = 'cs2_09_decal02_dd', + [1254272814] = 'cs2_09_decal02', + [451928222] = 'cs2_09_decal03_dd', + [1414578762] = 'cs2_09_decal03', + [-291126948] = 'cs2_09_decal03b', + [-1211801274] = 'cs2_09_decal04_dd', + [-1673835822] = 'cs2_09_decal04b_dd', + [600301064] = 'cs2_09_decal05_dd', + [-617758805] = 'cs2_09_decal08_lod', + [886309729] = 'cs2_09_decal08', + [-352654340] = 'cs2_09_decal11b', + [1607980572] = 'cs2_09_decal12', + [114901979] = 'cs2_09_dock', + [-1381538112] = 'cs2_09_docksweed', + [-1324305538] = 'cs2_09_emis1_lod', + [1828911569] = 'cs2_09_emissive', + [873771840] = 'cs2_09_erosiontube_dd01', + [-441916335] = 'cs2_09_erosiontube013', + [-856707943] = 'cs2_09_foam_01', + [-1170897115] = 'cs2_09_foam_02', + [962659714] = 'cs2_09_foam_03', + [-464726826] = 'cs2_09_glue_02', + [-1691827569] = 'cs2_09_glue_03', + [-924312051] = 'cs2_09_glue_04', + [707420292] = 'cs2_09_glue_06', + [1091115029] = 'cs2_09_inletrck2', + [-251245995] = 'cs2_09_island_hut_d', + [1035108517] = 'cs2_09_island_hut', + [-69834761] = 'cs2_09_jetty_ovr001', + [-578137453] = 'cs2_09_jettymr', + [-1692280307] = 'cs2_09_land01_d', + [1145883224] = 'cs2_09_land01_d001', + [-1821861993] = 'cs2_09_land01_road', + [1808661511] = 'cs2_09_land01', + [1000086436] = 'cs2_09_land02', + [-1718309822] = 'cs2_09_land023_02_d', + [-2108467067] = 'cs2_09_land023_d', + [1484805460] = 'cs2_09_land03', + [1589203720] = 'cs2_09_land04_decal', + [1723068859] = 'cs2_09_land04', + [1007524975] = 'cs2_09_land05', + [-1946071782] = 'cs2_09_land06_02_d', + [-488479111] = 'cs2_09_land06_d', + [1421965715] = 'cs2_09_land06_road', + [1243363468] = 'cs2_09_land06', + [-1682744391] = 'cs2_09_land07', + [-785172100] = 'cs2_09_land08_d', + [974592106] = 'cs2_09_land08_gully_d', + [1876624393] = 'cs2_09_land08', + [2133369508] = 'cs2_09_land09', + [542043075] = 'cs2_09_land10', + [367510715] = 'cs2_09_land11_decal', + [212845753] = 'cs2_09_land11', + [653195575] = 'cs2_09_land12', + [-899651958] = 'cs2_09_land13_decal', + [-115139168] = 'cs2_09_land13', + [-1967373041] = 'cs2_09_land14_d', + [57225772] = 'cs2_09_land14', + [754954829] = 'cs2_09_land14b_d', + [1055983126] = 'cs2_09_land15_decal', + [1601432128] = 'cs2_09_land15', + [834539221] = 'cs2_09_land16', + [-1070802049] = 'cs2_09_ret_wall_01', + [-2063243983] = 'cs2_09_ret_wall_02', + [1391034618] = 'cs2_09_ret_wall_03', + [1872663110] = 'cs2_09_retaining_wall_12', + [1264404932] = 'cs2_09_retaining_wall_13', + [956898124] = 'cs2_09_retaining_wall_21', + [-803010080] = 'cs2_09_retaining_walla001', + [-1047633182] = 'cs2_09_retaining_wallb_005', + [-536883256] = 'cs2_09_retaining_walld_001', + [-229706650] = 'cs2_09_retaining_walld_002', + [-877024976] = 'cs2_09_retwall002', + [1379796083] = 'cs2_09_sea_beachline_decal', + [2088344092] = 'cs2_09_sea_brace3_d', + [636803673] = 'cs2_09_sea_brace4_d', + [243100071] = 'cs2_09_sea_uw_00', + [-533033694] = 'cs2_09_sea_uw_01', + [-1979958658] = 'cs2_09_sea_uw_02_lod', + [-345529476] = 'cs2_09_sea_uw_02', + [-1138899735] = 'cs2_09_sea_uw_03', + [-680133735] = 'cs2_09_sea_uw_04', + [-1456529652] = 'cs2_09_sea_uw_05', + [-1203061437] = 'cs2_09_sea_uw_06', + [-2066852281] = 'cs2_09_sea_uw_07', + [-1817119732] = 'cs2_09_sea_uw_08', + [1853467038] = 'cs2_09_sea_uw_09', + [-1436770225] = 'cs2_09_sea_uw_10', + [-1658911276] = 'cs2_09_sea_uw_11', + [-938452042] = 'cs2_09_sea_uw_12', + [880438476] = 'cs2_09_sea_uw_13_lod', + [2022653105] = 'cs2_09_sea_uw_13', + [850715730] = 'cs2_09_sea_uw_14_lod', + [1768201820] = 'cs2_09_sea_uw_14', + [-2061893616] = 'cs2_09_sea_uw_15_lod', + [-1822821818] = 'cs2_09_sea_uw_15', + [2134034936] = 'cs2_09_sea_uw_16', + [-1905953956] = 'cs2_09_sea_uw_decals00', + [-2145921343] = 'cs2_09_sea_uw_decals01', + [817903639] = 'cs2_09_sea_uw_decals02', + [612999082] = 'cs2_09_sea_uw_decals03', + [1576211068] = 'cs2_09_sea_uw_decals04', + [-845516343] = 'cs2_09_sea_uw_decals05', + [-2106008697] = 'cs2_09_sea_uw_decals06', + [1948663522] = 'cs2_09_sea_uw_decals07', + [183495799] = 'cs2_09_sea_uw_decals08', + [-159267941] = 'cs2_09_sea_uw_decals09', + [1766991962] = 'cs2_09_sea_uw_decals10', + [-1150923647] = 'cs2_09_sea_uw_decals11', + [-1802207522] = 'cs2_09_sea_uw_decals12', + [1591284584] = 'cs2_09_sea_uw_decals13', + [-1476319817] = 'cs2_09_sea_uw_decals14', + [307100243] = 'cs2_09_sea_uw_decals15', + [-881202008] = 'cs2_09_sea_uw_decals16', + [-1781235362] = 'cs2_09_sea_uw_decals17', + [-477324187] = 'cs2_09_sea_uw_decals18', + [-235062970] = 'cs2_09_sea_uw_decals19', + [248803764] = 'cs2_09_sea_uw_decals20', + [-49328598] = 'cs2_09_sea_uw_decals21', + [-1416877279] = 'cs2_09_sea_uw_decals22', + [-1714288723] = 'cs2_09_sea_uw_decals23', + [971491294] = 'cs2_09_sea_uw_decals24', + [-467788724] = 'cs2_09_sea_uw_decals25', + [307755199] = 'cs2_09_sea_uw_decals26', + [-1800881776] = 'cs2_09_slip_decal002', + [1660895535] = 'cs2_09_sml_farm_shed', + [-671756706] = 'cs2_09_smll_farmhse_c', + [36877523] = 'cs2_09_surfacerock', + [-1825722687] = 'cs2_09_weed_01', + [503137370] = 'cs2_09_weed_03', + [171349756] = 'cs2_09_woodbits01', + [1107920581] = 'cs2_09_woodbits04', + [-1340668998] = 'cs2_09_wretainer01', + [-1451526485] = 'cs2_09_wretainer02', + [16000371] = 'cs2_09_wretainer04', + [369133250] = 'cs2_09b_armco_01', + [-322522033] = 'cs2_09b_armco_02', + [1066228187] = 'cs2_09b_armco_03', + [-1214658034] = 'cs2_09b_armco_04', + [1716987786] = 'cs2_09b_armco_05', + [1410630405] = 'cs2_09b_armco_06', + [-1899235213] = 'cs2_09b_armco_07', + [224523677] = 'cs2_09b_armco_08', + [-82620160] = 'cs2_09b_armco_09', + [-1516797641] = 'cs2_09b_cs_09b_emissive', + [1352005601] = 'cs2_09b_decals_01', + [702458483] = 'cs2_09b_decals_02', + [-316526353] = 'cs2_09b_decals_03', + [-556559278] = 'cs2_09b_decals_04', + [-2133993392] = 'cs2_09b_decals_05', + [1929919685] = 'cs2_09b_decals_06', + [-2006063216] = 'cs2_09b_decals_08', + [-1854863790] = 'cs2_09b_decals_10', + [-661318503] = 'cs2_09b_decals_11', + [-1241591955] = 'cs2_09b_decals_12', + [-49554042] = 'cs2_09b_decals_13', + [1640459209] = 'cs2_09b_emissive_lod', + [443843198] = 'cs2_09b_erotube_01', + [-1689123785] = 'cs2_09b_erotube_02', + [-917053376] = 'cs2_09b_erotube_03', + [-1070805524] = 'cs2_09b_erotube_04', + [-308500273] = 'cs2_09b_erotube_05', + [1918415429] = 'cs2_09b_erotube_06', + [225397855] = 'cs2_09b_fence_01', + [405365203] = 'cs2_09b_fence_02', + [1073918357] = 'cs2_09b_fence_05', + [1371034880] = 'cs2_09b_fence_06', + [1535010956] = 'cs2_09b_fence_07', + [1737261224] = 'cs2_09b_fence_08', + [2034902051] = 'cs2_09b_fence_09', + [-227207285] = 'cs2_09b_fence_10', + [196364809] = 'cs2_09b_fence_11', + [1632325147] = 'cs2_09b_glue_01', + [-185469594] = 'cs2_09b_glue_07', + [1394731946] = 'cs2_09b_hut01', + [-587839047] = 'cs2_09b_land01_d', + [623806021] = 'cs2_09b_land01', + [-1657644544] = 'cs2_09b_land02_d', + [333538255] = 'cs2_09b_land02', + [81730753] = 'cs2_09b_land022_d', + [-433059731] = 'cs2_09b_land03', + [1837770078] = 'cs2_09b_land04_d', + [-149837264] = 'cs2_09b_land04', + [188745269] = 'cs2_09b_land05_d', + [-912470201] = 'cs2_09b_land05', + [2062654973] = 'cs2_09b_land06_d', + [1290327517] = 'cs2_09b_land06', + [1591867855] = 'cs2_09b_land07', + [808393834] = 'cs2_09b_land08', + [38715562] = 'cs2_09b_land09', + [-1041031437] = 'cs2_09b_tower01_frame', + [-581891342] = 'cs2_09b_tower01', + [-786455435] = 'cs2_09b_weed_02', + [-1152150398] = 'cs2_10_beach01_d', + [256852792] = 'cs2_10_beach01b_d', + [1590650662] = 'cs2_10_beach02_d', + [872696121] = 'cs2_10_beach02b_d', + [-1334138803] = 'cs2_10_beach03_d', + [-2108002528] = 'cs2_10_beach04_d', + [1239657132] = 'cs2_10_beach1', + [1538477643] = 'cs2_10_beach2', + [-1504713849] = 'cs2_10_beach3', + [957614349] = 'cs2_10_beach4', + [-1839907950] = 'cs2_10_beach5', + [603479311] = 'cs2_10_brdgeplatform_01_lod', + [-113162928] = 'cs2_10_brdgeplatform_01', + [537918355] = 'cs2_10_coastrock005', + [-1230560769] = 'cs2_10_coastrock020', + [-1617857580] = 'cs2_10_coastrock029', + [-1725175475] = 'cs2_10_coastrock041', + [191221183] = 'cs2_10_coastrock047', + [-1509342869] = 'cs2_10_coastrock066', + [-1036721888] = 'cs2_10_coastrocka01', + [-1814166413] = 'cs2_10_coastrocka02', + [-213630078] = 'cs2_10_coastrocka03', + [385354473] = 'cs2_10_coastrocka05', + [1219292754] = 'cs2_10_coastrocka06', + [-1547250215] = 'cs2_10_concrete', + [-550849825] = 'cs2_10_corrielake_lod', + [-1156070353] = 'cs2_10_corrielake_water', + [-1915525643] = 'cs2_10_culvert01', + [2082849434] = 'cs2_10_culvert02', + [-14628734] = 'cs2_10_culvert03', + [-1852047407] = 'cs2_10_foam_01', + [2137086812] = 'cs2_10_foam_02', + [-634056438] = 'cs2_10_foam_03', + [184021647] = 'cs2_10_foam_04', + [-974690201] = 'cs2_10_foam_05', + [-327502443] = 'cs2_10_foam_06', + [-577693786] = 'cs2_10_foam_07', + [-1221866780] = 'cs2_10_foam_08', + [-975214517] = 'cs2_10_foam_09', + [-1192234787] = 'cs2_10_foam_10', + [576062455] = 'cs2_10_glue_01', + [-1006713018] = 'cs2_10_glue_02', + [-571016394] = 'cs2_10_glue_03', + [-392884094] = 'cs2_10_glue_04', + [-84192648] = 'cs2_10_land01', + [1168861143] = 'cs2_10_land02', + [525802287] = 'cs2_10_land03', + [1753492880] = 'cs2_10_land04', + [-497361683] = 'cs2_10_land05_d', + [835371030] = 'cs2_10_land05', + [-2099449075] = 'cs2_10_land05b_d', + [-250134848] = 'cs2_10_land06', + [-1150823582] = 'cs2_10_land07', + [71689501] = 'cs2_10_land08', + [-561276503] = 'cs2_10_land09', + [37645122] = 'cs2_10_land10', + [-827002267] = 'cs2_10_land11_d_b', + [-1802498073] = 'cs2_10_land11', + [-1752033809] = 'cs2_10_land12', + [-1461438317] = 'cs2_10_land13', + [-1151935112] = 'cs2_10_land14', + [-1114250762] = 'cs2_10_land15', + [289595645] = 'cs2_10_mast_base', + [-1600115913] = 'cs2_10_nland01_d', + [-2078999202] = 'cs2_10_nland03_d', + [-485520592] = 'cs2_10_nland04_d', + [10270561] = 'cs2_10_nland05_d', + [-607327457] = 'cs2_10_nland06_d', + [-332143945] = 'cs2_10_nland07_d', + [1335610100] = 'cs2_10_pool001', + [586670504] = 'cs2_10_pool01_lod', + [-1555537623] = 'cs2_10_rckdecal02', + [2035879243] = 'cs2_10_rckdecal03', + [-1770272880] = 'cs2_10_rckdecal05', + [1816326943] = 'cs2_10_rckdecal06', + [224343385] = 'cs2_10_rckdecal08', + [-1320485959] = 'cs2_10_retaining_wall_new_01', + [-1172588226] = 'cs2_10_retainwallnew_01_lod', + [-151882287] = 'cs2_10_sea_00_lod', + [1583763023] = 'cs2_10_sea_02_lod', + [-626922531] = 'cs2_10_sea_03_lod', + [1513749979] = 'cs2_10_sea_04_lod', + [-77238582] = 'cs2_10_sea_05_lod', + [1870523372] = 'cs2_10_sea_06_lod', + [1139959993] = 'cs2_10_sea_07_lod', + [-382705409] = 'cs2_10_sea_cs2_10_duster_lod', + [-1410973081] = 'cs2_10_sea_duster1', + [179174997] = 'cs2_10_sea_rocks_lod', + [-2037955469] = 'cs2_10_sea_rubble', + [962669262] = 'cs2_10_sea_shipwreck_lod', + [2056618673] = 'cs2_10_sea_shipwreck', + [813283948] = 'cs2_10_sea_sub_00', + [-172276520] = 'cs2_10_sea_sub_01', + [-1858308062] = 'cs2_10_sea_sweed1', + [-1876315387] = 'cs2_10_sea_uw_dec_00', + [-947543620] = 'cs2_10_sea_uw_dec_01', + [-1665971176] = 'cs2_10_sea_uw_dec_02', + [1194467611] = 'cs2_10_sea_uw_dec_04', + [1709989519] = 'cs2_10_sea_uw_dec_05', + [1940257282] = 'cs2_10_sea_uw_dec_06', + [-109771358] = 'cs2_10_sea_uw_dec_07', + [121348399] = 'cs2_10_sea_uw_dec_08', + [637656763] = 'cs2_10_sea_uw_dec_09', + [-877353366] = 'cs2_10_sea_uw_dec_10', + [90184132] = 'cs2_10_sea_uw_dec_11', + [-148275885] = 'cs2_10_sea_uw_dec_12', + [550359199] = 'cs2_10_sea_uw_dec_13', + [460899829] = 'cs2_10_sea_uw_dec_14', + [271232977] = 'cs2_10_sea_uw_dec_15', + [-40301906] = 'cs2_10_sea_uw_dec_16', + [726099466] = 'cs2_10_sea_uw_dec_17', + [426426961] = 'cs2_10_sea_uw_dec_18', + [1456880935] = 'cs2_10_sea_uw_dec_19', + [1198530371] = 'cs2_10_sea_uw_dec_20', + [-709098751] = 'cs2_10_sea_uw1_00', + [829045344] = 'cs2_10_sea_uw1_02', + [493884012] = 'cs2_10_sea_uw1_03', + [-1899989749] = 'cs2_10_sea_uw1_04', + [2029865349] = 'cs2_10_sea_uw1_05', + [1797369294] = 'cs2_10_sea_uw1_06', + [-624161235] = 'cs2_10_sea_uw1_07', + [-1992685819] = 'cs2_10_sea_uw2_00', + [-540724194] = 'cs2_10_sea_uw2_03', + [-838889325] = 'cs2_10_sea_uw2_04', + [1317605800] = 'cs2_10_sea_uw2_05', + [2127295021] = 'cs2_10_sea_uw2_06', + [1914198214] = 'cs2_10_sea_uw2_07', + [429303744] = 'cs2_10_sea_uw2_08', + [-1718933589] = 'cs2_10_sea_uw2_09', + [-1788666837] = 'cs2_10_sea_uw2_10', + [-596235692] = 'cs2_10_sea_uw2_11', + [46167784] = 'cs2_10_sea_uw2_12', + [694633525] = 'cs2_10_sea_uw2_15', + [935059678] = 'cs2_10_sea_uw2_16', + [384868168] = 'cs2_10_sea_uw2_17', + [622869415] = 'cs2_10_sea_uw2_18', + [-372980479] = 'cs2_10_sea_uw2_19', + [-1574029663] = 'cs2_10_sea_uw2_20', + [-19730451] = 'cs2_10_sea_uw2_21', + [-316388208] = 'cs2_10_sea_uw2_22', + [-632871210] = 'cs2_10_sea_uw2_23', + [-939425205] = 'cs2_10_sea_uw2_24', + [-1868984364] = 'cs2_10_sea_uwrocks_00', + [2044093006] = 'cs2_10_sea_uwrocks_01', + [1778959027] = 'cs2_10_sea_uwrocks_02', + [1468276138] = 'cs2_10_sea_uwrocks_04', + [-1329695661] = 'cs2_10_sea_wrk07', + [-1740324004] = 'cs2_10_sea_wrk08', + [-781010661] = 'cs2_10_sea_wrk10', + [-1339271539] = 'cs2_10_slod1_culvert', + [-251816620] = 'cs2_10_substation_slod', + [252769930] = 'cs2_10_substation', + [-562918615] = 'cs2_10_trailfnc_001', + [-764972273] = 'cs2_10_trailfnc_002', + [-1054879616] = 'cs2_10_trailfnc_003', + [-1225147340] = 'cs2_10_trailfnc_004', + [1883287235] = 'cs2_10_trailfnc_007', + [2107181432] = 'cs2_10_trailfnc_base_001', + [-1420532498] = 'cs2_10_trailfnc_base_002', + [-1728135101] = 'cs2_10_trailfnc_base_003', + [-677888651] = 'cs2_10_trailfnc_base_005', + [-203098610] = 'cs2_10_trailfnc_base_007', + [-850729350] = 'cs2_10_trailretainer_001', + [533793669] = 'cs2_10_trailretainer_003', + [-778094851] = 'cs2_10_weed_01', + [-2094294505] = 'cs2_10_weed_02', + [-1292273230] = 'cs2_10_weed_03', + [1143434281] = 'cs2_11_armco_wood', + [-1775380459] = 'cs2_11_armco_wood01', + [1638330120] = 'cs2_11_armco_wood02', + [-1216099658] = 'cs2_11_armco', + [656187983] = 'cs2_11_build_emmi01_lod', + [787090600] = 'cs2_11_build_emmi01', + [-939084176] = 'cs2_11_coastdecal01', + [-1245310481] = 'cs2_11_coastdecal02', + [729611611] = 'cs2_11_coastdecal03', + [-1428915188] = 'cs2_11_coastdecal04', + [1964365687] = 'cs2_11_coastrock006', + [-881261512] = 'cs2_11_coastrock009', + [-1627741304] = 'cs2_11_coastrock014', + [-205172100] = 'cs2_11_coastrock020', + [229475916] = 'cs2_11_coastrock026', + [-1341076404] = 'cs2_11_coastrock031', + [-1246080041] = 'cs2_11_coastrock045', + [2122376549] = 'cs2_11_coastrock049', + [-1674338626] = 'cs2_11_coastrock062', + [-204157445] = 'cs2_11_coastrock067', + [1516903480] = 'cs2_11_coastrock072', + [-1287401978] = 'cs2_11_coastrock076', + [-1782084086] = 'cs2_11_coastrock080', + [-406965770] = 'cs2_11_coastrock081', + [-1504157544] = 'cs2_11_corrierock', + [753175926] = 'cs2_11_dd_culvert', + [-1014991186] = 'cs2_11_decal020', + [-404220964] = 'cs2_11_decal2', + [-101074945] = 'cs2_11_decal3', + [745998276] = 'cs2_11_foam_01', + [579171381] = 'cs2_11_foam_02', + [1346981736] = 'cs2_11_foam_03', + [93885054] = 'cs2_11_footbridge002_slod1', + [2112882691] = 'cs2_11_footbridge01_slod1', + [291011066] = 'cs2_11_footbridge01', + [-1911852190] = 'cs2_11_footbridge02', + [-1926772878] = 'cs2_11_ftbdge02rails', + [-1358281244] = 'cs2_11_ftbridge_rails01', + [1054895182] = 'cs2_11_gasstation_a', + [962401524] = 'cs2_11_gasstation_awire', + [-584111891] = 'cs2_11_gasstation_b', + [574998969] = 'cs2_11_gasstation_bwire', + [299962956] = 'cs2_11_gasstation_d', + [402090516] = 'cs2_11_gasstion_a_poles_lod', + [-408315337] = 'cs2_11_gasstion_a_poles', + [-873067045] = 'cs2_11_gasstion_b_lod', + [-474049055] = 'cs2_11_gasstion_b_poles', + [1599095109] = 'cs2_11_gasstionb_rail', + [-525546181] = 'cs2_11_gavdecal_01', + [1719785719] = 'cs2_11_gavdecal_03', + [799271736] = 'cs2_11_gavdecal_04', + [527977185] = 'cs2_11_gavdecal_07', + [21163419] = 'cs2_11_glue_02', + [-864410758] = 'cs2_11_inlet01', + [-910723807] = 'cs2_11_inlet01coast_d', + [155843367] = 'cs2_11_land01', + [305603184] = 'cs2_11_land010', + [33391101] = 'cs2_11_land011', + [-652937340] = 'cs2_11_land02_d', + [-1683447838] = 'cs2_11_land02', + [-1192640164] = 'cs2_11_land03_d6', + [-369091852] = 'cs2_11_land03_decal1', + [1837286295] = 'cs2_11_land03', + [1960130196] = 'cs2_11_land04_decal001', + [2135189274] = 'cs2_11_land04', + [1333899587] = 'cs2_11_land05_d', + [1356663372] = 'cs2_11_land05', + [1620552129] = 'cs2_11_land06', + [404396232] = 'cs2_11_land07', + [-203860327] = 'cs2_11_land08_d8', + [702102597] = 'cs2_11_land08', + [1809432673] = 'cs2_11_land09', + [-1577470102] = 'cs2_11_market_dec', + [-1760132770] = 'cs2_11_newdecal01', + [267609129] = 'cs2_11_prereflect_dummy', + [-874599360] = 'cs2_11_prereflect_prox', + [1155842485] = 'cs2_11_refprox_08', + [-841624679] = 'cs2_11_refprox_09', + [-621274213] = 'cs2_11_sea_marina_xr_rocks_03_lod', + [-12053838] = 'cs2_11_sea_uw_dec_00', + [1674337209] = 'cs2_11_sea_uw_dec_02', + [1912666146] = 'cs2_11_sea_uw_dec_03', + [1144200327] = 'cs2_11_sea_uw_dec_04', + [-1463589462] = 'cs2_11_sea_uw_dec_06', + [830029088] = 'cs2_11_sea_uw_decb_00', + [578756396] = 'cs2_11_sea_uw_decb_01', + [885539774] = 'cs2_11_sea_uw_decb_02', + [-1222639933] = 'cs2_11_sea_uw1_00_lod', + [1171063091] = 'cs2_11_sea_uw1_00', + [-51412718] = 'cs2_11_sea_uw1_00bb_lod', + [2092959329] = 'cs2_11_sea_uw1_00bb', + [1601062536] = 'cs2_11_sea_uw1_00bc_lod', + [-1351455803] = 'cs2_11_sea_uw1_00bc', + [882091158] = 'cs2_11_sea_uw1_01_lod', + [2074045655] = 'cs2_11_sea_uw1_01', + [-729576440] = 'cs2_11_sea_uw1_02_lod', + [1783220780] = 'cs2_11_sea_uw1_02', + [-1548103277] = 'cs2_11_sea_uw1_03_cc_d', + [103267014] = 'cs2_11_sea_uw1_03_d', + [-686156265] = 'cs2_11_sea_uw1_03_lod', + [538981850] = 'cs2_11_sea_uw1_03', + [1387599726] = 'cs2_11_sea_uw1_03bb_d', + [-966601320] = 'cs2_11_sea_uw2_00', + [703405231] = 'cs2_11_sea_uw2_06', + [1412198701] = 'cs2_11_sea_uw2_07', + [1181603248] = 'cs2_11_sea_uw2_08', + [1888889348] = 'cs2_11_sea_uw2_09', + [149739879] = 'cs2_11_sea_uw2_10', + [1460106651] = 'cs2_11_sea_uw2_11', + [-345924015] = 'cs2_11_sea_uw2_12', + [71684161] = 'cs2_11_sea_uw2_13', + [470613967] = 'cs2_11_sea_uw2_14', + [-505345160] = 'cs2_11_sea_uw2_15', + [-852598253] = 'cs2_11_sea_uw2_17', + [1625721221] = 'cs2_11_sea_uw2_18', + [-1365695255] = 'cs2_11_sea_uw2_19', + [234283603] = 'cs2_11_sea_uw2_20', + [-1233013938] = 'cs2_11_sea_uw2_21', + [2043585629] = 'cs2_11_sea_uw2_22_lod', + [-933734661] = 'cs2_11_sea_uw2_22', + [81147930] = 'cs2_11_sea_uw2_23_lod', + [-788109225] = 'cs2_11_sea_uw2_23', + [1013210493] = 'cs2_11_sea_uw2_24_lod', + [1690505170] = 'cs2_11_sea_uw2_24', + [-1250383451] = 'cs2_11_shark_sign_legs', + [1110126753] = 'cs2_11_shark_sign_ovl', + [-1859753111] = 'cs2_11_shark_sign', + [-736300681] = 'cs2_11_trailrrefs', + [-846196102] = 'cs2_11_weed_02', + [-1964208848] = 'cs2_11_weed_03', + [1112539596] = 'cs2_11_weldshed_d', + [1858656008] = 'cs2_11_wire01', + [2107602101] = 'cs2_11_wire02', + [312975047] = 'cs2_11_wire03', + [544291418] = 'cs2_11_wire04', + [254806794] = 'cs2_11_woodbits01', + [-1611080203] = 'cs2_11_woodbits013', + [1685173644] = 'cs2_11_woodbits03', + [747521402] = 'cs2_11_woodbits04', + [986964485] = 'cs2_11_woodbits05', + [-1993244993] = 'cs2_11_woodbits06', + [1464310508] = 'cs2_11_woodbits07', + [-169551764] = 'cs2_11_woodbits08', + [362518713] = 'cs2_11_woodbits10', + [690569172] = 'cs2_11_woodbits11', + [1528538040] = 'cs2_11_woodbits12', + [1304607615] = 'cs2_29_bio_depts', + [-807038535] = 'cs2_29_bio_det00', + [434939334] = 'cs2_29_bio_det01', + [-2048143543] = 'cs2_29_bio_det02_a', + [664027413] = 'cs2_29_bio_det02', + [-44176215] = 'cs2_29_bio_det03', + [-717711535] = 'cs2_29_bio_det04_a', + [185632782] = 'cs2_29_bio_det04', + [947397556] = 'cs2_29_bio_det05_a', + [1893094300] = 'cs2_29_bio_det05', + [2121690844] = 'cs2_29_bio_det06', + [1411226155] = 'cs2_29_bio_det07', + [1660621271] = 'cs2_29_bio_det08_a', + [1641723301] = 'cs2_29_bio_det08', + [2019285419] = 'cs2_29_bio_det08b', + [391954748] = 'cs2_29_bio_det09_a', + [-2090403659] = 'cs2_29_bio_det09', + [-1137629851] = 'cs2_29_bio_det10_a', + [-285947349] = 'cs2_29_bio_det10', + [-311447986] = 'cs2_29_bio_det11_a', + [-1856860436] = 'cs2_29_bio_det11', + [-1627575743] = 'cs2_29_bio_det12', + [1082552052] = 'cs2_29_bio_det13_a', + [-1379383337] = 'cs2_29_bio_det13', + [-216322410] = 'cs2_29_bio_det14_a', + [-1170612038] = 'cs2_29_bio_det14', + [-577501136] = 'cs2_29_bio_det15_a', + [1480924370] = 'cs2_29_bio_det15', + [1408763353] = 'cs2_29_bio_det16_a', + [1723054511] = 'cs2_29_bio_det16', + [1739137873] = 'cs2_29_bio_det17_a', + [1953551657] = 'cs2_29_bio_det17', + [1570898466] = 'cs2_29_bio_det18_a', + [-2060028236] = 'cs2_29_bio_det18', + [2091205977] = 'cs2_29_bio_det19_a', + [1066658632] = 'cs2_29_bio_det19', + [-339351917] = 'cs2_29_bio_det20_a', + [986768702] = 'cs2_29_bio_det20', + [137068532] = 'cs2_29_bio_det21', + [-1658027724] = 'cs2_29_bio_det22_a', + [358816355] = 'cs2_29_bio_det22', + [1883428427] = 'cs2_29_bio_det23_a', + [-784764580] = 'cs2_29_bio_det24_a', + [-238333132] = 'cs2_29_bio_det24', + [655904981] = 'cs2_29_bio_det27_a', + [-1766220554] = 'cs2_29_bio_det27', + [-1508557907] = 'cs2_29_bio_det28', + [1622244945] = 'cs2_29_bio_ent_details', + [1426649] = 'cs2_29_bio_ent', + [-532970120] = 'cs2_29_bio_entgrass', + [1975591262] = 'cs2_29_bio_fence', + [293688493] = 'cs2_29_bio_grass_d', + [1617660238] = 'cs2_29_bio_main_garage', + [-2051874269] = 'cs2_29_bio_main_grge_rail', + [-1423308592] = 'cs2_29_bio_main_steps', + [-673084529] = 'cs2_29_bio_main', + [-1208108076] = 'cs2_29_bio_maina', + [166322095] = 'cs2_29_bio_mainb', + [-609713363] = 'cs2_29_bio_mainc', + [-331668398] = 'cs2_29_bio_maind', + [1884302458] = 'cs2_29_bio_maine', + [-1024405062] = 'cs2_29_bio_mainf', + [538039963] = 'cs2_29_bio_maingl', + [-771297953] = 'cs2_29_bio_rewall', + [-1681225022] = 'cs2_29_bio_wall', + [1455365087] = 'cs2_29_bio_water', + [705897241] = 'cs2_29_biolab_d', + [1005176368] = 'cs2_29_biolab116', + [2018495383] = 'cs2_29_biolab122', + [1379139416] = 'cs2_29_biolab123', + [-1817630071] = 'cs2_29_biolab126_rail01', + [-2055238090] = 'cs2_29_biolab126_rail02', + [-2081559960] = 'cs2_29_biolab126_railb01', + [1097358785] = 'cs2_29_biolab126', + [-1023341959] = 'cs2_29_biolab126b', + [-665307865] = 'cs2_29_biolab126c', + [-470244633] = 'cs2_29_biolab127', + [-259885038] = 'cs2_29_biolab127a_a', + [-1965146058] = 'cs2_29_biolab127b_a', + [2129825209] = 'cs2_29_biolab127d', + [184722266] = 'cs2_29_biolab135_a', + [-1847430048] = 'cs2_29_biolab135', + [-1702802691] = 'cs2_29_biolab135a', + [1270295914] = 'cs2_29_biolab135b', + [-2135895555] = 'cs2_29_biolab136', + [1819602964] = 'cs2_29_biolab144_rail', + [-1710356417] = 'cs2_29_biolab144', + [-479599992] = 'cs2_29_biolab144a', + [-718780923] = 'cs2_29_biolab144b', + [30693334] = 'cs2_29_biolab146', + [1956024251] = 'cs2_29_biolab146b', + [2133185135] = 'cs2_29_biolab147', + [-800800646] = 'cs2_29_biolab147a', + [1500607934] = 'cs2_29_biolab148_a', + [-1854900476] = 'cs2_29_biolab148', + [1982434617] = 'cs2_29_biolab148b', + [635076041] = 'cs2_29_biolab149_a', + [1655052656] = 'cs2_29_biolab149', + [1685715645] = 'cs2_29_biolab94', + [-1107920450] = 'cs2_29_biolab94a', + [-1696124000] = 'cs2_29_biolab94c', + [458080031] = 'cs2_29_biolabobs', + [179117563] = 'cs2_29_biotemp_fiz', + [921198322] = 'cs2_29_biotemp', + [1773951908] = 'cs2_29_cp01', + [2070937355] = 'cs2_29_cp02', + [-1928808333] = 'cs2_29_cp02c', + [-205151507] = 'cs2_29_cp02f_1', + [1314805789] = 'cs2_29_cp02f_2', + [1612708768] = 'cs2_29_cp02f_3', + [1568698333] = 'cs2_29_cpbarrier_01', + [1406870969] = 'cs2_29_cs2_base', + [309800599] = 'cs2_29_cs2_chem_aly', + [182740057] = 'cs2_29_cs5_3_ladder_002', + [430703084] = 'cs2_29_cs5_3_ladder_003', + [-130564352] = 'cs2_29_cs5_3_ladder_004', + [83515525] = 'cs2_29_cs5_3_ladder_005', + [-741673433] = 'cs2_29_cs5_3_ladder_006', + [-503803262] = 'cs2_29_cs5_3_ladder_007', + [-1739260092] = 'cs2_29_cs5_3_ladder_008', + [1770891282] = 'cs2_29_cs5_3_ladder_01', + [3387313] = 'cs2_29_emissive_lod', + [71848858] = 'cs2_29_emissive', + [-953353819] = 'cs2_29_hrail_01', + [-942987450] = 'cs2_29_hrail_02a', + [-1168089080] = 'cs2_29_hrail_03', + [-1303425050] = 'cs2_29_hrail_04', + [1610558275] = 'cs2_29_hrail_05', + [592687597] = 'cs2_29_hrail_08', + [420846961] = 'cs2_29_hrail_09', + [-1868987257] = 'cs2_29_hrail_10', + [-474273079] = 'cs2_29_hrail_11', + [-1256960644] = 'cs2_29_hrail_12', + [516956406] = 'cs2_29_hrail_13', + [-267500685] = 'cs2_29_hrail_14', + [1129048557] = 'cs2_29_hrail_15', + [345050232] = 'cs2_29_hrail_16', + [434797323] = 'cs2_29_hrailb_12', + [-859364695] = 'cs2_29_humane_sign', + [795131435] = 'cs2_29_int_fake', + [-1330342322] = 'cs2_29_mainsign_lod', + [-1937653535] = 'cs2_29_mainsign', + [-876762737] = 'cs2_29_newsteps', + [-889747551] = 'cs2_29_newstepsb', + [-1661094910] = 'cs2_29_props_combo01_slod', + [-1055627043] = 'cs2_29_props_elec_wire_bl063', + [-1362808324] = 'cs2_29_rail432', + [-1645362819] = 'cs2_29_weed', + [1621945719] = 'cs2_30_beach_g1', + [-44721723] = 'cs2_30_beach2_g', + [-1990312628] = 'cs2_30_beacha', + [-675980807] = 'cs2_30_beachb', + [-596024447] = 'cs2_30_beachc', + [-1312092635] = 'cs2_30_beachd', + [590672888] = 'cs2_30_bh_clfc_g', + [125620339] = 'cs2_30_biopipe', + [-505173175] = 'cs2_30_chem_grill_ipl_group', + [-1424450986] = 'cs2_30_clabsweed_01', + [-640288816] = 'cs2_30_clabsweed_02', + [637437038] = 'cs2_30_clabtube_01', + [876159203] = 'cs2_30_clabtube_02', + [-2086289461] = 'cs2_30_clabtube_03', + [-1855497394] = 'cs2_30_clabtube_04', + [-580979908] = 'cs2_30_clabtube_05', + [1931222712] = 'cs2_30_clabtube_06', + [812512329] = 'cs2_30_cliff_top_ga', + [-326460920] = 'cs2_30_cliff_topb_g', + [-628629497] = 'cs2_30_foam_01', + [656570639] = 'cs2_30_foam_02', + [-120611734] = 'cs2_30_foam_03', + [-1312715185] = 'cs2_30_foam_04', + [360797645] = 'cs2_30_foam_05', + [1594747153] = 'cs2_30_foam_06', + [-999037974] = 'cs2_30_land_a_d', + [183078476] = 'cs2_30_land_a', + [-1342065890] = 'cs2_30_land_aa', + [909269109] = 'cs2_30_land_ab_d', + [-1770954620] = 'cs2_30_land_b_d', + [421276337] = 'cs2_30_land_b', + [333362796] = 'cs2_30_land_c_d', + [-1733187110] = 'cs2_30_land_c', + [177272480] = 'cs2_30_land_ca', + [1551561560] = 'cs2_30_land_dc_00', + [-895805383] = 'cs2_30_land_e_d', + [-1111198721] = 'cs2_30_land_e', + [781318683] = 'cs2_30_sea_alg1', + [305938800] = 'cs2_30_sea_alg2', + [1173755843] = 'cs2_30_sea_beach_underwater_03', + [1300042801] = 'cs2_30_sea_beach_uw_01_lod', + [-1907329477] = 'cs2_30_sea_beach_uw_01', + [-571490721] = 'cs2_30_sea_beach_uw_02_lod', + [412125885] = 'cs2_30_sea_beach_uw_02', + [-1864700306] = 'cs2_30_sea_ch2_30_wreck005', + [2061307517] = 'cs2_30_sea_ch2_30_wreck4', + [2017952160] = 'cs2_30_sea_ch2_30_wreck4dx', + [1393494965] = 'cs2_30_sea_ch2_30_wreck4dx001', + [571792618] = 'cs2_30_sea_ch2_30_wreck7', + [-995698595] = 'cs2_30_sea_coral_fan_flat_1', + [1857793156] = 'cs2_30_sea_coral_fan_flat_2', + [314181836] = 'cs2_30_sea_coral_fan_p_l', + [-2094448634] = 'cs2_30_sea_coral_fan_p_l003', + [-1764198208] = 'cs2_30_sea_coral_fan_p_l2', + [1920305685] = 'cs2_30_sea_coralglu004', + [-1233882518] = 'cs2_30_sea_coralrk1', + [-1386445202] = 'cs2_30_sea_coralrock_006', + [-692856548] = 'cs2_30_sea_coralrock_007', + [284609957] = 'cs2_30_sea_coralrock_008', + [-1171906559] = 'cs2_30_sea_coralrock_009', + [-2005800232] = 'cs2_30_sea_coralrock_01', + [-1603245254] = 'cs2_30_sea_coralrock_010', + [1920569165] = 'cs2_30_sea_coralrock_011', + [2109973985] = 'cs2_30_sea_coralrock_012', + [-836450654] = 'cs2_30_sea_coralrock_013', + [1659334701] = 'cs2_30_sea_coralrock_014', + [891131034] = 'cs2_30_sea_coralrock_015', + [1082829684] = 'cs2_30_sea_coralrock_016', + [-1833250865] = 'cs2_30_sea_coralrock_017', + [303779478] = 'cs2_30_sea_coralrock_018', + [372442716] = 'cs2_30_sea_coralrock_02', + [1106337240] = 'cs2_30_sea_coralrock_03', + [101954055] = 'cs2_30_sea_coraltb', + [-2085504947] = 'cs2_30_sea_coralvs', + [-1497596140] = 'cs2_30_sea_cs2_30_wreck1', + [-1810966087] = 'cs2_30_sea_cs2_30_wreck2', + [1781958153] = 'cs2_30_sea_cs2_30_wreck3', + [-537460392] = 'cs2_30_sea_underwater_03_lod', + [2052398356] = 'cs2_30_sea_uw_dec_00', + [-2003322471] = 'cs2_30_sea_uw_dec_01', + [-794310216] = 'cs2_30_sea_uw_dec_02', + [-437849034] = 'cs2_30_sea_uw_dec_03', + [-1405288221] = 'cs2_30_sea_uw_dec_04', + [-1014812817] = 'cs2_30_sea_uw_dec_05', + [118568562] = 'cs2_30_sea_uw_dec_06', + [-239203380] = 'cs2_30_sea_uw_dec_07', + [729612105] = 'cs2_30_sea_uw_dec_08', + [373478613] = 'cs2_30_sea_uw_dec_09', + [1640262403] = 'cs2_30_sea_uw_dec_10', + [2141863340] = 'cs2_30_sea_uw_dec_11b', + [-946817498] = 'cs2_30_sea_uw_dec_16', + [1614590897] = 'cs2_30_sea_uw1_01', + [-868168026] = 'cs2_30_sea_uw2_00', + [-1813389831] = 'cs2_30_sea_uw2_03', + [-1586005740] = 'cs2_30_sea_uw2_04', + [795317490] = 'cs2_30_sea_uw2_05', + [1025388639] = 'cs2_30_sea_uw2_06', + [1317950271] = 'cs2_30_sea_uw2_07', + [-380041002] = 'cs2_30_sea_uw2_09', + [737741445] = 'cs2_30_sea_uw2_10', + [-281702145] = 'cs2_30_sea_uw2_11', + [576354120] = 'cs2_30_sea_uw2_12', + [-750659308] = 'cs2_30_sea_uw2_13', + [93437367] = 'cs2_30_sea_uw2_14', + [-1475607895] = 'cs2_30_sea_uw2_15', + [-681123490] = 'cs2_30_sea_uw2_16', + [-1935127582] = 'cs2_30_sea_uw2_17', + [-1102827751] = 'cs2_30_sea_uw2_18', + [-1886727777] = 'cs2_30_sea_uw2_19', + [-1174479938] = 'cs2_30_sea_uwd_1', + [1895942597] = 'cs2_30_sea_uwd_2', + [1034875910] = 'cs2_30_sea_uwrock001', + [1749375830] = 'cs2_30_seaweed_long_l', + [2053177229] = 'cs2_30_seaweed_long_m', + [974352352] = 'cs2_30_seaweed_long_m001', + [1708452841] = 'cs2_30_temprocks_b', + [1494419998] = 'cs2_30_tunnel_blocker', + [-1486168872] = 'cs2_30_tunnel_det_00', + [-1734000819] = 'cs2_30_tunnel_det_01', + [1811736061] = 'cs2_30_tunnel_det_02', + [1562298433] = 'cs2_30_tunnel_det_03', + [795634885] = 'cs2_30_tunnel_det_04', + [565137739] = 'cs2_30_tunnel_det_05', + [1409168876] = 'cs2_30_tunnel_det_06', + [1144559201] = 'cs2_30_tunnel_det_07', + [-930570497] = 'cs2_30_tunnel_det_08', + [-624442499] = 'cs2_30_tunnel_det_09', + [-910122333] = 'cs2_30_tunnel_det_10', + [-1149958644] = 'cs2_30_tunnel_det_11', + [-1381700984] = 'cs2_30_tunnel_det_12', + [-1797932822] = 'cs2_30_tunnel_det_13', + [448463752] = 'cs2_lod_06_slod3', + [1864222152] = 'cs2_lod_1234_slod3', + [1025240158] = 'cs2_lod_5_9_slod3', + [-1249720446] = 'cs2_lod_emissive_4_20_slod3', + [1324450085] = 'cs2_lod_emissive_5_20_slod3', + [-1005114730] = 'cs2_lod_emissive_6_21_slod3', + [-1049611463] = 'cs2_lod_rb2_slod3', + [-1448673002] = 'cs2_lod_roads_slod3', + [2086891416] = 'cs2_lod_roadsb_slod3', + [690462484] = 'cs2_lod2_emissive_4_21_slod3', + [-815004394] = 'cs2_lod2_emissive_6_21_slod3', + [1007938532] = 'cs2_lod2_rc_slod3', + [-390583941] = 'cs2_lod2_roadsa_slod03', + [-952191192] = 'cs2_lod2_slod3_08', + [-1659148126] = 'cs2_lod2_slod3_10', + [-1457315554] = 'cs2_lod2_slod3_10a', + [-1361703913] = 'cs2_lod2_slod3_11', + [1152130587] = 'cs2_railway_b10_legs_a_slod', + [-2065905048] = 'cs2_railway_b10_legs_a', + [1312913261] = 'cs2_railway_b10_legs_b_slod', + [-1290262818] = 'cs2_railway_b10_legs_b', + [-176527921] = 'cs2_railway_b10_rail_a', + [-1874486425] = 'cs2_railway_b10_rail_b', + [-1576583446] = 'cs2_railway_b10_rail_c', + [1019180120] = 'cs2_railway_b10_rail_d', + [243374045] = 'cs2_railway_b10_rail_e', + [-124777279] = 'cs2_railway_b10', + [-1242527194] = 'cs2_railway_b11_legs_a_slod', + [-1689678976] = 'cs2_railway_b11_legs_a', + [963107896] = 'cs2_railway_b11_legs_b_slod', + [-903157438] = 'cs2_railway_b11_legs_b', + [966631425] = 'cs2_railway_b11_legs_c_slod', + [-1132900897] = 'cs2_railway_b11_legs_c', + [-821908057] = 'cs2_railway_b11_rail_a', + [-1202356147] = 'cs2_railway_b11_rail_b', + [-1430985432] = 'cs2_railway_b11_rail_c', + [-1692121593] = 'cs2_railway_b11_rail_d', + [-2049238155] = 'cs2_railway_b11_rail_e', + [1949792302] = 'cs2_railway_b11_rail_f', + [110012606] = 'cs2_railway_b11', + [-385350490] = 'cs2_railway_b12_legs', + [-783641419] = 'cs2_railway_b12_rail', + [354207194] = 'cs2_railway_b12', + [-1558185522] = 'cs2_railway_b13_legs', + [1592564161] = 'cs2_railway_b13_rail', + [653879699] = 'cs2_railway_b13', + [-564914209] = 'cs2_railway_b14_legs', + [768062287] = 'cs2_railway_b14_rail', + [-791331504] = 'cs2_railway_b14', + [-1212679181] = 'cs2_railway_brg11lamp', + [838223452] = 'cs2_railway_brgov_00', + [479468440] = 'cs2_railway_brgov_01', + [1333887346] = 'cs2_railway_brgov_02', + [1385105285] = 'cs2_railway_brgov_07', + [-1554405095] = 'cs2_railway_brgov_08', + [1971965306] = 'cs2_railway_brgov_09', + [-2076897323] = 'cs2_railway_t01', + [-1921113497] = 'cs2_railway_t02', + [-1617705326] = 'cs2_railway_t03', + [720952666] = 'cs2_railway_t04', + [-1652131643] = 'cs2_railwyb_brg01_railing', + [-1774077797] = 'cs2_railwyb_brg01', + [-1629552390] = 'cs2_railwyb_brgov', + [-1198651569] = 'cs2_railwyb_t_06', + [-1241217052] = 'cs2_railwyb_t_16', + [-848906640] = 'cs2_railwyb_t_18', + [733607013] = 'cs2_railwyb_t_20', + [192328671] = 'cs2_railwyb_t_22', + [-1224373506] = 'cs2_railwyb_t_24', + [-1840201323] = 'cs2_railwyb_t_26', + [2131630864] = 'cs2_railwyb_t_28', + [-880216953] = 'cs2_railwyc_br06_d', + [-1025083163] = 'cs2_railwyc_br07_d', + [-1293278656] = 'cs2_railwyc_br08_d', + [-2020945881] = 'cs2_railwyc_brg01', + [-150425807] = 'cs2_railwyc_brg02', + [-458421638] = 'cs2_railwyc_brg03', + [-762911202] = 'cs2_railwyc_brg04', + [-834609774] = 'cs2_railwyc_brg05', + [149735821] = 'cs2_railwyc_brg06_overlay', + [1205194954] = 'cs2_railwyc_brg06', + [-2065007604] = 'cs2_railwyc_brg07_overlay', + [653496070] = 'cs2_railwyc_brg07', + [1294225438] = 'cs2_railwyc_brg08_overlay', + [346679923] = 'cs2_railwyc_brg08', + [41338381] = 'cs2_railwyc_brg09', + [-383546074] = 'cs2_railwyc_brgov_04', + [-1187707203] = 'cs2_railwyc_t01', + [-494511777] = 'cs2_railwyc_t02', + [1083315565] = 'cs2_railwyc_t03', + [1833004747] = 'cs2_railwyc_t04', + [866158297] = 'cs2_rdprops_aviation_ball', + [1259566649] = 'cs2_rdprops_ballwire107', + [961598132] = 'cs2_rdprops_ballwire108', + [610707680] = 'cs2_rdprops_ballwire109', + [1743728892] = 'cs2_rdprops_ballwire110', + [2040386649] = 'cs2_rdprops_ballwire111', + [-1941636697] = 'cs2_rdprops_ballwire112', + [235371822] = 'cs2_rdprops_ballwire113', + [210977452] = 'cs2_rdprops_cs2_wires41', + [48901978] = 'cs2_rdprops_cs2_wires42', + [43591428] = 'cs2_rdprops_cs2_wires51', + [1929283537] = 'cs2_rdprops_cs2_wires59', + [-1063960612] = 'cs2_rdprops_elec_wir09', + [1045262038] = 'cs2_rdprops_elec_wire005', + [-868647962] = 'cs2_rdprops_elec_wire03', + [829875101] = 'cs2_rdprops_elec_wire052', + [541606208] = 'cs2_rdprops_elec_wire053', + [65374331] = 'cs2_rdprops_elec_wire055', + [-372026281] = 'cs2_rdprops_elec_wire056', + [1384614012] = 'cs2_rdprops_elec_wire07', + [-60863727] = 'cs2_rdprops_elec_wires_sp196', + [1422425070] = 'cs2_rdprops_elec_wires_sp197', + [519901272] = 'cs2_rdprops_elec_wires_sp198', + [1496515779] = 'cs2_rdprops_elec_wires_sp199', + [798190549] = 'cs2_rdprops_elec_wires_sp200', + [1271317936] = 'cs2_rdprops_ewl_01', + [347494746] = 'cs2_rdprops_pylon_wire_sp106', + [1000955379] = 'cs2_rdprops_pylon_wire244', + [-916489883] = 'cs2_rdprops_pylon_wire246', + [1337886245] = 'cs2_rdprops_pylon_wire247', + [1585456040] = 'cs2_rdprops_pylon_wire248', + [126547095] = 'cs2_rdprops_pylon_wire250', + [-180072438] = 'cs2_rdprops_pylon_wire251', + [-1839101354] = 'cs2_rdprops_pylon_wire252', + [-1074034587] = 'cs2_rdprops_roadsa_p_wire06', + [-514761246] = 'cs2_rdprops_roadsa_p_wire195', + [355893403] = 'cs2_rdprops_roadsa_p_wire195b', + [1122360313] = 'cs2_rdprops_roadsa_p_wire195c', + [-2095283135] = 'cs2_rdprops_roadsa_p_wire201', + [2120525212] = 'cs2_rdprops_roadsa_p_wire201b', + [-1943322327] = 'cs2_rdprops_roadsa_p_wire201c', + [703038452] = 'cs2_rdprops_roadsa_p_wire203c', + [-1415715578] = 'cs2_rdprops_roadsa_p_wire89', + [1702978512] = 'cs2_rdprops_roadsa_p_wire89b', + [30645366] = 'cs2_rdprops_roadsa_p_wire89c', + [716324284] = 'cs2_rdprops_w_med_02', + [334303282] = 'cs2_rdprops_w_med_03', + [-836631399] = 'cs2_rdprops_w_med_04', + [969595885] = 'cs2_rdprops_w_med_05', + [1658433034] = 'cs2_rdprops_w_med_06', + [1293320836] = 'cs2_rdprops_w_med_07', + [-2074185453] = 'cs2_rdprops_w_med_08', + [1921043800] = 'cs2_rdprops_w_med_09', + [1335690438] = 'cs2_rdprops_w_med_e010', + [-1724184820] = 'cs2_rdprops_w_thin_01', + [-1310312350] = 'cs2_rdprops_w_thin_02', + [80240165] = 'cs2_rdprops_w_thin_03', + [259683209] = 'cs2_rdprops_w_thin_04', + [-1890979042] = 'cs2_rdprops_w_thin_05', + [1636833195] = 'cs2_rdprops_w_thin_06', + [-1144861669] = 'cs2_rdprops_w_thin_07', + [-965156473] = 'cs2_rdprops_w_thin_08', + [1389361707] = 'cs2_rdprops_w_thin_09', + [-242653338] = 'cs2_rdprops_w_thin_e010', + [-1953955992] = 'cs2_rdprops_wire00', + [117372498] = 'cs2_rdprops_wire03', + [-1735911070] = 'cs2_rdprops_wire06', + [169152707] = 'cs2_roads_01', + [486651548] = 'cs2_roads_02', + [-156603922] = 'cs2_roads_03', + [-958297507] = 'cs2_roads_04', + [-1351655711] = 'cs2_roads_12', + [-478901009] = 'cs2_roads_20', + [-251254766] = 'cs2_roads_21', + [-1489448] = 'cs2_roads_22', + [-1919590098] = 'cs2_roads_24', + [989576188] = 'cs2_roads_25', + [-2072865190] = 'cs2_roads_26_a', + [1209325102] = 'cs2_roads_26', + [-950905689] = 'cs2_roads_27', + [-689245224] = 'cs2_roads_28', + [1674907054] = 'cs2_roads_29', + [-1137263252] = 'cs2_roads_30', + [-1389125786] = 'cs2_roads_31', + [-814685216] = 'cs2_roads_32', + [1332700123] = 'cs2_roads_33', + [-736141920] = 'cs2_roads_armco_01', + [2109911284] = 'cs2_roads_armco_02', + [-1497660711] = 'cs2_roads_armco_03', + [-504432321] = 'cs2_roads_armco_04', + [-1571620360] = 'cs2_roads_armco_05', + [1918704141] = 'cs2_roads_armco_06', + [1974935745] = 'cs2_roads_armco_07', + [-874001115] = 'cs2_roads_armco_08', + [-613651410] = 'cs2_roads_armco_09', + [-576950382] = 'cs2_roads_armco_10', + [247058892] = 'cs2_roads_armco_11', + [-1074088881] = 'cs2_roads_armco_12', + [-182641005] = 'cs2_roads_armco_13', + [610663716] = 'cs2_roads_armco_14', + [-189915743] = 'cs2_roads_armco_15', + [523989691] = 'cs2_roads_armco_16', + [1476682832] = 'cs2_roads_armco_17', + [43891072] = 'cs2_roads_armco_18', + [931210058] = 'cs2_roads_armco_19', + [-1116426741] = 'cs2_roads_armco_20', + [257249743] = 'cs2_roads_armco_21', + [-322696019] = 'cs2_roads_armco_22', + [851450024] = 'cs2_roads_armco_23', + [1108752212] = 'cs2_roads_armco_24', + [1213514705] = 'cs2_roads_armco_25', + [1704197711] = 'cs2_roads_armco_26', + [1761346847] = 'cs2_roads_armco_27', + [2000527778] = 'cs2_roads_armco_28', + [-1591708317] = 'cs2_roads_armco_29', + [-2071741698] = 'cs2_roads_armco_30', + [-1835804902] = 'cs2_roads_armco_31', + [-2074297684] = 'cs2_roads_armco_32', + [-1371632013] = 'cs2_roads_armco_33', + [-1618185973] = 'cs2_roads_armco_34', + [-918076284] = 'cs2_roads_armco_35', + [-1157224446] = 'cs2_roads_armco_36', + [80362377] = 'cs2_roads_armco_37', + [-158949630] = 'cs2_roads_armco_38', + [84360191] = 'cs2_roads_armco_39', + [-1524729073] = 'cs2_roads_armco_40', + [-601724646] = 'cs2_roads_armco_41', + [-833041017] = 'cs2_roads_armco_42', + [-139583439] = 'cs2_roads_armco_43', + [-371489652] = 'cs2_roads_armco_44', + [-137682841] = 'cs2_roads_armco_45', + [-367753990] = 'cs2_roads_armco_46', + [619117214] = 'cs2_roads_armco_47', + [394878947] = 'cs2_roads_armco_48', + [1090695897] = 'cs2_roads_armco_49', + [973317123] = 'cs2_roads_armco_50', + [-547033405] = 'cs2_roads_armco_51', + [-857519680] = 'cs2_roads_armco_52', + [53917286] = 'cs2_roads_armco_53', + [-243789079] = 'cs2_roads_armco_54', + [-1161812634] = 'cs2_roads_armco_55', + [-1483997422] = 'cs2_roads_armco_56', + [-564532071] = 'cs2_roads_armco_57', + [-870823914] = 'cs2_roads_armco_58', + [-874506827] = 'cs2_roads_back01', + [-43419449] = 'cs2_roads_back02', + [-290792630] = 'cs2_roads_back03', + [-1963774665] = 'cs2_roads_bdg_dcl_01', + [-1682023424] = 'cs2_roads_elec_wire_s184', + [-1509724022] = 'cs2_roads_elec_wire_s185', + [2025690623] = 'cs2_roads_elec_wire_s186', + [1855127990] = 'cs2_roads_elec_wire_s187', + [-2142395093] = 'cs2_roads_elec_wire_s188', + [-791624144] = 'cs2_roads_elec_wire_s189', + [904008625] = 'cs2_roads_elec_wire_s190', + [496258585] = 'cs2_roads_elec_wire_s284', + [1805022459] = 'cs2_roads_elec_wire_s484', + [658406157] = 'cs2_roads_elec_wire_spline184', + [-558798348] = 'cs2_roads_elec_wire_spline185', + [46314006] = 'cs2_roads_elec_wire_spline186', + [1137621888] = 'cs2_roads_elec_wire_yy184', + [1648785133] = 'cs2_roads_elec_wire984', + [-1589066337] = 'cs2_roads_elec_wre785', + [-1335265412] = 'cs2_roads_fw_08_dcl', + [-539294237] = 'cs2_roads_fw_08', + [1367206183] = 'cs2_roads_fw_09', + [-1022882323] = 'cs2_roads_fw_10_dcl', + [-1896611597] = 'cs2_roads_fw_10_dcl02', + [-1114394815] = 'cs2_roads_fw_10', + [-1428157986] = 'cs2_roads_fw_11', + [-1382163195] = 'cs2_roads_fw_12_dcl', + [-1152734541] = 'cs2_roads_fw_12', + [-106825249] = 'cs2_roads_fw_9_dcl', + [-1248894815] = 'cs2_roads_fwy_sg_4', + [1130320481] = 'cs2_roads_fwy_sgn_05', + [1646495902] = 'cs2_roads_junc1', + [-668238606] = 'cs2_roads_junc1dcl', + [2043163838] = 'cs2_roads_junct_dcl01', + [1735561235] = 'cs2_roads_junct_dcl02', + [5849570] = 'cs2_roads_junct_dcl03', + [601557221] = 'cs2_roads_junct_dcl05', + [303621473] = 'cs2_roads_junct_dcl06', + [-1039317689] = 'cs2_roads_junct_dcl08', + [152523610] = 'cs2_roads_junct_dcl09', + [320005613] = 'cs2_roads_junct_dcl10', + [-491813481] = 'cs2_roads_junct_dcl11', + [399083843] = 'cs2_roads_railngs_1d', + [714770658] = 'cs2_roads_sign_01', + [1471472406] = 'cs2_roads_sign_02', + [-667327459] = 'cs2_roads_sign_03', + [44611839] = 'cs2_roads_sign_04', + [-175169844] = 'cs2_roads_sign_05', + [517828968] = 'cs2_roads_sign_06', + [-1676514352] = 'cs2_roads_sign_07', + [-1920414019] = 'cs2_roads_sign_08', + [-1130779426] = 'cs2_roads_sign_09', + [-1105579773] = 'cs2_roads_sign_10', + [-1292920274] = 'cs2_roads_sign_11', + [-450527591] = 'cs2_roads_sign_12', + [-814525643] = 'cs2_roads_sign_13', + [-2132330978] = 'cs2_roads_sign_14', + [3323047] = 'cs2_roads_sign_15', + [-361461461] = 'cs2_roads_sign_16', + [500068318] = 'cs2_roads_sign_17', + [-24542816] = 'cs2_roads_tele_pole_wire_01', + [359497617] = 'cs2_roads_tele_pole_wirm01', + [1588236810] = 'cs2_roads_tele_pole_wirm03', + [1894332039] = 'cs2_roads_tele_pole_wirm04', + [-866652825] = 'cs2_roads_tele_pole_wirm05', + [-1768586781] = 'cs2_roads_tele_pole_wirm06', + [1023423389] = 'cs2_roads_tele_wiren00', + [-482213854] = 'cs2_roads_tele_wiren01', + [1507978592] = 'cs2_roads_tele_wiren02', + [1653562106] = 'cs2_roads_wires_elec_heavy01', + [1096296648] = 'cs2_roads_wires_elec_stan01', + [1338656172] = 'cs2_roads_wires_elec_stan02', + [646640422] = 'cs2_roads_wires_elec_stan06', + [-1289614250] = 'cs2_roads_wires_elec_stan07', + [-1050892085] = 'cs2_roads_wires_elec_stan08', + [-810695315] = 'cs2_roads_wires_elec_stan09', + [-1822996099] = 'cs2_roads_wires_elec_stan12', + [-2035371988] = 'cs2_roads_wires_elec_stan14', + [1541167752] = 'cs2_roads_wires_elec_stan15', + [675303151] = 'cs2_roads_wires_tele_heavy02', + [846881635] = 'cs2_roads_wires_tele_heavy03', + [-2128215907] = 'cs2_roads_wires_tele_heavy05', + [1509241404] = 'cs2_roads_wires_tele_heavy06', + [1814812329] = 'cs2_roads_wires_tele_heavy07', + [-852649781] = 'cs2_roads_wires_tele_heavy08', + [-555533258] = 'cs2_roads_wires_tele_heavy09', + [-435794996] = 'cs2_roads_wires_tele_heavy10', + [-675434693] = 'cs2_roads_wires_tele_heavy11', + [802742124] = 'cs2_roads_wires_tele_heavy12', + [434779023] = 'cs2_roads_wires_tele_heavy13', + [1394943492] = 'cs2_roads_wires_tele_heavy14', + [1020066132] = 'cs2_roads_wires_tele_heavy15', + [1893884286] = 'cs2_roads_wires_tele_heavy16', + [1661846997] = 'cs2_roads_wires_tele_heavy17', + [-2039313250] = 'cs2_roads_wires_tele_heavy19', + [1472547668] = 'cs2_roads_wires_tele_heavy20', + [92972768] = 'cs2_roads_wires_tele_heavy21', + [1021416845] = 'cs2_roads_wires_tele_heavy22', + [169910501] = 'cs2_roads_wires_tele_stan02', + [1004536927] = 'cs2_roads_wires_tele_stan04', + [1468677043] = 'cs2_roads_wires_tele_stan05', + [840855772] = 'cs2_roads_wires_tele_stan07', + [-1296961019] = 'cs2_roads_wires_tele_stan08', + [2096161774] = 'cs2_roadsa_dcl_sign_002', + [357092809] = 'cs2_roadsa_hw_04', + [923865433] = 'cs2_roadsa_hw_05', + [1208529732] = 'cs2_roadsa_hw_06', + [971118327] = 'cs2_roadsa_hw_07', + [1823505555] = 'cs2_roadsa_hw_08', + [-1058361165] = 'cs2_roadsa_paleto_welcome', + [-1518196061] = 'cs2_roadsa_sign_mid_01', + [1399719759] = 'cs2_roadsa_sign_mid_02_lod', + [1005770622] = 'cs2_roadsa_sign_mid_03', + [2026162899] = 'cs2_roadsa_signfw_01', + [-1667124038] = 'cs2_roadsa_testroads00', + [-160634801] = 'cs2_roadsa_testroads01', + [-902688806] = 'cs2_roadsa_testroads02', + [-739302572] = 'cs2_roadsa_testroads03', + [1667869034] = 'cs2_roadsb_05', + [1217229750] = 'cs2_roadsb_06', + [978835275] = 'cs2_roadsb_07', + [740866797] = 'cs2_roadsb_08', + [501882480] = 'cs2_roadsb_09', + [933583306] = 'cs2_roadsb_10', + [1231617361] = 'cs2_roadsb_11', + [1006559873] = 'cs2_roadsb_13', + [307269413] = 'cs2_roadsb_14', + [458498348] = 'cs2_roadsb_15', + [1897057448] = 'cs2_roadsb_16', + [2127718439] = 'cs2_roadsb_17', + [1686713237] = 'cs2_roadsb_18', + [-1286287065] = 'cs2_roadsb_19', + [-1898179709] = 'cs2_roadsb_armco_11', + [875257379] = 'cs2_roadsb_armco_12', + [-1420115463] = 'cs2_roadsb_armco_13a', + [1602628173] = 'cs2_roadsb_armco_13b', + [1319667858] = 'cs2_roadsb_armco_13c', + [-319406101] = 'cs2_roadsb_armco_14a', + [-44015425] = 'cs2_roadsb_armco_14b', + [-1200597280] = 'cs2_roadsb_armco_14c', + [1574510659] = 'cs2_roadsb_armco_15a', + [-1151411371] = 'cs2_roadsb_armco_15b', + [-86749837] = 'cs2_roadsb_armco_16a', + [203583503] = 'cs2_roadsb_armco_16b', + [-1679650919] = 'cs2_roadsb_armco_16c', + [-1380535487] = 'cs2_roadsb_armco_16d', + [934201487] = 'cs2_roadsb_armco_17a', + [654616379] = 'cs2_roadsb_armco_17b', + [-1321742515] = 'cs2_roadsb_bard_wir00', + [-738093856] = 'cs2_roadsb_bard_wir02', + [106232198] = 'cs2_roadsb_bard_wir03', + [2032310218] = 'cs2_roadsb_cowsign_slod', + [876290973] = 'cs2_roadsb_cowsign', + [933086027] = 'cs2_roadsb_cs2_roads_wire008', + [1768850887] = 'cs2_roadsb_cs2_roads_wire008b', + [2058922075] = 'cs2_roadsb_cs2_roads_wire008c', + [788369650] = 'cs2_roadsb_cs2_roads_wire008e', + [2049559135] = 'cs2_roadsb_cs2_roads_wire04', + [-739873523] = 'cs2_roadsb_elec_wire_spline185', + [1779767660] = 'cs2_roadsb_elec_wire_spline186', + [502933349] = 'cs2_roadsb_elec_wire_spline467', + [202671002] = 'cs2_roadsb_elec_wire_spline468', + [-2006156212] = 'cs2_roadsb_elec_wire_spline469', + [-253757311] = 'cs2_roadsb_elec_wire_spline470', + [-1861161583] = 'cs2_roadsb_elec_wire_swire467', + [1532133909] = 'cs2_roadsb_elec_wire_swire468', + [576950332] = 'cs2_roadsb_elec_wire_swire469', + [1372285871] = 'cs2_roadsb_elec_wire_swire470', + [444813811] = 'cs2_roadsb_fencepls00', + [1289238148] = 'cs2_roadsb_fencepls01', + [-830092366] = 'cs2_roadsb_fencepls02a', + [359389561] = 'cs2_roadsb_fencepls02b', + [-1694805185] = 'cs2_roadsb_fw_05', + [-1330807133] = 'cs2_roadsb_fw_06', + [-426415494] = 'cs2_roadsb_fw_07', + [1863076719] = 'cs2_roadsb_fw_brdg2_d', + [-2061106992] = 'cs2_roadsb_fw_brdg2', + [-1688471873] = 'cs2_roadsb_fwy_sgn_01_lod', + [-2020352531] = 'cs2_roadsb_fwy_sgn_01', + [-1961904452] = 'cs2_roadsb_fwy_sgn_02_lod', + [-1985093087] = 'cs2_roadsb_fwy_sgn_02', + [-143263033] = 'cs2_roadsb_heavy25_lcy', + [1249448949] = 'cs2_roadsb_junc2', + [992085611] = 'cs2_roadsb_junc2a', + [-258246922] = 'cs2_roadsb_junct_dcl01', + [-2084594372] = 'cs2_roadsb_junct_dcl02', + [-1805500799] = 'cs2_roadsb_junct_dcl03', + [1196270681] = 'cs2_roadsb_junct_dcl04', + [-1307608613] = 'cs2_roadsb_junct_dcl05', + [1824812870] = 'cs2_roadsb_junct_dcl06', + [897188018] = 'cs2_roadsb_junct_dcl07', + [284571535] = 'cs2_roadsb_junct_dcl08', + [1528155113] = 'cs2_roadsb_junct_dcl09', + [700279313] = 'cs2_roadsb_junct_dcl10', + [470535854] = 'cs2_roadsb_junct_dcl11', + [-579972748] = 'cs2_roadsb_junct_dcl12', + [-822365041] = 'cs2_roadsb_junct_dcl13', + [-1101053286] = 'cs2_roadsb_laby_6', + [-59771529] = 'cs2_roadsb_pylon_wire244c001', + [-2088296469] = 'cs2_roadsb_pylon_wire245', + [-1572869813] = 'cs2_roadsb_railngs_1', + [1880720639] = 'cs2_roadsb_railngs_2', + [2108956724] = 'cs2_roadsb_railngs_3', + [-19160435] = 'cs2_roadsb_railngs_4', + [1545755929] = 'cs2_roadsb_railngs_5', + [1799879524] = 'cs2_roadsb_railngs_6', + [950834734] = 'cs2_roadsb_railngs_7', + [502459328] = 'cs2_roadsb_rd_sign_002', + [1788094629] = 'cs2_roadsb_sign_01', + [-2136611431] = 'cs2_roadsb_sign_010', + [-1177364494] = 'cs2_roadsb_sign_013', + [-1864534729] = 'cs2_roadsb_sign_02', + [-1204468758] = 'cs2_roadsb_sign_03', + [-330847218] = 'cs2_roadsb_sign_04', + [-1547986185] = 'cs2_roadsb_sign_05', + [-906959007] = 'cs2_roadsb_sign_06', + [454068583] = 'cs2_roadsb_sign_07', + [-145571296] = 'cs2_roadsb_sign_09', + [971982984] = 'cs2_roadsb_sign_11', + [-526739996] = 'cs2_roadsb_sign_12', + [85483231] = 'cs2_roadsb_sign_14', + [-684950131] = 'cs2_roadsb_testroads04', + [-1585302635] = 'cs2_roadsb_tmpd_01', + [1025088240] = 'cs2_roadsb_tnlend', + [1437755488] = 'cs2_roadsb_tnlend2', + [-2065612065] = 'cs2_roadsb_tnnlroad', + [1936063291] = 'cs2_roadsb_tnnlroad2', + [1227138745] = 'cs2_roadsb_tnnlroad3', + [1361310539] = 'cs2_roadsb_tnnlroadol', + [-736272240] = 'cs2_roadsb_tnnlroadol2', + [1785105700] = 'cs2_roadsb_tnnlroadol3', + [1926202680] = 'cs2_roadsb_tun_ec_01', + [1592155498] = 'cs2_roadsb_tun_ec_02', + [-1718337210] = 'cs2_roadsb_tun_gavgub1', + [-949183242] = 'cs2_roadsb_tun_gavgub2', + [219981913] = 'cs2_roadsb_tun_gavgub3', + [-733595162] = 'cs2_roadsb_tun_gavi_01', + [-646167470] = 'cs2_roadsb_tun_gavi_02', + [-1349029747] = 'cs2_roadsb_tun_gavi_03', + [1101588898] = 'cs2_roadsb_tun_gavi_dcl_01', + [-1724470701] = 'cs2_roadsb_tun_gavi_dcl_3', + [537529881] = 'cs2_roadsb_tun_gavi_dcl2', + [2099800945] = 'cs2_roadsb_tunshadowbox', + [2071822846] = 'cs2_roadsb_wire_1117', + [1249482681] = 'cs2_roadsb_wire_se1', + [-1585927692] = 'cs2_roadsb_wire_se118', + [2015654670] = 'cs2_roadsb_wire_se2', + [-150062363] = 'cs2_roadsb_wire_settlement001', + [-1450335818] = 'cs2_roadsb_wire_spline104', + [-854890319] = 'cs2_roadsb_wire_spline106', + [-2010095876] = 'cs2_roadsb_wire_spline107', + [1903047032] = 'cs2_roadsb_wire_spline108', + [-1669658735] = 'cs2_roadsb_wire_spline109', + [61986593] = 'cs2_roadsb_wire_spline114', + [905198501] = 'cs2_roadsb_wire_spline115', + [-880744772] = 'cs2_roadsb_wire_spline117', + [-1161673409] = 'cs2_roadsb_wire_spline118', + [-325670677] = 'cs2_roadsb_wire_spline119', + [-240504970] = 'cs2_roadsb_wire_spline121', + [953588040] = 'cs2_roadsb_wires_19_lcy', + [-628515434] = 'cs2_roadsb_wires_elec_light02', + [-1256162737] = 'cs2_roadsb_wires_elec_stan10', + [1240671194] = 'cs2_roadsb_wires_elec_stan16', + [945914039] = 'cs2_roadsb_wires_elec_stan17', + [1855384865] = 'cs2_roadsb_wires_elec_stan18', + [186902993] = 'cs2_roadsb_wires_elec_stan20', + [-548957671] = 'cs2_roadsb_wires_elec_stan21', + [1998930394] = 'cs2_roadsb_wires_elec_stan22', + [-1937085276] = 'cs2_roadsb_wires_elec_stan23', + [-767002593] = 'cs2_roadsb_wires_elec_stan24', + [1973370570] = 'cs2_roadsb_wires_elec_stan27', + [2068892205] = 'cs2_roadsb_wires_elec_stan28', + [-1964938930] = 'cs2_roadsb_wires_elec_stan29', + [-1693153088] = 'cs2_roadsb_wires_elec_stan30', + [535117521] = 'cs2_roadsb_wires_tele_heavy23', + [1227788643] = 'cs2_roadsb_wires_tele_heavy24', + [1569372631] = 'cs2_roadsb_wires_tele_heavy26', + [1865440546] = 'cs2_roadsb_wires_tele_heavy27', + [958066936] = 'cs2_roadsb_wires_tele_heavy28', + [1254986845] = 'cs2_roadsb_wires_tele_heavy29', + [-1806817659] = 'cs2_roadsb_wires_tele_heavy30', + [-2029450245] = 'cs2_roadsb_wires_tele_heavy31', + [-494812437] = 'cs2_roadsb_wires_tele_heavy32', + [298099056] = 'cs2_roadsb_wires_tele_heavy33', + [1227198509] = 'cs2_roadsb_wires_tele_heavy36', + [2070312110] = 'cs2_roadsb_wires_tele_heavy37', + [1492824023] = 'cs2_roadsb_wires_tele_heavy39', + [-156535099] = 'cs2_roadsb_wires_tele_stan12', + [-1034482147] = 'cs2_roadsb_wires_tele_stan14', + [157689233] = 'cs2_roadsb_ws008', + [-619525909] = 'cs2_roadsb_ws009', + [-1941799448] = 'cs2_roadsb_wspline008', + [1421831662] = 'cs3_01__deci1_b', + [579176827] = 'cs3_01__deci1_c', + [1183812620] = 'cs3_01__deci1_c001', + [-1487180447] = 'cs3_01__deci1', + [-362892615] = 'cs3_01__deci1b', + [1447402879] = 'cs3_01_armco00', + [1684486594] = 'cs3_01_armco01', + [1907905636] = 'cs3_01_armco02', + [-208990134] = 'cs3_01_beach1', + [106542567] = 'cs3_01_beach2', + [-1108695822] = 'cs3_01_beach3', + [1277644548] = 'cs3_01_cj_boatlod', + [487752277] = 'cs3_01_coast02', + [792995512] = 'cs3_01_coast03', + [1405743043] = 'cs3_01_coast05', + [1012953194] = 'cs3_01_coast05db01', + [1992177063] = 'cs3_01_coast06', + [-1532183106] = 'cs3_01_coast06b', + [1763124345] = 'cs3_01_coast06db', + [-1902300474] = 'cs3_01_coast06dcl', + [568655426] = 'cs3_01_deci8', + [-292076832] = 'cs3_01_deci8a', + [-325151818] = 'cs3_01_deci9', + [176502107] = 'cs3_01_dirttrack_008', + [-951868655] = 'cs3_01_foam_01_lod', + [-1805806095] = 'cs3_01_foam_01', + [1615745550] = 'cs3_01_foam_03_lod', + [2023087718] = 'cs3_01_foam_03', + [98643335] = 'cs3_01_foam_04_lod', + [1574709491] = 'cs3_01_foam_04', + [1971882220] = 'cs3_01_foam_05_lod', + [1277298047] = 'cs3_01_foam_05', + [1203890020] = 'cs3_01_foam_07_lod', + [1127084951] = 'cs3_01_foam_07', + [406860217] = 'cs3_01_foam_08_lod', + [-184559816] = 'cs3_01_foam_08', + [-1941421918] = 'cs3_01_mugu1', + [-1671363974] = 'cs3_01_props_combo0224_dslod', + [-1130565606] = 'cs3_01_rd_jn_dcl_01', + [343159752] = 'cs3_01_rd_jn_dclb_01', + [-561716943] = 'cs3_01_retwal1', + [-1320810828] = 'cs3_01_retwal2', + [525427940] = 'cs3_01_sea_07_lod', + [-1148651508] = 'cs3_01_sea_10_lod', + [1856117204] = 'cs3_01_sea_12_lod', + [-333937024] = 'cs3_01_sea_13_lod', + [-1282591865] = 'cs3_01_sea_14_lod', + [1069812397] = 'cs3_01_sea_16_lod', + [1183266085] = 'cs3_01_sea_cs3_01_uw1_00', + [743392904] = 'cs3_01_sea_cs3_01_uw1_00b', + [-54320738] = 'cs3_01_sea_cs3_01_uw1_01', + [1778514970] = 'cs3_01_sea_cs3_01_uw1_02', + [543484129] = 'cs3_01_sea_cs3_01_uw1_03', + [260294431] = 'cs3_01_sea_cs3_01_uw1_04', + [1326804108] = 'cs3_01_sea_cs3_01_uw1_04a', + [-1235512116] = 'cs3_01_sea_cs3_01_uw1_05', + [-934496082] = 'cs3_01_sea_cs3_01_uw1_06', + [-617390469] = 'cs3_01_sea_cs3_01_uw1_07', + [1843037131] = 'cs3_01_sea_cs3_01_uw1_08', + [2091917686] = 'cs3_01_sea_cs3_01_uw1_09', + [-1267789809] = 'cs3_01_sea_cs3_01_uw1_10', + [190103009] = 'cs3_01_sea_cs3_01_uw1_11', + [417749252] = 'cs3_01_sea_cs3_01_uw1_12', + [1606084268] = 'cs3_01_sea_cs3_01_uw1_13', + [-296713255] = 'cs3_01_sea_cs3_01_uw1_14', + [1141911383] = 'cs3_01_sea_cs3_01_uw1_15', + [1390267634] = 'cs3_01_sea_cs3_01_uw1_16', + [1290813727] = 'cs3_01_sea_cs3_01_uw1_17', + [1792113889] = 'cs3_01_sea_cs3_01_uw1_18', + [814909540] = 'cs3_01_sea_cs3_01_uw1_19', + [-1053739012] = 'cs3_01_sea_cs3_01_uw1_20', + [163105034] = 'cs3_01_sea_cs3_01_uw1_21', + [445541045] = 'cs3_01_sea_cs3_01_uw1_22', + [-1914372282] = 'cs3_01_sea_cs3_1_uw_dec_00', + [2059819273] = 'cs3_01_sea_cs3_1_uw_dec_01', + [-1574590577] = 'cs3_01_sea_cs3_1_uw_dec_02', + [-1889795588] = 'cs3_01_sea_cs3_1_uw_dec_03', + [-1012241768] = 'cs3_01_sea_cs3_1_uw_dec_04', + [-1295923001] = 'cs3_01_sea_cs3_1_uw_dec_05', + [-652667531] = 'cs3_01_sea_cs3_1_uw_dec_06', + [-393759602] = 'cs3_01_sea_cs3_1_uw_dec_07', + [-699264989] = 'cs3_01_sea_cs3_1_uw_dec_08', + [222002677] = 'cs3_01_sea_cs3_1_uw_dec_09', + [638692429] = 'cs3_01_sea_cs3_1_uw_dec_10', + [348981696] = 'cs3_01_sea_cs3_1_uw_dec_11', + [647671131] = 'cs3_01_sea_cs3_1_uw_dec_12', + [960221853] = 'cs3_01_sea_cs3_1_uw_dec_13', + [-2109119305] = 'cs3_01_sea_cs3_1_uw_dec_17', + [1687235119] = 'cs3_01_sea_cs3_1_uw_dec_20', + [1999097692] = 'cs3_01_sea_cs3_1_uw_dec_21', + [-1743974098] = 'cs3_01_sea_cs3_1_uw_dec_22', + [1088467999] = 'cs3_01_sea_cs3_1_uwdecals01', + [212814777] = 'cs3_01_sea_cs3_1_uwdecals02', + [389832915] = 'cs3_01_sea_cs3_1_uwdecals03', + [-400194906] = 'cs3_01_sea_cs3_1_uwdecals04', + [-88660023] = 'cs3_01_sea_cs3_1_uwdecals05', + [-447218421] = 'cs3_01_sea_cs3_1_uwdecals06', + [-919689394] = 'cs3_01_sea_props_ph', + [1231786704] = 'cs3_01_si', + [-1246816639] = 'cs3_01_trl01', + [-396264475] = 'cs3_01_trl02', + [-644751802] = 'cs3_01_trl03', + [-1552365931] = 'cs3_02__decal002', + [1269427481] = 'cs3_02_coast04', + [671614756] = 'cs3_02_culv_1', + [531560050] = 'cs3_02_culv_9', + [-769463577] = 'cs3_02_decf_01', + [-1292915583] = 'cs3_02_decf_03', + [-1060550604] = 'cs3_02_decf_04', + [-1650032145] = 'cs3_02_decf_06', + [1122356347] = 'cs3_02_decf_09', + [-487681579] = 'cs3_02_decf_09b', + [-862892240] = 'cs3_02_decf_10', + [-432438656] = 'cs3_02_decf_11', + [-1116429823] = 'cs3_02_decf_53_nnn', + [-1737815038] = 'cs3_02_decr04', + [-4851148] = 'cs3_02_decr1', + [-349999022] = 'cs3_02_decr112', + [-1223038723] = 'cs3_02_decr2', + [-104607834] = 'cs3_02_decr33', + [1860942324] = 'cs3_02_decr37', + [276561162] = 'cs3_02_decr39', + [-1762294414] = 'cs3_02_decr41', + [-691361694] = 'cs3_02_decr5', + [-1818786394] = 'cs3_02_decr65', + [801553918] = 'cs3_02_decr66', + [7038420] = 'cs3_02_decr86', + [-1389650422] = 'cs3_02_decr86b', + [-461033636] = 'cs3_02_decr91', + [997023019] = 'cs3_02_decr92', + [1160802481] = 'cs3_02_decr93', + [1199796833] = 'cs3_02_decr93a', + [1556399040] = 'cs3_02_decz01', + [-51510368] = 'cs3_02_decz02', + [1864951828] = 'cs3_02_decz03', + [653125120] = 'cs3_02_drain1', + [-594835245] = 'cs3_02_footp1', + [1326840549] = 'cs3_02_lnd01', + [895600509] = 'cs3_02_lnd02', + [1685562792] = 'cs3_02_lnd03', + [1487834646] = 'cs3_02_lnd04', + [-2016580525] = 'cs3_02_lnd05', + [68716954] = 'cs3_02_refprox1_ch', + [1233014521] = 'cs3_02_refprox2_ch', + [826328676] = 'cs3_02_refprox3_ch', + [-1209588062] = 'cs3_02_retwalb007', + [418123829] = 'cs3_02_retwalb1', + [-810815792] = 'cs3_02_retwalb11', + [-41920162] = 'cs3_02_retwalb3', + [265027061] = 'cs3_02_retwalb4', + [668820186] = 'cs3_02_trail07', + [79043724] = 'cs3_02_trail08', + [1491780504] = 'cs3_02_trail11', + [-1462165675] = 'cs3_02_trailz1', + [-550171632] = 'cs3_02_trailz2', + [-710616605] = 'cs3_02_trck_007', + [-1889811570] = 'cs3_02_trck_011', + [450833942] = 'cs3_02_trck032', + [1260146434] = 'cs3_02_trck417', + [683870840] = 'cs3_02_trck419', + [-664508196] = 'cs3_02_trck420', + [-757703228] = 'cs3_02_trck422', + [498791308] = 'cs3_02_trck425', + [231560113] = 'cs3_02_trck426', + [1789430650] = 'cs3_02_trck430', + [778202507] = 'cs3_02_trck440', + [-331323068] = 'cs3_02_trck445', + [1720501167] = 'cs3_03__decal001', + [789632180] = 'cs3_03__decal002', + [-1434202576] = 'cs3_03_bwall_01', + [1287459492] = 'cs3_03_bwall_02', + [41365217] = 'cs3_03_ctrack01', + [272157284] = 'cs3_03_ctrack02', + [1630858343] = 'cs3_03_ctrack03', + [-283670494] = 'cs3_03_ctrack04', + [1184905022] = 'cs3_03_ctrack05', + [-1468071571] = 'cs3_03_dec00', + [-846083182] = 'cs3_03_dec02', + [91405127] = 'cs3_03_dec03', + [1223803460] = 'cs3_03_dec07', + [993011393] = 'cs3_03_dec08', + [-705811760] = 'cs3_03_dec0829', + [203969314] = 'cs3_03_dec088', + [148601697] = 'cs3_03_dec1', + [456713663] = 'cs3_03_dec10', + [-328300501] = 'cs3_03_dec11', + [-22467424] = 'cs3_03_dec12', + [-1030507414] = 'cs3_03_dec13', + [-1475412127] = 'cs3_03_dec15', + [-2049852697] = 'cs3_03_dec17', + [-19929266] = 'cs3_03_dec2', + [1663765158] = 'cs3_03_dec23', + [-580747501] = 'cs3_03_dec24', + [-972009361] = 'cs3_03_dec25', + [-32358286] = 'cs3_03_dec26', + [-1337711401] = 'cs3_03_dec27', + [-497186551] = 'cs3_03_dec28', + [-1957799476] = 'cs3_03_dec30', + [-1727564482] = 'cs3_03_dec31', + [-1615527271] = 'cs3_03_dec32', + [-1116520939] = 'cs3_03_dec33', + [-1507110522] = 'cs3_03_decal005', + [1666501594] = 'cs3_03_decal008', + [-1952270403] = 'cs3_03_deco01', + [710636844] = 'cs3_03_deco02', + [1059233466] = 'cs3_03_deco03', + [1308179559] = 'cs3_03_deco04', + [1553455524] = 'cs3_03_deco05', + [1461045276] = 'cs3_03_deco05a', + [-1598457043] = 'cs3_03_decw_01', + [-2132715692] = 'cs3_03_decy_02', + [-424615733] = 'cs3_03_overlooka_rl', + [-380692517] = 'cs3_03_overlooka', + [549737699] = 'cs3_03_overlookasign', + [-431191095] = 'cs3_03_overlookb_rl', + [1317102142] = 'cs3_03_overlookb', + [-1868064336] = 'cs3_03_overlookbsign', + [-1084092248] = 'cs3_03_refprox1_ch', + [-1653794587] = 'cs3_03_refprox2_ch', + [-297282684] = 'cs3_03_refprox3_ch', + [-1684690428] = 'cs3_03_rivside1', + [-1396583095] = 'cs3_03_terr01', + [-676582627] = 'cs3_03_terr02', + [697978616] = 'cs3_03_terr03', + [-263955379] = 'cs3_03_terr04', + [-977991889] = 'cs3_03_terr05', + [509589635] = 'cs3_03_terr06', + [1882840118] = 'cs3_03_terr07', + [2117360009] = 'cs3_03_terr07a', + [-1910145145] = 'cs3_03_track02', + [1540987632] = 'cs3_03_track03', + [1772074620] = 'cs3_03_track04', + [960288183] = 'cs3_03_track05', + [-978129303] = 'cs3_03_track06', + [-42888108] = 'cs3_03_tunn_ent_004', + [591798215] = 'cs3_03_tunn_entdc_002', + [-116144519] = 'cs3_03_tunnold_01', + [-375299246] = 'cs3_03_waltmp', + [447747416] = 'cs3_04_brg_01', + [-527734046] = 'cs3_04_brg_02_shadowproxy', + [167670765] = 'cs3_04_brg_02', + [1133737112] = 'cs3_04_bus_decals', + [281621968] = 'cs3_04_bus', + [-2009075874] = 'cs3_04_cover010', + [-1449709044] = 'cs3_04_cover011', + [-428150858] = 'cs3_04_cover4', + [-229510836] = 'cs3_04_cover4o', + [-1704236793] = 'cs3_04_cs6_01_weldshed005', + [-82432770] = 'cs3_04_cs6_01_weldshed005b', + [1975683296] = 'cs3_04_decal_struc', + [1133502331] = 'cs3_04_decal1', + [519181888] = 'cs3_04_decal3', + [1789832632] = 'cs3_04_decal6', + [1150774275] = 'cs3_04_decalground', + [1571071221] = 'cs3_04_decalx1', + [1264451688] = 'cs3_04_decalx2', + [353637329] = 'cs3_04_decalx3', + [2037767955] = 'cs3_04_decalz1', + [-2006745874] = 'cs3_04_decalz2', + [-1845850084] = 'cs3_04_decalz3', + [-1242503137] = 'cs3_04_des_meth_grp1_slod', + [-977613479] = 'cs3_04_des_meth_grp1', + [1705919316] = 'cs3_04_des_meth_grp2_slod', + [-1214336735] = 'cs3_04_des_meth_grp2', + [96501767] = 'cs3_04_des_meth_grp3_slod', + [-1444145732] = 'cs3_04_des_meth_grp3', + [-413758206] = 'cs3_04_des_methrl_grp1', + [-1549204060] = 'cs3_04_des_methrl_grp2', + [-1814075887] = 'cs3_04_des_methrl_grp3', + [-1159588532] = 'cs3_04_details_rocks', + [1088965832] = 'cs3_04_details_stage', + [1663375650] = 'cs3_04_elec_light002', + [87490825] = 'cs3_04_elec_stand002', + [786669817] = 'cs3_04_emissive_1_lod', + [1739294432] = 'cs3_04_emissive_1', + [985642560] = 'cs3_04_emissive_2_lod', + [-1614317801] = 'cs3_04_emissive_2', + [-1222091669] = 'cs3_04_emissive_3_lod', + [-1979102309] = 'cs3_04_emissive_3', + [-2045298695] = 'cs3_04_hoarder', + [350673446] = 'cs3_04_house01', + [-1636845801] = 'cs3_04_house01b', + [725878500] = 'cs3_04_house02', + [-1949724545] = 'cs3_04_house02b', + [407293631] = 'cs3_04_junction_ovr_01', + [-36577003] = 'cs3_04_land_01', + [-745894777] = 'cs3_04_land_02', + [1874314471] = 'cs3_04_land_03', + [2104516696] = 'cs3_04_land_04', + [-1048904374] = 'cs3_04_mainbuilding3_a', + [-1468361835] = 'cs3_04_motel_detail001', + [-646826016] = 'cs3_04_motel', + [732105446] = 'cs3_04_props_combo01_01_lod', + [-116023746] = 'cs3_04_signs', + [1469972865] = 'cs3_04_signs02', + [-1568941429] = 'cs3_04_stage', + [918854543] = 'cs3_04_statc013', + [924623273] = 'cs3_04_t_h_tot004', + [-1916445839] = 'cs3_04_tel_hvy003', + [-1367120706] = 'cs3_04_tel_stand002', + [-357132556] = 'cs3_04_tlr_006', + [-356372594] = 'cs3_04_tlrbits_02', + [1988346463] = 'cs3_04_tlrbrn_01', + [-1851456499] = 'cs3_04_tlrtmp_01', + [-1818517624] = 'cs3_04_tlrtmp_013', + [-1275076528] = 'cs3_04_tlrtmp_015', + [-1241887533] = 'cs3_04_tlrtmp_04', + [-1153236047] = 'cs3_04_tlrtmp_05_rails', + [-1010898852] = 'cs3_04_tlrtmp_05', + [-534077133] = 'cs3_04_tlrtmp_07', + [-19669371] = 'cs3_04_tlrtmp_08', + [1058465466] = 'cs3_04_tlrtmp_12', + [969102172] = 'cs3_04_trailerparka_emis_lod', + [-544221017] = 'cs3_04_trailerparka_emis', + [-48832766] = 'cs3_04_trailerparka_grp1_slod', + [-736557803] = 'cs3_04_trailerparka_grp1', + [398084602] = 'cs3_04_trailerparka_grp2_slod', + [-826869167] = 'cs3_04_trailerparka_grp2', + [-2095960936] = 'cs3_04_trailerparkb_emis_lod', + [-235126220] = 'cs3_04_trailerparkb_emis', + [-926579616] = 'cs3_04_trailerparkb_grp1_slod', + [-992160669] = 'cs3_04_trailerparkb_grp1', + [-1532508245] = 'cs3_04_trailerparkb_grp2_slod', + [494863798] = 'cs3_04_trailerparkb_grp2', + [-1028444972] = 'cs3_04_trailerparkc_emis_lod', + [-1623987236] = 'cs3_04_trailerparkc_emis', + [232144571] = 'cs3_04_trailerparkc_grp1_slod', + [-1947677186] = 'cs3_04_trailerparkc_grp1', + [-67023238] = 'cs3_04_trailerparkc_grp2_slod', + [2116465274] = 'cs3_04_trailerparkc_grp2', + [-68429379] = 'cs3_04_trailerparkd_emis_lod', + [-979814820] = 'cs3_04_trailerparkd_emis', + [1432781793] = 'cs3_04_trailerparkd_grp1_slod', + [-1458026428] = 'cs3_04_trailerparkd_grp1', + [1331696972] = 'cs3_04_trailerparkd_grp2_slod', + [-1208785414] = 'cs3_04_trailerparkd_grp2', + [-1036532055] = 'cs3_04_trailerparke_grp1_slod', + [-359328265] = 'cs3_04_trailerparke_grp1', + [1006482630] = 'cs3_04_trailerparke_grp2_slod', + [-128470660] = 'cs3_04_trailerparke_grp2', + [208937166] = 'cs3_04_trck_002', + [-1233067311] = 'cs3_04_trck_002a', + [-585567635] = 'cs3_04_trck_03', + [-877998191] = 'cs3_04_trck_04', + [-907402402] = 'cs3_04_trckw_01', + [-584540290] = 'cs3_04_trckw_02b', + [-1155938969] = 'cs3_04_trland_01_dec', + [-2128094823] = 'cs3_04_trland_01', + [-1290682948] = 'cs3_04_trland_01b', + [-96619885] = 'cs3_04_trucks_dec', + [1411553813] = 'cs3_04_trucks', + [1089670916] = 'cs3_04_van_dec', + [-693102825] = 'cs3_05_brdge_shdw', + [53831776] = 'cs3_05_cm_rckgrp_05', + [963427398] = 'cs3_05_creek_brdg01', + [1086059882] = 'cs3_05_crk_bdg01_rl', + [1172477879] = 'cs3_05_crk_bdg02_rl', + [-711403883] = 'cs3_05_crk_bdg03_rl', + [1859453547] = 'cs3_05_crk_bdg04_rl', + [1903210] = 'cs3_05_crk_bdg05_rl', + [192327470] = 'cs3_05_crk_brdg005', + [-1624621808] = 'cs3_05_crk_brdg02', + [-1994387204] = 'cs3_05_crk_brdg03', + [-130548590] = 'cs3_05_crk_brdg04_dcl', + [2061464699] = 'cs3_05_crk_brdg04', + [-317783535] = 'cs3_05_cs3_06_rivrok_001', + [1533402813] = 'cs3_05_cs3_06_rivrok_002', + [-351673556] = 'cs3_05_cvrdbrdg_grime', + [88352786] = 'cs3_05_cvrdbrdg_main001', + [-268485052] = 'cs3_05_cvrdbrdg_sprt', + [1410611204] = 'cs3_05_dirttrck_01', + [1726733747] = 'cs3_05_dirttrck_02', + [448808297] = 'cs3_05_dirttrck_03', + [-484969910] = 'cs3_05_dirttrck_03b', + [142909682] = 'cs3_05_dirttrck_04', + [1025051166] = 'cs3_05_dirttrck_05', + [752904617] = 'cs3_05_dirttrck_06', + [1667094183] = 'cs3_05_dirttrck_07', + [-2042717080] = 'cs3_05_dirttrck_09', + [-1927895408] = 'cs3_05_dirttrck_10', + [-1211171840] = 'cs3_05_dirttrck_11', + [-434799483] = 'cs3_05_dirttrck_11b', + [-1567305332] = 'cs3_05_dirttrck_12', + [-1732395530] = 'cs3_05_dirttrck_13', + [-2117627894] = 'cs3_05_dirttrck_14', + [2133369569] = 'cs3_05_dirttrck_14a', + [-858019999] = 'cs3_05_dirttrck_20', + [-1644492728] = 'cs3_05_glue_01', + [-801248051] = 'cs3_05_glue_02', + [1558062874] = 'cs3_05_land09', + [-809602829] = 'cs3_05_pref_prx_hd4', + [-477186142] = 'cs3_05_prerefproc_02', + [-74530911] = 'cs3_05_prerefproc_04_hd', + [-1260824008] = 'cs3_05_prerefproc_05', + [-2073387381] = 'cs3_05_prerefproc_05b', + [-777579565] = 'cs3_05_prerefproc_07', + [1020182735] = 'cs3_05_prerefprochd_02', + [-2123418490] = 'cs3_05_prerefprochd_02d', + [1548150482] = 'cs3_05_prerefprochd_05b', + [-2077251819] = 'cs3_05_prerefprox_02a', + [-1819360281] = 'cs3_05_prerefprox_03', + [-984832158] = 'cs3_05_prerefprox_04', + [-919822254] = 'cs3_05_prerefprox_07b', + [305483785] = 'cs3_05_prerefprox4_02', + [498399290] = 'cs3_05_prerefproxhd_02a', + [1197400761] = 'cs3_05_prerefproxhd_03', + [1973436219] = 'cs3_05_prerefproxhd_04', + [2116571211] = 'cs3_05_prerefproxhd_07', + [-406024788] = 'cs3_05_prerefprx_02c', + [-794278725] = 'cs3_05_prerefprx_09', + [-691350440] = 'cs3_05_prerefprx_10', + [-660149516] = 'cs3_05_prerefprxhd_02c', + [-687141854] = 'cs3_05_prerefprxhd_09', + [1458572618] = 'cs3_05_prerefprxhd_10', + [-952152896] = 'cs3_05_prfprox_hd_07b', + [1286446080] = 'cs3_05_prrefproxhd_006', + [-877537235] = 'cs3_05_prrefproxhd_05', + [834829958] = 'cs3_05_prrefprx_02d', + [-1910208448] = 'cs3_05_prrefprx_04_01', + [320815800] = 'cs3_05_rckinsert03', + [-125530749] = 'cs3_05_rckinsert05', + [1340202621] = 'cs3_05_rckinsert05a', + [690712272] = 'cs3_05_rckinsert06', + [-1830108843] = 'cs3_05_rds_dtjnc_d08', + [1580527026] = 'cs3_05_refproc_06', + [262820004] = 'cs3_05_riv_rck_b1', + [612366927] = 'cs3_05_riv_rck_b2', + [-2053568777] = 'cs3_05_riv_rck_grpa1', + [901837767] = 'cs3_05_riv_rck_grpa6a', + [658134714] = 'cs3_05_riv_rck_grpa6b', + [-1852449245] = 'cs3_05_river02', + [1671798516] = 'cs3_05_river02b', + [-384627440] = 'cs3_05_river03', + [1240102846] = 'cs3_05_river03b', + [-1938016701] = 'cs3_05_river04_01', + [-1497142575] = 'cs3_05_river04_02', + [399960727] = 'cs3_05_river04', + [1554674749] = 'cs3_05_river05', + [-1099706125] = 'cs3_05_river05a', + [-1264206505] = 'cs3_05_river05b', + [-1564468852] = 'cs3_05_river05c', + [-789940760] = 'cs3_05_river05d', + [1286214965] = 'cs3_05_river06_d', + [1265816014] = 'cs3_05_river06', + [740633472] = 'cs3_05_river06b', + [-1375146931] = 'cs3_05_river06b001', + [-1495552698] = 'cs3_05_rivrapidrk_01', + [-1188322567] = 'cs3_05_rockdec_01', + [-932363908] = 'cs3_05_rockdec_02', + [-1115804758] = 'cs3_05_rockdec_03', + [-1940746246] = 'cs3_05_rockdec_03a', + [-817836241] = 'cs3_05_rockdec_04', + [-653008171] = 'cs3_05_rockdec_05', + [-355891648] = 'cs3_05_rockdec_06', + [114802268] = 'cs3_05_rockdec_07', + [378953177] = 'cs3_05_rockdec_08', + [2104208550] = 'cs3_05_rockdec_10', + [-1989032782] = 'cs3_05_rockdec_11', + [-1757978563] = 'cs3_05_rockdec_12', + [-1464138952] = 'cs3_05_rockdec_13', + [-144793470] = 'cs3_05_rockdec_15', + [322103724] = 'cs3_05_rockdec_15b', + [-1822004667] = 'cs3_05_rockdec_15c', + [624360498] = 'cs3_05_rockdec_16', + [1656025] = 'cs3_05_rockdec_16b', + [921673639] = 'cs3_05_rockdec_17', + [1155152764] = 'cs3_05_rockdec_18', + [-541227514] = 'cs3_05_rockdec_18b', + [1349014168] = 'cs3_05_rockdec_19', + [2089102329] = 'cs3_05_rockdec_20', + [-968618084] = 'cs3_05_rockglly_01', + [-1485602886] = 'cs3_05_rocks_riv05', + [1204799601] = 'cs3_05_rural1', + [-369977952] = 'cs3_05_rural1de', + [-1574626363] = 'cs3_05_rvrbldr_2_lod', + [14833032] = 'cs3_05_rvrbldr_2', + [784150845] = 'cs3_05_rvrbldr_3', + [-1320025376] = 'cs3_05_smllrk003', + [1804786383] = 'cs3_05_smllrk02', + [2030372944] = 'cs3_05_tmpbdg03_rl', + [-1843943989] = 'cs3_05_tmpbrdge03', + [-147858408] = 'cs3_05_trevor_trail_decal001', + [953286635] = 'cs3_05_water06_grp1_slod', + [1003798720] = 'cs3_05_water06_grp1', + [-1133441918] = 'cs3_05_water06_grp2_slod', + [1302029389] = 'cs3_05_water06_grp2', + [1717634787] = 'cs3_05_water07_grp1_slod', + [103470340] = 'cs3_05_water07_grp1', + [-676518811] = 'cs3_05_water07_grp2_slod', + [1741920340] = 'cs3_05_water07_grp2', + [1465738852] = 'cs3_05_watermesh01', + [1090861492] = 'cs3_05_watermesh02', + [851942713] = 'cs3_05_watermesh03', + [-1312318745] = 'cs3_05_watermesh04', + [403531633] = 'cs3_05_watermesh05', + [-1791893068] = 'cs3_05_watermesh08', + [1845093914] = 'cs3_05_xdec_29', + [537264495] = 'cs3_06_06_land_05', + [1793450684] = 'cs3_06_cliff2_dcl', + [254692509] = 'cs3_06_cliffter_dcl01', + [1699205786] = 'cs3_06_cs_dcl', + [1941062350] = 'cs3_06_cs3_01_dtrack_009', + [-1821740530] = 'cs3_06_cs3_newtrkdcl_014', + [1020312744] = 'cs3_06_culvert_02_shdw', + [135511537] = 'cs3_06_culvert001', + [-1245275816] = 'cs3_06_culvert004', + [1495327471] = 'cs3_06_culvert005b_sm', + [1935038199] = 'cs3_06_culvert02', + [1557277167] = 'cs3_06_culvert03', + [-1987305654] = 'cs3_06_culvt001_shdw', + [-1968048529] = 'cs3_06_dcl_04', + [-542089618] = 'cs3_06_dcl_07c', + [836519101] = 'cs3_06_dcl_08', + [203127400] = 'cs3_06_dcl_10', + [-1930888187] = 'cs3_06_dcl_13', + [-1855290104] = 'cs3_06_dcl_15', + [-37921372] = 'cs3_06_dcl_18', + [260407604] = 'cs3_06_dcl_19', + [1900111106] = 'cs3_06_dcl_20', + [1543518848] = 'cs3_06_dcl_21', + [438253503] = 'cs3_06_dcl_31', + [1285561540] = 'cs3_06_dcl_37', + [-784066523] = 'cs3_06_dcl_37c', + [-256876158] = 'cs3_06_dcl_42', + [-571524096] = 'cs3_06_dcl_43', + [59901765] = 'cs3_06_dcl_45', + [1089042501] = 'cs3_06_foam_01', + [850582488] = 'cs3_06_foam_02', + [91521372] = 'cs3_06_foam_03', + [2064739480] = 'cs3_06_foam_04', + [1781582551] = 'cs3_06_foam_05', + [1608889921] = 'cs3_06_foam_06', + [1310069410] = 'cs3_06_foam_07', + [-995033130] = 'cs3_06_foam_08', + [-1763138490] = 'cs3_06_foam_09', + [960249692] = 'cs3_06_jet_refprox_ch', + [288324276] = 'cs3_06_jetty_overlay', + [-1214243121] = 'cs3_06_jetty_refprox', + [-1300438693] = 'cs3_06_jetty', + [1421098258] = 'cs3_06_land_02', + [1190015] = 'cs3_06_land_02a', + [-1528663523] = 'cs3_06_land_02b', + [-1756773836] = 'cs3_06_land_03', + [-1886656940] = 'cs3_06_land_03b', + [-1374883910] = 'cs3_06_land_04', + [869216260] = 'cs3_06_land_06b', + [641438941] = 'cs3_06_land_06e', + [286111166] = 'cs3_06_land_07', + [-194593484] = 'cs3_06_land_07b', + [1119345105] = 'cs3_06_land_07c', + [-1429230616] = 'cs3_06_land_b_005', + [-993431597] = 'cs3_06_land_b_02', + [1308721733] = 'cs3_06_land_b_03', + [2032851095] = 'cs3_06_land_b_04', + [1398188288] = 'cs3_06_lightdcls_01', + [-961161850] = 'cs3_06_nubbin_dcls07', + [-349855295] = 'cs3_06_nubbin_dcls13', + [-1542450285] = 'cs3_06_nubbin_dcls17', + [-1378703588] = 'cs3_06_nubbin_dcls18', + [783407269] = 'cs3_06_nubbin_dcls18l', + [-429222105] = 'cs3_06_nubbin_dcls20', + [936600204] = 'cs3_06_nubtrckdcl', + [798712671] = 'cs3_06_props_06b17_01_lod', + [1474775248] = 'cs3_06_refprox02_ch', + [-186736019] = 'cs3_06_refprox02b_ch', + [1543402631] = 'cs3_06_refprox04_ch', + [-1652235546] = 'cs3_06_refprox05_ch', + [290398786] = 'cs3_06_refprox06_ch', + [1103323207] = 'cs3_06_refprox07_ch', + [-913798406] = 'cs3_06_refprox08_ch', + [-1159973821] = 'cs3_06_refprox09_ch', + [1516361536] = 'cs3_06_refprox11_ch', + [-56811616] = 'cs3_06_refprox12_ch', + [-83292679] = 'cs3_06_sea_cargoplane_a', + [-738874754] = 'cs3_06_sea_cargoplane_dcl001', + [-459519530] = 'cs3_06_sea_cargoplane_lod', + [390692112] = 'cs3_06_sea_cargoplane', + [-1396685004] = 'cs3_06_sea_cargoplane2_dcl01', + [-1173012613] = 'cs3_06_sea_cargoplane2_lod', + [892633046] = 'cs3_06_sea_cargoplane2', + [1823547169] = 'cs3_06_sea_shipwreck_lod', + [-885340866] = 'cs3_06_sea_shipwreck', + [-1212458409] = 'cs3_06_sea_uw_001_lod', + [-1197684252] = 'cs3_06_sea_uw_001', + [-1487630186] = 'cs3_06_sea_uw_002_lod', + [-900174501] = 'cs3_06_sea_uw_002', + [1515261262] = 'cs3_06_sea_uw_003', + [1679040724] = 'cs3_06_sea_uw_004', + [1976747089] = 'cs3_06_sea_uw_005', + [-1387292844] = 'cs3_06_sea_uw_006_lod', + [-1820262483] = 'cs3_06_sea_uw_006', + [-1803550277] = 'cs3_06_sea_uw_007', + [839329833] = 'cs3_06_sea_uw_008_lod', + [-1512364943] = 'cs3_06_sea_uw_008', + [-1072277273] = 'cs3_06_sea_uw_009', + [404903677] = 'cs3_06_sea_uw_010_lod', + [1241738119] = 'cs3_06_sea_uw_010', + [1003212568] = 'cs3_06_sea_uw_011', + [-2016952625] = 'cs3_06_sea_uw_012_lod', + [613261468] = 'cs3_06_sea_uw_012', + [1716690051] = 'cs3_06_sea_uw_013_lod', + [-1874167784] = 'cs3_06_sea_uw_013', + [-302808388] = 'cs3_06_sea_uw_014_lod', + [-2096570987] = 'cs3_06_sea_uw_014', + [1824502019] = 'cs3_06_sea_uw_015', + [1657182222] = 'cs3_06_sea_uwdec_00', + [-1324927854] = 'cs3_06_sea_uwdec_01', + [-2091820765] = 'cs3_06_sea_uwdec_02', + [-1115533944] = 'cs3_06_sea_uwdec_03', + [-884872953] = 'cs3_06_sea_uwdec_04', + [-653261661] = 'cs3_06_sea_uwdec_05', + [-420306840] = 'cs3_06_sea_uwdec_06', + [113106942] = 'cs3_06_sea_uwdec_07', + [343374705] = 'cs3_06_sea_uwdec_08', + [573806325] = 'cs3_06_sea_uwdec_09', + [-700025572] = 'cs3_06_sea_uwdec_10', + [1927392848] = 'cs3_06_sea_uwdec_11', + [2102117156] = 'cs3_06_sea_uwdec_12', + [-1912642421] = 'cs3_06_sea_uwdec_13', + [666867725] = 'cs3_06_sea_uwdec_14', + [982269350] = 'cs3_06_sea_uwdec_15', + [1145196818] = 'cs3_06_sea_uwdec_16', + [-520385918] = 'cs3_06_sea_uwdec_17', + [-1794587501] = 'cs3_06_track_dcl_011', + [-1211605529] = 'cs3_06_trackdcl_01', + [1818314522] = 'cs3_06_trackdcl_02', + [-1776772472] = 'cs3_06_trackdcl_03', + [1312066241] = 'cs3_06_trackdcl_04', + [1610231372] = 'cs3_06_trackdcl_05', + [-35641111] = 'cs3_06_wetwater01', + [864326709] = 'cs3_06_wetwater02', + [273369879] = 'cs3_06_woodenstruc1', + [-1810164065] = 'cs3_07_barrack02', + [-2114358692] = 'cs3_07_barrack03', + [430140673] = 'cs3_07_barrail_01', + [-1823514537] = 'cs3_07_barrail_02', + [637797826] = 'cs3_07_barrail_03', + [1357667218] = 'cs3_07_barrail_04', + [1655897887] = 'cs3_07_barrail_05', + [-1129139447] = 'cs3_07_barrail_06', + [-822847604] = 'cs3_07_barrail_07', + [-648647600] = 'cs3_07_barrail_08', + [644630346] = 'cs3_07_bridgede2', + [340543538] = 'cs3_07_bridgeframe01', + [704213900] = 'cs3_07_bridgeframe02', + [1065787046] = 'cs3_07_bridgeframe03', + [1296644651] = 'cs3_07_bridgeframe04', + [-53640899] = 'cs3_07_cfnclink_00', + [1268457175] = 'cs3_07_cfnclink_01', + [1500625540] = 'cs3_07_cfnclink_02', + [491405938] = 'cs3_07_cfnclink_03', + [796387021] = 'cs3_07_cfnclink_04', + [2026731895] = 'cs3_07_cfnclink_05', + [183180724] = 'cs3_07_cfnclink_06', + [-498840473] = 'cs3_07_cfnclink_07', + [-190942949] = 'cs3_07_cfnclink_08', + [-1043395715] = 'cs3_07_cfnclink_09', + [1238243925] = 'cs3_07_cfnclink_10', + [-1741703401] = 'cs3_07_cfnclink_11', + [-1502784622] = 'cs3_07_cfnclink_12', + [739598056] = 'cs3_07_cfnclink_13', + [970193509] = 'cs3_07_cfnclink_14', + [141334423] = 'cs3_07_cfnclink_15', + [372126490] = 'cs3_07_cfnclink_16', + [-484455170] = 'cs3_07_cfnclink_17', + [-254121869] = 'cs3_07_cfnclink_18', + [-1081801271] = 'cs3_07_cfnclink_19', + [428718277] = 'cs3_07_cfnclink_20', + [-824040593] = 'cs3_07_cfnclink_21', + [554125240] = 'cs3_07_cfnclink_22', + [-117016649] = 'cs3_07_cfnclink_23', + [-1036383713] = 'cs3_07_cfnclink_24', + [-1670758784] = 'cs3_07_cfnclink_25', + [-440544986] = 'cs3_07_cfnclink_26', + [31131988] = 'cs3_07_cfnclink_27', + [940799428] = 'cs3_07_cfnclink_28', + [1583301211] = 'cs3_07_cfnclink_29', + [-386247061] = 'cs3_07_cfnclink_30', + [-616875283] = 'cs3_07_cfnclink_31', + [-964882063] = 'cs3_07_cfnclink_32', + [-1370463976] = 'cs3_07_cfnclink_33', + [-1601256043] = 'cs3_07_cfnclink_34', + [-1849317373] = 'cs3_07_cfnclink_35', + [-2079650674] = 'cs3_07_cfnclink_36', + [-24575600] = 'cs3_07_cfnclink_37', + [810280213] = 'cs3_07_cfnclink_38', + [1645168795] = 'cs3_07_cfnclink_39', + [1208619829] = 'cs3_07_cfnclink_40', + [1994911984] = 'cs3_07_cfnclink_41', + [1753568299] = 'cs3_07_cfnclink_42', + [342862909] = 'cs3_07_cfnclink_43', + [43124866] = 'cs3_07_cfnclink_44', + [867494599] = 'cs3_07_cfnclink_45', + [1452224635] = 'cs3_07_cfnclink_46', + [579109473] = 'cs3_07_ctbuil_01_o', + [-1257119757] = 'cs3_07_emissive01_lod', + [-1939882693] = 'cs3_07_emissive01', + [-1695975957] = 'cs3_07_emissive02_lod', + [1990562247] = 'cs3_07_emissive02', + [117823111] = 'cs3_07_emissive03_lod', + [-350356810] = 'cs3_07_emissive03', + [-1653093531] = 'cs3_07_emissive04_lod', + [-590324197] = 'cs3_07_emissive04', + [1924182075] = 'cs3_07_emissive05_lod', + [320621234] = 'cs3_07_emissive05', + [-1493225354] = 'cs3_07_emissive06_lod', + [-1095392794] = 'cs3_07_emissive06', + [1031841365] = 'cs3_07_emissive07_lod', + [-124086865] = 'cs3_07_emissive07', + [1770088508] = 'cs3_07_emissive08_lod', + [573040841] = 'cs3_07_emissive08', + [1136191648] = 'cs3_07_emissive09_lod', + [1541790788] = 'cs3_07_emissive09', + [1302790286] = 'cs3_07_emissive10_lod', + [-1269633392] = 'cs3_07_emissive10', + [-1132310711] = 'cs3_07_emissive11_lod', + [1227200567] = 'cs3_07_emissive11', + [1157572431] = 'cs3_07_emissive12_lod', + [1490466713] = 'cs3_07_emissive12', + [-1811514724] = 'cs3_07_emissive13_lod', + [-125864216] = 'cs3_07_emissive13', + [1227764233] = 'cs3_07_emissive14_lod', + [-970157501] = 'cs3_07_emissive14', + [-1808711872] = 'cs3_07_emissive15_lod', + [-1671807329] = 'cs3_07_emissive15', + [-240601603] = 'cs3_07_emissive16_lod', + [-357082280] = 'cs3_07_emissive16', + [501318819] = 'cs3_07_fence_bet00', + [40062371] = 'cs3_07_fence_bet01', + [319942400] = 'cs3_07_fence_bet02', + [1452111354] = 'cs3_07_fence_bet03', + [-422570371] = 'cs3_07_fence_bet04', + [-1462537971] = 'cs3_07_fire_01_o', + [1083810594] = 'cs3_07_fire_01', + [-1026806512] = 'cs3_07_fire_frame', + [97966808] = 'cs3_07_fire_rail1', + [1569267764] = 'cs3_07_fuel_01_o', + [-1080183449] = 'cs3_07_fuel_01', + [2026301391] = 'cs3_07_fuel_02_o', + [-1855924078] = 'cs3_07_fuel_02', + [-1354470840] = 'cs3_07_fuelcable2', + [-2096164386] = 'cs3_07_fuelcable3', + [-1194361420] = 'cs3_07_fuelmetal2', + [-2100031042] = 'cs3_07_fuelmetal3', + [395387977] = 'cs3_07_glue_01', + [1784728043] = 'cs3_07_glue_02', + [-317894846] = 'cs3_07_glue_03', + [-840625934] = 'cs3_07_glue_04', + [-527714753] = 'cs3_07_glue_05', + [852974293] = 'cs3_07_glue_06', + [-1507507857] = 'cs3_07_glue_07', + [-1204951680] = 'cs3_07_glue_08', + [-1987606476] = 'cs3_07_glue_09', + [-1338190102] = 'cs3_07_glue_10', + [42498948] = 'cs3_07_glue_11', + [-1864361935] = 'cs3_07_glue_12', + [1423155225] = 'cs3_07_glue_13', + [-1183782574] = 'cs3_07_glue_15', + [1269468615] = 'cs3_07_glue_16', + [832723283] = 'cs3_07_glue_17', + [1072723439] = 'cs3_07_glue_18', + [2006082966] = 'cs3_07_glue_19', + [-1216911785] = 'cs3_07_glue_21', + [-1516256600] = 'cs3_07_glue_22', + [694995520] = 'cs3_07_glue_23', + [265721620] = 'cs3_07_glue_24', + [2088497249] = 'cs3_07_glue_25', + [1924848863] = 'cs3_07_glue_26', + [-429472715] = 'cs3_07_glue_27', + [2122616231] = 'cs3_07_graffiti', + [1338748618] = 'cs3_07_gsides_06_o', + [1753604634] = 'cs3_07_hanger04_rail1', + [-1605790103] = 'cs3_07_hanger04', + [675013684] = 'cs3_07_hanger05_rail1', + [-443703056] = 'cs3_07_hanger05', + [1037040879] = 'cs3_07_hangera_03_o', + [-2106773332] = 'cs3_07_hangera_03', + [-1389186467] = 'cs3_07_hangeraframe1', + [-1744467965] = 'cs3_07_hangeraframe2', + [1232505552] = 'cs3_07_hangerapipe', + [-183996176] = 'cs3_07_hangerbits_01', + [-835935455] = 'cs3_07_hangerbits_02', + [-888955697] = 'cs3_07_hangerbits_03', + [-228627578] = 'cs3_07_hangerbits_04', + [-534165734] = 'cs3_07_hangerbits_05', + [67145416] = 'cs3_07_hangerbits_06', + [1285496635] = 'cs3_07_hangerc_01_o', + [-1558071347] = 'cs3_07_hangerc_01', + [-2036250162] = 'cs3_07_hangerd_01_o', + [-640252027] = 'cs3_07_hangerd_01', + [-1483774613] = 'cs3_07_hangerdmetal1', + [1363589339] = 'cs3_07_hangerdmetal2', + [-1323139667] = 'cs3_07_hangerdpipes1', + [-1630283504] = 'cs3_07_hangerdpipes2', + [835878075] = 'cs3_07_hangerdpipes3', + [665039048] = 'cs3_07_hangerdstruts1', + [-393060666] = 'cs3_07_hangger007_o', + [-834690405] = 'cs3_07_hangger04_a_detail', + [-272399847] = 'cs3_07_hangger04_b_detail', + [131266333] = 'cs3_07_hangger04_o', + [-826360440] = 'cs3_07_hangger05_a_detail', + [1049762872] = 'cs3_07_hangger05_b_detail', + [692727223] = 'cs3_07_hangrail01', + [1248948229] = 'cs3_07_hangrail02', + [-637071562] = 'cs3_07_hangrail03', + [-90812332] = 'cs3_07_hangrail04', + [895174109] = 'cs3_07_hangrail05', + [-417289879] = 'cs3_07_hangrail06', + [-809108820] = 'cs3_07_hangrail07', + [-1049600511] = 'cs3_07_hangrail08', + [-1405406313] = 'cs3_07_hangrail09', + [-1526094868] = 'cs3_07_hangrail10', + [-1975947700] = 'cs3_07_hangrail11', + [-2137487989] = 'cs3_07_hangrail12_l1', + [412224255] = 'cs3_07_hangrail12', + [1874540880] = 'cs3_07_hangrail13', + [2113820118] = 'cs3_07_hangrail14', + [-12363698] = 'cs3_07_hangrail15', + [221934652] = 'cs3_07_hangrail16', + [616017632] = 'cs3_07_hangroofbeam00', + [1920977527] = 'cs3_07_hangroofbeam01', + [1094019035] = 'cs3_07_hangroofbeam02', + [253723568] = 'cs3_07_hangroofbeam03', + [-389105905] = 'cs3_07_hangroofbeam04', + [924570536] = 'cs3_07_hangroofbeam05', + [-212841454] = 'cs3_07_hangroofbeam06', + [28043465] = 'cs3_07_hangroofbeam07', + [-1877670499] = 'cs3_07_hangroofbeam08', + [-1640521246] = 'cs3_07_hangroofbeam09', + [-77439662] = 'cs3_07_hangroofbeam10', + [-452185946] = 'cs3_07_hangroofbeam11', + [-692218871] = 'cs3_07_hangroofbeam12', + [847203211] = 'cs3_07_hangroofbeam13', + [-1588319945] = 'cs3_07_hangroofbeam14', + [-1820488310] = 'cs3_07_hangroofbeam15', + [65531485] = 'cs3_07_hangroofbeam16', + [2116739813] = 'cs3_07_hangroofbeam17', + [-347154300] = 'cs3_07_hd1_lad1', + [-1756790071] = 'cs3_07_ladder_00', + [694910770] = 'cs3_07_ladders_01a', + [320950942] = 'cs3_07_ladders_01b', + [409490451] = 'cs3_07_ladders_02', + [1194406308] = 'cs3_07_ladders_03', + [67480398] = 'cs3_07_ladders_04', + [683930826] = 'cs3_07_ladders_05', + [-546381279] = 'cs3_07_ladders_06', + [-701116497] = 'cs3_07_ladders_07', + [1506793237] = 'cs3_07_ladders_08', + [846301273] = 'cs3_07_ladders_09', + [-1034606806] = 'cs3_07_ladders_10', + [-1357676377] = 'cs3_07_ladders_11', + [2005569934] = 'cs3_07_ladders_12', + [-1387725558] = 'cs3_07_ladders_13', + [1398851899] = 'cs3_07_ladders_14', + [-2078102850] = 'cs3_07_ladders_15', + [803406400] = 'cs3_07_ladders_16', + [1683258141] = 'cs3_07_metalbits01', + [-1651544682] = 'cs3_07_metalbits02', + [-847105146] = 'cs3_07_mil_apartment', + [1709963512] = 'cs3_07_mil_apt_detail', + [-292133050] = 'cs3_07_mil_decals00', + [-1127513167] = 'cs3_07_mil_decals01', + [-1839518003] = 'cs3_07_mil_decals02', + [-509194906] = 'cs3_07_mil_decals03', + [1055983606] = 'cs3_07_mil_decals04', + [1286775673] = 'cs3_07_mil_decals05', + [1879665190] = 'cs3_07_mil_decals07', + [99063264] = 'cs3_07_mil_decals08', + [-1437965245] = 'cs3_07_mil_decals10', + [1987574943] = 'cs3_07_mil_decals11', + [-2068473574] = 'cs3_07_mil_decals12', + [1391080836] = 'cs3_07_mil_decals13', + [1665193521] = 'cs3_07_mil_decals14', + [1182866582] = 'cs3_07_mil_decals15', + [1422113051] = 'cs3_07_mil_decals16', + [590763517] = 'cs3_07_mil_decals17', + [-1950962029] = 'cs3_07_mil_runway00', + [-1690219096] = 'cs3_07_mil_runway01', + [-1459099339] = 'cs3_07_mil_runway02', + [-1792228997] = 'cs3_07_mil_runway03', + [-1296958331] = 'cs3_07_mil_runway04', + [1084725366] = 'cs3_07_mil_runway05', + [1818357738] = 'cs3_07_mil_runway07', + [-99382449] = 'cs3_07_mil_runway08', + [146712741] = 'cs3_07_mil_runway09', + [209727856] = 'cs3_07_mil_runway12', + [-151943601] = 'cs3_07_mil_runway13', + [622216626] = 'cs3_07_milrd_010_1', + [851763471] = 'cs3_07_milrd_010_2', + [1365057087] = 'cs3_07_milrd_010_3', + [-1523792419] = 'cs3_07_milrd_010_4', + [-614750812] = 'cs3_07_milrd_010', + [1688333754] = 'cs3_07_mpgates_01', + [1304936454] = 'cs3_07_mpgates_02', + [-523446413] = 'cs3_07_mpool_01_o', + [-1894430227] = 'cs3_07_mpool_01', + [386506495] = 'cs3_07_mpool_metal1', + [615201346] = 'cs3_07_mpool_metal2', + [-327726633] = 'cs3_07_mpool_metal3', + [257186835] = 'cs3_07_mpool_pipes', + [1617689241] = 'cs3_07_pilots_01_o', + [1924782290] = 'cs3_07_pilots_02_metal', + [1878656201] = 'cs3_07_pilots_02_o', + [-1316307790] = 'cs3_07_pilots_02', + [-43328329] = 'cs3_07_props_v_tower_milo_lod', + [586786597] = 'cs3_07_props_wire_021', + [-371149616] = 'cs3_07_props_wire_022', + [-649129043] = 'cs3_07_props_wire_023', + [-1233728003] = 'cs3_07_props_wire_024', + [-1548998552] = 'cs3_07_props_wire_025', + [-1796633885] = 'cs3_07_props_wire_026', + [717966954] = 'cs3_07_pub38_1', + [227677176] = 'cs3_07_pub38_2', + [2039031425] = 'cs3_07_pub38', + [1405767512] = 'cs3_07_rail1', + [1654189301] = 'cs3_07_rail2', + [666041502] = 'cs3_07_roadfence01', + [1907273207] = 'cs3_07_roadfence01b', + [-277141122] = 'cs3_07_roadfence01c', + [602935911] = 'cs3_07_roadfence01e', + [984694761] = 'cs3_07_roadfence01f', + [253162906] = 'cs3_07_roadfence01f001', + [2012649175] = 'cs3_07_roadfence15', + [785319049] = 'cs3_07_roadfence19', + [-756953704] = 'cs3_07_roadfence20', + [-614228399] = 'cs3_07_runlight_b_', + [-1978019169] = 'cs3_07_runlight_g_', + [-1614506552] = 'cs3_07_runlight_r_', + [943765690] = 'cs3_07_runlight_y_', + [712129756] = 'cs3_07_sec_04_o', + [-2037939199] = 'cs3_07_sec02_posts', + [-1277996457] = 'cs3_07_secutiry00', + [1703425474] = 'cs3_07_secutiry01', + [-1349989946] = 'cs3_07_secutiry02', + [1632546131] = 'cs3_07_secutiry03', + [1067318946] = 'cs3_07_shang_01_o', + [884550290] = 'cs3_07_shang_01', + [727110268] = 'cs3_07_shangcable1', + [-1921401623] = 'cs3_07_shangmetal1', + [1120282499] = 'cs3_07_shangmetal2', + [-56741744] = 'cs3_07_shangpipes1', + [-296919169] = 'cs3_07_smallhangrail01', + [478821368] = 'cs3_07_smallhangrail02', + [-251632954] = 'cs3_07_smallhangrail033', + [937554599] = 'cs3_07_smallhangrail04', + [-7670236] = 'cs3_07_stripde', + [-90148135] = 'cs3_07_support001', + [769773093] = 'cs3_07_tankpark01', + [-372265924] = 'cs3_07_temp_decal', + [-1863072579] = 'cs3_07_temp1', + [-1081302546] = 'cs3_07_temp2', + [1966476610] = 'cs3_07_temp3', + [-1577621820] = 'cs3_07_temp4', + [559342973] = 'cs3_07_temp5', + [1019774408] = 'cs3_07_tower_o', + [246063305] = 'cs3_07_tower1_masts', + [-764347450] = 'cs3_07_tower1', + [-32460250] = 'cs3_07_tower2_o', + [381219248] = 'cs3_07_tower3_ladder', + [1753884690] = 'cs3_07_tower3', + [87174649] = 'cs3_07_tower3cross01', + [-755807876] = 'cs3_07_tower3cross02', + [518447458] = 'cs3_07_tower3cross03', + [-190804778] = 'cs3_07_tower3cross04', + [-512573405] = 'cs3_07_tower3main', + [751899647] = 'cs3_07_tower3rail01', + [987344912] = 'cs3_07_tower3rail02', + [1346624228] = 'cs3_07_tower3rail03', + [1650032399] = 'cs3_07_tower3rail04', + [-143125462] = 'cs3_07_toweraerials', + [-1372812273] = 'cs3_07_towerdoor_dummy', + [-1562907030] = 'cs3_07_v_interior', + [-698996498] = 'cs3_07_v_liftshell', + [504208548] = 'cs3_07_wtower01', + [667988010] = 'cs3_07_wtower02', + [998987679] = 'cs3_07_wtower03', + [-1461557918] = 'cs3_07_wtowermain01', + [1610044301] = 'cs3_07_wtowermain02', + [-1246667462] = 'cs3_07_x_lad00', + [-2004811046] = 'cs3_07_x_lad01', + [-740517488] = 'cs3_07_x_lad02', + [-972685853] = 'cs3_07_x_lad03', + [-289747124] = 'cs3_07_x_lad04', + [-28434538] = 'cs3_07_xx_01', + [-467244217] = 'cs3_07_xx_02', + [-772782373] = 'cs3_07_xx_03', + [-1751952862] = 'cs3_07_xx_04', + [-951701113] = 'cs3_07_xx_05', + [2094832821] = 'cs3_07_xx_06', + [-1433765872] = 'cs3_07_xx_07', + [2036536774] = 'cs3_07_xx_08', + [-1496190813] = 'cs3_07_xx_09', + [1878522564] = 'cs3_07_xx_10', + [1563612474] = 'cs3_07_xx_11', + [1149510621] = 'cs3_07_xx_12', + [1109663517] = 'cs3_07_xx_13', + [1246277474] = 'cs3_07_xx_14', + [890078444] = 'cs3_07_xx_15', + [2056753159] = 'cs3_07_xx_16', + [-1333693567] = 'cs3_08_bridge00', + [969213363] = 'cs3_08_carpark', + [907656806] = 'cs3_08_coastdecal01a', + [560633320] = 'cs3_08_coastdecal02a', + [915748314] = 'cs3_08_coastdecal03', + [416061876] = 'cs3_08_decalsfloor', + [1577392946] = 'cs3_08_deci_hk2', + [-346699916] = 'cs3_08_decif_05', + [-1306634998] = 'cs3_08_decif_09', + [-916127121] = 'cs3_08_decif_10', + [-833960131] = 'cs3_08_decif_10x', + [1935511904] = 'cs3_08_decif_10z', + [1314172232] = 'cs3_08_decit_01', + [-668909345] = 'cs3_08_decit_07', + [-1131181628] = 'cs3_08_decit_09', + [1532676276] = 'cs3_08_decit_10', + [1148623596] = 'cs3_08_decit_12', + [-1595140089] = 'cs3_08_decit_12a1', + [-1347078759] = 'cs3_08_decit_12a2', + [1689663016] = 'cs3_08_decit_12srt1', + [-109050624] = 'cs3_08_decit_15', + [1610175205] = 'cs3_08_decit_22', + [-726421788] = 'cs3_08_decit_6a', + [-1970978791] = 'cs3_08_decit_new', + [-965365798] = 'cs3_08_decl1', + [-1272378559] = 'cs3_08_decl2', + [865045000] = 'cs3_08_decl3', + [1053680450] = 'cs3_08_decl3a12', + [-560670663] = 'cs3_08_decs', + [-1546538592] = 'cs3_08_decsa1', + [2123010766] = 'cs3_08_dect_07x', + [142327646] = 'cs3_08_decz02', + [313578440] = 'cs3_08_decz03', + [723682127] = 'cs3_08_decz13', + [1001874318] = 'cs3_08_deczx01', + [-689506614] = 'cs3_08_dune003', + [1286264893] = 'cs3_08_garage1', + [-1916588924] = 'cs3_08_hookies_00_roof', + [677382445] = 'cs3_08_hookies_00', + [878736602] = 'cs3_08_hookies_009', + [-1699648050] = 'cs3_08_hookies_01', + [-2081734590] = 'cs3_08_hookies_02', + [1969529653] = 'cs3_08_hookies_03', + [-243885221] = 'cs3_08_hookies_04', + [1646165161] = 'cs3_08_hookies_05', + [1272205333] = 'cs3_08_hookies_06', + [1052947954] = 'cs3_08_hookies_07', + [1763893390] = 'cs3_08_hookiesdecals1', + [497972987] = 'cs3_08_hookiesfish002', + [-241630267] = 'cs3_08_land03b', + [1579018447] = 'cs3_08_milrd_003', + [-1507264284] = 'cs3_08_milrd_004', + [-1438135747] = 'cs3_08_props_cs3_08_cable_00', + [1819004550] = 'cs3_08_props_cs3_08_cable_01', + [454667235] = 'cs3_08_props_cs3_08_cable_02', + [1222969209] = 'cs3_08_props_cs3_08_cable_03', + [85410175] = 'cs3_08_rails00', + [-88462139] = 'cs3_08_rails01', + [-393508760] = 'cs3_08_rails02', + [-531793940] = 'cs3_08_rails03', + [-845688191] = 'cs3_08_rails04', + [-1009729805] = 'cs3_08_rails05', + [-1490713187] = 'cs3_08_rails06', + [868392677] = 'cs3_08_rails07', + [1123302728] = 'cs3_08_rails08', + [1340397353] = 'cs3_08_rails09', + [-265258999] = 'cs3_08_rails10', + [-2024757685] = 'cs3_08_rails11', + [-1777253428] = 'cs3_08_rails12', + [-1224735315] = 'cs3_08_rails13', + [-878629137] = 'cs3_08_rails14', + [-630272886] = 'cs3_08_rails15', + [1569232890] = 'cs3_08_rails16_lod', + [-398170059] = 'cs3_08_rails16', + [1843950463] = 'cs3_08_rails17', + [42376381] = 'cs3_08_rails18', + [288373264] = 'cs3_08_rails19', + [-1223162175] = 'cs3_08_rails20', + [706735319] = 'cs3_08_rails21', + [400115786] = 'cs3_08_rails22', + [2046266501] = 'cs3_08_rails23', + [-406984688] = 'cs3_08_rails24', + [-814368896] = 'cs3_08_rails25', + [-1120136435] = 'cs3_08_rails26', + [1077811475] = 'cs3_08_rails27', + [-1324844378] = 'cs3_08_rails28', + [-1814937542] = 'cs3_08_rails29', + [257640679] = 'cs3_08_rails30', + [1510235708] = 'cs3_08_rails31', + [-340557416] = 'cs3_08_rails32', + [1778449973] = 'cs3_08_rails34', + [-1800711287] = 'cs3_08_rails35', + [1178023586] = 'cs3_08_rails36', + [467558913] = 'cs3_08_rails37', + [-299858298] = 'cs3_08_rails38', + [-984501015] = 'cs3_08_rails39', + [911840755] = 'cs3_08_rails40', + [604064304] = 'cs3_08_rampblend', + [435992229] = 'cs3_08_rd_jn_08', + [1398938305] = 'cs3_08_rock_det01', + [-1495201947] = 'cs3_08_tarmacedge', + [1769285999] = 'cs3_08_terr00', + [-1892846369] = 'cs3_08_terr01', + [537007754] = 'cs3_08_terr02', + [773436089] = 'cs3_08_terr03', + [1147395917] = 'cs3_08_terr04', + [1386118082] = 'cs3_08_terr05', + [1011732253] = 'cs3_08_terr06', + [1223321686] = 'cs3_08_terr07', + [-284773228] = 'cs3_08_terr08', + [-45723373] = 'cs3_08_terr09', + [-1603332466] = 'cs3_08_terr10', + [-835849717] = 'cs3_08_terr11', + [-1036854763] = 'cs3_08_terr12', + [1679725162] = 'cs3_08_terr12b', + [1492977575] = 'cs3_08_terr13', + [-2017696475] = 'cs3_08_terr14', + [1980088760] = 'cs3_08_terr15', + [-1986598698] = 'cs3_08_terr16', + [2130695080] = 'cs3_08_terr17', + [890781658] = 'cs3_08_terr18', + [575576647] = 'cs3_08_terr19', + [-1827411940] = 'cs3_08_toiletblock_roof', + [-1573730327] = 'cs3_08_toiletblock', + [-1551659736] = 'cs3_08_wtb_01_g001', + [105435841] = 'cs3_08_wtb_01_g003', + [617287621] = 'cs3_08_wtb_01_g006', + [824551546] = 'cs3_08_wtb_01_g007', + [-2023795476] = 'cs3_08_wtb_01_g008', + [-1796149233] = 'cs3_08_wtb_01_g009', + [338222965] = 'cs3_08_wtb_1', + [-170941757] = 'cs3_08_wtb_2', + [1016522892] = 'cs3_08_wtb_walk_002', + [-1277372654] = 'cs3_08_wtb_walk_003', + [-451561077] = 'cs3_08_wtb_walk_007', + [1550639251] = 'cs3_08_wtbw_006', + [-457349346] = 'cs3_08_wtf_3_g', + [-704771459] = 'cs3_08_wtf_build007_g', + [1041270505] = 'cs3_08_wtf_build007', + [1744437198] = 'cs3_08_wtf_build01_g', + [187211372] = 'cs3_08_wtf_build01', + [-796436371] = 'cs3_08_wtf_entrance_g', + [1457467007] = 'cs3_08_wtf3_walk002', + [-460253359] = 'cs3_08_wtf3_walk01', + [-991060055] = 'cs3_08_wtp_track', + [27068621] = 'cs3_08_zrock003_dec', + [1261734363] = 'cs3_08_zrock003', + [-546121692] = 'cs3_08b_decbuf_01', + [-2051398476] = 'cs3_08b_decbuf_02', + [-228033912] = 'cs3_08b_deci1', + [443566743] = 'cs3_08b_deci2', + [-373431342] = 'cs3_08b_deci6a', + [1359099794] = 'cs3_08b_deci8', + [-1012843503] = 'cs3_08b_decl01', + [299456628] = 'cs3_08b_decl02', + [966666237] = 'cs3_08b_decl08', + [-239139843] = 'cs3_08b_decl08r', + [647528958] = 'cs3_08b_decl09', + [-1373858716] = 'cs3_08b_decl10', + [-1768916225] = 'cs3_08b_decrs01', + [-2046601014] = 'cs3_08b_decrs01t', + [1690703723] = 'cs3_08b_decrs02', + [469861847] = 'cs3_08b_decrs04', + [1110299183] = 'cs3_08b_decrs06', + [-387178583] = 'cs3_08b_decrs07', + [1460338403] = 'cs3_08b_decz01', + [-2102241743] = 'cs3_08b_decz04', + [-1864306034] = 'cs3_08b_decz05', + [1731108650] = 'cs3_08b_decz06', + [-1211482184] = 'cs3_08b_decz1a', + [-1732213611] = 'cs3_08b_decz2a', + [-1056832272] = 'cs3_08b_decz44x', + [-294016011] = 'cs3_08b_terr00', + [-557577078] = 'cs3_08b_terr01', + [1352527932] = 'cs3_08b_terr02', + [1119310959] = 'cs3_08b_terr03', + [890059035] = 'cs3_08b_terr04', + [635017908] = 'cs3_08b_terr05', + [-1484448243] = 'cs3_08b_terr06', + [-1973623875] = 'cs3_08b_terr07', + [-1985927976] = 'cs3_08c_decal_a1', + [-1485930632] = 'cs3_08c_decif_01', + [-1314876452] = 'cs3_08c_decif_02', + [-759900720] = 'cs3_08c_decif_05', + [441503823] = 'cs3_08c_decif_05a', + [823328211] = 'cs3_08c_decif_05b', + [-246377669] = 'cs3_08c_decif_07', + [1375556411] = 'cs3_08c_decif_12', + [1652163156] = 'cs3_08c_hillsdecal05', + [766642012] = 'cs3_08c_ind_01_p_01', + [1063529152] = 'cs3_08c_ind_01_p_02', + [-1839411024] = 'cs3_08c_ind_01_p_03', + [-1544850483] = 'cs3_08c_ind_01_p_04', + [40808654] = 'cs3_08c_ind_01_p_05', + [1704596285] = 'cs3_08c_indwaste_00_rl01', + [1989326130] = 'cs3_08c_indwaste_00_rl02', + [1946520785] = 'cs3_08c_indwaste_00', + [-922161467] = 'cs3_08c_indwaste_01_rl021', + [-765404296] = 'cs3_08c_indwaste_01_rl0211', + [1814410504] = 'cs3_08c_indwaste_01_rl023', + [1534333861] = 'cs3_08c_indwaste_01_rl024', + [-1884586989] = 'cs3_08c_indwaste_01_rl025', + [86861593] = 'cs3_08c_indwaste_01_rl026', + [-2118375362] = 'cs3_08c_indwaste_01', + [-2128000701] = 'cs3_08c_land02_tar_d', + [1853409584] = 'cs3_08c_pathdec', + [-1643423392] = 'cs3_08c_terra_00', + [-802341469] = 'cs3_08c_terra_01', + [1919517213] = 'cs3_08c_terra_02', + [-1529846038] = 'cs3_08c_terra_03', + [1834186737] = 'cs3_08c_terra_04', + [-2015777539] = 'cs3_08c_terra_05', + [1349893686] = 'cs3_08c_terra_06', + [994481112] = 'cs3_08c_terra_07', + [-1846492869] = 'cs3_08c_terra_08', + [-1476661935] = 'cs3_08c_terra_09', + [217855600] = 'cs3_08c_terra_10', + [1131790172] = 'cs3_08c_terra_det_08', + [360146000] = 'cs3_08c_terra_det_12', + [616401267] = 'cs3_08c_wtbw_1', + [-1637819690] = 'cs3_08d_decbuf_03', + [-2068240501] = 'cs3_08d_decbuf_05', + [1701144804] = 'cs3_08d_decbuf_07', + [-334503044] = 'cs3_08d_declr_1', + [-2022551612] = 'cs3_08d_decp1', + [-1526386356] = 'cs3_08d_decw01', + [1350764617] = 'cs3_08d_decw03', + [1092994983] = 'cs3_08d_decz01', + [-108382095] = 'cs3_08d_decz02', + [-335897262] = 'cs3_08d_decz03', + [364179654] = 'cs3_08d_decz04', + [-881339813] = 'cs3_08d_featy03_ov', + [-73523116] = 'cs3_08d_featy06_ov', + [-792343860] = 'cs3_08d_object026_ov', + [-187095268] = 'cs3_08d_ovrly15', + [1213550099] = 'cs3_08d_ovrly17', + [1549594838] = 'cs3_08d_ovrly20', + [2107257120] = 'cs3_08d_terra_00', + [-874656346] = 'cs3_08d_terra_01', + [-650057620] = 'cs3_08d_terra_02', + [1896552442] = 'cs3_08d_terra_03', + [2131801093] = 'cs3_08d_terra_04', + [-849948528] = 'cs3_08d_terra_05', + [-611128056] = 'cs3_08d_terra_06', + [1470096672] = 'cs3_08d_terra_07', + [635109783] = 'cs3_08d_terra_08', + [-1809785307] = 'cs3_08d_terra_09', + [161574634] = 'cs3_08d_terra_dec_14', + [-1673574125] = 'cs3_08e_decit_01', + [231517232] = 'cs3_08e_decit_06', + [-529118224] = 'cs3_08e_decit_14', + [1316924818] = 'cs3_08e_decit_14r', + [50008313] = 'cs3_08e_decit_16', + [886043810] = 'cs3_08e_decit_17', + [468667880] = 'cs3_08e_decit_17s', + [660986318] = 'cs3_08e_decit_18', + [-122651772] = 'cs3_08e_decit_20', + [-369435111] = 'cs3_08e_decit_21', + [191832321] = 'cs3_08e_decit_22', + [1629655018] = 'cs3_08e_decix_1', + [531509243] = 'cs3_08e_decl03', + [-1615351824] = 'cs3_08e_decl04', + [-1922692275] = 'cs3_08e_decl05', + [1890046417] = 'cs3_08e_decl06', + [1710865525] = 'cs3_08e_decl07', + [1456866437] = 'cs3_08e_decq_1', + [-504427653] = 'cs3_08e_decq01', + [-591497527] = 'cs3_08e_decq01a', + [1411280856] = 'cs3_08e_decq02', + [2014820298] = 'cs3_08e_decq03', + [18050451] = 'cs3_08e_decx10e', + [1901749921] = 'cs3_08e_decz02', + [1117063447] = 'cs3_08e_decz03', + [633163624] = 'cs3_08e_decz05', + [-247110023] = 'cs3_08e_decz09', + [-572708395] = 'cs3_08e_decz09a', + [-1840830582] = 'cs3_08e_decz10', + [-1111899513] = 'cs3_08e_decz10e', + [1406470296] = 'cs3_08e_terr_00', + [1167748131] = 'cs3_08e_terr_01', + [728840145] = 'cs3_08e_terr_02', + [490216287] = 'cs3_08e_terr_03', + [250969818] = 'cs3_08e_terr_04', + [-256818606] = 'cs3_08e_terr_05', + [74279342] = 'cs3_08e_terr_06', + [-190395871] = 'cs3_08e_terr_07', + [-940707640] = 'cs3_08e_terr_09', + [-1300738771] = 'cs3_08e_terr_10', + [-985959757] = 'cs3_08e_terr_11', + [-646071088] = 'cs3_08f__decal002', + [650570607] = 'cs3_08f_creek1', + [-1634864157] = 'cs3_08f_decallll', + [1471023073] = 'cs3_08f_decals12', + [1878866047] = 'cs3_08f_decals13', + [-995445984] = 'cs3_08f_decals14a', + [686107216] = 'cs3_08f_decals16', + [340641741] = 'cs3_08f_deci6', + [1504258073] = 'cs3_08f_decu01', + [1620398367] = 'cs3_08f_decu01a', + [1930007031] = 'cs3_08f_fence1', + [-291534547] = 'cs3_08f_fence2', + [-1351124214] = 'cs3_08f_insert02', + [1416731481] = 'cs3_08f_lnd_03', + [1720336266] = 'cs3_08f_lnd_04', + [190974263] = 'cs3_08f_lnd_07', + [-357414952] = 'cs3_08f_lnd_09', + [883255605] = 'cs3_08f_ovrly01', + [1228706403] = 'cs3_08f_ovrly02', + [1085693779] = 'cs3_08f_ovrly23', + [-2035086604] = 'cs3_08f_spineb01', + [-1141934740] = 'cs3_08f_spineb02', + [-1439575567] = 'cs3_08f_spineb03', + [-546489241] = 'cs3_08f_spineb04', + [-844719910] = 'cs3_08f_spineb05', + [-488062114] = 'cs3_08f_spineb06', + [420949946] = 'cs3_08f_spineb07', + [106203701] = 'cs3_08f_spineb08', + [1337241153] = 'cs3_08f_watertank_det', + [2089032637] = 'cs3_08f_watertank', + [440310001] = 'cs3_08g__decal001', + [813891296] = 'cs3_08g_dec1_081', + [-655579020] = 'cs3_08g_decb_08d', + [1620544024] = 'cs3_08g_decbuf_08', + [722332967] = 'cs3_08g_decbuf_08a', + [880717183] = 'cs3_08g_decs00', + [2110537753] = 'cs3_08g_decs01', + [-1403150933] = 'cs3_08g_decs02', + [1919396272] = 'cs3_08g_decs05', + [392393653] = 'cs3_08g_decs07', + [1249821259] = 'cs3_08g_fence_20', + [-1532630849] = 'cs3_08g_ovrly01', + [-1962512899] = 'cs3_08g_ovrly01a', + [-2075396525] = 'cs3_08g_spined01', + [-536564289] = 'cs3_08g_spined02', + [-842135214] = 'cs3_08g_spined03', + [-1153637324] = 'cs3_08g_spined04', + [-1452326759] = 'cs3_08g_spined05', + [53179408] = 'cs3_08g_spined06', + [-1170959882] = 'cs3_lod_1_slod3', + [-1657672551] = 'cs3_lod_2_slod3', + [-499816223] = 'cs3_lod_emissive_slod3', + [807570789] = 'cs3_lod_s3_01', + [742092746] = 'cs3_lod_s3_05a', + [1929297312] = 'cs3_lod_s3_06a', + [-2135271145] = 'cs3_lod_s3_06b', + [-359289552] = 'cs3_lod_water_slod3_01', + [-44182848] = 'cs3_lod_water_slod3_02', + [254047821] = 'cs3_lod_water_slod3_03', + [-401294547] = 'cs3_railway_brg01_dec', + [-1324036755] = 'cs3_railway_brg01_railing', + [-1664803570] = 'cs3_railway_brg01', + [-978336673] = 'cs3_railway_brg02_railing', + [-1426802323] = 'cs3_railway_brg02', + [-783023358] = 'cs3_railway_brg03_railings_lod', + [20791952] = 'cs3_railway_brg03_railings', + [-2118555857] = 'cs3_railway_brg03', + [1205468672] = 'cs3_railway_dec03', + [1471323573] = 'cs3_railway_dec04', + [-560035744] = 'cs3_railway_des_railing_int', + [-595969832] = 'cs3_railway_endint', + [1094384075] = 'cs3_railway_railstuffint', + [-395408091] = 'cs3_railway_railtrack_int1', + [-156685926] = 'cs3_railway_railtrack_int2', + [-503480137] = 'cs3_railway_railtrack_int3', + [-206298076] = 'cs3_railway_railtrack_int4', + [1169144792] = 'cs3_railway_railtrack_intdec2', + [1508893784] = 'cs3_railway_railtrack_intdec3', + [1122448971] = 'cs3_railway_railtrack_intdec4', + [483911285] = 'cs3_railway_track01', + [253872905] = 'cs3_railway_track02', + [1097641886] = 'cs3_railway_track03', + [1638133772] = 'cs3_railway_track04', + [1369526279] = 'cs3_railway_track05', + [-2082655102] = 'cs3_railway_track06', + [1981946124] = 'cs3_railway_track07', + [-1469514343] = 'cs3_railway_track08', + [-1427176799] = 'cs3_railway_track09', + [405986887] = 'cs3_railway_track10', + [663911690] = 'cs3_railway_track11', + [1625704266] = 'cs3_railway_tun_ligts00', + [286193494] = 'cs3_railway_tun_ligts007', + [-490431806] = 'cs3_railway_tun_ligts008', + [-1713993497] = 'cs3_railway_tun_ligts009', + [441367068] = 'cs3_railway_tun_ligts01', + [-209863892] = 'cs3_railway_tun_ligts010', + [-1667940697] = 'cs3_railway_tun_ligts02', + [-1949917942] = 'cs3_railway_tun_ligts03', + [-1237454344] = 'cs3_railway_tun_ligts04', + [-1486072747] = 'cs3_railway_tun_ligts05', + [-778393423] = 'cs3_railway_tun_ligts06', + [-1117091459] = 'cs3_railway_tunnel_int_dc1', + [-480979631] = 'cs3_railway_tunnel_int_dc2', + [-689914779] = 'cs3_railway_tunnel_int_dc3', + [-451979070] = 'cs3_railway_tunnel_int_dc4', + [-1720711356] = 'cs3_railway_tunnel_int_shell', + [667496682] = 'cs3_railway_tunnel_int_shell2', + [427725909] = 'cs3_railway_tunnel_int_shell3', + [-153399545] = 'cs3_railway_tunnel_int_shell4', + [-1127982151] = 'cs3_railway_tunnelend1', + [-209303228] = 'cs3_railway_tunnelend2', + [462398186] = 'cs4_01_armcoend_01', + [1237778264] = 'cs4_01_armcoend_02', + [2131618273] = 'cs4_01_armcoend_03', + [-1486603627] = 'cs4_01_armcoend_05', + [-892337808] = 'cs4_01_armcoend_07', + [1090224866] = 'cs4_01_bb', + [-919360274] = 'cs4_01_bb1', + [497079747] = 'cs4_01_bb3', + [-1271624951] = 'cs4_01_billbd_001', + [-1007077319] = 'cs4_01_billbd_01', + [-1462555349] = 'cs4_01_brdgsup', + [-1158931208] = 'cs4_01_build_01', + [-1760338717] = 'cs4_01_build_det', + [104591598] = 'cs4_01_d26', + [394435017] = 'cs4_01_dbh_03', + [2111202927] = 'cs4_01_dbh_04', + [1843480197] = 'cs4_01_dbh_05', + [1159233632] = 'cs4_01_drivway_ov01', + [-1505921163] = 'cs4_01_drivway', + [1878562707] = 'cs4_01_emissive_lod', + [1500324831] = 'cs4_01_emissive', + [984055777] = 'cs4_01_erotub_01', + [141597556] = 'cs4_01_erotub_02', + [2068152604] = 'cs4_01_erotub_03', + [-1445778629] = 'cs4_01_factgnd_01', + [-1787690375] = 'cs4_01_factgnd_02', + [-1697535039] = 'cs4_01_gas_canisters', + [670740431] = 'cs4_01_gas_dets', + [-336476574] = 'cs4_01_gas_dets2', + [-198127011] = 'cs4_01_glue_02', + [-428919078] = 'cs4_01_glue_03', + [-1886549740] = 'cs4_01_glue_04', + [32632287] = 'cs4_01_glue_05', + [-1365948637] = 'cs4_01_glue_06', + [-1427501211] = 'cs4_01_layby_wall', + [-1428052870] = 'cs4_01_rdecal01', + [-834638150] = 'cs4_01_rdecal01b', + [-1164360727] = 'cs4_01_rdecal02', + [-814256731] = 'cs4_01_rdecal03', + [-517402392] = 'cs4_01_rdecal05', + [372894942] = 'cs4_01_rsl_mr_bb', + [-453764749] = 'cs4_01_silo_dets', + [-2099114124] = 'cs4_01_silo', + [-480971701] = 'cs4_01_ttbrdg_01', + [-1379563219] = 'cs4_01_ttbrdg_02', + [-1353131505] = 'cs4_01_weeds_01', + [847878690] = 'cs4_02_247_sign_ovr', + [1787860179] = 'cs4_02_247branding', + [719725701] = 'cs4_02_airplanes', + [-1324747829] = 'cs4_02_amco_jnt_01', + [-1062367786] = 'cs4_02_armco_008', + [-722028952] = 'cs4_02_armco_009', + [-249139269] = 'cs4_02_armco_010', + [1229199720] = 'cs4_02_armco_ditch_a001', + [645221218] = 'cs4_02_bb_247', + [-1976676780] = 'cs4_02_bb1', + [-1736840469] = 'cs4_02_bb2', + [-1671840708] = 'cs4_02_billbd002', + [1344021442] = 'cs4_02_billbd005', + [-54564681] = 'cs4_02_brrier_001', + [175866931] = 'cs4_02_brrier_002', + [429793912] = 'cs4_02_brrier_003', + [928603630] = 'cs4_02_brrier_004', + [-979404168] = 'cs4_02_brrier_006', + [-748382718] = 'cs4_02_brrier_007', + [674979810] = 'cs4_02_brriermr', + [-1414544219] = 'cs4_02_build11', + [784994930] = 'cs4_02_building08_dec', + [-1322032541] = 'cs4_02_cs_brrier_005', + [-2100443145] = 'cs4_02_culvert01', + [1824139815] = 'cs4_02_dbh_rocks01', + [-1750171621] = 'cs4_02_dbh_rocks02', + [-1990925476] = 'cs4_02_dbh_rocks03', + [264949978] = 'cs4_02_decalground', + [419116288] = 'cs4_02_details', + [553781920] = 'cs4_02_dt_tm_g', + [563253121] = 'cs4_02_dtrack_04_d', + [1240267216] = 'cs4_02_emissive001_lod', + [-1793810296] = 'cs4_02_emissive01', + [801907834] = 'cs4_02_emissive02_lod', + [-1949659660] = 'cs4_02_emissive02', + [66417844] = 'cs4_02_emissive02b_lod', + [1536129940] = 'cs4_02_emissive02b', + [-1542376091] = 'cs4_02_emissive03_lod', + [1355847681] = 'cs4_02_emissive03', + [-1545831709] = 'cs4_02_emissive04_lod', + [-1491450733] = 'cs4_02_emissive04', + [99929759] = 'cs4_02_erosiontube005', + [-1849106304] = 'cs4_02_erosiontube01', + [589014608] = 'cs4_02_erotub_004', + [585366067] = 'cs4_02_erotub_02', + [314661358] = 'cs4_02_erotub_03', + [316148030] = 'cs4_02_gas_dets', + [893604133] = 'cs4_02_gashouses', + [179077922] = 'cs4_02_glue_01', + [-147104704] = 'cs4_02_glue_02', + [449291092] = 'cs4_02_glue_03', + [126385366] = 'cs4_02_glue_04', + [-464669087] = 'cs4_02_glue_06', + [1998047215] = 'cs4_02_glue_ytool', + [1092327678] = 'cs4_02_glue01', + [-1728820246] = 'cs4_02_glue013', + [1344780206] = 'cs4_02_glue03', + [74162231] = 'cs4_02_glue06', + [-1236487823] = 'cs4_02_hanger_decal', + [-1117818433] = 'cs4_02_hanger', + [-61549402] = 'cs4_02_hrdstand_01_g', + [733795938] = 'cs4_02_hrdstand_01', + [1964206350] = 'cs4_02_hrdstand_02', + [-1089489933] = 'cs4_02_hse__se_a_decal0010303', + [-1022861842] = 'cs4_02_hse__se_c_dec0505', + [627110465] = 'cs4_02_hse__se_d_dec0202', + [-1821650583] = 'cs4_02_joshbog_d', + [1343048369] = 'cs4_02_joshbog_g', + [656489756] = 'cs4_02_joshbog', + [-1646246705] = 'cs4_02_joshbog001', + [-1821637434] = 'cs4_02_jtnp_sign00', + [-1521440625] = 'cs4_02_jtnp_sign01', + [-1755575134] = 'cs4_02_jtnp_sign02', + [-1518753571] = 'cs4_02_jtnp_sign03', + [1269503376] = 'cs4_02_jtnp_signawn00', + [25100601] = 'cs4_02_jtnp_signawn01', + [809524923] = 'cs4_02_jtnp_signawn02', + [-464402721] = 'cs4_02_jtnp_signawn03', + [-234659262] = 'cs4_02_jtnp_signawn04', + [-926675004] = 'cs4_02_jtnp_signawn05', + [-683758407] = 'cs4_02_jtnp_signawn06', + [-735992201] = 'cs4_02_jtnp_signawn07', + [-497597726] = 'cs4_02_jtnp_signawn08', + [-2061073879] = 'cs4_02_jtnp_signdir01', + [-1760090614] = 'cs4_02_jtnp_signdir02', + [-1769364995] = 'cs4_02_ladder_det', + [1720813135] = 'cs4_02_land01_d', + [1818817615] = 'cs4_02_land01', + [1192733101] = 'cs4_02_land02', + [2047542161] = 'cs4_02_land03_glue', + [-1710960762] = 'cs4_02_land03', + [-1497186985] = 'cs4_02_land04_barrier', + [-1595718228] = 'cs4_02_land04_d', + [-2097673270] = 'cs4_02_land04_g_b', + [-1713784935] = 'cs4_02_land04_g', + [-2026558636] = 'cs4_02_land04_grass01', + [2038468587] = 'cs4_02_land04_grass02', + [-579117067] = 'cs4_02_land04_rocks', + [-1049973779] = 'cs4_02_land04_rocksb', + [-1564548870] = 'cs4_02_land04', + [837155877] = 'cs4_02_land041_d', + [174210497] = 'cs4_02_land04a_rocks', + [-979277480] = 'cs4_02_land04a', + [-511318535] = 'cs4_02_land05_barrier', + [251397798] = 'cs4_02_land05_d', + [504062397] = 'cs4_02_land05_rocks', + [584273192] = 'cs4_02_land05_rocksb', + [146451672] = 'cs4_02_land05', + [176056389] = 'cs4_02_land05a', + [1910028957] = 'cs4_02_land06_g', + [1443710844] = 'cs4_02_land06', + [-396583904] = 'cs4_02_land06rocks', + [1982955881] = 'cs4_02_land07_ed', + [1903981763] = 'cs4_02_land07_g', + [-1285990767] = 'cs4_02_land07_rocks', + [1697310135] = 'cs4_02_land07', + [2027627084] = 'cs4_02_land08_d', + [-1406164118] = 'cs4_02_land08_rockg', + [-824186674] = 'cs4_02_land08_rocks', + [1045403649] = 'cs4_02_land08', + [2103225385] = 'cs4_02_land09_barrier', + [-2102020746] = 'cs4_02_land09_ed', + [1847385198] = 'cs4_02_land09_g', + [-389699286] = 'cs4_02_land09_rocks', + [-1144810773] = 'cs4_02_land09', + [1842277118] = 'cs4_02_land10_g', + [-1691331764] = 'cs4_02_land10_tg', + [771749550] = 'cs4_02_land10', + [-424082398] = 'cs4_02_land11_dg', + [-840930575] = 'cs4_02_land11_g', + [393051042] = 'cs4_02_land11_hs', + [-1760966464] = 'cs4_02_land11', + [273988330] = 'cs4_02_land12_dg', + [1678938934] = 'cs4_02_land12_g', + [1230810471] = 'cs4_02_land12', + [1666047280] = 'cs4_02_land13_g', + [981340074] = 'cs4_02_land13', + [1955694438] = 'cs4_02_land14_g', + [1692492912] = 'cs4_02_land14', + [-672142291] = 'cs4_02_land15_g', + [161951057] = 'cs4_02_land15', + [-1965566493] = 'cs4_02_land15b', + [-1024211430] = 'cs4_02_land15c', + [1048133370] = 'cs4_02_land16_g2', + [1514294918] = 'cs4_02_land16', + [349726862] = 'cs4_02_land16b', + [-1143696587] = 'cs4_02_land17_g', + [1698456698] = 'cs4_02_land17', + [-293266680] = 'cs4_02_land17b', + [549650307] = 'cs4_02_land17c', + [868975001] = 'cs4_02_land18', + [-1545714203] = 'cs4_02_mrgassta_dtl', + [665469667] = 'cs4_02_mrgassta_int', + [-184331189] = 'cs4_02_mrgasstation_ovr', + [804796717] = 'cs4_02_mrgasstation', + [-824180254] = 'cs4_02_newd01', + [-50700778] = 'cs4_02_newd02', + [729969020] = 'cs4_02_newd02b', + [-1421854045] = 'cs4_02_newd03', + [1081606310] = 'cs4_02_nmall00_dec', + [1053163722] = 'cs4_02_nmall00_dtl', + [-75435845] = 'cs4_02_nmall00_fiz', + [-1611053851] = 'cs4_02_nmall00_int', + [1806766519] = 'cs4_02_nmall00', + [1255625308] = 'cs4_02_nmall014', + [555416712] = 'cs4_02_nmall02', + [1867618220] = 'cs4_02_nmall04_g', + [-628560027] = 'cs4_02_nmall05', + [-1739920307] = 'cs4_02_raildecal01', + [2010469496] = 'cs4_02_rcplantb', + [1619879137] = 'cs4_02_retainwall01', + [1310900236] = 'cs4_02_retainwall02', + [1159441918] = 'cs4_02_retainwall03', + [2076728204] = 'cs4_02_retwal01', + [-1005144067] = 'cs4_02_retwall', + [-1662497425] = 'cs4_02_retwall002', + [-453031573] = 'cs4_02_retwall01', + [738846764] = 'cs4_02_retwall01b', + [-80100255] = 'cs4_02_roofdetails', + [-1519997623] = 'cs4_02_saljunk_01_g', + [254891688] = 'cs4_02_saljunk_01', + [136184640] = 'cs4_02_smll_hse_a_dec', + [1020100034] = 'cs4_02_smll_hse_a', + [934406076] = 'cs4_02_statcvan009', + [-269115266] = 'cs4_02_statcvan023a002', + [-595775911] = 'cs4_02_statcvan023e', + [-1472626215] = 'cs4_02_stuntcrash', + [-1304998276] = 'cs4_02_sy_walla_g', + [1393211040] = 'cs4_02_sy_walla', + [1089081951] = 'cs4_02_sy_wallb', + [819950154] = 'cs4_02_sy_wallc', + [-703598956] = 'cs4_02_sydoor004', + [134047419] = 'cs4_02_syentbldg001', + [179093458] = 'cs4_02_temp_desk', + [-2033209834] = 'cs4_02_terrain', + [1443903572] = 'cs4_02_tlrtmp_08', + [204002219] = 'cs4_02_trailer_10', + [-595898059] = 'cs4_02_trailer_dets', + [1883529662] = 'cs4_02_trailer_fnc', + [-1448108180] = 'cs4_02_tt_lights', + [331692360] = 'cs4_02_weed_01', + [-636533343] = 'cs4_02_weed_03', + [-919559196] = 'cs4_02_weed_04', + [-1114927974] = 'cs4_02_weed_05', + [1812860569] = 'cs4_02_weed002', + [-547359425] = 'cs4_02_weed003', + [-846704240] = 'cs4_02_weed004', + [1394957512] = 'cs4_02_weed005', + [-1626835827] = 'cs4_02_weed006', + [-1932931056] = 'cs4_02_weed007', + [-2039341811] = 'cs4_02_weed01', + [1532232931] = 'cs4_03_antnn', + [-222538388] = 'cs4_03_armco00', + [1214808159] = 'cs4_03_armco01', + [1587653841] = 'cs4_03_armco02', + [611563738] = 'cs4_03_armco03', + [909335641] = 'cs4_03_armco04', + [-1832978414] = 'cs4_03_autoshop_a', + [1688607713] = 'cs4_03_autoshop_d', + [-908411994] = 'cs4_03_autoshop', + [1849149686] = 'cs4_03_barn02', + [-390028842] = 'cs4_03_bb1', + [-630520533] = 'cs4_03_bb2', + [-955720089] = 'cs4_03_bb3', + [1190878798] = 'cs4_03_bb4', + [1246391335] = 'cs4_03_beach_01', + [-31271975] = 'cs4_03_beach_02', + [-1307494554] = 'cs4_03_beach_02a', + [-270846134] = 'cs4_03_beach_03', + [-64415154] = 'cs4_03_beach_03a_water', + [-1221770498] = 'cs4_03_beach_03a', + [2102555981] = 'cs4_03_beach_wood01', + [2098568709] = 'cs4_03_beachwood02', + [-1713612910] = 'cs4_03_beachwood04', + [-1708249343] = 'cs4_03_billboard_06', + [-120533686] = 'cs4_03_billboards', + [1633400291] = 'cs4_03_blends_01', + [788386084] = 'cs4_03_blends_02', + [1508523535] = 'cs4_03_brdg_1', + [1806262669] = 'cs4_03_brdg_2', + [-261324053] = 'cs4_03_brdg_rails_01_lod', + [1358632226] = 'cs4_03_brdg_rails_01', + [871727919] = 'cs4_03_brdg_rails_02_lod', + [224366056] = 'cs4_03_brdg_rails_02', + [1613400944] = 'cs4_03_brdgsup001', + [1485497129] = 'cs4_03_bridge_1d', + [-1087273773] = 'cs4_03_bridge_1d002', + [2138839859] = 'cs4_03_decal_1', + [-2012082963] = 'cs4_03_decal_1a', + [-1771099961] = 'cs4_03_decal_2b', + [-2069822165] = 'cs4_03_decal_2c', + [-1691561324] = 'cs4_03_decal_3', + [-1394117111] = 'cs4_03_decal_4', + [-1833516636] = 'cs4_03_decal_5', + [-1521391911] = 'cs4_03_decal_6', + [-299370363] = 'cs4_03_decal_7', + [-634786833] = 'cs4_03_dishes', + [-246639520] = 'cs4_03_emissive_lod', + [706444570] = 'cs4_03_emissive', + [1738925471] = 'cs4_03_fastfood_d', + [1531984373] = 'cs4_03_fastfood', + [630722592] = 'cs4_03_garage_a', + [-88622512] = 'cs4_03_garage_d', + [-915147649] = 'cs4_03_garage', + [-1622219690] = 'cs4_03_gassign', + [-856346311] = 'cs4_03_glue_02', + [-662910908] = 'cs4_03_glue_04', + [-1086155312] = 'cs4_03_glue_05', + [-278043392] = 'cs4_03_hardware_a', + [-1164488780] = 'cs4_03_hardware', + [-1734720672] = 'cs4_03_hoarder', + [518072783] = 'cs4_03_hut01', + [67011480] = 'cs4_03_hut1_g', + [-1593249204] = 'cs4_03_ladder_obj', + [-879167424] = 'cs4_03_land04_a', + [977744106] = 'cs4_03_land04_a1', + [-2006191605] = 'cs4_03_land04_g', + [978316165] = 'cs4_03_land05_d', + [-781442579] = 'cs4_03_land05_d2', + [-233459147] = 'cs4_03_land066_a', + [338839933] = 'cs4_03_landtubes', + [-1941914915] = 'cs4_03_liquor_sign', + [-976318556] = 'cs4_03_mainbuilding3_a', + [2119193404] = 'cs4_03_market_a', + [-1745975688] = 'cs4_03_market_d', + [1235249629] = 'cs4_03_market_l', + [-681384395] = 'cs4_03_market', + [-579018438] = 'cs4_03_market1_a', + [-1040045387] = 'cs4_03_market1_d', + [339826911] = 'cs4_03_market1', + [-985735279] = 'cs4_03_marketground_a', + [1084520462] = 'cs4_03_marketground', + [905914370] = 'cs4_03_parking_a', + [881291775] = 'cs4_03_pst', + [22612995] = 'cs4_03_shack_a', + [915050694] = 'cs4_03_shack', + [458900499] = 'cs4_03_shack-01_fizz', + [1962014499] = 'cs4_03_shack-02_fizz', + [308957495] = 'cs4_03_tower', + [868964314] = 'cs4_03_trail_7', + [-1686159662] = 'cs4_03_trailer_a', + [1092153397] = 'cs4_03_trailer', + [-1330155329] = 'cs4_03_warehouse_a', + [166372136] = 'cs4_03_warehouse_d', + [167430596] = 'cs4_03_warehouse', + [1813001768] = 'cs4_03_weeds_a1', + [1640438655] = 'cs4_03_yucca_sign', + [1647368380] = 'cs4_03q_trail_7o', + [546574527] = 'cs4_04_abanclub_details', + [900850041] = 'cs4_04_abanclub_details2', + [669664746] = 'cs4_04_abanclub_details3', + [333155681] = 'cs4_04_abanclub', + [157506956] = 'cs4_04_barrier', + [1766287396] = 'cs4_04_bb_hd_2', + [1501238951] = 'cs4_04_bb_hd', + [-221294210] = 'cs4_04_beach_1', + [-1618957602] = 'cs4_04_beach_2', + [-1926592974] = 'cs4_04_beach_3', + [-1143708795] = 'cs4_04_beach_4', + [947281099] = 'cs4_04_beach_5', + [937843627] = 'cs4_04_beach_6', + [-450906593] = 'cs4_04_beach_7', + [1746043424] = 'cs4_04_decal_01', + [-1763909708] = 'cs4_04_decal_02', + [-611915509] = 'cs4_04_decal_03', + [-361232659] = 'cs4_04_decal_04', + [-1088802766] = 'cs4_04_decal_05', + [-1912855471] = 'cs4_04_decal_06_lod', + [-848933686] = 'cs4_04_decal_06', + [-1979318853] = 'cs4_04_decal_07_lod', + [851187576] = 'cs4_04_decal_07', + [196822718] = 'cs4_04_decal_08_lod', + [1089188823] = 'cs4_04_decal_08', + [813409866] = 'cs4_04_decal_09_lod', + [369843731] = 'cs4_04_decal_09', + [-154069085] = 'cs4_04_decal_10', + [-776942237] = 'cs4_04_decal_11', + [-2074660171] = 'cs4_04_decal_12', + [-1374091724] = 'cs4_04_decal_13', + [-543200960] = 'cs4_04_decal_14', + [-1698996355] = 'cs4_04_decal_15', + [754680831] = 'cs4_04_decal_16', + [1997412387] = 'cs4_04_decal_17', + [-1454900074] = 'cs4_04_decal_18', + [74953460] = 'cs4_04_decal_19', + [-1155584619] = 'cs4_04_decal_20_lod', + [-1866487267] = 'cs4_04_decal_20', + [-1564559966] = 'cs4_04_decal_202', + [1046865622] = 'cs4_04_desert_house_004_d', + [940589876] = 'cs4_04_desert_house', + [-1460841362] = 'cs4_04_details', + [1541412200] = 'cs4_04_details02', + [1268134213] = 'cs4_04_emissive_lod', + [1360076409] = 'cs4_04_emissive', + [1618010572] = 'cs4_04_extras_lod', + [502651650] = 'cs4_04_extras', + [1176522171] = 'cs4_04_fish_01', + [808395225] = 'cs4_04_fish_02', + [1354752989] = 'cs4_04_frame_01', + [-1107035351] = 'cs4_04_frame_01b_lod', + [-1959413940] = 'cs4_04_frame_01b', + [-1901248961] = 'cs4_04_frame_01d', + [-896355159] = 'cs4_04_frame_02c', + [1944758834] = 'cs4_04_frame_03', + [-1425490555] = 'cs4_04_frame_03a_lod', + [-872204626] = 'cs4_04_frame_03a', + [-756750319] = 'cs4_04_frame_04', + [-1725099604] = 'cs4_04_house_obj', + [839480373] = 'cs4_04_marinasign', + [1352304157] = 'cs4_04_mebar', + [-652432226] = 'cs4_04_props_lod', + [567620726] = 'cs4_04_refprox_07', + [-719033438] = 'cs4_04_roks', + [-1967034464] = 'cs4_04_struct', + [1925638435] = 'cs4_04_stuntj', + [-1250529391] = 'cs4_04_tank', + [1173717752] = 'cs4_04_tank02', + [-1764214667] = 'cs4_05_airfd_4grs', + [849090017] = 'cs4_05_airfld_1', + [1326796499] = 'cs4_05_airfld_2', + [1479303425] = 'cs4_05_airfld_3', + [1800669012] = 'cs4_05_airfld_4', + [826336055] = 'cs4_05_airfld3da1', + [1420678865] = 'cs4_05_airfld4da02', + [-1179545801] = 'cs4_05_airsign_railings', + [1232526059] = 'cs4_05_airsign', + [537628278] = 'cs4_05_buswreck', + [410834954] = 'cs4_05_chopshop001_d', + [-201865149] = 'cs4_05_chopshop001', + [59243781] = 'cs4_05_con_tower_rail', + [294885011] = 'cs4_05_con_tower', + [-1114960848] = 'cs4_05_emissive_lod', + [-87132795] = 'cs4_05_emissive', + [163235331] = 'cs4_05_hanger01', + [-1503953480] = 'cs4_05_htrail1', + [-802237488] = 'cs4_05_sdw_decal', + [1182487712] = 'cs4_05_signs_pole', + [214623845] = 'cs4_05_signs', + [-1617227128] = 'cs4_05_tower_dets', + [1658865961] = 'cs4_05_weeds_01', + [949054987] = 'cs4_06_bigh_rails', + [-1225896531] = 'cs4_06_bighouse_decal', + [1327405660] = 'cs4_06_bighouse', + [-1954828839] = 'cs4_06_build_014', + [-1192134816] = 'cs4_06_build_2o001', + [-1882478699] = 'cs4_06_build_5', + [-1787319301] = 'cs4_06_build_5o', + [-1640414096] = 'cs4_06_build_6', + [-1337562998] = 'cs4_06_build_7', + [-1265120115] = 'cs4_06_build_8_rails1', + [-496195530] = 'cs4_06_build_8_rails2', + [1118834015] = 'cs4_06_build_8', + [-1923651925] = 'cs4_06_build_8a_rails2_lod', + [1771351428] = 'cs4_06_cover012', + [-373549657] = 'cs4_06_cover10a', + [5545214] = 'cs4_06_cover11_o', + [741295135] = 'cs4_06_cover11', + [-1171698966] = 'cs4_06_cover2', + [2103830495] = 'cs4_06_cover2b', + [-1763566885] = 'cs4_06_cover2o', + [-1055902008] = 'cs4_06_cover3_2', + [-1360555401] = 'cs4_06_cover3_3', + [1601279352] = 'cs4_06_cover3', + [1468044381] = 'cs4_06_cover3o', + [106754863] = 'cs4_06_cover4o', + [101249959] = 'cs4_06_cover5o', + [-1157148538] = 'cs4_06_cover6a_trls', + [251135581] = 'cs4_06_cover6a', + [-449695022] = 'cs4_06_cover6b', + [266862721] = 'cs4_06_cover7o', + [1885225560] = 'cs4_06_cover8o', + [376901150] = 'cs4_06_cover9a_rails', + [-1054841786] = 'cs4_06_cover9a', + [-1293760565] = 'cs4_06_cover9b', + [49931820] = 'cs4_06_coverwall', + [-1790671127] = 'cs4_06_coverwall22', + [-1229407305] = 'cs4_06_croop001', + [1951540984] = 'cs4_06_decal_terrain', + [2059298290] = 'cs4_06_decal004', + [1019449168] = 'cs4_06_decal03', + [1971119538] = 'cs4_06_detail01', + [605420624] = 'cs4_06_details01', + [-1475521149] = 'cs4_06_emm_00_lod', + [-516996438] = 'cs4_06_emm_00', + [1671163798] = 'cs4_06_emm_01_lod', + [-143888604] = 'cs4_06_emm_01', + [1648312718] = 'cs4_06_emm_02_lod', + [95095713] = 'cs4_06_emm_02', + [-681424859] = 'cs4_06_emm_03_lod', + [434844705] = 'cs4_06_emm_03', + [731847875] = 'cs4_06_emm_04_lod', + [-1176767488] = 'cs4_06_emm_04', + [975684304] = 'cs4_06_emm_05_lod', + [-929066617] = 'cs4_06_emm_05', + [-921696780] = 'cs4_06_emm_06_lod', + [-564019957] = 'cs4_06_emm_06', + [-72081668] = 'cs4_06_glue', + [-1836844716] = 'cs4_06_glue1', + [-2068423239] = 'cs4_06_glue2', + [-1379920424] = 'cs4_06_land01', + [-1898625437] = 'cs4_06_land01a', + [344744815] = 'cs4_06_land02', + [809112109] = 'cs4_06_land03_d', + [175066933] = 'cs4_06_land03', + [347336422] = 'cs4_06_land04_d', + [-556042230] = 'cs4_06_land04', + [1956291466] = 'cs4_06_land05', + [-1957971469] = 'cs4_06_lighting01', + [1905821325] = 'cs4_06_lighting02', + [-1612094674] = 'cs4_06_lighting03', + [-1775546446] = 'cs4_06_lighting04', + [-1200384958] = 'cs4_06_lighting05', + [-422678281] = 'cs4_06_lighting06', + [-399622707] = 'cs4_06_meth_rails', + [11380093] = 'cs4_06_meth_slod', + [-454659988] = 'cs4_06_meth01c', + [1406229301] = 'cs4_06_methlbovly', + [521954756] = 'cs4_06_motel_01', + [139737140] = 'cs4_06_motel_02', + [-115296330] = 'cs4_06_motel_crprk', + [-2040856448] = 'cs4_06_motelbase_rails', + [-1739235580] = 'cs4_06_motelbase', + [-1509186116] = 'cs4_06_motelbase008', + [-134329928] = 'cs4_06_motelbase009', + [1422157140] = 'cs4_06_motelbase2', + [-1955206203] = 'cs4_06_motelcvr1', + [1828584758] = 'cs4_06_moteldetail002', + [-1084244638] = 'cs4_06_moteldetail01', + [-631839943] = 'cs4_06_motelroom01', + [-862107706] = 'cs4_06_motelroom02', + [925703396] = 'cs4_06_motelroom03', + [563868102] = 'cs4_06_motelroom04', + [-36001212] = 'cs4_06_motelroom05', + [-264892677] = 'cs4_06_motelroom06', + [1585547869] = 'cs4_06_motl_ovly00_lod', + [-594528334] = 'cs4_06_motl_ovly00', + [-1236341968] = 'cs4_06_motl_ovly01', + [941059775] = 'cs4_06_motl_ovly02', + [566837795] = 'cs4_06_motl_ovly03', + [326739332] = 'cs4_06_motl_ovly04', + [221550842] = 'cs4_06_motl_ovly05', + [1858657317] = 'cs4_06_motl_ovly06', + [-1384070146] = 'cs4_06_neonsign_lod', + [1655856215] = 'cs4_06_neonsign', + [-1414653859] = 'cs4_06_pave', + [-523157973] = 'cs4_06_signageb', + [-1571966314] = 'cs4_06_smallhouse', + [-1578582290] = 'cs4_06_water', + [-665116549] = 'cs4_06_weed', + [499855988] = 'cs4_06_weeds', + [-619301697] = 'cs4_06_weeds2', + [-331622646] = 'cs4_06_weeds3', + [-1568554089] = 'cs4_06_weeds4', + [-1681021795] = 'cs4_06_wreckage_brand', + [-890490064] = 'cs4_07_build_1', + [-1100244853] = 'cs4_07_build_10', + [-1597382940] = 'cs4_07_build_2', + [-171241723] = 'cs4_07_build_2d', + [1214983804] = 'cs4_07_build_3', + [618162007] = 'cs4_07_build_5', + [2007572951] = 'cs4_07_build_5o', + [-634924553] = 'cs4_07_build_7', + [-337545878] = 'cs4_07_build_8', + [-691355773] = 'cs4_07_build_coop', + [-1670942330] = 'cs4_07_car1', + [-1844922225] = 'cs4_07_details', + [-283402324] = 'cs4_07_glue_01', + [-666275320] = 'cs4_07_glue_02', + [-875128755] = 'cs4_07_gun1', + [-2079213241] = 'cs4_07_gun1o001', + [-1762248720] = 'cs4_07_gunsign', + [-1727725688] = 'cs4_07_land01', + [-1820265000] = 'cs4_07_land01o', + [20118310] = 'cs4_07_land01o002_lod', + [-1780731512] = 'cs4_07_land01o2', + [-1349451993] = 'cs4_07_land01olod', + [-1519602195] = 'cs4_07_land2', + [1671491486] = 'cs4_07_land2o_b_lod', + [-60050272] = 'cs4_07_land2o_lod', + [-1388927589] = 'cs4_07_land2o', + [-1766352765] = 'cs4_07_land3', + [-864414267] = 'cs4_07_n_emm_lod', + [-1008130700] = 'cs4_07_n_emm', + [596540879] = 'cs4_07_n_emm01_lod', + [43777778] = 'cs4_07_n_emm01', + [-2092672124] = 'cs4_07_n_emm02_lod', + [-1932192922] = 'cs4_07_n_emm02', + [352952096] = 'cs4_07_n_emm03_lod', + [-1628522599] = 'cs4_07_n_emm03', + [-1143958209] = 'cs4_07_officedetails001', + [989254138] = 'cs4_07_parking', + [-1937439804] = 'cs4_07_planks', + [604055968] = 'cs4_07_q_emm_lod', + [643683684] = 'cs4_07_q_emm', + [-482162080] = 'cs4_07_q2_emm_lod', + [-919455991] = 'cs4_07_q2_emm', + [1024301851] = 'cs4_07_q3_emm_lod', + [-1908729225] = 'cs4_07_q3_emm', + [-1082798138] = 'cs4_07_q4_emm_lod', + [-997006093] = 'cs4_07_q4_emm', + [-244722705] = 'cs4_07_q6_emm_lod', + [128699884] = 'cs4_07_q6_emm', + [16472247] = 'cs4_07_q6_emm01_lod', + [696257464] = 'cs4_07_q6_emm01', + [505284944] = 'cs4_07_q6_emm02_lod', + [-1893083382] = 'cs4_07_q6_emm02', + [1557028451] = 'cs4_07_q6_emm03_lod', + [2096312989] = 'cs4_07_q6_emm03', + [-229603276] = 'cs4_07_railings', + [-832987823] = 'cs4_07_railings2', + [-1136264918] = 'cs4_07_railings3', + [-996598338] = 'cs4_07_rails_lod', + [1939687127] = 'cs4_07_rocks1', + [-1487950285] = 'cs4_07_rocks2', + [1531924256] = 'cs4_07_salesigns', + [1638670722] = 'cs4_07_shop001', + [448880274] = 'cs4_07_signs3', + [533194907] = 'cs4_07_signs4', + [242075111] = 'cs4_07_signs5', + [-1720895447] = 'cs4_07_signsnew3', + [576544876] = 'cs4_07_statc12', + [182212749] = 'cs4_07_statc12a', + [835331676] = 'cs4_07_statc12o', + [755920184] = 'cs4_07_trail_011', + [1322758346] = 'cs4_07_trail_012', + [1934199637] = 'cs4_07_trail_3', + [-214234306] = 'cs4_07_trail_4', + [628223915] = 'cs4_07_trail_5', + [576641169] = 'cs4_07_trail_5o', + [-944819169] = 'cs4_07_trail_6', + [-2019580243] = 'cs4_07_trail_6o', + [-1175381853] = 'cs4_07_trail_7', + [-1854621449] = 'cs4_07_trail_7o', + [-426364848] = 'cs4_07_weed_01', + [-655518465] = 'cs4_07_weed_02', + [693652912] = 'cs4_08_4sale_sign', + [-541595634] = 'cs4_08_detailsb', + [1912376473] = 'cs4_08_detailsc', + [633081791] = 'cs4_08_emm_00_lod', + [-146868904] = 'cs4_08_emm_00', + [-2031805772] = 'cs4_08_emm_01_lod', + [1108183800] = 'cs4_08_emm_01', + [536485506] = 'cs4_08_emm_02_lod', + [1402220037] = 'cs4_08_emm_02', + [-1742476675] = 'cs4_08_emm_03_lod', + [-1637104717] = 'cs4_08_emm_03', + [-1611949681] = 'cs4_08_emm_04_lod', + [-1339463890] = 'cs4_08_emm_04', + [230938297] = 'cs4_08_emm_05_lod', + [1527823602] = 'cs4_08_emm_05', + [-1046214587] = 'cs4_08_emm_06_lod', + [1221007455] = 'cs4_08_emm_06', + [1736475688] = 'cs4_08_emm_07_lod', + [-1229654983] = 'cs4_08_emm_07', + [2099608430] = 'cs4_08_emm_08_lod', + [-1526574892] = 'cs4_08_emm_08', + [-225723884] = 'cs4_08_glue', + [-716227880] = 'cs4_08_land_1', + [-426582689] = 'cs4_08_land_2', + [-1587162358] = 'cs4_08_land_6', + [1143759535] = 'cs4_08_land_6o', + [-143261963] = 'cs4_08_land_o', + [1420727282] = 'cs4_08_q_stairs', + [-407220476] = 'cs4_08_q', + [-1354015243] = 'cs4_08_q2', + [-1232879585] = 'cs4_08_rocks_2', + [-2005729755] = 'cs4_08_rocks_2a', + [-1279514846] = 'cs4_08_rocks', + [1101906367] = 'cs4_08_tr2', + [1910529165] = 'cs4_08_traielrs3_o001', + [1316272175] = 'cs4_08_trailer2_o', + [-383205632] = 'cs4_08_trailers005', + [1822262678] = 'cs4_08_trailers1_o', + [1296063215] = 'cs4_08_trailers1_railing', + [-424352664] = 'cs4_08_trailers1_rls', + [-51083388] = 'cs4_08_trailers1_rls2', + [-1080369913] = 'cs4_08_trailers1', + [-144454500] = 'cs4_08_trailers2', + [714617596] = 'cs4_08_trailers3', + [1546087972] = 'cs4_08_trailers4_o', + [460494001] = 'cs4_08_trailers4', + [1548062940] = 'cs4_08_trailers4b', + [1269923513] = 'cs4_08_trailers4shed', + [228500648] = 'cs4_08_trailers5_o', + [-437361003] = 'cs4_08_trailers5_rls', + [1293809671] = 'cs4_08_trailers5', + [-555099304] = 'cs4_08_trailers6_2rl', + [1706939242] = 'cs4_08_trailers6_d', + [246101585] = 'cs4_08_trailers6_rl', + [-1096805318] = 'cs4_08_trailers6_stairs', + [1661281237] = 'cs4_08_trailers6', + [587173005] = 'cs4_08_trailers66_rls', + [-1857641542] = 'cs4_08_trailers7_o', + [2018075251] = 'cs4_08_trailers8_o', + [-356307181] = 'cs4_08_trailers8_rl', + [-2088999741] = 'cs4_08_trailers8', + [1632562065] = 'cs4_08_trailers9_o', + [2025934669] = 'cs4_08_trailers9', + [1750752668] = 'cs4_08_weed', + [-1953112047] = 'cs4_09_armco_02', + [-422156310] = 'cs4_09_bdg1', + [-1316707390] = 'cs4_09_beams', + [803668445] = 'cs4_09_bilbrd_01', + [-836943093] = 'cs4_09_billbd_01_2', + [651392374] = 'cs4_09_billbd_01_d', + [691125563] = 'cs4_09_billbd_01', + [-1544761399] = 'cs4_09_build02', + [2085930498] = 'cs4_09_build02o', + [-963615993] = 'cs4_09_build11_rails', + [-755158719] = 'cs4_09_build11', + [-1674329694] = 'cs4_09_building002', + [-1068555919] = 'cs4_09_cover02', + [782793702] = 'cs4_09_cover2o', + [-1871382919] = 'cs4_09_decal001_lod', + [-1101997518] = 'cs4_09_decal001', + [-808455438] = 'cs4_09_em_00_lod', + [2021723169] = 'cs4_09_em_00', + [919117607] = 'cs4_09_em_01_lod', + [-2009158756] = 'cs4_09_em_01', + [-263371131] = 'cs4_09_em_02_lod', + [-722975506] = 'cs4_09_em_02', + [736903811] = 'cs4_09_em_03_lod', + [-473242957] = 'cs4_09_em_03', + [1250864016] = 'cs4_09_firestation_g001', + [1926654500] = 'cs4_09_firestation001', + [1316094335] = 'cs4_09_glue_01', + [-2077725461] = 'cs4_09_glue_02', + [1985583924] = 'cs4_09_land007', + [2064426138] = 'cs4_09_land008', + [-200429248] = 'cs4_09_land01_g001_lod', + [1933771109] = 'cs4_09_land01_g001', + [1706042862] = 'cs4_09_land02_d_lod', + [-791533649] = 'cs4_09_land02_d', + [-1195836996] = 'cs4_09_land03', + [2104312887] = 'cs4_09_land04_dec', + [-280002233] = 'cs4_09_land04_dec001_lod', + [1928195623] = 'cs4_09_land04', + [140880483] = 'cs4_09_land05_blend', + [1570292605] = 'cs4_09_land05', + [1431139076] = 'cs4_09_land05o_lod', + [-3901208] = 'cs4_09_land05o', + [293612361] = 'cs4_09_land06', + [-1448148507] = 'cs4_09_rails_00', + [1448341236] = 'cs4_09_railsa_lod', + [524606230] = 'cs4_09_railsa', + [1043809244] = 'cs4_09_rr_01', + [874524590] = 'cs4_09_rr_02', + [-1997524836] = 'cs4_09_sandy_shores_sign2', + [250155808] = 'cs4_09_sign001', + [803918835] = 'cs4_09_trailer_a_g', + [-682656898] = 'cs4_09_trailer_a', + [-1926460091] = 'cs4_10_247_emissive_dummy', + [507333880] = 'cs4_10_247_ovr001', + [421396427] = 'cs4_10_247', + [-1763290008] = 'cs4_10_ant_details', + [292776155] = 'cs4_10_ant_details01', + [-544406257] = 'cs4_10_ant_details02', + [40219222] = 'cs4_10_antenna_d', + [-1904424043] = 'cs4_10_antenna', + [1962837466] = 'cs4_10_bar_details01', + [-894590003] = 'cs4_10_bar', + [-906205556] = 'cs4_10_barbers_e_dummy', + [-1712761168] = 'cs4_10_decal_gas_station001', + [1353697175] = 'cs4_10_decal_gas_terrain', + [-1301818654] = 'cs4_10_decal_medc1', + [1592611855] = 'cs4_10_decal_medterc1', + [1003687339] = 'cs4_10_decal_store', + [-229519445] = 'cs4_10_decals_builds02', + [-503624072] = 'cs4_10_decals_trailer003', + [126573100] = 'cs4_10_decals_trailer02', + [434118530] = 'cs4_10_decaltrailer', + [-442088732] = 'cs4_10_detail_sign', + [487465074] = 'cs4_10_details_block01', + [-364065174] = 'cs4_10_details', + [1111005048] = 'cs4_10_detailspark', + [618345108] = 'cs4_10_dinner', + [2083220407] = 'cs4_10_dinnerint', + [-1832726235] = 'cs4_10_em_01_lod', + [-1595865086] = 'cs4_10_em_01', + [-598404420] = 'cs4_10_em_011', + [-100116762] = 'cs4_10_em_02_lod', + [2134379593] = 'cs4_10_em_02_lod001', + [-130632020] = 'cs4_10_em_02', + [626710366] = 'cs4_10_em_03_lod', + [114840559] = 'cs4_10_em_03', + [1302975065] = 'cs4_10_em_05_lod', + [1569915223] = 'cs4_10_em_05', + [-1615986685] = 'cs4_10_em_06_lod', + [-1290949541] = 'cs4_10_em_06', + [-1184759631] = 'cs4_10_em_07b_lod', + [2054150691] = 'cs4_10_em_07b', + [1878595764] = 'cs4_10_em_10_lod', + [97506634] = 'cs4_10_em_10', + [-1845934937] = 'cs4_10_em02_lod', + [1978399671] = 'cs4_10_em02', + [81177474] = 'cs4_10_emissign_lodn', + [-1317882769] = 'cs4_10_emissign', + [460093487] = 'cs4_10_emissive_lod', + [-1426342691] = 'cs4_10_emissive', + [631805804] = 'cs4_10_garage_01', + [884001511] = 'cs4_10_garage', + [-683605629] = 'cs4_10_garage01', + [-174113217] = 'cs4_10_garage02', + [1866722145] = 'cs4_10_gas_station', + [2118053318] = 'cs4_10_glue_01a', + [-98998563] = 'cs4_10_glue_02a', + [-1214984691] = 'cs4_10_glue_03a', + [499980572] = 'cs4_10_glue_04a', + [1922154868] = 'cs4_10_glue_05a', + [-1360939148] = 'cs4_10_house01', + [1275261896] = 'cs4_10_house2', + [500504429] = 'cs4_10_house3', + [796408499] = 'cs4_10_house4', + [-2096666124] = 'cs4_10_medicalc', + [-2060945936] = 'cs4_10_railings', + [637746795] = 'cs4_10_railings2', + [-469509655] = 'cs4_10_rails', + [-582656997] = 'cs4_10_ralings2', + [-1637223080] = 'cs4_10_sh_rls00', + [1269774743] = 'cs4_10_sh_rls022', + [1459807879] = 'cs4_10_sh_rls03', + [1375660754] = 'cs4_10_sheriff_e_dummy', + [1068386828] = 'cs4_10_sheriff_e_lod', + [-1287420176] = 'cs4_10_sheriff_st_rails2lod', + [2029920098] = 'cs4_10_sheriff_station', + [-1052354530] = 'cs4_10_sheriff_wind_lod', + [-1831519059] = 'cs4_10_sheriff_windows', + [-1580159359] = 'cs4_10_sign_rest', + [-683596539] = 'cs4_10_store', + [-641387932] = 'cs4_10_tattoo', + [1649689118] = 'cs4_10_terrain_gas', + [397330660] = 'cs4_10_terrain_medic_ovly', + [8672541] = 'cs4_10_terrain_medic', + [1975418828] = 'cs4_10_terrain_sheriff', + [1028715031] = 'cs4_10_terrain01', + [876797947] = 'cs4_10_terrain02', + [-283889609] = 'cs4_10_trailer_em_b_win', + [953468486] = 'cs4_10_trailer_em', + [-2062363770] = 'cs4_10_trailer_em001_lod_b_win', + [-719087221] = 'cs4_10_trailer_em001_lod', + [-969606429] = 'cs4_10_trailer002', + [-2105809433] = 'cs4_10_trailer003b_b_win', + [-10123193] = 'cs4_10_trailer003b_details', + [2071524813] = 'cs4_10_trailer003b_rails', + [-598965564] = 'cs4_10_trailer003b_windows', + [-923434404] = 'cs4_10_trailer003b', + [962792103] = 'cs4_10_traileranim', + [-57654255] = 'cs4_10_trailertrash_dummy', + [-935292684] = 'cs4_10_trailertrash_lod', + [1125350320] = 'cs4_10_trevorfake_hd', + [-2065683499] = 'cs4_10_trevweeds', + [-1093344540] = 'cs4_10_trvrtlr_colswap', + [-200166522] = 'cs4_10_v_38_barbers_lod', + [2103568138] = 'cs4_10_v_sheriff_milo_lod', + [256868763] = 'cs4_11_armc_02', + [1960961523] = 'cs4_11_awning', + [840284527] = 'cs4_11_barn02', + [1053887546] = 'cs4_11_barrier01', + [-791160926] = 'cs4_11_billb_uniteas', + [-934076442] = 'cs4_11_bld01sign', + [1729204490] = 'cs4_11_brr_002', + [635138642] = 'cs4_11_brrier_01', + [606768514] = 'cs4_11_brrier4', + [-2139733588] = 'cs4_11_build01_d', + [-2137045097] = 'cs4_11_build01', + [-2064072192] = 'cs4_11_build02_d', + [1170821612] = 'cs4_11_build02', + [1561087687] = 'cs4_11_build03_g', + [1007828606] = 'cs4_11_build03', + [1821444465] = 'cs4_11_cvana', + [-439027499] = 'cs4_11_cvn_r', + [2035256974] = 'cs4_11_emis1_lod', + [877808318] = 'cs4_11_emis1', + [1121150912] = 'cs4_11_emis2', + [-1181602087] = 'cs4_11_emis3_lod', + [756300866] = 'cs4_11_emis3', + [-2147063227] = 'cs4_11_emismr_lod', + [180878965] = 'cs4_11_emismr', + [1958096763] = 'cs4_11_emismr2_lod', + [-2085338380] = 'cs4_11_emismr2', + [395534035] = 'cs4_11_ems2_lod', + [551923123] = 'cs4_11_glue_01', + [-2084965542] = 'cs4_11_glue_03', + [1374432709] = 'cs4_11_hrdstn01', + [1606011232] = 'cs4_11_hrdstn02', + [-1532036283] = 'cs4_11_jt_sgn1', + [-1022765374] = 'cs4_11_jtnp_sgn', + [-997376034] = 'cs4_11_land_01', + [1781467939] = 'cs4_11_land_02', + [2088546238] = 'cs4_11_land_03', + [-975289724] = 'cs4_11_land_04', + [-651138776] = 'cs4_11_land_05', + [1131003289] = 'cs4_11_land_06', + [1155317887] = 'cs4_11_land_07', + [1512470623] = 'cs4_11_nr_00', + [-1254955555] = 'cs4_11_overlooka', + [1520350287] = 'cs4_11_overlookasign', + [-1739081280] = 'cs4_11_ovr_rails', + [961320796] = 'cs4_11_props_bulbw018', + [1795881688] = 'cs4_11_props_bulbw019', + [898536430] = 'cs4_11_props_cm93190_hvstd', + [-1630434222] = 'cs4_11_props_e_wire013', + [-1935972378] = 'cs4_11_props_e_wire014', + [1964488927] = 'cs4_11_props_e_wire016', + [-235949439] = 'cs4_11_props_e_wire017', + [-475720212] = 'cs4_11_props_e_wire018', + [-1102132404] = 'cs4_11_props_e_wire019', + [1126778499] = 'cs4_11_props_e_wire020', + [1441229823] = 'cs4_11_props_e_wire021', + [1713638536] = 'cs4_11_props_e_wire022', + [-345827588] = 'cs4_11_props_e_wire024', + [-1758398789] = 'cs4_11_props_mountwire006', + [1237801941] = 'cs4_11_props_mountwire007', + [-1051478364] = 'cs4_11_props_mountwire012', + [-417496517] = 'cs4_11_props_mountwire013', + [1946273337] = 'cs4_11_props_mountwire01c001', + [-1220324263] = 'cs4_11_props_mountwire01d001', + [664587029] = 'cs4_11_props_mountwire01e001', + [-1924182156] = 'cs4_11_props_mountwire020', + [730337209] = 'cs4_11_props_propsmountwire019', + [-960040041] = 'cs4_11_props_sal_emissive', + [1487710136] = 'cs4_11_props_sallightwire', + [2145065583] = 'cs4_11_propsmountwire01b001', + [1776355738] = 'cs4_11_pst', + [1201231170] = 'cs4_11_rc_rails', + [914050093] = 'cs4_11_rcplantc001', + [-898993166] = 'cs4_11_retwall02', + [-1450945189] = 'cs4_11_sal_cvana_d', + [17728622] = 'cs4_11_sal_cvana_g', + [200940302] = 'cs4_11_sal_cvana', + [-292637873] = 'cs4_11_saljunk_01', + [539222631] = 'cs4_11_salm_drt_g', + [599410811] = 'cs4_11_salm_drt_g1', + [1455474672] = 'cs4_11_salm_drt_g1lod', + [905374964] = 'cs4_11_salm_drt_g2', + [-168918799] = 'cs4_11_salm_drt_g2lod', + [1957201841] = 'cs4_11_salm_drt_glod', + [655497131] = 'cs4_11_salship', + [-2132784043] = 'cs4_11_salv_barrier', + [1578836216] = 'cs4_11_salvationm', + [-968427613] = 'cs4_11_salvtruck_g', + [251669336] = 'cs4_11_salvtruck', + [-1327211925] = 'cs4_11_trailer2', + [-548372639] = 'cs4_11_trailer2d', + [-857089250] = 'cs4_11_truckstop_dec', + [1679893977] = 'cs4_11_truckstop_sign', + [111012742] = 'cs4_11_truckstop', + [1604762609] = 'cs4_11_weed_003', + [374753611] = 'cs4_11_weed_01', + [1177626880] = 'cs4_11_weed_02', + [-247023604] = 'cs4_11_weeds_002', + [-474211081] = 'cs4_11_weeds_003', + [-695438114] = 'cs4_11_weeds_01', + [1428818914] = 'cs4_12_armcoend_01', + [-923503655] = 'cs4_12_armcoend_05', + [483136388] = 'cs4_12_bb1', + [714026762] = 'cs4_12_bb2', + [-2142086513] = 'cs4_12_bb3', + [-1911785981] = 'cs4_12_bb4', + [1733816625] = 'cs4_12_billbd_01', + [480598989] = 'cs4_12_billbd_02', + [1304706570] = 'cs4_12_billbd_03', + [-281509644] = 'cs4_12_billbd_04', + [1969168577] = 'cs4_12_cncbrdg01', + [-1222503825] = 'cs4_12_erotub_01', + [-938429364] = 'cs4_12_erotub_02', + [450845160] = 'cs4_12_erotub_03', + [-1346337864] = 'cs4_12_erotub_04', + [-1977567111] = 'cs4_12_erotub_06', + [2018940133] = 'cs4_12_erotub_07', + [1564496005] = 'cs4_12_erotub_mr2', + [307856661] = 'cs4_12_glue_03', + [610085148] = 'cs4_12_glue_04', + [1718241301] = 'cs4_12_land_01_g', + [1432713675] = 'cs4_12_land_01', + [-1234698005] = 'cs4_12_land_02_1g', + [-1976612702] = 'cs4_12_land_02_g', + [1779409707] = 'cs4_12_land_02', + [848454429] = 'cs4_12_land_02b_g', + [-525839697] = 'cs4_12_land_03_d', + [-338418763] = 'cs4_12_nd_wall_04', + [427654919] = 'cs4_12_nd_wall_05', + [1061505690] = 'cs4_12_nd_wall_06', + [-366238015] = 'cs4_12_retainwall01', + [-652606306] = 'cs4_12_retainwall04', + [474462772] = 'cs4_12_rock_002', + [1822304559] = 'cs4_12_rock_01b001', + [731808700] = 'cs4_12_tt_watert_ovr', + [-816139547] = 'cs4_12_tt_watert', + [1152072959] = 'cs4_12_tt_watrl01', + [1732411953] = 'cs4_12_tt_watrl02', + [1696611413] = 'cs4_12_watert_dets', + [1474872810] = 'cs4_12_weed_01', + [1241164302] = 'cs4_12_weed_02', + [342146787] = 'cs4_12_weed_03', + [951711666] = 'cs4_13_alphasign', + [1497213760] = 'cs4_13_animal_ark_sign_b', + [2142679702] = 'cs4_13_animal_ark_sign_em', + [-1842049283] = 'cs4_13_animal_ark_sign', + [659838201] = 'cs4_13_ark_skip', + [1875981204] = 'cs4_13_armco00', + [1511262234] = 'cs4_13_armco01', + [1401191167] = 'cs4_13_armco02', + [1102993267] = 'cs4_13_armco03', + [-364140397] = 'cs4_13_armco04', + [-669940705] = 'cs4_13_armco05', + [-773785670] = 'cs4_13_armco06', + [629087993] = 'cs4_13_armco08', + [1388902796] = 'cs4_13_armco09', + [99377332] = 'cs4_13_armco11', + [-1675391712] = 'cs4_13_armco12', + [-1438439073] = 'cs4_13_armco13', + [1086281305] = 'cs4_13_armco14', + [-1342523022] = 'cs4_13_bdh_00007_d', + [856559177] = 'cs4_13_bdh_01_d', + [-654310387] = 'cs4_13_bdh_01', + [385133393] = 'cs4_13_bdh_02_d', + [198142379] = 'cs4_13_bdh_02', + [122751284] = 'cs4_13_bdh_03_d', + [1733697723] = 'cs4_13_bdh_03', + [357912657] = 'cs4_13_bdh_04_d', + [1476690456] = 'cs4_13_bdh_04', + [1818638926] = 'cs4_13_bdh_06_d', + [1421015925] = 'cs4_13_bdh_06', + [-1348095659] = 'cs4_13_bdh_07', + [1048186323] = 'cs4_13_bdh_07b', + [-1330992421] = 'cs4_13_bilbrd_01', + [841546978] = 'cs4_13_billbd_005', + [545159008] = 'cs4_13_billbd_01', + [-938588547] = 'cs4_13_billbd_02', + [-1238129976] = 'cs4_13_billbd_03', + [-2128004940] = 'cs4_13_billbd_04', + [-1884840887] = 'cs4_13_build_01_b', + [-1271798087] = 'cs4_13_build_01_b001', + [302177697] = 'cs4_13_build_01_fiz', + [-355411821] = 'cs4_13_build_01', + [-806182185] = 'cs4_13_build_02', + [-683466180] = 'cs4_13_build_03_g', + [972727015] = 'cs4_13_build_conv001', + [854987998] = 'cs4_13_build_conv002', + [554332427] = 'cs4_13_build_conv003', + [3288923] = 'cs4_13_build_conv004', + [-325089226] = 'cs4_13_build_conv005', + [-568661203] = 'cs4_13_build_conv006', + [-877869487] = 'cs4_13_build_conv007', + [-947995147] = 'cs4_13_build_conv008', + [872887404] = 'cs4_13_build_conv01', + [1090863272] = 'cs4_13_conv_00_fiz', + [823927649] = 'cs4_13_conv_00_grille', + [-1281278663] = 'cs4_13_conv_00', + [-968285545] = 'cs4_13_conv_01_fiz', + [535557766] = 'cs4_13_conv_01_grille', + [-1527275546] = 'cs4_13_conv_01', + [-1680082686] = 'cs4_13_conv_02_fiz', + [916442835] = 'cs4_13_conv_02_grille', + [-1255751612] = 'cs4_13_conv_02', + [1161315160] = 'cs4_13_conv_03_fiz', + [1820746960] = 'cs4_13_conv_03_grille', + [1750574759] = 'cs4_13_conv_03', + [1966906819] = 'cs4_13_conv_04_fiz', + [398764326] = 'cs4_13_conv_04_grille', + [1518963467] = 'cs4_13_conv_04', + [-748898545] = 'cs4_13_conv_05_fiz', + [-1835524275] = 'cs4_13_conv_05_grille', + [-1947046436] = 'cs4_13_conv_05', + [2060774599] = 'cs4_13_decal_boat_02', + [839874260] = 'cs4_13_desert_house_10_d', + [1054791363] = 'cs4_13_desert_house_10_xtra', + [-97409929] = 'cs4_13_desert_house_10', + [-1397030649] = 'cs4_13_desert_house_9_dec', + [1037388480] = 'cs4_13_desert_house_9_xtra', + [983985616] = 'cs4_13_desert_house_9', + [1295992633] = 'cs4_13_emissive_a_lod', + [569037394] = 'cs4_13_emissive_a', + [1082462666] = 'cs4_13_emissive_b_lod', + [861500719] = 'cs4_13_emissive_b', + [254275022] = 'cs4_13_emissive_c_lod', + [1028884775] = 'cs4_13_emissive_c', + [-319868396] = 'cs4_13_emissive_d_lod', + [1336225226] = 'cs4_13_emissive_d', + [2030111499] = 'cs4_13_emissive_e_lod', + [-923197328] = 'cs4_13_emissive_e', + [56553726] = 'cs4_13_emissive_lod', + [-1126590283] = 'cs4_13_emissive', + [-766810179] = 'cs4_13_glue_01', + [-1014674895] = 'cs4_13_glue_02', + [-1165182912] = 'cs4_13_glue_03', + [963294714] = 'cs4_13_glue_06', + [-227268594] = 'cs4_13_glue_07', + [788152544] = 'cs4_13_gm_weeds', + [-1716711416] = 'cs4_13_gnd_01', + [-151263332] = 'cs4_13_gndtrk_01', + [1394308576] = 'cs4_13_gnt00', + [1638470395] = 'cs4_13_gnt01', + [-518680094] = 'cs4_13_gnt02', + [-161825684] = 'cs4_13_gnt03', + [193193662] = 'cs4_13_gnt04', + [-1879620296] = 'cs4_13_highlogo', + [1759636465] = 'cs4_13_house_wall_dec', + [1971587821] = 'cs4_13_house_wall', + [-1884513979] = 'cs4_13_land_01_ov', + [550556671] = 'cs4_13_land_01_ov1_lod', + [-453535359] = 'cs4_13_land_nmalll_ov', + [-1515432155] = 'cs4_13_mal_drain', + [135582351] = 'cs4_13_malrd_01', + [-296015247] = 'cs4_13_mine', + [126022362] = 'cs4_13_minileft_d', + [1616621306] = 'cs4_13_minileft', + [-295748308] = 'cs4_13_minimain_d', + [1719884476] = 'cs4_13_minimain', + [-1129575831] = 'cs4_13_miniright_d', + [-1887845111] = 'cs4_13_miniright', + [1026682010] = 'cs4_13_nmall017', + [803721734] = 'cs4_13_nmall018', + [382152130] = 'cs4_13_nmall15_d', + [-465940667] = 'cs4_13_nmall15', + [243664525] = 'cs4_13_props_cs4_13_wspline_035', + [-1828492629] = 'cs4_13_props_wire_035', + [1984674972] = 'cs4_13_props_wspline_00', + [1125275178] = 'cs4_13_props_wspline_01', + [1388901783] = 'cs4_13_props_wspline_02', + [525110943] = 'cs4_13_props_wspline_03', + [831894321] = 'cs4_13_props_wspline_04', + [923713067] = 'cs4_13_props_wspline_05', + [1239278537] = 'cs4_13_props_wspline_06', + [610343120] = 'cs4_13_props_wspline_08', + [-295883587] = 'cs4_13_props_wspline_09', + [240478025] = 'cs4_13_props_wspline_10', + [1414034210] = 'cs4_13_props_wspline_11', + [-226807915] = 'cs4_13_props_wspline_12', + [586092656] = 'cs4_13_props_wspline_14', + [-1925487353] = 'cs4_13_props_wspline_15', + [786045922] = 'cs4_13_retaining00', + [-445839095] = 'cs4_13_retaining01', + [-215210873] = 'cs4_13_retaining02', + [1477242439] = 'cs4_13_retaining03', + [1702070548] = 'cs4_13_retaining04', + [1016477530] = 'cs4_13_retaining05', + [1247269597] = 'cs4_13_retaining06', + [-1822235406] = 'cs4_13_retaining07', + [-1589215047] = 'cs4_13_retaining08', + [-463487813] = 'cs4_13_retwall002', + [-793865457] = 'cs4_13_rn02', + [514369634] = 'cs4_13_rr_a', + [-100982823] = 'cs4_13_rural3gr', + [1063130831] = 'cs4_13_rural3grde', + [717269458] = 'cs4_13_shed', + [-495872921] = 'cs4_13_shed1', + [1455983164] = 'cs4_13_shk01', + [-133408659] = 'cs4_13_silpbarrier_01', + [-1624955232] = 'cs4_13_silpbarrier_03', + [-2121685037] = 'cs4_13_sixfigure', + [1491400804] = 'cs4_13_sprunk', + [1060397479] = 'cs4_13_stargazplat', + [310176075] = 'cs4_13_tmptrlr_02', + [2110504939] = 'cs4_13_tmptrlr_07', + [-1373000781] = 'cs4_13_trailerboat_01', + [-1095772512] = 'cs4_13_trailerboat_det', + [-318974399] = 'cs4_13_trailerboat_dr', + [-1809131934] = 'cs4_13_trailerweed_003', + [-2088422121] = 'cs4_13_trailerweed_004', + [-1339322777] = 'cs4_13_trailerweed_005', + [-1571654991] = 'cs4_13_trailerweed_006', + [-863615204] = 'cs4_13_trailerweed_007', + [-1093391432] = 'cs4_13_trailerweed_008', + [-1320151424] = 'cs4_13_trailerweed_01', + [789033015] = 'cs4_13_trlr_01_fiz', + [-210963046] = 'cs4_13_trlr_02_fiz', + [-466057001] = 'cs4_13_trlr_03_fiz', + [1579401527] = 'cs4_13_upnatomclassic', + [899561346] = 'cs4_13_wall00', + [-313841959] = 'cs4_13_wall01', + [394623821] = 'cs4_13_wall02', + [-897982153] = 'cs4_13_wall03', + [-1130216056] = 'cs4_13_wall04', + [-1311494164] = 'cs4_13_wall05', + [-1546193227] = 'cs4_13_weed_01', + [-1331195818] = 'cs4_13_weed_02', + [-797519884] = 'cs4_13_weed_03', + [-325187522] = 'cs4_13_weed_05', + [-2101227556] = 'cs4_13_wr', + [-2103975920] = 'cs4_14_armco00', + [-1180479954] = 'cs4_14_armco01', + [1735731659] = 'cs4_14_armco02', + [497849915] = 'cs4_14_armco03', + [1279161182] = 'cs4_14_armco04', + [-2106073136] = 'cs4_14_armco05', + [750859364] = 'cs4_14_armco06', + [-488562519] = 'cs4_14_armco07', + [-519037689] = 'cs4_14_armco08', + [-883404293] = 'cs4_14_bilbrd_01', + [-735548757] = 'cs4_14_billbd_006', + [1655756398] = 'cs4_14_billbd_01', + [-1767621032] = 'cs4_14_billbd_02', + [-2046124763] = 'cs4_14_billbd_03', + [-1260815993] = 'cs4_14_billboard', + [1789775082] = 'cs4_14_cs_brrier', + [-82213003] = 'cs4_14_emissive_slod', + [163860622] = 'cs4_14_emissive', + [-2006260844] = 'cs4_14_erotub_mr', + [-1540541302] = 'cs4_14_erotub_mr2', + [-1945597273] = 'cs4_14_glue_01', + [742055514] = 'cs4_14_glue', + [-1399374147] = 'cs4_14_hickbar_anim', + [-1713440165] = 'cs4_14_hickbar_det', + [-343370477] = 'cs4_14_hickbar_land', + [1427163518] = 'cs4_14_hickbar_land02', + [711342809] = 'cs4_14_hickbar_ov', + [-1776680267] = 'cs4_14_hickbar', + [525612766] = 'cs4_14_hut_g', + [-1639840584] = 'cs4_14_hut', + [-1046219318] = 'cs4_14_jtnp_sign', + [-1877754070] = 'cs4_14_land_01', + [1927906518] = 'cs4_14_land_02', + [-1414039951] = 'cs4_14_land_03', + [-1640473741] = 'cs4_14_land_04', + [-908414281] = 'cs4_14_land_05', + [-1147464136] = 'cs4_14_land_06', + [-176649742] = 'cs4_14_land_07', + [-416289439] = 'cs4_14_land_08', + [505862990] = 'cs4_14_land_09', + [1858698654] = 'cs4_14_land_10', + [303721399] = 'cs4_14_land_11_ed', + [-1693726276] = 'cs4_14_land_11_g', + [-1513067605] = 'cs4_14_land_11', + [605092718] = 'cs4_14_land_11a', + [-56240683] = 'cs4_14_ldb10_glu', + [-1811329558] = 'cs4_14_pipe_01', + [1634266680] = 'cs4_14_plywoodpile_01', + [-74200229] = 'cs4_14_props_tspline_002', + [-723008890] = 'cs4_14_props_twire_02', + [-1875625696] = 'cs4_14_props_twire_03', + [1976173644] = 'cs4_14_props_twire_04', + [-1951682541] = 'cs4_14_props_twire_05', + [-2088853575] = 'cs4_14_props_twire_06', + [964594610] = 'cs4_14_props_twire_07', + [-1626122526] = 'cs4_14_props_twire_08', + [1424638601] = 'cs4_14_props_twire_09', + [-673168681] = 'cs4_14_props_twire_10', + [1128470935] = 'cs4_14_props_twire_11', + [1962474754] = 'cs4_14_props_twire_12', + [519262456] = 'cs4_14_props_twire_13', + [1350972445] = 'cs4_14_props_twire_14', + [-1273332980] = 'cs4_14_props_twire_15', + [-2099210087] = 'cs4_14_props_twire_16', + [-806210885] = 'cs4_14_props_twire_17', + [-1583655410] = 'cs4_14_props_twire_18', + [1260466483] = 'cs4_14_props_twire_20', + [71508856] = 'cs4_14_props_twire_21', + [1451182063] = 'cs4_14_props_twire_22', + [780662785] = 'cs4_14_props_twire_23', + [567143220] = 'cs4_14_retainwallmr', + [-910655297] = 'cs4_14_rock_01', + [-1109530322] = 'cs4_14_rock_02', + [-1349497709] = 'cs4_14_rock_03', + [1182215798] = 'cs4_14_rock_12', + [864357914] = 'cs4_14_rock_12b', + [457186733] = 'cs4_14_rsl_mr_bb1', + [1214674937] = 'cs4_14_rsl_mr_bb2', + [916771958] = 'cs4_14_rsl_mr_bb3', + [-1481992760] = 'cs4_14_tmp_trlr_002', + [900116526] = 'cs4_14_trlr_01', + [1589344742] = 'cs4_14_wall', + [-572207067] = 'cs4_14_wall00', + [-1414435909] = 'cs4_14_wall01', + [-2124736753] = 'cs4_14_wall02', + [1766319929] = 'cs4_14_wall03', + [1134795761] = 'cs4_14_wall04', + [99098751] = 'cs4_14_wall05', + [1475298440] = 'cs4_14_wall06', + [-2033332638] = 'cs4_14_weed', + [899449633] = 'cs4_lod_01_slod3', + [-1139005491] = 'cs4_lod_02_slod3', + [1995638650] = 'cs4_lod_em_b_slod3', + [-32229604] = 'cs4_lod_em_c_slod3', + [-1523375433] = 'cs4_lod_em_d_slod3', + [848139608] = 'cs4_lod_em_e_slod3', + [690703715] = 'cs4_lod_em_f_slod3', + [1963880846] = 'cs4_lod_em_slod3', + [514237963] = 'cs4_railway_trk01', + [840160080] = 'cs4_railway_trk02a', + [-570873020] = 'cs4_railway_trk02b', + [-164438245] = 'cs4_railway_trk03a', + [538784495] = 'cs4_railway_trk03b', + [-661380418] = 'cs4_railway_trk04a', + [-351287371] = 'cs4_railway_trk04b', + [2027412016] = 'cs4_railway_trk05', + [599012285] = 'cs4_railway_trk06a', + [360093506] = 'cs4_railway_trk06b', + [1969510600] = 'cs4_railway_trk07a', + [-2068088970] = 'cs4_railway_trk07b', + [785171995] = 'cs4_railway_trk08', + [-1780966304] = 'cs4_railwayb_brg01', + [1366496186] = 'cs4_railwayb_brg02', + [1068986431] = 'cs4_railwayb_brg03', + [-71061011] = 'cs4_railwayb_brg04_refl', + [2046256322] = 'cs4_railwayb_brg04', + [-270364849] = 'cs4_railwayb_brg05_refl', + [1816480094] = 'cs4_railwayb_brg05', + [1757037402] = 'cs4_railwayb_brg1_refl', + [-777018769] = 'cs4_railwayb_brg2_refl', + [954004673] = 'cs4_railwayb_brg3_refl', + [-1263144029] = 'cs4_railwayb_int_trk013', + [317345262] = 'cs4_railwayb_trk010_refl', + [-1411356273] = 'cs4_railwayb_trk010a', + [-10205363] = 'cs4_railwayb_trk010b_refl', + [-1172339191] = 'cs4_railwayb_trk010b', + [-802328459] = 'cs4_railwayb_trk011_refl', + [1959735458] = 'cs4_railwayb_trk011', + [-1938378701] = 'cs4_railwayb_trk012_refl', + [-1835439050] = 'cs4_railwayb_trk012', + [1917007355] = 'cs4_railwayb_trk014_refl', + [-1625619143] = 'cs4_railwayb_trk014', + [1280104178] = 'cs4_railwayb_trk015_refl', + [-1144373609] = 'cs4_railwayb_trk015', + [1945662346] = 'cs4_railwayb_trk016_refl', + [-908272964] = 'cs4_railwayb_trk016', + [32989636] = 'cs4_railwayb_trk08_refl', + [1303696906] = 'cs4_railwayb_trk08a', + [952233326] = 'cs4_railwayb_trk08b_refl', + [1550021479] = 'cs4_railwayb_trk08b', + [-1087135021] = 'cs4_railwayb_trk09_refl', + [-1631192129] = 'cs4_railwayb_trk09a', + [887049065] = 'cs4_railwayb_trk09b_refl', + [-1871159516] = 'cs4_railwayb_trk09b', + [496734670] = 'cs4_railwayb_tunnel_dec', + [1194022318] = 'cs4_railwayb_tunnel_details', + [-1827627049] = 'cs4_railwayb_tunnel_ext', + [-1768584124] = 'cs4_railwayb_tunnel_int', + [830025102] = 'cs4_railwayb_tunnel_refl', + [-556072256] = 'cs4_railwayb_tunnelint_refl', + [218470509] = 'cs4_rd_props_xwere67', + [-791790722] = 'cs4_rd_props_xwire01', + [-1048732451] = 'cs4_rd_props_xwire02', + [-923915326] = 'cs4_rd_props_xwire03', + [-1161588883] = 'cs4_rd_props_xwire04', + [-461774119] = 'cs4_rd_props_xwire05', + [-702134734] = 'cs4_rd_props_xwire06', + [-1590109096] = 'cs4_rd_props_xwire07', + [1940422968] = 'cs4_rd_props_xwire08', + [1052088147] = 'cs4_rd_props_xwire09', + [907772615] = 'cs4_rd_props_xwire10', + [-1823195849] = 'cs4_rd_props_xwire11', + [-1596336062] = 'cs4_rd_props_xwire12', + [-268863876] = 'cs4_rd_props_xwire13', + [2105872793] = 'cs4_rd_props_xwire14', + [-695254100] = 'cs4_rd_props_xwire15', + [-331256048] = 'cs4_rd_props_xwire16', + [-1021076267] = 'cs4_rd_props_xwire17', + [-790808504] = 'cs4_rd_props_xwire18', + [493015378] = 'cs4_rd_props_xwire19', + [2032929283] = 'cs4_rd_props_xwire20', + [-964385617] = 'cs4_rd_props_xwire21', + [-708754648] = 'cs4_rd_props_xwire22', + [-1124560485] = 'cs4_rd_props_xwire23', + [-757875375] = 'cs4_rd_props_xwire24', + [460770966] = 'cs4_rd_props_xwire25', + [691563033] = 'cs4_rd_props_xwire26', + [-171834579] = 'cs4_rd_props_xwire27', + [195243759] = 'cs4_rd_props_xwire28', + [1346648116] = 'cs4_rd_props_xwire29', + [-1106536067] = 'cs4_rd_props_xwire30', + [-996825455] = 'cs4_rd_props_xwire31', + [-1838759372] = 'cs4_rd_props_xwire32', + [-1468273058] = 'cs4_rd_props_xwire33', + [1994525483] = 'cs4_rd_props_xwire34', + [-1565433139] = 'cs4_rd_props_xwire35', + [2029457241] = 'cs4_rd_props_xwire36', + [-2025346054] = 'cs4_rd_props_xwire37', + [1803449448] = 'cs4_rd_props_xwire38', + [996774975] = 'cs4_rd_props_xwire39', + [-1541380409] = 'cs4_rd_props_xwire40', + [-1652991623] = 'cs4_rd_props_xwire41', + [-1885749830] = 'cs4_rd_props_xwire42', + [1388069884] = 'cs4_rd_props_xwire43', + [1140565627] = 'cs4_rd_props_xwire44', + [1027643653] = 'cs4_rd_props_xwire45', + [784923694] = 'cs4_rd_props_xwire46', + [448975906] = 'cs4_rd_props_xwire47', + [-176518766] = 'cs4_rd_props_xwire48', + [-415961849] = 'cs4_rd_props_xwire49', + [-1234106360] = 'cs4_rd_props_xwire50', + [-599567444] = 'cs4_rd_props_xwire51', + [-1910425751] = 'cs4_rd_props_xwire52', + [2142247559] = 'cs4_rd_props_xwire53', + [-1317667310] = 'cs4_rd_props_xwire54', + [2080281384] = 'cs4_rd_props_xwire55', + [-1372489843] = 'cs4_rd_props_xwire56', + [-1617667501] = 'cs4_rd_props_xwire57', + [1371356838] = 'cs4_rd_props_xwire58', + [855179550] = 'cs4_rd_props_xwire59', + [-777732209] = 'cs4_rd_props_xwire60', + [-1542232979] = 'cs4_rd_props_xwire61', + [1917944042] = 'cs4_rd_props_xwire62', + [-725104983] = 'cs4_rd_props_xwire63', + [44343906] = 'cs4_rd_props_xwire64', + [-229965393] = 'cs4_rd_props_xwire65', + [805403931] = 'cs4_rd_props_xwire66', + [522115926] = 'cs4_rd_props_xwire67', + [1269445748] = 'cs4_rd_props_xwire68', + [982291001] = 'cs4_rd_props_xwire69', + [1971654045] = 'cs4_rd_props_xwire70', + [-2091931342] = 'cs4_rd_props_xwire71', + [1762555056] = 'cs4_rd_props_xwire72', + [918261771] = 'cs4_rd_props_xwire73', + [1317650343] = 'cs4_rd_props_xwire74', + [1013980024] = 'cs4_rd_props_xwire75', + [1107240598] = 'cs4_rd_props_xwire76', + [264389141] = 'cs4_rd_props_xwire77', + [531882488] = 'cs4_rd_props_xwire78', + [-177304210] = 'cs4_rd_props_xwire79', + [-1491275260] = 'cs4_rd_props_xwire80', + [2028148113] = 'cs4_rd_props_xwire81', + [-1972094797] = 'cs4_rd_props_xwire82', + [2085067870] = 'cs4_rd_props_xwire83', + [1370965822] = 'cs4_rd_props_xwire84', + [1667328658] = 'cs4_rd_props_xwire85', + [897093313] = 'cs4_rd_props_xwire86', + [1190113711] = 'cs4_rd_props_xwire87', + [416273768] = 'cs4_rd_props_xwire88', + [710801540] = 'cs4_rd_props_xwire89', + [-2105629360] = 'cs4_rd_props_xwire90', + [1870430028] = 'cs4_rd_props_xwire91', + [1496732352] = 'cs4_rd_props_xwire92', + [1239528471] = 'cs4_rd_props_xwire93', + [899845017] = 'cs4_rd_props_xwire94', + [1183133026] = 'cs4_rd_props_xwire95', + [810221806] = 'cs4_rd_props_xwire96', + [490658510] = 'cs4_rd_props_xwire97', + [251477579] = 'cs4_rd_props_xwire98', + [-134475703] = 'cs4_rd_props_xwire99', + [-536304417] = 'cs4_roads_05', + [-767915709] = 'cs4_roads_06', + [1330283401] = 'cs4_roads_07', + [-2130417924] = 'cs4_roads_08', + [-61319190] = 'cs4_roads_13', + [166589205] = 'cs4_roads_14', + [648490119] = 'cs4_roads_15', + [894552540] = 'cs4_roads_16', + [-333170822] = 'cs4_roads_17', + [380046463] = 'cs4_roads_19', + [601696851] = 'cs4_roads_20', + [-417287973] = 'cs4_roads_21', + [1208766149] = 'cs4_roads_brg_01_rail', + [-1755716938] = 'cs4_roads_brg_01', + [-1047143323] = 'cs4_roads_dec01', + [-1345111840] = 'cs4_roads_dec02', + [17698972] = 'cs4_roads_dtjnc_d01', + [1272587827] = 'cs4_roads_dtjnc_d02', + [812412760] = 'cs4_roads_dtjnc_d04', + [-1121282292] = 'cs4_roads_dtjnc_d05s', + [1775952428] = 'cs4_roads_dtjnc_d07', + [-1559623848] = 'cs4_roads_runoff_01_ovr', + [-1469524569] = 'cs4_roads_runoff_02_ovr', + [-1838872159] = 'cs4_roads_runoff_03_ovr', + [66654625] = 'cs4_roads_sign_01', + [364295452] = 'cs4_roads_sign_02', + [883159710] = 'cs4_roads_sign_03', + [-891216102] = 'cs4_roads_sign_04', + [18353031] = 'cs4_roads_sign_05', + [508662471] = 'cs4_roads_slpr_02', + [-1771960037] = 'cs4_roadsb_12', + [-936095764] = 'cs4_roadsb_dtjnc_d01', + [-1331879746] = 'cs4_roadsb_dtjnc_d02', + [493517399] = 'cs4_roadsb_dtjnc_d04', + [218880410] = 'cs4_roadsb_dtjnc_d05', + [1429105122] = 'cs4_roadsb_dtjnc_d07', + [1187237133] = 'cs4_roadsb_dtjnc_d08', + [-52687346] = 'cs4_roadsb_sign_01', + [663970684] = 'cs4_roadsb_sign_02', + [432916465] = 'cs4_roadsb_sign_03', + [-698611600] = 'cs4_roadsb00', + [124611218] = 'cs4_roadsb01', + [-114045409] = 'cs4_roadsb02', + [-1558961703] = 'cs4_roadsb03', + [-820676133] = 'cs4_roadsb04', + [-1060643520] = 'cs4_roadsb05', + [1787900116] = 'cs4_roadsb06', + [1543279531] = 'cs4_roadsb07', + [-998611907] = 'cs4_roadsb08', + [-1296383810] = 'cs4_roadsb09', + [1213913364] = 'cs4_roadsb091', + [-350341280] = 'cs4_roadsb10', + [-69707564] = 'cs4_roadsb11', + [274530781] = 'cs4_roadsb13', + [583902910] = 'cs4_roadsb14', + [907791706] = 'cs4_roadsb15', + [1194422149] = 'cs4_roadsb16', + [1752871447] = 'cs4_roadsb17', + [2097273637] = 'cs4_roadsb18', + [-1892450424] = 'cs4_roadsb19', + [-543777499] = 'cs4_roadsb20', + [-305579638] = 'cs4_roadsb21', + [-1154558898] = 'cs4_roadsb22', + [-914460435] = 'cs4_roadsb23', + [-346437127] = 'cs5_1_billboard-bravado', + [247831804] = 'cs5_1_billboard-gnd_desert', + [-762319973] = 'cs5_1_billboard-slod', + [306599860] = 'cs5_1_billboard-uranium', + [-1684711481] = 'cs5_1_cs5_01_ds01', + [826966835] = 'cs5_1_cs5_01_ds03', + [1083711950] = 'cs5_1_cs5_01_ds04', + [-1162930694] = 'cs5_1_cs5_01_ds06', + [-737064770] = 'cs5_1_cs5_01_ds07', + [-260243051] = 'cs5_1_cs5_01_ds09', + [-320015759] = 'cs5_1_cs5_01_ds10', + [2130286212] = 'cs5_1_cs5_01_ds11', + [-1740519148] = 'cs5_1_cs5_01_ds12', + [-1434161767] = 'cs5_1_cs5_01_ds13', + [662988703] = 'cs5_1_cs5_01_ds14', + [-1245641702] = 'cs5_1_cs5_01_ds15', + [-751878410] = 'cs5_1_cs5_01_ds16', + [1152292605] = 'cs5_1_cs5_01_ds172', + [338280678] = 'cs5_1_cs5_01_ds19', + [1014372150] = 'cs5_1_cs5_01_ds20', + [-1457917828] = 'cs5_1_cs5_01_ds22', + [-1152019205] = 'cs5_1_cs5_01_ds23', + [-1643521444] = 'cs5_1_cs5_01_ds25', + [178959304] = 'cs5_1_cs5_01_ds26', + [-299369789] = 'cs5_1_cs5_01_ds28', + [-3236336] = 'cs5_1_cs5_01_ds29', + [-1810446466] = 'cs5_1_cs5_01_ds30', + [1884782592] = 'cs5_1_cs5_01_ds32', + [-2103565171] = 'cs5_1_cs5_01_ds33', + [-626502488] = 'cs5_1_cs5_01_ds34', + [-185497286] = 'cs5_1_cs5_01_ds35', + [-1088709233] = 'cs5_1_cs5_01_ds36', + [-1478299774] = 'cs5_1_cs5_01_ds38', + [2071141411] = 'cs5_1_cs5_01_ds40', + [2108760223] = 'cs5_1_cs5_01_ds41', + [-1743923880] = 'cs5_1_cs5_01_ds42', + [1653467737] = 'cs5_1_cs5_01_ds44', + [884477614] = 'cs5_1_cs5_01_ds45', + [-1008489213] = 'cs5_1_cs5_01_ds46', + [-1303770672] = 'cs5_1_cs5_01_ds47', + [-159411654] = 'cs5_1_cs5_01_ds48', + [348114618] = 'cs5_1_cs5_01_ds49', + [953786633] = 'cs5_1_cs5_01_ds50', + [338515973] = 'cs5_1_cs5_01_ds52', + [782273687] = 'cs5_1_cs5_01_ds53', + [-2114636993] = 'cs5_1_cs5_01_ds54', + [-1807558694] = 'cs5_1_cs5_01_ds55', + [1700755988] = 'cs5_1_cs5_01_ds56', + [2007375521] = 'cs5_1_cs5_01_ds57', + [-1501987685] = 'cs5_1_cs5_01_ds58', + [-1270278082] = 'cs5_1_cs5_01_ds59', + [-239892938] = 'cs5_1_cs5_01_ds61', + [-1184983667] = 'cs5_1_cs5_01_ds62', + [-413830790] = 'cs5_1_cs5_01_ds63', + [-1662067546] = 'cs5_1_cs5_01_ds64', + [-895830011] = 'cs5_1_cs5_01_ds65', + [1504040513] = 'cs5_1_cs5_01_ds66', + [-2013744410] = 'cs5_1_cs5_01_ds67', + [1045569434] = 'cs5_1_cs5_01_ds68', + [-496506713] = 'cs5_1_cs5_01_ds70', + [-794704613] = 'cs5_1_cs5_01_ds71', + [-949669214] = 'cs5_1_cs5_01_ds72', + [1349047644] = 'cs5_1_cst_01', + [-22629927] = 'cs5_1_cst_02', + [-2104313421] = 'cs5_1_cst_03', + [1017826967] = 'cs5_1_cst_03b', + [-1591306375] = 'cs5_1_cst_rocks002', + [599014868] = 'cs5_1_cst_rocks1', + [-467454840] = 'cs5_1_cst_rocks1b', + [1635445118] = 'cs5_1_drain1', + [1289311720] = 'cs5_1_foam_01', + [1584429334] = 'cs5_1_foam_02', + [1732643521] = 'cs5_1_foam_03', + [2060333521] = 'cs5_1_foam_04', + [329638786] = 'cs5_1_foam_05', + [952866259] = 'cs5_1_hil_barrier', + [-1608217902] = 'cs5_1_hil_barrier1', + [-1576127546] = 'cs5_1_land_01', + [-658824929] = 'cs5_1_land_02', + [-978715907] = 'cs5_1_land_03', + [-879491387] = 'cs5_1_land_04', + [-1243817129] = 'cs5_1_land_05', + [-1841382084] = 'cs5_1_land_06_d', + [-383696417] = 'cs5_1_land_06', + [-648109478] = 'cs5_1_land_07', + [2113203084] = 'cs5_1_land_08', + [1873760001] = 'cs5_1_land_09', + [1023666899] = 'cs5_1_land_10', + [1246561637] = 'cs5_1_land_11', + [-1985936372] = 'cs5_1_land_12', + [-1745706833] = 'cs5_1_land_13', + [1845120187] = 'cs5_1_land_14', + [2084497732] = 'cs5_1_land_15', + [388821713] = 'cs5_1_land_16_d', + [-767781566] = 'cs5_1_land_16', + [-525848039] = 'cs5_1_land_17', + [-1217273939] = 'cs5_1_land_18', + [-689812225] = 'cs5_1_land_19_d', + [-987464942] = 'cs5_1_land_19', + [1868741122] = 'cs5_1_land_19b', + [-1997668586] = 'cs5_1_land_20', + [1920554399] = 'cs5_1_land_20b', + [868387180] = 'cs5_1_land_20c_d', + [-1948874659] = 'cs5_1_land_20c', + [1451072936] = 'cs5_1_land_20d', + [1939854458] = 'cs5_1_land_21', + [-777297105] = 'cs5_1_retaining_wall004', + [1855904592] = 'cs5_1_retaining_wall011', + [-592431243] = 'cs5_1_retaining_wall019', + [1575728770] = 'cs5_1_retaining_wall040', + [641581623] = 'cs5_1_retwall005', + [-709609457] = 'cs5_1_retwall01', + [-342498350] = 'cs5_1_retwall03', + [-1453905162] = 'cs5_1_sea_hatch_dec', + [-896794569] = 'cs5_1_sea_hatch_emissive', + [257792428] = 'cs5_1_sea_hatch', + [1701783235] = 'cs5_1_sea_lod_01', + [1396802152] = 'cs5_1_sea_lod_02', + [1235907244] = 'cs5_1_sea_shipwreck_lod', + [1087236395] = 'cs5_1_sea_shipwreck', + [1746442586] = 'cs5_1_sea_uw_dec_00', + [-707169058] = 'cs5_1_sea_uw_dec_01', + [-1012608907] = 'cs5_1_sea_uw_dec_02', + [-1602385369] = 'cs5_1_sea_uw_dec_03', + [252929873] = 'cs5_1_sea_uw_dec_04', + [-526710171] = 'cs5_1_sea_uw_dec_05', + [1309074735] = 'cs5_1_sea_uw_dec_06', + [1018184322] = 'cs5_1_sea_uw_dec_07', + [988430070] = 'cs5_1_sea_uw_dec_08', + [660346842] = 'cs5_1_sea_uw_dec_09', + [258892427] = 'cs5_1_sea_uw_dec_10', + [-439414963] = 'cs5_1_sea_uw_dec_11', + [-200234032] = 'cs5_1_sea_uw_dec_12', + [-936881152] = 'cs5_1_sea_uw_dec_13', + [-572096644] = 'cs5_1_sea_uw_dec_14', + [-1737927294] = 'cs5_1_sea_uw1_00', + [901976111] = 'cs5_1_sea_uw1_02', + [766561201] = 'cs5_1_sea_uw1_02b', + [8660402] = 'cs5_1_sea_uw1_03', + [1981687323] = 'cs5_1_sea_uw2_00', + [-886943710] = 'cs5_1_sea_uw2_01', + [-638620228] = 'cs5_1_sea_uw2_02', + [-1325556775] = 'cs5_1_sea_uw2_03', + [-1117539163] = 'cs5_1_sea_uw2_04', + [377480912] = 'cs5_1_sea_uw2_05', + [-1530821803] = 'cs5_1_sea_uw2_06', + [-133355029] = 'cs5_1_sea_uw2_07', + [138857054] = 'cs5_1_sea_uw2_08', + [1576498638] = 'cs5_1_sea_uw2_09', + [1476061933] = 'cs5_1_sea_uw2_10', + [-1620051498] = 'cs5_1_sea_uw2_11', + [-1924213356] = 'cs5_1_sea_uw2_12', + [1928732899] = 'cs5_1_sea_uw2_13', + [1891376239] = 'cs5_1_sea_uw2_14', + [2085794736] = 'cs5_1_sea_uw2_15', + [1857525882] = 'cs5_1_sea_uw2_16', + [-1460433679] = 'cs5_1_sea_uw2_17', + [-885796495] = 'cs5_1_sea_uw2_18', + [54051194] = 'cs5_1_sea_uw2_19', + [-458881691] = 'cs5_1_sea_uw2_20', + [832249489] = 'cs5_2_bridge2_sd', + [573831672] = 'cs5_2_bridge2', + [-871098133] = 'cs5_2_culvert02_slod1', + [-1135397022] = 'cs5_2_culvert02', + [1494777321] = 'cs5_2_culvert03_slod1', + [579961821] = 'cs5_2_culvert03', + [-349940721] = 'cs5_2_land02', + [-1560329342] = 'cs5_2_land029_d', + [-284790536] = 'cs5_2_land029', + [18264185] = 'cs5_2_land06_d', + [-1573600719] = 'cs5_2_land06', + [-215643353] = 'cs5_2_land08_d', + [-1783873585] = 'cs5_2_land08_glue', + [2049470997] = 'cs5_2_land08', + [-1193326644] = 'cs5_2_land09_d', + [1819399848] = 'cs5_2_land09', + [-1838994133] = 'cs5_2_land09b', + [-1599813202] = 'cs5_2_land09c', + [2071920483] = 'cs5_2_land09d', + [1462758846] = 'cs5_2_land10_02_d', + [1381995913] = 'cs5_2_land10_03_d', + [-779030659] = 'cs5_2_land10_d', + [-602622776] = 'cs5_2_land10', + [1321084183] = 'cs5_2_land10b', + [1561051570] = 'cs5_2_land10c', + [-1521298881] = 'cs5_2_land10d', + [-907276169] = 'cs5_2_land11', + [-1864759407] = 'cs5_2_land12_02_d', + [-1024172257] = 'cs5_2_land12_d', + [12221971] = 'cs5_2_land12', + [910239522] = 'cs5_2_land13_d', + [-301934432] = 'cs5_2_land13', + [-2016179133] = 'cs5_2_land14', + [1914796035] = 'cs5_2_land16_d', + [-1492202823] = 'cs5_2_land16', + [-851896563] = 'cs5_2_land17', + [1249612180] = 'cs5_2_land18', + [-2132083086] = 'cs5_2_land19', + [1579096864] = 'cs5_2_land21_02_d', + [539085533] = 'cs5_2_land21_d', + [514014592] = 'cs5_2_land21', + [210934111] = 'cs5_2_land22', + [-1651835752] = 'cs5_2_land23_d', + [-94866197] = 'cs5_2_land23', + [-1814003943] = 'cs5_2_land24_d', + [2046948412] = 'cs5_2_land24', + [1748258977] = 'cs5_2_land25', + [-1794093742] = 'cs5_2_land27_d', + [510342010] = 'cs5_2_land27_refprox', + [1171229656] = 'cs5_2_land27', + [384397799] = 'cs5_2_land27b', + [1575925779] = 'cs5_2_sea_uw_dec_00', + [1279562943] = 'cs5_2_sea_uw_dec_01', + [2040196971] = 'cs5_2_sea_uw_dec_02', + [1739082630] = 'cs5_2_sea_uw_dec_03', + [-523485748] = 'cs5_2_sea_uw_dec_07', + [-800744257] = 'cs5_2_sea_uw_dec_08', + [-36964405] = 'cs5_2_sea_uw_dec_09', + [6258326] = 'cs5_2_sea_uw_dec_10', + [313107242] = 'cs5_2_sea_uw_dec_11', + [-2111503801] = 'cs5_2_sea_uw_dec_12', + [1895096295] = 'cs5_2_sea_uw_dec_13', + [2111207850] = 'cs5_2_sea_uw_dec_14', + [1268585784] = 'cs5_2_sea_uw_dec_15', + [1501278453] = 'cs5_2_sea_uw_dec_16', + [655969329] = 'cs5_2_sea_uw_dec_17', + [85126958] = 'cs5_2_sea_uw1_04_lod', + [-942516067] = 'cs5_2_sea_uw1_04', + [-754598822] = 'cs5_2_sea_uw2_01', + [-1043654171] = 'cs5_2_sea_uw2_02', + [-372243508] = 'cs5_2_sea_uw2_04_lod', + [-1768668288] = 'cs5_2_sea_uw2_04', + [1753178408] = 'cs5_2_sea_uw2_04b_lod', + [2016776477] = 'cs5_2_sea_uw2_04b', + [288148546] = 'cs5_2_sea_uw2_05_lod', + [1674239466] = 'cs5_2_sea_uw2_05', + [-1731668701] = 'cs5_2_sea_uw2_05b', + [649889453] = 'cs5_2_sea_uw2_06_lod', + [1377581709] = 'cs5_2_sea_uw2_06', + [-49967007] = 'cs5_2_sea_uw2_07', + [1941929427] = 'cs5_2_sea_uw2_08', + [476270364] = 'cs5_2_sea_uw2_09', + [-734739948] = 'cs5_2_sea_uw2_10', + [290864214] = 'cs5_2_sea_uw2_13', + [462180546] = 'cs5_2_sea_uw2_14', + [1453278951] = 'cs5_2_sea_uw2_15', + [-4876011] = 'cs5_2_sea_uw2_16', + [878314077] = 'cs5_2_sea_uw2_17', + [1185130224] = 'cs5_2_sea_uw2_18', + [-1650404111] = 'cs5_2_sea_uw2_19', + [-1155363120] = 'cs5_2_sea_uw2_22', + [1916982702] = 'cs5_2_shoredcl02', + [493235194] = 'cs5_2_shoredcl03', + [183240454] = 'cs5_2_shoredcl04', + [1372787923] = 'cs5_2_shoredcl05', + [1066168390] = 'cs5_2_shoredcl06', + [-478365660] = 'cs5_2_shoredcl07', + [-767650392] = 'cs5_2_shoredcl08', + [-132685479] = 'cs5_2_shoredcl09', + [1634823870] = 'cs5_3_bars00', + [858722874] = 'cs5_3_bars01', + [-34723915] = 'cs5_3_bars02', + [1314506895] = 'cs5_3_bars03', + [-337348900] = 'cs5_3_building1_decal', + [-635831188] = 'cs5_3_building2_decal', + [-618467648] = 'cs5_3_cablemesh_new', + [935381874] = 'cs5_3_chim01', + [-444979482] = 'cs5_3_chim02', + [208908980] = 'cs5_3_chimney1_decal', + [-393941066] = 'cs5_3_cliff_01', + [-1129703423] = 'cs5_3_cliff_02', + [-304829878] = 'cs5_3_cliffroks01', + [654646446] = 'cs5_3_cliffroks03', + [289009940] = 'cs5_3_cliffroks04', + [1017366507] = 'cs5_3_cliffroks05', + [884848671] = 'cs5_3_cliffroks06', + [-66077648] = 'cs5_3_craneladder01', + [1336501106] = 'cs5_3_craneladder02', + [-153405450] = 'cs5_3_craneladder03_lod002', + [566790065] = 'cs5_3_craneladder03', + [1017175127] = 'cs5_3_cs5_03_decs01', + [-2041942107] = 'cs5_3_cs5_03_decs08', + [-75704016] = 'cs5_3_cs5_03_decs10', + [809648826] = 'cs5_3_cs5_03_decs11', + [917111617] = 'cs5_3_cs5_03_decs11b', + [-455136267] = 'cs5_3_cs5_03_decs13', + [116977704] = 'cs5_3_cs5_03_decs15', + [2074564991] = 'cs5_3_cs5_03_decs17', + [1524704251] = 'cs5_3_cs5_03_decs20', + [1688899712] = 'cs5_3_cs5_03_glue_03', + [-1269961475] = 'cs5_3_cs5_03_pipes01', + [1550892352] = 'cs5_3_cs5_03_pipes02', + [-1438394139] = 'cs5_3_cs5_03_pipes03', + [1997435515] = 'cs5_3_cs5_03_pipes04', + [-1775487025] = 'cs5_3_decal_p1', + [1638105305] = 'cs5_3_detaillow_02b', + [-1330659396] = 'cs5_3_detaillow_03', + [2074228502] = 'cs5_3_detaillow_04b', + [842240986] = 'cs5_3_detaillow_05b', + [-1344818061] = 'cs5_3_dock_rtg_002', + [1128017461] = 'cs5_3_entrancesigns_a', + [1367001778] = 'cs5_3_entrancesigns_b', + [1788378349] = 'cs5_3_entrancesigns_c', + [-1594072487] = 'cs5_3_glue01', + [-1491962172] = 'cs5_3_grnddcls01', + [1123462790] = 'cs5_3_grnddcls02', + [825756425] = 'cs5_3_grnddcls03', + [1602381725] = 'cs5_3_grnddcls04', + [1306444886] = 'cs5_3_grnddcls05', + [168508592] = 'cs5_3_grnddcls06', + [1590973423] = 'cs5_3_grounddec12', + [-247957231] = 'cs5_3_grounddec18', + [1795451739] = 'cs5_3_grounddec20', + [866778164] = 'cs5_3_groundh_02', + [570120411] = 'cs5_3_groundh_03', + [767090920] = 'cs5_3_groundh00', + [1041093833] = 'cs5_3_gully', + [-1640585198] = 'cs5_3_ladder_01', + [-1026268985] = 'cs5_3_mainshadprox02', + [-1607918735] = 'cs5_3_mainshadprox03', + [1689822353] = 'cs5_3_mainshadprox04', + [-1301102588] = 'cs5_3_mainshadprox05', + [1459063055] = 'cs5_3_mainshadprox07', + [1418495025] = 'cs5_3_mainshadprox08', + [1657938108] = 'cs5_3_mainshadprox09', + [2144360840] = 'cs5_3_mainshadprox10', + [-1926400958] = 'cs5_3_mainshadprox11', + [-998153495] = 'cs5_3_mainshadprox12', + [1908981113] = 'cs5_3_mainshadprox13', + [1195796589] = 'cs5_3_mainshadprox15', + [-265906399] = 'cs5_3_morbars_f', + [-410899595] = 'cs5_3_morbars_f1', + [-1281000242] = 'cs5_3_nupits00', + [874839559] = 'cs5_3_nupits01', + [-162425213] = 'cs5_3_nutower_g03a_details', + [-611503111] = 'cs5_3_nutower_g03b_details', + [500408593] = 'cs5_3_nutower_g04_cap1', + [269550988] = 'cs5_3_nutower_g04_cap2', + [-706796832] = 'cs5_3_nutower_g04_frame1', + [-207462810] = 'cs5_3_nutower_g04_frame2', + [-1421735320] = 'cs5_3_nutower_g04_tower1', + [245092634] = 'cs5_3_nutower_g04_tower2', + [-842039247] = 'cs5_3_nutower_g084_b', + [-1366516131] = 'cs5_3_nutower_g084_detailsa', + [-1996041648] = 'cs5_3_nutower_g084_detailsa001', + [-877668189] = 'cs5_3_nutower_g084_detailsc', + [76500217] = 'cs5_3_nutower_g10_details', + [-1268294435] = 'cs5_3_nutower_g14_cap', + [-1481280388] = 'cs5_3_nutower_g14_frame', + [1791529952] = 'cs5_3_nutower_g14', + [-442363083] = 'cs5_3_nutower_g15b_details', + [900482668] = 'cs5_3_nutower_g21b_details', + [-376172194] = 'cs5_3_nutower_g21c_details', + [95321306] = 'cs5_3_nutower_g42_cap', + [-1900012260] = 'cs5_3_nutower_g42_frame', + [-447641124] = 'cs5_3_nutower_g42', + [2038910472] = 'cs5_3_nutower_g43a_details', + [657139723] = 'cs5_3_nutower_g43b_details', + [638275959] = 'cs5_3_nutower_g49c_details', + [-2012281785] = 'cs5_3_nutower_g72_details', + [-1511011801] = 'cs5_3_nutower_g73b_details', + [122243500] = 'cs5_3_nutower_g78_details', + [717870849] = 'cs5_3_officin_2', + [1213239822] = 'cs5_3_officin_4', + [1100825848] = 'cs5_3_pit_1', + [1397205097] = 'cs5_3_pit_1453', + [-141114792] = 'cs5_3_plant1_decal_a', + [-1629220620] = 'cs5_3_plant1_decal_c', + [-496657553] = 'cs5_3_plant2_decal', + [195647034] = 'cs5_3_plant3_decal', + [83475346] = 'cs5_3_plant4_decal', + [-881892214] = 'cs5_3_plantlights_10', + [-2028905525] = 'cs5_3_plantlights_12', + [-1687956466] = 'cs5_3_plantmain_1', + [-647467068] = 'cs5_3_plantmain_1a', + [-1447726927] = 'cs5_3_plantmain_2', + [708440504] = 'cs5_3_plantmain_3', + [-815039951] = 'cs5_3_plantmain_342', + [-315317648] = 'cs5_3_plantmain_3a', + [461445431] = 'cs5_3_plantmain_detail_3', + [-561515270] = 'cs5_3_plantmain1_rail01', + [1880692766] = 'cs5_3_plantmain1_rail02', + [491242134] = 'cs5_3_plantmain2_rail01', + [-1668574554] = 'cs5_3_plantretainwall_1', + [1022288781] = 'cs5_3_plantsigns_5', + [844649191] = 'cs5_3_ppbldg012', + [-1260518848] = 'cs5_3_ppbldg0156', + [913723033] = 'cs5_3_ppl018_rail02', + [-100459691] = 'cs5_3_ppl018', + [102851430] = 'cs5_3_ppl019_rail01', + [206880760] = 'cs5_3_ppl019', + [-504683797] = 'cs5_3_ppla8_a_c', + [-993413781] = 'cs5_3_ppla8_a001', + [-1201085041] = 'cs5_3_ppla8_b001', + [1467461477] = 'cs5_3_pplant028', + [1335043063] = 'cs5_3_pplant028sups01', + [-1383604257] = 'cs5_3_pplant028sups02', + [-1153860798] = 'cs5_3_pplant028sups03', + [1706445794] = 'cs5_3_pplant029', + [1044995558] = 'cs5_3_pplant16_a', + [1948617690] = 'cs5_3_pplant16', + [683379803] = 'cs5_3_pplant16a_a', + [-1954852391] = 'cs5_3_pplant16a_b', + [197453058] = 'cs5_3_pplant16a', + [1693596757] = 'cs5_3_pplant16arail02', + [-575895338] = 'cs5_3_pplant16b', + [-1193167101] = 'cs5_3_pplant16brails03', + [1536097195] = 'cs5_3_pplant16c_details', + [253389745] = 'cs5_3_pplant16c', + [-1141803587] = 'cs5_3_pplant16rail01', + [1113902025] = 'cs5_3_pplh18_rail03', + [816261198] = 'cs5_3_pplh18_rail04', + [-445075519] = 'cs5_3_pplh18', + [-1557073818] = 'cs5_3_pplh19_a', + [-1787603733] = 'cs5_3_pplh19_b', + [1221704617] = 'cs5_3_pplh19_c', + [1487493996] = 'cs5_3_pplh19_d', + [124139755] = 'cs5_3_pplh19_e', + [1333423437] = 'cs5_3_pplh19b_rail002', + [1511948953] = 'cs5_3_pplh19b_rail003', + [1809131014] = 'cs5_3_pplh19b_rail004', + [-1767605340] = 'cs5_3_pplh19b_rail005', + [-558890465] = 'cs5_3_pplh19b_rail01', + [815819523] = 'cs5_3_pplh20', + [-507784972] = 'cs5_3_pwrst_dtls01', + [-135922360] = 'cs5_3_pwrst_dtls02', + [595875148] = 'cs5_3_pwrst_dtls03', + [-738538321] = 'cs5_3_pwrst_dtls0353', + [760178914] = 'cs5_3_pwrst_dtls04', + [1058081893] = 'cs5_3_pwrst_dtls05', + [1352839048] = 'cs5_3_pwrst_dtls06', + [1518060346] = 'cs5_3_pwrst_dtls07', + [1812620887] = 'cs5_3_pwrst_dtls08', + [-1783055945] = 'cs5_3_pwrst_dtls09', + [1913929711] = 'cs5_3_pwrst_dtls10', + [-1059955350] = 'cs5_3_pwrst_dtls11', + [-1840250778] = 'cs5_3_pwrst_dtls12', + [-1495127670] = 'cs5_3_pwrst_dtls13', + [505801791] = 'cs5_3_pwrst_dtls14_lod', + [-122401491] = 'cs5_3_pwrst_dtls14', + [192901827] = 'cs5_3_pwrst_dtls15', + [-582642096] = 'cs5_3_pwrst_dtls16', + [-363057027] = 'cs5_3_pwrst_dtls17', + [1008686074] = 'cs5_3_pwrst_dtls18', + [583884972] = 'cs5_3_pwrst1_dtls01', + [2956140] = 'cs5_3_pwrst1_dtls02', + [-998792190] = 'cs5_3_pwrst1_dtls03', + [315736245] = 'cs5_3_pwrst1_dtls04', + [-369922311] = 'cs5_3_pwrst1_dtls05', + [-1219524174] = 'cs5_3_pwrst1_dtls06', + [-530752559] = 'cs5_3_pwrst1_dtls07', + [-296978513] = 'cs5_3_pwrst1_dtls08', + [1954546712] = 'cs5_3_pwrst1_dtls09', + [1237659579] = 'cs5_3_pwrst1_dtls10', + [-58157757] = 'cs5_3_pwrst1_dtls11', + [761427702] = 'cs5_3_pwrst1_dtls12', + [-535110552] = 'cs5_3_pwrst1_dtls13', + [248363469] = 'cs5_3_pwrst1_dtls14', + [-976017447] = 'cs5_3_pwrst1_dtls15', + [-1282374828] = 'cs5_3_pwrst1_dtls16', + [-844548215] = 'cs5_3_pwrst1_dtls17', + [-1150905596] = 'cs5_3_pwrst1_dtls18', + [-1365804698] = 'cs5_3_pwrst1_dtls19', + [-906481102] = 'cs5_3_pwrst1_dtls20', + [-1069670722] = 'cs5_3_pwrst1_dtls21', + [-1384416967] = 'cs5_3_pwrst1_dtls22', + [2085558013] = 'cs5_3_pwrst1_dtls23', + [1868299543] = 'cs5_3_pwrst1_dtls24', + [1618304842] = 'cs5_3_pwrst1_dtls25', + [1306966573] = 'cs5_3_pwrst1_dtls26', + [556490927] = 'cs5_3_pwrst1_dtls27', + [408309509] = 'cs5_3_pwrst1_dtls28', + [96184784] = 'cs5_3_pwrst1_dtls29', + [304791962] = 'cs5_3_pwrst1_dtls30', + [-603531949] = 'cs5_3_pwrst1_dtls31', + [-1029627833] = 'cs5_3_pwrstfizrail01', + [-1261271894] = 'cs5_3_pwrstfizrail02', + [607773871] = 'cs5_3_pwrstfizrail03', + [301678642] = 'cs5_3_pwrstfizrail04', + [1069784002] = 'cs5_3_pwrstfizrail05', + [1839069046] = 'cs5_3_pwrstfizrail06', + [1532056285] = 'cs5_3_pwrstfizrail07', + [-1994346885] = 'cs5_3_pwrstfizrail08', + [1993148884] = 'cs5_3_pwrstfizrail09', + [190657318] = 'cs5_3_pwrstfizrail10', + [-511254670] = 'cs5_3_pwrstfizrail11', + [-288065011] = 'cs5_3_pwrstfizrail12', + [-1113450583] = 'cs5_3_pwrstfizrail13', + [-887967094] = 'cs5_3_pwrstfizrail14', + [-1596695026] = 'cs5_3_pwrstfizrail15', + [1956906414] = 'cs5_3_pwrstfizrail16', + [-2106154669] = 'cs5_3_pwrstfizrail17', + [1477266561] = 'cs5_3_pwrstfizrail18', + [1708845084] = 'cs5_3_pwrstfizrail19', + [1085906614] = 'cs5_3_pwrstfizrail20', + [1317878365] = 'cs5_3_pwrstfizrail21', + [339461563] = 'cs5_3_pwrstfizrail22', + [568877332] = 'cs5_3_pwrstfizrail23', + [-140637056] = 'cs5_3_pwrstfizrail24', + [-535077389] = 'cs5_3_pwrstfizrail25', + [-372149921] = 'cs5_3_pwrstfizrail26', + [-1148873528] = 'cs5_3_pwrstfizrail27', + [-986404826] = 'cs5_3_pwrstfizrail28', + [-1761358907] = 'cs5_3_pwrstfizrail29', + [-1727313796] = 'cs5_3_pwrstfizrail30', + [-1422005023] = 'cs5_3_pwrstfizrail31', + [889454707] = 'cs5_3_pwrstfizrail32', + [1196533006] = 'cs5_3_pwrstfizrail33', + [1948384942] = 'cs5_3_pwrstfizrail34', + [278312857] = 'cs5_3_pwrstfizrail36', + [723152032] = 'cs5_3_pwrstfizrail38', + [-1250590380] = 'cs5_3_pwrstfizrail39', + [-1623304854] = 'cs5_3_pwrstfizrail40', + [-1871726643] = 'cs5_3_pwrstfizrail41', + [2108756560] = 'cs5_3_pwrstfizrail42', + [-654587676] = 'cs5_3_pwrstfizrail43', + [-934172784] = 'cs5_3_pwrstfizrail44', + [-1249312257] = 'cs5_3_pwrstfizrail45', + [850721881] = 'cs5_3_pwrstfizrail46', + [565533274] = 'cs5_3_pwrstfizrail47', + [276248542] = 'cs5_3_pwrstfizrail48', + [1800924574] = 'cs5_3_pwrstfizrail49', + [1274654670] = 'cs5_3_pwrstfizrail50', + [949750035] = 'cs5_3_pwrstfizrail51', + [-1505237915] = 'cs5_3_pwrstfizrail52', + [-1826570729] = 'cs5_3_pwrstfizrail53', + [-2101142180] = 'cs5_3_pwrstfizrail54', + [-274598120] = 'cs5_3_pwrstfizrail55', + [-572435561] = 'cs5_3_pwrstfizrail56', + [22802121] = 'cs5_3_rail', + [-913535017] = 'cs5_3_railshadprox01', + [-750345397] = 'cs5_3_railshadprox02', + [-1541487364] = 'cs5_3_railshadprox03', + [-1111361470] = 'cs5_3_railshadprox04', + [510015853] = 'cs5_3_railshadprox05', + [-385004104] = 'cs5_3_railshadprox12', + [-1840340932] = 'cs5_3_railshadprox13', + [-1229565653] = 'cs5_3_railter_01', + [-387435122] = 'cs5_3_railter_02', + [1896799809] = 'cs5_3_rddec003', + [1138197459] = 'cs5_3_rddec004', + [193066984] = 'cs5_3_sea_seabed00', + [-1909785280] = 'cs5_3_sea_seabed01', + [2131386111] = 'cs5_3_sea_seabed02', + [1638343737] = 'cs5_3_sea_seabed03', + [1389856410] = 'cs5_3_sea_seabed04', + [-926694314] = 'cs5_3_sea_seabed05_lod', + [-1220915366] = 'cs5_3_sea_seabed05', + [-1727393030] = 'cs5_3_sea_seabed06', + [-1986235361] = 'cs5_3_sea_seabed07', + [2103925685] = 'cs5_3_sea_seabed08', + [-263896721] = 'cs5_3_sea_seabed09', + [-1983296516] = 'cs5_3_sea_uw_decals00', + [1906875327] = 'cs5_3_sea_uw_decals01', + [-2032220629] = 'cs5_3_sea_uw_decals02', + [-853421392] = 'cs5_3_sea_uw_decals03', + [-525272626] = 'cs5_3_sea_uw_decals04', + [-1464989239] = 'cs5_3_sea_uw_decals05', + [-1134972640] = 'cs5_3_sea_uw_decals06', + [87933671] = 'cs5_3_sea_uw_decals07', + [449768969] = 'cs5_3_sea_uw_decals08', + [58015578] = 'cs5_3_sea_uw_decals09', + [587202383] = 'cs5_3_sea_uw_decals10', + [1497623510] = 'cs5_3_sea_uw_decals11', + [912860705] = 'cs5_3_sea_uw_decals13', + [-1538554137] = 'cs5_3_seawd02', + [-1406036875] = 'cs5_3_seaweed01', + [-1152109890] = 'cs5_3_seaweed02', + [-1451946240] = 'cs5_3_seaweed03', + [-661066425] = 'cs5_3_seaweed04', + [-958248486] = 'cs5_3_seaweed05', + [-196238160] = 'cs5_3_seaweed06', + [1055122474] = 'cs5_3_shadprox_plat01', + [296520124] = 'cs5_3_shadprox_plat02', + [662409918] = 'cs5_3_shltrsups01', + [1421471034] = 'cs5_3_shltrsups02', + [-1637449586] = 'cs5_3_shltrsups03', + [-1174964928] = 'cs5_3_smoke_dummy00', + [-1783072761] = 'cs5_3_smoke_dummy001', + [404309106] = 'cs5_3_ss_dirt2_', + [423817294] = 'cs5_3_ss_dirt2_001', + [-1580236439] = 'cs5_3_ss_dirt2_002', + [-1885905671] = 'cs5_3_ss_dirt2_003', + [-966505838] = 'cs5_3_ss_dirt2_004', + [-734566856] = 'cs5_3_ss_dirt2_005', + [2094544763] = 'cs5_3_ss_dirt2_006', + [1247826572] = 'cs5_3_ss_dirt2_007', + [-1657079744] = 'cs5_3_ss_dirt2_008', + [-54933519] = 'cs5_3_tank_white01_dec001', + [1091817636] = 'cs5_3_tank_white01_dec002', + [1569098125] = 'cs5_3_tank_white01_dec004', + [-2143695117] = 'cs5_3_tank_white01_dec006', + [-1203749121] = 'cs5_3_tank_white01_dec008', + [-1180436975] = 'cs5_3_tank_white01_details', + [-242596876] = 'cs5_3_tank_white01', + [1916376129] = 'cs5_3_tankblue_01', + [1236312717] = 'cs5_3_tankblueldr_01', + [999949920] = 'cs5_3_tankblueldr_02', + [774826886] = 'cs5_3_tankblueldr_03', + [79122836] = 'cs5_3_tnkbasedec004', + [1535987016] = 'cs5_3_tower_gant_', + [-1547320675] = 'cs5_3_tower_gant_01', + [2074298068] = 'cs5_3_tower_gant_017', + [1700338240] = 'cs5_3_tower_gant_018', + [1460349225] = 'cs5_3_tower_gant_02', + [1212386202] = 'cs5_3_tower_gant_03', + [2041474671] = 'cs5_3_tower_gant_04', + [-355905373] = 'cs5_3_tower_gant_05', + [-1643497690] = 'cs5_3_tower_gant_06', + [-1893918388] = 'cs5_3_tower_gant_07', + [-1049362951] = 'cs5_3_tower_gant_08', + [919627952] = 'cs5_3_tower_gant_09', + [-651679771] = 'cs5_3_tower_gant_10', + [518206302] = 'cs5_3_tower_gant_11', + [329522400] = 'cs5_3_tower_gant_12', + [-341881645] = 'cs5_3_tower_gant_13', + [-1723258840] = 'cs5_3_tower_gant_14', + [-940079740] = 'cs5_3_tower_gant_15', + [-169385629] = 'cs5_3_tower_gant_16', + [-1819370317] = 'cs5_3_tower_gant_19', + [-865525966] = 'cs5_3_turb01', + [983661473] = 'cs5_3_turb02', + [-1494707142] = 'cs5_3_turbine1_decal', + [1789124711] = 'cs5_3_turbine2_decal', + [-1571821265] = 'cs5_3_turbine3_decal', + [-791695404] = 'cs5_4_barrier_01', + [-1011772008] = 'cs5_4_barrier_02', + [-1259112420] = 'cs5_4_barrier_03', + [943586995] = 'cs5_4_barrier_04', + [-53803058] = 'cs5_4_barrier_06', + [-300225942] = 'cs5_4_barrier_07', + [1122470808] = 'cs5_4_cs5_04_barriersmr', + [544300149] = 'cs5_4_cs5_04_emissive_lod', + [986334808] = 'cs5_4_cs5_04_emissive', + [-2140853502] = 'cs5_4_cs5_04_kfrl', + [-810191908] = 'cs5_4_cs5_04_mazebillboard', + [1827843696] = 'cs5_4_cs5_04_mazebillboardg', + [1448352205] = 'cs5_4_decal_001', + [1432888757] = 'cs5_4_decal', + [280619597] = 'cs5_4_decals_02', + [587493803] = 'cs5_4_decals_02a', + [332354369] = 'cs5_4_decals_02b', + [1404284587] = 'cs5_4_land_016', + [189484241] = 'cs5_4_land_016a', + [-1478556166] = 'cs5_4_land_016c', + [-1495191381] = 'cs5_4_land_10', + [-1213882579] = 'cs5_4_land_10b', + [-933379939] = 'cs5_4_land_10c', + [1641395128] = 'cs5_4_land01b_004_rcks', + [1187287611] = 'cs5_4_land01b_03_rocks', + [883422540] = 'cs5_4_land01b_21_rocks', + [1925546019] = 'cs5_4_props_train_ipl01_slod', + [-213703583] = 'cs5_4_q_1_dtls', + [245332890] = 'cs5_4_q_1_o', + [-430531550] = 'cs5_4_q_1', + [1735537544] = 'cs5_4_q_2_detail', + [-1140432402] = 'cs5_4_q_2_ladder', + [-101702545] = 'cs5_4_q_2_o', + [247044562] = 'cs5_4_q_2_rail', + [-8646928] = 'cs5_4_q_2_rail2', + [1844374460] = 'cs5_4_q_2_railb', + [1513669712] = 'cs5_4_q_2_railc', + [317846872] = 'cs5_4_q_2', + [1972552621] = 'cs5_4_q_3a_detail', + [327394033] = 'cs5_4_q_3a_hd', + [-1675859649] = 'cs5_4_q_3a_rail', + [1275004922] = 'cs5_4_q_3a', + [-381892866] = 'cs5_4_q_3b_hd', + [-1480376447] = 'cs5_4_q_3b', + [-217212506] = 'cs5_4_q_3d_detail', + [2136972748] = 'cs5_4_q_3d_hd', + [1155804579] = 'cs5_4_q_3d_rail', + [-2068317845] = 'cs5_4_q_3d', + [-757576483] = 'cs5_4_q_3e_detail', + [832545327] = 'cs5_4_q_3e_hd', + [-1762026002] = 'cs5_4_q_3e', + [-1169697367] = 'cs5_4_q_3f_detail', + [-105822788] = 'cs5_4_q_3f_hd', + [-553019612] = 'cs5_4_q_3f_ladder1', + [-1546841281] = 'cs5_4_q_3f_rail', + [426106918] = 'cs5_4_q_3f_rail2', + [190661653] = 'cs5_4_q_3f_rail3', + [-861107885] = 'cs5_4_q_3f', + [1572378862] = 'cs5_4_q_3g_detail', + [-886838156] = 'cs5_4_q_3g_detailb', + [-653672310] = 'cs5_4_q_3g_hd', + [-554029586] = 'cs5_4_q_3g', + [908925044] = 'cs5_4_q_3h_detail', + [-2068801657] = 'cs5_4_q_3h_hd', + [-1475559400] = 'cs5_4_q_3h', + [-1432349015] = 'cs5_4_q_3i_hd', + [-1169988475] = 'cs5_4_q_3i', + [-504742713] = 'cs5_4_q_conv1', + [-1011154839] = 'cs5_4_q_conv2', + [914122218] = 'cs5_4_q_conv3', + [673859910] = 'cs5_4_q_conv4', + [217191126] = 'cs5_4_q_conv5', + [2123986467] = 'cs5_4_q_conv6', + [-99980041] = 'cs5_4_q_conv7', + [-2016999310] = 'cs5_4_q_conv8', + [-783017077] = 'cs5_4_q_conv9', + [382083083] = 'cs5_4_q_convb001', + [-385071976] = 'cs5_4_q_convb002', + [1340972771] = 'cs5_4_q_sign', + [1405069249] = 'cs5_4_qbolts', + [-516750148] = 'cs5_4_qry_g_002', + [1499655170] = 'cs5_4_qry_g_1', + [-954644623] = 'cs5_4_qry_g_3', + [-656971027] = 'cs5_4_qry_g_4', + [-80052171] = 'cs5_4_qryter_01_g', + [-1923933932] = 'cs5_4_qryter_01_g1', + [21923687] = 'cs5_4_qryter_01', + [-1603578666] = 'cs5_4_qryter_02_g', + [839706851] = 'cs5_4_qryter_02', + [-2136452386] = 'cs5_4_qryter_023', + [-1910333167] = 'cs5_4_qryter_03', + [-786372489] = 'cs5_4_qryter_04_g', + [658765306] = 'cs5_4_qryter_04_g1', + [-2098689379] = 'cs5_4_qryter_04', + [-52887940] = 'cs5_4_qryter_05', + [326455669] = 'cs5_4_qryter_06_g', + [-1176001550] = 'cs5_4_qryter_06_g1', + [-543964174] = 'cs5_4_qryter_06', + [1195053891] = 'cs5_4_qryter_07', + [-1802790373] = 'cs5_4_qryter_08_g', + [2013066438] = 'cs5_4_qryter_08', + [1058953285] = 'cs5_4_qryter_09_g', + [-1315215358] = 'cs5_4_qryter_09', + [-1970243353] = 'cs5_4_qryter_10_g', + [755397818] = 'cs5_4_qryter_10', + [-529986184] = 'cs5_4_qryter_11_g', + [662206] = 'cs5_4_qryter_11', + [-528934343] = 'cs5_4_qryter_12_g', + [830340517] = 'cs5_4_qryter_12', + [-1644521326] = 'cs5_4_qryter_13_g', + [1404125707] = 'cs5_4_qryter_13', + [-836007952] = 'cs5_4_qryter_14_g', + [100214428] = 'cs5_4_qryter_14', + [1073050204] = 'cs5_4_qryter_15_g', + [944999248] = 'cs5_4_qryter_15', + [1077183403] = 'cs5_4_qryter_16_g', + [1788178387] = 'cs5_4_qryter_16', + [-1630851009] = 'cs5_4_qryter_17_g', + [1283367630] = 'cs5_4_qryter_17_g1', + [-1315668520] = 'cs5_4_qryter_17', + [1682651574] = 'cs5_4_qryter_18_g', + [-1697427370] = 'cs5_4_qryter_18', + [2099061183] = 'cs5_4_qryter_19_g', + [-1508972855] = 'cs5_4_qryter_19', + [1514739793] = 'cs5_4_qryter_20_g', + [-1227552967] = 'cs5_4_qryter_20', + [-384056647] = 'cs5_4_qryter_21_g', + [145009367] = 'cs5_4_qryter_21', + [-241895740] = 'cs5_4_qryter_22_g', + [441601586] = 'cs5_4_qryter_22', + [-339509595] = 'cs5_4_qryter4_wire', + [-1306245924] = 'cs5_4_qrytrk_01', + [-1612996533] = 'cs5_4_qrytrk_02', + [-1768321593] = 'cs5_4_qrytrk_03', + [688632784] = 'cs5_4_qrytrk_04_piece', + [-2047087484] = 'cs5_4_qrytrk_04', + [1967016713] = 'cs5_4_qrytrk_05', + [-1552278565] = 'cs5_4_qrytrk_06_subd', + [1535514521] = 'cs5_4_qrytrk_06', + [1220506124] = 'cs5_4_qrytrk_07', + [-952078488] = 'cs5_4_qrytrk_08', + [-722269491] = 'cs5_4_qrytrk_09', + [1116627610] = 'cs5_4_qrytrk_10', + [877905445] = 'cs5_4_qrytrk_11', + [1885027891] = 'cs5_4_qrytrk_12', + [1612029352] = 'cs5_4_qrytrk_13', + [-1982336724] = 'cs5_4_qrytrk_14', + [2074825939] = 'cs5_4_qrytrk_15', + [-1275574936] = 'cs5_4_qrytrk_16', + [-311117728] = 'cs5_4_qrytrk_17', + [-540861187] = 'cs5_4_qrytrk_18', + [183661403] = 'cs5_4_qrytrk_19', + [179044594] = 'cs5_4_qrytrk_20', + [549596446] = 'cs5_4_qrytrk_21', + [-371310757] = 'cs5_4_qrytrk_22', + [940727230] = 'cs5_4_qrytrk_23', + [1939067588] = 'cs5_4_qrytrk_24', + [36828888] = 'cs5_4_qrytrk_25_subd', + [-1980891272] = 'cs5_4_qrytrk_25', + [250972553] = 'cs5_4_qrytrk_26', + [624735767] = 'cs5_4_qrytrk_27', + [-1063523113] = 'cs5_4_qrytrk_28', + [310453092] = 'cs5_4_qyell_rail01', + [144838566] = 'cs5_4_qyell_rail02', + [-1108936143] = 'cs5_4_qyell_rail03', + [-1809406287] = 'cs5_4_qyell_rail04', + [267328941] = 'cs5_4_railsegment', + [-1116131777] = 'cs5_4_rockslidewire', + [1114274601] = 'cs5_lod_02_slod3', + [549273264] = 'cs5_lod_1_4_slod3', + [426638029] = 'cs5_lod_rd_slod3', + [-1156763232] = 'cs5_rd_props_avi_ballb', + [852854733] = 'cs5_rd_props_ch3_01_spline_wire028', + [1692593127] = 'cs5_rd_props_ch3_01_spline_wire029', + [2088606820] = 'cs5_rd_props_ch3_01_spline_wire030', + [-2034257688] = 'cs5_rd_props_ch3_01_spline_wire031', + [-1858845231] = 'cs5_rd_props_ch3_01_spline_wire032', + [-1418495409] = 'cs5_rd_props_ch3_01_spline_wire033', + [1065001567] = 'cs5_rd_props_ch3_01_spline_wire034', + [299353882] = 'cs5_rd_props_ch3_01_spline_wire035', + [-1274049459] = 'cs5_rd_props_ch3_01_substn_swire19', + [961003153] = 'cs5_rd_props_ch3substn_w019', + [-735513159] = 'cs5_rd_props_ch3substn_w021', + [-2064130550] = 'cs5_rd_props_cs5_rd_aviation_wi_008', + [859880093] = 'cs5_rd_props_cs5_rd_aviation_wi_009', + [-1394102507] = 'cs5_rd_props_cs5_rd_aviation_wi_010', + [754593596] = 'cs5_rd_props_cs5_rd_aviation_wi_011', + [1469361571] = 'cs5_rd_props_cs5_wire_115', + [-1445539286] = 'cs5_rd_props_cs5_wire_117', + [1932027086] = 'cs5_rd_props_cs5_wire_119', + [1212415161] = 'cs5_rd_props_cs5_wire_217', + [-1400908854] = 'cs5_rd_props_cs5_wire_elec_119', + [280802612] = 'cs5_rd_props_cs5_wire_spline_117', + [-442671370] = 'cs5_rd_props_cs5_wire_spline_118', + [-197133253] = 'cs5_rd_props_cs5_wire_spline_119', + [-1456380749] = 'cs5_rd_props_cs5_wire_spline_120', + [2051114708] = 'cs5_rd_props_cs5_wire_spline_121', + [1038168747] = 'cs5_rd_props_cs5_wire118', + [-84234138] = 'cs5_rd_props_cs5_wire32d001', + [32170822] = 'cs5_rd_props_cs5_wire32e001', + [1785980426] = 'cs5_rd_props_new_w101', + [1503609953] = 'cs5_rd_props_new_w102', + [-1341198021] = 'cs5_rd_props_new_w106', + [-1916949351] = 'cs5_rd_props_new_w107', + [174171619] = 'cs5_rd_props_new_w108', + [-134807282] = 'cs5_rd_props_new_w109', + [-1438622398] = 'cs5_rd_props_new_w110', + [-179735601] = 'cs5_rd_props_new_w111', + [187441280] = 'cs5_rd_props_new_w128', + [1398026443] = 'cs5_rd_props_new_w129', + [1085836440] = 'cs5_rd_props_new_w130', + [1354639333] = 'cs5_rd_props_pr_wire032', + [264716489] = 'cs5_rd_props_prison_sp028', + [1189392131] = 'cs5_rd_props_prison_sp029', + [-24882206] = 'cs5_rd_props_prison_spline020', + [-2119837109] = 'cs5_rd_props_prison_spline028', + [-1812234506] = 'cs5_rd_props_prison_spline029', + [-1545562436] = 'cs5_rd_props_prison_spline031', + [-937926869] = 'cs5_rd_props_prison_spline033', + [1007437585] = 'cs5_rd_props_prison_spline034', + [191391178] = 'cs5_rd_props_prison_spline039', + [557814424] = 'cs5_rd_props_prison_spline042', + [-368073671] = 'cs5_rd_props_prison_spline045', + [1480163471] = 'cs5_rd_props_prison_spline047', + [1169251195] = 'cs5_rd_props_prison_spline048', + [870004687] = 'cs5_rd_props_prison_spline049', + [1847995784] = 'cs5_rd_props_prison_spline050', + [1542687011] = 'cs5_rd_props_prison_spline051', + [1237804231] = 'cs5_rd_props_prison_spline052', + [932692072] = 'cs5_rd_props_prison_spline053', + [319944829] = 'cs5_rd_props_prison_spline060', + [-448324376] = 'cs5_rd_props_prison_spline061', + [1211232657] = 'cs5_rd_props_prison_spline099', + [235778034] = 'cs5_rd_props_prison_w099', + [167459098] = 'cs5_rd_props_prison_w330', + [-853128648] = 'cs5_rd_props_prison_wire329', + [-1208494783] = 'cs5_rd_props_qspline00', + [1872413832] = 'cs5_rd_props_qspline03', + [366315353] = 'cs5_rd_props_qu_wire8', + [1886422555] = 'cs5_rd_props_qua_wire_07b', + [818945631] = 'cs5_rd_props_quarry_wire_009', + [-1301832212] = 'cs5_rd_props_quarry_wire_010', + [-1841044626] = 'cs5_rd_props_quarry_wire_spline009', + [1106453482] = 'cs5_rd_props_quarry_wire_spline010', + [1152971478] = 'cs5_rd_props_quarry_wire009', + [678560102] = 'cs5_rd_props_spline00', + [983868875] = 'cs5_rd_props_spline01', + [1407113279] = 'cs5_rd_props_spline02', + [1711832210] = 'cs5_rd_props_spline03', + [1881379016] = 'cs5_rd_props_spline04', + [-1650824267] = 'cs5_rd_props_spline06', + [-942292945] = 'cs5_rd_props_spline09', + [-1112886887] = 'cs5_rd_props_spline10', + [1047409442] = 'cs5_rd_props_spline11', + [1325454407] = 'cs5_rd_props_spline12', + [-1539408191] = 'cs5_rd_props_spline17', + [1040723774] = 'cs5_rd_props_spline21', + [1733362127] = 'cs5_rd_props_spline25', + [-2053554593] = 'cs5_rd_props_spline26', + [-1130910713] = 'cs5_rd_props_spline27', + [-1906978944] = 'cs5_rd_props_spline28', + [1076541675] = 'cs5_rd_props_spline30', + [2113877223] = 'cs5_rd_props_spline33', + [462811074] = 'cs5_rd_props_spline35', + [-1444967337] = 'cs5_rd_props_spline36', + [-802683150] = 'cs5_rd_props_spln_leg00', + [-574774755] = 'cs5_rd_props_spln_leg01', + [1000168923] = 'cs5_rd_props_spln_leg02', + [1231550832] = 'cs5_rd_props_spln_leg03', + [984112141] = 'cs5_rd_props_spln_leg04', + [1223882914] = 'cs5_rd_props_spln_leg05', + [-2110592247] = 'cs5_rd_props_spln_leg06', + [623653141] = 'cs5_rd_props_spln_leg07', + [1584735118] = 'cs5_rd_props_spln_leg08', + [1957318648] = 'cs5_rd_props_spln_leg09', + [-1701046125] = 'cs5_rd_props_spln_leg10', + [-1403405298] = 'cs5_rd_props_spln_leg11', + [-1338522678] = 'cs5_rd_props_spln_leg12', + [-1039243401] = 'cs5_rd_props_spln_leg13', + [-745174395] = 'cs5_rd_props_spln_leg14', + [-446747112] = 'cs5_rd_props_spln_leg15', + [140604440] = 'cs5_rd_props_spln_leg16', + [749026463] = 'cs5_rd_props_spln_leg18', + [-161820661] = 'cs5_rd_props_spln_leg19', + [1044406525] = 'cs5_rd_props_spln_leg20', + [827377438] = 'cs5_rd_props_spln_leg21', + [589212346] = 'cs5_rd_props_spln_leg22', + [350490181] = 'cs5_rd_props_spln_leg23', + [-2045251437] = 'cs5_rd_props_spln_leg24', + [2001883912] = 'cs5_rd_props_spln_leg25', + [-1091345819] = 'cs5_rd_props_spln_leg28', + [-1317812378] = 'cs5_rd_props_spln_leg29', + [-1493518404] = 'cs5_rd_props_spln_leg30', + [-1736664384] = 'cs5_rd_props_spln_leg31', + [-1525402645] = 'cs5_rd_props_spln_leg32', + [-1764649114] = 'cs5_rd_props_spln_leg33', + [-1082660686] = 'cs5_rd_props_spln_leg34', + [-1321317313] = 'cs5_rd_props_spln_leg35', + [1273364880] = 'cs5_rd_props_spln_leg37', + [-1975189939] = 'cs5_rd_props_spln_leg39', + [105309511] = 'cs5_rd_props_spln_leg40', + [-1082665046] = 'cs5_rd_props_spln_leg41', + [-69628025] = 'cs5_rd_props_splnb_00', + [814184674] = 'cs5_rd_props_splnb_01', + [508908670] = 'cs5_rd_props_splnb_02', + [1157505487] = 'cs5_rd_props_splnb_03', + [-1300235059] = 'cs5_rd_props_splnb_04', + [1734436501] = 'cs5_rd_props_splnb_05', + [1427816968] = 'cs5_rd_props_splnb_06', + [-615854498] = 'cs5_rd_props_splnb_07', + [-912708869] = 'cs5_rd_props_splnb_08', + [859206652] = 'cs5_rd_props_splnb_11', + [83203963] = 'cs5_rd_props_splnb_12', + [1438923031] = 'cs5_rd_props_splnb_13', + [679108228] = 'cs5_rd_props_splnb_14', + [-378609558] = 'cs5_rd_props_splnb_15', + [-1137703443] = 'cs5_rd_props_splnb_16', + [283684705] = 'cs5_rd_props_splnb_17', + [-547435446] = 'cs5_rd_props_splnb_18', + [-1524672560] = 'cs5_rd_props_splnb_19', + [-1941102500] = 'cs5_rd_props_splnb_20', + [1110281246] = 'cs5_rd_props_splnb_21', + [-1337399089] = 'cs5_rd_props_splnb_23', + [1106742314] = 'cs5_rd_props_splnb_24', + [148437734] = 'cs5_rd_props_splnc_09', + [1685008661] = 'cs5_rd_props_splnc_10', + [1398935291] = 'cs5_rd_props_splnc_11', + [-79995253] = 'cs5_rd_props_splnc_17', + [-1896708613] = 'cs5_rd_props_splnc_18', + [-39989276] = 'cs5_rd_props_splnc_21', + [6182261] = 'cs5_rd_props_splnc_23', + [-320229748] = 'cs5_rd_props_splnc_25', + [-1021093120] = 'cs5_rd_props_splnc_27', + [-710803459] = 'cs5_rd_props_splnc_28', + [-1519899143] = 'cs5_rd_props_wire_919', + [-699859141] = 'cs5_roads_01', + [-1562437528] = 'cs5_roads_02', + [-185189227] = 'cs5_roads_03', + [-1432404049] = 'cs5_roads_04_lod', + [-1025222542] = 'cs5_roads_04', + [292746638] = 'cs5_roads_05', + [-502393147] = 'cs5_roads_06', + [399573582] = 'cs5_roads_07', + [-926685315] = 'cs5_roads_10', + [-1737750834] = 'cs5_roads_11', + [-1508466141] = 'cs5_roads_12', + [1613496432] = 'cs5_roads_armco_002', + [1904550642] = 'cs5_roads_armco_003', + [1377639825] = 'cs5_roads_armco_01', + [-1726910218] = 'cs5_roads_armco_01a', + [-1141903051] = 'cs5_roads_armco_02', + [-950580119] = 'cs5_roads_armco_02a', + [-1375447714] = 'cs5_roads_armco_03', + [-78925015] = 'cs5_roads_armco_03a', + [412625544] = 'cs5_roads_armco_04', + [-1491823916] = 'cs5_roads_armco_04a', + [174558759] = 'cs5_roads_armco_05', + [-1256378975] = 'cs5_roads_armco_05a', + [2121187397] = 'cs5_roads_armco_05b', + [1965450147] = 'cs5_roads_armco_06', + [1986244391] = 'cs5_roads_armco_06a', + [1725220608] = 'cs5_roads_armco_07', + [-774464254] = 'cs5_roads_armco_08', + [184054038] = 'cs5_roads_armco_08a', + [-47065719] = 'cs5_roads_armco_08b', + [1008234884] = 'cs5_roads_armco_09', + [-957978669] = 'cs5_roads_armco_09a', + [-1202435409] = 'cs5_roads_armco_09b', + [2035771001] = 'cs5_roads_armco_10', + [1952213501] = 'cs5_roads_armco_10a', + [1276185581] = 'cs5_roads_armco_11', + [-713085543] = 'cs5_roads_armco_11a', + [-1556526834] = 'cs5_roads_armco_11b', + [1554754850] = 'cs5_roads_armco_12', + [1296244247] = 'cs5_roads_armco_12a', + [2013361043] = 'cs5_roads_armco_12b', + [794579588] = 'cs5_roads_armco_13', + [-989950244] = 'cs5_roads_armco_13a', + [-762304001] = 'cs5_roads_armco_13b', + [-1347628245] = 'cs5_roads_armco_14', + [766939018] = 'cs5_roads_armco_14a', + [703857121] = 'cs5_roads_bdg_sgn_01', + [-1377276448] = 'cs5_roads_bdg_sgn_1lod', + [501334526] = 'cs5_roads_bill01', + [-812338089] = 'cs5_roads_billbrd_001', + [591027105] = 'cs5_roads_billbrd_002', + [-1221196922] = 'cs5_roads_billbrd_006', + [1650743780] = 'cs5_roads_billbrd_007', + [1926363839] = 'cs5_roads_billbrd_008', + [1886219778] = 'cs5_roads_billbrdgraffiti', + [-1333647082] = 'cs5_roads_bridge_01_raila', + [-1631320678] = 'cs5_roads_bridge_01_railb', + [186965594] = 'cs5_roads_bridge_01_railc', + [-110675233] = 'cs5_roads_bridge_01_raild', + [-1651478462] = 'cs5_roads_bridge_01', + [-51685123] = 'cs5_roads_bridge_02_raila', + [-301188289] = 'cs5_roads_bridge_02_railb', + [1890817673] = 'cs5_roads_bridge_02', + [-1099619123] = 'cs5_roads_bridge01_strsb_lod', + [-1279531646] = 'cs5_roads_chev_01', + [1580563284] = 'cs5_roads_cs5_roadbrg_01', + [-520026569] = 'cs5_roads_decal002', + [-1467563293] = 'cs5_roads_drtj_01', + [-281948104] = 'cs5_roads_drtj_02', + [-505596529] = 'cs5_roads_drtj_03', + [218926065] = 'cs5_roads_drtj_04', + [-21041326] = 'cs5_roads_drtj_05', + [1213039222] = 'cs5_roads_drtj_06', + [979035793] = 'cs5_roads_drtj_07', + [-1640297804] = 'cs5_roads_fwy_01', + [-1396365368] = 'cs5_roads_fwy_02', + [-681870092] = 'cs5_roads_fwy_03', + [-451798943] = 'cs5_roads_fwy_04', + [329479543] = 'cs5_roads_fwy_05', + [566694338] = 'cs5_roads_fwy_06', + [-1669440631] = 'cs5_roads_fwy_sgn_01', + [-829210710] = 'cs5_roads_fwy_sgn_02', + [-1856123631] = 'cs5_roads_p_01', + [1823474614] = 'cs5_roads_p_03', + [-361529541] = 'cs5_roads_p_05', + [260393314] = 'cs5_roads_p_06', + [-769683117] = 'cs5_roads_rail_01', + [-2137395643] = 'cs5_roads_rail_02', + [1819067883] = 'cs5_roads_rail_03', + [-1655789650] = 'cs5_roads_rail_04', + [899831895] = 'cs5_roads_rail_06', + [1669968961] = 'cs5_roads_rail_07', + [1387729564] = 'cs5_roads_rail_08', + [1898008432] = 'cs5_roads_rail_09', + [-506046176] = 'cs5_roads_rail_bridge01_rl', + [-1157908253] = 'cs5_roads_rail_bridge01_strsa', + [1639646819] = 'cs5_roads_rail_bridge01_strsb', + [-448773208] = 'cs5_roads_rail_bridge01', + [-835627316] = 'cs5_roads_railsegment', + [-651918872] = 'cs5_roads_sign_01', + [-294933386] = 'cs5_roads_sign_02', + [-55949069] = 'cs5_roads_sign_03', + [225766024] = 'cs5_roads_sign_04', + [607524862] = 'cs5_roads_sign_05', + [1430878760] = 'cs5_roads_sign_06', + [1813161914] = 'cs5_roads_sign_07', + [2025210113] = 'cs5_roads_sign_08', + [-1895535203] = 'cs5_roads_sign_09', + [1357803654] = 'cs5_roads_sign_10', + [1722653700] = 'cs5_roads_sign_11', + [1251894258] = 'cs5_roads_sign_12', + [1605340692] = 'cs5_roads_sign_13', + [1828858041] = 'cs5_roads_sign_14', + [37339589] = 'cs5_roads_sign_16b', + [-1006176479] = 'cs5_roads_sng_bdgdcl_002', + [1928606944] = 'cs5_roads_sng_bdgdcl_01', + [-1750757272] = 'cs6_01_04d_glue', + [-135951076] = 'cs6_01_247_market_bar', + [1437145256] = 'cs6_01_247_market_det', + [1207875184] = 'cs6_01_247_market_det2', + [876878136] = 'cs6_01_247_market_emi_lod', + [2121923632] = 'cs6_01_247_market_emi', + [864380569] = 'cs6_01_247_market_ovr', + [-343081070] = 'cs6_01_247_market_railing', + [-17142059] = 'cs6_01_247_market_stair', + [-511505627] = 'cs6_01_247_market', + [-723612599] = 'cs6_01_deci1', + [782090182] = 'cs6_01_deci2', + [1211855617] = 'cs6_01_deci4', + [1611373159] = 'cs6_01_dt_1', + [-177934694] = 'cs6_01_gas_billbd003', + [-956460596] = 'cs6_01_gas_billbd004', + [452303368] = 'cs6_01_gas_bldng_decal', + [338661660] = 'cs6_01_gas_bldng_doors001', + [-1190160187] = 'cs6_01_gas_bldng004', + [1091882474] = 'cs6_01_gas_bldng005_emi_lod', + [679295275] = 'cs6_01_gas_bldng005_emi', + [121779497] = 'cs6_01_gas_bldng005', + [362074574] = 'cs6_01_gas_bldng006', + [-470978944] = 'cs6_01_gas_bldng007', + [-2065623944] = 'cs6_01_gas_fence004', + [-1617278486] = 'cs6_01_gas_fence005', + [-64152297] = 'cs6_01_gas_grnd_d003', + [860097340] = 'cs6_01_gas_grnd_d004', + [1795704951] = 'cs6_01_gas_grnddecal', + [1866796138] = 'cs6_01_gas_rocks004', + [2102569093] = 'cs6_01_gas_rocks005', + [1297205376] = 'cs6_01_gas_rocks006', + [-1222644766] = 'cs6_01_gas_rwire002', + [36424886] = 'cs6_01_gas013', + [275147051] = 'cs6_01_gas014', + [-1855198432] = 'cs6_01_gas015', + [873312357] = 'cs6_01_gas017', + [1334448575] = 'cs6_01_ike_branding', + [-679174660] = 'cs6_01_land01_decal', + [-293660412] = 'cs6_01_land01', + [-1553759538] = 'cs6_01_land02', + [-744892437] = 'cs6_01_liq_decal', + [-327789727] = 'cs6_01_liq_detail', + [-527914076] = 'cs6_01_liq_main', + [468860463] = 'cs6_01_mot_grnd', + [1603784981] = 'cs6_01_mot_tube01', + [1372927376] = 'cs6_01_mot_tube02', + [-1676031468] = 'cs6_01_mot_tube03', + [-1906823535] = 'cs6_01_mot_tube04', + [-1098469247] = 'cs6_01_motel_d2', + [-1517781477] = 'cs6_01_motel_off_d', + [-603050948] = 'cs6_01_motel_off_dtl', + [1188272114] = 'cs6_01_motel_off_e_lod', + [1942067854] = 'cs6_01_motel_off_e', + [513039472] = 'cs6_01_motel_off', + [-1603703180] = 'cs6_01_motel_rm_emi_lod', + [331361638] = 'cs6_01_motel_rm1_d', + [2085106188] = 'cs6_01_motel_rm1_dtl', + [2062850003] = 'cs6_01_motel_rm1_emi_lod', + [96889767] = 'cs6_01_motel_rm1_emi', + [520006906] = 'cs6_01_motel_rm1', + [980504106] = 'cs6_01_motel_rm2_d', + [-1002886127] = 'cs6_01_motel_rm2_dtl', + [-1659383872] = 'cs6_01_motel_rm2_emi', + [238357351] = 'cs6_01_motel_rm2', + [-1142974064] = 'cs6_01_motel_rm3_d', + [865584051] = 'cs6_01_motel_rm3_dtl', + [1233502575] = 'cs6_01_motel_rm3_emi_lod', + [-507201671] = 'cs6_01_motel_rm3_emi', + [-1029671901] = 'cs6_01_motel_rm3', + [2032934637] = 'cs6_01_motel_rm4_d', + [-829528696] = 'cs6_01_motel_rm4_dtl', + [-1319251554] = 'cs6_01_motel_rm4', + [1451908637] = 'cs6_01_motel_rm5_d', + [-304795478] = 'cs6_01_motel_rm5_dtl', + [-416072348] = 'cs6_01_motel_rm5', + [1969055136] = 'cs6_01_motel_sign', + [1426642046] = 'cs6_01_motel_wall01', + [116536653] = 'cs6_01_motelpslabs', + [593693015] = 'cs6_01_paves1', + [-1943471680] = 'cs6_01_paves1dec', + [920990711] = 'cs6_01_road1', + [-733946190] = 'cs6_01_tmp_trailr01_emi_lod', + [1559943929] = 'cs6_01_tmp_trailr01_emi', + [1180935684] = 'cs6_01_tmp_trailr01', + [927204263] = 'cs6_01_tmp_trailr02_emi_lod', + [-1598708797] = 'cs6_01_tmp_trailr02_emi001', + [582180508] = 'cs6_01_tmp_trailr02', + [-2063444593] = 'cs6_01_tmp_trailr03_emi_lod', + [-1538386958] = 'cs6_01_tmp_trailr03_emi', + [845020657] = 'cs6_01_tmp_trailr03', + [-1755948692] = 'cs6_01_tmp_trailr04_emi_lod', + [-754590724] = 'cs6_01_tmp_trailr04_emi', + [-1221654635] = 'cs6_01_tmp_trailr04', + [-1986007389] = 'cs6_01_tmp_trailr05_emi_lod', + [-1935372608] = 'cs6_01_tmp_trailr05_emi', + [-931059143] = 'cs6_01_tmp_trailr05', + [-1896248098] = 'cs6_01_weldshed008_emi_lod', + [-292461221] = 'cs6_01_weldshed008_emi', + [1778518740] = 'cs6_01_weldshed008', + [2074979883] = 'cs6_01_weldshed009', + [987929466] = 'cs6_01_weldshed010', + [1268333799] = 'cs6_01_weldshed011', + [-840154749] = 'cs6_01_weldshed012', + [-946333043] = 'cs6_02_brrier_01', + [895874603] = 'cs6_02_brrier_02', + [622024070] = 'cs6_02_brrier_03', + [531581562] = 'cs6_02_brrier_04', + [727540182] = 'cs6_02_brrier_05', + [-1054110352] = 'cs6_02_brrier_06', + [-830330851] = 'cs6_02_brrier_07', + [1687508037] = 'cs6_02_brrier_08', + [1947136824] = 'cs6_02_brrier_09', + [59412885] = 'cs6_02_brrier_10', + [967966179] = 'cs6_02_brrier_11', + [77960135] = 'cs6_02_brrier_12', + [919402517] = 'cs6_02_brrier_13', + [1696027817] = 'cs6_02_brrier_14', + [323563790] = 'cs6_02_brrier_15', + [-530496101] = 'cs6_02_brrier_20', + [1689961393] = 'cs6_02_cnst_poles', + [-1585003027] = 'cs6_02_con1_g', + [-2016892454] = 'cs6_02_concreteblocks', + [1893534575] = 'cs6_02_const_01_rail', + [-693599186] = 'cs6_02_const_01', + [-264722251] = 'cs6_02_const_02_bar', + [1156440251] = 'cs6_02_const_02', + [14226160] = 'cs6_02_const_03_bar', + [-1686270515] = 'cs6_02_const_03', + [1208618352] = 'cs6_02_const_04_bara', + [1926062838] = 'cs6_02_const_04_barb', + [-1292588395] = 'cs6_02_const_04_pipe', + [-1218209259] = 'cs6_02_const_04_yel', + [200535736] = 'cs6_02_const_04', + [760829066] = 'cs6_02_const_05_bar01', + [1687569155] = 'cs6_02_const_05_bar02', + [-773457251] = 'cs6_02_const_05', + [-671217774] = 'cs6_02_const_06_bara', + [156527174] = 'cs6_02_const_06_barb', + [1185490998] = 'cs6_02_const_06_pipe', + [-912467965] = 'cs6_02_const_06_rail', + [-973253615] = 'cs6_02_const_06_yel', + [-1080568319] = 'cs6_02_const_06', + [-988745544] = 'cs6_02_const_07_rail', + [1717478292] = 'cs6_02_const_07', + [1680449322] = 'cs6_02_const_08', + [-2001049525] = 'cs6_02_const_09', + [1911797570] = 'cs6_02_const_10', + [1008618404] = 'cs6_02_const_11', + [1280568335] = 'cs6_02_const_12', + [1802475967] = 'cs6_02_const_14_bar', + [698249032] = 'cs6_02_deci1a', + [327965272] = 'cs6_02_glue_01', + [574257076] = 'cs6_02_glue_02', + [-270429437] = 'cs6_02_glue_03', + [1894520074] = 'cs6_02_glue_04', + [2123346001] = 'cs6_02_glue_05', + [-1065764356] = 'cs6_02_mtx_01', + [-1772020745] = 'cs6_02_mxt_02_g', + [169222073] = 'cs6_02_mxt_02', + [1100591492] = 'cs6_02_mxt_04_g', + [629855906] = 'cs6_02_mxt_04', + [1256792418] = 'cs6_02_mxt_06', + [-523157948] = 'cs6_02_mxt_06g', + [-1441004470] = 'cs6_02_mxt_07_d', + [1018594557] = 'cs6_02_mxt_07', + [1719130239] = 'cs6_02_mxt_08', + [-367534175] = 'cs6_02_mxt_09', + [745074858] = 'cs6_02_mxt_10_g', + [1888578434] = 'cs6_02_mxt_10', + [-131271720] = 'cs6_02_mxt_11_d', + [1475131953] = 'cs6_02_mxt_11', + [438181388] = 'cs6_02_mxt_12_g_patch', + [728952374] = 'cs6_02_mxt_12_g', + [-1481254462] = 'cs6_02_mxt_12', + [1472759139] = 'cs6_02_mxt_bd_01', + [1227401696] = 'cs6_02_mxt_bd_016', + [-1603037512] = 'cs6_02_mxt_bd_02', + [-769721842] = 'cs6_02_mxt_bd_03', + [-78721935] = 'cs6_02_mxt_bd_04', + [2020871662] = 'cs6_02_mxt_bd_04a', + [-1361300599] = 'cs6_02_mxt_bd_05', + [163998048] = 'cs6_02_mxt_bd_07', + [1428356336] = 'cs6_02_mxt_bd_15', + [2018518621] = 'cs6_02_mxt_bd_15a', + [932559486] = 'cs6_02_mxt_bdw_01', + [-455830884] = 'cs6_02_mxt_stand03', + [-478572574] = 'cs6_02_mxt_stand06', + [457945752] = 'cs6_02_mxt_std6', + [1503091697] = 'cs6_02_mxt_track_01', + [1003036757] = 'cs6_02_mxt_track_02', + [734167112] = 'cs6_02_mxt_track_03', + [1791421284] = 'cs6_02_mxt_tube007', + [1757865820] = 'cs6_02_mxt_tube008', + [1304697344] = 'cs6_02_mxtlnd_01d', + [-33194765] = 'cs6_02_silo_temp', + [-724544991] = 'cs6_02_ttrack01_dec', + [1128314010] = 'cs6_02_ttrack01', + [-12601079] = 'cs6_02_ttrack11', + [677743444] = 'cs6_02_ttrack12', + [1521250273] = 'cs6_02_ttrack13', + [-1656556259] = 'cs6_02_ttrack14', + [947596159] = 'cs6_02_ttrack15', + [-2133377978] = 'cs6_02_ttrack16', + [1804669370] = 'cs6_02_ttrack17', + [591298538] = 'cs6_02_ttrack26', + [-1504512160] = 'cs6_02_weed_01', + [1956451317] = 'cs6_02_weed_02', + [-1980612961] = 'cs6_02_weed_03', + [462500733] = 'cs6_02_wtf_con01d', + [-112280487] = 'cs6_02_wtp_con002', + [1320773421] = 'cs6_02_wtp_con003', + [-826415308] = 'cs6_02_wtp_con004', + [-1122941989] = 'cs6_02_wtp_con005', + [-171163476] = 'cs6_02_wtp_con005a', + [-1303695793] = 'cs6_02_wtp_con006', + [-1604744596] = 'cs6_02_wtp_con007', + [-1966882874] = 'cs6_02_wtp_con01', + [-716417838] = 'cs6_02_wtp_con02', + [2111462579] = 'cs6_02_wtp_tub_g', + [1249798653] = 'cs6_03_003', + [-1290762221] = 'cs6_03_003b', + [-956363975] = 'cs6_03_02gasmc_d06', + [-553633483] = 'cs6_03_02gasmc03', + [-1468423147] = 'cs6_03_05gasmc01', + [273974936] = 'cs6_03_bb', + [-1212561295] = 'cs6_03_bigsign01', + [358283549] = 'cs6_03_billboardrs', + [-869337251] = 'cs6_03_ch6_05_officedetails001', + [902306969] = 'cs6_03_crmd3_map_prox', + [-200306307] = 'cs6_03_decal_01', + [1700328462] = 'cs6_03_decal_02', + [-440240937] = 'cs6_03_decal_03', + [-1699013621] = 'cs6_03_decal_03a', + [134805165] = 'cs6_03_decal_03b', + [-1024315593] = 'cs6_03_decal_04', + [-1389624405] = 'cs6_03_decal_05', + [520710000] = 'cs6_03_decal_06', + [930781254] = 'cs6_03_decal_07', + [-1439236671] = 'cs6_03_decal_08', + [-1762863315] = 'cs6_03_decal_09', + [1219344792] = 'cs6_03_decal_10', + [-829884980] = 'cs6_03_decals_house', + [-1448143001] = 'cs6_03_ds07_frame', + [-119684498] = 'cs6_03_ds07', + [-2090822466] = 'cs6_03_dtrack2', + [-1840149169] = 'cs6_03_emissive_1_lod', + [2066685422] = 'cs6_03_emissive_1', + [1499846972] = 'cs6_03_garagemain', + [-1944351167] = 'cs6_03_garagemc_lot_d', + [-719454909] = 'cs6_03_garagemc_lot', + [-668335014] = 'cs6_03_garaget_beam', + [-433244070] = 'cs6_03_garaget', + [-896371277] = 'cs6_03_gasmc_d02', + [-1379746796] = 'cs6_03_gasmc_d04', + [591898396] = 'cs6_03_gasmc_d05', + [1836726944] = 'cs6_03_gasmc600_beam', + [-912949993] = 'cs6_03_gasmc600_emi_lod', + [1619256034] = 'cs6_03_gasmc600_emi', + [2003613328] = 'cs6_03_gasmc600', + [1296186556] = 'cs6_03_gasmc708', + [248137403] = 'cs6_03_gasmc805', + [-519523706] = 'cs6_03_glue_02', + [-768404261] = 'cs6_03_glue_03', + [793693973] = 'cs6_03_glue_06', + [-282759563] = 'cs6_03_house01_d1', + [1901293376] = 'cs6_03_house02_glue', + [-598888439] = 'cs6_03_house02', + [1100922771] = 'cs6_03_house02l_d1', + [275665407] = 'cs6_03_house02l_d1a', + [573044082] = 'cs6_03_house02l_d1b', + [-588551430] = 'cs6_03_house02l_d1c', + [-1693689629] = 'cs6_03_house02l', + [1542787525] = 'cs6_03_housemc01_d', + [-52091796] = 'cs6_03_housemc01_d2', + [-20541580] = 'cs6_03_housemc01_emi_lod', + [-1789005517] = 'cs6_03_housemc01_emi', + [-1828466145] = 'cs6_03_housemc01_ex', + [-1931403972] = 'cs6_03_housemc01', + [-805526670] = 'cs6_03_housemc02', + [-564370992] = 'cs6_03_housemc0d_ex', + [386392787] = 'cs6_03_land01', + [-178675849] = 'cs6_03_land02', + [59980778] = 'cs6_03_land03', + [-1446748811] = 'cs6_03_lot_decals', + [1677834412] = 'cs6_03_moteldecal01', + [1250526652] = 'cs6_03_moteldecal02', + [-2019491862] = 'cs6_03_moteldecal03', + [476931171] = 'cs6_03_moteldetails', + [1682403747] = 'cs6_03_motellotmc', + [-2093600692] = 'cs6_03_motelmain_beam', + [-245283505] = 'cs6_03_motelmain_emi_lod', + [-448155518] = 'cs6_03_motelmain_emi', + [2051280754] = 'cs6_03_motelmain', + [1259831609] = 'cs6_03_motelsignmc', + [-11233302] = 'cs6_03_officedecal01', + [1483229720] = 'cs6_03_officedecal02', + [-1128026349] = 'cs6_03_officedetails', + [-1657873291] = 'cs6_03_officeposters', + [1888375985] = 'cs6_03_parkdecal_a', + [-1451254793] = 'cs6_03_parkdecal', + [1989688730] = 'cs6_03_parkdecal02', + [-532438069] = 'cs6_03_parking_lot', + [-2105992084] = 'cs6_03_radio_frame01', + [-980180320] = 'cs6_03_radio_frame02', + [560042944] = 'cs6_03_radio_power', + [2012062992] = 'cs6_03_radio_sta_dec', + [-280569792] = 'cs6_03_radio_sta', + [-1646575838] = 'cs6_03_radio1dec', + [1349678685] = 'cs6_03_rdio_sta_fizz', + [1011073294] = 'cs6_03_shop_beams', + [-1716309088] = 'cs6_03_shop', + [-1780988826] = 'cs6_03_shops_decal1', + [315967096] = 'cs6_03_shopsmc03_beamsa', + [553444039] = 'cs6_03_shopsmc03_beamsb', + [-166114505] = 'cs6_03_shopsmc03', + [-28179138] = 'cs6_03_tk12', + [793880021] = 'cs6_03_trailmc_emi_lod', + [1560655721] = 'cs6_03_trailmc_emi', + [1831182356] = 'cs6_03_trailmc', + [-186962584] = 'cs6_03_trailmc02', + [-560398108] = 'cs6_03_trailmc03', + [1361319947] = 'cs6_03_usedcarmc_d', + [-1981393180] = 'cs6_03_usedcarmc001_emi_lod', + [-1842227671] = 'cs6_03_usedcarmc001_emi', + [-349865507] = 'cs6_03_usedcarmc001', + [873674129] = 'cs6_03_usedlotmc_d001', + [-1854895831] = 'cs6_03_usedlotmc_d002_e_lod', + [1779755080] = 'cs6_03_usedlotmc_d002_emi', + [30101762] = 'cs6_03_usedlotmc_d002', + [-393567562] = 'cs6_03_usedlotmc', + [2013324229] = 'cs6_03_weed_02', + [1235814166] = 'cs6_03_weed_03', + [-1837852500] = 'cs6_03_weed_04', + [-1894543233] = 'cs6_04_antenna_d', + [-742829495] = 'cs6_04_antenna', + [-90934242] = 'cs6_04_canmod014', + [-1681985266] = 'cs6_04_canmod02', + [-956414052] = 'cs6_04_canmod06', + [-236118663] = 'cs6_04_canmod08', + [-1539374813] = 'cs6_04_canroof_ladder008', + [-1343350662] = 'cs6_04_canroof_ladder010', + [-1040073567] = 'cs6_04_canroof_ladder011', + [1121599048] = 'cs6_04_canroof_ladder012', + [1314215230] = 'cs6_04_canroof_ladder013', + [-1610090334] = 'cs6_04_canroof_ladder014', + [-1811621823] = 'cs6_04_canroof_ladder03', + [-1505067828] = 'cs6_04_canroof_ladder04', + [1888555354] = 'cs6_04_canroof_ladder05', + [-2100316713] = 'cs6_04_canroof_ladder06', + [-553488837] = 'cs6_04_canroof_ladder07', + [-249982371] = 'cs6_04_canroof_ladder08', + [-1149982944] = 'cs6_04_canroof_ladder09', + [-1505887009] = 'cs6_04_canroof_ladder9', + [-1225759311] = 'cs6_04_canroof', + [-1592460689] = 'cs6_04_decal_01', + [-834517691] = 'cs6_04_decal_ant', + [-717581105] = 'cs6_04_deci01', + [1012065022] = 'cs6_04_deci02', + [830786914] = 'cs6_04_deci03', + [2026888187] = 'cs6_04_deci04', + [235931257] = 'cs6_04_deci05', + [171179665] = 'cs6_04_deci06', + [-1667619997] = 'cs6_04_deci07', + [-441436790] = 'cs6_04_deci08', + [-672261626] = 'cs6_04_deci09', + [-1235364946] = 'cs6_04_deci10', + [-1833202582] = 'cs6_04_deci11', + [1508285121] = 'cs6_04_deci12', + [-936216745] = 'cs6_04_deci13', + [-225072058] = 'cs6_04_draingully003', + [137196040] = 'cs6_04_draingully2', + [94025177] = 'cs6_04_elbase00', + [-275957966] = 'cs6_04_elbasedec019', + [232659694] = 'cs6_04_elgnddec015', + [864935741] = 'cs6_04_emissive_lod', + [2019390332] = 'cs6_04_emissive', + [-1973545523] = 'cs6_04_glue_02', + [2014015784] = 'cs6_04_glue_03', + [-1352572973] = 'cs6_04_glue_04', + [-1717357481] = 'cs6_04_glue_05', + [483321338] = 'cs6_04_grating', + [-680610067] = 'cs6_04_hball01', + [-564269280] = 'cs6_04_j6_road06', + [1370446615] = 'cs6_04_land05_details', + [-763754760] = 'cs6_04_land2', + [605590948] = 'cs6_04_land6_dd', + [824594158] = 'cs6_04_land8_d', + [1143821166] = 'cs6_04_lockup01', + [-1371020943] = 'cs6_04_lockup01b', + [551357646] = 'cs6_04_lockup02', + [-628005613] = 'cs6_04_mainblock', + [1193643034] = 'cs6_04_mainrails1', + [827089000] = 'cs6_04_mainrails2', + [596821237] = 'cs6_04_mainrails3', + [285515733] = 'cs6_04_mainrails4', + [517040684] = 'cs6_04_mr_rails1', + [397717498] = 'cs6_04_mr_rails10', + [1117521384] = 'cs6_04_mr_rails11', + [1764654821] = 'cs6_04_mr_rails2', + [879498593] = 'cs6_04_mr_rails3', + [1740864531] = 'cs6_04_mr_rails4', + [839192727] = 'cs6_04_mr_rails5', + [2109024250] = 'cs6_04_mr_rails6', + [1457510988] = 'cs6_04_mr_rails7', + [-1631655411] = 'cs6_04_mr_rails8', + [1897139896] = 'cs6_04_mr_rails9', + [-1019681568] = 'cs6_04_mr_walks', + [1449847106] = 'cs6_04_mr_walks3', + [1219579343] = 'cs6_04_mr_walks4', + [1924178381] = 'cs6_04_mr_walks5', + [961413170] = 'cs6_04_newcut', + [774202467] = 'cs6_04_newcut01', + [-1067022105] = 'cs6_04_newcut02', + [477741324] = 'cs6_04_newcut04', + [412864423] = 'cs6_04_pris_dec00', + [556589257] = 'cs6_04_pris_dec01', + [770964051] = 'cs6_04_pris_dec02', + [1086234600] = 'cs6_04_pris_dec03', + [1332559173] = 'cs6_04_pris_dec04', + [1547982579] = 'cs6_04_pris_dec05', + [1706650077] = 'cs6_04_pris_dec06', + [2005536126] = 'cs6_04_pris_dec07', + [-2129387374] = 'cs6_04_pris_dec08', + [-1828862875] = 'cs6_04_pris_dec09', + [-1899315981] = 'cs6_04_pris_dec10', + [-1726164585] = 'cs6_04_pris_dec11', + [-1453886964] = 'cs6_04_pris_dec12', + [-1681664287] = 'cs6_04_pris_dec13', + [-1244394751] = 'cs6_04_pris_dec14', + [-936792148] = 'cs6_04_pris_dec15', + [-793329466] = 'cs6_04_pris_dec16', + [-486447781] = 'cs6_04_pris_dec17', + [-48785009] = 'cs6_04_pris_dec18', + [227097202] = 'cs6_04_pris_dec19', + [1231827859] = 'cs6_04_pris_dec20', + [1059004153] = 'cs6_04_pris_dec21', + [1285732868] = 'cs6_04_pris_dec22', + [848594408] = 'cs6_04_pris_dec23', + [542564717] = 'cs6_04_pris_dec24', + [369609935] = 'cs6_04_pris_dec25', + [-1060495467] = 'cs6_04_prison_det', + [-740949308] = 'cs6_04_prison07', + [1614683386] = 'cs6_04_prison13', + [-1068828592] = 'cs6_04_prison130', + [1843771465] = 'cs6_04_prison14', + [1545056515] = 'cs6_04_prison149', + [-785772902] = 'cs6_04_prison150', + [877063495] = 'cs6_04_prison19_rail', + [100624510] = 'cs6_04_prison19', + [-21747737] = 'cs6_04_prison20_rail', + [-1011686206] = 'cs6_04_prison20', + [-1398314552] = 'cs6_04_prisoncp04', + [468859408] = 'cs6_04_prisonterrain01', + [-284237854] = 'cs6_04_prisonterrain02', + [-1065844042] = 'cs6_04_prisonterrain03', + [408466037] = 'cs6_04_prisonterrain07', + [-1671619924] = 'cs6_04_prisontower1', + [-1306225777] = 'cs6_04_prisontower10', + [1876607400] = 'cs6_04_prisontower2', + [1636640013] = 'cs6_04_prisontower3', + [1399851219] = 'cs6_04_prisontower4', + [1159293990] = 'cs6_04_prisontower5', + [1486066462] = 'cs6_04_prisontower6', + [1255274395] = 'cs6_04_prisontower7', + [1007606293] = 'cs6_04_prisontower8', + [-2119821570] = 'cs6_04_props_cables045', + [-1829232655] = 'cs6_04_props_cables045a', + [1304897981] = 'cs6_04_props_cables055', + [-1755890464] = 'cs6_04_props_cables056', + [-1700737899] = 'cs6_04_props_subst_cable44x', + [1176464052] = 'cs6_04_props_substn_cables013', + [-1649134155] = 'cs6_04_props_wire_116', + [-1000406262] = 'cs6_04_props_wire_117', + [1932300748] = 'cs6_04_props_wire078', + [-718896410] = 'cs6_04_pwalkway04', + [-622333235] = 'cs6_04_railsside1', + [-1207063271] = 'cs6_04_railsside2', + [-132246652] = 'cs6_04_railstop1', + [1258338632] = 'cs6_04_railstop2', + [484171007] = 'cs6_04_railstop3', + [-1254257220] = 'cs6_04_railstop4', + [734859097] = 'cs6_04_reception', + [710886348] = 'cs6_04_road01', + [470329119] = 'cs6_04_road02', + [-427082715] = 'cs6_04_road03', + [-920321703] = 'cs6_04_road04', + [99121887] = 'cs6_04_road05', + [1093046212] = 'cs6_04_sat_rail01', + [1793450818] = 'cs6_04_sat_rail02', + [371341760] = 'cs6_04_sat_rail03', + [123968579] = 'cs6_04_sat_rail04', + [839250311] = 'cs6_04_sat_rail05', + [603870584] = 'cs6_04_sat_rail06', + [-467582427] = 'cs6_04_satellite_dish_concrete', + [-1103789764] = 'cs6_04_satellite_dish', + [-1886641995] = 'cs6_04_ss_dirt1_001', + [-1127908569] = 'cs6_04_ss_dirt1_002', + [1943955802] = 'cs6_04_ss_dirt1_003', + [-2058286017] = 'cs6_04_ss_dirt1_004', + [550217691] = 'cs6_04_tank_white002', + [233185290] = 'cs6_04_tankblue_002', + [2112920672] = 'cs6_04_temp_fence_01', + [-1779581142] = 'cs6_04_ter_decal', + [472998003] = 'cs6_04_water02', + [1836085588] = 'cs6_04_weed_01', + [-401119556] = 'cs6_04_weed_02', + [2065894585] = 'cs6_04_weed_03', + [1553935136] = 'cs6_05_barrier05b', + [766921535] = 'cs6_05_blarney_glue', + [19077392] = 'cs6_05_blarney', + [1798407591] = 'cs6_05_brrier_01', + [1053109451] = 'cs6_05_brrier_02', + [1225146701] = 'cs6_05_brrier_03', + [-552146994] = 'cs6_05_chump1', + [959805270] = 'cs6_05_cliff1_d', + [-1146943635] = 'cs6_05_cliff1_d01', + [575344623] = 'cs6_05_cliff1', + [100970946] = 'cs6_05_cs_dtrack_003', + [1874330927] = 'cs6_05_cs_dtrack_004', + [-1655840678] = 'cs6_05_cs_dtrack_005', + [-1819751216] = 'cs6_05_cs_dtrack_006', + [1154133845] = 'cs6_05_cs_dtrack_007', + [-1021301762] = 'cs6_05_cs_dtrack_008', + [-433229012] = 'cs6_05_cs_dtrack_010', + [1983682389] = 'cs6_05_details', + [280158507] = 'cs6_05_dirtroad9', + [-1431722765] = 'cs6_05_drtrd1', + [-421217998] = 'cs6_05_drtrd101', + [-371349155] = 'cs6_05_emissive_1_lod', + [721244355] = 'cs6_05_emissive_1', + [611037035] = 'cs6_05_emissive_2_lod', + [1507241589] = 'cs6_05_emissive_2', + [-988417138] = 'cs6_05_farm_shed', + [-1589059138] = 'cs6_05_glue_01', + [-1318911590] = 'cs6_05_glue_04', + [1515148236] = 'cs6_05_glue_05', + [1210789563] = 'cs6_05_house', + [-236907710] = 'cs6_05_house01_d', + [184374081] = 'cs6_05_house01', + [-468041731] = 'cs6_05_indfarm_det1', + [-179608993] = 'cs6_05_indfarm_det2', + [1578087406] = 'cs6_05_indfarm_det3', + [1868453515] = 'cs6_05_indfarm_det4', + [2123429104] = 'cs6_05_indfarm_det5', + [333062020] = 'cs6_05_indfarm_det6', + [-1002765344] = 'cs6_05_indfarm_frame', + [-1058895367] = 'cs6_05_indfarm_lad1', + [25266958] = 'cs6_05_indfarm_lad2', + [-2063361301] = 'cs6_05_indfarm_pipe', + [-1046690088] = 'cs6_05_indfarm', + [-1808236439] = 'cs6_05_land_ctar', + [107880919] = 'cs6_05_land05_c', + [463518467] = 'cs6_05_land05_c001', + [-130644632] = 'cs6_05_land05_d', + [1083282957] = 'cs6_05_land05_g', + [1249837085] = 'cs6_05_land05', + [-562334821] = 'cs6_05_land05b', + [-433571987] = 'cs6_05_land07', + [570189776] = 'cs6_05_land07x_g', + [-2035986692] = 'cs6_05_land07x', + [-248431966] = 'cs6_05_land10_d', + [1271824724] = 'cs6_05_land10', + [-638987498] = 'cs6_05_landwl', + [-317977318] = 'cs6_05_mcfarm_03808', + [1081988163] = 'cs6_05_mcfarm_09218_frame', + [-1337268192] = 'cs6_05_mcfarm_09218', + [1736309010] = 'cs6_05_mcfarm_10221', + [-1956172288] = 'cs6_05_mcfarm_10524_beams', + [784214813] = 'cs6_05_mcfarm_10524', + [-321681157] = 'cs6_05_mcfarm_12728', + [1597775548] = 'cs6_05_mcfarm_21579', + [245050632] = 'cs6_05_mcfarm_23150', + [-864408993] = 'cs6_05_mcfarm_25759', + [1590604693] = 'cs6_05_mcfarm_29563', + [2062253366] = 'cs6_05_mcfarm_30573', + [-85736419] = 'cs6_05_mcfarm_31179', + [1246783833] = 'cs6_05_mcfarm_31180', + [490891031] = 'cs6_05_mcfarm_d_r02', + [-1050472022] = 'cs6_05_mcfarm_roads', + [-907419711] = 'cs6_05_mcfarm_shadow', + [-80936949] = 'cs6_05_mcfarm_water_frame', + [-4543365] = 'cs6_05_mcfarm_water', + [147512351] = 'cs6_05_mockup_02_bars', + [-1804658420] = 'cs6_05_mockup_02', + [-1152915779] = 'cs6_05_mockup_04', + [129952253] = 'cs6_05_sign', + [950282398] = 'cs6_05_silo_002_d', + [411634005] = 'cs6_05_silo_002_lad', + [1470378312] = 'cs6_05_silo_002_rails', + [1757531970] = 'cs6_05_silo_002', + [-607161898] = 'cs6_05_ttrack01', + [-1165710098] = 'cs6_05_watertank_base', + [-177029642] = 'cs6_05_watertank006', + [-674940874] = 'cs6_05_weed_01', + [283814528] = 'cs6_05_weed_05', + [585453173] = 'cs6_05_weed_06', + [188097091] = 'cs6_06_cattleshed1', + [1758239351] = 'cs6_06_cul5', + [1780830600] = 'cs6_06_culvertbars', + [147979052] = 'cs6_06_culvertshadowmesh', + [-1041707551] = 'cs6_06_culvertshadowmesh003', + [616026235] = 'cs6_06_culvertshadowmesh2', + [625722034] = 'cs6_06_dec00', + [-167635259] = 'cs6_06_dec139', + [2074086150] = 'cs6_06_decals00', + [1928034721] = 'cs6_06_decals01', + [1612862479] = 'cs6_06_decals02', + [1421360443] = 'cs6_06_decals03', + [1231171989] = 'cs6_06_decals0498', + [1529861424] = 'cs6_06_decals0499', + [-112785830] = 'cs6_06_decals05', + [1257951953] = 'cs6_06_decals0555', + [662233789] = 'cs6_06_decals06', + [-73364727] = 'cs6_06_decals07', + [698738451] = 'cs6_06_decals08', + [64245752] = 'cs6_06_decals11', + [302181461] = 'cs6_06_decals12', + [-1879676882] = 'cs6_06_decals13', + [645174584] = 'cs6_06_decals14', + [878588171] = 'cs6_06_decals15', + [1259888255] = 'cs6_06_decals16', + [-1517546659] = 'cs6_06_decals17', + [1333215549] = 'cs6_06_decals17a', + [1934887158] = 'cs6_06_decals17c', + [-1271025472] = 'cs6_06_decals18', + [-361039122] = 'cs6_06_decals18a', + [-1767672676] = 'cs6_06_decals20', + [199845571] = 'cs6_06_decals20a', + [2068233699] = 'cs6_06_decals22', + [-1792304705] = 'cs6_06_decals2299', + [1401745008] = 'cs6_06_decals23', + [-258342648] = 'cs6_06_decals2322', + [-574684458] = 'cs6_06_decals24', + [671815533] = 'cs6_06_decals25', + [1082476641] = 'cs6_06_decals26', + [-974845643] = 'cs6_06_decalsa00', + [-1399990649] = 'cs6_06_decalsa01', + [172823048] = 'cs6_06_decalsa02', + [555958196] = 'cs6_06_decalsa03', + [-474430240] = 'cs6_06_decalsa04', + [-242786179] = 'cs6_06_decalsa05', + [2017684979] = 'cs6_06_decalsa06', + [1171032326] = 'cs6_06_decalsa07', + [748967606] = 'cs6_06_decalsa08', + [979300907] = 'cs6_06_decalsa09', + [1442626062] = 'cs6_06_decalsa10', + [1215045357] = 'cs6_06_decalsa11', + [1308666386] = 'cs6_06_decalsa12', + [-433687153] = 'cs6_06_decalsa98', + [1947734388] = 'cs6_06_decalsa99', + [-901839810] = 'cs6_06_emissive01_lod', + [1806143881] = 'cs6_06_emissive01', + [1349435266] = 'cs6_06_emissive02_lod', + [2036837641] = 'cs6_06_emissive02', + [-1383379649] = 'cs6_06_farmhouse_a', + [1993301960] = 'cs6_06_farmhouse_d', + [1282433636] = 'cs6_06_farmhouse_railing', + [-537867771] = 'cs6_06_farmhouse', + [1820067451] = 'cs6_06_feedstore', + [-1794869135] = 'cs6_06_glue_01', + [867415505] = 'cs6_06_glue_02', + [511447354] = 'cs6_06_growtunnelground', + [-809886272] = 'cs6_06_jbarns_d', + [1394217100] = 'cs6_06_jbarns', + [-1837544751] = 'cs6_06_jbillboard', + [-344460040] = 'cs6_06_jcrop', + [365543649] = 'cs6_06_jcrop001', + [-787335305] = 'cs6_06_jcrop002', + [56007675] = 'cs6_06_jcrop003', + [889683804] = 'cs6_06_jcrop004', + [249377548] = 'cs6_06_jcrop005', + [19568551] = 'cs6_06_jcrop006', + [1918466563] = 'cs6_06_jcrop007', + [1691213548] = 'cs6_06_jcrop008', + [1175757178] = 'cs6_06_jcrop009', + [-125463947] = 'cs6_06_jcrop010', + [1839426082] = 'cs6_06_jhouse_beam', + [-205740421] = 'cs6_06_jhouse_d', + [-1527799821] = 'cs6_06_jhouse_detail', + [-963649079] = 'cs6_06_jhouse', + [1158079405] = 'cs6_06_jstorage_d', + [-1589949133] = 'cs6_06_jstorage_frame', + [1183751109] = 'cs6_06_jstorage', + [1721357078] = 'cs6_06_land_01', + [-354538538] = 'cs6_06_land_01aa', + [169646621] = 'cs6_06_land_03', + [1034191152] = 'cs6_06_land_05', + [1894737861] = 'cs6_06_land_06', + [1629636651] = 'cs6_06_land_07', + [-424258735] = 'cs6_06_land_08', + [-1734461662] = 'cs6_06_land_09', + [726669249] = 'cs6_06_land_09b_steps', + [1676589337] = 'cs6_06_land_09b', + [-1319048817] = 'cs6_06_land_10', + [1350193223] = 'cs6_06_missionculvert', + [-18542849] = 'cs6_06_oldrocktemplate', + [-1599783914] = 'cs6_06_polyt_det01', + [557316048] = 'cs6_06_shacks_a', + [-682957833] = 'cs6_06_shacks_d', + [-1248206633] = 'cs6_06_shacks', + [156443600] = 'cs6_06_tracks_01', + [782582150] = 'cs6_06_tracks_012', + [752937707] = 'cs6_06_tracks_03', + [1894216439] = 'cs6_06_tracks_04', + [1310600549] = 'cs6_06_tracks_05', + [-850221548] = 'cs6_06_tracks_34', + [702035286] = 'cs6_06_trough_small_01', + [865093830] = 'cs6_06_trough_small_02', + [-1135391008] = 'cs6_06_weed_02', + [-239133910] = 'cs6_08_bridge1', + [134629304] = 'cs6_08_bridge2', + [-1069121894] = 'cs6_08_bridge3_rail', + [375776375] = 'cs6_08_bridge3', + [726734462] = 'cs6_08_brig_002_d', + [1052343357] = 'cs6_08_brig_01_rail', + [216954763] = 'cs6_08_brig_01', + [736999506] = 'cs6_08_brig_02_rail', + [1083789718] = 'cs6_08_brig_04_rail', + [1405456573] = 'cs6_08_church_alpha', + [-618231527] = 'cs6_08_church', + [1254084351] = 'cs6_08_churchdets', + [1254107586] = 'cs6_08_churchshed', + [-1648348813] = 'cs6_08_churchsign', + [1566537548] = 'cs6_08_churchsteps01', + [-784605433] = 'cs6_08_churchsteps03', + [-1926201652] = 'cs6_08_cs_deserttrack_005', + [1337254880] = 'cs6_08_cs_water10_slod', + [1591070267] = 'cs6_08_cs_water10', + [2123173319] = 'cs6_08_cs_water55_slod', + [-51900299] = 'cs6_08_cs_water55', + [440278307] = 'cs6_08_cs_water9_slod', + [1554522577] = 'cs6_08_cs_water9', + [-1576923171] = 'cs6_08_culvertshadowmesh', + [1310879828] = 'cs6_08_decalmh04', + [1382980825] = 'cs6_08_decfffg456', + [2120887930] = 'cs6_08_decs01', + [1822264033] = 'cs6_08_decs02', + [1541990772] = 'cs6_08_decs03', + [-714220416] = 'cs6_08_decs05', + [-1015334757] = 'cs6_08_decs06', + [-1698044103] = 'cs6_08_decs07', + [207833710] = 'cs6_08_decs09', + [770084552] = 'cs6_08_decs10', + [-1089883888] = 'cs6_08_decs11', + [-1857825403] = 'cs6_08_decs12', + [-1565591461] = 'cs6_08_decs13', + [1961893086] = 'cs6_08_decs14', + [-652680010] = 'cs6_08_decs15', + [-323987954] = 'cs6_08_ds02', + [451883659] = 'cs6_08_ds03', + [1870396759] = 'cs6_08_ds0345', + [288104197] = 'cs6_08_ds04', + [-1885955108] = 'cs6_08_ds05', + [-1473721088] = 'cs6_08_ds07', + [-695948873] = 'cs6_08_ds08', + [-526697276] = 'cs6_08_ds13', + [2042013036] = 'cs6_08_ds133', + [778721377] = 'cs6_08_ds14', + [1776358421] = 'cs6_08_ds147', + [-1717457198] = 'cs6_08_ds17', + [-2011658640] = 'cs6_08_ds20', + [-577326769] = 'cs6_08_ds21', + [-330510661] = 'cs6_08_ds22', + [1092745316] = 'cs6_08_ds23', + [-809364058] = 'cs6_08_ds24', + [145622909] = 'cs6_08_ds25', + [1816743606] = 'cs6_08_ds27', + [2049501813] = 'cs6_08_ds28', + [70306297] = 'cs6_08_emi_church_lod', + [-589025923] = 'cs6_08_emi_church', + [3412510] = 'cs6_08_emissive001_lod', + [2015701145] = 'cs6_08_emissive001', + [-930723908] = 'cs6_08_feats_07a', + [-1027982300] = 'cs6_08_feats_07b', + [-954720885] = 'cs6_08_glue_01', + [-34534592] = 'cs6_08_glue_02', + [507399098] = 'cs6_08_glue_04', + [518202814] = 'cs6_08_gm_rubweeds017', + [-513099827] = 'cs6_08_house1', + [-774882752] = 'cs6_08_house1aw', + [-1959220250] = 'cs6_08_house1de', + [1541766831] = 'cs6_08_housedecal', + [-1169924810] = 'cs6_08_land_01', + [-957516152] = 'cs6_08_land_02', + [1451562429] = 'cs6_08_land_03', + [1874544681] = 'cs6_08_land_04', + [650884671] = 'cs6_08_land_05', + [1096018767] = 'cs6_08_land_06', + [-800421574] = 'cs6_08_land_07', + [-586571080] = 'cs6_08_land_08', + [1540169793] = 'cs6_08_land_09', + [2113252026] = 'cs6_08_mine_decals', + [920857783] = 'cs6_08_mine_rocks', + [-2001020215] = 'cs6_08_mine', + [-1086803953] = 'cs6_08_river_dec01', + [-772385398] = 'cs6_08_river_dec02', + [712252195] = 'cs6_08_rockstep', + [-1773191273] = 'cs6_08_rshouse1', + [1135466802] = 'cs6_08_steps_2', + [-1884780780] = 'cs6_08_struct08_base', + [1561432715] = 'cs6_08_struct08_beam01', + [-2120983664] = 'cs6_08_struct08_beam03', + [-853660933] = 'cs6_08_struct08_fizz', + [-1823197622] = 'cs6_08_struct08', + [1528798538] = 'cs6_08_track09', + [1972426716] = 'cs6_08_track10', + [561439882] = 'cs6_08_track1121', + [-599180038] = 'cs6_08_trailsteps', + [1651002681] = 'cs6_08_wall_1', + [-1811419286] = 'cs6_08_wall_dec', + [-801432124] = 'cs6_08_weed_01', + [-1266031006] = 'cs6_08_weed_02', + [-1361192182] = 'cs6_08_weed_03', + [-1185583115] = 'cs6_08_weed_04', + [-1020385824] = 'cs6_08_wooddec', + [-1268775157] = 'cs6_08a_cs6_08s_dirt00', + [1809164496] = 'cs6_08a_culv002', + [934822038] = 'cs6_08a_culv003', + [-795224389] = 'cs6_08a_culv1', + [156393165] = 'cs6_08a_culvert03', + [386856011] = 'cs6_08a_ds00', + [-1520004868] = 'cs6_08a_ds01', + [1834066131] = 'cs6_08a_ds02', + [-765793564] = 'cs6_08a_ds04', + [1604912514] = 'cs6_08a_ds05', + [680925017] = 'cs6_08a_ds06', + [908767874] = 'cs6_08a_ds07', + [-1995089834] = 'cs6_08a_ds08', + [-1696662551] = 'cs6_08a_ds09', + [666604882] = 'cs6_08a_ds099', + [-16595589] = 'cs6_08a_ds10', + [-315874866] = 'cs6_08a_ds11', + [542595425] = 'cs6_08a_ds111', + [-484241988] = 'cs6_08a_ds12', + [1353345225] = 'cs6_08a_ds13', + [-950053323] = 'cs6_08a_ds14', + [-1223903856] = 'cs6_08a_ds15', + [-1409704086] = 'cs6_08a_ds16', + [432339711] = 'cs6_08a_ds17', + [1607927586] = 'cs6_08a_ds19', + [822618753] = 'cs6_08a_ds20', + [591433458] = 'cs6_08a_ds21', + [-1630697958] = 'cs6_08a_ds22', + [158620506] = 'cs6_08a_ds23', + [-71909409] = 'cs6_08a_ds24', + [-236670134] = 'cs6_08a_glue_01', + [33313657] = 'cs6_08a_glue_02', + [398098165] = 'cs6_08a_glue_03', + [426059000] = 'cs6_08a_land_00_decal', + [2044907544] = 'cs6_08a_land_00', + [1939401999] = 'cs6_08a_land_01_decal', + [-144585952] = 'cs6_08a_land_01', + [-966132845] = 'cs6_08a_land_02_decal', + [697347957] = 'cs6_08a_land_02', + [604983841] = 'cs6_08a_land_03_decal', + [320701071] = 'cs6_08a_land_03', + [477798474] = 'cs6_08a_land_05_decal', + [-1484838056] = 'cs6_08a_land_05', + [-1205297884] = 'cs6_08a_land_06_decal', + [-1746039755] = 'cs6_08a_land_06', + [-538695398] = 'cs6_08a_land_06b_decal', + [1734731524] = 'cs6_08a_land_06b', + [1409023421] = 'cs6_08a_land_07_decal', + [-1025842673] = 'cs6_08a_land_07', + [-1256438126] = 'cs6_08a_land_08', + [1750088603] = 'cs6_08a_land_09_decal', + [1855306118] = 'cs6_08a_land_09', + [313203733] = 'cs6_08a_land_10_decal', + [2140134546] = 'cs6_08a_land_10', + [-1567692613] = 'cs6_08a_land_11_decal', + [498531371] = 'cs6_08a_land09', + [1868667883] = 'cs6_08a_land16', + [622960770] = 'cs6_08a_rock_01', + [576979731] = 'cs6_08a_str_d00', + [287662230] = 'cs6_08a_str_d01', + [130567644] = 'cs6_08a_str_d02', + [-175199895] = 'cs6_08a_str_d03', + [-271835676] = 'cs6_08a_str_d04', + [1991130743] = 'cs6_08a_struct01', + [1718066666] = 'cs6_08a_struct02', + [1396602776] = 'cs6_08a_struct03', + [848001673] = 'cs6_08a_struct04_beam', + [1088738021] = 'cs6_08a_struct04', + [1709413960] = 'cs6_08a_struct05_poles', + [796078082] = 'cs6_08a_struct05', + [256110496] = 'cs6_08a_struct06', + [-63092333] = 'cs6_08a_struct07', + [-1219511346] = 'cs6_08a_weed_01', + [-1526098110] = 'cs6_08a_weed_02', + [-52803882] = 'cs6_08a_weed_03', + [101203855] = 'cs6_08atrack1', + [-817442291] = 'cs6_08atrack2', + [1348031524] = 'cs6_08atrack3', + [741411796] = 'cs6_08atrack4', + [53153067] = 'cs6_09_bge2_shd_lod', + [-1553720859] = 'cs6_09_bridge2_railing', + [-1823678403] = 'cs6_09_bridge2_shd', + [2045409354] = 'cs6_09_bridge2', + [-460469849] = 'cs6_09_culvert00a', + [-1225921948] = 'cs6_09_deczi_01a', + [531119063] = 'cs6_09_deczi_01b', + [579281616] = 'cs6_09_deczi01', + [-863915113] = 'cs6_09_deczi02a', + [1188227943] = 'cs6_09_deczi03', + [-536848268] = 'cs6_09_deczi04a', + [-742998047] = 'cs6_09_deczi04b', + [-1217999727] = 'cs6_09_deczi05', + [-375246585] = 'cs6_09_deczi06', + [-380467834] = 'cs6_09_drtrd_01', + [-1333947427] = 'cs6_09_drtrd_02', + [-957468864] = 'cs6_09_land_01', + [-1246917441] = 'cs6_09_land_02', + [-74980348] = 'cs6_09_land_02b', + [-1616944981] = 'cs6_09_land_03', + [-1847474896] = 'cs6_09_land_04', + [-1944798826] = 'cs6_09_land_05', + [2120097321] = 'cs6_09_land_06', + [-290322744] = 'cs6_09_pipe002', + [-589422391] = 'cs6_09_pipe01', + [1226300766] = 'cs6_09_river1_slod', + [945418830] = 'cs6_09_river1', + [-65392741] = 'cs6_09_river2_slod', + [784588578] = 'cs6_09_river2', + [699976810] = 'cs6_10_069', + [-1233814769] = 'cs6_10_68', + [1691130027] = 'cs6_10_billbd_003', + [1697049754] = 'cs6_10_billbd_01', + [1109927581] = 'cs6_10_billbd_03', + [-1334282593] = 'cs6_10_billboard01', + [-564150219] = 'cs6_10_build1', + [796549737] = 'cs6_10_build2', + [871552818] = 'cs6_10_building_farm', + [-2094860705] = 'cs6_10_cs_brrier_004', + [1820150036] = 'cs6_10_cs_brrier_005', + [-1741938579] = 'cs6_10_cs_brrier_009', + [-435340466] = 'cs6_10_cs_brrier_010', + [-205826390] = 'cs6_10_cs_brrier_011', + [1206386418] = 'cs6_10_cs_brrier_014', + [-510905796] = 'cs6_10_cs_brrier_017', + [-21205860] = 'cs6_10_cs_brrier_018', + [234556185] = 'cs6_10_cs_brrier_019', + [527964995] = 'cs6_10_cs_brrier_020', + [1370554292] = 'cs6_10_cs_brrier_021', + [1840822211] = 'cs6_10_cs_brrier_023', + [1214586400] = 'cs6_10_decals_01', + [2110458091] = 'cs6_10_decals_02', + [1678955899] = 'cs6_10_decals_03', + [728818740] = 'cs6_10_decals_04', + [-111280113] = 'cs6_10_decals_05', + [1464712177] = 'cs6_10_decals_06', + [-1122485735] = 'cs6_10_desert_hse_2a', + [1841310388] = 'cs6_10_desert_hse_2axt', + [-1851800969] = 'cs6_10_deserthouse_007_xtra', + [1330162173] = 'cs6_10_deserthouse_007', + [-716145295] = 'cs6_10_details_farm', + [-2124457081] = 'cs6_10_details', + [-566490784] = 'cs6_10_emissive_lod', + [-1711307965] = 'cs6_10_emissive', + [1870307852] = 'cs6_10_emissive1_lod', + [-235026393] = 'cs6_10_emissive1', + [-877718262] = 'cs6_10_emissive2_lod', + [-1598544491] = 'cs6_10_emissive2', + [-953946241] = 'cs6_10_gas_rocks007', + [36498559] = 'cs6_10_gas_station', + [-1545759284] = 'cs6_10_laddera', + [-1993865629] = 'cs6_10_land01_decals', + [-1084509319] = 'cs6_10_land01_decals001', + [1249649011] = 'cs6_10_land01', + [-710883717] = 'cs6_10_land03_decals', + [1771560874] = 'cs6_10_land03', + [-1953772329] = 'cs6_10_nojoker', + [1393470169] = 'cs6_10_railing', + [1099024726] = 'cs6_10_tg', + [1968791137] = 'cs6_10_tgt', + [-148745862] = 'cs6_10_tiretrks00', + [136901511] = 'cs6_10_tiretrks01', + [-462902265] = 'cs6_10_tiretrks02', + [-1277834526] = 'cs6_10_tiretrks03', + [-1040914656] = 'cs6_10_tiretrks04', + [-1785295260] = 'cs6_10_tiretrks05', + [-1588484646] = 'cs6_10_tiretrks06', + [1911277327] = 'cs6_10_tiretrks07', + [1042826250] = 'cs6_10_weed_01', + [436566929] = 'cs6_10_weed_02', + [196796156] = 'cs6_10_weed_03', + [-899192822] = 'cs6_lod_em_slod3', + [1625755713] = 'cs6_lod_slod3_01', + [1462303941] = 'cs6_lod_slod3_02', + [734406144] = 'cs6_lod_slod3_03', + [445416333] = 'cs6_lod_slod3_04', + [1767325783] = 'cs6_rd_props_backwire030', + [-2115053015] = 'cs6_rd_props_combo_dslod', + [242184401] = 'cs6_rd_props_combo02_dslod', + [-1540463829] = 'cs6_rd_props_combo03_dslod', + [266877826] = 'cs6_rd_props_combo04_dslod', + [-1284342579] = 'cs6_rd_props_combo05_dslod', + [260402204] = 'cs6_rd_props_combo06_dslod', + [1687444383] = 'cs6_rd_props_combo07_dslod', + [288585151] = 'cs6_rd_props_combo09_dslod', + [-752088566] = 'cs6_rd_props_combo10_dslod', + [-1108409148] = 'cs6_rd_props_combo11_dslod', + [859017127] = 'cs6_rd_props_combo13_dslod', + [1156837704] = 'cs6_rd_props_combo14_dslod', + [-1838879457] = 'cs6_rd_props_combo15_dslod', + [-633462745] = 'cs6_rd_props_combo16_dslod', + [1101288160] = 'cs6_rd_props_combo17_dslod', + [-246110504] = 'cs6_rd_props_combo21_dslod', + [-1476497295] = 'cs6_rd_props_combo22_dslod', + [1014104930] = 'cs6_rd_props_combo23_dslod', + [1649640931] = 'cs6_rd_props_combo24_dslod', + [-1253744992] = 'cs6_rd_props_combo25_dslod', + [999407888] = 'cs6_rd_props_combo26_dslod', + [-623269308] = 'cs6_rd_props_combo28_dslod', + [-296400018] = 'cs6_rd_props_combo29_dslod', + [920256376] = 'cs6_rd_props_combo30_dslod', + [778360570] = 'cs6_rd_props_combo31_dslod', + [-186701349] = 'cs6_rd_props_combo32_dslod', + [-152803704] = 'cs6_rd_props_combo33_dslod', + [713435846] = 'cs6_rd_props_combo34_dslod', + [475040381] = 'cs6_rd_props_combo35_dslod', + [-1247871349] = 'cs6_rd_props_combo36_slod', + [-1936252098] = 'cs6_rd_props_combo37_dslod', + [-353133910] = 'cs6_rd_props_combo38_dslod', + [-1148183669] = 'cs6_rd_props_combo39_dslod', + [970857598] = 'cs6_rd_props_combo40_dslod', + [110986942] = 'cs6_rd_props_combo41_dslod', + [-890445052] = 'cs6_rd_props_combo42_dslod', + [-49172668] = 'cs6_rd_props_combo43_dslod', + [1287664070] = 'cs6_rd_props_combo44_dslod', + [835844368] = 'cs6_rd_props_combo46_dslod', + [-740636533] = 'cs6_rd_props_combo48_dslod', + [-1781149402] = 'cs6_rd_props_combo50_dslod', + [722174797] = 'cs6_rd_props_combo51_dslod', + [1377383093] = 'cs6_rd_props_combo53_dslod', + [-2038951014] = 'cs6_rd_props_combo54_dslod', + [565294167] = 'cs6_rd_props_combo56_dslod', + [827755135] = 'cs6_rd_props_combo57_dslod', + [-2026144634] = 'cs6_rd_props_combo58_dslod', + [1162586001] = 'cs6_rd_props_combo61_dslod', + [1988792310] = 'cs6_rd_props_combo62_dslod', + [-2012592168] = 'cs6_rd_props_combo63_dslod', + [-132749966] = 'cs6_rd_props_combo64_dslod', + [143753081] = 'cs6_rd_props_combo65_dslod', + [784833887] = 'cs6_rd_props_combo66_dslod', + [-580217887] = 'cs6_rd_props_combo67_dslod', + [1299713992] = 'cs6_rd_props_combo68_dslod', + [-930926066] = 'cs6_rd_props_combo69_dslod', + [-1874268051] = 'cs6_rd_props_combo71_dslod', + [1269593611] = 'cs6_rd_props_combo72_dslod', + [2037239750] = 'cs6_rd_props_combo73_dslod', + [1279378078] = 'cs6_rd_props_combo74_dslod', + [1432013008] = 'cs6_rd_props_combo75_dslod', + [1830876645] = 'cs6_rd_props_combo76_dslod', + [-1874178381] = 'cs6_rd_props_combo77_dslod', + [-967737821] = 'cs6_rd_props_combo78_dslod', + [1425510986] = 'cs6_rd_props_combo79_dslod', + [-1640094464] = 'cs6_rd_props_cs3_04_tel_hvy005', + [-1537350029] = 'cs6_rd_props_cs6_sp_elec_wirestand003', + [-1954768016] = 'cs6_rd_props_cs6_sp_elec_wirethin003', + [-1243743587] = 'cs6_rd_props_cs6_sp_tele_wirethin003', + [-1500115701] = 'cs6_rd_props_cs6_spline029', + [869144249] = 'cs6_rd_props_cs6_spline030', + [1100722772] = 'cs6_rd_props_cs6_spline031', + [1598287268] = 'cs6_rd_props_cs6_spline032', + [-1192845084] = 'cs6_rd_props_cs6_spline033', + [-699475020] = 'cs6_rd_props_cs6_spline034', + [-1698208602] = 'cs6_rd_props_cs6_spline039', + [1583541450] = 'cs6_rd_props_cs6_spline040', + [1277708373] = 'cs6_rd_props_cs6_spline041', + [1005987825] = 'cs6_rd_props_cs6_spline042', + [39826677] = 'cs6_rd_props_cs6_spline044', + [-266727318] = 'cs6_rd_props_cs6_spline045', + [-555422212] = 'cs6_rd_props_cs6_spline046', + [1524524529] = 'cs6_rd_props_cs6_spline047', + [910925004] = 'cs6_rd_props_cs6_spline049', + [-215211858] = 'cs6_rd_props_cs6_spline050', + [239720169] = 'cs6_rd_props_cs6_spline051', + [397273521] = 'cs6_rd_props_cs6_spline052', + [-1992006163] = 'cs6_rd_props_cs6_spline15', + [636904316] = 'cs6_rd_props_cs6wire_x030', + [1406838389] = 'cs6_rd_props_d_wire_spline030', + [-1203636828] = 'cs6_rd_props_elec_spline671', + [1936092142] = 'cs6_rd_props_elec_spline672', + [-1628349921] = 'cs6_rd_props_elec_spline672a', + [1151569513] = 'cs6_rd_props_elec_spline673', + [266413285] = 'cs6_rd_props_elec_spline674', + [-461153856] = 'cs6_rd_props_elec_wire_spl204', + [-150798657] = 'cs6_rd_props_elec_wire_spl205', + [-1196457447] = 'cs6_rd_props_elec_wire_spl206', + [-894949878] = 'cs6_rd_props_elec_wire_spl207', + [-1654142066] = 'cs6_rd_props_elec_wire_spl208', + [-1355714783] = 'cs6_rd_props_elec_wire_spl209', + [-976250051] = 'cs6_rd_props_elec_wire_spl219', + [-1826933583] = 'cs6_rd_props_elec_wire_spl220', + [-2132832198] = 'cs6_rd_props_elec_wire_spl221', + [-1531783200] = 'cs6_rd_props_elec_wire_spl223', + [-915103385] = 'cs6_rd_props_elec_wire_spl224', + [81303598] = 'cs6_rd_props_elec_wire_spl226', + [-613923506] = 'cs6_rd_props_elec_wire_spl227', + [676060948] = 'cs6_rd_props_elec_wire_spl228', + [386219143] = 'cs6_rd_props_elec_wire_spl229', + [2019997286] = 'cs6_rd_props_elec_wire_spl353', + [1722880763] = 'cs6_rd_props_elec_wire_spl354', + [-1661960327] = 'cs6_rd_props_elec_wire_spl355', + [792765467] = 'cs6_rd_props_elec_wire_spl356', + [-1650458316] = 'cs6_rd_props_elec_wire_spl357', + [-1369791831] = 'cs6_rd_props_elec_wire_spl358', + [-997208301] = 'cs6_rd_props_elec_wire_spl359', + [350972965] = 'cs6_rd_props_elec_wire_spl360', + [-266755454] = 'cs6_rd_props_elec_wire_spl362', + [-1041512921] = 'cs6_rd_props_elec_wire_spl363', + [-1398039641] = 'cs6_rd_props_elec_wire_spl364', + [-1099612358] = 'cs6_rd_props_elec_wire_spl365', + [2080094780] = 'cs6_rd_props_elec_wire_spl367', + [1311956651] = 'cs6_rd_props_elec_wire_spl368', + [1619133533] = 'cs6_rd_props_elec_wire_spl370', + [1907140274] = 'cs6_rd_props_elec_wire_spl371', + [1274895188] = 'cs6_rd_props_elec_wire_spl372', + [1946135460] = 'cs6_rd_props_elec_wire_spl373', + [1237210914] = 'cs6_rd_props_elec_wire_spl374', + [1483994253] = 'cs6_rd_props_elec_wire_spl375', + [642322488] = 'cs6_rd_props_elec_wire_spl376', + [1017789690] = 'cs6_rd_props_elec_wire_spl377', + [182737263] = 'cs6_rd_props_elec_wire_spl378', + [-517208577] = 'cs6_rd_props_elec_wire_spl379', + [2047032631] = 'cs6_rd_props_elec_wire_spl380', + [1733105611] = 'cs6_rd_props_elec_wire_spl381', + [-727420292] = 'cs6_rd_props_elec_wire_spl382', + [-1453843480] = 'cs6_rd_props_elec_wire_spl383', + [-483913849] = 'cs6_rd_props_elec_wire_spl386', + [1056655136] = 'cs6_rd_props_elec_wire_spl388', + [443416306] = 'cs6_rd_props_elec_wire_spl390', + [-398648687] = 'cs6_rd_props_elec_wire_spl391', + [791208807] = 'cs6_rd_props_elec_wire_spl619', + [-372844032] = 'cs6_rd_props_elec_wire_spl621', + [-940818689] = 'cs6_rd_props_elec_wire600', + [-1869524922] = 'cs6_rd_props_elec_wire604', + [1238614728] = 'cs6_rd_props_elec_wire608', + [1006446363] = 'cs6_rd_props_elec_wire609', + [-1151654667] = 'cs6_rd_props_elec_wire610', + [-2082359805] = 'cs6_rd_props_elec_wire614', + [1296812240] = 'cs6_rd_props_elec_wire618', + [1536288092] = 'cs6_rd_props_elec_wire619', + [-957162784] = 'cs6_rd_props_elec_wire621', + [-605944670] = 'cs6_rd_props_elec_wire622', + [710779020] = 'cs6_rd_props_elec_wire630', + [2130266566] = 'cs6_rd_props_elec_wire633', + [1962979313] = 'cs6_rd_props_elec_wire640', + [1735955681] = 'cs6_rd_props_elec_wire641', + [1386212140] = 'cs6_rd_props_elec_wire643', + [776151667] = 'cs6_rd_props_elec_wire645', + [1116490501] = 'cs6_rd_props_elec_wire648', + [-188731538] = 'cs6_rd_props_elec_wire649', + [505543097] = 'cs6_rd_props_elec_wire672', + [246373076] = 'cs6_rd_props_elec_wire673', + [-482638867] = 'cs6_rd_props_elec_wire675', + [1072217402] = 'cs6_rd_props_elec_wire676', + [341108243] = 'cs6_rd_props_elec_wire678', + [252304253] = 'cs6_rd_props_elec_wire679', + [-1042461143] = 'cs6_rd_props_elec_wire680', + [1880435354] = 'cs6_rd_props_elec_wire681', + [98358823] = 'cs6_rd_props_elec_wire683', + [-1291079550] = 'cs6_rd_props_elec_wire684', + [-1455252240] = 'cs6_rd_props_elec_wire685', + [689314969] = 'cs6_rd_props_elec_wire686', + [1459681390] = 'cs6_rd_props_elec_wire687', + [-322493444] = 'cs6_rd_props_elec_wire688', + [-495186074] = 'cs6_rd_props_elec_wire689', + [1073203556] = 'cs6_rd_props_elec_wire690', + [-432531994] = 'cs6_rd_props_elec_wire691', + [1665830925] = 'cs6_rd_props_elec_wire692', + [2040315057] = 'cs6_rd_props_elec_wire693', + [-2000856334] = 'cs6_rd_props_elec_wire694', + [-1896192148] = 'cs6_rd_props_elec_wire695', + [-1371134465] = 'cs6_rd_props_elec_wire696', + [-796726664] = 'cs6_rd_props_elec_wire698', + [1613531597] = 'cs6_rd_props_elec_wire699', + [885230574] = 'cs6_rd_props_elec_wire700', + [1165372755] = 'cs6_rd_props_elec_wire701', + [-65846568] = 'cs6_rd_props_elec_x671', + [-2053425080] = 'cs6_rd_props_elewirec_x72', + [-1703066178] = 'cs6_rd_props_newire01', + [-1429739949] = 'cs6_rd_props_newire02', + [224373637] = 'cs6_rd_props_newire03', + [437109985] = 'cs6_rd_props_newire04', + [677142910] = 'cs6_rd_props_newire05', + [1182899656] = 'cs6_rd_props_newire06', + [-1001776801] = 'cs6_rd_props_newire07', + [-489892252] = 'cs6_rd_props_newire09', + [-21094061] = 'cs6_rd_props_newirex01', + [1678520338] = 'cs6_rd_props_sitewire_spl009', + [1704276996] = 'cs6_rd_props_sitewire_spl010', + [523577161] = 'cs6_rd_props_sitewire_spl011', + [268634341] = 'cs6_rd_props_sitewire_spl012', + [1179809151] = 'cs6_rd_props_sitewire_spl015', + [915658242] = 'cs6_rd_props_sitewire_spl016', + [565652909] = 'cs6_rd_props_sitewire_spl024', + [1175123540] = 'cs6_rd_props_sitewire_spl026', + [-582638393] = 'cs6_rd_props_sitewire_spl027', + [1250983771] = 'cs6_rd_props_sitewire_spl028', + [-1053779162] = 'cs6_rd_props_sp_elec_stand004', + [-1659093696] = 'cs6_rd_props_sp_elec_thin004', + [-906139449] = 'cs6_rd_props_sp_tele_stand003', + [-1742011101] = 'cs6_rd_props_sp_tele_stand004', + [-45258971] = 'cs6_rd_props_wire_sp_el_th004', + [-1167247111] = 'cs6_rd_props_wire_sp_te_he004', + [809035405] = 'cs6_rd_props_wire_spline024', + [-142281434] = 'cs6_rd_props_wire_spline025', + [-1879890432] = 'cs6_rd_props_wire_spline029', + [-572342098] = 'cs6_rd_props_wire_spline031', + [-1885297621] = 'cs6_rd_props_wire_spline032', + [-883483753] = 'cs6_rd_props_wire_spline033', + [-48431326] = 'cs6_rd_props_wire_spline034', + [1489024620] = 'cs6_rd_props_wire_spline035', + [1265277888] = 'cs6_rd_props_wire_spline036', + [-2111862487] = 'cs6_rd_props_wire_spline037', + [-1494166837] = 'cs6_rd_props_wire_spline038', + [1123225153] = 'cs6_rd_props_wire_spline040', + [-1621735670] = 'cs6_rd_props_wire_spline042', + [-532559652] = 'cs6_rd_props_wire_spline045', + [134795234] = 'cs6_rd_props_wirecs6_x031', + [1627905862] = 'cs6_roads_00', + [-898091091] = 'cs6_roads_39', + [-614967287] = 'cs6_roads_40', + [631467174] = 'cs6_roads_41', + [867895509] = 'cs6_roads_42', + [864055576] = 'cs6_roads_99', + [-2043731465] = 'cs6_roads_99b', + [1405025983] = 'cs6_roads_armco_01', + [1262378051] = 'cs6_roads_armco_01a', + [1516501646] = 'cs6_roads_armco_01b', + [1573556954] = 'cs6_roads_armco_09', + [1442165857] = 'cs6_roads_armco_smsh_02', + [194393004] = 'cs6_roads_armcohill_01', + [-512565410] = 'cs6_roads_armcohill_02', + [655944369] = 'cs6_roads_armcohill_03', + [-1175893971] = 'cs6_roads_armorail', + [973408147] = 'cs6_roads_brd_07', + [1805609671] = 'cs6_roads_brd_08', + [-2009029327] = 'cs6_roads_brd_10', + [-486778201] = 'cs6_roads_brd_11', + [-1738934372] = 'cs6_roads_brd_12_shdw', + [-203096968] = 'cs6_roads_brd_12', + [454915376] = 'cs6_roads_brd_j7', + [1892729375] = 'cs6_roads_brj_007', + [-832363378] = 'cs6_roads_dec01', + [69424338] = 'cs6_roads_dec013', + [-1155972421] = 'cs6_roads_dec014', + [-502182934] = 'cs6_roads_dec02', + [-217518631] = 'cs6_roads_dec03', + [-2072309569] = 'cs6_roads_dec04', + [-1729873519] = 'cs6_roads_dec05', + [-1431446236] = 'cs6_roads_dec06', + [-1144815793] = 'cs6_roads_dec07', + [1300341453] = 'cs6_roads_dec08', + [-1123614206] = 'cs6_roads_dec09', + [-110363625] = 'cs6_roads_dec10', + [-407021382] = 'cs6_roads_dec11', + [-685230192] = 'cs6_roads_dec12', + [385407510] = 'cs6_roads_drd_020', + [-95215413] = 'cs6_roads_drd_022', + [-1291806081] = 'cs6_roads_drd_13a', + [-2106586023] = 'cs6_roads_drd_14', + [-530724813] = 'cs6_roads_drd_16', + [-2030552355] = 'cs6_roads_j2rd_06', + [-854838255] = 'cs6_roads_jrd_06', + [663439812] = 'cs6_roads_rbrid1_r1', + [216208500] = 'cs6_roads_rbrid1_r2', + [-1715557110] = 'cs6_roads_rbrid1', + [1243031380] = 'cs6_roads_roadbrg_01_dec', + [-2130678575] = 'cs6_roads_roadbrg_01_r1', + [1382649764] = 'cs6_roads_roadbrg_01_r2', + [-102146395] = 'cs6_roads_roadbrg_01_r3', + [999782048] = 'cs6_roads_roadbrg_01', + [-214019926] = 'cs6_roads_sign_01', + [-1634986799] = 'cs6_roads_sign_017', + [265582436] = 'cs6_roads_sign_018', + [-1499285608] = 'cs6_roads_sign_02', + [-820246426] = 'cs6_roads_sign_03', + [24243473] = 'cs6_roads_sign_04', + [732971405] = 'cs6_roads_sign_05', + [-571464178] = 'cs6_roads_sign_06', + [1128689885] = 'cs6_roads_sign_07', + [956914787] = 'cs6_roads_sign_08', + [583643108] = 'cs6_roads_sign_09', + [-1659985604] = 'cs6_roads_sign_10', + [499720875] = 'cs6_roads_sign_11', + [260474406] = 'cs6_roads_sign_12', + [-2110755968] = 'cs6_roads_sign_13', + [1945554701] = 'cs6_roads_sign_14', + [1215559684] = 'cs6_roads_sign_15', + [-1888221689] = 'cs6_roads_sign_19', + [-1921318099] = 'cs6_roads_sign_20', + [835305005] = 'cs6_roads_sign_21_lod', + [-1663262224] = 'cs6_roads_sign_21', + [-1326462442] = 'cs6_roads_sign_22', + [808405135] = 'cs6_roads_sign_23', + [1132851004] = 'cs6_roads_sign_24', + [-735309686] = 'cs6_roads_sign_25', + [1507985588] = 'cs6_roads_sign_26_lod', + [-433998731] = 'cs6_roads_sign_26', + [428289365] = 'cs6_roads_slt2', + [-1133965569] = 'cs6_roads020', + [-1377504785] = 'cs6_roads021', + [-1843507740] = 'cs6_roads08', + [274544724] = 'cs6_roadsb_armco_hill_5', + [2009057979] = 'cs6_roadsb_armco_hill_5a', + [-2096766649] = 'cs6_roadsb_armco_hill_5b', + [1734759197] = 'cs6_roadsb_armco_right010', + [1900505960] = 'cs6_roadsb_armco00', + [-1812193375] = 'cs6_roadsb_armco00a', + [-1199932979] = 'cs6_roadsb_armco01', + [1185515585] = 'cs6_roadsb_armco01a', + [1170183257] = 'cs6_roadsb_armco02', + [-1319183194] = 'cs6_roadsb_armco02a', + [-1935826412] = 'cs6_roadsb_armco03', + [2044782531] = 'cs6_roadsb_armco03a', + [2027820507] = 'cs6_roadsb_dirtrd006', + [-801203686] = 'cs6_roadsb_dirtrd006b', + [-399776348] = 'cs6_roadsb_jnct00', + [-1243938557] = 'cs6_roadsb_jnct01', + [-876008225] = 'cs6_roadsb_jnct02', + [-1325500598] = 'cs6_roadsb_jnct04', + [2142737597] = 'cs6_roadsb_jnct05', + [-1803436463] = 'cs6_roadsb_jnct06', + [1713312926] = 'cs6_roadsb_rb00', + [1944104993] = 'cs6_roadsb_rb01', + [1917048453] = 'cs6_roadsb_rba011', + [-1682691739] = 'cs6_roadsb_rba012', + [-1755709053] = 'cs6_roadsb_rd_sign_03', + [1429147975] = 'cs6_roadsb_ttrack01rd_dec', + [-1934375558] = 'cs6_roadsb00', + [1645342775] = 'cs6_roadsb03', + [-1786793983] = 'cs6_roadsb03a', + [-1983970986] = 'cs6_roadsb058_lod', + [2004152760] = 'cs6_roadsb058', + [-1070900845] = 'cs6_roadsb058a_lod', + [1593870068] = 'cs6_roadsb058a', + [1132545973] = 'cs6_roadsb079_lod', + [-577618911] = 'cs6_roadsb079', + [1467982609] = 'cs6_roadsb079a_lod', + [-564374893] = 'cs6_roadsb079a', + [-1613739754] = 'cs6_roadsb092_lod', + [1340972650] = 'cs6_roadsb092', + [-2049465223] = 'cs6_roadsb092a_lod', + [1480212131] = 'cs6_roadsb092a', + [671256301] = 'cs6_roadsb098_lod', + [-1621410488] = 'cs6_roadsb098', + [1316406700] = 'cs6_roadsb098a_lod', + [-1767493666] = 'cs6_roadsb098a', + [727253986] = 'cs6_roadsb10', + [126795997] = 'cs6_roadsb105_lod', + [656904202] = 'cs6_roadsb105', + [-1120061813] = 'cs6_roadsb105a_lod', + [-1165797841] = 'cs6_roadsb105a', + [-1246778248] = 'cs6_roadsb10a', + [115489521] = 'cs6_roadsb14', + [-661365162] = 'cs6_roadsb15', + [-1588367415] = 'cs6_roadsb16', + [-2090781723] = 'cs6_roadsb17', + [-1120917618] = 'cs6_roadsb18', + [-31177076] = 'cs6_roadsb18b', + [-1057964585] = 'cs6_roadsb20', + [-1364059814] = 'cs6_roadsb21', + [-2077998017] = 'cs6_roadsb23', + [2034314873] = 'cs6_roadsb24', + [1735822052] = 'cs6_roadsb25', + [1549694132] = 'cs6_roadsb26', + [1070316431] = 'cs6_roadsb28', + [772610066] = 'cs6_roadsb29', + [302579747] = 'cs6_roadsb30', + [-1072047034] = 'cs6_roadsb32', + [-610430131] = 'cs6_roadsb34', + [1524568530] = 'cs6_roadsb35', + [610116824] = 'cs6_roadsb39', + [834101995] = 'cs6_roadsb40', + [1128859150] = 'cs6_roadsb41', + [2121768009] = 'cs6_roadsb42_dirt', + [1580415970] = 'cs6_roadsb42', + [-2071806095] = 'cs6_roadsb42b', + [-635554886] = 'cs6_roadsb43', + [-378711464] = 'cs6_roadsb44', + [387722677] = 'cs6_roadsb46', + [-1760645732] = 'cs6_roadsb47', + [-1297980221] = 'cs6_roadsb49', + [-1669318829] = 'cs6_roadsb50', + [462534008] = 'cs6_roadsb51', + [-1490973837] = 'cs6_roadsb51b', + [790903945] = 'cs6_roadsb98', + [-1028012810] = 'cs6_roadsc_dtjnc06', + [445758359] = 'cs6_roadsc01', + [743989028] = 'cs6_roadsc04', + [-813259394] = 'cs6_roadsc07', + [-1990226239] = 'cs6_roadsc10', + [797367077] = 'cs6_roadsc15', + [-1879798962] = 'cs6_roadsc15a', + [-1261710084] = 'cs6_roadsc15b', + [-633426054] = 'cs6_roadsc20', + [1976034950] = 'cs6_roadsc23', + [1672168013] = 'cs6_roadsc26', + [1187013448] = 'cs6_roadsc26a', + [1788432153] = 'cs6_roadsc32', + [-226828578] = 'cs6_roadsc37', + [-1896638511] = 'cs6_roadsc39', + [2100065063] = 'cs6_roadsc40', + [877617518] = 'cs6_roadsc41', + [-1262099879] = 'cs6_roadsc44', + [-525649377] = 'cs6_roadsc47', + [-1319603082] = 'cs6_roadsc50', + [-626374887] = 'cs6_roadsc51', + [1295756350] = 'cs6_roadsc57', + [-1988720319] = 'csb_abigail', + [-680474188] = 'csb_agent', + [117698822] = 'csb_anita', + [-1513650250] = 'csb_anton', + [-1410400252] = 'csb_ballasog', + [-2101379423] = 'csb_bride', + [-1931689897] = 'csb_burgerdrug', + [71501447] = 'csb_car3guy1', + [327394568] = 'csb_car3guy2', + [-1555576182] = 'csb_chef', + [-1369710022] = 'csb_chef2', + [-1463670378] = 'csb_chin_goon', + [-890640939] = 'csb_cletus', + [-1699520669] = 'csb_cop', + [-1538297973] = 'csb_customer', + [-1249041111] = 'csb_denise_friend', + [466359675] = 'csb_fos_rep', + [-1567723049] = 'csb_g', + [2058033618] = 'csb_groom', + [-396800478] = 'csb_grove_str_dlr', + [-325152996] = 'csb_hao', + [1863555924] = 'csb_hugh', + [-482210853] = 'csb_imran', + [1153203121] = 'csb_jackhowitzer', + [-1040164288] = 'csb_janitor', + [-1127975477] = 'csb_maude', + [-1734476390] = 'csb_money', + [1841036427] = 'csb_mp_agent14', + [1631478380] = 'csb_mweather', + [-1059388209] = 'csb_ortega', + [-199280229] = 'csb_oscar', + [1528799427] = 'csb_paige', + [1635617250] = 'csb_popov', + [793443893] = 'csb_porndudes', + [-267695653] = 'csb_prologuedriver', + [2141384740] = 'csb_prolsec', + [-1031795266] = 'csb_ramp_gang', + [-2054384456] = 'csb_ramp_hic', + [569740212] = 'csb_ramp_hipster', + [1634506681] = 'csb_ramp_marine', + [-162605104] = 'csb_ramp_mex', + [411081129] = 'csb_rashcosvki', + [776079908] = 'csb_reporter', + [-1436281204] = 'csb_roccopelosi', + [-1948177172] = 'csb_screen_writer', + [-1360365899] = 'csb_stripper_01', + [-2126242959] = 'csb_stripper_02', + [1665391897] = 'csb_tonya', + [-567724045] = 'csb_trafficwarden', + [-277325206] = 'csb_undercover', + [-548750436] = 'csx_coastbigroc01_', + [-640797613] = 'csx_coastbigroc02_', + [654364075] = 'csx_coastbigroc03_', + [1817631362] = 'csx_coastbigroc05_', + [-406418278] = 'csx_coastboulder_00_', + [318791597] = 'csx_coastboulder_01_', + [-927773644] = 'csx_coastboulder_02_', + [782451186] = 'csx_coastboulder_03_', + [-1054119912] = 'csx_coastboulder_04_', + [317753433] = 'csx_coastboulder_05_', + [-480433589] = 'csx_coastboulder_06_', + [1565626866] = 'csx_coastboulder_07_', + [2041530653] = 'csx_coastrok1_', + [2095829758] = 'csx_coastrok2_', + [1289401397] = 'csx_coastrok3_', + [-742243550] = 'csx_coastrok4_', + [-1483739285] = 'csx_coastsmalrock_01_', + [-1384485088] = 'csx_coastsmalrock_02_', + [-1319536642] = 'csx_coastsmalrock_03_', + [1491780594] = 'csx_coastsmalrock_04_', + [1919186893] = 'csx_coastsmalrock_05_', + [1167218227] = 'csx_rvrbldr_biga_', + [-1528948627] = 'csx_rvrbldr_bigb_', + [-864623042] = 'csx_rvrbldr_bigc_', + [1650293377] = 'csx_rvrbldr_bigd_', + [717851250] = 'csx_rvrbldr_bige_', + [2131079343] = 'csx_rvrbldr_meda_', + [260722846] = 'csx_rvrbldr_medb_', + [896510124] = 'csx_rvrbldr_medc_', + [411430321] = 'csx_rvrbldr_medd_', + [882972519] = 'csx_rvrbldr_mede_', + [657266943] = 'csx_rvrbldr_smla_', + [-369713785] = 'csx_rvrbldr_smlb_', + [1492875887] = 'csx_rvrbldr_smlc_', + [479461537] = 'csx_rvrbldr_smld_', + [2088222527] = 'csx_rvrbldr_smle_', + [-1576642419] = 'csx_saltconcclustr_a_', + [902952478] = 'csx_saltconcclustr_b_', + [2040565390] = 'csx_saltconcclustr_c_', + [979439400] = 'csx_saltconcclustr_d_', + [-1529421138] = 'csx_saltconcclustr_e_', + [-1790269598] = 'csx_saltconcclustr_f_', + [698273556] = 'csx_saltconcclustr_g_', + [498735401] = 'csx_seabed_bldr1_', + [-55029899] = 'csx_seabed_bldr2_', + [-2117840493] = 'csx_seabed_bldr3_', + [1414264771] = 'csx_seabed_bldr4_', + [1944107080] = 'csx_seabed_bldr5_', + [634000516] = 'csx_seabed_bldr6_', + [-799804623] = 'csx_seabed_bldr7_', + [-451109406] = 'csx_seabed_bldr8_', + [1142829680] = 'csx_seabed_rock1_', + [920918328] = 'csx_seabed_rock2_', + [333207757] = 'csx_seabed_rock3_', + [846073356] = 'csx_seabed_rock4_', + [1398822296] = 'csx_seabed_rock5_', + [1064906466] = 'csx_seabed_rock6_', + [-1694705300] = 'csx_seabed_rock7_', + [1562830845] = 'csx_seabed_rock8_', + [145037532] = 'csx_searocks_02', + [-455356086] = 'csx_searocks_03', + [-81658410] = 'csx_searocks_04', + [-1049621901] = 'csx_searocks_05', + [-677562675] = 'csx_searocks_06', + [-644710429] = 'cuban800', + [-1006919392] = 'cutter', + [2006142190] = 'daemon', + [-1404136503] = 'daemon2', + [-642633187] = 'db_apart_01_', + [-2041934003] = 'db_apart_01d_', + [1940776766] = 'db_apart_02_', + [295402572] = 'db_apart_02d_', + [1121747524] = 'db_apart_03_', + [-846675574] = 'db_apart_03d_', + [1621622270] = 'db_apart_05_', + [392650501] = 'db_apart_05d_', + [1072814506] = 'db_apart_06', + [1934122839] = 'db_apart_06d_', + [-991475533] = 'db_apart_07_', + [-318720402] = 'db_apart_07d_', + [-1111377536] = 'db_apart_08_', + [1939440479] = 'db_apart_08d_', + [-1425688059] = 'db_apart_09_', + [1028373543] = 'db_apart_09d_', + [782164302] = 'db_apart_10_', + [-1508112247] = 'db_apart_10d_', + [487282005] = 'dcl_metro_brd_007', + [-104132907] = 'dcl_metro_brd_008', + [126134856] = 'dcl_metro_brd_009', + [-2128896348] = 'dcl_metro_brd_010', + [564599047] = 'dcl_metro_brd_3', + [-1905921401] = 'dcl_metro_brd_6', + [979025719] = 'dcl_sub1_brd_004', + [-2018649636] = 'dcl_sub1_brd_005', + [-1923029694] = 'dcl_sub1_brd_006', + [1192045716] = 'dcl_sub1_brd_2', + [888637545] = 'dcl_sub1_brd_3', + [822018448] = 'defiler', + [-1944618198] = 'des_apartmentblock_skin', + [1978019907] = 'des_aptblock_root002', + [1428112696] = 'des_cables_root', + [-231068272] = 'des_cropduster_end', + [2001650193] = 'des_cropduster_root001', + [-895129411] = 'des_cropduster_root002', + [-1661629090] = 'des_cropduster_root003', + [1875784464] = 'des_cropduster_root004', + [1080775751] = 'des_cropduster_root005', + [-1516614796] = 'des_cropduster_start', + [-164138958] = 'des_door_end', + [-550193384] = 'des_door_rig_root_skel', + [1149742288] = 'des_door_root', + [1664278248] = 'des_door_start', + [383496297] = 'des_farmhs_root1', + [152638692] = 'des_farmhs_root2', + [260415929] = 'des_farmhs_root3', + [21169460] = 'des_farmhs_root4', + [-217585474] = 'des_farmhs_root5', + [-533085406] = 'des_farmhs_root6', + [-1434069061] = 'des_farmhs_root7', + [-1009448359] = 'des_farmhs_root8', + [1505762659] = 'des_fbowl_end', + [-250643457] = 'des_fbowl_root', + [-973293264] = 'des_fbowl_start', + [1886192252] = 'des_fib_ceil_end', + [2016649] = 'des_fib_ceil_root', + [-2022446287] = 'des_fib_ceil_rootb', + [579289352] = 'des_fib_ceil_start', + [1354380322] = 'des_fib_ceil2_end', + [-232326576] = 'des_fib_ceil2_root', + [63344600] = 'des_fib_ceil2_start', + [-1942657047] = 'des_fib_frame', + [168277735] = 'des_fibstair_end', + [-2125205075] = 'des_fibstair_root', + [1865929795] = 'des_fibstair_start', + [-1377728674] = 'des_finale_tunnel_end', + [-1619573432] = 'des_finale_tunnel_root000', + [-1919114861] = 'des_finale_tunnel_root001', + [1514093273] = 'des_finale_tunnel_root002', + [-1333270679] = 'des_finale_tunnel_root003', + [1437479435] = 'des_finale_tunnel_root004', + [1086547934] = 'des_finale_tunnel_start', + [-2145849767] = 'des_finale_vault_end', + [-2077472160] = 'des_finale_vault_root001', + [-1830131748] = 'des_finale_vault_root002', + [-1484713719] = 'des_finale_vault_root003', + [-1270338921] = 'des_finale_vault_root004', + [-1026892662] = 'des_finale_vault_start', + [1707864744] = 'des_floor_end', + [-1188270169] = 'des_floor_root', + [1382754157] = 'des_floor_start', + [1356597343] = 'des_frenchdoors_end', + [769435876] = 'des_frenchdoors_root', + [894717662] = 'des_frenchdoors_rootb', + [-1884098102] = 'des_frenchdoors_start', + [-936226570] = 'des_gasstation_skin01', + [-614205607] = 'des_gasstation_skin02', + [2035006214] = 'des_gasstation_tiles_root', + [-1648029991] = 'des_glass_end', + [-1920760623] = 'des_glass_root', + [779064396] = 'des_glass_root2', + [-331018248] = 'des_glass_root3', + [1508928333] = 'des_glass_root4', + [-834863596] = 'des_glass_start', + [-1604368639] = 'des_hospitaldoors_end', + [-1645426293] = 'des_hospitaldoors_skin_root1', + [-1331532042] = 'des_hospitaldoors_skin_root2', + [2037317776] = 'des_hospitaldoors_skin_root3', + [1883006647] = 'des_hospitaldoors_start_old', + [-1386607732] = 'des_hospitaldoors_start', + [-1469834270] = 'des_jewel_cab_end', + [-1425822065] = 'des_jewel_cab_root', + [-1342906936] = 'des_jewel_cab_root2', + [37228785] = 'des_jewel_cab_start', + [1097883532] = 'des_jewel_cab2_end', + [728048740] = 'des_jewel_cab2_root', + [-1762788570] = 'des_jewel_cab2_rootb', + [-1846370968] = 'des_jewel_cab2_start', + [2103335194] = 'des_jewel_cab3_end', + [1488444473] = 'des_jewel_cab3_root', + [2035340319] = 'des_jewel_cab3_rootb', + [1768229041] = 'des_jewel_cab3_start', + [-677416883] = 'des_jewel_cab4_end', + [-1087326352] = 'des_jewel_cab4_root', + [-1255152186] = 'des_jewel_cab4_rootb', + [-1880169779] = 'des_jewel_cab4_start', + [675949685] = 'des_light_panel_end', + [320658776] = 'des_light_panel_root', + [-847333257] = 'des_light_panel_start', + [782136798] = 'des_methtrailer_skin_root001', + [493867905] = 'des_methtrailer_skin_root002', + [323075877] = 'des_methtrailer_skin_root003', + [-2119055022] = 'des_plog_decal_root', + [-1261290370] = 'des_plog_door_end', + [-1610620247] = 'des_plog_door_root', + [348593192] = 'des_plog_door_start', + [916681776] = 'des_plog_light_root', + [841168031] = 'des_plog_vent_root', + [-1916240257] = 'des_protree_root', + [-1800003411] = 'des_railing_root', + [276224379] = 'des_scaffolding_root', + [-142446087] = 'des_scaffolding_tank_root', + [86372469] = 'des_server_end', + [2061278280] = 'des_server_root', + [2095956688] = 'des_server_start', + [2060859228] = 'des_shipsink_01', + [-2070066454] = 'des_shipsink_02', + [1574534483] = 'des_shipsink_03', + [1740869943] = 'des_shipsink_04', + [538345934] = 'des_shipsink_05', + [-758464577] = 'des_showroom_end', + [-477618422] = 'des_showroom_root', + [1406818453] = 'des_showroom_root2', + [-1927132376] = 'des_showroom_root3', + [1874530394] = 'des_showroom_root4', + [-1466957309] = 'des_showroom_root5', + [1670584042] = 'des_showroom_start', + [1612944167] = 'des_smash2_root', + [-1019467355] = 'des_smash2_root005', + [134656817] = 'des_smash2_root006', + [-714275462] = 'des_smash2_root2', + [-433412363] = 'des_smash2_root3', + [-69119390] = 'des_smash2_root4', + [-107554569] = 'des_stilthouse_root', + [1164737558] = 'des_stilthouse_root2', + [273813986] = 'des_stilthouse_root3', + [568702217] = 'des_stilthouse_root4', + [-625760606] = 'des_stilthouse_root5', + [-952631381] = 'des_stilthouse_root7', + [-924581117] = 'des_stilthouse_root8', + [-973406923] = 'des_stilthouse_root9', + [2056002078] = 'des_tankercrash_01', + [-744663668] = 'des_tankerexplosion_01', + [-578262686] = 'des_tankerexplosion_02', + [44931046] = 'des_trailerparka_01', + [2037646701] = 'des_trailerparka_02', + [-2021669514] = 'des_trailerparkb_01', + [1966940401] = 'des_trailerparkb_02', + [-1911238752] = 'des_trailerparkc_01', + [-2083505385] = 'des_trailerparkc_02', + [-1249907970] = 'des_trailerparkd_01', + [-1531754139] = 'des_trailerparkd_02', + [1514180713] = 'des_trailerparke_01', + [286174602] = 'des_traincrash_root1', + [894826008] = 'des_traincrash_root2', + [598954707] = 'des_traincrash_root3', + [-1546792182] = 'des_traincrash_root4', + [1511407516] = 'des_traincrash_root5', + [1179162625] = 'des_traincrash_root6', + [1822975168] = 'des_traincrash_root7', + [281603393] = 'des_tvsmash_end', + [738334011] = 'des_tvsmash_root', + [2054093856] = 'des_tvsmash_start', + [-1583068368] = 'des_vaultdoor001_end', + [1769283422] = 'des_vaultdoor001_root001', + [6671677] = 'des_vaultdoor001_root002', + [232155166] = 'des_vaultdoor001_root003', + [453280378] = 'des_vaultdoor001_root004', + [710025493] = 'des_vaultdoor001_root005', + [-808227803] = 'des_vaultdoor001_root006', + [899544058] = 'des_vaultdoor001_skin001', + [290638124] = 'des_vaultdoor001_start', + [-239841468] = 'diablous', + [1790834270] = 'diablous2', + [-1130810103] = 'dilettante', + [1682114128] = 'dilettante2', + [1033245328] = 'dinghy', + [276773164] = 'dinghy2', + [509498602] = 'dinghy3', + [867467158] = 'dinghy4', + [31209694] = 'dirtdecals', + [1445068394] = 'divisionnoshadows', + [1770332643] = 'dloader', + [-2140210194] = 'docktrailer', + [-884690486] = 'docktug', + [-901163259] = 'dodo', + [80636076] = 'dominator', + [-915704871] = 'dominator2', + [-1670998136] = 'double_', + [1829708995] = 'dt1_00_3_ovly', + [1850573068] = 'dt1_00_3_s', + [1712668192] = 'dt1_00_3', + [-489093465] = 'dt1_00_5_tdetail00', + [-728307165] = 'dt1_00_5_tdetail01', + [240442782] = 'dt1_00_5_tdetail02', + [235277827] = 'dt1_00_5', + [-1106221192] = 'dt1_00_6_tdetail00', + [-1404058633] = 'dt1_00_6_tdetail01', + [467380654] = 'dt1_00_6', + [39614759] = 'dt1_00_8_s', + [-1488043887] = 'dt1_00_8', + [-1246314174] = 'dt1_00_bld_b_ly1', + [-1094795696] = 'dt1_00_blendmt', + [1528759302] = 'dt1_00_blnds2_tnll', + [599515043] = 'dt1_00_cables1b', + [966333232] = 'dt1_00_cables2', + [-1946126469] = 'dt1_00_decals01', + [220640389] = 'dt1_00_glue_01', + [-208300766] = 'dt1_00_glue', + [415805443] = 'dt1_00_graf02', + [723997888] = 'dt1_00_graf03', + [-99782003] = 'dt1_00_graf04', + [-1191029342] = 'dt1_00_tdecals1', + [963499643] = 'dt1_00_tdecals2', + [1668950675] = 'dt1_00_tdecals3', + [182086083] = 'dt1_00_telegraph_cables_01', + [-710115480] = 'dt1_00_telegraph_cables_02', + [-1399600394] = 'dt1_00_tram_grill__lod', + [1437032877] = 'dt1_00_tram_grill_00', + [1264733475] = 'dt1_00_tram_grill_01', + [959162550] = 'dt1_00_tram_grill_02', + [727113188] = 'dt1_00_tramlines_01', + [-707906860] = 'dt1_00_tramlines_04', + [-964062133] = 'dt1_00_tramlines_07', + [-1985211003] = 'dt1_00_tramlines_sup', + [1416408390] = 'dt1_00_weed_01', + [1848008897] = 'dt1_00_weed_03', + [1125649061] = 'dt1_00_weed_04', + [1235267972] = 'dt1_01_build', + [448021852] = 'dt1_01_detail_1', + [-1199305147] = 'dt1_01_detail', + [-2118673975] = 'dt1_01_detail2', + [-1817952862] = 'dt1_01_detail3', + [1083292924] = 'dt1_01_globe', + [927947297] = 'dt1_01_hedge_1', + [235407251] = 'dt1_01_hedge_2', + [109967531] = 'dt1_01_hedge_3', + [-591616759] = 'dt1_01_hedge_4', + [769640270] = 'dt1_01_hedge_5', + [1078586402] = 'dt1_01_hedge_6', + [260115089] = 'dt1_01_hedge_7', + [-1669225296] = 'dt1_01_hedge_d', + [-668760822] = 'dt1_01_hedge_d1', + [-429317739] = 'dt1_01_hedge_d2', + [1117444611] = 'dt1_01_hedge_d3', + [-1058711922] = 'dt1_01_hedge_d4', + [-826805709] = 'dt1_01_hedge_d5', + [-1636298316] = 'dt1_01_hedge_d6', + [-63320778] = 'dt1_01_hedge_d7', + [-359325078] = 'dt1_01_hedge', + [-147731675] = 'dt1_01_ladder1', + [-818455034] = 'dt1_01_ladder10', + [-578684261] = 'dt1_01_ladder11', + [-224647985] = 'dt1_01_ladder12', + [15843706] = 'dt1_01_ladder13', + [695709616] = 'dt1_01_ladder2', + [-1717268468] = 'dt1_01_ladder3', + [-874285943] = 'dt1_01_ladder4', + [-1101506189] = 'dt1_01_ladder5', + [-259899962] = 'dt1_01_ladder6', + [-1908999883] = 'dt1_01_ladder7', + [-2139595336] = 'dt1_01_ladder8', + [-1532713456] = 'dt1_01_ladder9', + [-1906152623] = 'dt1_01_props_l_002', + [-1429592282] = 'dt1_01_rail1', + [2099104722] = 'dt1_01_rail2', + [-1903464787] = 'dt1_01_rail3', + [1720295082] = 'dt1_01_rail4', + [1913697720] = 'dt1_01_rail5', + [1129470012] = 'dt1_01_rail6', + [1434320019] = 'dt1_01_rail7', + [839366051] = 'dt1_01_rail8', + [-1188005950] = 'dt1_02_carpark_light', + [1656912546] = 'dt1_02_carparkbits', + [-1060270803] = 'dt1_02_carparkbits2', + [-1506367362] = 'dt1_02_carparkdecal', + [-1133362060] = 'dt1_02_carparkdecal2', + [-1724644174] = 'dt1_02_carparkextras', + [-1806718705] = 'dt1_02_carparkextras2', + [1567621625] = 'dt1_02_carparkground', + [277808234] = 'dt1_02_carparkground2', + [1962266605] = 'dt1_02_carparkreflection1', + [-2111870400] = 'dt1_02_carparkreflection2', + [-301056163] = 'dt1_02_carparkshadow', + [1937798143] = 'dt1_02_carparkshell', + [20578413] = 'dt1_02_decal', + [-1699025667] = 'dt1_02_decal2', + [688163214] = 'dt1_02_decal3', + [956770707] = 'dt1_02_decal4', + [1296650775] = 'dt1_02_decal5', + [1672707819] = 'dt1_02_decal6', + [-234021984] = 'dt1_02_decal7', + [34847661] = 'dt1_02_decal8', + [828668387] = 'dt1_02_ground_ns', + [949462560] = 'dt1_02_ground', + [-1215639886] = 'dt1_02_groundb_fizz1', + [-983995825] = 'dt1_02_groundb_fizz2', + [-342903009] = 'dt1_02_groundb_fizz3', + [-700412799] = 'dt1_02_groundb_fizz4', + [-1555546936] = 'dt1_02_groundb', + [1673069606] = 'dt1_02_hedge_d', + [471156634] = 'dt1_02_hedge_d1', + [895187494] = 'dt1_02_hedge_d2', + [-25654175] = 'dt1_02_hedge_d3', + [147169531] = 'dt1_02_hedge_d4', + [-1036371879] = 'dt1_02_helipad_01', + [-1325984301] = 'dt1_02_helipad_02', + [-558829242] = 'dt1_02_helipad_03', + [1773562133] = 'dt1_02_helipad', + [1673482042] = 'dt1_02_interior1', + [-1207818184] = 'dt1_02_ivy_d', + [-609941279] = 'dt1_02_logo', + [-1659086905] = 'dt1_02_logonight', + [1493671061] = 'dt1_02_night_01', + [-691767827] = 'dt1_02_rfl_proxy', + [426595940] = 'dt1_02_w01_glue02', + [-1137389950] = 'dt1_02_w01_rail', + [324596106] = 'dt1_02_w01', + [87648892] = 'dt1_02_waterfeature', + [1054487540] = 'dt1_02_xdetails1', + [-705175007] = 'dt1_02_xdetails2', + [-936556916] = 'dt1_02_xdetails3', + [-1850549852] = 'dt1_02_xdetails4', + [-2088682175] = 'dt1_02_xdetails5', + [-1029948554] = 'dt1_02_xdetails6', + [71911936] = 'dt1_03_b2_bush2', + [1302092965] = 'dt1_03_b2_bush3', + [-1139664943] = 'dt1_03_b2_detail_02', + [-590598844] = 'dt1_03_b2_detail_02b', + [-369408094] = 'dt1_03_b2_detail_02c', + [-157687585] = 'dt1_03_b2_detail_02d', + [334076798] = 'dt1_03_b2_detail_02f', + [1904795184] = 'dt1_03_benchirefm', + [1466225443] = 'dt1_03_bollardsint', + [1040499932] = 'dt1_03_build1_ns_bl', + [1267335871] = 'dt1_03_build1_ns_bl2', + [912142851] = 'dt1_03_build1_ns_gr', + [-459864870] = 'dt1_03_build1_ns_gr2', + [1372382399] = 'dt1_03_build1_ns', + [338313627] = 'dt1_03_build1_rail1', + [1998042489] = 'dt1_03_build1_rail2_b', + [-1864832773] = 'dt1_03_build1_rail2_c', + [-2139809237] = 'dt1_03_build1_rail2', + [-544600100] = 'dt1_03_build1_rail3_b_lod', + [-1373067570] = 'dt1_03_build1_rail3_b', + [-2035145051] = 'dt1_03_build1_rail3', + [-1538033934] = 'dt1_03_build1_rail4_b', + [-586001556] = 'dt1_03_build1_rail4', + [1745520960] = 'dt1_03_build1_rail5_b', + [-238781232] = 'dt1_03_build1_rail5', + [499101441] = 'dt1_03_build1_rail6_b', + [-1742452339] = 'dt1_03_build1_rail6', + [-180177302] = 'dt1_03_build1x', + [1123985070] = 'dt1_03_build2', + [1993035863] = 'dt1_03_build2top', + [-250537611] = 'dt1_03_bush_detail01', + [-2103750249] = 'dt1_03_carparkentrance', + [-1649924230] = 'dt1_03_carparkextras', + [-1555137139] = 'dt1_03_carparkextras2', + [670402269] = 'dt1_03_carparkextras3', + [1766769220] = 'dt1_03_carparkextras3b', + [383720204] = 'dt1_03_carparkint', + [-726748334] = 'dt1_03_carparkintreflect', + [1166971849] = 'dt1_03_detail1_b', + [-1944186405] = 'dt1_03_detail1', + [23657583] = 'dt1_03_detail2', + [-425337351] = 'dt1_03_detail20', + [-1065224755] = 'dt1_03_detail2int', + [-276342612] = 'dt1_03_detail3', + [-1713976596] = 'dt1_03_detail3b', + [-2001632492] = 'dt1_03_detail3int', + [1870321813] = 'dt1_03_detail4', + [1153073941] = 'dt1_03_detail5', + [-1157009487] = 'dt1_03_detail6', + [-81398814] = 'dt1_03_detailint', + [-1642196058] = 'dt1_03_detailint2', + [-1668093257] = 'dt1_03_detailz00', + [-919256069] = 'dt1_03_detailz01', + [-1099551107] = 'dt1_03_detailz02', + [55654454] = 'dt1_03_detailz03', + [-646388606] = 'dt1_03_detailz04', + [1702713169] = 'dt1_03_gr_closed', + [-1732307234] = 'dt1_03_grnd2_udlogo', + [-87130919] = 'dt1_03_grnd2', + [-822029730] = 'dt1_03_grnd2b', + [-218019333] = 'dt1_03_mp_door', + [-2132057473] = 'dt1_03_p01', + [2007257073] = 'dt1_03_p02', + [-1552767083] = 'dt1_03_p03', + [-1843985186] = 'dt1_03_p04', + [-941821847] = 'dt1_03_p05', + [-1097081369] = 'dt1_03_p06', + [1459850948] = 'dt1_03_p07', + [1607016527] = 'dt1_03_p08', + [1913046218] = 'dt1_03_p09', + [-809206548] = 'dt1_03_p10', + [-1638557169] = 'dt1_03_p11', + [-1542019695] = 'dt1_03_p12', + [-886410384] = 'dt1_03_p13', + [-1720414203] = 'dt1_03_p14', + [-1357530297] = 'dt1_03_p15', + [2113329490] = 'dt1_03_p16', + [-2076908082] = 'dt1_03_p17', + [1384317547] = 'dt1_03_p18', + [1758867217] = 'dt1_03_p19', + [-216742748] = 'dt1_03_p20', + [-470079887] = 'dt1_03_p21', + [-486188139] = 'dt1_03_rain_blocker', + [-188208284] = 'dt1_03_shadow', + [621238889] = 'dt1_04_build_rails1', + [1480442065] = 'dt1_04_build_rails2', + [47268668] = 'dt1_04_build', + [-1814517019] = 'dt1_04_detail', + [1061558755] = 'dt1_04_hedge_d', + [-1651074109] = 'dt1_04_hedge_d2', + [45675930] = 'dt1_04_hedge', + [1623143400] = 'dt1_04_hedge2', + [-718979285] = 'dt1_05_85', + [-730718452] = 'dt1_05_b1_pipe', + [-519800699] = 'dt1_05_build1_damage_lod', + [-1404869155] = 'dt1_05_build1_damage', + [-842986252] = 'dt1_05_build1_h', + [-1732012867] = 'dt1_05_build1_repair_slod', + [251575206] = 'dt1_05_build1_repair', + [-705564830] = 'dt1_05_build1_sd', + [1376006980] = 'dt1_05_build1dt', + [-958475884] = 'dt1_05_build2_alpha1', + [-662080279] = 'dt1_05_build2_alpha2', + [-1436936053] = 'dt1_05_build2_alpha3', + [-1138770922] = 'dt1_05_build2_alpha4', + [-1019746905] = 'dt1_05_build2_h', + [-1540511625] = 'dt1_05_build2dt', + [-311790659] = 'dt1_05_carpark_details', + [-442611869] = 'dt1_05_carpark_reflect', + [1258133810] = 'dt1_05_carparkshell', + [-1162162671] = 'dt1_05_cur1', + [-1701919363] = 'dt1_05_damage_slod', + [-1906414362] = 'dt1_05_deskseta_iref', + [461265833] = 'dt1_05_deskseta_iref001', + [-1888992397] = 'dt1_05_deskseta_iref002', + [863611152] = 'dt1_05_desksetb_iref', + [-628465948] = 'dt1_05_detailsb', + [1007296994] = 'dt1_05_detailsc', + [-908214958] = 'dt1_05_detailsnight2', + [-749809612] = 'dt1_05_detailsnight3', + [349448432] = 'dt1_05_fbi_colplug', + [1376363359] = 'dt1_05_fib_cut_slod', + [-1304486413] = 'dt1_05_fib_fakelobby', + [1235414028] = 'dt1_05_fount_decal', + [844471823] = 'dt1_05_gold_b1', + [-1655933957] = 'dt1_05_gold_b2', + [1188513554] = 'dt1_05_gold_b3', + [1070086388] = 'dt1_05_gold_b4', + [-379974631] = 'dt1_05_gold_b5', + [1412751821] = 'dt1_05_gold_b6', + [1089504035] = 'dt1_05_gold', + [1728807543] = 'dt1_05_gold2_b1', + [-1737857740] = 'dt1_05_gold2_b2', + [1377378089] = 'dt1_05_gold2', + [1284595816] = 'dt1_05_gold3_b1', + [1143492502] = 'dt1_05_gold3_b2', + [-996342733] = 'dt1_05_gold3', + [-438455093] = 'dt1_05_ground_2', + [-1948811060] = 'dt1_05_ground_l', + [-1706588984] = 'dt1_05_ground_sd1', + [1049412812] = 'dt1_05_ground', + [220309607] = 'dt1_05_hc_end_slod', + [-1489846171] = 'dt1_05_hc_end', + [1108689718] = 'dt1_05_hc_remove_slod', + [1474375717] = 'dt1_05_hc_remove', + [-892978012] = 'dt1_05_hc_req_slod', + [1474444852] = 'dt1_05_hc_req', + [1903427375] = 'dt1_05_hedge', + [306395849] = 'dt1_05_hedge2', + [803674397] = 'dt1_05_hedge2b', + [-1575715466] = 'dt1_05_hedge2c', + [1154794232] = 'dt1_05_hedge2d', + [26319206] = 'dt1_05_hedge3', + [1442005572] = 'dt1_05_hedge4', + [1484900125] = 'dt1_05_hedged', + [1348574815] = 'dt1_05_hedged2', + [-223992036] = 'dt1_05_int_dec', + [-1824397903] = 'dt1_05_int_dec02', + [-1602060238] = 'dt1_05_int_dec03', + [-1448895322] = 'dt1_05_int_undpshell', + [1807591416] = 'dt1_05_interiorlodbox', + [1723517941] = 'dt1_05_lad_mc02', + [2124528085] = 'dt1_05_lad1', + [1348984162] = 'dt1_05_lad2', + [1511387326] = 'dt1_05_lad3', + [737481853] = 'dt1_05_lad4', + [1018607104] = 'dt1_05_lad5', + [394161040] = 'dt1_05_lad6', + [2052248577] = 'dt1_05_ladder_02', + [278839906] = 'dt1_05_logo_lighta', + [584869597] = 'dt1_05_logo_lightb', + [1582467255] = 'dt1_05_logos_emissive_slod', + [-1374648126] = 'dt1_05_mission_extras', + [-856321985] = 'dt1_05_office_cheap', + [825494943] = 'dt1_05_office_day', + [-803212906] = 'dt1_05_office_lobby_milo_lod', + [278165231] = 'dt1_05_office_lobbyfake_lod', + [-1960428002] = 'dt1_05_reflproxy', + [1655416315] = 'dt1_05_rubble', + [-1228271647] = 'dt1_05_temp_lightfix', + [-1350636301] = 'dt1_05_templightfix2', + [-1961996479] = 'dt1_05_top_dc02', + [2035264452] = 'dt1_05_top_dc03', + [-1675419712] = 'dt1_05_top_mc02', + [1199224229] = 'dt1_05_top_mc02dl', + [-1679438348] = 'dt1_05_walllight', + [509946395] = 'dt1_05_walllightmission', + [-2047635798] = 'dt1_06__ladder_01', + [-805260446] = 'dt1_06_b1_gluea', + [-1572349967] = 'dt1_06_b1_glueb', + [-1007124560] = 'dt1_06_b2_deca', + [2012145562] = 'dt1_06_b2_decb', + [-961154583] = 'dt1_06_b2_ns', + [1557973324] = 'dt1_06_b3_dec', + [336964337] = 'dt1_06_b3_detail', + [1996323682] = 'dt1_06_build1_1_b1', + [1765466077] = 'dt1_06_build1_1_b2', + [-2130919325] = 'dt1_06_build1_1_graf', + [-1764557739] = 'dt1_06_build1_1', + [-1667465823] = 'dt1_06_build1b_1_detail', + [571420283] = 'dt1_06_build1b_1', + [-2133231996] = 'dt1_06_build2_1', + [-1919686432] = 'dt1_06_build2_dtail10', + [1650287821] = 'dt1_06_build2_dtail2', + [1345306738] = 'dt1_06_build2_dtail3', + [1312439435] = 'dt1_06_build2_dtail5', + [1026005606] = 'dt1_06_build2_dtail6', + [733247360] = 'dt1_06_build2_dtail7', + [459986669] = 'dt1_06_build2_dtail8', + [150417926] = 'dt1_06_build2_dtail9', + [1229008788] = 'dt1_06_build2_dtaila_lod', + [68757594] = 'dt1_06_build2_dtaila', + [-229702458] = 'dt1_06_build2_dtailb', + [1415706619] = 'dt1_06_build2_railing', + [-966841591] = 'dt1_06_build3_1', + [-1020950490] = 'dt1_06_build3_window_finish', + [641996521] = 'dt1_06_build3_window_fixed', + [-409180194] = 'dt1_06_build3_window_start', + [666240703] = 'dt1_06_g1_detail', + [-389493198] = 'dt1_06_g1_r2', + [1166968764] = 'dt1_06_g1_r3', + [-640631747] = 'dt1_06_g2_detail', + [1022282567] = 'dt1_06_gd1_ns', + [-185712729] = 'dt1_06_ground1', + [104751687] = 'dt1_06_ground2', + [-728138766] = 'dt1_06_hospitaldoor', + [-271521294] = 'dt1_06_hospitaldoors_fixed', + [-455866827] = 'dt1_06_hospitallod', + [-1883962695] = 'dt1_06_railling_b', + [-1586256330] = 'dt1_06_railling_c', + [130413269] = 'dt1_06_railling_d', + [-487439275] = 'dt1_06_rubble_01', + [1926492051] = 'dt1_06_sjump_01', + [337096805] = 'dt1_07_building2', + [-1323768779] = 'dt1_07_detaila', + [-1532834999] = 'dt1_07_detailb', + [1850072720] = 'dt1_07_detailc', + [-2143878542] = 'dt1_07_detaild', + [1923610034] = 'dt1_07_grounda', + [1543260251] = 'dt1_07_groundb', + [-2056234901] = 'dt1_07_hole_fence_01', + [-510259019] = 'dt1_07_hole_fence_02', + [-1842270643] = 'dt1_07_logo_sup', + [1670865891] = 'dt1_07_station', + [-1743598800] = 'dt1_08_crane_fizzya', + [-1505695860] = 'dt1_08_crane_fizzyb', + [1955726383] = 'dt1_08_crane_fizzyc', + [1229646375] = 'dt1_08_crane', + [1448424340] = 'dt1_08_fireescape', + [1097572173] = 'dt1_08_gate00', + [39977003] = 'dt1_08_gg_dtl', + [939075742] = 'dt1_08_glass', + [-419784158] = 'dt1_08_ground', + [2073386992] = 'dt1_08_ground2', + [760532340] = 'dt1_08_i400', + [-231647442] = 'dt1_08_i401', + [1266674141] = 'dt1_08_indust1_dt1', + [-692645365] = 'dt1_08_indust1_obj', + [-273156033] = 'dt1_08_indust1_rwire', + [-197265864] = 'dt1_08_indust1', + [-178182238] = 'dt1_08_indust1b_ladder', + [602823972] = 'dt1_08_indust1b', + [-1809268774] = 'dt1_08_indust2_dt1_fizz', + [453072488] = 'dt1_08_indust2_dt1', + [-267617756] = 'dt1_08_indust2_obj', + [-1820245775] = 'dt1_08_indust2_rwire', + [1353418421] = 'dt1_08_indust2_tread', + [-1100445042] = 'dt1_08_indust2', + [1507175351] = 'dt1_08_indust3_dt3', + [1779715124] = 'dt1_08_indust3_dt4', + [2090824010] = 'dt1_08_indust3_dt5', + [-1014038704] = 'dt1_08_indust3_dt6', + [922914566] = 'dt1_08_indust3_graf', + [1600441356] = 'dt1_08_indust3', + [-1215617361] = 'dt1_08_indust4_dt1', + [1160615838] = 'dt1_08_indust4', + [993032771] = 'dt1_08_indust4b_detail', + [-1999005499] = 'dt1_08_indust4b', + [-1027377199] = 'dt1_08_ladder_002', + [-1333734580] = 'dt1_08_ladder_003', + [-432652614] = 'dt1_08_ladder_004', + [-105028152] = 'dt1_08_ladder_005', + [1249054499] = 'dt1_08_ladder_01', + [405225588] = 'dt1_08_nwrails', + [1359055015] = 'dt1_08_nwrails01', + [-716009169] = 'dt1_08_nwrails02', + [-1644709694] = 'dt1_08_ova', + [366534698] = 'dt1_08_ovagrass', + [-1917839345] = 'dt1_08_ovb', + [1794641890] = 'dt1_09_billboards_lod', + [-244995639] = 'dt1_09_billboards', + [1197659532] = 'dt1_09_building_01', + [-369495663] = 'dt1_09_building_03_ra1', + [-549987315] = 'dt1_09_building_03_ra2', + [226539678] = 'dt1_09_building_03_ra3', + [1957725952] = 'dt1_09_building_03_ra4', + [-1805127787] = 'dt1_09_building_03', + [979459479] = 'dt1_09_carpark_ov1', + [486941409] = 'dt1_09_carpark_ov2', + [-689105232] = 'dt1_09_carpark_ov3', + [1227356964] = 'dt1_09_carpark_ov4', + [1696019206] = 'dt1_09_carpark_ov5', + [1465489291] = 'dt1_09_carpark_ov6', + [234390726] = 'dt1_09_carpark_ov7', + [210308562] = 'dt1_09_carpark_ra1', + [895009449] = 'dt1_09_carpark', + [-1138670462] = 'dt1_09_carpkgshdw01', + [594763947] = 'dt1_09_detail02', + [-315788256] = 'dt1_09_detail03', + [-119718947] = 'dt1_09_grounda', + [187588735] = 'dt1_09_groundb', + [22886604] = 'dt1_09_hdg_dcl', + [380340872] = 'dt1_10_build1_rail1', + [686436101] = 'dt1_10_build1_rail2', + [1080155636] = 'dt1_10_build1_rail3', + [1151657594] = 'dt1_10_build1_rail4', + [-1933183341] = 'dt1_10_build1_rail5', + [-1484490538] = 'dt1_10_build1', + [-1722950551] = 'dt1_10_build2', + [-1962983476] = 'dt1_10_build3', + [-521931906] = 'dt1_10_decal00', + [778622953] = 'dt1_10_decal01_b', + [-541508981] = 'dt1_10_decal01_c', + [-693838080] = 'dt1_10_decal01', + [-339834541] = 'dt1_10_decal02', + [-988727830] = 'dt1_10_decal03_b', + [-1304522683] = 'dt1_10_decal03_c', + [-96623023] = 'dt1_10_decal03', + [-1237923678] = 'dt1_10_detail', + [474906256] = 'dt1_10_detail1', + [556337221] = 'dt1_10_detail2', + [854764504] = 'dt1_10_detail3', + [1161220192] = 'dt1_10_detail4', + [1400761582] = 'dt1_10_detail5', + [-1746373178] = 'dt1_10_detail6', + [1713803843] = 'dt1_10_detail7', + [1015627529] = 'dt1_10_detail8', + [2057972748] = 'dt1_10_ground', + [-699051013] = 'dt1_10_ground1', + [1176479209] = 'dt1_11_build_logo', + [794008274] = 'dt1_11_decal_01', + [-178995430] = 'dt1_11_dt1_details_b', + [1129241361] = 'dt1_11_dt1_details_c', + [1177349673] = 'dt1_11_dt1_details', + [1338308899] = 'dt1_11_dt1_details2', + [-503997050] = 'dt1_11_dt1_details3', + [342884986] = 'dt1_11_dt1_details4', + [748349777] = 'dt1_11_dt1_planter_lod', + [-2036231390] = 'dt1_11_dt1_planter', + [1468548523] = 'dt1_11_dt1_plaza_gr', + [-453592661] = 'dt1_11_dt1_plaza', + [1831850105] = 'dt1_11_dt1_tower', + [-85992259] = 'dt1_11_dt1_towresm', + [-2035861380] = 'dt1_11_emissivering', + [-1411462708] = 'dt1_11_fount_decal', + [-1122836905] = 'dt1_11_fount_decalx', + [1300010070] = 'dt1_11_glue_b', + [-1481881420] = 'dt1_11_glue_c', + [-1721652193] = 'dt1_11_glue_d', + [-1958014990] = 'dt1_11_glue_e', + [470075705] = 'dt1_11_glue', + [-974534371] = 'dt1_11_hedge_d_1', + [-1961536651] = 'dt1_11_hedge_d_2', + [935130195] = 'dt1_11_hedge_d', + [858009722] = 'dt1_11_hedge_d2_a', + [626169047] = 'dt1_11_hedge_d2_b', + [-95554672] = 'dt1_11_hedge_d2', + [1482521242] = 'dt1_11_hedge_d3_b', + [-667570336] = 'dt1_11_hedge_d3', + [-990747573] = 'dt1_11_hedge_d4_b', + [-1914398017] = 'dt1_11_hedge_d4', + [519777498] = 'dt1_11_hedge', + [50907763] = 'dt1_11_heliport_st', + [2019505694] = 'dt1_11_heliport', + [1151589668] = 'dt1_11_hge_r2_d', + [-1160912991] = 'dt1_11_hge_r2_lod', + [2089306453] = 'dt1_11_hge_r2', + [1905583632] = 'dt1_11_loadingdock1', + [-551625880] = 'dt1_11_loadingdock2_s', + [1138199190] = 'dt1_11_loadingdock2', + [2049708785] = 'dt1_11_tower_pilars', + [937385920] = 'dt1_11_waterfall_new', + [519863592] = 'dt1_11_waterpool_new', + [1581450952] = 'dt1_12_build1', + [694008219] = 'dt1_12_build2_d', + [-1945771443] = 'dt1_12_build2', + [-1732499190] = 'dt1_12_build3_graf', + [270133879] = 'dt1_12_build3', + [-1554050817] = 'dt1_12_build6', + [-228427843] = 'dt1_12_carpark_ov1', + [-1455626893] = 'dt1_12_carpark_ov5', + [-1756806772] = 'dt1_12_carpark_ov6', + [-1935201208] = 'dt1_12_carpark_ov7', + [2060224659] = 'dt1_12_carpark_ov8', + [-1452087849] = 'dt1_12_carpark_ov9', + [1513783495] = 'dt1_12_fence', + [-1712264907] = 'dt1_12_ground1', + [-1460085833] = 'dt1_12_props_combo_slod', + [-1469987208] = 'dt1_12_rail1', + [1453105903] = 'dt1_12_rail2', + [1289654131] = 'dt1_12_rail3', + [2128442224] = 'dt1_12_rail4', + [-831836689] = 'dt1_13_build1_water', + [644992615] = 'dt1_13_build1', + [-1681744792] = 'dt1_13_build2_sd', + [895183930] = 'dt1_13_build2', + [-1933441663] = 'dt1_13_dt_13_ems', + [1298331479] = 'dt1_13_dtla', + [1079237945] = 'dt1_13_dtlb', + [2039434562] = 'dt1_14_b4_detaila', + [-2006652179] = 'dt1_14_b4_detailb', + [1445627513] = 'dt1_14_b4_detailc', + [-1863326819] = 'dt1_14_build2', + [-1573485014] = 'dt1_14_build3', + [1972645094] = 'dt1_14_build4', + [45717283] = 'dt1_14_details1', + [1326738287] = 'dt1_14_emsigns_10c', + [1955007064] = 'dt1_14_emsigns_10clod', + [1621437282] = 'dt1_14_emsigns_lod', + [226461241] = 'dt1_14_emsigns', + [1907099036] = 'dt1_14_ground', + [-1708878283] = 'dt1_14_ova', + [-1460194342] = 'dt1_14_ovb', + [2128404382] = 'dt1_14_ovc', + [-1991510916] = 'dt1_14_ovd', + [-2042948280] = 'dt1_15_b2_b', + [1448256296] = 'dt1_15_b3_dex1', + [1217464229] = 'dt1_15_b3_dex2', + [1152090138] = 'dt1_15_b3_dex3', + [-1308343431] = 'dt1_15_build1_o', + [1588544994] = 'dt1_15_build1', + [-46146613] = 'dt1_15_build1aa', + [192247862] = 'dt1_15_build1ab', + [298943726] = 'dt1_15_build1ac', + [154170392] = 'dt1_15_build1ad', + [327321788] = 'dt1_15_build1ae', + [725284294] = 'dt1_15_build2_o', + [2014804146] = 'dt1_15_build2', + [-469741455] = 'dt1_15_build3_o', + [1681608958] = 'dt1_15_build3', + [-1134361960] = 'dt1_15_build4_o', + [-1469747616] = 'dt1_15_em', + [-1871259072] = 'dt1_15_fabric01', + [-1807359522] = 'dt1_15_fabric02', + [698092684] = 'dt1_15_fabric03', + [249616142] = 'dt1_15_fabric04', + [-383743090] = 'dt1_15_fabric05', + [-1500015869] = 'dt1_15_fabric05a', + [-648087407] = 'dt1_15_fabric05b', + [55430254] = 'dt1_15_fabric05c', + [-1243926134] = 'dt1_15_fabric05d', + [826711001] = 'dt1_15_fabric09', + [-1696074908] = 'dt1_15_glassa', + [1218003238] = 'dt1_15_glasshousea', + [315577743] = 'dt1_15_glasshouseb', + [113634740] = 'dt1_15_ground', + [-1373741617] = 'dt1_15_ladder_002', + [-1101201844] = 'dt1_15_ladder_003', + [1903780998] = 'dt1_15_ladder_004', + [-1681802986] = 'dt1_15_ladder_005', + [-954101799] = 'dt1_15_ladder_006', + [-815882157] = 'dt1_15_ladder_007', + [-1265571144] = 'dt1_15_ladder_009', + [-531796818] = 'dt1_15_ladder_01', + [1460317833] = 'dt1_15_ladder_010', + [1692158508] = 'dt1_15_ladder_011', + [-734275453] = 'dt1_15_newwires01', + [-383581615] = 'dt1_15_newwires02', + [-860805629] = 'dt1_15_steetdetaila', + [-1156742468] = 'dt1_15_steetdetailb', + [1504175277] = 'dt1_16_build005_decals', + [-814840656] = 'dt1_16_build005', + [-1122607985] = 'dt1_16_build006_decals', + [408196731] = 'dt1_16_build006', + [1523020577] = 'dt1_16_build2_decals', + [-1419485081] = 'dt1_16_build2', + [-338027781] = 'dt1_16_build4_decals', + [1742952806] = 'dt1_16_build4', + [-1857244888] = 'dt1_16_ground', + [-1796810358] = 'dt1_16_ladder005', + [32393367] = 'dt1_16_ladder01_lod001', + [1459089353] = 'dt1_16_ladder01', + [1229378663] = 'dt1_16_ladder02', + [1000061201] = 'dt1_16_ladder03', + [-1609039272] = 'dt1_16_ladder04', + [-1878138380] = 'dt1_16_ladder05', + [-559760393] = 'dt1_17_alley2', + [-701782449] = 'dt1_17_bb_credit_slod', + [1391049338] = 'dt1_17_bb_credit', + [56582624] = 'dt1_17_bb_meltdown_slod', + [-1770068237] = 'dt1_17_bb_meltdown', + [1103057138] = 'dt1_17_build1', + [1437432014] = 'dt1_17_build2', + [-1103833038] = 'dt1_17_ova', + [-661418761] = 'dt1_17_ovb', + [-1166836280] = 'dt1_17_ovx2', + [680646310] = 'dt1_18_build_roof', + [1785071381] = 'dt1_18_build0', + [1410259559] = 'dt1_18_build1', + [-1165240771] = 'dt1_18_build2_detail', + [1622668217] = 'dt1_18_build2', + [845747996] = 'dt1_18_build3', + [-126725246] = 'dt1_18_build4_em', + [997271852] = 'dt1_18_build4', + [242831209] = 'dt1_18_build5', + [220330803] = 'dt1_18_detail_a', + [448009815] = 'dt1_18_detail_b', + [1960233543] = 'dt1_18_detail_c', + [1537054677] = 'dt1_18_detail_d', + [-1773662935] = 'dt1_18_detail_e', + [-2030473588] = 'dt1_18_detail_f', + [566338590] = 'dt1_18_detail_g', + [-1019291221] = 'dt1_18_detaila', + [2095566066] = 'dt1_18_detailb', + [-1608445072] = 'dt1_18_detailc', + [-368040127] = 'dt1_18_detaild', + [902314018] = 'dt1_18_ground', + [-1201611804] = 'dt1_18_ladder_011', + [-806330624] = 'dt1_18_ladder_04', + [-1305271418] = 'dt1_18_ladder_05', + [-381709922] = 'dt1_18_ladder_06', + [-620890853] = 'dt1_18_ladder_07', + [386034979] = 'dt1_18_ladder_08', + [-103206191] = 'dt1_18_ladder_09', + [-1831312415] = 'dt1_18_ladder_10', + [-717142431] = 'dt1_18_sq_night_slod', + [-883676427] = 'dt1_18_square_night', + [-1695249446] = 'dt1_19_cp_01_shadow', + [1822781194] = 'dt1_19_cp_01', + [-933955611] = 'dt1_19_decal01', + [1208654225] = 'dt1_19_ground01', + [1739014551] = 'dt1_19_hedge_d', + [679849216] = 'dt1_19_hedge', + [1500231332] = 'dt1_19_lspd02', + [739466228] = 'dt1_19_lspd05', + [-207301352] = 'dt1_19_pipes', + [-858145298] = 'dt1_19_roofdoor_dummy', + [1914430752] = 'dt1_19_shadow', + [38091600] = 'dt1_19_signems', + [-496113701] = 'dt1_20_build1', + [-1294038851] = 'dt1_20_build2', + [-1963785100] = 'dt1_20_build2b', + [1049773493] = 'dt1_20_decal_1', + [743416112] = 'dt1_20_decal_2', + [571378862] = 'dt1_20_decal_3', + [149916371] = 'dt1_20_detail01_b', + [-924904663] = 'dt1_20_detail01', + [-1152940197] = 'dt1_20_detail01c', + [-915659868] = 'dt1_20_detail01d', + [1348645263] = 'dt1_20_detail01e', + [-218241770] = 'dt1_20_detail2b', + [-850860783] = 'dt1_20_didier_mp_door', + [-1901011545] = 'dt1_20_ground', + [697158440] = 'dt1_20_ground2_w1', + [789322324] = 'dt1_20_ground2_w11', + [1046329591] = 'dt1_20_ground2_w12', + [1262211763] = 'dt1_20_ground2_w13', + [1573418956] = 'dt1_20_ground2_w14', + [1722780058] = 'dt1_20_ground2_w15', + [1002205061] = 'dt1_20_ground2_w2', + [-871657435] = 'dt1_20_ground2_w3', + [-566414200] = 'dt1_20_ground2_w4', + [-259499746] = 'dt1_20_ground2_w5', + [49479155] = 'dt1_20_ground2_w6', + [-1114016923] = 'dt1_20_ground2_w7', + [1339430880] = 'dt1_20_ground2_w8', + [1627208238] = 'dt1_20_ground2_w9', + [724661570] = 'dt1_20_ground2', + [1603446571] = 'dt1_20_hedge_d', + [-29973657] = 'dt1_20_hedge_d2', + [814612094] = 'dt1_20_hedge_d2b', + [-837106940] = 'dt1_20_hedge_db', + [-888554270] = 'dt1_20_hedge_dc', + [-321418573] = 'dt1_20_hedge', + [295131508] = 'dt1_20_hedge2', + [-1586712671] = 'dt1_20_jump_01', + [-403515541] = 'dt1_20_logo_1', + [-761025331] = 'dt1_20_logo_2', + [-904750165] = 'dt1_20_logo_3', + [1269636834] = 'dt1_20_logo_4', + [-1260457660] = 'dt1_20_logo_5', + [59909101] = 'dt1_20_rails1', + [-241401854] = 'dt1_20_rails2', + [602367127] = 'dt1_20_rails3', + [-1478005607] = 'dt1_20_rails4', + [-897011237] = 'dt1_20_rails5', + [-1126885772] = 'dt1_20_rails6', + [-284460320] = 'dt1_20_rails7', + [1865284391] = 'dt1_20_rails8', + [-2018877458] = 'dt1_20_rl_01', + [-1864601006] = 'dt1_20_rl_02', + [304936185] = 'dt1_20_rl_03', + [762194811] = 'dt1_20_rl_04', + [1041812688] = 'dt1_20_rl_05', + [1217323452] = 'dt1_20_rl_06', + [-902470393] = 'dt1_20_rl_07', + [-419914095] = 'dt1_20_rl_08', + [-253382037] = 'dt1_20_rl_09', + [-174801651] = 'dt1_20_rl_10', + [533664129] = 'dt1_20_rl_11', + [294221046] = 'dt1_20_rl_12', + [-221252776] = 'dt1_20_sc1', + [-1116632932] = 'dt1_20_sc2', + [-819713023] = 'dt1_20_sc3', + [-595809277] = 'dt1_21_b1_dx10', + [-2038628351] = 'dt1_21_b1_dx11', + [-1186011740] = 'dt1_21_b1_dx12', + [575027093] = 'dt1_21_b1_dx13', + [318249209] = 'dt1_21_b1_dx14', + [-1394484560] = 'dt1_21_b1_dx3', + [1911907544] = 'dt1_21_b1_dx4', + [-2144337587] = 'dt1_21_b1_dx5', + [1231754180] = 'dt1_21_b1_dx6', + [563129543] = 'dt1_21_b1d_y1', + [-709132917] = 'dt1_21_b9_d1', + [-877143556] = 'dt1_21_beams', + [613026827] = 'dt1_21_beamx', + [-309588307] = 'dt1_21_bridge_d', + [-1364076223] = 'dt1_21_build09', + [1699294122] = 'dt1_21_build09d', + [-1993797490] = 'dt1_21_build1_details1', + [45025231] = 'dt1_21_build1_fence', + [-987364809] = 'dt1_21_build1', + [561364943] = 'dt1_21_build1z', + [1607223122] = 'dt1_21_cloth_tape', + [586419612] = 'dt1_21_cloth_tarp_01', + [2000813922] = 'dt1_21_cranelights', + [-1934790757] = 'dt1_21_detail_b', + [1560154173] = 'dt1_21_detail_c', + [-1583025544] = 'dt1_21_detail', + [959303717] = 'dt1_21_elev', + [-1261561935] = 'dt1_21_fillm_02', + [-1508902347] = 'dt1_21_fillm_03', + [792267901] = 'dt1_21_fillm_05', + [1509450235] = 'dt1_21_fillm_06', + [-870499758] = 'dt1_21_gd1_d002_d', + [805852462] = 'dt1_21_gd1_d002', + [-1109112412] = 'dt1_21_gd1_dz1', + [-2002034897] = 'dt1_21_gd1_dz2', + [-1701870853] = 'dt1_21_gd1_dz3', + [-555316236] = 'dt1_21_gd1_dz4', + [-314955621] = 'dt1_21_gd1_dz5', + [-712241333] = 'dt1_21_gd1_rl1_b', + [2112388427] = 'dt1_21_gd1_rl1', + [1888591746] = 'dt1_21_gd1_rl2_b', + [1210782157] = 'dt1_21_gd1_rl2', + [-394406193] = 'dt1_21_gd1_rl3_b', + [972584296] = 'dt1_21_gd1_rl3', + [-725637120] = 'dt1_21_glue1', + [415815601] = 'dt1_21_glue2a', + [47770864] = 'dt1_21_gren_decal', + [701324079] = 'dt1_21_ground1_decals', + [-1159699521] = 'dt1_21_ground1', + [-643454503] = 'dt1_21_ground2_decals', + [-1407597006] = 'dt1_21_ground2', + [501333192] = 'dt1_21_lowerleveldecal', + [197574465] = 'dt1_21_parkinghut', + [-2091929232] = 'dt1_21_props_combo0201_slod', + [1563158461] = 'dt1_21_props_dt1_21_s01_slod', + [1761988098] = 'dt1_21_props_rail_lod_004', + [371632197] = 'dt1_21_props_rail_lod_005', + [1532117140] = 'dt1_21_props_rail_lod_1', + [-1341134322] = 'dt1_21_props_rail_lod_2', + [1069386091] = 'dt1_21_props_rail_lod_3', + [340276021] = 'dt1_21_reflproxy', + [-191375796] = 'dt1_21_roof_detail', + [1066195456] = 'dt1_21_route_blockout', + [1398488517] = 'dt1_21_route_d', + [1316026482] = 'dt1_21_sbar1', + [590651910] = 'dt1_21_sbar2', + [-434083634] = 'dt1_21_scafa', + [393202536] = 'dt1_21_scafc', + [87140076] = 'dt1_21_scafd', + [-1196434326] = 'dt1_21_scaffold_01', + [1551377404] = 'dt1_21_scaffold_02', + [-603938041] = 'dt1_21_scaffold_03', + [-431368] = 'dt1_21_scaffold_05', + [-1556106870] = 'dt1_21_scaffold_06', + [590754161] = 'dt1_21_scaffold_07', + [360420860] = 'dt1_21_scaffold_08', + [1189148870] = 'dt1_21_scaffold_09', + [-1324594173] = 'dt1_21_scaffold_10', + [-1069946274] = 'dt1_21_scaffold_11', + [-494327556] = 'dt1_21_scaffold_44', + [-2097934167] = 'dt1_21_sd', + [-1442446932] = 'dt1_21_station_f1', + [-1146051327] = 'dt1_21_station_f2', + [-944010143] = 'dt1_21_station', + [-271593318] = 'dt1_21_tape', + [701593760] = 'dt1_21_top_d', + [360847876] = 'dt1_21_top_shell', + [997034861] = 'dt1_21_unf', + [-1121496574] = 'dt1_22__ladder_002', + [1534127570] = 'dt1_22__ladder_01', + [1672955427] = 'dt1_22_b1_emiss', + [-934587146] = 'dt1_22_b2_r', + [468208647] = 'dt1_22_b2_r2', + [779024622] = 'dt1_22_bldg1_detail_2', + [-960346032] = 'dt1_22_bldg1_detail', + [660585234] = 'dt1_22_bldg1_detail2', + [-1142159817] = 'dt1_22_bldg1', + [1785962911] = 'dt1_22_bldg1b_detail', + [-1451234319] = 'dt1_22_bldg1b', + [1770924169] = 'dt1_22_bldg2_detail', + [1229793133] = 'dt1_22_bldg2_detail2', + [971638951] = 'dt1_22_bldg2_detail3', + [-236048143] = 'dt1_22_bldg2_r', + [-1440849252] = 'dt1_22_bldg2', + [-610305217] = 'dt1_22_broken_gdoor_hd', + [173466203] = 'dt1_22_broken_gdoor_lod', + [-324581133] = 'dt1_22_carshowroom_slod1', + [1023076961] = 'dt1_22_emissive_beams_lod', + [654395831] = 'dt1_22_gd_detail10', + [-703235274] = 'dt1_22_gd_detail2', + [1596896941] = 'dt1_22_gd_detail22', + [-934813797] = 'dt1_22_gd_detail3', + [-1449156021] = 'dt1_22_gd_detail4', + [-1455182972] = 'dt1_22_gd_logo', + [-1631469884] = 'dt1_22_gd_topglue', + [607593713] = 'dt1_22_grnd_bar_lod', + [-382710179] = 'dt1_22_grnd_d2', + [588287455] = 'dt1_22_grnd_detail', + [614620236] = 'dt1_22_grnd', + [-2053997101] = 'dt1_22_ladder_01', + [1390123110] = 'dt1_22_ladder_02', + [-1941927117] = 'dt1_22_ladder_03', + [1868124513] = 'dt1_22_ladder_04', + [1035922989] = 'dt1_22_ladder_05', + [202115784] = 'dt1_22_ladder_06', + [1513727778] = 'dt1_22_ladder_07', + [680772567] = 'dt1_22_ladder_08', + [-673827655] = 'dt1_22_ladder_09_lod001', + [-1242505553] = 'dt1_22_ladder_09', + [-53604245] = 'dt1_22_r_01', + [-1790000794] = 'dt1_22_r_02', + [-1828995904] = 'dt1_22_r_03', + [933299724] = 'dt1_22_r_04', + [-1483184647] = 'dt1_22_r_05', + [-565030032] = 'dt1_22_r_06', + [-564405094] = 'dt1_22_showroom_detail', + [791833817] = 'dt1_22_showroom', + [-1549931822] = 'dt1_22_sign_01_lod', + [521032509] = 'dt1_22_sign_01', + [165648409] = 'dt1_22_sr_fint_det01', + [932836237] = 'dt1_22_sr_fint_det02', + [1617399861] = 'dt1_22_sr_fint_ext', + [995448577] = 'dt1_22_sr_fint_glass', + [-718500944] = 'dt1_22_sr_fint_slod1', + [540534816] = 'dt1_22_sr_fint', + [-2130484842] = 'dt1_22_wobblylightems', + [1867890930] = 'dt1_22_woodboard_hd_slod', + [-1919268430] = 'dt1_22_woodboard_hd', + [-1729281218] = 'dt1_23_build1_a', + [-1960138823] = 'dt1_23_build1_b', + [-2057200601] = 'dt1_23_build1_c', + [112566025] = 'dt1_23_build1_d', + [-1428584944] = 'dt1_23_build1_decals', + [-233507444] = 'dt1_23_build1_e', + [-866866676] = 'dt1_23_build1_f', + [-142848817] = 'dt1_23_build1', + [1452949863] = 'dt1_23_build2_decals', + [1730396966] = 'dt1_23_build2_locku', + [88991858] = 'dt1_23_build2', + [-128740728] = 'dt1_23_build4_decalsa', + [-364513683] = 'dt1_23_build4_decalsb', + [1361151958] = 'dt1_23_build4_glass', + [1509307985] = 'dt1_23_build4_rails', + [-730155890] = 'dt1_23_build4_rls', + [731165951] = 'dt1_23_build4', + [995884274] = 'dt1_23_dt1_scaffold', + [-2124661529] = 'dt1_23_ground', + [1783468599] = 'dt1_23_grounddecals', + [-1723289007] = 'dt1_23_ladder_00', + [1633822444] = 'dt1_23_ladder_002', + [-1281766566] = 'dt1_23_ladder_003', + [-976195641] = 'dt1_23_ladder_004', + [-1799451228] = 'dt1_23_ladder_005', + [-1504071462] = 'dt1_23_ladder_006', + [-1140925380] = 'dt1_23_ladder_007', + [1711327792] = 'dt1_23_ladder_01_lod001', + [1229656261] = 'dt1_23_ladder_01_lod003', + [990999634] = 'dt1_23_ladder_01_lod004', + [-1459990092] = 'dt1_23_ladder_01', + [-790120273] = 'dt1_23_ov', + [-117622950] = 'dt1_23_ov2', + [-1243926253] = 'dt1_23_ov3', + [-260995315] = 'dt1_23_sign_em', + [1483966877] = 'dt1_24_bd_a', + [-1566204416] = 'dt1_24_bd_b', + [2003843462] = 'dt1_24_build_det1', + [-801084723] = 'dt1_24_build_deta', + [1274962503] = 'dt1_24_build_detb', + [-116054996] = 'dt1_24_fireescapeend', + [976976554] = 'dt1_24_fireescaperailing', + [-1314220145] = 'dt1_24_ladder_00', + [1421346754] = 'dt1_24_ladder01', + [757238505] = 'dt1_24_ladder2', + [-1857282640] = 'dt1_25_build_gluea', + [94832228] = 'dt1_25_build_glueb', + [946695152] = 'dt1_25_build_gluec', + [-433813298] = 'dt1_25_build_ns', + [335139749] = 'dt1_25_build', + [481341833] = 'dt1_25_detaila', + [-768271213] = 'dt1_25_detailb', + [163362635] = 'dt1_25_ladder_01_lod', + [1582628037] = 'dt1_25_ladder_01', + [1889411415] = 'dt1_25_ladder_02', + [-1751218701] = 'dt1_25_ladder_03_lod', + [-2131574272] = 'dt1_25_ladder_03', + [2112377202] = 'dt1_25_ladder_04_lod', + [-1824954739] = 'dt1_25_ladder_04', + [95845131] = 'dt1_26_build_ns', + [208542562] = 'dt1_26_build_x_f', + [1235293639] = 'dt1_26_build_x_r', + [-1213794767] = 'dt1_26_build_x', + [-1097541338] = 'dt1_26_fnce', + [1432524423] = 'dt1_26_ground_decala', + [-2094501358] = 'dt1_26_ground_decalb', + [125336252] = 'dt1_26_ground_decalc', + [-1157172799] = 'dt1_26_hedge_c', + [-1865900731] = 'dt1_26_hedge_d', + [912887527] = 'dt1_26_insidedecals', + [-1990804585] = 'dt1_26_rfcover', + [-186633759] = 'dt1_26_stairs', + [880341099] = 'dt1_emissive_dt1_01', + [-3537138] = 'dt1_emissive_dt1_02', + [-2021600890] = 'dt1_emissive_dt1_02b', + [-1825769292] = 'dt1_emissive_dt1_03_b1', + [-1454889738] = 'dt1_emissive_dt1_03_b2', + [-1762951107] = 'dt1_emissive_dt1_03_b3', + [1635273321] = 'dt1_emissive_dt1_04', + [1135317444] = 'dt1_emissive_dt1_05_b1', + [2031942822] = 'dt1_emissive_dt1_05_b2', + [-1097487730] = 'dt1_emissive_dt1_06_1', + [-1522173970] = 'dt1_emissive_dt1_06_2', + [1240613201] = 'dt1_emissive_dt1_06_3', + [1620274835] = 'dt1_emissive_dt1_06_4', + [1363323390] = 'dt1_emissive_dt1_07', + [-1776471118] = 'dt1_emissive_dt1_08', + [-1477453993] = 'dt1_emissive_dt1_09', + [1336386984] = 'dt1_emissive_dt1_10', + [1602798954] = 'dt1_emissive_dt1_11', + [-1327536106] = 'dt1_emissive_dt1_12', + [177553550] = 'dt1_emissive_dt1_14a', + [168116078] = 'dt1_emissive_dt1_14b', + [-129524749] = 'dt1_emissive_dt1_14c', + [1063168768] = 'dt1_emissive_dt1_15a', + [1294517908] = 'dt1_emissive_dt1_15b', + [1527636574] = 'dt1_emissive_dt1_15c', + [-1549012059] = 'dt1_emissive_dt1_15d', + [-1100600639] = 'dt1_emissive_dt1_16a', + [-2017378952] = 'dt1_emissive_dt1_16b', + [-1727373302] = 'dt1_emissive_dt1_16c', + [-728541413] = 'dt1_emissive_dt1_16d', + [-384335609] = 'dt1_emissive_dt1_17a', + [-1034833032] = 'dt1_emissive_dt1_17b', + [1257585841] = 'dt1_emissive_dt1_18a', + [1550442394] = 'dt1_emissive_dt1_18b', + [1580655412] = 'dt1_emissive_dt1_18c', + [-269121869] = 'dt1_emissive_dt1_18d', + [25930207] = 'dt1_emissive_dt1_18e', + [326258092] = 'dt1_emissive_dt1_18f', + [-385001359] = 'dt1_emissive_dt1_19', + [-872997639] = 'dt1_emissive_dt1_20', + [886096642] = 'dt1_emissive_dt1_20b', + [-1079256902] = 'dt1_emissive_dt1_20c', + [-1572037548] = 'dt1_emissive_dt1_22a', + [206401600] = 'dt1_emissive_dt1_22b', + [-1900940001] = 'dt1_emissive_dt1_22c', + [-1341737304] = 'dt1_emissive_dt1_23a', + [152135848] = 'dt1_emissive_dt1_23b', + [-1938624639] = 'dt1_emissive_dt1_23c', + [18745158] = 'dt1_emissive_dt1_24', + [793568163] = 'dt1_emissive_dt1_25', + [1450502820] = 'dt1_lod_5_20_emissive_proxy', + [17079690] = 'dt1_lod_5_21_emissive_proxy', + [-2004182294] = 'dt1_lod_6_19_emissive_proxy', + [859651513] = 'dt1_lod_6_20_emissive_proxy', + [759795812] = 'dt1_lod_6_21_emissive_proxy', + [-904778439] = 'dt1_lod_7_20_emissive_proxy', + [-859346633] = 'dt1_lod_emissive', + [-343289823] = 'dt1_lod_f1_slod3', + [-1065329613] = 'dt1_lod_f1b_slod3', + [186779107] = 'dt1_lod_f2_slod3', + [1816781891] = 'dt1_lod_f2b_slod3', + [1827161248] = 'dt1_lod_f3_slod3', + [566160949] = 'dt1_lod_f4_slod3', + [-109599267] = 'dt1_lod_slod3', + [1406325275] = 'dt1_props_combo0555_15_lod', + [986752231] = 'dt1_props_flyers_1_00', + [101486540] = 'dt1_props_flyers_1_001', + [311699639] = 'dt1_props_flyers_1_002', + [71666714] = 'dt1_props_flyers_1_003', + [1745950316] = 'dt1_props_flyers_2_00', + [1671733883] = 'dt1_props_flyers_2_001', + [-1051304483] = 'dt1_props_flyers_2_002', + [-825820994] = 'dt1_props_flyers_2_003', + [-1670081510] = 'dt1_props_flyers_2_004', + [1227665109] = 'dt1_props_flyers_3_00', + [-924412937] = 'dt1_props_flyers_3_001', + [-718820231] = 'dt1_props_flyers_3_002', + [677532413] = 'dt1_props_flyers_3_003', + [899509619] = 'dt1_props_flyers_3_004', + [73632512] = 'dt1_props_flyers_3_005', + [-521817792] = 'dt1_props_flyers_4_00', + [1797634974] = 'dt1_props_flyers_4_001', + [-1445219188] = 'dt1_props_flyers_5_00', + [1133058913] = 'dt1_props_flyers_5_001', + [-1716795487] = 'dt1_props_flyers_5_002', + [-1475255188] = 'dt1_props_flyers_5_003', + [2106986358] = 'dt1_props_flyers_5_004', + [-1933529653] = 'dt1_props_flyers_5_005', + [-636893092] = 'dt1_props_flyers_5_006', + [842201085] = 'dt1_props_flyers_5_007', + [-326707446] = 'dt1_props_flyers_6_00', + [896663627] = 'dt1_props_flyers_6_001', + [330284231] = 'dt1_props_flyers_6_002', + [-2143142640] = 'dt1_props_flyers_7_00', + [2024985525] = 'dt1_props_flyers_7_001', + [-1975748920] = 'dt1_props_flyers_7_002', + [1410075240] = 'dt1_props_flyers_7_003', + [-908462546] = 'dt1_props_flyers_7_004', + [-1800959030] = 'dt1_props_flyers_7_005', + [547672507] = 'dt1_rd1_cablemesh115078_thvy', + [1061501622] = 'dt1_rd1_cablemesh115623_thvy', + [-299405294] = 'dt1_rd1_cablemesh116749_thvy', + [-23086352] = 'dt1_rd1_cablemesh117237_thvy', + [-126499779] = 'dt1_rd1_cablemesh118326_thvy', + [-2132810864] = 'dt1_rd1_cablemeshdt1_22_thvy', + [-1419411965] = 'dt1_rd1_dt1_rd_cable_conn_01', + [90298643] = 'dt1_rd1_dt1_rd_grill', + [1112878556] = 'dt1_rd1_dt1_tun1stuff', + [732404192] = 'dt1_rd1_dt1_tun2stuff', + [1173299843] = 'dt1_rd1_dt1_tun3stuff', + [732982669] = 'dt1_rd1_dt1_tunnel1', + [-1434368892] = 'dt1_rd1_dt1_tunnel1r', + [-1182922454] = 'dt1_rd1_dt1_tunnel2', + [2059820879] = 'dt1_rd1_dt1_tunnel2r', + [-953408378] = 'dt1_rd1_dt1_tunnel3', + [-44866749] = 'dt1_rd1_dt1_tunnel3r', + [570698305] = 'dt1_rd1_dt1_tunnelroad', + [649980771] = 'dt1_rd1_dt1_tunnelroad2', + [420106236] = 'dt1_rd1_dt1_tunnelroad3', + [1037344232] = 'dt1_rd1_dt1_tunnelshell', + [-1147697276] = 'dt1_rd1_dt1_tunnelshell2', + [-915266759] = 'dt1_rd1_dt1_tunnelshell3', + [-318701451] = 'dt1_rd1_dt1_tunreflect1', + [-12344070] = 'dt1_rd1_dt1_tunreflect2', + [705362568] = 'dt1_rd1_dt1_tunreflect3', + [-2101863375] = 'dt1_rd1_fwy01', + [-1188165340] = 'dt1_rd1_fwy02', + [678397898] = 'dt1_rd1_fwy03_detail1', + [-1776753889] = 'dt1_rd1_fwy03_detail2', + [-29674642] = 'dt1_rd1_fwy03_detail3', + [635757200] = 'dt1_rd1_fwy03', + [-609530338] = 'dt1_rd1_fwy04', + [-895898629] = 'dt1_rd1_fwy05', + [-1123307840] = 'dt1_rd1_r1_00', + [-1428616613] = 'dt1_rd1_r1_01', + [140193437] = 'dt1_rd1_r1_018', + [-1601964627] = 'dt1_rd1_r1_02', + [-1799954925] = 'dt1_rd1_r1_03', + [1142013126] = 'dt1_rd1_r1_04', + [835786821] = 'dt1_rd1_r1_05', + [-1482882081] = 'dt1_rd1_r1_06', + [-581275815] = 'dt1_rd1_r1_07', + [-888157500] = 'dt1_rd1_r1_08', + [1893013072] = 'dt1_rd1_r1_09', + [1047539627] = 'dt1_rd1_r1_10', + [974549378] = 'dt1_rd1_r1_11_details', + [100155072] = 'dt1_rd1_r1_11', + [1368443312] = 'dt1_rd1_r1_11b', + [-954089200] = 'dt1_rd1_r1_12', + [561509823] = 'dt1_rd1_r1_13', + [-224094183] = 'dt1_rd1_r1_14', + [-1895968567] = 'dt1_rd1_r1_15', + [-1624575709] = 'dt1_rd1_r1_16', + [1946786517] = 'dt1_rd1_r1_19', + [-1671107949] = 'dt1_rd1_r1_20', + [-1440872955] = 'dt1_rd1_r1_21', + [-1192778856] = 'dt1_rd1_r1_22', + [1440538000] = 'dt1_rd1_r1_23', + [1653798652] = 'dt1_rd1_r1_24', + [1908970843] = 'dt1_rd1_r1_25', + [-2146029066] = 'dt1_rd1_r1_26', + [478898914] = 'dt1_rd1_r1_27', + [700810582] = 'dt1_rd1_r1_28', + [954147721] = 'dt1_rd1_r1_29', + [-1932703092] = 'dt1_rd1_r1_30', + [1647181629] = 'dt1_rd1_r1_31_s', + [131743924] = 'dt1_rd1_r1_31', + [638352664] = 'dt1_rd1_r1_32', + [1099969567] = 'dt1_rd1_r1_34', + [1442713568] = 'dt1_rd1_r1_35_s', + [-521735490] = 'dt1_rd1_r1_35', + [-2091615435] = 'dt1_rd1_r1_36_s', + [-31118018] = 'dt1_rd1_r1_36', + [226741243] = 'dt1_rd1_r1_37', + [92070402] = 'dt1_rd1_r1_38_s_lod', + [-329607936] = 'dt1_rd1_r1_38_s', + [448194145] = 'dt1_rd1_r1_38', + [-1517487093] = 'dt1_rd1_r1_39', + [1766654512] = 'dt1_rd1_r1_40', + [1534092907] = 'dt1_rd1_r1_41', + [-1180768178] = 'dt1_rd1_r1_42_s', + [1153382665] = 'dt1_rd1_r1_42', + [-1492091478] = 'dt1_rd1_r1_43', + [-1874964474] = 'dt1_rd1_r1_44', + [-2102020875] = 'dt1_rd1_r1_45', + [1877512027] = 'dt1_rd1_r1_46', + [-366312479] = 'dt1_rd1_r1_47', + [-610933068] = 'dt1_rd1_r1_48', + [-457653302] = 'dt1_rd1_r1_62', + [1506675500] = 'dt1_rd1_r1_ovly_00', + [1851864146] = 'dt1_rd1_r1_ovly_01', + [2090914001] = 'dt1_rd1_r1_ovly_02', + [-57716568] = 'dt1_rd1_r1_ovly_03', + [315522342] = 'dt1_rd1_r1_ovly_04', + [-1591076381] = 'dt1_rd1_r1_ovly_05', + [-1246215425] = 'dt1_rd1_r1_ovly_06', + [-710933810] = 'dt1_rd1_r1_ovly_07', + [-338612432] = 'dt1_rd1_r1_ovly_08', + [-99365963] = 'dt1_rd1_r1_ovly_09', + [429360432] = 'dt1_rd1_r1_ovly_10', + [-1241727492] = 'dt1_rd1_r1_ovly_11', + [-2093295495] = 'dt1_rd1_r1_ovly_12', + [-1859390373] = 'dt1_rd1_r1_ovly_13', + [1600983262] = 'dt1_rd1_r1_ovly_14', + [-1058319395] = 'dt1_rd1_r1_ovly_15', + [-836342189] = 'dt1_rd1_r1_ovly_16', + [-1651733216] = 'dt1_rd1_r1_ovly_17', + [-1412224595] = 'dt1_rd1_r1_ovly_18', + [667623831] = 'dt1_rd1_r1_ovly_19', + [-1392989504] = 'dt1_rd1_r1_ovly_20', + [1876766858] = 'dt1_rd1_r1_ovly_21', + [192534998] = 'dt1_rd1_r1_ovly_22_nb', + [-1910674166] = 'dt1_rd1_r1_ovly_22', + [-446063715] = 'dt1_rd1_r1_ovly_23', + [-236800881] = 'dt1_rd1_r1_ovly_24', + [-1191918920] = 'dt1_rd1_r1_ovly_25', + [-679804988] = 'dt1_rd1_r1_ovly_26', + [175662526] = 'dt1_rd1_r1_ovly_27', + [448267837] = 'dt1_rd1_r1_ovly_28', + [-1620634843] = 'dt1_rd1_r1_ovly_30', + [980699449] = 'dt1_rd1_r1_ovly_31', + [1359181399] = 'dt1_rd1_r1_ovly_32', + [-706740206] = 'dt1_rd1_r1_ovly_33', + [-331993922] = 'dt1_rd1_r1_ovly_34', + [599858135] = 'dt1_rd1_r1_ovly_35', + [1979105349] = 'dt1_rd1_r1_ovly_36', + [1059836588] = 'dt1_rd1_r1_ovly_37', + [1433796416] = 'dt1_rd1_r1_ovly_38', + [1889219982] = 'dt1_rd1_r1_ovly_39', + [-2115669610] = 'dt1_rd1_r1_ovly_40', + [1385403123] = 'dt1_rd1_r1_ovly_41', + [1617669795] = 'dt1_rd1_r1_ovly_42', + [782158598] = 'dt1_rd1_r1_ovly_43', + [1021306760] = 'dt1_rd1_r1_ovly_44', + [154796093] = 'dt1_rd1_r1_ovly_45', + [-137372311] = 'dt1_rd1_r1_ovly_46', + [439689775] = 'dt1_rd1_r1_ovly_47', + [150798271] = 'dt1_rd1_r1_ovly_48', + [-1595621039] = 'dt1_rd1_r2_fwy_ovly_01', + [-1222447667] = 'dt1_rd1_r2_fwy_ovly_02', + [2140536500] = 'dt1_rd1_r2_fwy_ovly_03', + [-1919640911] = 'dt1_rd1_r2_fwy_ovly_04', + [225869253] = 'dt1_rd1_r6_28', + [-883370446] = 'dt1_rd1_t21', + [-1493447772] = 'dt1_rd1_tnl_s', + [127552213] = 'dt1_rd1_tunnelshadowbox1', + [450195787] = 'dt1_rd1_tunnelshadowbox2', + [-251257427] = 'dt1_rd1_tunnelshadowbox3', + [-2112514530] = 'dt1_rd1_wire244', + [-1868745939] = 'dt1_rd1_wire245', + [-392624135] = 'dt1_tc_ce_lod', + [-1330952343] = 'dt1_tc_ce', + [-186664415] = 'dt1_tc_ce2_lod', + [-1774935482] = 'dt1_tc_ces2', + [2073273140] = 'dt1_tc_cpr_null', + [1868969512] = 'dt1_tc_cpr', + [1335486050] = 'dt1_tc_dufo_core_lod', + [2105137876] = 'dt1_tc_dufo_core', + [-753271713] = 'dt1_tc_dufo_lights', + [-1347261355] = 'dt1_tc_rcex2_null', + [-2100080556] = 'dt1_tc_rcex2_prox', + [-41006999] = 'dt1_tc_ufo_pivot', + [-510749711] = 'dt1_tc_ufocore_col', + [-560378741] = 'dt1_tc_ufocore', + [1177543287] = 'dubsta', + [-394074634] = 'dubsta2', + [-1237253773] = 'dubsta3', + [723973206] = 'dukes', + [-326143852] = 'dukes2', + [-2130482718] = 'dump', + [-1661854193] = 'dune', + [534258863] = 'dune2', + [-827162039] = 'dune4', + [-312295511] = 'dune5', + [970356638] = 'duster', + [-332287871] = 'ela_wdn_02_', + [-973756617] = 'ela_wdn_02_decal', + [437977014] = 'ela_wdn_02lod_', + [22143489] = 'ela_wdn_04_', + [-1936258660] = 'ela_wdn_04_decals', + [812229521] = 'ela_wdn_04lod_', + [196747873] = 'elegy', + [-566387422] = 'elegy2', + [-685276541] = 'emperor', + [-1883002148] = 'emperor2', + [-1241712818] = 'emperor3', + [1753414259] = 'enduro', + [-1291952903] = 'entityxf', + [2035069708] = 'esskey', + [-5153954] = 'exemplar', + [-1388160414] = 'exile1_lightrig', + [2116711309] = 'exile1_reflecttrig', + [-591610296] = 'f620', + [-2119578145] = 'faction', + [-1790546981] = 'faction2', + [-2039755226] = 'faction3', + [-1842748181] = 'faggio', + [55628203] = 'faggio2', + [-1289178744] = 'faggio3', + [1127131465] = 'fbi', + [-1647941228] = 'fbi2', + [627535535] = 'fcr', + [-757735410] = 'fcr2', + [-391594584] = 'felon', + [-89291282] = 'felon2', + [-1995326987] = 'feltzer2', + [-1566741232] = 'feltzer3', + [1312726357] = 'fib_3_qte_lightrig', + [-1445429028] = 'fib_5_mcs_10_lightrig', + [139599796] = 'fib_cl2_cbl_root', + [66776599] = 'fib_cl2_cbl2_root', + [-1808138869] = 'fib_cl2_frm_root', + [1494703683] = 'fib_cl2_vent_root', + [509226741] = 'fire_mesh_root', + [1938952078] = 'firetruk', + [-836512833] = 'fixter', + [1353720154] = 'flatbed', + [1426219628] = 'fmj', + [1491375716] = 'forklift', + [-1137532101] = 'fq2', + [1649550295] = 'frag_plank_a', + [2139119155] = 'frag_plank_b', + [1209298780] = 'frag_plank_c', + [1449004015] = 'frag_plank_d', + [423137701] = 'frag_plank_e', + [1030400667] = 'freight', + [184361638] = 'freightcar', + [920453016] = 'freightcont1', + [240201337] = 'freightcont2', + [642617954] = 'freightgrain', + [-777275802] = 'freighttrailer', + [744705981] = 'frogger', + [1949211328] = 'frogger2', + [1909141499] = 'fugitive', + [-1089039904] = 'furoregt', + [499169875] = 'fusilade', + [2016857647] = 'futo', + [1840143597] = 'fwy_01_02_sd_slod1', + [1010082231] = 'fwy_01_arm_02', + [510682659] = 'fwy_01_arm_03', + [667951943] = 'fwy_01_fwy_skidm', + [-1688398509] = 'fwy_01_fwy1_ramp', + [-1539362751] = 'fwy_01_fwysign_001_i', + [384243091] = 'fwy_01_fwysign_001_o', + [-1196871971] = 'fwy_01_fwysign_001', + [628460638] = 'fwy_01_fwysign_001b_o', + [-1721388198] = 'fwy_01_fwysign_001b', + [-1424992593] = 'fwy_01_fwysign_001c', + [-446666697] = 'fwy_01_fwysign_002_i', + [-1958923274] = 'fwy_01_fwysign_002_o', + [-1502901662] = 'fwy_01_fwysign_002', + [581813452] = 'fwy_01_fwysign_002b', + [899441450] = 'fwy_01_fwysign_003_o', + [-716281817] = 'fwy_01_fwysign_003', + [-1235716626] = 'fwy_01_fwysign_004_o', + [-870689345] = 'fwy_01_fwysign_004', + [-1352084448] = 'fwy_01_fwysign_004b_o', + [1425450769] = 'fwy_01_fwysign_004b', + [50146337] = 'fwy_01_fwysign_004c_o', + [1128989626] = 'fwy_01_fwysign_004c', + [1810273435] = 'fwy_01_fwysign_005_o', + [1977002345] = 'fwy_01_fwysign_005', + [956177882] = 'fwy_01_fwysign_005b_o', + [-1262405744] = 'fwy_01_fwysign_005b', + [1186780800] = 'fwy_01_fwysign_006_o', + [1802278037] = 'fwy_01_fwysign_006', + [281425119] = 'fwy_01_fwysign_007_o', + [-1672841648] = 'fwy_01_fwysign_007', + [-1855948360] = 'fwy_01_fwysign_008_o', + [-1975791053] = 'fwy_01_fwysign_008', + [-1425783617] = 'fwy_01_fwysign_009_o', + [842015952] = 'fwy_01_fwysign_009a', + [497023904] = 'fwy_01_fwysign_009b', + [-17745894] = 'fwy_01_fwysign_010_o', + [-2091111388] = 'fwy_01_fwysign_010', + [-390397602] = 'fwy_01_fwysign_011_o', + [1837432950] = 'fwy_01_fwysign_011', + [-1857032501] = 'fwy_01_fwysign_011b_o', + [1516960067] = 'fwy_01_fwysign_011b', + [251509929] = 'fwy_01_fwysign_033', + [1468190142] = 'fwy_01_fwysign_034', + [-1520041117] = 'fwy_01_fwysign_text_002', + [-652481846] = 'fwy_01_fwysign_text_006', + [-2067119576] = 'fwy_01_fwysign_text_007', + [825629441] = 'fwy_01_fwysign_text_009', + [-1330504933] = 'fwy_01_fwysign_text_012', + [-1462891697] = 'fwy_01_fwysign_text_014', + [-1000291724] = 'fwy_01_fwysign_text_016', + [-1879746146] = 'fwy_01_fwysign_text_017', + [-945165223] = 'fwy_01_fwysign_text_017b', + [-1657772160] = 'fwy_01_fwysign_text_021', + [1212923312] = 'fwy_01_fwysign_text_024', + [1368444986] = 'fwy_01_fwysign_text_025', + [177816140] = 'fwy_01_fwysign_text_029', + [-1797299894] = 'fwy_01_fwysign_text_030', + [948840613] = 'fwy_01_fwysign_text_032', + [-2125317572] = 'fwy_01_fwysign_text_035', + [356737552] = 'fwy_01_fwysign_text_037', + [-1417703786] = 'fwy_01_fwysign_text_038', + [-1195235045] = 'fwy_01_fwysign_text_039', + [-1612060001] = 'fwy_01_fwysign_text_040', + [-2124632699] = 'fwy_01_fwysign_text_042', + [1911525055] = 'fwy_01_fwysign_text_044', + [-1645287747] = 'fwy_01_fwysign_text_049', + [-833730405] = 'fwy_01_fwysign_text_053', + [-1277717586] = 'fwy_01_fwysign_text_055', + [-535434198] = 'fwy_01_fwysign_text_056', + [1169012568] = 'fwy_01_fwysign_text_057', + [-607917910] = 'fwy_01_fwysign_text_063', + [-1197923755] = 'fwy_01_fwysign_text_065', + [-2129939653] = 'fwy_01_fwysign_text_069', + [-1031459103] = 'fwy_01_fwysign_text_071', + [-803616246] = 'fwy_01_fwysign_text_072', + [-858569863] = 'fwy_01_fwysign_text_074', + [1998821403] = 'fwy_01_fwysign_text_075', + [-56350618] = 'fwy_01_fwysign_text_081', + [-948794544] = 'fwy_01_girders', + [-871833653] = 'fwy_01_grafitti_01', + [-500422441] = 'fwy_01_grnd05_o', + [1842188256] = 'fwy_01_lowbridge_01', + [-991731276] = 'fwy_01_ol_em_slod', + [1033912531] = 'fwy_01_olimp_emm', + [704672500] = 'fwy_01_olimp_frm', + [-1675060355] = 'fwy_01_olimp', + [1862824433] = 'fwy_01_overheadsigns_00', + [1084265762] = 'fwy_01_overheadsigns_01', + [-1954796836] = 'fwy_01_overheadsigns_02', + [1562201627] = 'fwy_01_overheadsigns_03', + [-13663847] = 'fwy_01_overheadsigns_032', + [1417554997] = 'fwy_01_overheadsigns_033', + [1613517905] = 'fwy_01_overheadsigns_04', + [-1884867766] = 'fwy_01_overheadsigns_05', + [2086407348] = 'fwy_01_overheadsigns_06', + [-1439963053] = 'fwy_01_overheadsigns_07', + [714631466] = 'fwy_01_overheadsigns_08', + [413353280] = 'fwy_01_overheadsigns_09', + [-1860519303] = 'fwy_01_overheadsigns_10', + [-1487149317] = 'fwy_01_overheadsigns_11', + [-1777449884] = 'fwy_01_overheadsigns_12', + [-1538203415] = 'fwy_01_overheadsigns_13', + [982846827] = 'fwy_01_overheadsigns_14', + [1221765606] = 'fwy_01_overheadsigns_15', + [1593366066] = 'fwy_01_overheadsigns_16', + [1832874687] = 'fwy_01_overheadsigns_17', + [57253653] = 'fwy_01_overheadsigns_18', + [287521416] = 'fwy_01_overheadsigns_19', + [1490628919] = 'fwy_01_overheadsigns_20', + [1164118603] = 'fwy_01_overheadsigns_21', + [934047454] = 'fwy_01_overheadsigns_22', + [-1514679246] = 'fwy_01_overheadsigns_22b', + [568279876] = 'fwy_01_overheadsigns_23', + [299737921] = 'fwy_01_overheadsigns_24', + [71043070] = 'fwy_01_overheadsigns_25', + [-329066420] = 'fwy_01_overheadsigns_26', + [-552354386] = 'fwy_01_overheadsigns_27', + [-292791141] = 'fwy_01_overheadsigns_28', + [-664981443] = 'fwy_01_overheadsigns_29', + [1586123297] = 'fwy_01_overheadsigns_31', + [742581443] = 'fwy_01_rd_01_r1a', + [438255740] = 'fwy_01_rd_01_r1b', + [288402815] = 'fwy_01_rd_01_r2a', + [1599523274] = 'fwy_01_rd_01_r2b', + [-825160510] = 'fwy_01_rd_01', + [620771615] = 'fwy_01_rd_02', + [1109850339] = 'fwy_01_rd_03_ov', + [491514567] = 'fwy_01_rd_06_ov', + [434930590] = 'fwy_01_rd_07_ov', + [1578445640] = 'fwy_01_rd_07', + [-62109330] = 'fwy_01_rd_08_ov', + [589346116] = 'fwy_01_rd_08', + [-1292944763] = 'fwy_01_rd_09_ov', + [-1993276189] = 'fwy_01_rd_11', + [1840336356] = 'fwy_01_rd_13', + [-183771953] = 'fwy_01_rd_14', + [524562751] = 'fwy_01_rd_17', + [-1370337447] = 'fwy_01_rd_18', + [29127656] = 'fwy_01_rd_30', + [-494160505] = 'fwy_01_rd_32', + [-220178896] = 'fwy_01_rd_33', + [512077158] = 'fwy_01_rd_34', + [751651317] = 'fwy_01_rd_35', + [-100211607] = 'fwy_01_rd_36', + [135889038] = 'fwy_01_rd_37', + [-736356204] = 'fwy_01_rd_38', + [-437514484] = 'fwy_01_rd_38bb', + [1610847895] = 'fwy_01_rd_46_ov', + [-985525179] = 'fwy_01_rd_47_ov', + [-1020906284] = 'fwy_01_rd_48_ov', + [-1141630438] = 'fwy_01_rd_49_ov', + [-1498891687] = 'fwy_01_rd_50_ov', + [-1768270429] = 'fwy_01_rd_51_ov', + [-306684696] = 'fwy_01_rd_51b_ov', + [-1592810990] = 'fwy_01_rd_52_ov', + [1485653058] = 'fwy_01_rd_53_ov', + [-74533222] = 'fwy_01_rd_54_ov', + [-1085737988] = 'fwy_01_rd_55_ov', + [1260036682] = 'fwy_01_rd_56_ov', + [-1853124218] = 'fwy_01_rd_57_ov', + [-1383806654] = 'fwy_01_rd_57', + [-392210734] = 'fwy_01_rd_58_edge', + [1086377175] = 'fwy_01_rd_58_ov', + [-1135941938] = 'fwy_01_rd_58', + [1576488730] = 'fwy_01_rd_59_ov', + [-1863249893] = 'fwy_01_rd_59', + [1435408089] = 'fwy_01_rd_60_ov', + [674150372] = 'fwy_01_rd_60', + [-1359039987] = 'fwy_01_rd_61_ov', + [-34610329] = 'fwy_01_rd_61', + [-910933535] = 'fwy_01_sandp_02', + [-615324386] = 'fwy_01_sandp_03', + [1130444093] = 'fwy_01_sandp_04', + [1291405421] = 'fwy_01_sandp_05', + [-85325610] = 'fwy_01_sandramp002', + [693598623] = 'fwy_01_shadowcast', + [-1061671498] = 'fwy_01_shadowonly_01', + [1463284828] = 'fwy_01_spjump_01', + [625283191] = 'fwy_01_spjump_02', + [479783965] = 'fwy_01_split_011', + [181553296] = 'fwy_01_split_012', + [-450451772] = 'fwy_01_split_013_grilla', + [-728496737] = 'fwy_01_split_013_grillb', + [949800367] = 'fwy_01_split_013_grillc', + [1642733641] = 'fwy_01_split_013_grilld', + [-1827403773] = 'fwy_01_split_013_r2', + [-1579539057] = 'fwy_01_split_013_r3', + [-767961252] = 'fwy_01_split_013', + [8303593] = 'fwy_01_split_014', + [398615160] = 'fwy_01_split_015', + [-782824759] = 'fwy_01_split_16_ov', + [1244990135] = 'fwy_01_split_17_ov', + [2033776624] = 'fwy_01_split_18_ov', + [-1101111196] = 'fwy_01_split_19_lights', + [-1059540830] = 'fwy_01_split_19_lights001', + [-7141378] = 'fwy_01_split_19_ov', + [1165105228] = 'fwy_01_split_20_ov', + [-1228976972] = 'fwy_01_split_21_ov', + [-1299659232] = 'fwy_01_spx_013_r2', + [-1616502693] = 'fwy_01_spx_013_r3', + [-1266696153] = 'fwy_01_wallbase_ov', + [2110121657] = 'fwy_01_wallbase', + [998336788] = 'fwy_01_weed_01', + [-936864794] = 'fwy_02_fwysign_001_d1', + [-624707300] = 'fwy_02_fwysign_001_d2', + [-1414931735] = 'fwy_02_fwysign_001_d3', + [525863252] = 'fwy_02_fwysign_001_o', + [-1122614503] = 'fwy_02_fwysign_001', + [-1735820093] = 'fwy_02_fwysign_001b_d', + [-1511916082] = 'fwy_02_fwysign_001b', + [144486419] = 'fwy_02_fwysign_002_d1', + [-965727301] = 'fwy_02_fwysign_002_d2', + [-666775714] = 'fwy_02_fwysign_002_d3', + [-1578343756] = 'fwy_02_fwysign_002_d4', + [1982693480] = 'fwy_02_fwysign_002_o', + [-1330042273] = 'fwy_02_fwysign_002', + [-1608403591] = 'fwy_02_fwysign_003_d1', + [-1906372108] = 'fwy_02_fwysign_003_d2', + [-2146176316] = 'fwy_02_fwysign_003_o', + [-1561686334] = 'fwy_02_fwysign_003', + [190018595] = 'fwy_02_fwysign_003b_d1', + [1532454542] = 'fwy_02_fwysign_003b', + [-364635166] = 'fwy_02_fwysign_004_d2', + [1342564196] = 'fwy_02_fwysign_004_d3', + [158836745] = 'fwy_02_fwysign_004_o', + [306507129] = 'fwy_02_fwysign_004', + [2080949983] = 'fwy_02_fwysign_005_d1', + [1783440232] = 'fwy_02_fwysign_005_d2', + [1736187334] = 'fwy_02_fwysign_005_d3', + [1435335141] = 'fwy_02_fwysign_005_d4', + [-720373524] = 'fwy_02_fwysign_005_d5', + [-1021127406] = 'fwy_02_fwysign_005_d6', + [949955199] = 'fwy_02_fwysign_005_o', + [-193613349] = 'fwy_02_fwysign_005', + [1357840267] = 'fwy_02_fwysign_006_d1', + [1043159560] = 'fwy_02_fwysign_006_d2', + [754923436] = 'fwy_02_fwysign_006_d3', + [450007891] = 'fwy_02_fwysign_006_d4', + [2072320101] = 'fwy_02_fwysign_006_o', + [-452324604] = 'fwy_02_fwysign_006', + [1661861389] = 'fwy_02_fwysign_007_d1', + [-171433073] = 'fwy_02_fwysign_007_d2', + [83280364] = 'fwy_02_fwysign_007_d3', + [574867479] = 'fwy_02_fwysign_007_o', + [1438741617] = 'fwy_02_fwysign_007', + [799479578] = 'fwy_02_fwysign_007b_d', + [1754889414] = 'fwy_02_fwysign_007b', + [1415088992] = 'fwy_02_fwysign_008_d1', + [-828243983] = 'fwy_02_fwysign_008_d2', + [-2103371081] = 'fwy_02_fwysign_008_o', + [1217288715] = 'fwy_02_fwysign_008', + [385229561] = 'fwy_02_fwysign_009_d1', + [-1391440085] = 'fwy_02_fwysign_009_d2', + [-1069666536] = 'fwy_02_fwysign_009_o', + [994033518] = 'fwy_02_fwysign_009', + [-692933029] = 'fwy_02_fwysign_009b_d', + [1070704883] = 'fwy_02_fwysign_009b', + [-734226854] = 'fwy_02_fwysign_010_d1', + [90437792] = 'fwy_02_fwysign_010_d2', + [-2123841015] = 'fwy_02_fwysign_010_o', + [-1551337367] = 'fwy_02_fwysign_010', + [2010341521] = 'fwy_02_fwysign_text_002', + [846681546] = 'fwy_02_fwysign_text_005', + [1356894876] = 'fwy_02_fwysign_text_007', + [126717007] = 'fwy_02_fwysign_text_010', + [956526394] = 'fwy_02_fwysign_text_011', + [-767516234] = 'fwy_02_fwysign_text_014', + [-1929243102] = 'fwy_02_fwysign_text_023', + [1232572174] = 'fwy_02_fwysign_text_026', + [-917696837] = 'fwy_02_fwysign_text_029', + [-1690922397] = 'fwy_02_fwysign_text_031', + [1330150016] = 'fwy_02_fwysign_text_036', + [579412226] = 'fwy_02_fwysign_text_037', + [-2042664851] = 'fwy_02_fwysign_text_039', + [-1249819184] = 'fwy_02_fwysign_text_042', + [-959289230] = 'fwy_02_fwysign_text_043', + [1121280122] = 'fwy_02_fwysign_text_044', + [358516109] = 'fwy_02_fwysign_text_045', + [-565635237] = 'fwy_02_fwysign_text_049', + [670812331] = 'fwy_02_fwysign_text_050', + [982085062] = 'fwy_02_fwysign_text_051', + [-1926229226] = 'fwy_02_fwysign_text_052', + [-1675448069] = 'fwy_02_fwysign_text_053', + [-646078709] = 'fwy_02_rd_03', + [798903115] = 'fwy_02_rd_09', + [1850820264] = 'fwy_02_rd_10', + [311299879] = 'fwy_02_rd_12', + [1214935303] = 'fwy_02_rd_13_ovly', + [-1397208165] = 'fwy_02_rd_14_ovly', + [264070020] = 'fwy_02_rd_15_ovly', + [1100510211] = 'fwy_02_rd_16_ovly', + [-1046092401] = 'fwy_02_rd_17_ovly', + [66701422] = 'fwy_02_rd_18_ovly', + [-2106293128] = 'fwy_02_rd_19_ovly', + [-818563571] = 'fwy_02_rd_20_ovly', + [666855341] = 'fwy_02_rd_21_ovly', + [1070906795] = 'fwy_02_rd_22_ovly', + [-51668059] = 'fwy_02_rd_23_ovly', + [-1313974705] = 'fwy_02_rd_24_ovly', + [-1942772126] = 'fwy_02_rd_25_ovly', + [-240223431] = 'fwy_02_rd_26_ovly', + [-2099791741] = 'fwy_02_rd_27_ovly', + [-46817348] = 'fwy_02_rd_28_ovly', + [1151469602] = 'fwy_02_rd_29_ovly', + [-1124364125] = 'fwy_02_rd_31_ovly', + [-790076963] = 'fwy_02_rd_32_ovly', + [2144403984] = 'fwy_02_rd_33_ovly', + [51971457] = 'fwy_02_rd_34_ovly', + [-865290286] = 'fwy_02_rd_35_ovly', + [-13231297] = 'fwy_02_rd_36_ovly', + [-61112409] = 'fwy_02_rd_39_ovly', + [-991167828] = 'fwy_02_rd_39', + [-1481232386] = 'fwy_02_rd_39g', + [-540134993] = 'fwy_02_rd_40_ovly', + [-135564714] = 'fwy_02_rd_40', + [-306029052] = 'fwy_02_rd_41', + [912505344] = 'fwy_02_rd_42_ovly', + [-1958471419] = 'fwy_02_rd_42', + [-2127087806] = 'fwy_02_rd_43_ovly', + [-1139606878] = 'fwy_02_rd_43', + [-826138624] = 'fwy_02_rd_44', + [-979956310] = 'fwy_02_rd_45', + [1180340019] = 'fwy_02_rd_46', + [1928030292] = 'fwy_02_rd_47', + [1774605834] = 'fwy_02_rd_48', + [-1733151775] = 'fwy_02_rd_49', + [177673797] = 'fwy_02_rd_50', + [475609545] = 'fwy_02_rd_51', + [791535474] = 'fwy_02_rd_52', + [820699884] = 'fwy_02_rd_53', + [-449066101] = 'fwy_02_rd_55', + [-201955072] = 'fwy_02_rd_56', + [-832529203] = 'fwy_02_rd_64', + [-1109460022] = 'fwy_02_rd_65', + [1672693620] = 'fwy_02_rd_66', + [-1213375525] = 'fwy_02_reflectproxyb', + [1931632830] = 'fwy_02_sandp_01', + [1547929199] = 'fwy_02_split01', + [-1941346694] = 'fwy_02_split02', + [-1331220683] = 'fwy_02_split04', + [-2015568191] = 'fwy_02_split10', + [785404779] = 'fwy_03_candysign', + [-1834361447] = 'fwy_03_fwysign_001', + [-1604355836] = 'fwy_03_fwysign_002', + [929081096] = 'fwy_03_fwysign_003', + [743654470] = 'fwy_03_fwysign_01', + [-1431256833] = 'fwy_03_fwysign_02', + [-1061688051] = 'fwy_03_fwysign_03', + [-1785293109] = 'fwy_03_fwysign_04', + [-1435450938] = 'fwy_03_fwysign_d_001', + [766625870] = 'fwy_03_fwysign_d_002', + [-1788540663] = 'fwy_03_fwysign_graf01_002', + [609487482] = 'fwy_03_fwysign_o_001', + [1853365953] = 'fwy_03_fwysign_o_002', + [1067958561] = 'fwy_03_fwysign_o_003', + [2116070062] = 'fwy_03_fwysign_text_002', + [1400198488] = 'fwy_03_fwysign_text_003', + [1556703232] = 'fwy_03_fwysign_text_004', + [849089446] = 'fwy_03_fwysign_text_005', + [368400973] = 'fwy_03_fwysign_text_007', + [681967534] = 'fwy_03_fwysign_text_008', + [-641703452] = 'fwy_03_fwysign_text_009', + [-56187352] = 'fwy_03_fwysign_text_010', + [847525937] = 'fwy_03_rd_01_ov', + [255575519] = 'fwy_03_rd_01', + [-51502780] = 'fwy_03_rd_02', + [-1203955749] = 'fwy_03_rd_03', + [1707839008] = 'fwy_03_rd_04_ov', + [-580847449] = 'fwy_03_rd_05_ov', + [-1429376089] = 'fwy_03_split_01_ov', + [1249422387] = 'fwy_03_split_01', + [38968300] = 'fwy_03_split_02', + [-928456347] = 'fwy_03_split_03_ov', + [1722377364] = 'fwy_03_split_03', + [944396955] = 'fwy_04_bridge002', + [351093622] = 'fwy_04_bridge01dcal', + [827571142] = 'fwy_04_dcal01', + [-156050048] = 'fwy_04_e', + [-133366097] = 'fwy_04_fw1_04_detail1', + [1991285401] = 'fwy_04_fwy_4_rd_41a_ovly', + [-367811350] = 'fwy_04_fwysign_001_o', + [-742405552] = 'fwy_04_fwysign_001', + [2135834351] = 'fwy_04_fwysign_002_d1', + [614926754] = 'fwy_04_fwysign_002_d2', + [-195220540] = 'fwy_04_fwysign_002_d2b', + [369192023] = 'fwy_04_fwysign_002_d3', + [-228769631] = 'fwy_04_fwysign_002_d3b', + [-1143481286] = 'fwy_04_fwysign_002_o', + [-1732946884] = 'fwy_04_fwysign_002', + [-140112333] = 'fwy_04_fwysign_002b_d1', + [-858244964] = 'fwy_04_fwysign_002b_d2', + [116631354] = 'fwy_04_fwysign_002b_o', + [-490505368] = 'fwy_04_fwysign_002b', + [1208556485] = 'fwy_04_fwysign_003_d1', + [-1651456297] = 'fwy_04_fwysign_003_d2', + [1630058572] = 'fwy_04_fwysign_003_o', + [-935578807] = 'fwy_04_fwysign_003', + [-1383700919] = 'fwy_04_fwysign_003b_d1', + [1498047932] = 'fwy_04_fwysign_003b_o', + [-1765874572] = 'fwy_04_fwysign_003b', + [1700741085] = 'fwy_04_fwysign_004_o', + [529031656] = 'fwy_04_fwysign_004', + [-393491313] = 'fwy_04_fwysign_004b_d1', + [-1765234422] = 'fwy_04_fwysign_004b_d2', + [223712802] = 'fwy_04_fwysign_004b_d3', + [1000370871] = 'fwy_04_fwysign_004b_d4', + [-1396734687] = 'fwy_04_fwysign_004b_o', + [-1811018842] = 'fwy_04_fwysign_004b', + [-234351313] = 'fwy_04_fwysign_005_d1', + [425518040] = 'fwy_04_fwysign_005_d2', + [379248212] = 'fwy_04_fwysign_005_d3', + [-168997376] = 'fwy_04_fwysign_005_o', + [481778758] = 'fwy_04_fwysign_005', + [-1537226023] = 'fwy_04_fwysign_005b_o', + [204143266] = 'fwy_04_fwysign_005b', + [1371307852] = 'fwy_04_fwysign_006_d1', + [1117100156] = 'fwy_04_fwysign_006_d1a', + [-1015604667] = 'fwy_04_fwysign_006_d1b', + [2114836604] = 'fwy_04_fwysign_006_o', + [30615166] = 'fwy_04_fwysign_006', + [-226639138] = 'fwy_04_fwysign_007_d1', + [1160276018] = 'fwy_04_fwysign_007_d2', + [383224721] = 'fwy_04_fwysign_007_d3', + [-726034277] = 'fwy_04_fwysign_007_o', + [-268074269] = 'fwy_04_fwysign_007', + [-2083932575] = 'fwy_04_fwysign_007b_d1', + [-495177453] = 'fwy_04_fwysign_007b_o', + [214172320] = 'fwy_04_fwysign_007b', + [1718173563] = 'fwy_04_fwysign_055_d2', + [-452901833] = 'fwy_04_fwysign_graf02_002', + [-1140620436] = 'fwy_04_fwysign_text_002', + [871723854] = 'fwy_04_fwysign_text_005', + [708272082] = 'fwy_04_fwysign_text_006', + [-1668529026] = 'fwy_04_fwysign_text_007', + [1254891771] = 'fwy_04_fwysign_text_008', + [1707955613] = 'fwy_04_fwysign_text_011', + [398047607] = 'fwy_04_fwysign_text_012', + [177413930] = 'fwy_04_fwysign_text_013', + [472072778] = 'fwy_04_fwysign_text_014', + [-1595520046] = 'fwy_04_fwysign_text_015', + [1384066817] = 'fwy_04_fwysign_text_016', + [1097632988] = 'fwy_04_fwysign_text_017', + [1933242488] = 'fwy_04_fwysign_text_018', + [-2048518726] = 'fwy_04_fwysign_text_019', + [826828448] = 'fwy_04_fwysign_text_021', + [520536605] = 'fwy_04_fwysign_text_022', + [1558003145] = 'fwy_04_fwysign_text_023', + [1252170068] = 'fwy_04_fwysign_text_024', + [269431251] = 'fwy_04_fwysign_text_024www', + [1712214059] = 'fwy_04_fwysign_text_026', + [1248631024] = 'fwy_04_fwysign_text_028', + [1882317718] = 'fwy_04_fwysign_text_030', + [-278437377] = 'fwy_04_fwysign_text_031', + [-861070197] = 'fwy_04_fwysign_text_032', + [-1456908924] = 'fwy_04_fwysign_text_034', + [662622765] = 'fwy_04_fwysign_text_035', + [353381712] = 'fwy_04_fwysign_text_037', + [-493533093] = 'fwy_04_fwysign_text_038', + [-565165327] = 'fwy_04_fwysign_text_040', + [-60502659] = 'fwy_04_fwysign_wire01_002', + [-1290091252] = 'fwy_04_hills01', + [-992614270] = 'fwy_04_hills02', + [-1613816203] = 'fwy_04_hills03', + [1498023267] = 'fwy_04_r2', + [42305773] = 'fwy_04_r2a', + [349646224] = 'fwy_04_r2b', + [-1055962726] = 'fwy_04_rd_01_ovly', + [-299622169] = 'fwy_04_rd_01_sd', + [598721104] = 'fwy_04_rd_01_wall_ovly', + [-547377910] = 'fwy_04_rd_01_wall', + [-916786647] = 'fwy_04_rd_01', + [-706281830] = 'fwy_04_rd_02_ovly', + [1830178571] = 'fwy_04_rd_03_ovly', + [-1280457522] = 'fwy_04_rd_04_ovly', + [747232991] = 'fwy_04_rd_05_ovly', + [-166868070] = 'fwy_04_rd_05', + [759970744] = 'fwy_04_rd_05b_ovly', + [345167919] = 'fwy_04_rd_06_ovly', + [-936560007] = 'fwy_04_rd_07_ovly', + [-1264395611] = 'fwy_04_rd_09_ovly', + [-1249251021] = 'fwy_04_rd_10_ovly', + [-324931192] = 'fwy_04_rd_11_ovly', + [830288125] = 'fwy_04_rd_12_ovly', + [911233722] = 'fwy_04_rd_20', + [1148612358] = 'fwy_04_rd_21', + [-1074305522] = 'fwy_04_rd_22', + [-650319269] = 'fwy_04_rd_22b', + [1315308261] = 'fwy_04_rd_23', + [2068798647] = 'fwy_04_rd_24', + [-1695998990] = 'fwy_04_rd_27', + [-1475922386] = 'fwy_04_rd_28', + [-1237003607] = 'fwy_04_rd_29', + [2142396965] = 'fwy_04_rd_31', + [-243124259] = 'fwy_04_rd_37_ovly', + [810999682] = 'fwy_04_rd_38_ovly', + [-1688415715] = 'fwy_04_rd_44_ovly', + [-40923470] = 'fwy_04_rd_45_ovly', + [-275536697] = 'fwy_04_rd_46_ovly', + [2124488593] = 'fwy_04_rdend_ovly', + [-1947218664] = 'fwy_04_rr2', + [-1587340918] = 'fwy_04_rr2a', + [-942315922] = 'fwy_04_rr2b', + [-1682686593] = 'fwy_04_sign_001_d1_lod', + [-333441867] = 'fwy_04_sign_001_d1', + [-732136925] = 'fwy_04_split02', + [15154100] = 'fwy_04_splita', + [-1595202596] = 'fwy_04_splita01', + [1862352905] = 'fwy_04_splita02', + [1570708805] = 'fwy_04_splita03', + [361513884] = 'g_f_y_ballas_01', + [1309468115] = 'g_f_y_families_01', + [-44746786] = 'g_f_y_lost_01', + [1520708641] = 'g_f_y_vagos_01', + [-236444766] = 'g_m_m_armboss_01', + [-39239064] = 'g_m_m_armgoon_01', + [-412008429] = 'g_m_m_armlieut_01', + [-166363761] = 'g_m_m_chemwork_01', + [-1176698112] = 'g_m_m_chiboss_01', + [275618457] = 'g_m_m_chicold_01', + [2119136831] = 'g_m_m_chigoon_01', + [-9308122] = 'g_m_m_chigoon_02', + [891945583] = 'g_m_m_korboss_01', + [1466037421] = 'g_m_m_mexboss_01', + [1226102803] = 'g_m_m_mexboss_02', + [-984709238] = 'g_m_y_armgoon_02', + [1752208920] = 'g_m_y_azteca_01', + [-198252413] = 'g_m_y_ballaeast_01', + [588969535] = 'g_m_y_ballaorig_01', + [599294057] = 'g_m_y_ballasout_01', + [-398748745] = 'g_m_y_famca_01', + [-613248456] = 'g_m_y_famdnf_01', + [-2077218039] = 'g_m_y_famfor_01', + [611648169] = 'g_m_y_korean_01', + [-1880237687] = 'g_m_y_korean_02', + [2093736314] = 'g_m_y_korlieut_01', + [1330042375] = 'g_m_y_lost_01', + [1032073858] = 'g_m_y_lost_02', + [850468060] = 'g_m_y_lost_03', + [-1109568186] = 'g_m_y_mexgang_01', + [653210662] = 'g_m_y_mexgoon_01', + [832784782] = 'g_m_y_mexgoon_02', + [-1773333796] = 'g_m_y_mexgoon_03', + [1329576454] = 'g_m_y_pologoon_01', + [-1561829034] = 'g_m_y_pologoon_02', + [-1872961334] = 'g_m_y_salvaboss_01', + [663522487] = 'g_m_y_salvagoon_01', + [846439045] = 'g_m_y_salvagoon_02', + [62440720] = 'g_m_y_salvagoon_03', + [-48477765] = 'g_m_y_strpunk_01', + [228715206] = 'g_m_y_strpunk_02', + [741090084] = 'gargoyle', + [-1800170043] = 'gauntlet', + [349315417] = 'gauntlet2', + [-335127307] = 'gb_cap_use', + [-390305663] = 'gb_specs_use', + [-1745203402] = 'gburrito', + [296357396] = 'gburrito2', + [75131841] = 'glendale', + [1234311532] = 'gp1', + [1019737494] = 'graintrailer', + [-1775728740] = 'granger', + [-1543762099] = 'gresley', + [-2107990196] = 'guardian', + [884422927] = 'habanero', + [1265391242] = 'hakuchou', + [-255678177] = 'hakuchou2', + [444583674] = 'handler', + [1518533038] = 'hauler', + [994527967] = 'hc_driver', + [193469166] = 'hc_gunman', + [-1715797768] = 'hc_hacker', + [-502354072] = 'hckbackcurts', + [210564807] = 'hckbarbits', + [1020260229] = 'hckbarflulights', + [-1055049661] = 'hckbarsink', + [857121675] = 'hckbattables', + [1932429680] = 'hckbrskrtfrnt', + [-1986037860] = 'hckbrtrmfrnt', + [-316920558] = 'hckcurt', + [1303104225] = 'hckdirt', + [178230817] = 'hckfirltpics', + [1661133989] = 'hckpics2', + [1190354600] = 'hckpoollite', + [-919638951] = 'hckvestluff', + [-1077266052] = 'hckvestrim', + [-1844138725] = 'hei_ap1_lod_dummyobject', + [82685001] = 'hei_bank_heist_bag', + [1086120991] = 'hei_bank_heist_bikehelmet', + [-562294395] = 'hei_bank_heist_card', + [718253230] = 'hei_bank_heist_gear', + [295312387] = 'hei_bank_heist_guns', + [2002317235] = 'hei_bank_heist_laptop', + [-1898661760] = 'hei_bank_heist_motherboard', + [1244095671] = 'hei_bank_heist_thermal', + [1729686289] = 'hei_bh1_08_bld2_pillars', + [1062717771] = 'hei_bh1_08_bld2', + [-2122927058] = 'hei_bh1_08_details2', + [-1806363504] = 'hei_bh1_08_details4_em_night', + [1501999826] = 'hei_bh1_08_details4_em', + [1309855079] = 'hei_bh1_08_details4', + [-993268079] = 'hei_bh1_08_glue', + [-465355565] = 'hei_bh1_08_grnd', + [1657557447] = 'hei_bh1_08_reflect_lod', + [2030235284] = 'hei_bh1_08_reflect', + [-1626455379] = 'hei_bh1_08_windcla', + [1373874265] = 'hei_bh1_08_windclb', + [1132727194] = 'hei_bh1_08_windclc', + [91527483] = 'hei_bh1_09_bld_01_canopy', + [1666152087] = 'hei_bh1_09_bld_01', + [-2086306759] = 'hei_bh1_09_details1', + [105968425] = 'hei_bh1_09_fizzy_rails', + [1856158425] = 'hei_bh1_09_grnd_03_structures', + [1229892559] = 'hei_bh1_09_lightfitting', + [771676927] = 'hei_bh1_09_reflect_lod', + [732077956] = 'hei_bh1_09_reflect', + [-1757614302] = 'hei_bh1_lod_slod3', + [597743548] = 'hei_bio_heist_card', + [-912160221] = 'hei_bio_heist_gear', + [1035058948] = 'hei_bio_heist_nv_goggles', + [-1285855879] = 'hei_bio_heist_parachute', + [-1401198855] = 'hei_bio_heist_rebreather', + [2085603643] = 'hei_bio_heist_specialops', + [517719173] = 'hei_ch1_lod_5_20_emissive_proxy', + [-177808179] = 'hei_ch1_lod_5_21_emissive_proxy', + [2105885000] = 'hei_ch1_lod_6_20_emissive_proxy', + [1823929581] = 'hei_ch1_lod_dummy', + [279217979] = 'hei_ch1_lod_slod3a', + [1114893017] = 'hei_ch1_lod_slod3b', + [875122244] = 'hei_ch1_lod_slod3c', + [-439438960] = 'hei_ch1_lod_slod3d', + [-629368084] = 'hei_ch1_lod_slod3e', + [-143758313] = 'hei_cs1_lod2_01_7_slod3', + [-1485715126] = 'hei_cs3_04_trailerparkc_grp1_slod', + [779177949] = 'hei_cs3_07_mpool_int1_lod', + [444300357] = 'hei_cs3_07_props_combo0101_slod', + [-291223177] = 'hei_cs3_07_props_combo0102_dslod', + [-1217670562] = 'hei_cs3_07_props_combo0103_slod', + [357195902] = 'hei_dt1_03_mph_door_01', + [1240479391] = 'hei_dt1_tcmods_ce_lod', + [-734652480] = 'hei_dt1_tcmods_ce', + [-1791646378] = 'hei_dt1_tcmods_ce2_lod', + [-126221003] = 'hei_dt1_tcmods_ces2', + [327628301] = 'hei_heist_acc_artgolddisc_01', + [-279450193] = 'hei_heist_acc_artgolddisc_02', + [-539078980] = 'hei_heist_acc_artgolddisc_03', + [-893639560] = 'hei_heist_acc_artgolddisc_04', + [49534624] = 'hei_heist_acc_artwalll_01', + [1802385057] = 'hei_heist_acc_artwallm_01', + [757249493] = 'hei_heist_acc_bowl_01', + [972083057] = 'hei_heist_acc_bowl_02', + [266405121] = 'hei_heist_acc_box_trinket_01', + [1042407810] = 'hei_heist_acc_box_trinket_02', + [1540646549] = 'hei_heist_acc_candles_01', + [1832337418] = 'hei_heist_acc_flowers_01', + [2138367109] = 'hei_heist_acc_flowers_02', + [-1035259143] = 'hei_heist_acc_jar_01', + [-730474674] = 'hei_heist_acc_jar_02', + [579266365] = 'hei_heist_acc_plant_tall_01', + [-641583331] = 'hei_heist_acc_rughidel_01', + [1228752495] = 'hei_heist_acc_rugwooll_01', + [1539730305] = 'hei_heist_acc_rugwooll_02', + [1741063045] = 'hei_heist_acc_rugwooll_03', + [-873939431] = 'hei_heist_acc_sculpture_01', + [-442012286] = 'hei_heist_acc_storebox_01', + [-573863504] = 'hei_heist_acc_tray_01', + [-1598888957] = 'hei_heist_acc_vase_01', + [1859977304] = 'hei_heist_acc_vase_02', + [-2056049276] = 'hei_heist_acc_vase_03', + [34120519] = 'hei_heist_apart2_door', + [592464614] = 'hei_heist_bank_usb_drive', + [-699619545] = 'hei_heist_bed_chestdrawer_04', + [-1857343250] = 'hei_heist_bed_double_08', + [2032846745] = 'hei_heist_bed_table_dble_04', + [-1043360540] = 'hei_heist_crosstrainer_s', + [1758176010] = 'hei_heist_cs_beer_box', + [1482870357] = 'hei_heist_din_chair_01', + [-2033210578] = 'hei_heist_din_chair_02', + [2079364464] = 'hei_heist_din_chair_03', + [-1440452137] = 'hei_heist_din_chair_04', + [696447118] = 'hei_heist_din_chair_05', + [533585188] = 'hei_heist_din_chair_06', + [1667818593] = 'hei_heist_din_chair_08', + [46768928] = 'hei_heist_din_chair_09', + [1500666099] = 'hei_heist_din_table_01', + [-1842591130] = 'hei_heist_din_table_04', + [1916209788] = 'hei_heist_din_table_06', + [-463900993] = 'hei_heist_din_table_07', + [1755369388] = 'hei_heist_flecca_crate', + [-1087517805] = 'hei_heist_flecca_items', + [-1256478069] = 'hei_heist_flecca_weapons', + [275188277] = 'hei_heist_kit_bin_01', + [983107514] = 'hei_heist_kit_coffeemachine_01', + [1307850745] = 'hei_heist_lit_floorlamp_01', + [986354086] = 'hei_heist_lit_floorlamp_02', + [1767370432] = 'hei_heist_lit_floorlamp_03', + [-85388824] = 'hei_heist_lit_floorlamp_04', + [674524286] = 'hei_heist_lit_floorlamp_05', + [-1543942490] = 'hei_heist_lit_lamptable_02', + [-1312560581] = 'hei_heist_lit_lamptable_03', + [-2012997956] = 'hei_heist_lit_lamptable_04', + [-780981863] = 'hei_heist_lit_lamptable_06', + [-383314458] = 'hei_heist_lit_lightpendant_003', + [-1226030074] = 'hei_heist_lit_lightpendant_01', + [-977280595] = 'hei_heist_lit_lightpendant_02', + [1874679314] = 'hei_heist_sh_bong_01', + [-1867871609] = 'hei_heist_stn_benchshort', + [1699373995] = 'hei_heist_stn_chairarm_01', + [1361820526] = 'hei_heist_stn_chairarm_03', + [1038390496] = 'hei_heist_stn_chairarm_04', + [1892580027] = 'hei_heist_stn_chairarm_06', + [-987977838] = 'hei_heist_stn_chairstrip_01', + [-373650829] = 'hei_heist_stn_sofa2seat_02', + [-67162372] = 'hei_heist_stn_sofa2seat_03', + [-1063831511] = 'hei_heist_stn_sofa2seat_06', + [1285701428] = 'hei_heist_stn_sofa3seat_01', + [1623746432] = 'hei_heist_stn_sofa3seat_02', + [167066071] = 'hei_heist_stn_sofa3seat_06', + [370253355] = 'hei_heist_stn_sofacorn_05', + [609499824] = 'hei_heist_stn_sofacorn_06', + [181040912] = 'hei_heist_str_avunitl_01', + [777010715] = 'hei_heist_str_avunitl_03', + [-425006861] = 'hei_heist_str_avunits_01', + [-1384654108] = 'hei_heist_str_sideboardl_02', + [142774420] = 'hei_heist_str_sideboardl_03', + [-165123104] = 'hei_heist_str_sideboardl_04', + [754997647] = 'hei_heist_str_sideboardl_05', + [1634971810] = 'hei_heist_str_sideboards_02', + [1102407831] = 'hei_heist_tab_coffee_05', + [1618060855] = 'hei_heist_tab_coffee_06', + [-1362574620] = 'hei_heist_tab_coffee_07', + [-257220176] = 'hei_heist_tab_sidelrg_01', + [-495942341] = 'hei_heist_tab_sidelrg_02', + [99830848] = 'hei_heist_tab_sidelrg_04', + [-448005892] = 'hei_heist_tab_sidesml_01', + [-541889081] = 'hei_heist_tab_sidesml_02', + [725876312] = 'hei_hw1_06_glue', + [1806690096] = 'hei_hw1_06_glue2', + [2125459429] = 'hei_hw1_06_grnd_low2', + [254934806] = 'hei_hw1_06_road', + [-1102430068] = 'hei_hw1_24_build2', + [1131093423] = 'hei_hw1_24_details', + [-1521421489] = 'hei_hw1_24_ov03', + [-450236671] = 'hei_hw1_blimp_dummy', + [395469806] = 'hei_id2_lod_emissive_ref', + [853220178] = 'hei_id2_lod_id2_water_lod_slod4', + [1751411659] = 'hei_id2_lod_slod4', + [1418231356] = 'hei_mph_selectclothslrig_01', + [389415832] = 'hei_mph_selectclothslrig_02', + [716974756] = 'hei_mph_selectclothslrig_03', + [2091011695] = 'hei_mph_selectclothslrig_04', + [-669909731] = 'hei_mph_selectclothslrig', + [1635549773] = 'hei_p_attache_case_01b_s', + [1265214509] = 'hei_p_attache_case_shut_s', + [698941631] = 'hei_p_attache_case_shut', + [237314697] = 'hei_p_f_bag_var20_arm_s', + [1382142077] = 'hei_p_f_bag_var6_bus_s', + [639051741] = 'hei_p_f_bag_var7_bus_s', + [191751313] = 'hei_p_generic_heist_guns', + [1048435513] = 'hei_p_hei_champ_flute_s', + [-1456790658] = 'hei_p_heist_flecca_bag', + [1790671986] = 'hei_p_heist_flecca_drill', + [489589737] = 'hei_p_heist_flecca_mask', + [1917672668] = 'hei_p_m_bag_var18_bus_s', + [-944468481] = 'hei_p_m_bag_var22_arm_s', + [-155651337] = 'hei_p_parachute_s_female', + [1238160255] = 'hei_p_post_heist_biker_stash', + [1224545529] = 'hei_p_post_heist_coke_stash', + [-258503926] = 'hei_p_post_heist_meth_stash', + [1519210029] = 'hei_p_post_heist_trash_stash', + [-312058329] = 'hei_p_post_heist_weed_stash', + [177215951] = 'hei_p_pre_heist_biker_guns', + [-1358925744] = 'hei_p_pre_heist_biker', + [-1226165256] = 'hei_p_pre_heist_coke', + [-1870174438] = 'hei_p_pre_heist_steal_meth', + [2106464197] = 'hei_p_pre_heist_trash', + [1521715980] = 'hei_p_pre_heist_weed', + [-54086982] = 'hei_prison_heist_clothes', + [-1791288494] = 'hei_prison_heist_docs', + [-597297308] = 'hei_prison_heist_jerry_can', + [1759878906] = 'hei_prison_heist_parachute', + [666650558] = 'hei_prison_heist_schedule', + [235335864] = 'hei_prison_heist_weapons', + [-1906772306] = 'hei_prop_bank_alarm_01', + [-1007354661] = 'hei_prop_bank_cctv_01', + [-1842407088] = 'hei_prop_bank_cctv_02', + [-647884455] = 'hei_prop_bank_ornatelamp', + [301970060] = 'hei_prop_bank_plug', + [1247668342] = 'hei_prop_bank_transponder', + [-368655288] = 'hei_prop_bh1_08_hdoor', + [-976225932] = 'hei_prop_bh1_08_mp_gar2', + [815741875] = 'hei_prop_bh1_09_mp_gar2', + [-1258405227] = 'hei_prop_bh1_09_mph_l', + [-1719104598] = 'hei_prop_bh1_09_mph_r', + [-631186269] = 'hei_prop_carrier_aerial_1', + [-937281498] = 'hei_prop_carrier_aerial_2', + [-443781181] = 'hei_prop_carrier_bombs_1', + [-1239742687] = 'hei_prop_carrier_cargo_01a', + [-348429551] = 'hei_prop_carrier_cargo_02a', + [102012783] = 'hei_prop_carrier_cargo_03a', + [-1709880394] = 'hei_prop_carrier_cargo_04a', + [903634723] = 'hei_prop_carrier_cargo_04b_s', + [-1354861048] = 'hei_prop_carrier_cargo_04b', + [1056511355] = 'hei_prop_carrier_cargo_04c', + [-1471086668] = 'hei_prop_carrier_cargo_05a_s', + [388384482] = 'hei_prop_carrier_cargo_05a', + [-2028471192] = 'hei_prop_carrier_cargo_05b_s', + [811366734] = 'hei_prop_carrier_cargo_05b', + [-1374736588] = 'hei_prop_carrier_crate_01a_s', + [1885839156] = 'hei_prop_carrier_crate_01a', + [495669334] = 'hei_prop_carrier_crate_01b_s', + [656641197] = 'hei_prop_carrier_crate_01b', + [-1730993301] = 'hei_prop_carrier_defense_01', + [-1953429273] = 'hei_prop_carrier_defense_02', + [-1941093436] = 'hei_prop_carrier_docklight_01', + [1644490552] = 'hei_prop_carrier_docklight_02', + [2094829076] = 'hei_prop_carrier_gasbogey_01', + [1774596576] = 'hei_prop_carrier_jet', + [260465372] = 'hei_prop_carrier_liferafts', + [1320280194] = 'hei_prop_carrier_light_01', + [31793303] = 'hei_prop_carrier_lightset_1', + [1673407939] = 'hei_prop_carrier_ord_01', + [-2133399564] = 'hei_prop_carrier_ord_03', + [-737433441] = 'hei_prop_carrier_panel_1', + [-997389918] = 'hei_prop_carrier_panel_2', + [-1430596098] = 'hei_prop_carrier_panel_3', + [-1694943621] = 'hei_prop_carrier_panel_4', + [-1207579608] = 'hei_prop_carrier_phone_01', + [-433280915] = 'hei_prop_carrier_phone_02', + [335154249] = 'hei_prop_carrier_radar_1_l1', + [2124719729] = 'hei_prop_carrier_radar_1', + [-1870804445] = 'hei_prop_carrier_radar_2', + [75309412] = 'hei_prop_carrier_stair_01a', + [1396883182] = 'hei_prop_carrier_stair_01b', + [-963162967] = 'hei_prop_carrier_trailer_01', + [-1823263496] = 'hei_prop_cash_crate_empty', + [-748199017] = 'hei_prop_cash_crate_half_full', + [-893826075] = 'hei_prop_cc_metalcover_01', + [621101123] = 'hei_prop_cntrdoor_mph_l', + [-31919505] = 'hei_prop_cntrdoor_mph_r', + [1652829067] = 'hei_prop_com_mp_gar2', + [-440521971] = 'hei_prop_container_lock', + [-230239317] = 'hei_prop_crate_stack_01', + [695737472] = 'hei_prop_dlc_heist_board', + [1609935604] = 'hei_prop_dlc_heist_map', + [1943210810] = 'hei_prop_dlc_tablet', + [155105927] = 'hei_prop_drug_statue_01', + [1095160111] = 'hei_prop_drug_statue_base_01', + [-970138871] = 'hei_prop_drug_statue_base_02', + [466617970] = 'hei_prop_drug_statue_box_01', + [-1616551421] = 'hei_prop_drug_statue_box_01b', + [371570974] = 'hei_prop_drug_statue_box_big', + [802041688] = 'hei_prop_drug_statue_stack', + [-2105722428] = 'hei_prop_drug_statue_top', + [1529620568] = 'hei_prop_dt1_20_mp_gar2', + [1263238661] = 'hei_prop_dt1_20_mph_door_l', + [-1934393132] = 'hei_prop_dt1_20_mph_door_r', + [-889258808] = 'hei_prop_gold_trolly_empty', + [-636408770] = 'hei_prop_gold_trolly_half_full', + [2123793174] = 'hei_prop_hei_ammo_pile_02', + [-693573187] = 'hei_prop_hei_ammo_pile', + [-1962755162] = 'hei_prop_hei_ammo_single', + [79209609] = 'hei_prop_hei_bank_mon', + [-1605837712] = 'hei_prop_hei_bank_phone_01', + [110411286] = 'hei_prop_hei_bankdoor_new', + [-1388847408] = 'hei_prop_hei_bio_panel', + [-1956621659] = 'hei_prop_hei_bnk_lamp_01', + [949726493] = 'hei_prop_hei_bnk_lamp_02', + [-468144679] = 'hei_prop_hei_bust_01', + [-637483755] = 'hei_prop_hei_carrier_disp_01', + [269934519] = 'hei_prop_hei_cash_trolly_01', + [-108416355] = 'hei_prop_hei_cash_trolly_02', + [769923921] = 'hei_prop_hei_cash_trolly_03', + [-1591138173] = 'hei_prop_hei_cont_light_01', + [1338930512] = 'hei_prop_hei_cs_keyboard', + [1723214043] = 'hei_prop_hei_cs_stape_01', + [-1174384786] = 'hei_prop_hei_cs_stape_02', + [19410268] = 'hei_prop_hei_drill_hole', + [1049338225] = 'hei_prop_hei_drug_case', + [525896218] = 'hei_prop_hei_drug_pack_01a', + [-395076527] = 'hei_prop_hei_drug_pack_01b', + [-1907742965] = 'hei_prop_hei_drug_pack_02', + [-1920951931] = 'hei_prop_hei_garage_plug', + [-1480373456] = 'hei_prop_hei_hose_nozzle', + [-1920621482] = 'hei_prop_hei_id_bank', + [61105977] = 'hei_prop_hei_id_bio', + [-2122821887] = 'hei_prop_hei_keypad_01', + [-1405574011] = 'hei_prop_hei_keypad_02', + [-1659828682] = 'hei_prop_hei_keypad_03', + [995169827] = 'hei_prop_hei_lflts_01', + [1234612910] = 'hei_prop_hei_lflts_02', + [1599047635] = 'hei_prop_hei_med_benchset1', + [-818415955] = 'hei_prop_hei_monitor_overlay', + [810212168] = 'hei_prop_hei_monitor_police_01', + [-2107935824] = 'hei_prop_hei_muster_01', + [899921464] = 'hei_prop_hei_new_plant', + [910205311] = 'hei_prop_hei_paper_bag', + [-207866908] = 'hei_prop_hei_pic_hl_gurkhas', + [1259624006] = 'hei_prop_hei_pic_hl_keycodes', + [-170303942] = 'hei_prop_hei_pic_hl_raid', + [-1167179986] = 'hei_prop_hei_pic_hl_valkyrie', + [630003835] = 'hei_prop_hei_pic_pb_break', + [-1197216983] = 'hei_prop_hei_pic_pb_bus', + [-1608608290] = 'hei_prop_hei_pic_pb_plane', + [1554252335] = 'hei_prop_hei_pic_pb_station', + [1678759457] = 'hei_prop_hei_pic_ps_bike', + [-377023079] = 'hei_prop_hei_pic_ps_convoy', + [564263640] = 'hei_prop_hei_pic_ps_hack', + [-943572871] = 'hei_prop_hei_pic_ps_job', + [-1302073896] = 'hei_prop_hei_pic_ps_trucks', + [2082630228] = 'hei_prop_hei_pic_ps_witsec', + [1014521536] = 'hei_prop_hei_pic_ub_prep', + [-2079534286] = 'hei_prop_hei_pic_ub_prep02', + [1812372168] = 'hei_prop_hei_pic_ub_prep02b', + [-406850826] = 'hei_prop_hei_post_note_01', + [1037912790] = 'hei_prop_hei_security_case', + [-160937700] = 'hei_prop_hei_securitypanel', + [2096238007] = 'hei_prop_hei_shack_door', + [332076319] = 'hei_prop_hei_shack_window', + [449297510] = 'hei_prop_hei_skid_chair', + [629489439] = 'hei_prop_hei_timetable', + [1993764676] = 'hei_prop_hei_tree_fallen_02', + [860567771] = 'hei_prop_hei_warehousetrolly_02', + [820966683] = 'hei_prop_hei_warehousetrolly', + [-807812330] = 'hei_prop_heist_ammo_box', + [-82704061] = 'hei_prop_heist_apecrate', + [1138881502] = 'hei_prop_heist_binbag', + [-517243780] = 'hei_prop_heist_box', + [-411901183] = 'hei_prop_heist_card_hack_02', + [-1827191488] = 'hei_prop_heist_card_hack', + [-1469164005] = 'hei_prop_heist_carrierdoorl', + [394409025] = 'hei_prop_heist_carrierdoorr', + [-1171762716] = 'hei_prop_heist_cash_bag_01', + [1246356548] = 'hei_prop_heist_cash_pile', + [-1436200562] = 'hei_prop_heist_cutscene_doora', + [1853479348] = 'hei_prop_heist_cutscene_doorb', + [1890297615] = 'hei_prop_heist_cutscene_doorc_l', + [-1920147247] = 'hei_prop_heist_cutscene_doorc_r', + [-1305230175] = 'hei_prop_heist_deposit_box', + [1506637536] = 'hei_prop_heist_docs_01', + [-443429795] = 'hei_prop_heist_drill', + [1271198221] = 'hei_prop_heist_drug_tub_01', + [932490441] = 'hei_prop_heist_emp', + [-599546004] = 'hei_prop_heist_gold_bar', + [-1732852367] = 'hei_prop_heist_hook_01', + [1898040612] = 'hei_prop_heist_hose_01', + [-894594569] = 'hei_prop_heist_lockerdoor', + [2055827572] = 'hei_prop_heist_magnet', + [-1198343923] = 'hei_prop_heist_off_chair', + [-780916577] = 'hei_prop_heist_overlay_01', + [-217815249] = 'hei_prop_heist_pc_01', + [-1969585897] = 'hei_prop_heist_pic_01', + [16805345] = 'hei_prop_heist_pic_02', + [-313637251] = 'hei_prop_heist_pic_03', + [-448940452] = 'hei_prop_heist_pic_04', + [-744484063] = 'hei_prop_heist_pic_05', + [1240072119] = 'hei_prop_heist_pic_06', + [908285994] = 'hei_prop_heist_pic_07', + [172949638] = 'hei_prop_heist_pic_08', + [948854020] = 'hei_prop_heist_pic_09', + [-413386375] = 'hei_prop_heist_pic_10', + [-719776525] = 'hei_prop_heist_pic_11', + [986210388] = 'hei_prop_heist_pic_12', + [747357147] = 'hei_prop_heist_pic_13', + [1083173863] = 'hei_prop_heist_pic_14', + [1236807831] = 'hei_prop_heist_plinth', + [-931948057] = 'hei_prop_heist_rolladex', + [755664014] = 'hei_prop_heist_roller_base', + [-1719632135] = 'hei_prop_heist_roller_up', + [-180739589] = 'hei_prop_heist_roller', + [-812777085] = 'hei_prop_heist_safedepdoor', + [152330975] = 'hei_prop_heist_safedeposit', + [-63539571] = 'hei_prop_heist_sec_door', + [924741338] = 'hei_prop_heist_thermite_case', + [-335888452] = 'hei_prop_heist_thermite_flash', + [865563579] = 'hei_prop_heist_thermite', + [388542025] = 'hei_prop_heist_transponder', + [1452661060] = 'hei_prop_heist_trevor_case', + [1429382112] = 'hei_prop_heist_tub_truck', + [-234152995] = 'hei_prop_heist_tug', + [-877183153] = 'hei_prop_heist_tumbler_empty', + [-54433116] = 'hei_prop_heist_weed_block_01', + [-680115871] = 'hei_prop_heist_weed_block_01b', + [1228076166] = 'hei_prop_heist_weed_pallet_02', + [-553616286] = 'hei_prop_heist_weed_pallet', + [377646791] = 'hei_prop_heist_wooden_box', + [1833528513] = 'hei_prop_hst_icon_01', + [-676527372] = 'hei_prop_hst_laptop', + [1210057103] = 'hei_prop_hst_usb_drive_light', + [-779874356] = 'hei_prop_hst_usb_drive', + [1030147405] = 'hei_prop_mini_sever_01', + [1806543322] = 'hei_prop_mini_sever_02', + [412812214] = 'hei_prop_mini_sever_03', + [1290462570] = 'hei_prop_mini_sever_broken', + [50694499] = 'hei_prop_pill_bag_01', + [435562533] = 'hei_prop_server_piece_01', + [-543689572] = 'hei_prop_server_piece_lights', + [245838764] = 'hei_prop_sm_14_mp_gar2', + [-667009138] = 'hei_prop_sm_14_mph_door_l', + [1640157877] = 'hei_prop_sm_14_mph_door_r', + [116180164] = 'hei_prop_ss1_mpint_door_l', + [-415922858] = 'hei_prop_ss1_mpint_door_r', + [1975282749] = 'hei_prop_ss1_mpint_garage2', + [-1603817716] = 'hei_prop_station_gate', + [1424372521] = 'hei_prop_sync_door_06', + [-1232996765] = 'hei_prop_sync_door_08', + [-1874351633] = 'hei_prop_sync_door_09', + [-2881618] = 'hei_prop_sync_door_10', + [2116359305] = 'hei_prop_sync_door01a', + [46734799] = 'hei_prop_sync_door01b', + [393167779] = 'hei_prop_sync_door02a', + [-1562944903] = 'hei_prop_sync_door02b', + [782871627] = 'hei_prop_sync_door03', + [1356853431] = 'hei_prop_sync_door04', + [-1483545996] = 'hei_prop_sync_door05a', + [-2009193533] = 'hei_prop_sync_door05b', + [-2051450263] = 'hei_prop_sync_door07', + [-2002895309] = 'hei_prop_wall_alarm_off', + [1088428993] = 'hei_prop_wall_alarm_on', + [1228163930] = 'hei_prop_wall_light_10a_cr', + [-971547840] = 'hei_prop_yah_glass_01', + [2023735386] = 'hei_prop_yah_glass_02', + [1792484553] = 'hei_prop_yah_glass_03', + [1564805541] = 'hei_prop_yah_glass_04', + [1299409410] = 'hei_prop_yah_glass_05', + [1072287471] = 'hei_prop_yah_glass_06', + [569086707] = 'hei_prop_yah_glass_07', + [338622326] = 'hei_prop_yah_glass_08', + [75487256] = 'hei_prop_yah_glass_09', + [-1562831388] = 'hei_prop_yah_glass_10', + [900699965] = 'hei_prop_yah_lounger', + [28672923] = 'hei_prop_yah_seat_01', + [-293380809] = 'hei_prop_yah_seat_02', + [-591349326] = 'hei_prop_yah_seat_03', + [-1727936540] = 'hei_prop_yah_table_01', + [1844244923] = 'hei_prop_yah_table_02', + [1000639787] = 'hei_prop_yah_table_03', + [623548567] = 'hei_prop_zip_tie_positioned', + [818839470] = 'hei_prop_zip_tie_straight', + [-1387685787] = 'hei_ss1_02_building01', + [-1645951137] = 'hei_ss1_02_garagedtls', + [-13598702] = 'hei_ss1_02_grd01', + [-1812616998] = 'hei_ss1_11_detail01b', + [1754483286] = 'hei_ss1_11_flats', + [-525592501] = 'hei_ss1_11_flatsgrd01', + [567645300] = 'hei_ss1_11_land01', + [1923648289] = 'hei_ss1_11_lobbysofa', + [735855031] = 'hei_v_ilev_bk_gate_molten', + [-222270721] = 'hei_v_ilev_bk_gate_pris', + [1272518122] = 'hei_v_ilev_bk_gate2_molten', + [746855201] = 'hei_v_ilev_bk_gate2_pris', + [108706825] = 'hei_v_ilev_bk_safegate_molten', + [-1508355822] = 'hei_v_ilev_bk_safegate_pris', + [224975209] = 'hei_v_ilev_fh_heistdoor1', + [330294775] = 'hei_v_ilev_fh_heistdoor2', + [301427732] = 'hexer', + [2132980893] = 'hickbackroomshit', + [-1862421347] = 'hickbarbar', + [42358572] = 'hickbardivide', + [1375833564] = 'hickbarfantops', + [-1163879492] = 'hickbarlights', + [-1521838512] = 'hickbarshell', + [-1848794733] = 'hickbartrmbck', + [-619486048] = 'hickbarunit', + [235493964] = 'hickbarvent', + [24583005] = 'hickbrskrtbck', + [76291840] = 'hickmats', + [608514362] = 'hickmoresignsfront', + [799455215] = 'hickneon', + [-1598384008] = 'hicks_barshit', + [810992626] = 'hicks_newreflect', + [1667141189] = 'hicks_wallshit1', + [1027005939] = 'hicksbackdirt', + [-119446652] = 'hicksbarmats', + [234652493] = 'hickshadback', + [-932952209] = 'hickshadowbar', + [1659268031] = 'hicksmoresignsback', + [-90636983] = 'hickwins', + [-2125480855] = 'horizonring', + [37348240] = 'hotknife', + [486987393] = 'huntley', + [-512624075] = 'hw1_01_a', + [-1961608770] = 'hw1_01_alley_details', + [1894291760] = 'hw1_01_b', + [1901730311] = 'hw1_01_c', + [-719461999] = 'hw1_01_d', + [2085889725] = 'hw1_01_decalsa', + [1854343971] = 'hw1_01_decalsb', + [866818173] = 'hw1_01_decalsb2', + [1624272822] = 'hw1_01_decalsc', + [522020779] = 'hw1_01_doorblock', + [-94338861] = 'hw1_01_ground', + [400742046] = 'hw1_01_handrail_lod', + [532780075] = 'hw1_01_handrail', + [548465517] = 'hw1_01_hillsidec', + [2112998637] = 'hw1_01_hillsidedecalsb', + [-1938412073] = 'hw1_01_hillsidegnd', + [114003761] = 'hw1_01_hw1_1_railing', + [1776982345] = 'hw1_01_hw1_1_railing2', + [453135790] = 'hw1_01_ldr001', + [680323267] = 'hw1_01_ldr002', + [808920973] = 'hw1_01_lockup', + [-331160868] = 'hw1_01_props_combo06_dslod', + [794489978] = 'hw1_01_shadow_wall', + [621338680] = 'hw1_01_upnat_fence', + [-463429933] = 'hw1_02_bld1_fnce', + [-1292431284] = 'hw1_02_bld1', + [-373981752] = 'hw1_02_bld2', + [-679814829] = 'hw1_02_bld3', + [-76275387] = 'hw1_02_bld4', + [-330398982] = 'hw1_02_bld5', + [571534974] = 'hw1_02_bld6', + [1849355418] = 'hw1_02_cablemesh173373_hvstd', + [1402840727] = 'hw1_02_cablemesh173388_hvstd', + [-1351627169] = 'hw1_02_cablemesh173403_hvstd', + [-553441798] = 'hw1_02_cablemesh173418_hvstd', + [365129804] = 'hw1_02_cablemesh173433_hvstd', + [-1252834272] = 'hw1_02_detail1', + [-178177157] = 'hw1_02_detail1b', + [-2081826670] = 'hw1_02_detail1d', + [20155248] = 'hw1_02_details2b', + [-2128147623] = 'hw1_02_details2c', + [-1246956444] = 'hw1_02_details2e', + [406599627] = 'hw1_02_door_blocker', + [1100527874] = 'hw1_02_emiss_nomelt_pstrs_lod', + [1837065524] = 'hw1_02_emissive_melt_pstrs_lod', + [-197030570] = 'hw1_02_flow_', + [-2145720397] = 'hw1_02_flow_01', + [1366067799] = 'hw1_02_flow_02', + [1669803660] = 'hw1_02_flow_03', + [-1529040586] = 'hw1_02_flow_04', + [1574660943] = 'hw1_02_grnd1', + [-723897045] = 'hw1_02_grnd2_shadowproxy', + [1936037479] = 'hw1_02_grnd2', + [-1903011502] = 'hw1_02_gru_door_lod', + [37854080] = 'hw1_02_grudoor_dummy', + [2128205696] = 'hw1_02_hw2_red_carpet', + [-864104342] = 'hw1_02_ld', + [1934147822] = 'hw1_02_ld003', + [-73772633] = 'hw1_02_ld004', + [225703258] = 'hw1_02_ld005', + [-635203910] = 'hw1_02_ld006', + [-1807601169] = 'hw1_02_ld02', + [-1397949888] = 'hw1_02_melt_pstrs_lod', + [2103009690] = 'hw1_02_melt_pstrs', + [1455796518] = 'hw1_02_nomelt_pstrs_lod', + [1669257774] = 'hw1_02_nomelt_pstrs', + [-1962732942] = 'hw1_02_prop_premier_fence', + [-1355706694] = 'hw1_02_prop_premier_fence001', + [-528813748] = 'hw1_02_prop_premier_fence002', + [-759671353] = 'hw1_02_prop_premier_fence003', + [1564089854] = 'hw1_02_props_hw1_2_ve01_slod', + [984652212] = 'hw1_02_props_hw1_2_veg_slod', + [-1565118602] = 'hw1_02_railings', + [750378759] = 'hw1_02_railings2', + [-1864064469] = 'hw1_02_redcpet_lod', + [-1231191169] = 'hw1_02_windows_noshad', + [1290932115] = 'hw1_02_wood', + [1338958595] = 'hw1_02_wood2', + [1364022919] = 'hw1_03_a_plots7-9_nodshad', + [-1120421683] = 'hw1_03_build02b', + [2091107352] = 'hw1_03_build04_ovly', + [-1023057929] = 'hw1_03_build04', + [-644523082] = 'hw1_03_garage_01', + [-1803107177] = 'hw1_03_garage_ov_01', + [1600390370] = 'hw1_03_loose_lobday', + [1678520692] = 'hw1_03_pool_dummy', + [1254156759] = 'hw1_03_pool_proxy', + [-546695604] = 'hw1_03_roos_alfa3', + [-113030658] = 'hw1_03_roos_alfa4', + [-2032162002] = 'hw1_03_roos_apts03', + [1120115004] = 'hw1_03_roos_cpark_a', + [-2074675109] = 'hw1_03_roos_cpark2', + [-702435766] = 'hw1_03_roos_int_shad', + [-1029671640] = 'hw1_03_rvelt_dcl01', + [210823447] = 'hw1_03_rvelt_frame', + [1530034397] = 'hw1_03_rvelt01', + [833751936] = 'hw1_04_build02', + [-1627003354] = 'hw1_04_build03', + [1432277721] = 'hw1_04_build04', + [1154083371] = 'hw1_04_build04b', + [-1996911124] = 'hw1_04_cablemesh16435_thvy', + [127209426] = 'hw1_04_glue', + [-234450300] = 'hw1_04_glue003', + [-257044173] = 'hw1_04_glue2', + [-1270820123] = 'hw1_04_ground', + [1119245547] = 'hw1_04_ldr', + [-758751315] = 'hw1_04_pw_chainlink', + [-1187071375] = 'hw1_04_pw_chainlink2', + [-752456116] = 'hw1_04_pw_chainlink3', + [-1050621247] = 'hw1_04_pw_chainlink4', + [1960456613] = 'hw1_04_pw_chainlink5', + [1654459691] = 'hw1_04_pw_chainlink6', + [-2084476352] = 'hw1_04_railing', + [-689786883] = 'hw1_04_railing2', + [-69278676] = 'hw1_04_railing2b', + [-946564767] = 'hw1_04_railing3', + [-1311677237] = 'hw1_04_railingb', + [-2026320990] = 'hw1_04_railng3b', + [2103936397] = 'hw1_06_adbuild02', + [2030499440] = 'hw1_06_adbuild02b', + [1001027582] = 'hw1_06_alley_01', + [-654467153] = 'hw1_06_alley_fence_lod', + [-1001914038] = 'hw1_06_alley_fence', + [266927528] = 'hw1_06_build01cm', + [423838330] = 'hw1_06_build03cm', + [-1283337482] = 'hw1_06_build04cm', + [-293995249] = 'hw1_06_build05cm', + [-376286109] = 'hw1_06_cloth_06_02', + [55642080] = 'hw1_06_cloth_06_03', + [-361612536] = 'hw1_06_cloth_06_m', + [791147146] = 'hw1_06_db07rail_lod', + [1977395601] = 'hw1_06_db07rail2_lod', + [635949094] = 'hw1_06_detail02', + [2064016994] = 'hw1_06_detail02b', + [1107063883] = 'hw1_06_detail02c', + [586863342] = 'hw1_06_emissive_a', + [21532554] = 'hw1_06_emissive_b', + [1180867009] = 'hw1_06_emissive_c', + [1423554223] = 'hw1_06_emissive_d', + [1509835000] = 'hw1_06_emissive_e', + [2012118232] = 'hw1_06_emissive_f', + [2100922222] = 'hw1_06_emissive_g', + [-1955912751] = 'hw1_06_emissive_h', + [-1252132942] = 'hw1_06_emissive_i', + [-2095770847] = 'hw1_06_emissive_j', + [1813300909] = 'hw1_06_emissive_nightphrm_b', + [1068966236] = 'hw1_06_furgrass_00', + [837060023] = 'hw1_06_furgrass_01', + [606235187] = 'hw1_06_furgrass_02', + [381079388] = 'hw1_06_furgrass_03', + [149795786] = 'hw1_06_furgrass_04', + [-758495356] = 'hw1_06_furgrass_05', + [-994038928] = 'hw1_06_furgrass_06', + [-1233678625] = 'hw1_06_furgrass_07', + [-1473744327] = 'hw1_06_furgrass_08', + [-1716202158] = 'hw1_06_furgrass_09', + [484369132] = 'hw1_06_furgrass_10', + [-479465465] = 'hw1_06_furgrass_11', + [-1050956825] = 'hw1_06_furgrass_12', + [-898384449] = 'hw1_06_furgrass_13', + [-1400929833] = 'hw1_06_furgrass_14', + [-440109984] = 'hw1_06_furgrass_15', + [-671393586] = 'hw1_06_furgrass_16', + [-1859630299] = 'hw1_06_furgrass_17', + [-2091077746] = 'hw1_06_furgrass_18', + [755892978] = 'hw1_06_furgrass_19', + [-915652796] = 'hw1_06_furgrass_20', + [-829765247] = 'hw1_06_furgrass_21', + [-592916992] = 'hw1_06_glue', + [899883042] = 'hw1_06_glue2', + [1854018015] = 'hw1_06_glue3', + [-2134244776] = 'hw1_06_gop', + [-1081621127] = 'hw1_06_grnd_low2', + [435131988] = 'hw1_06_hdgb_top', + [1036652564] = 'hw1_06_hdgb', + [-657301768] = 'hw1_06_hedge_rnd_a_l_decr001', + [-1485923788] = 'hw1_06_hedge_rnd_a_ml001', + [-1977076544] = 'hw1_06_hw1_nwcl', + [-1911646444] = 'hw1_06_jrdrs', + [326183423] = 'hw1_06_ldr_', + [-375435415] = 'hw1_06_ldr_01', + [-1336395753] = 'hw1_06_ldr_011', + [-61967161] = 'hw1_06_ldr_02', + [-825943627] = 'hw1_06_ldr_03', + [-529089256] = 'hw1_06_ldr_04', + [1055324667] = 'hw1_06_ldr_05', + [276307230] = 'hw1_06_ldr_06', + [-435369912] = 'hw1_06_ldr_07', + [-127701771] = 'hw1_06_ldr_08', + [2040065886] = 'hw1_06_ldr_09', + [1503866407] = 'hw1_06_ldr_10', + [1278565879] = 'hw1_06_nbr', + [946657917] = 'hw1_06_nbrs', + [-398272479] = 'hw1_06_nu_build004', + [292737839] = 'hw1_06_nu_build02', + [-1107135077] = 'hw1_06_pharmcy_01', + [-1817687760] = 'hw1_06_pharmdet_01', + [-1872534500] = 'hw1_06_pipes_drains', + [-399959729] = 'hw1_06_railings', + [1668396678] = 'hw1_06_railings2', + [-2013429859] = 'hw1_06_railings4', + [-1776477224] = 'hw1_06_railings5', + [-1050906030] = 'hw1_06_railings6', + [-2029222020] = 'hw1_06_road', + [1121637823] = 'hw1_06_shdw01', + [-1141386914] = 'hw1_06_shdw01c', + [-1673641165] = 'hw1_07_03_tmp_ovly', + [-773442881] = 'hw1_07_03_tmp', + [313893975] = 'hw1_07_a_plots7-9_nodshad', + [1228790535] = 'hw1_07_apt_5drail_lod', + [-1070163359] = 'hw1_07_b1', + [-408437505] = 'hw1_07_build_sa', + [45984266] = 'hw1_07_cablemesh369339_hvstd', + [-889487127] = 'hw1_07_cablemesh369354_hvstd', + [-1369722876] = 'hw1_07_cablemesh369369_hvstd', + [-2012474417] = 'hw1_07_detail_b1', + [1369903232] = 'hw1_07_detail', + [-1892184924] = 'hw1_07_detail3', + [700726340] = 'hw1_07_details_02', + [-332017629] = 'hw1_07_elpitbase_al', + [1545468184] = 'hw1_07_elpitbase_d', + [-1851273617] = 'hw1_07_elpitbase', + [-265692065] = 'hw1_07_fence02a', + [-1861921310] = 'hw1_07_grnd_b', + [218320376] = 'hw1_07_grnd_c', + [1255186874] = 'hw1_07_hedge_d', + [2146818243] = 'hw1_07_hedge_d2', + [1918123392] = 'hw1_07_hedge_d3', + [465408076] = 'hw1_07_hedge_d4', + [-1913523013] = 'hw1_07_hedge_d5', + [1435630835] = 'hw1_07_ladder_002', + [679174808] = 'hw1_07_ldrr001', + [518606708] = 'hw1_07_ldrr002', + [-1659515953] = 'hw1_07_ldrr003', + [-1889357719] = 'hw1_07_ldrr004', + [-2051564269] = 'hw1_07_ldrr005', + [996091122] = 'hw1_07_logo', + [-299255729] = 'hw1_07_parkingem', + [989207063] = 'hw1_07_props_combo01_slod', + [-2023215275] = 'hw1_07_props_combo02_dslod', + [1279723898] = 'hw1_07_railings', + [1039954763] = 'hw1_07_railings10', + [672163373] = 'hw1_07_railings2_lod', + [-868163536] = 'hw1_07_railings4', + [1576240023] = 'hw1_07_railings5', + [1942335291] = 'hw1_07_railings6', + [-2120463640] = 'hw1_07_railings7', + [-1762953850] = 'hw1_07_railings8', + [615518465] = 'hw1_07_railings9', + [1942564779] = 'hw1_07_rails', + [-313844421] = 'hw1_07_roof_dirt', + [1069623653] = 'hw1_07_roof_dirt2', + [695889205] = 'hw1_07_sdw_01', + [-206044751] = 'hw1_07_sdw_02', + [-1290918362] = 'hw1_07_sgn_det', + [-2022955107] = 'hw1_07_sgn_det01', + [330312763] = 'hw1_07_shw_pr', + [-1371120068] = 'hw1_07_tmp_ladder', + [1878021811] = 'hw1_07_twl_det', + [-1636425964] = 'hw1_07_twl_det01', + [-560809621] = 'hw1_07_vw_muzak_001', + [-135829466] = 'hw1_07_warehseshelf03', + [1703606389] = 'hw1_07_wtrbuild01', + [-865830828] = 'hw1_07_wtrbuild01d', + [-434947323] = 'hw1_07_wtrbuild02d', + [-2003042440] = 'hw1_07_wtrbuild05d', + [-758922140] = 'hw1_08_build03x', + [-519796568] = 'hw1_08_build1_4_det', + [710360556] = 'hw1_08_carparkdetail', + [1970877928] = 'hw1_08_decalb', + [-658015101] = 'hw1_08_decald', + [-131077603] = 'hw1_08_decals1', + [-1963683928] = 'hw1_08_decals2', + [-1031393586] = 'hw1_08_emissive_a_slod', + [-2083120310] = 'hw1_08_grnd2', + [1029279318] = 'hw1_08_grnd3', + [-1594709952] = 'hw1_08_ground_01', + [1304399686] = 'hw1_08_hotplaz_ldr', + [723023507] = 'hw1_08_hotplaz_rail', + [-1836318341] = 'hw1_08_hotplaz01', + [-1462686203] = 'hw1_08_hotplaz02', + [899826789] = 'hw1_08_hurrdetails', + [326394542] = 'hw1_08_hurricanex', + [-2072287043] = 'hw1_08_hw1_8_newtop001', + [-702487957] = 'hw1_08_ldr', + [1443519929] = 'hw1_08_ldr001', + [1135524098] = 'hw1_08_ldr002', + [963617976] = 'hw1_08_ldr003', + [-1667060909] = 'hw1_08_lightcase', + [-782735761] = 'hw1_08_newcarpark', + [-1988933741] = 'hw1_08_newdecals', + [-965682050] = 'hw1_08_rail', + [-409844162] = 'hw1_08_railings', + [1870569448] = 'hw1_08_railings2', + [-1731595650] = 'hw1_08_railings3', + [28731469] = 'hw1_08_shadowproxy01', + [1972363783] = 'hw1_08_vwhot_det1', + [1650221088] = 'hw1_08_vwhot01', + [1778162525] = 'hw1_09_billboards', + [-430121925] = 'hw1_09_captower_dtl', + [145371199] = 'hw1_09_captower', + [1394986836] = 'hw1_09_cp_railings', + [-1400883693] = 'hw1_09_fake_int_em', + [-1222254644] = 'hw1_09_fake_int', + [-1243261926] = 'hw1_09_glue_01', + [-1001656089] = 'hw1_09_glue_02', + [-510280497] = 'hw1_09_glue_2', + [-904413333] = 'hw1_09_ground', + [413284062] = 'hw1_09_ground2', + [149399910] = 'hw1_09_mscp', + [-326741201] = 'hw1_09_pd_sign', + [369205997] = 'hw1_09_policestation', + [-1793416473] = 'hw1_09_props_combo01_slod', + [-1716590621] = 'hw1_09_props_combo03_slod', + [-1640093595] = 'hw1_09_rail_post', + [-1736123092] = 'hw1_09_rail_post2', + [57120750] = 'hw1_09_railings', + [1784356027] = 'hw1_10_br_rail', + [1199652644] = 'hw1_10_bridge01_sd', + [-1039202168] = 'hw1_10_bridge01', + [160230259] = 'hw1_10_bridge02_sd', + [1781979357] = 'hw1_10_bridge02', + [-1515041200] = 'hw1_10_cnt_sign', + [-364531001] = 'hw1_10_land_00', + [-1825897329] = 'hw1_10_land_02', + [-1064083617] = 'hw1_10_land_03', + [-825426990] = 'hw1_10_land_04', + [1545574009] = 'hw1_10_land_06', + [1769353510] = 'hw1_10_land_07', + [2008239520] = 'hw1_10_land_08', + [-445543429] = 'hw1_10_land02_a', + [-824193557] = 'hw1_10_land03_a', + [1635090709] = 'hw1_10_land06_a', + [766833563] = 'hw1_10_land08_a', + [487854109] = 'hw1_11_build01_a', + [1064599835] = 'hw1_11_build01', + [-1411239158] = 'hw1_11_build02_a', + [1908762044] = 'hw1_11_build02', + [-980848503] = 'hw1_11_build02b_a', + [-978252068] = 'hw1_11_cablemesh28210_hvstd', + [-161438509] = 'hw1_11_grnd_blnd', + [210683425] = 'hw1_11_ground_a', + [-443992967] = 'hw1_11_ground_a2', + [1332427729] = 'hw1_11_ground_noshadow', + [-1786582789] = 'hw1_11_hedge_a', + [670953188] = 'hw1_11_hedge_a2', + [1074145773] = 'hw1_11_ldr_01', + [-573404173] = 'hw1_11_railings', + [13448741] = 'hw1_11_railings2', + [-279604426] = 'hw1_11_railings3', + [684164637] = 'hw1_11_railings4', + [586026448] = 'hw1_12_build01_a', + [354515856] = 'hw1_12_build01', + [-703884125] = 'hw1_12_build02_a', + [-1168008134] = 'hw1_12_build02_a2', + [-971230321] = 'hw1_12_build02_ab', + [-501410428] = 'hw1_12_build02', + [-426928973] = 'hw1_12_cablemesh1463_thvy', + [-1506245775] = 'hw1_12_chainlink', + [-541074993] = 'hw1_12_ground', + [1558939191] = 'hw1_12_hdg_top', + [-630567675] = 'hw1_12_hdg', + [-2128659209] = 'hw1_12_railings', + [583048327] = 'hw1_12_railings2', + [813840394] = 'hw1_12_railings3', + [2104026129] = 'hw1_13_biker_aux', + [136264275] = 'hw1_13_biker_gardoor', + [-1293675098] = 'hw1_13_biker_newbits', + [177085699] = 'hw1_13_biker_rails', + [2134388008] = 'hw1_13_bikergnd_a', + [36342934] = 'hw1_13_bikergnd', + [-1342604687] = 'hw1_13_bikergnd2_a', + [327225700] = 'hw1_13_bk_wires', + [1356530899] = 'hw1_13_bkrgnd_noshadow', + [747685776] = 'hw1_13_garage_door_01', + [-496822713] = 'hw1_13_ground_a1', + [-2003736070] = 'hw1_13_ground', + [-694926978] = 'hw1_13_ldrrr', + [922403028] = 'hw1_13_motel_decal', + [706065119] = 'hw1_13_motel', + [-2030346120] = 'hw1_13_props_combo_slod', + [-800344852] = 'hw1_13_props_dump01alod', + [-2096314408] = 'hw1_13_props_dump01alod1', + [-1395254422] = 'hw1_13_props_dump01alod2', + [-1550536461] = 'hw1_13_props_pallet01lod5', + [-1121865470] = 'hw1_13_railings', + [-1545333354] = 'hw1_13_railings2', + [-718637022] = 'hw1_13_railings3', + [-1659158224] = 'hw1_13_ratt_static', + [-2053869137] = 'hw1_13_res2_decals', + [716555051] = 'hw1_13_res2', + [794887696] = 'hw1_13_starlight_sign', + [1413145791] = 'hw1_13_wires', + [219326616] = 'hw1_14_bld01_utl', + [-1659875318] = 'hw1_14_bld01_utlb', + [1902050790] = 'hw1_14_bld02_dcl', + [-313241547] = 'hw1_14_bld02', + [-332611915] = 'hw1_14_bld02b_dcl', + [-631756227] = 'hw1_14_bld03', + [-787277901] = 'hw1_14_bld04', + [904094038] = 'hw1_14_bld05', + [1459685470] = 'hw1_14_bld06_utl', + [1032850982] = 'hw1_14_bld06_utlb', + [1737949586] = 'hw1_14_bld06_utlbb', + [-1637781722] = 'hw1_14_bld06_utlbc', + [1901353015] = 'hw1_14_bld07', + [-1357141677] = 'hw1_14_d', + [1831854458] = 'hw1_14_db_apart_05__rsref00', + [336054536] = 'hw1_14_db', + [-1392644903] = 'hw1_14_fence', + [-1568817157] = 'hw1_14_glass', + [-178496097] = 'hw1_14_glue01', + [-253523090] = 'hw1_14_gnd_1b', + [1833729674] = 'hw1_14_gnd_2b', + [-607938432] = 'hw1_14_gnd_2eb', + [-1808807168] = 'hw1_14_gnd_c', + [1744531028] = 'hw1_14_hdg_top', + [1356886467] = 'hw1_14_hdg_top2', + [-408002820] = 'hw1_14_hdg', + [1930242138] = 'hw1_14_hdg2', + [1219752935] = 'hw1_14_hdg2c', + [705915654] = 'hw1_14_hdgb_top003', + [1924951663] = 'hw1_14_hdgb_top2', + [-1702099064] = 'hw1_14_hdgc_top2', + [-1642618956] = 'hw1_14_hdgd_top', + [-1329880142] = 'hw1_14_hdgd', + [665976950] = 'hw1_14_hdge_top', + [1862480776] = 'hw1_14_hdge_top001', + [1249676467] = 'hw1_14_ladder_001', + [-1263509223] = 'hw1_14_ladder_002', + [140779207] = 'hw1_14_ldr', + [1554081049] = 'hw1_14_ldr001', + [1255588228] = 'hw1_14_ldr002', + [1556899179] = 'hw1_14_ldr003', + [1146321396] = 'hw1_14_railing', + [749181752] = 'hw1_14_railings2', + [987674534] = 'hw1_14_railings3', + [1227707459] = 'hw1_14_railings4', + [1468788992] = 'hw1_14_railings5', + [1552031093] = 'hw1_14_rtr', + [-393685242] = 'hw1_14_rtrb', + [-902948776] = 'hw1_14_shd_pxy', + [-144671806] = 'hw1_14_shdw', + [-290116045] = 'hw1_14_shdw2', + [1010868558] = 'hw1_14_twl', + [1688194909] = 'hw1_14_twl2', + [1868162257] = 'hw1_14_twl3', + [-760272022] = 'hw1_14_twlb', + [667531210] = 'hw1_14_vent', + [-534778517] = 'hw1_15_apart_st1_2', + [268618773] = 'hw1_15_apart_st2', + [-414886721] = 'hw1_15_apt_st1', + [-1951216762] = 'hw1_15_build1_details', + [582558264] = 'hw1_15_build1_detailsb', + [-672900969] = 'hw1_15_build1', + [-955828515] = 'hw1_15_build2', + [-2127019256] = 'hw1_15_dec_00', + [1996566170] = 'hw1_15_dec_01', + [1690274327] = 'hw1_15_dec_02', + [1293376151] = 'hw1_15_dec_03', + [-229661439] = 'hw1_15_dec_04', + [1298669622] = 'hw1_15_dec_05_ivyb', + [-592086579] = 'hw1_15_dec_05', + [-811147344] = 'hw1_15_dec_06', + [-1192644042] = 'hw1_15_dec_07', + [-558837092] = 'hw1_15_fnc', + [651108333] = 'hw1_15_ground1', + [552612940] = 'hw1_15_hdg_00_top', + [119494936] = 'hw1_15_hdg_00', + [721157395] = 'hw1_15_hdg_01_top', + [-1253722798] = 'hw1_15_hdg_01', + [1603975167] = 'hw1_15_hdg_02_top', + [-1558441729] = 'hw1_15_hdg_02', + [-1196087386] = 'hw1_15_hdg_03_top', + [-1058780017] = 'hw1_15_hdg_03', + [1677913519] = 'hw1_15_hdg_04_top', + [1920544698] = 'hw1_15_hdg_04', + [2023175627] = 'hw1_15_hdg_b_00_top', + [2034933165] = 'hw1_15_hdg_b_00', + [-1416379258] = 'hw1_15_hdg_b_01_top', + [-1308651754] = 'hw1_15_hdg_b_01', + [-669656988] = 'hw1_15_hdg_b_02_top', + [-725101402] = 'hw1_15_hdg_b_02', + [1060941408] = 'hw1_15_hdg_b_03_top', + [1290159341] = 'hw1_15_hdg_b_03', + [-1516304052] = 'hw1_15_hdg_b_04_top', + [1521148022] = 'hw1_15_hdg_b_04', + [-1808566825] = 'hw1_15_ladder_', + [521524290] = 'hw1_15_lldd', + [862768299] = 'hw1_15_lll', + [97776128] = 'hw1_15_props_cbl_thvy', + [1722748059] = 'hw1_15_props_cbl_thvy01', + [1953212436] = 'hw1_15_props_cbl_thvy02', + [-2094938752] = 'hw1_15_props_cbl_thvy03', + [18366831] = 'hw1_15_props_cbl_thvy04', + [493451793] = 'hw1_15_props_cbl_thvy05', + [181504950] = 'hw1_15_railing2_lod', + [-1936985284] = 'hw1_15_railing3_lod', + [462382584] = 'hw1_15_railing4', + [1255300595] = 'hw1_15_railings5', + [1391890095] = 'hw1_15_shdw', + [74868871] = 'hw1_15_twl00', + [1016027320] = 'hw1_15_twl01', + [786447706] = 'hw1_15_twl02', + [1632346672] = 'hw1_15_twl03', + [-1132378361] = 'hw1_16_bboard', + [387516613] = 'hw1_16_build02', + [-529311731] = 'hw1_16_build02b_dcl', + [1396517341] = 'hw1_16_build02b_dcl2', + [1134529186] = 'hw1_16_build02b_dcl3', + [1765503940] = 'hw1_16_build1', + [-1736366459] = 'hw1_16_build2_g', + [-1828829367] = 'hw1_16_build2', + [-1117503232] = 'hw1_16_build2aldet_b', + [-1346919001] = 'hw1_16_build2aldet_c', + [-806773311] = 'hw1_16_build2aldet', + [1254221951] = 'hw1_16_build2ov', + [2109486183] = 'hw1_16_build2ov2', + [-1039938041] = 'hw1_16_gnd', + [1164797860] = 'hw1_16_h1_16_brand_emissive', + [-2128520986] = 'hw1_16_ldr', + [122504853] = 'hw1_16_ldr001', + [-681926893] = 'hw1_16_props_cable_thvy', + [-565680250] = 'hw1_16_props_cable_thvy01', + [-1332868078] = 'hw1_16_props_cable_thvy02', + [-1981104416] = 'hw1_16_props_cable_thvy03', + [-849361483] = 'hw1_16_props_cable_thvy04', + [-1654168103] = 'hw1_16_props_cable_thvy05', + [1796768060] = 'hw1_16_props_cable_thvy06', + [1088761046] = 'hw1_16_props_cable_thvy07', + [-2139248110] = 'hw1_16_rails_00', + [1882786185] = 'hw1_16_rails_01', + [892179315] = 'hw1_16_rails_02', + [-1830924589] = 'hw1_16_rails_03', + [1502108712] = 'hw1_16_rails_04', + [1225112355] = 'hw1_16_rails_05', + [524989316] = 'hw1_16_rails_x', + [-507646136] = 'hw1_16_railsb_00', + [-806663261] = 'hw1_16_railsb_01', + [2100078119] = 'hw1_16_railsb_02', + [1801257608] = 'hw1_16_railsb_03', + [-1697128067] = 'hw1_16_railsb_04', + [1204992872] = 'hw1_16_railsb_05', + [-1527533332] = 'hw1_16_railsc_00', + [-80126594] = 'hw1_16_railsc_01', + [158071267] = 'hw1_16_railsc_02', + [221381079] = 'hw1_16_railsc_03', + [-168114023] = 'hw1_16_shw2', + [-1449171789] = 'hw1_16_ss_det', + [-1311577483] = 'hw1_16_water_', + [-1840484082] = 'hw1_17_a_plots7-9_nodshad001', + [1255825959] = 'hw1_17_a_plots7-9_nodshad002', + [-2037725675] = 'hw1_17_aircon_climb', + [1668066343] = 'hw1_17_aircon_climb001', + [438411327] = 'hw1_17_build1_n', + [1430940564] = 'hw1_17_build1_n2', + [-612627298] = 'hw1_17_decals', + [1314978361] = 'hw1_17_decals01', + [1562056621] = 'hw1_17_decals02', + [1806546130] = 'hw1_17_decals03', + [-473684807] = 'hw1_17_decals04', + [-720599222] = 'hw1_17_decals05', + [-940675826] = 'hw1_17_decals06', + [-1237857887] = 'hw1_17_decals07', + [117708805] = 'hw1_17_det', + [-679193819] = 'hw1_17_det01', + [-1580898392] = 'hw1_17_det02', + [1912014860] = 'hw1_17_det03', + [-867943259] = 'hw1_17_det04', + [-1672281727] = 'hw1_17_detail2_b', + [192265852] = 'hw1_17_detail3_b_', + [1036495635] = 'hw1_17_detail3_b_02', + [1773765306] = 'hw1_17_detail3_b_07', + [2085038037] = 'hw1_17_detail3_b_08', + [-1337974414] = 'hw1_17_detail3_b', + [-1057599564] = 'hw1_17_fences', + [-2124979123] = 'hw1_17_ground1', + [2140678334] = 'hw1_17_ladr', + [-318344114] = 'hw1_17_ladr005', + [-1210381832] = 'hw1_17_ladr006', + [-912741005] = 'hw1_17_ladr007', + [341525239] = 'hw1_17_ladr008', + [639362680] = 'hw1_17_ladr009', + [-862011307] = 'hw1_17_ladr01', + [1052547689] = 'hw1_17_ladr010', + [-1094507362] = 'hw1_17_ladr02', + [1407209258] = 'hw1_17_ladr03', + [1101114029] = 'hw1_17_ladr04', + [-1488944255] = 'hw1_17_nwnet', + [803300022] = 'hw1_17_nwnet2', + [815529765] = 'hw1_17_props_aircon_climb002', + [-11985792] = 'hw1_17_props_aircon_climb003', + [1188395716] = 'hw1_17_rails00', + [877680058] = 'hw1_17_rails01', + [459383773] = 'hw1_17_rails02', + [413769325] = 'hw1_17_rails03', + [502147314] = 'hw1_17_rails04', + [196281468] = 'hw1_17_rails05', + [-720496841] = 'hw1_17_rails06', + [-273920909] = 'hw1_17_rails07', + [-1198629320] = 'hw1_17_rails08', + [-422954321] = 'hw1_17_rails09', + [1992938764] = 'hw1_17_rails10', + [1402978844] = 'hw1_17_sdw_px', + [585995226] = 'hw1_18_build01', + [-2063233765] = 'hw1_18_cablemesh27816_thvy', + [1561473301] = 'hw1_18_cablemesh27817_thvy', + [1862924054] = 'hw1_18_cablemesh27818_thvy', + [-613148533] = 'hw1_18_cablemesh27819_thvy', + [679577921] = 'hw1_18_cablemesh27820_thvy', + [-2036860565] = 'hw1_18_cablemesh27821_thvy', + [1719346147] = 'hw1_18_cablemesh27822_thvy', + [1910999475] = 'hw1_18_cablemesh27823_thvy', + [-1388300832] = 'hw1_18_cablemesh27824_thvy', + [300374699] = 'hw1_18_cablemesh27825_thvy', + [988611603] = 'hw1_18_cablemesh27826_thvy', + [639021151] = 'hw1_18_dash_em', + [1768261197] = 'hw1_18_dashound_sign', + [-724531239] = 'hw1_18_ground01', + [192306163] = 'hw1_18_land_01', + [-161271351] = 'hw1_18_land_02', + [1253956221] = 'hw1_18_land_03', + [830605302] = 'hw1_18_ovlya', + [-146467971] = 'hw1_18_ovlyb', + [272638749] = 'hw1_18_props_combo_01_lod', + [-1079590505] = 'hw1_18_rails', + [-41650172] = 'hw1_18_rd_sup_01', + [355993842] = 'hw1_19_19_rails', + [-2111758304] = 'hw1_19_19_rails01', + [-1311604862] = 'hw1_19_19_rails02', + [690056734] = 'hw1_19_19_rails04', + [245709094] = 'hw1_19_19_rails06', + [-944763167] = 'hw1_19_bathroom_002', + [-931618751] = 'hw1_19_bathroom_01', + [-1634933074] = 'hw1_19_fount_pool', + [1443681589] = 'hw1_19_hw1_props_00', + [1724872378] = 'hw1_19_hw1_props_01', + [-124609986] = 'hw1_19_hw1_props_02', + [189939645] = 'hw1_19_hw1_props_03', + [2108564599] = 'hw1_19_hw1_props_04', + [-1863103743] = 'hw1_19_hw1_props_05', + [-246223218] = 'hw1_19_ovlya', + [-1014820113] = 'hw1_19_ovlyb', + [-717441438] = 'hw1_19_ovlyc', + [663509764] = 'hw1_19_ovlyd', + [-2147238106] = 'hw1_19_parka', + [-1446636886] = 'hw1_19_parkb', + [-1673955439] = 'hw1_19_parkc', + [1160235375] = 'hw1_19_parkd', + [2130240571] = 'hw1_19_pg_rails', + [1389328087] = 'hw1_19_props_a', + [-808277333] = 'hw1_19_props_a01', + [161390146] = 'hw1_19_props_a02', + [744481732] = 'hw1_19_props_a03', + [390645435] = 'hw1_19_props_combo04_slod', + [-1521496284] = 'hw1_19_props_combo06_slod', + [416396923] = 'hw1_19_propsb', + [-1365421293] = 'hw1_19_rails_01', + [884905535] = 'hw1_22_albits1_a', + [-912420627] = 'hw1_22_albits1', + [-367178887] = 'hw1_22_albits2_a', + [-696210765] = 'hw1_22_albits2', + [1786620370] = 'hw1_22_albits3_a', + [-1899236754] = 'hw1_22_albits3_b', + [1973966550] = 'hw1_22_bb_01', + [1919441208] = 'hw1_22_brwstrk', + [-956504431] = 'hw1_22_build_as_d', + [-581934661] = 'hw1_22_build1_ovly', + [-1943774460] = 'hw1_22_build1_ovly2', + [-285644541] = 'hw1_22_build1_ovly2b', + [-844866065] = 'hw1_22_build1_ovlyb', + [-817420181] = 'hw1_22_build1', + [-555661409] = 'hw1_22_build2', + [1553515280] = 'hw1_22_build3', + [173612690] = 'hw1_22_build4', + [856943830] = 'hw1_22_fnctomesh', + [1884612623] = 'hw1_22_fnctomeshb', + [-651167063] = 'hw1_22_glass003', + [1553211745] = 'hw1_22_grille', + [-1330717078] = 'hw1_22_ground_noshadow_fix', + [-1798028502] = 'hw1_22_ground01_fix', + [-1443408053] = 'hw1_22_ladder', + [-573006256] = 'hw1_22_ldr_22_001', + [-341820961] = 'hw1_22_ldr_22_002', + [-1968474129] = 'hw1_22_ldr_22_003', + [1483314028] = 'hw1_22_ldr_22_004', + [-568971557] = 'hw1_22_malltest', + [1849203342] = 'hw1_22_nightobj', + [866095786] = 'hw1_22_nobj_lod', + [67022107] = 'hw1_22_nobj', + [-1466448686] = 'hw1_22_nobj01_lod', + [1302817738] = 'hw1_22_nobj01', + [1615734294] = 'hw1_22_nobj02_lod', + [1063636807] = 'hw1_22_nobj02', + [-261776608] = 'hw1_22_nobj03_lod', + [-1139029827] = 'hw1_22_nobj03', + [-36233831] = 'hw1_22_probe', + [1843241341] = 'hw1_22_rails2', + [-1235289632] = 'hw1_22_shd_pxy', + [-1983661553] = 'hw1_22_shipint', + [-804923591] = 'hw1_22_stairs', + [1316169093] = 'hw1_22_table', + [-1403534153] = 'hw1_23_build1', + [-682538333] = 'hw1_23_build2_door', + [1441503204] = 'hw1_23_build2', + [1742519238] = 'hw1_23_build3', + [-1319750112] = 'hw1_23_cablemesh8660_thvy', + [2087359751] = 'hw1_23_dec00_b', + [1465221388] = 'hw1_23_dec00', + [-675982458] = 'hw1_23_dec01_b', + [1767843103] = 'hw1_23_dec01', + [1412299453] = 'hw1_23_dec02', + [635182618] = 'hw1_23_dec03', + [-1564534814] = 'hw1_23_dec04', + [-1408030070] = 'hw1_23_dec05', + [-1520323500] = 'hw1_23_decal_3_b', + [1985587381] = 'hw1_23_decal_3', + [-2006662511] = 'hw1_23_detaillost_b', + [748985055] = 'hw1_23_detaillost_bb', + [-1138769237] = 'hw1_23_detaillost', + [1299105380] = 'hw1_23_detaillostb', + [207589645] = 'hw1_23_emissive2a', + [1586794755] = 'hw1_23_ground3a', + [392421148] = 'hw1_23_lad004', + [619543087] = 'hw1_23_lad005', + [1608027841] = 'hw1_23_lad02', + [-1976179845] = 'hw1_23_lad03', + [-2053630052] = 'hw1_23_met', + [-314834734] = 'hw1_23_met01', + [-1136812330] = 'hw1_23_met02', + [897522672] = 'hw1_23_motelneon', + [-1747459794] = 'hw1_23_neon', + [-29538769] = 'hw1_23_park_sign', + [-1145697693] = 'hw1_23_r', + [-1522526848] = 'hw1_23_railing3_lod', + [-304291422] = 'hw1_23_railing4_lod', + [-385861177] = 'hw1_23_railings_lod', + [2084438922] = 'hw1_23_railings2_lod', + [418203362] = 'hw1_23_rails_00', + [-744965066] = 'hw1_23_rails_01', + [-984408149] = 'hw1_23_rails_02', + [1074730277] = 'hw1_23_rails_03', + [1841623184] = 'hw1_23_rails_04', + [-1755488364] = 'hw1_23_waterpools', + [-1892661573] = 'hw1_23_weed_02', + [-1474849053] = 'hw1_23_weed_02b', + [2120787244] = 'hw1_23_weed_03', + [-402884546] = 'hw1_23_weed_04', + [-737338185] = 'hw1_24_billboard_custom', + [1737199988] = 'hw1_24_bld_02_glss', + [819562390] = 'hw1_24_bld_02_signs', + [-1016795681] = 'hw1_24_brk_wl', + [-677960353] = 'hw1_24_brk_wl01', + [1498425559] = 'hw1_24_brk_wl02', + [1259900008] = 'hw1_24_brk_wl03', + [-227751699] = 'hw1_24_build2', + [-1273421122] = 'hw1_24_details', + [425262297] = 'hw1_24_fleeca_sign', + [736433633] = 'hw1_24_ground1', + [-957303968] = 'hw1_24_ladder', + [1865314756] = 'hw1_24_ladder004', + [-2090965564] = 'hw1_24_ladder01', + [-759334046] = 'hw1_24_ladder02_lod', + [-1860370111] = 'hw1_24_ladder02', + [-689795897] = 'hw1_24_ladder03', + [-1610057837] = 'hw1_24_ldr', + [-1628210489] = 'hw1_24_ov00', + [-1866736040] = 'hw1_24_ov01', + [-1290853618] = 'hw1_24_ov02', + [-1581088651] = 'hw1_24_ov03', + [2085812223] = 'hw1_24_rls', + [-1966569130] = 'hw1_24_rrs', + [876150294] = 'hw1_24_wd_rls', + [1244980819] = 'hw1_24_wd_rls01', + [-1826588631] = 'hw1_24_wd_rls02', + [-2048598606] = 'hw1_24_wd_rls03', + [-2048374413] = 'hw1_24_weed_01', + [-487980159] = 'hw1_24_weed_02', + [763833578] = 'hw1_24_wind_det', + [1335571070] = 'hw1_24_wind_det01', + [1179525092] = 'hw1_24_wind_det02', + [-85128929] = 'hw1_24_wind_det03', + [-79675471] = 'hw1_25_build_01', + [292604525] = 'hw1_25_dec_00', + [1500699248] = 'hw1_25_dec_01', + [-266139694] = 'hw1_25_dec_02', + [903877451] = 'hw1_25_dec_03', + [1218853079] = 'hw1_25_dec_04', + [375815720] = 'hw1_25_ground', + [845842719] = 'hw1_25_rails_01_lod', + [1912749078] = 'hw1_25_rails_01', + [1633393353] = 'hw1_25_rails_02', + [-1987586948] = 'hw1_25_railsb', + [-488461782] = 'hw1_25_railsc_', + [-1962850072] = 'hw1_26_blc_rails', + [-1271804317] = 'hw1_26_build01', + [800059023] = 'hw1_26_decal_o1_1', + [-53019479] = 'hw1_26_decal_o1_1b', + [127537711] = 'hw1_26_decal_o1_1c', + [-560971290] = 'hw1_26_decal_park', + [-1196720454] = 'hw1_26_details', + [388533861] = 'hw1_26_fake_int_cp', + [-149363812] = 'hw1_26_ground01', + [1088943474] = 'hw1_26_h_rails', + [-1824283913] = 'hw1_26_park', + [443046294] = 'hw1_26_pool', + [-715242921] = 'hw1_26_rails', + [265161430] = 'hw1_26_rails01', + [-2050689390] = 'hw1_26_rails02', + [-584641267] = 'hw1_26_redrails', + [-1754064008] = 'hw1_26_shd_pxy', + [1499029664] = 'hw1_26_shd_pxy001', + [1872989492] = 'hw1_26_shd_pxy002', + [2117937767] = 'hw1_26_shd_pxy003', + [991374239] = 'hw1_26_strs', + [-203705482] = 'hw1_26_strs01', + [-435873847] = 'hw1_26_strs02', + [909788018] = 'hw1_26_water', + [-1448244611] = 'hw1_27_det_a_', + [-1587171634] = 'hw1_27_det_a_01', + [1957320024] = 'hw1_27_det_a_02', + [-1107597319] = 'hw1_27_det_a_03', + [-1891300723] = 'hw1_27_det_a_04', + [-521425507] = 'hw1_27_det_a_05', + [841699355] = 'hw1_27_det_a_06', + [-187880940] = 'hw1_27_frame', + [-2092150479] = 'hw1_27_frame2', + [-1984498666] = 'hw1_27_grill_00', + [-1698589133] = 'hw1_27_grill_01', + [-279147170] = 'hw1_27_ground_noshadow', + [-1170335320] = 'hw1_27_ground', + [-1178143741] = 'hw1_27_metbr_', + [-194870580] = 'hw1_27_metbr_01', + [1657560990] = 'hw1_27_metbr_02', + [-1057973267] = 'hw1_27_metbr_03', + [-853887935] = 'hw1_27_metbr_04', + [457953442] = 'hw1_27_metbr_05', + [696315148] = 'hw1_27_metbr_06', + [-1481021065] = 'hw1_27_metbr_07', + [2013694482] = 'hw1_27_metbr_08', + [-2060901289] = 'hw1_27_metbr_09', + [-1337463168] = 'hw1_27_metbr_10', + [-1050024368] = 'hw1_27_ndec', + [1001720630] = 'hw1_27_ndec2', + [-105347266] = 'hw1_27_ndecb', + [-576700555] = 'hw1_27_nw_ld', + [-861224036] = 'hw1_27_nw_ld001', + [-562665677] = 'hw1_27_nw_ld002', + [1879542359] = 'hw1_27_nw_ld003', + [2145004028] = 'hw1_27_nw_ld004', + [1999607971] = 'hw1_27_nw_ld005', + [-1996211124] = 'hw1_27_nw_ld006', + [1019388870] = 'hw1_27_nw_ld007', + [-1469580525] = 'hw1_27_nw_ld008', + [1618209576] = 'hw1_27_nw_ld009', + [-1743496832] = 'hw1_27_nw_ld010', + [-1623562292] = 'hw1_27_nw_ld011', + [-733109644] = 'hw1_27_r_d00', + [-964688167] = 'hw1_27_r_d01', + [-177420298] = 'hw1_27_r1_b', + [1204218595] = 'hw1_27_r1_b01', + [-310561199] = 'hw1_27_r1_b02', + [-1970737054] = 'hw1_27_r1_b03', + [-2125537810] = 'hw1_27_r1_b04', + [637151046] = 'hw1_27_r1_b05', + [341083131] = 'hw1_27_r1_b06', + [-1718841743] = 'hw1_27_r1_b07', + [2070676882] = 'hw1_27_rails_hd00', + [1981283046] = 'hw1_27_rails_hd01', + [1145018162] = 'hw1_27_rails_hd02', + [522538238] = 'hw1_27_rails_hd03', + [145956890] = 'hw1_27_rails_hd04', + [-73890331] = 'hw1_27_rails_hd05', + [-180258509] = 'hw1_27_rails_hd06', + [-1035922679] = 'hw1_27_rails_nw00', + [-1657124612] = 'hw1_27_rails_nw01', + [-412066457] = 'hw1_27_rails_nw02', + [-777702959] = 'hw1_27_rails_nw03', + [89233709] = 'hw1_27_rails_nw04', + [-169608626] = 'hw1_27_rails_nw05', + [533974577] = 'hw1_27_rails_nw06', + [178168775] = 'hw1_27_rails_nw07', + [1051266011] = 'hw1_27_rails_nw08', + [811298624] = 'hw1_27_rails_nw09', + [-1874907110] = 'hw1_27_rails_nw10', + [282767699] = 'hw1_27_rails_nw11', + [44504300] = 'hw1_27_rails_nw12', + [-313529798] = 'hw1_27_rails_nw13', + [-544256327] = 'hw1_27_rails_nw14', + [1606536992] = 'hw1_27_rails_nw15', + [1241818022] = 'hw1_27_rails_nw16', + [876836900] = 'hw1_27_rails_nw17', + [646503599] = 'hw1_27_rails_nw18', + [-1500816202] = 'hw1_27_rails_nw19', + [-159711820] = 'hw1_27_rails_nw20', + [23860114] = 'hw1_27_rails_nw21', + [296924191] = 'hw1_27_rails_nw22', + [-587995449] = 'hw1_27_rc00', + [-808137591] = 'hw1_27_rc01', + [19312428] = 'hw1_27_rc02', + [71742816] = 'hw1_27_rc03', + [-166422276] = 'hw1_27_rc04', + [1079735446] = 'hw1_27_rw_00', + [-157064925] = 'hw1_27_rw_01', + [618184081] = 'hw1_27_rw_02', + [1274973148] = 'hw1_27_rw_03', + [-1671366547] = 'hw1_27_sdw_px', + [-990121708] = 'hw1_27_temp_ldg', + [3786877] = 'hw1_27_temp_ldg01', + [-1682658453] = 'hw1_27_tracks', + [855945307] = 'hw1_27_wood_gr', + [-575879429] = 'hw1_28_bes_lights', + [-1901484165] = 'hw1_28_dec_', + [323096908] = 'hw1_28_dec_01', + [822103240] = 'hw1_28_dec_02', + [-556521363] = 'hw1_28_dec_03', + [-795964446] = 'hw1_28_dec_04', + [-64429290] = 'hw1_28_dec_05', + [-1922600182] = 'hw1_28_decal2', + [2051493066] = 'hw1_28_decal3', + [1023461500] = 'hw1_28_fences', + [-1669117240] = 'hw1_28_fences03', + [-1907511715] = 'hw1_28_fences04', + [761325925] = 'hw1_28_fences13', + [-1979341197] = 'hw1_28_fld_lts00', + [-1685010039] = 'hw1_28_fld_lts01', + [-2104519053] = 'hw1_28_fld_lts010', + [1148721725] = 'hw1_28_fld_lts011', + [-1377407436] = 'hw1_28_fld_lts02', + [-1086549792] = 'hw1_28_fld_lts03', + [-779405955] = 'hw1_28_fld_lts04', + [177153920] = 'hw1_28_fld_lts05', + [-187827198] = 'hw1_28_fld_lts06', + [774696635] = 'hw1_28_fld_lts07', + [-127499473] = 'hw1_28_fld_lts08', + [1368831374] = 'hw1_28_fld_lts09', + [798960028] = 'hw1_28_ground_ft', + [1220126092] = 'hw1_28_handrailb02', + [1009331247] = 'hw1_28_handrailb02b', + [-837719816] = 'hw1_28_handrailb1', + [-1207417092] = 'hw1_28_handrails', + [1658252667] = 'hw1_28_handrails01', + [1351370982] = 'hw1_28_handrails02', + [1044980832] = 'hw1_28_handrails03', + [765952797] = 'hw1_28_handrails04', + [-1688314231] = 'hw1_28_handrails05', + [-486870137] = 'hw1_28_ladders', + [1220218226] = 'hw1_28_lightproxy', + [-403891779] = 'hw1_28_square_em', + [1556111782] = 'hw1_28_tower', + [-1561022332] = 'hw1_29_detail', + [-154279012] = 'hw1_29_gnd_01a', + [-384317392] = 'hw1_29_gnd_01b', + [-672913967] = 'hw1_29_gnd_01c', + [1935257030] = 'hw1_blimp_ce_lod', + [243963617] = 'hw1_blimp_ce', + [225840079] = 'hw1_blimp_ce2_lod', + [464971335] = 'hw1_blimp_ce2', + [-162266399] = 'hw1_blimp_cpr_null', + [-288462888] = 'hw1_blimp_cpr_null2', + [-476501959] = 'hw1_blimp_cpr003', + [-1910100862] = 'hw1_emissive_emissive', + [-192736993] = 'hw1_emissive_emissive01', + [1518883277] = 'hw1_emissive_hw1_01', + [-1622649339] = 'hw1_emissive_hw1_02_b_lod', + [615560308] = 'hw1_emissive_hw1_02_b', + [153988873] = 'hw1_emissive_hw1_02', + [1355078585] = 'hw1_emissive_hw1_02b', + [1559950373] = 'hw1_emissive_hw1_02c', + [-143979644] = 'hw1_emissive_hw1_03', + [495802312] = 'hw1_emissive_hw1_04', + [-933389738] = 'hw1_emissive_hw1_06_ema', + [508708418] = 'hw1_emissive_hw1_06_emb', + [1540603861] = 'hw1_emissive_hw1_06_emc_lod', + [214737719] = 'hw1_emissive_hw1_06_emc', + [2131672552] = 'hw1_emissive_hw1_07a', + [1211125804] = 'hw1_emissive_hw1_07b', + [1384694206] = 'hw1_emissive_hw1_08', + [-2012009254] = 'hw1_emissive_hw1_09', + [254851575] = 'hw1_emissive_hw1_11', + [486725011] = 'hw1_emissive_hw1_12', + [1453465971] = 'hw1_emissive_hw1_14_em_nw_slod', + [-699792743] = 'hw1_emissive_hw1_14_em_nw', + [-1707759983] = 'hw1_emissive_hw1_14_em_nwb', + [8199304] = 'hw1_emissive_hw1_14', + [245283019] = 'hw1_emissive_hw1_15', + [-588095165] = 'hw1_emissive_hw1_16_b', + [1655595241] = 'hw1_emissive_hw1_16', + [972099439] = 'hw1_emissive_hw1_17', + [-1975041086] = 'hw1_emissive_hw1_17b', + [1211280370] = 'hw1_emissive_hw1_18', + [-687703252] = 'hw1_emissive_hw1_22_em00', + [-1978932908] = 'hw1_emissive_hw1_22_em01', + [1547830721] = 'hw1_emissive_hw1_22_em02', + [1864838027] = 'hw1_emissive_hw1_22_em03', + [1064848430] = 'hw1_emissive_hw1_22_em04', + [30415794] = 'hw1_emissive_hw1_23', + [328056621] = 'hw1_emissive_hw1_24', + [639558735] = 'hw1_emissive_hw1_25', + [-43279931] = 'hw1_emissive_hw1_26', + [300368572] = 'hw1_emissive_hw1_28', + [150129262] = 'hw1_emissive_hw1b_01', + [1404924342] = 'hw1_emissive_hw1c1_lod', + [-1448955753] = 'hw1_emissive_hw8_allday', + [389674101] = 'hw1_emissive_melt_pstrs_lod', + [-917318405] = 'hw1_emissive_melt_pstrs', + [-475578788] = 'hw1_emissive_nightphrm_b', + [-1784220855] = 'hw1_emissive_nightphrm', + [-315608747] = 'hw1_emissive_nomelt_pstrs_lod', + [2073600491] = 'hw1_emissive_nomelt_pstrs', + [627456733] = 'hw1_emissive_vpallday', + [-586951134] = 'hw1_emissive_vsign_1_07b', + [1842012554] = 'hw1_lod_emi_6_19_slod3', + [-30992305] = 'hw1_lod_emi_6_21_slod3', + [407549316] = 'hw1_lod_emissive', + [-858055906] = 'hw1_lod_slod3_emi_proxy_01', + [-753195106] = 'hw1_lod_slod3_emi_proxy_02', + [398589620] = 'hw1_lod_slod4', + [2061517075] = 'hw1_props_cablemesh100058_thvy', + [20587761] = 'hw1_props_cablemesh100059_thvy', + [-191650557] = 'hw1_props_cablemesh100204_thvy', + [2047730042] = 'hw1_props_cablemesh100205_thvy', + [-2128885817] = 'hw1_props_cablemesh100206_thvy', + [-746018962] = 'hw1_props_cablemesh100207_thvy', + [1997548554] = 'hw1_props_cablemesh100208_thvy', + [-1141379176] = 'hw1_props_cablemesh100209_thvy', + [946014230] = 'hw1_props_cablemesh100210_thvy', + [-1479566691] = 'hw1_props_cablemesh100211_thvy', + [615306342] = 'hw1_props_cablemesh100212_thvy', + [-1037270777] = 'hw1_props_cablemesh100213_thvy', + [-1730321907] = 'hw1_props_cablemesh587748_thvy', + [-1555132543] = 'hw1_props_cablemesh587749_thvy', + [-1578826293] = 'hw1_props_cablemesh587750_thvy', + [-2006426402] = 'hw1_props_cablemesh587751_thvy', + [-1287710027] = 'hw1_rd_01_00', + [-474612822] = 'hw1_rd_01_05', + [-806628330] = 'hw1_rd_01_06', + [1274465310] = 'hw1_rd_01_07', + [-88823397] = 'hw1_rd_01_08', + [-388004367] = 'hw1_rd_01_09', + [282580165] = 'hw1_rd_01_10', + [-1854777860] = 'hw1_rd_01_11', + [1158876592] = 'hw1_rd_01_12_d2', + [-1625427629] = 'hw1_rd_01_12', + [2110041761] = 'hw1_rd_01_13', + [1236190834] = 'hw1_rd_01_14', + [-1667220845] = 'hw1_rd_01_15_d', + [-912112037] = 'hw1_rd_01_15', + [-1255826078] = 'hw1_rd_01_17', + [-1030670279] = 'hw1_rd_01_18', + [613088267] = 'hw1_rd_01_19', + [1699019838] = 'hw1_rd_01_60', + [745257493] = 'hw1_rd_01_ovly_00', + [-286179667] = 'hw1_rd_01_ovly_01', + [-768342733] = 'hw1_rd_01_ovly_02', + [178255370] = 'hw1_rd_01_ovly_03', + [-44180602] = 'hw1_rd_01_ovly_04', + [696988640] = 'hw1_rd_01_ovly_05', + [458332013] = 'hw1_rd_01_ovly_06', + [1406929025] = 'hw1_rd_01_ovly_07', + [1168469012] = 'hw1_rd_01_ovly_08', + [2118671705] = 'hw1_rd_01_ovly_09', + [395284293] = 'hw1_rd_01_ovly_10', + [1909474245] = 'hw1_rd_01_ovly_11', + [-2078971825] = 'hw1_rd_01_ovly_12', + [1312783524] = 'hw1_rd_01_ovly_13', + [1619501364] = 'hw1_rd_01_ovly_14', + [-1448987872] = 'hw1_rd_01_ovly_15', + [-329402227] = 'hw1_rd_01_roaddecals', + [-692403770] = 'hw1_rd_02_00_ovly', + [924244132] = 'hw1_rd_02_001', + [-942716203] = 'hw1_rd_02_01_ovly', + [1491736704] = 'hw1_rd_02_01', + [-68231404] = 'hw1_rd_02_02_ovly', + [1881262774] = 'hw1_rd_02_03_ovly', + [-661871] = 'hw1_rd_02_03', + [-1507033435] = 'hw1_rd_02_04_ovly', + [-106636817] = 'hw1_rd_02_04', + [-437189067] = 'hw1_rd_02_05_ovly', + [-1534480454] = 'hw1_rd_02_05', + [83467017] = 'hw1_rd_02_06_ovly', + [-1916829146] = 'hw1_rd_02_06', + [-335895949] = 'hw1_rd_02_07_ovly', + [842910496] = 'hw1_rd_02_07', + [-1468452543] = 'hw1_rd_02_08_ovly', + [611856277] = 'hw1_rd_02_08', + [-1206872345] = 'hw1_rd_02_09_ovly', + [-356303828] = 'hw1_rd_02_09', + [-652756247] = 'hw1_rd_02_10_ovly', + [187710131] = 'hw1_rd_02_101x_s', + [1786522679] = 'hw1_rd_02_101x', + [1122031047] = 'hw1_rd_02_102_shd', + [-1980335112] = 'hw1_rd_02_102', + [463609677] = 'hw1_rd_02_103', + [743063709] = 'hw1_rd_02_104', + [1257564781] = 'hw1_rd_02_11_ovly', + [2011485517] = 'hw1_rd_02_11', + [703620047] = 'hw1_rd_02_12_ovly', + [-537100249] = 'hw1_rd_02_13_ovly', + [-1373819545] = 'hw1_rd_02_14_ovly', + [-1757080535] = 'hw1_rd_02_14', + [47458235] = 'hw1_rd_02_15_ovly', + [1770174629] = 'hw1_rd_02_15', + [818603439] = 'hw1_rd_02_16_ovly', + [-1161176270] = 'hw1_rd_02_16', + [-2039184003] = 'hw1_rd_02_17_ovly', + [-19963076] = 'hw1_rd_02_17', + [-1006013681] = 'hw1_rd_02_18_ovly', + [-787445825] = 'hw1_rd_02_18', + [-119426425] = 'hw1_rd_02_19_ovly', + [-1573246445] = 'hw1_rd_02_19', + [-1771508612] = 'hw1_rd_02_20_ovly', + [-21573673] = 'hw1_rd_02_20', + [939729334] = 'hw1_rd_02_21_ovly', + [133554773] = 'hw1_rd_02_21', + [1577375067] = 'hw1_rd_02_22_ovly', + [-642054688] = 'hw1_rd_02_22', + [711464671] = 'hw1_rd_02_23_ovly', + [-384654193] = 'hw1_rd_02_23', + [234764160] = 'hw1_rd_02_24_ovly', + [-755009427] = 'hw1_rd_02_24', + [-1102202286] = 'hw1_rd_02_25_ovly', + [-1534092402] = 'hw1_rd_02_25', + [-1455513842] = 'hw1_rd_02_decaljl', + [1618403309] = 'hw1_rd_03_01', + [743733153] = 'hw1_rd_03_02', + [1034656343] = 'hw1_rd_03_03', + [-136212804] = 'hw1_rd_03_04', + [421253424] = 'hw1_rd_03_05', + [-180713102] = 'hw1_rd_03_06', + [109587469] = 'hw1_rd_03_07', + [-791822183] = 'hw1_rd_03_08', + [-503160062] = 'hw1_rd_03_09', + [-304055934] = 'hw1_rd_03_10', + [-1154870250] = 'hw1_rd_03_11', + [-897862983] = 'hw1_rd_03_12', + [-1813707501] = 'hw1_rd_03_ovly_0', + [-699601122] = 'hw1_rd_03_ovly_01', + [1379460856] = 'hw1_rd_03_ovly_02', + [1273485910] = 'hw1_rd_03_ovly_03', + [2094382129] = 'hw1_rd_03_ovly_04', + [1735102813] = 'hw1_rd_03_ovly_05', + [-417525566] = 'hw1_rd_03_ovly_06', + [416281639] = 'hw1_rd_03_ovly_07', + [917516263] = 'hw1_rd_03_ovly_08', + [543294283] = 'hw1_rd_03_ovly_09', + [-914991959] = 'hw1_rd_03_ovly_10', + [-1222070258] = 'hw1_rd_03_ovly_11', + [1424944028] = 'hw1_rd_03_ovly_12', + [-1361157387] = 'hw1_rd_04_01_ovly', + [1699730233] = 'hw1_rd_04_01', + [-1845893502] = 'hw1_rd_04_02_ovly', + [1496365819] = 'hw1_rd_04_02', + [-1170279] = 'hw1_rd_04_03_ovly', + [1064667013] = 'hw1_rd_04_03', + [-1015021653] = 'hw1_rd_04_04_ovly', + [-1399004718] = 'hw1_rd_04_04', + [-1571107506] = 'hw1_rd_04_05', + [-927991389] = 'hw1_rd_04_06_ovly', + [-1846137723] = 'hw1_rd_04_06', + [1640292143] = 'hw1_rd_04_07_ovly', + [2143782952] = 'hw1_rd_04_07', + [1067636510] = 'hw1_rd_04_08_ovly', + [-254154161] = 'hw1_rd_04_08', + [914118583] = 'hw1_rd_04_09_ovly', + [-683100371] = 'hw1_rd_04_09', + [-1911772706] = 'hw1_rd_04_10_ovly', + [-1841811863] = 'hw1_rd_04_10', + [-70940497] = 'hw1_rd_04_11_ovly', + [-2072636699] = 'hw1_rd_04_11', + [1867398351] = 'hw1_rd_04_12_ovly', + [-207457984] = 'hw1_rd_04_12', + [-1089710286] = 'hw1_rd_04_13_ovly', + [-443820781] = 'hw1_rd_04_13', + [-1827370466] = 'hw1_rd_04_14_ovly', + [-673334857] = 'hw1_rd_04_14', + [-208666402] = 'hw1_rd_04_15_ovly', + [-922346488] = 'hw1_rd_04_15', + [-166886109] = 'hw1_rd_04_16_ovly', + [459260090] = 'hw1_rd_04_16', + [-366601159] = 'hw1_rd_04_17_ovly', + [251078633] = 'hw1_rd_04_17', + [-1866819384] = 'hw1_rd_04_18_ovly', + [75862790] = 'hw1_rd_04_18', + [1355570637] = 'hw1_rd_04_19_ovly', + [1992423297] = 'hw1_rd_04_19', + [-782591485] = 'hw1_rd_04_20_ovly', + [-1526410014] = 'hw1_rd_04_20', + [1619279728] = 'hw1_rd_04_21_ovly', + [-1218250338] = 'hw1_rd_04_21', + [591264696] = 'hw1_rd_04_22_ovly', + [-2069916648] = 'hw1_rd_04_22', + [-881970046] = 'hw1_rd_04_23_ovly', + [-1755989628] = 'hw1_rd_04_23', + [983834712] = 'hw1_rd_hedge01castshadow', + [926636239] = 'hw1_rd_hedge02_top', + [-409894683] = 'hw1_rd_hedge02b_lod', + [406673096] = 'hw1_rd_hedge03castshadow', + [1375006103] = 'hw1_rd_hedge04castshadow', + [-265919534] = 'hw1_rd_hedge3bcastshadow', + [1588883898] = 'hw1_rd_hedge4bcastshadow', + [-476058186] = 'hw1_rd_props_nw_thvy', + [-1496968019] = 'hw1_rd_props_nw_thvy01', + [-1447716300] = 'hw1_rd_props_nw_thvy02', + [-1141358919] = 'hw1_rd_props_nw_thvy03', + [46255291] = 'hw1_rd_props_nw_thvy04', + [276785206] = 'hw1_rd_props_nw_thvy05', + [1618773955] = 'hw1_rd_props_nw_thvy06', + [1925360719] = 'hw1_rd_props_nw_thvy07', + [-1123663659] = 'hw1_rd_props_nw_thvy08', + [-816847512] = 'hw1_rd_props_nw_thvy09', + [-1538191181] = 'hw1_rd_props_nw_thvy10', + [311553335] = 'hw1_rd_props_nw_thvy11', + [1515650252] = 'hw1_rd_props_nw_thvy12', + [1209817175] = 'hw1_rd_props_nw_thvy13', + [-3749971] = 'hw1_rd_props_nw_thvy14', + [-308468902] = 'hw1_rd_props_nw_thvy15', + [-1788611879] = 'hw1_rd_props_nw_thvy16', + [-2087465159] = 'hw1_rd_props_nw_thvy17', + [914371871] = 'hw1_rd_props_nw_thvy18', + [659068592] = 'hw1_rd_props_nw_thvy19', + [-1606678039] = 'hw1_rd_props_nw_thvy20', + [-1058671619] = 'hw1_rd_props_thvy_', + [1825040220] = 'hw1_rd_props_thvy_01', + [1568262336] = 'hw1_rd_props_thvy_02', + [-1222050787] = 'hw1_rd_props_thvy_03', + [-904257025] = 'hw1_rd_props_thvy_04', + [-1769489701] = 'hw1_rd_props_thvy_05', + [-2050680490] = 'hw1_rd_props_thvy_06', + [-492514540] = 'hw1_rd_props_thvy_07', + [352958433] = 'hw1_rd_props_thvy_08', + [-1118893975] = 'hw1_rd_props_thvy_09', + [956923548] = 'hw1_rd_props_thvy_10', + [1018201578] = 'hw1_rd_props_thvy_11', + [1442101362] = 'hw1_rd_props_thvy_12', + [1070337053] = 'hw1_rd_props_thvy_13', + [1269769187] = 'hw1_rd_props_thvy_14', + [-1787283592] = 'hw1_rd_props_thvy_15', + [1783554338] = 'hw1_rd_props_thvy_16', + [-1292307847] = 'hw1_rd_props_thvy_17', + [-2061297970] = 'hw1_rd_props_thvy_18', + [-682247374] = 'hw1_rd_props_thvy_19', + [253439572] = 'hw1_rd_props_thvy_20', + [369638386] = 'hw1_rd_props_thvy_21', + [72259711] = 'hw1_rd_props_thvy_22', + [-696894197] = 'hw1_rd_props_thvy_23', + [-399155063] = 'hw1_rd_props_thvy_24', + [-1290766784] = 'hw1_rd_props_thvy_25', + [-992306732] = 'hw1_rd_props_thvy_26', + [-1886736587] = 'hw1_rd_props_thvy_27', + [-1582181501] = 'hw1_rd_props_thvy_28', + [1814128735] = 'hw1_rd_props_thvy_29', + [207333249] = 'hw1_rd_props_thvy_30', + [1354281018] = 'hw1_rd_props_thvy_31', + [786984090] = 'hw1_rd_props_thvy_32', + [1397863784] = 'hw1_rd_props_thvy_33', + [1092030707] = 'hw1_rd_props_thvy_34', + [1772610068] = 'hw1_rd_props_thvy_35', + [1704057320] = 'hw1_rd_props_thvy_36', + [-1946474818] = 'hw1_rd_props_thvy_37', + [2053276557] = 'hw1_rd_props_thvy_38', + [-1345786279] = 'hw1_rd_props_thvy_39', + [-707234581] = 'hw1_rd_props_thvy_40', + [288943023] = 'hw1_rd_props_thvy_41', + [-1558737046] = 'hw1_rd_props_thvy_42', + [1323165420] = 'hw1_rd_props_thvy_43', + [-518321304] = 'hw1_rd_props_thvy_44', + [938490129] = 'hw1_rd_props_thvy_45', + [1016808039] = 'hw1_rd_props_thvy_46', + [-1782352710] = 'hw1_rd_props_thvy_47', + [670472478] = 'hw1_rd_props_thvy_48', + [1660129051] = 'hw1_rd_props_thvy_49', + [2004793089] = 'hw1_rd_props_thvy_50', + [1707348876] = 'hw1_rd_props_thvy_51', + [-726797986] = 'hw1_rd_props_thvy_52', + [1378479204] = 'hw1_rd_props_thvy_53', + [-470773773] = 'hw1_rd_props_thvy_54', + [759636639] = 'hw1_rd_props_thvy_55', + [1057343004] = 'hw1_rd_props_thvy_56', + [1879766222] = 'hw1_rd_props_thvy_63', + [1583174003] = 'hw1_rd_props_thvy_64', + [342211973] = 'hw1_rd_props_thvy_65', + [78585368] = 'hw1_rd_props_thvy_66', + [521736348] = 'hw1_rd_stars1', + [789819537] = 'hw1_rd_stars2', + [18732202] = 'hw1_rd_stars3', + [241364788] = 'hw1_rd_stars4', + [-660503630] = 'hw1_rd_stars5', + [946864145] = 'hw1_rd_trans_hills04', + [1759823196] = 'hw1_rd_trans_runoff01', + [2010080049] = 'hw1_rd_trans_runoff02', + [970385471] = 'hydra', + [-1866644246] = 'id1_00_ground2', + [-1437239270] = 'id1_00_ground3', + [541345598] = 'id1_00_pre_ref_proxy_dummy', + [-1717071122] = 'id1_00_pre_ref_proxy', + [-202235360] = 'id1_00_water1', + [178737034] = 'id1_00_water2', + [410381095] = 'id1_00_water3', + [-2027930633] = 'id1_00_weeds_001', + [-864544023] = 'id1_04_cables01', + [-685887435] = 'id1_04_cables02', + [275380041] = 'id1_04_chimney_dec', + [111629499] = 'id1_04_chimney', + [715570612] = 'id1_04_details1', + [-919111996] = 'id1_04_details1a', + [-82650502] = 'id1_04_details1b', + [-1385906401] = 'id1_04_details1c', + [341348632] = 'id1_04_details2', + [-1611094681] = 'id1_04_details2a', + [-757396693] = 'id1_04_details2b', + [72216080] = 'id1_04_details2c', + [-1782574874] = 'id1_04_details2d', + [-921307247] = 'id1_04_details2e', + [-813267083] = 'id1_04_details3', + [634420228] = 'id1_04_fizz_b_00', + [-1541539683] = 'id1_04_fizz_b_01', + [-1168890615] = 'id1_04_fizz_b_02', + [-929185380] = 'id1_04_fizz_b_03', + [1153656029] = 'id1_04_fizz_c_01', + [2099795362] = 'id1_04_fizz_c_02', + [542940172] = 'id1_04_fizz_c_04', + [1929908776] = 'id1_04_fizz_d_00', + [-2059946361] = 'id1_04_fizz_d_01', + [-827242111] = 'id1_04_fizz_d_02', + [-526258846] = 'id1_04_fizz_d_03', + [-363986762] = 'id1_04_fizz_d_04', + [-1046976597] = 'id1_04_fizz_e_01', + [-1211426332] = 'id1_04_fizz_f_00', + [-2063190865] = 'id1_04_fizz_f_01', + [-754560838] = 'id1_04_fizz_f_02', + [-1913369513] = 'id1_04_fizz_g_02', + [92688642] = 'id1_04_fizz_h_01', + [849662807] = 'id1_04_fizz_i_01', + [1629739697] = 'id1_04_fizza_00', + [1421263323] = 'id1_04_fizza_01', + [1782443241] = 'id1_04_fizza_02', + [1557628653] = 'id1_04_fizza', + [594711584] = 'id1_04_fizzb', + [398924699] = 'id1_04_ground1', + [694271696] = 'id1_04_ground2', + [-97361806] = 'id1_04_ground3', + [-862602565] = 'id1_04_ladder', + [1141730920] = 'id1_04_ladder01', + [383718412] = 'id1_04_ladder02', + [564275602] = 'id1_04_ladder03', + [397262447] = 'id1_04_pipes_1_ab', + [378082426] = 'id1_04_pipes_1', + [1212815868] = 'id1_04_pipes_1a', + [1298998338] = 'id1_04_pipes_1b', + [-1509534349] = 'id1_04_pipes_1c', + [611236050] = 'id1_04_pipes_2_ovl', + [1766636032] = 'id1_04_pipes_2', + [-982826024] = 'id1_04_pipes_3_ovl', + [-582618711] = 'id1_04_pipes_3_ovl2', + [2074566325] = 'id1_04_pipes_3', + [1241744698] = 'id1_04_rain_blockers_10', + [942530959] = 'id1_04_rain_blockers_11', + [-1581265182] = 'id1_04_sign_pol', + [337553438] = 'id1_04_sign001', + [-1299763935] = 'id1_04_signs01', + [-1003007871] = 'id1_04_signs02', + [1501856626] = 'id1_04_structures_02', + [2048455652] = 'id1_05_detail1_a', + [1806980891] = 'id1_05_detail1_b', + [-1650541841] = 'id1_05_detail1_c', + [-1675894771] = 'id1_05_detail1', + [270159692] = 'id1_05_detail2_hr', + [-1947418705] = 'id1_05_detail2', + [-718008007] = 'id1_05_detail3_a', + [-1006178593] = 'id1_05_detail3_b', + [2042436432] = 'id1_05_detail3', + [2086573631] = 'id1_05_detail4_rail', + [-9713132] = 'id1_05_detail4_stairs', + [1949622595] = 'id1_05_detail4_struct', + [-1309740102] = 'id1_05_detail4b_fizz', + [999157985] = 'id1_05_detail4b_steps_01', + [758535218] = 'id1_05_detail4b_steps_02', + [591423112] = 'id1_05_detail4b_steps', + [1129117265] = 'id1_05_detail4b', + [-1883375305] = 'id1_05_detail4c_02', + [1368298196] = 'id1_05_detail4c', + [731361123] = 'id1_05_detail5a_rails_01', + [-1210392855] = 'id1_05_detail5a_rails', + [-321631051] = 'id1_05_detail5a', + [-1357141276] = 'id1_05_detail5ax', + [-808160556] = 'id1_05_detail5ax1', + [-1048127943] = 'id1_05_detail5ax2', + [99143416] = 'id1_05_detail5b_01', + [-1089552059] = 'id1_05_detail5b_05', + [1577618358] = 'id1_05_detail5b_pipes_01', + [181855580] = 'id1_05_detail5b_pipes_02', + [415990073] = 'id1_05_detail5b_pipes_03', + [1128607941] = 'id1_05_detail5b_pipes', + [-2139635990] = 'id1_05_detail5b_rail1', + [-1849761416] = 'id1_05_detail5b_rail2', + [-2100804725] = 'id1_05_detail5b_rail3', + [1055144916] = 'id1_05_detail5b_rails', + [1151818846] = 'id1_05_detail5b_spikes', + [-99195079] = 'id1_05_detail5b', + [1437498171] = 'id1_05_detail5bb', + [-1955547814] = 'id1_05_detail5sa_rails', + [-793817837] = 'id1_05_fizza_01', + [2068423241] = 'id1_05_fizza_02', + [-713590317] = 'id1_05_fizzb_01', + [-1925008772] = 'id1_05_fizzb_01b', + [-1622059367] = 'id1_05_fizzb_01c', + [1847405344] = 'id1_05_fizzb_02', + [-2057415366] = 'id1_05_ground', + [892020553] = 'id1_05_ladder002', + [112085224] = 'id1_05_ladder017', + [-1118608307] = 'id1_05_ladder02', + [1066645978] = 'id1_05_ladder020', + [830021029] = 'id1_05_ladder021', + [1527214273] = 'id1_05_ladder022', + [1290785938] = 'id1_05_ladder023', + [-30296297] = 'id1_05_ladder024', + [212751372] = 'id1_05_ladder02a', + [-1494316930] = 'id1_05_ladder02b', + [470360467] = 'id1_05_ladder04', + [293473405] = 'id1_05_ladder05', + [358028627] = 'id1_05_ladder16', + [718349931] = 'id1_05_propssmsh2end_slod001', + [1363370066] = 'id1_05_propssmsh2end', + [-1890778353] = 'id1_05_propssmsh2srt_slod', + [-695384606] = 'id1_05_propssmsh2srt', + [-1595861292] = 'id1_05_rain_blockers_06', + [-1311557448] = 'id1_05_rain_blockers_07', + [1570089325] = 'id1_05_signage01', + [1583311035] = 'id1_05_struct1_a', + [907904550] = 'id1_05_struct3_a', + [-1459328014] = 'id1_05_struct3_b', + [1872263451] = 'id1_05_struct3_c', + [1147609785] = 'id1_05_struct3_d', + [1709188171] = 'id1_05_structures1_fence', + [481643490] = 'id1_05_structures1', + [399671084] = 'id1_05_structures2_fence', + [1383511908] = 'id1_05_structures2', + [1852670563] = 'id1_05_wires', + [-73059657] = 'id1_06_cables_dyn_01', + [301932556] = 'id1_06_detail1', + [1595718214] = 'id1_06_detail2', + [828497617] = 'id1_06_detail3', + [-878636207] = 'id1_06_detail4', + [-572147750] = 'id1_06_detail5', + [-436287476] = 'id1_06_detail6', + [-130388861] = 'id1_06_detail7', + [1665457898] = 'id1_06_fizza_01', + [1301001080] = 'id1_06_fizza_02', + [111191459] = 'id1_06_fizza_03', + [-1712698308] = 'id1_06_fizza_05', + [-2078859114] = 'id1_06_fizza_06', + [1029444377] = 'id1_06_fizza_07', + [-1349290098] = 'id1_06_fizza_08', + [-848022705] = 'id1_06_fizza_09', + [1688689411] = 'id1_06_ground', + [142826631] = 'id1_06_groundb', + [991675317] = 'id1_06_ladder', + [-983216474] = 'id1_06_ladder001', + [-687902246] = 'id1_06_ladder002', + [-1444833377] = 'id1_06_ladder003', + [-1151812979] = 'id1_06_ladder004', + [-1909891025] = 'id1_06_ladder005', + [1607828360] = 'id1_06_ladder006', + [1923852596] = 'id1_06_ladder007', + [1152699719] = 'id1_06_ladder008', + [1390307738] = 'id1_06_ladder009', + [1440510714] = 'id1_06_ladder010', + [1650494482] = 'id1_06_ladder011', + [1831772590] = 'id1_06_ladder012', + [2129413417] = 'id1_06_ladder013', + [136251115] = 'id1_06_pipes1', + [-337332232] = 'id1_06_railing_hd', + [-99139641] = 'id1_06_railing01', + [712482955] = 'id1_06_railing02', + [481625350] = 'id1_06_railing03', + [-311548311] = 'id1_06_railing04', + [336239467] = 'id1_06_structures1', + [-1370861592] = 'id1_06_structures2', + [-1217437134] = 'id1_06_structures3', + [-81401718] = 'id1_06_watertower_hd', + [1885458804] = 'id1_06_watertower', + [-902846394] = 'id1_06_watertowerrailings', + [619313825] = 'id1_06_wires', + [2116251089] = 'id1_07_armco1', + [-2025619435] = 'id1_07_armco2', + [-1716116230] = 'id1_07_armco3', + [-1427060881] = 'id1_07_armco4', + [-721740925] = 'id1_07_armco5', + [-438256306] = 'id1_07_armco6', + [-256519432] = 'id1_07_armco7', + [26506421] = 'id1_07_armco8', + [203590101] = 'id1_07_armco9', + [1785505955] = 'id1_07_build_x01_o', + [898891257] = 'id1_07_build_x02_o', + [-93075350] = 'id1_07_build_x02_support', + [2129256533] = 'id1_07_build_x02', + [-1954752021] = 'id1_07_build_x03_o', + [263877655] = 'id1_07_build_x03_support', + [-1635049565] = 'id1_07_build_x03', + [-935038187] = 'id1_07_build_x04', + [1826403143] = 'id1_07_cable_heavy_01', + [-252789907] = 'id1_07_cable_heavy_02', + [1184917199] = 'id1_07_cable_heavy_03', + [-2109266826] = 'id1_07_cable_light_01', + [-1806874494] = 'id1_07_cable_light_02', + [1570724639] = 'id1_07_cable_light_03', + [1875967874] = 'id1_07_cable_light_04', + [-882067776] = 'id1_07_cable_light_05', + [-574170252] = 'id1_07_cable_light_06', + [-1494291003] = 'id1_07_cable_light_07', + [-1186590093] = 'id1_07_cable_light_08', + [-1273064200] = 'id1_07_decalglue_', + [-604870159] = 'id1_07_detail1_shadonly', + [227042047] = 'id1_07_detail2_pipe20', + [397813487] = 'id1_07_detail2_pipes027', + [625263116] = 'id1_07_detail2_pipes028', + [1007087504] = 'id1_07_detail2_pipes029', + [-1562964373] = 'id1_07_detail2_pipes21', + [285108924] = 'id1_07_detail2_pipes22', + [-165202674] = 'id1_07_detail2_pipes23', + [167533748] = 'id1_07_detail2_pipes24', + [-281336014] = 'id1_07_detail2_pipes25', + [-577207315] = 'id1_07_detail2_pipes26', + [-852597207] = 'id1_07_detail2_pipes30', + [-294847759] = 'id1_07_detail2_r1', + [-47703747] = 'id1_07_detail2_r10', + [-355011429] = 'id1_07_detail2_r11', + [-1898038101] = 'id1_07_detail2_r12', + [2091685960] = 'id1_07_detail2_r13', + [-1534597122] = 'id1_07_detail2_r14', + [-534094228] = 'id1_07_detail2_r2', + [181515194] = 'id1_07_detail2_r3', + [27107662] = 'id1_07_detail2_r5', + [-211811117] = 'id1_07_detail2_r6', + [1045207723] = 'id1_07_detail2_r7', + [804126190] = 'id1_07_detail2_r8', + [216393060] = 'id1_07_detail2', + [204720823] = 'id1_07_detail3_r1', + [-1935127650] = 'id1_07_detail3_r2', + [-1030310022] = 'id1_07_detail3_r3', + [-506458311] = 'id1_07_detail3', + [726778066] = 'id1_07_glue_2', + [-584932235] = 'id1_07_glue_3', + [1953157887] = 'id1_07_glue_7', + [2084659888] = 'id1_07_glue_8', + [829607845] = 'id1_07_ladder001', + [990765787] = 'id1_07_ladder002', + [-756049843] = 'id1_07_land1_det', + [1721217971] = 'id1_07_land1_det2', + [165378644] = 'id1_07_land1_det3', + [-1929118398] = 'id1_07_land1_o', + [-856687568] = 'id1_07_land1_pipe01_lod', + [1695140889] = 'id1_07_land1_pipe01', + [1945659894] = 'id1_07_land1_pipe02', + [-1970956528] = 'id1_07_land1_pipe03', + [-1755631429] = 'id1_07_land1_pipe04', + [-1368039697] = 'id1_07_land1_pipe05', + [-1138886080] = 'id1_07_land1_pipe06', + [-689354619] = 'id1_07_land1_pipes_10', + [-1102964937] = 'id1_07_land1_pipes_11', + [-1682943464] = 'id1_07_land1_pipes_12', + [-1301381228] = 'id1_07_land1_pipes_13', + [-768821327] = 'id1_07_land1_r1', + [-480323051] = 'id1_07_land1_r2', + [-171344150] = 'id1_07_land1_r3', + [-1397723983] = 'id1_07_land1_r4', + [1994981667] = 'id1_07_land1_r5', + [-1072557192] = 'id1_07_land1_r6', + [-1016751277] = 'id1_07_land1_sp', + [-2104288480] = 'id1_07_land1', + [-2029973640] = 'id1_07_land2_o', + [-894520844] = 'id1_07_land2_support_01', + [-951606136] = 'id1_07_land2', + [-191223736] = 'id1_07_land3_o', + [355516509] = 'id1_07_land3', + [627713892] = 'id1_07_metalbldg', + [-478709339] = 'id1_07_piping00', + [-725558216] = 'id1_07_piping01', + [-1223515940] = 'id1_07_piping02', + [-1437268127] = 'id1_07_piping03', + [-1680741797] = 'id1_07_piping04', + [-1910550794] = 'id1_07_piping05', + [2018780000] = 'id1_07_piping06', + [1772783117] = 'id1_07_piping07', + [1540188751] = 'id1_07_piping08', + [1261881634] = 'id1_07_piping09', + [-1998274827] = 'id1_07_piping10', + [216469774] = 'id1_07_piping101', + [1983977902] = 'id1_07_piping11', + [-1660309418] = 'id1_07_railing_hd2', + [-2103762666] = 'id1_07_railings_hd1', + [-436318863] = 'id1_07_railings001', + [-1733774649] = 'id1_07_railings002', + [-430715492] = 'id1_07_rain_blocker00', + [-946040786] = 'id1_07_rain_blocker01', + [85920562] = 'id1_07_rain_blocker02', + [-143560745] = 'id1_07_rain_blocker03', + [793468810] = 'id1_07_rain_blocker04', + [1867098051] = 'id1_07_rain_blocker04b', + [-684239475] = 'id1_07_redbuild_o', + [639599719] = 'id1_07_redbuild_rails002', + [-188696309] = 'id1_07_redbuild_rails01', + [779922562] = 'id1_07_redbuild_rails02', + [439518190] = 'id1_07_redbuild_rails03', + [-244437403] = 'id1_07_redbuild', + [1404609695] = 'id1_07_structures', + [-826268137] = 'id1_07_structuresx', + [44036422] = 'id1_07_tank_ladder1', + [-243282170] = 'id1_07_tank_ladder2', + [1607029413] = 'id1_07_tank_top1', + [-1838598176] = 'id1_07_tank_top2', + [331168384] = 'id1_07_tank_x01_o', + [1890435823] = 'id1_07_tank_x01_o2', + [-369477574] = 'id1_07_tank_x01', + [-1324628386] = 'id1_07_tank_x02', + [1042996525] = 'id1_07_tankerfizz03', + [1319337502] = 'id1_07_tankerfizz04', + [760571760] = 'id1_07_tankersfizz', + [832965046] = 'id1_07_tankersfizz2', + [-594739040] = 'id1_08_brg_02', + [1318282411] = 'id1_08_brg_03', + [-1497964244] = 'id1_08_brg_d', + [125359368] = 'id1_08_brg', + [1549844328] = 'id1_08_brg003', + [-525675681] = 'id1_08_brg2', + [-1119530379] = 'id1_08_prereflwaterprox_dummy', + [-985603675] = 'id1_09_ammun_o', + [430476224] = 'id1_09_decal_1', + [-1980502955] = 'id1_09_decal_2', + [1959707147] = 'id1_09_decal_3', + [454938080] = 'id1_09_decal', + [448547152] = 'id1_09_ground_o', + [1693539919] = 'id1_09_ground', + [-223189610] = 'id1_09_ladder01', + [419157171] = 'id1_09_magcables', + [664480140] = 'id1_09_newbuild1_o', + [-1631320985] = 'id1_09_newbuild1', + [458194418] = 'id1_09_newbuild2_o', + [219373828] = 'id1_09_newbuild2', + [282989861] = 'id1_09_newbuild3_o', + [-76289439] = 'id1_09_newbuild3_r', + [-1218249507] = 'id1_09_newbuild3_r1', + [203892328] = 'id1_09_newbuild3_r3', + [-1926831827] = 'id1_09_newbuild3', + [640213051] = 'id1_09_newbuild4_o', + [-1735965438] = 'id1_09_newbuild4_r', + [-1946624303] = 'id1_09_newbuild4', + [-108291509] = 'id1_09_newbuild5_ladder', + [-313440219] = 'id1_09_newbuild5_o', + [-1067529451] = 'id1_09_newbuild5_pipes', + [-273250632] = 'id1_09_newbuild5_pipes2', + [2042247764] = 'id1_09_newbuild5', + [578057944] = 'id1_09_newbuild6_o', + [1746081542] = 'id1_09_newbuild6', + [-786896640] = 'id1_09_newbuild7', + [-1091582802] = 'id1_09_newbuild8', + [2014088291] = 'id1_09_newbuildrl', + [143600238] = 'id1_09_newbuildrl1', + [-2029508778] = 'id1_09_newbuildrl2', + [-1795964115] = 'id1_09_newbuildrl3', + [-334040718] = 'id1_09_newbuildrl4', + [-2123949036] = 'id1_09_newbuildrl5', + [1217538667] = 'id1_09_newbuildrl6', + [1851553279] = 'id1_09_newbuildrl7', + [-1528863996] = 'id1_09_newbuildrl8', + [983404162] = 'id1_09_newbuildrl9', + [2072911186] = 'id1_09_newbuilld7_o', + [-1499991661] = 'id1_09_newbuilld8_o', + [655885914] = 'id1_09_railings_hd', + [462774162] = 'id1_09_railings8', + [-1216343055] = 'id1_09_rain_blockers_03', + [-22163674] = 'id1_09_sign', + [1756823266] = 'id1_10_ab_1_o', + [-1486617748] = 'id1_10_ab_1', + [-1023699462] = 'id1_10_ab_11', + [527290093] = 'id1_10_ab_1l', + [1139120092] = 'id1_10_ab_1r', + [-1912894583] = 'id1_10_ab_2_o', + [-691281349] = 'id1_10_ab_2', + [1649071550] = 'id1_10_ab_2l', + [1010002178] = 'id1_10_ab_2l001', + [113369336] = 'id1_10_ab_2r2', + [-67056778] = 'id1_10_ab_2r3', + [-365516830] = 'id1_10_ab_2r4', + [-579376694] = 'id1_10_ab_3_o', + [-847655017] = 'id1_10_ab_3', + [-1861011065] = 'id1_10_ab_r003', + [-629374424] = 'id1_10_ab_r2', + [-314366027] = 'id1_10_ab_r3', + [53649658] = 'id1_10_ab_windows', + [1504774492] = 'id1_10_abattoir_lod', + [-1098328760] = 'id1_10_abd_2', + [-1721014479] = 'id1_10_abr_0', + [1605165582] = 'id1_10_abr_01', + [664203747] = 'id1_10_abr_02', + [779754052] = 'id1_10_cables_001', + [905707911] = 'id1_10_detail1', + [1203610890] = 'id1_10_detail2', + [-629585285] = 'id1_10_detail6', + [1900994926] = 'id1_10_detail6r', + [578771590] = 'id1_10_detail7', + [877264411] = 'id1_10_detail8', + [-47378780] = 'id1_10_ground_o', + [127890226] = 'id1_10_ground_o2', + [-1168582594] = 'id1_10_ground_o3', + [2054311493] = 'id1_10_ground', + [-850144495] = 'id1_10_int_dr_hdobj', + [-1469275761] = 'id1_10_ladder', + [-1424387546] = 'id1_10_new1_d', + [2023395667] = 'id1_10_newdecal01', + [105146202] = 'id1_10_newwin', + [-966952721] = 'id1_10_newwin2', + [-1392609281] = 'id1_10_railings1', + [901024121] = 'id1_10_railings2', + [1131652343] = 'id1_10_railings3', + [437506608] = 'id1_10_railings4', + [672919104] = 'id1_10_railings5', + [-1945520606] = 'id1_10_railings6', + [-1706863979] = 'id1_10_railings7', + [239390667] = 'id1_10_rain_blockers_12', + [-1099558702] = 'id1_10_shed_1_o', + [-1958252634] = 'id1_10_structure1', + [1388412563] = 'id1_10_structure6', + [-772539142] = 'id1_10_structure7', + [-1622534221] = 'id1_10_structured', + [195434401] = 'id1_10_structured2', + [-1952934008] = 'id1_10_structured3', + [600035750] = 'id1_10_wall_1_o', + [-801053478] = 'id1_11_jl00int', + [751583204] = 'id1_11_jlo4_oint', + [-1277020242] = 'id1_11_jsproxy', + [-289339869] = 'id1_11_lightblocker01', + [1178370463] = 'id1_11_rainblock00', + [1467360274] = 'id1_11_rainblock01', + [-1615907713] = 'id1_11_rainblock02', + [-237774645] = 'id1_11_rainblock03', + [-1390358686] = 'id1_11_rainblock04', + [1955454830] = 'id1_11_sidetunnelint', + [-644874618] = 'id1_11_sidetunnelint2', + [-189715553] = 'id1_11_tunnel_end', + [-1978199890] = 'id1_11_tunnel_start_ov', + [1491360671] = 'id1_11_tunnel_start', + [781789410] = 'id1_11_tunnel1_int_shell', + [-1364973704] = 'id1_11_tunnel1_ov1', + [364797022] = 'id1_11_tunnel2_int_shell', + [1110766465] = 'id1_11_tunnel2_ov1', + [-1663135059] = 'id1_11_tunnel3_fake_grill', + [1660802301] = 'id1_11_tunnel3_fake', + [1186379411] = 'id1_11_tunnel3_grill', + [-739429008] = 'id1_11_tunnel3_int_lod', + [-1126309014] = 'id1_11_tunnel3_int_shell_dtl', + [2142412159] = 'id1_11_tunnel3_int_shell', + [1428546297] = 'id1_11_tunnel3_int_side', + [180816572] = 'id1_11_tunnel3_int_side2', + [-218502964] = 'id1_11_tunnel3_ov1', + [-1225363258] = 'id1_11_tunnel3_ov2', + [-555695171] = 'id1_11_tunnel4_edging', + [-602096287] = 'id1_11_tunnel4_fake_grill', + [-887461809] = 'id1_11_tunnel4_fake', + [-1812628555] = 'id1_11_tunnel4_grill', + [-1973334291] = 'id1_11_tunnel4_int_lod', + [975968210] = 'id1_11_tunnel4_int_shell2_dtl', + [472337101] = 'id1_11_tunnel4_int_shell2', + [1219027880] = 'id1_11_tunnel4_ov1', + [1020775430] = 'id1_11_tunnel4_ov2', + [1815653059] = 'id1_11_tunnel4_ov3', + [1042328812] = 'id1_11_tunnel5_fake_grill', + [1342179519] = 'id1_11_tunnel5_fake', + [-2058898174] = 'id1_11_tunnel5_grill', + [2067140864] = 'id1_11_tunnel5_int_lod', + [549110555] = 'id1_11_tunnel5_int_shell_dtl', + [-1629413250] = 'id1_11_tunnel5_int_shell', + [-758919026] = 'id1_11_tunnel5_ov1', + [-1456636574] = 'id1_11_tunnel5_ov2', + [2003605985] = 'id1_11_tunnel5_ov3', + [1141986549] = 'id1_11_tunnel6_fake_grill', + [-1571159934] = 'id1_11_tunnel6_fake', + [1455372570] = 'id1_11_tunnel6_grill', + [-1957295058] = 'id1_11_tunnel6_int_lod', + [871798295] = 'id1_11_tunnel6_int_shell_dtl', + [-1973683462] = 'id1_11_tunnel6_int_shell', + [183175564] = 'id1_11_tunnel6_ov1', + [547763458] = 'id1_11_tunnel6_ov2', + [765349618] = 'id1_11_tunnel6_ov3', + [-996171198] = 'id1_11_tunnel7_fake_grill', + [1971068557] = 'id1_11_tunnel7_fake', + [-1964669113] = 'id1_11_tunnel7_grill', + [2012425067] = 'id1_11_tunnel7_int_lod', + [190785965] = 'id1_11_tunnel7_int_shell_dtl', + [1733634132] = 'id1_11_tunnel7_int_shell', + [-1301109969] = 'id1_11_tunnel7_ov1', + [-1474064751] = 'id1_11_tunnel7_ov2', + [-1194238829] = 'id1_11_tunnel8_int_lod', + [1899137644] = 'id1_11_tunnel8_int_shell', + [-1893954330] = 'id1_11_tunnel8_ov2', + [-574428939] = 'id1_11_tunnel8sunblocker', + [-2081951770] = 'id1_13_detail1', + [-1971595711] = 'id1_13_detail1b', + [-1331879253] = 'id1_13_detail1b1', + [-956280975] = 'id1_13_detail1b2', + [-1680967410] = 'id1_13_detail1b3', + [-1575189078] = 'id1_13_detail1b4', + [-887947713] = 'id1_13_detail2', + [-577092669] = 'id1_13_fizza_01', + [-857544801] = 'id1_13_fizza', + [-736907802] = 'id1_13_ground1_o', + [1439258967] = 'id1_13_ground1b_o', + [416892273] = 'id1_13_ground1b', + [605079591] = 'id1_13_ground1b2', + [-1505753841] = 'id1_13_props_doorslod', + [-1332146606] = 'id1_13_sstation1_go', + [2081355840] = 'id1_13_sstation1_o', + [1576290491] = 'id1_13_sstation1', + [641807859] = 'id1_13_structure1', + [1541939528] = 'id1_13_structure2', + [973915460] = 'id1_13_wires00', + [-1198177729] = 'id1_13_wires01', + [-1270728295] = 'id1_13_wires02', + [-1578691357] = 'id1_13_wires03', + [-1885310890] = 'id1_13_wires04', + [-9875478] = 'id1_13_wires05', + [-319050993] = 'id1_13_wires06', + [-624261459] = 'id1_13_wires07', + [-923147512] = 'id1_13_wires08', + [-728892864] = 'id1_13_wires09', + [-2083145148] = 'id1_14_collision_capsule021', + [-1066308123] = 'id1_14_collision_capsule0211', + [-402193382] = 'id1_14_detail1_fr', + [-548890352] = 'id1_14_detail1_fr2', + [270432955] = 'id1_14_detail1_fr3', + [-33182164] = 'id1_14_detail1_rf', + [-519555736] = 'id1_14_detail1', + [-2061691152] = 'id1_14_detail1r', + [-695143205] = 'id1_14_detailr2', + [970537554] = 'id1_14_ladder009', + [-1793958474] = 'id1_14_structure1_s', + [1031554461] = 'id1_14_structure1', + [1743501958] = 'id1_15_detail_rails01', + [-1419493006] = 'id1_15_detail_rails02', + [-2071497795] = 'id1_15_detail_rails03', + [1519132615] = 'id1_15_detail_rails04', + [647346139] = 'id1_15_detail_rails05', + [1952895868] = 'id1_15_detail_rails06', + [823872742] = 'id1_15_detail_rails07', + [1053222973] = 'id1_15_detail_rails08', + [396885440] = 'id1_15_detail1_l', + [12078575] = 'id1_15_detail1', + [-228934478] = 'id1_15_structure1_l', + [440953241] = 'id1_15_structure1_l2', + [-1200325637] = 'id1_15_structure1', + [967336551] = 'id1_16_fizzhd1', + [-1610174686] = 'id1_16_fizzhd2', + [-2116717888] = 'id1_16_fizzhd3', + [1939658319] = 'id1_16_fizzhd4', + [1667380698] = 'id1_16_fizzhd5', + [-690447159] = 'id1_16_fizzhd7', + [-1196138371] = 'id1_16_fizzhd8', + [-1714975995] = 'id1_16_grafitti', + [1287010130] = 'id1_16_overlay', + [-686207765] = 'id1_16_railing_hd1', + [-1051057811] = 'id1_16_railing_hd2', + [394171167] = 'id1_16_structure1', + [-491739155] = 'id1_17_beltsfizz_hd1', + [-604267901] = 'id1_17_beltsfizz_hd2', + [2107586154] = 'id1_17_detail1', + [-2033675673] = 'id1_17_detail1b', + [1409835865] = 'id1_17_detail2', + [1219447975] = 'id1_17_detail3', + [1532509079] = 'id1_17_fizzyhd1', + [1275174122] = 'id1_17_fizzyhd2', + [-1242992456] = 'id1_17_fizzyhd3', + [19670922] = 'id1_17_graff01', + [1383451164] = 'id1_17_graff02', + [860089506] = 'id1_17_id1_detail001', + [1348280255] = 'id1_17_junk', + [256685522] = 'id1_17_ladder0', + [-132926695] = 'id1_17_ladder009', + [612709397] = 'id1_17_ladder01', + [1982682976] = 'id1_17_ladder02', + [-194948146] = 'id1_17_ladder03', + [498487973] = 'id1_17_ladder1', + [1889466489] = 'id1_17_ladder2', + [-13560421] = 'id1_17_ladder3', + [1206134532] = 'id1_17_ladder4', + [1656380592] = 'id1_17_ladder5', + [-1440060529] = 'id1_17_ladder6', + [944015301] = 'id1_17_ladder7', + [2096730414] = 'id1_17_ladder8', + [-1170419881] = 'id1_17_land1_o1', + [-1677946153] = 'id1_17_land1_o2', + [362935018] = 'id1_17_land1', + [1943482119] = 'id1_17_land2', + [-888393551] = 'id1_17_olays1', + [-188349400] = 'id1_17_olays2', + [50110613] = 'id1_17_olays3', + [575332145] = 'id1_17_olays4', + [814250924] = 'id1_17_olays5', + [1268494802] = 'id1_17_olays6', + [-1679371673] = 'id1_17_olays7', + [-1105114333] = 'id1_17_proxy', + [960645863] = 'id1_17_raiings2', + [1848764571] = 'id1_17_railing', + [751676500] = 'id1_17_railing004', + [2059611136] = 'id1_17_railing01', + [-2005907622] = 'id1_17_railing02', + [168814483] = 'id1_17_railing22', + [-1075457220] = 'id1_17_railing23', + [-1614185668] = 'id1_17_railing3', + [-825118108] = 'id1_17_railings_002', + [747138516] = 'id1_17_railings_003', + [-97613535] = 'id1_17_railings_004', + [-559099242] = 'id1_17_railings_005', + [-253266165] = 'id1_17_railings_006', + [-2110991122] = 'id1_17_railings001', + [1795494824] = 'id1_17_railings01', + [1322708159] = 'id1_17_railings010', + [1552713770] = 'id1_17_railings011', + [634165931] = 'id1_17_railings016', + [-1273387568] = 'id1_17_railings03', + [96085951] = 'id1_17_railings1', + [-1613528036] = 'id1_17_railings10', + [-1375330175] = 'id1_17_railings11', + [72469783] = 'id1_17_railings12', + [312175018] = 'id1_17_railings13', + [-228644558] = 'id1_17_railings14', + [1210111156] = 'id1_17_railings15', + [1439985691] = 'id1_17_railings16', + [666735598] = 'id1_17_railings17', + [-1959273759] = 'id1_17_railings19', + [453244075] = 'id1_17_railings20', + [-188635097] = 'id1_17_railings21', + [-1341064090] = 'id1_17_railings3', + [2127305181] = 'id1_17_railings4', + [-861751919] = 'id1_17_railings5', + [-1588502809] = 'id1_17_railings6', + [-1230468603] = 'id1_17_railings7', + [-429299322] = 'id1_17_railings8', + [-1791047926] = 'id1_17_railings9', + [1410474254] = 'id1_17_rain_blockers_00', + [344334831] = 'id1_17_rain_blockers_09', + [1606895448] = 'id1_17_smoke_proxy', + [-798695753] = 'id1_17_structure1', + [-557876372] = 'id1_17_structure2', + [-1376937527] = 'id1_17_structure3', + [-1169902985] = 'id1_17_structure4', + [-2017899167] = 'id1_17_structure5', + [1110693184] = 'id1_17_tower', + [752352199] = 'id1_17_wires_01', + [1598447779] = 'id1_17_wires_02', + [1317879601] = 'id1_17_wires_03', + [1778418704] = 'id1_18_armcojl001', + [-1567050830] = 'id1_18_build1_dt1_02', + [-1781684617] = 'id1_18_build1_dt1_det01', + [-114674258] = 'id1_18_build1_dt1', + [-368339087] = 'id1_18_build1_dt2', + [483261685] = 'id1_18_build1_dt3', + [225861190] = 'id1_18_build1_dt4', + [-200655745] = 'id1_18_build1_o1', + [1161977594] = 'id1_18_build1_o2', + [1612289192] = 'id1_18_build1_o3', + [1512889534] = 'id1_18_build1', + [-25828824] = 'id1_18_build2_o', + [-272758814] = 'id1_18_build2', + [1203435255] = 'id1_18_cablemesh127924_hvhvy', + [1484611178] = 'id1_18_cablemesh127931_hvhvy', + [572572139] = 'id1_18_fence323', + [-2048592051] = 'id1_18_ground_det', + [-1408460014] = 'id1_18_ground_o', + [535613770] = 'id1_18_ground_o2', + [-1743860630] = 'id1_18_ground', + [1789719824] = 'id1_18_ground2', + [-1755566824] = 'id1_18_ground2b_o', + [-260265159] = 'id1_18_interior_glue_ceiling', + [-1977964782] = 'id1_18_ladder004', + [2017985389] = 'id1_18_ladder005', + [-1485446712] = 'id1_18_ladder006', + [103338597] = 'id1_18_ladder1', + [1555988367] = 'id1_18_ladder2', + [-360506598] = 'id1_18_ladder3', + [609705379] = 'id1_18_railing01', + [842266972] = 'id1_18_railing02', + [-1193670998] = 'id1_18_railing03', + [-968253047] = 'id1_18_railing04', + [1799416697] = 'id1_18_railing05', + [955483871] = 'id1_18_railing06', + [-5270444] = 'id1_18_railing07', + [-1460606634] = 'id1_18_seawall_00', + [-1051921562] = 'id1_18_seawall_00d2', + [2042519447] = 'id1_18_seawall_00x', + [1455441142] = 'id1_18_seawall_03', + [-2059514499] = 'id1_18_sw00_dcl03', + [-890021642] = 'id1_18_sw00_dcl04', + [-1997820360] = 'id1_18_sw00_g0', + [1940489140] = 'id1_18_sw00_g1', + [1783099633] = 'id1_18_sw00_g2', + [1544377468] = 'id1_18_sw00_g3', + [1341537358] = 'id1_18_sw00_g4', + [984617410] = 'id1_18_sw00_g5', + [-1684646490] = 'id1_18_tanks_o', + [-160309116] = 'id1_18_tanks', + [-534772089] = 'id1_18_wall302', + [-1023934834] = 'id1_19_armco1', + [-138204377] = 'id1_19_armco2_lod', + [-1329964525] = 'id1_19_armco2', + [-1754519689] = 'id1_19_armco3', + [374777134] = 'id1_19_armco4', + [-812030424] = 'id1_19_detail1', + [-1107901725] = 'id1_19_detail2', + [1133265317] = 'id1_19_ds00', + [-182377264] = 'id1_19_ds01', + [-283731781] = 'id1_19_ds02', + [506633224] = 'id1_19_ds661', + [342553023] = 'id1_19_ds81', + [-1270468189] = 'id1_19_ds82', + [876032631] = 'id1_19_ds90', + [668998089] = 'id1_19_ds91', + [26758458] = 'id1_19_ds92', + [1192093795] = 'id1_19_glue', + [-1090820498] = 'id1_19_ground1_o', + [-465476234] = 'id1_19_ground1', + [665856808] = 'id1_19_ladder', + [1848856508] = 'id1_19_ladder001', + [2010997520] = 'id1_19_ladder002', + [298915573] = 'id1_19_ladder003', + [-1881152165] = 'id1_19_new_wires1', + [-1014725828] = 'id1_19_pipes1', + [-240263282] = 'id1_19_pipes2', + [1707638670] = 'id1_19_railing', + [251994089] = 'id1_19_railing001', + [476166818] = 'id1_19_railing002', + [1640187236] = 'id1_19_railing003', + [1879499243] = 'id1_19_railing004', + [1162906751] = 'id1_19_railing005', + [1399269548] = 'id1_19_railing006', + [-1643430441] = 'id1_19_railing007', + [-1412441760] = 'id1_19_railing008', + [1619804890] = 'id1_19_railing009', + [-1993697350] = 'id1_19_railing010', + [-450539634] = 'id1_19_railing011', + [-1906138614] = 'id1_19_railing012', + [-675826509] = 'id1_19_railing013', + [-219223263] = 'id1_19_railing014', + [899248245] = 'id1_19_railing015', + [667604184] = 'id1_19_railing016', + [434485518] = 'id1_19_railing017', + [206577123] = 'id1_19_railing018', + [317303578] = 'id1_19_railing019', + [1499117243] = 'id1_19_railing020', + [1626031580] = 'id1_19_railing021', + [1926130082] = 'id1_19_railing022', + [-1939333931] = 'id1_19_railing023', + [-568147895] = 'id1_19_railing024', + [-1456548254] = 'id1_19_railing025', + [-1142686772] = 'id1_19_railing026', + [970651604] = 'id1_19_railing027', + [187406966] = 'id1_19_railing028', + [-766728007] = 'id1_19_railing029', + [2075555350] = 'id1_19_railing030', + [1412474631] = 'id1_19_railing031', + [1652442018] = 'id1_19_railing032', + [1071513186] = 'id1_19_railing033', + [1312856871] = 'id1_19_railing034', + [89885022] = 'id1_19_railing035', + [705876684] = 'id1_19_railing036', + [-525025263] = 'id1_19_railing037', + [-142414419] = 'id1_19_railing038', + [-293708896] = 'id1_19_railing039', + [51676052] = 'id1_19_railing040', + [375719238] = 'id1_19_structures1', + [-2136679996] = 'id1_19_structures2', + [-2075119759] = 'id1_19_tanker_fizz1', + [1918733196] = 'id1_19_tanker_fizz2', + [950114325] = 'id1_19_tanker_fizz3', + [-1495239535] = 'id1_19_tanker_fizz4', + [223368711] = 'id1_20_detail1', + [-629390519] = 'id1_20_detail1a', + [-800117009] = 'id1_20_detail1b', + [689510302] = 'id1_20_detail1ba', + [213573342] = 'id1_20_detail1bb', + [-1106212238] = 'id1_20_detail1c', + [-1293650918] = 'id1_20_detail1d', + [-1584213641] = 'id1_20_detail1e', + [1723206323] = 'id1_20_detail1e1', + [-1283382200] = 'id1_20_detail1e2', + [-1738031327] = 'id1_20_detail1f', + [-854959422] = 'id1_20_detail1f1', + [-1416882238] = 'id1_20_detail1f2', + [-982889602] = 'id1_20_detail1f3', + [-2061690740] = 'id1_20_detail1g', + [-1405486611] = 'id1_20_detail2_plat_2', + [572574781] = 'id1_20_detail2_plat', + [147213374] = 'id1_20_detail2_plat3', + [393603485] = 'id1_20_detail2_plat4', + [633860253] = 'id1_20_detail2_support', + [1215548493] = 'id1_20_detail2', + [-1917681241] = 'id1_20_detail2-1', + [-1610865094] = 'id1_20_detail2-2', + [1190881762] = 'id1_20_detail25', + [-1210987631] = 'id1_20_detail2a', + [-1374102900] = 'id1_20_detail2a001', + [-2146051046] = 'id1_20_detail2b', + [-1370784206] = 'id1_20_detail2b001', + [1402176278] = 'id1_20_detail2c', + [-758753438] = 'id1_20_ladder', + [-158451028] = 'id1_20_ladder001', + [-858097100] = 'id1_20_ladder01', + [-1089151319] = 'id1_20_ladder02', + [-165098288] = 'id1_20_ladder03', + [-527261276] = 'id1_20_ladder04', + [-2078218054] = 'id1_20_ladder05', + [1977568311] = 'id1_20_ladder06', + [-1448496173] = 'id1_20_ladder07', + [-1687218338] = 'id1_20_ladder08', + [1061641992] = 'id1_20_ladder09', + [-1880718419] = 'id1_20_ladder10', + [760843283] = 'id1_20_olay1', + [-1046199584] = 'id1_20_railing', + [-493161973] = 'id1_20_railing01', + [-1102468759] = 'id1_20_railing02', + [-1927133393] = 'id1_20_railing03', + [-1687428158] = 'id1_20_railing04', + [2006162450] = 'id1_20_railing05', + [-2048247617] = 'id1_20_railing06', + [1412879705] = 'id1_20_railing07', + [1652847092] = 'id1_20_railing08', + [1056320216] = 'id1_20_railing09', + [1287570749] = 'id1_20_railing10', + [1525703072] = 'id1_20_railing11', + [602698645] = 'id1_20_railing12', + [-106291439] = 'id1_20_railing13', + [-1093719716] = 'id1_20_railing14', + [361158346] = 'id1_20_railing15', + [-632102813] = 'id1_20_railing16', + [-1324053017] = 'id1_20_railing17', + [2047713230] = 'id1_20_railing18', + [-864074564] = 'id1_20_railing19', + [246576465] = 'id1_20_railing20', + [-50802210] = 'id1_20_railing21', + [-1306117062] = 'id1_20_railing22', + [-1609721847] = 'id1_20_railing23', + [1195370095] = 'id1_20_railing24', + [904938448] = 'id1_20_railing25', + [-325242585] = 'id1_20_railing26', + [-647427393] = 'id1_20_railing27', + [-2047450149] = 'id1_20_railing28', + [1918778539] = 'id1_20_railing29', + [-818547391] = 'id1_20_railing30', + [-1115467300] = 'id1_20_railing31', + [-683932339] = 'id1_20_railing32', + [1165517256] = 'id1_20_railing33', + [-102872431] = 'id1_20_railing34', + [-393205771] = 'id1_20_railing35', + [-318801896] = 'id1_20_struct1', + [-1771778672] = 'id1_20_struct2_decal', + [-68053508] = 'id1_20_struct2', + [1930727578] = 'id1_21_detail1', + [-213623391] = 'id1_21_detail1a', + [-1760910041] = 'id1_21_detail1b', + [-933230643] = 'id1_21_detail1x', + [483307693] = 'id1_21_detail1z', + [-1244190271] = 'id1_21_glue', + [106760922] = 'id1_21_land', + [-2124452460] = 'id1_21_land2', + [1997025477] = 'id1_21_olay1', + [-667055062] = 'id1_21_olay1a', + [1387299074] = 'id1_21_olay1b', + [1755032792] = 'id1_21_olay1c', + [791722499] = 'id1_21_olay1d', + [1758565464] = 'id1_21_olay2', + [139744091] = 'id1_21_olay3', + [-1322289272] = 'id1_21_pipes01', + [-2105468372] = 'id1_21_pipes02', + [81895155] = 'id1_21_pipes03', + [135701853] = 'id1_21_pipes04', + [-1786405311] = 'id1_21_railing01', + [736381696] = 'id1_21_railing02', + [1579626373] = 'id1_21_railing03', + [1285262446] = 'id1_21_railing04', + [1859309788] = 'id1_21_railing05', + [-250522281] = 'id1_21_railing06', + [593345011] = 'id1_21_railing07', + [350493952] = 'id1_21_railing08', + [934765222] = 'id1_21_railing09', + [1394613459] = 'id1_21_railing10', + [160034413] = 'id1_21_railing11_lod', + [1626519672] = 'id1_21_railing11', + [-1347201540] = 'id1_21_railing12', + [-1117851309] = 'id1_21_railing13', + [2146563706] = 'id1_21_railing14', + [242520961] = 'id1_21_railing15', + [-1577292060] = 'id1_21_railing16_lod', + [1255279675] = 'id1_21_railing16', + [1494657220] = 'id1_21_railing17', + [1102051831] = 'id1_21_railing18', + [-958331817] = 'id1_21_railing19', + [378279184] = 'id1_21_railing20', + [-2065731147] = 'id1_21_railing21', + [1020813736] = 'id1_21_railing22', + [706821178] = 'id1_21_railing23', + [-614953325] = 'id1_21_structure1', + [-218561004] = 'id1_21_structure1b', + [-1932360525] = 'id1_23_bridge_o', + [198612563] = 'id1_23_cable_00', + [-442676767] = 'id1_23_cable_01', + [-682513078] = 'id1_23_cable_02', + [921758859] = 'id1_23_cable_03', + [681398244] = 'id1_23_cable_04', + [300098160] = 'id1_23_cable_05', + [62424603] = 'id1_23_cable_06', + [2035773783] = 'id1_23_cable_08', + [1804654026] = 'id1_23_cable_09', + [-560727770] = 'id1_23_cable_10', + [1545598000] = 'id1_23_cable_11', + [787061188] = 'id1_23_cable_12', + [1100824363] = 'id1_23_cable_13', + [-1843077047] = 'id1_23_cable_14', + [353003014] = 'id1_23_cable_15', + [-1219105263] = 'id1_23_detail1', + [334572202] = 'id1_23_fencehd', + [-1607773393] = 'id1_23_ground_o', + [420735558] = 'id1_23_ground', + [1014347776] = 'id1_23_mp1_o', + [-235227952] = 'id1_23_mp1', + [1798222998] = 'id1_23_mp1b', + [-464479876] = 'id1_23_mp2', + [931120197] = 'id1_23_mp2b_o', + [1133504625] = 'id1_23_mp2b', + [1273758101] = 'id1_23_olay1', + [-1276626286] = 'id1_23_pipes1', + [66926527] = 'id1_23_railing_hd1', + [389504587] = 'id1_23_railing_hd2', + [697139963] = 'id1_23_railing_hd3', + [-229010288] = 'id1_23_railing_hd4', + [-1721116751] = 'id1_23_shadproxy', + [-129207290] = 'id1_23_structure1', + [-737465468] = 'id1_23_structure2', + [1061252021] = 'id1_24_armco', + [1981319390] = 'id1_24_grnd_o', + [-936087239] = 'id1_24_ground_3_sd', + [259017622] = 'id1_24_olay1', + [-740438901] = 'id1_24_railing1', + [-154697733] = 'id1_24_railing10', + [-462628026] = 'id1_24_railing11', + [-125631626] = 'id1_24_railing12', + [758738146] = 'id1_24_railing13', + [464570833] = 'id1_24_railing14', + [1366046023] = 'id1_24_railing15', + [1165303129] = 'id1_24_railing16', + [1983315676] = 'id1_24_railing17', + [1675385383] = 'id1_24_railing18', + [1984631135] = 'id1_24_railing2', + [-2007321214] = 'id1_24_railing3', + [2031097581] = 'id1_24_railing4', + [-1421444263] = 'id1_24_railing5', + [-1656823990] = 'id1_24_railing6', + [1064772540] = 'id1_24_railing7', + [798655491] = 'id1_24_railing8', + [1649207655] = 'id1_24_railing9', + [-1205569168] = 'id1_24_rain_blockers_02', + [1512006296] = 'id1_24_structure1', + [-622271439] = 'id1_24_structure2', + [81213453] = 'id1_24_structure3', + [1193690709] = 'id1_25_billboard01', + [1351496928] = 'id1_25_decalgarage001', + [442661702] = 'id1_25_glue01', + [188538107] = 'id1_25_glue02', + [-1376509333] = 'id1_25_glue03', + [-1598453770] = 'id1_25_glue04', + [-750326512] = 'id1_25_glue05', + [1080790391] = 'id1_25_graf', + [-19432394] = 'id1_25_ground1', + [-2096210574] = 'id1_25_ground1decal', + [-1736066888] = 'id1_25_ground1decal02', + [405931033] = 'id1_25_ground2_decal01', + [1583681666] = 'id1_25_ground2_decal02', + [-384151364] = 'id1_25_ground2', + [-1318225708] = 'id1_25_lest_detail', + [1252967170] = 'id1_25_lest_detail2', + [1581371151] = 'id1_25_pole', + [-1586829364] = 'id1_25_pole1', + [-1836725758] = 'id1_25_pole2', + [1153937031] = 'id1_25_pole3', + [-816987251] = 'id1_25_pole4', + [-2127386792] = 'id1_25_pole5', + [1927908038] = 'id1_25_pole6', + [377836027] = 'id1_25_pole8', + [-1428566260] = 'id1_25_railing', + [1039098499] = 'id1_25_razorwire', + [1626601703] = 'id1_25_shop_dtl', + [713122771] = 'id1_25_shopland', + [150846835] = 'id1_25_structure1', + [1405113079] = 'id1_25_structure2', + [-1844818054] = 'id1_25_structurem', + [14043937] = 'id1_26_bridge', + [-1933428199] = 'id1_26_build_b_pipes', + [-189847431] = 'id1_26_build_b', + [91224084] = 'id1_26_build_barrier', + [845826842] = 'id1_26_build_barrier1', + [673592978] = 'id1_26_build_barrier2', + [394040639] = 'id1_26_build_barrier3', + [502516190] = 'id1_26_build_bdtl', + [-67924697] = 'id1_26_build_bdtl3', + [224236745] = 'id1_26_build_bits', + [-661241242] = 'id1_26_build_bs', + [829866653] = 'id1_26_build_dtl', + [1465904905] = 'id1_26_build_dtl4', + [-367693595] = 'id1_26_build_support', + [-205592968] = 'id1_26_building_pipes2', + [-1199670123] = 'id1_26_building_sign', + [-1526993003] = 'id1_26_building', + [991637025] = 'id1_26_cables01', + [-2020391148] = 'id1_26_cables02', + [242705565] = 'id1_26_ground', + [777166980] = 'id1_26_ladder003', + [-1039304255] = 'id1_26_ladder01', + [-1912467029] = 'id1_26_ladder02', + [-1826871787] = 'id1_26_olay003', + [1242321226] = 'id1_26_olay1', + [-1966139000] = 'id1_26_pole01', + [-460094281] = 'id1_26_railing01', + [334672495] = 'id1_26_railing014', + [-1812843920] = 'id1_26_railing015', + [-227598230] = 'id1_26_railing02', + [439635918] = 'id1_26_railing024', + [-948295077] = 'id1_26_railing025', + [-313231857] = 'id1_26_railing026', + [-587344542] = 'id1_26_railing027', + [-1961971323] = 'id1_26_railing028', + [-2139054999] = 'id1_26_railing029', + [533822254] = 'id1_26_railing03', + [-254444583] = 'id1_26_railing030', + [302243731] = 'id1_26_railing04', + [-1150537115] = 'id1_26_railing05', + [-1380608264] = 'id1_26_railing06', + [-678827360] = 'id1_26_railing07', + [-920629811] = 'id1_26_railing08', + [1930338731] = 'id1_26_railing09', + [-1638631202] = 'id1_26_railing10', + [-1950985310] = 'id1_26_railing11', + [-1673399123] = 'id1_26_railing12', + [-1979494352] = 'id1_26_railing13', + [-458585567] = 'id1_27_cablemesh6268_hvhvy', + [-619211429] = 'id1_27_ladder', + [-398071101] = 'id1_27_ladder003', + [443432678] = 'id1_27_ladder103', + [-1270595048] = 'id1_27_land01', + [-1926937851] = 'id1_27_land01a_o', + [-2127145627] = 'id1_27_land01c_o', + [-1018019402] = 'id1_27_lockup', + [1798934875] = 'id1_27_railing01', + [1917550295] = 'id1_27_railing012', + [1016075105] = 'id1_27_railing013', + [-1446974007] = 'id1_27_railing016', + [-211626547] = 'id1_27_railing016l', + [-831113425] = 'id1_27_railing019', + [1316109481] = 'id1_27_railing021', + [-828057552] = 'id1_27_railing03', + [-1329528159] = 'id1_27_railing03a', + [-419205339] = 'id1_27_railing03b', + [-709899138] = 'id1_27_railing03c', + [-1985727384] = 'id1_27_railing03d', + [88720813] = 'id1_27_railing08', + [-1998653] = 'id1_27_rain_blockers_05', + [1910752124] = 'id1_27_tg_duct_1', + [1268003899] = 'id1_27_tg_duct_wires', + [-1923312078] = 'id1_27_tg_duct', + [1403132650] = 'id1_27_tg_fence_o', + [-1232972594] = 'id1_27_tg_fence', + [-1843297820] = 'id1_27_tg_test_det1', + [-339626709] = 'id1_27_tg_test_det2', + [77058772] = 'id1_27_tg_test_o', + [1635643581] = 'id1_27_tg_test', + [1244728374] = 'id1_27_tg_test2_det2', + [728470765] = 'id1_27_tg_test2_o', + [-1262005893] = 'id1_27_tg_test2', + [-2138582100] = 'id1_28_build07_o', + [-457448959] = 'id1_28_build10_d', + [844940638] = 'id1_28_build11', + [-2006114010] = 'id1_28_glue', + [984059176] = 'id1_28_ladder01', + [1287631192] = 'id1_28_ladder02', + [-1716958418] = 'id1_28_ladder03', + [-1411715183] = 'id1_28_ladder04', + [922803813] = 'id1_28_land01_o', + [-1321352694] = 'id1_28_land01', + [-159244623] = 'id1_28_land01b', + [381545542] = 'id1_28_props_cable00', + [-479558240] = 'id1_28_props_cable01', + [-183981860] = 'id1_28_props_cable02', + [-812327435] = 'id1_28_props_cable03', + [-539591048] = 'id1_28_props_cable04', + [-883468890] = 'id1_28_props_cable05', + [-585533142] = 'id1_28_props_cable06', + [-1737527385] = 'id1_28_props_cable07', + [-1167150123] = 'id1_28_props_cable08', + [1958357053] = 'id1_28_props_cable09', + [-2076228061] = 'id1_28_props_cable10', + [-686429233] = 'id1_28_props_cable11', + [-1585282903] = 'id1_28_props_cable12', + [1265259642] = 'id1_28_props_cable13', + [1396139028] = 'id1_28_props_cable14', + [1704823008] = 'id1_28_props_cable15', + [1994206047] = 'id1_28_props_cable16', + [1080114788] = 'id1_28_props_cable17', + [171037190] = 'id1_28_props_cable18', + [1149093533] = 'id1_28_props_cable19', + [-1105249010] = 'id1_28_props_cable20', + [-196073117] = 'id1_28_props_cable21', + [33703111] = 'id1_28_props_cable22', + [-943370162] = 'id1_28_props_cable23', + [-415461572] = 'id1_28_props_cable24', + [1029553021] = 'id1_28_props_cable25', + [1423311845] = 'id1_28_props_cablemesh98860', + [-878074860] = 'id1_28_railings01', + [-1488692398] = 'id1_28_railings02', + [-1240860451] = 'id1_28_railings03', + [-1162280389] = 'id1_28_railings04', + [-644268037] = 'id1_28_railings05', + [1891167800] = 'id1_28_railings06', + [1057229519] = 'id1_28_railings07', + [-859122088] = 'id1_28_wires', + [-1403748097] = 'id1_29_bld2_dtl', + [2079147100] = 'id1_29_bld2', + [-353651413] = 'id1_29_cablemesh245219_thvy', + [-926978890] = 'id1_29_cablemesh246160_thvy', + [1840226878] = 'id1_29_cablemesh246164_thvy', + [1626658361] = 'id1_29_cablemesh246171_thvy', + [-670110690] = 'id1_29_cablemesh246173_thvy', + [787619157] = 'id1_29_cablemesh246174_thvy', + [1047442561] = 'id1_29_cablemesh246175_thvy', + [-1475310076] = 'id1_29_cablemesh246182_thvy', + [1243938972] = 'id1_29_cablemesh246184_thvy', + [2080623674] = 'id1_29_cablemesh246188_thvy', + [-148320919] = 'id1_29_cablemesh246192_thvy', + [-1508133866] = 'id1_29_cablemesh246196_thvy', + [480433763] = 'id1_29_cablemesh246197_thvy', + [360919484] = 'id1_29_cablemesh246204_thvy', + [479187090] = 'id1_29_cablemesh28906_tstd', + [-1030629225] = 'id1_29_cablemesh29028_tstd', + [881404439] = 'id1_29_cablemesh29044_tstd', + [226835269] = 'id1_29_cablemesh29060_tstd', + [-1735341379] = 'id1_29_ground_01a', + [-348884989] = 'id1_29_ground_01b', + [1134525000] = 'id1_29_ground_dtl', + [-1937660458] = 'id1_29_ground_dtl2', + [-1422730405] = 'id1_29_ladder01', + [-2145268592] = 'id1_29_poles01', + [-1911461777] = 'id1_29_poles02', + [1704859529] = 'id1_29_poles03', + [1911992378] = 'id1_29_poles04', + [1196972798] = 'id1_29_poles05', + [1452407153] = 'id1_29_poles06', + [490073851] = 'id1_29_res_123_dtl', + [-1002148637] = 'id1_29_res_123', + [-1852476438] = 'id1_29_res_45_dtl', + [-1976251149] = 'id1_29_res_45', + [20228083] = 'id1_29_res_678_dtl', + [-9290609] = 'id1_29_res_678', + [-200138709] = 'id1_29_res_678c', + [-392999230] = 'id1_29_watertower_dtl', + [-519317961] = 'id1_29_watertower', + [1875374592] = 'id1_30_build02', + [1117394853] = 'id1_30_build03', + [486231144] = 'id1_30_build05', + [-1433477446] = 'id1_30_build05st', + [-1730314678] = 'id1_30_build3_dtl', + [864311944] = 'id1_30_build3_dtl2', + [-1127481231] = 'id1_30_decal', + [-1603798600] = 'id1_30_decal003', + [1418897887] = 'id1_30_decal01', + [1714244884] = 'id1_30_decal02', + [-370176810] = 'id1_30_ladder', + [-1961828488] = 'id1_30_ladder001', + [1959867129] = 'id1_30_ladder002', + [446725769] = 'id1_30_ladder003', + [64966919] = 'id1_30_ladder004', + [-1372904032] = 'id1_30_ladder005', + [-1483794328] = 'id1_30_ladder006', + [1103613147] = 'id1_30_ladder007', + [1390711991] = 'id1_30_ladder01', + [1719647213] = 'id1_30_ladder02', + [-728508472] = 'id1_30_ladders', + [-1621348803] = 'id1_30_railing01', + [-1991966193] = 'id1_30_railing02', + [2072143498] = 'id1_30_railing03', + [1697790442] = 'id1_30_railing04', + [-428491661] = 'id1_30_railing05', + [-796356455] = 'id1_30_railing06', + [-1109562561] = 'id1_30_railing07', + [-1341796464] = 'id1_30_railing08', + [698401480] = 'id1_30_railing09', + [1025205921] = 'id1_30_railing10', + [172327158] = 'id1_30_railing11', + [563589018] = 'id1_30_railing12', + [-1537952498] = 'id1_30_railing13', + [1965217451] = 'id1_30_railing14', + [-2009072411] = 'id1_30_railing15', + [1443174512] = 'id1_30_railing16', + [-577230952] = 'id1_30_railing17', + [-1417919651] = 'id1_30_railing18', + [-1055428973] = 'id1_30_railing19', + [-415088448] = 'id1_30_railing20', + [1800882408] = 'id1_30_railing21', + [-1668601009] = 'id1_30_railing22', + [-1899720766] = 'id1_30_railing23', + [-1058999302] = 'id1_30_railing24', + [1141242434] = 'id1_30_railing25', + [909860525] = 'id1_30_railing26', + [1203405231] = 'id1_30_railing27', + [1119151396] = 'id1_30_rain_blockers_08', + [-1224990573] = 'id1_30_weed_02', + [96003248] = 'id1_30_wires', + [1092058422] = 'id1_31_build_01_o', + [-1125026576] = 'id1_31_build_01_p', + [-911416825] = 'id1_31_build_01_pipes_2', + [1907152126] = 'id1_31_build_01_studs', + [-612972372] = 'id1_31_build_01_studsb', + [1396808531] = 'id1_31_build_01_switch', + [76111706] = 'id1_31_build_01', + [469399485] = 'id1_31_build_02_o', + [-2114248784] = 'id1_31_build_02_pipes', + [-961998617] = 'id1_31_build_02_pipes2', + [860329267] = 'id1_31_build_02_studs', + [1334098620] = 'id1_31_build_02_studs001', + [-265795208] = 'id1_31_build_02_studs3', + [-235226563] = 'id1_31_build_02', + [391990276] = 'id1_31_build_03_o', + [-1206688901] = 'id1_31_build_03_pipes', + [1031050900] = 'id1_31_build_03_pipes2', + [-1607067983] = 'id1_31_build_03', + [-1170967707] = 'id1_31_build_04_o', + [-841235873] = 'id1_31_build_04_pipes', + [1907507153] = 'id1_31_build_04_pipesa', + [1065048932] = 'id1_31_build_04_pipesb', + [225276194] = 'id1_31_build_04', + [-2056530766] = 'id1_31_build_05_drain', + [-128669900] = 'id1_31_build_05_dtl_2', + [1581906787] = 'id1_31_build_05_dtl', + [-833829907] = 'id1_31_build_05_o', + [-1357301223] = 'id1_31_build_05_pipes', + [34401342] = 'id1_31_build_05_studs', + [-1976224977] = 'id1_31_build_05_studs2', + [-1146892916] = 'id1_31_build_05', + [-1647338097] = 'id1_31_cables_00', + [-951717765] = 'id1_31_cables_01', + [-1130308815] = 'id1_31_cables_02', + [-421285962] = 'id1_31_cables_03', + [-668626374] = 'id1_31_cables_04', + [925028411] = 'id1_31_cables_05', + [1160440907] = 'id1_31_cables_06', + [1444187678] = 'id1_31_cables_07', + [-795068354] = 'id1_31_glue', + [1003036999] = 'id1_31_ladder01', + [1754299093] = 'id1_31_ladder02', + [-98034170] = 'id1_31_ladder03', + [-1850607519] = 'id1_31_land_o', + [-658754062] = 'id1_31_land_oa', + [-1131741808] = 'id1_31_land_ob', + [-795316756] = 'id1_31_land', + [2079063743] = 'id1_31_railing01', + [-1786687933] = 'id1_31_rain_blockers_01', + [-2038878153] = 'id1_31_rain_blockers_04', + [807907482] = 'id1_31_s_post', + [-891694703] = 'id1_32_build_pipe', + [1227179692] = 'id1_32_build02_o', + [9568934] = 'id1_32_build02', + [813443862] = 'id1_32_build03_o', + [-370748140] = 'id1_32_build03', + [1444687342] = 'id1_32_build04_o', + [-1011971932] = 'id1_32_build04', + [801466234] = 'id1_32_build04graf', + [1693563549] = 'id1_32_build666_s', + [142073550] = 'id1_32_build666_s2', + [1046596245] = 'id1_32_build666_s3', + [-134012206] = 'id1_32_build666a_o', + [2052710401] = 'id1_32_build666a', + [-167982602] = 'id1_32_cables_01', + [657894497] = 'id1_32_cables_02', + [-1974156021] = 'id1_32_glue', + [-1835136921] = 'id1_32_ladder01', + [-1083743711] = 'id1_32_ladder02', + [-1665522170] = 'id1_32_land01_o', + [419705952] = 'id1_32_land01', + [764840366] = 'id1_32_props_f_slod', + [-222169547] = 'id1_32_railing01', + [-531410600] = 'id1_32_railing02', + [-392437243] = 'id1_32_railing03', + [-621984088] = 'id1_32_railing04', + [-851039398] = 'id1_32_railing05', + [-1080782857] = 'id1_32_railing06', + [-1385239664] = 'id1_32_railing07', + [-223140020] = 'id1_33_decal01', + [-1252952854] = 'id1_33_decal01b', + [15909835] = 'id1_33_decal02', + [-1654195019] = 'id1_33_decal03', + [-1731198176] = 'id1_33_firedept', + [808269188] = 'id1_33_glue01', + [1436942453] = 'id1_33_glue02', + [-1805812253] = 'id1_33_glue03', + [-1187395681] = 'id1_33_glue04', + [1418186463] = 'id1_33_ground', + [-1674041548] = 'id1_33_handy01', + [-503369023] = 'id1_33_handy02', + [-1077416365] = 'id1_33_handy03', + [221020539] = 'id1_33_hospital', + [-22143921] = 'id1_33_ladder014', + [-319129368] = 'id1_33_ladder015', + [-654815004] = 'id1_33_ladder016', + [-1223029464] = 'id1_33_ladder017', + [-1514116531] = 'id1_33_ladder018', + [-1450921105] = 'id1_33_parking', + [76136069] = 'id1_33_pole04', + [-224716784] = 'id1_33_pole11', + [76707500] = 'id1_33_railing012', + [1266689346] = 'id1_33_railing02', + [-2029970365] = 'id1_33_railing04', + [597841315] = 'id1_33_railing05', + [291156244] = 'id1_33_railing06', + [769223185] = 'id1_33_railing08', + [-152306877] = 'id1_33_railing10', + [391691292] = 'id1_33_railing12', + [-747424682] = 'id1_33_railing13', + [-258380126] = 'id1_33_railing16', + [1515438613] = 'id1_33_railing18', + [-520433027] = 'id1_33_railing21', + [-682180811] = 'id1_33_railing24', + [33297535] = 'id1_33_railing27', + [-1659352599] = 'id1_33_railing31', + [-1906201476] = 'id1_33_railing32', + [1397569112] = 'id1_33_railing33', + [1042025462] = 'id1_33_railing34', + [1894936994] = 'id1_33_railing35', + [1636356815] = 'id1_33_railing36', + [170501134] = 'id1_33_railing37', + [-182420996] = 'id1_33_railing38', + [-1508445667] = 'id1_33_railings000', + [1844874713] = 'id1_33_rooftop02', + [1007218539] = 'id1_33_rooftop02b', + [-975107287] = 'id1_33_steps01', + [-1108895253] = 'id1_33_window', + [-750890354] = 'id1_33_work00', + [-1898674611] = 'id1_34_br_rail_end', + [1900385427] = 'id1_34_br_rail', + [-1348389694] = 'id1_34_bridge_decal', + [-77564817] = 'id1_34_bridge_extras', + [-64039596] = 'id1_34_bridge', + [1462190690] = 'id1_34_glue', + [1196734578] = 'id1_34_graf', + [-339534899] = 'id1_34_ground', + [-478419511] = 'id1_34_rail_bridge', + [-110481563] = 'id1_34_rail_d', + [1941543709] = 'id1_34_rail_sp', + [-1561163666] = 'id1_34_rail', + [1881553777] = 'id1_34_railing', + [-1153896956] = 'id1_34_railing001', + [1224116609] = 'id1_34_railing002', + [1606072073] = 'id1_34_railing003', + [1838437052] = 'id1_34_railing004', + [2087710835] = 'id1_34_railing005', + [304290775] = 'id1_34_railing006', + [546420916] = 'id1_34_railing007', + [920839510] = 'id1_34_railing008', + [-987790895] = 'id1_34_railing009', + [-986808725] = 'id1_34_railing010', + [-1286284616] = 'id1_34_railing011', + [1638283100] = 'id1_34_railing012', + [1341232115] = 'id1_34_railing013', + [-78416235] = 'id1_34_railings', + [-807887997] = 'id1_34_wall1', + [2132495027] = 'id1_35_brg_decal', + [-1202065819] = 'id1_35_brg_decal2', + [1524886342] = 'id1_35_brg01', + [368108397] = 'id1_35_glue', + [1604127052] = 'id1_35_railing01', + [-1848382023] = 'id1_35_railing02', + [-2117972586] = 'id1_35_railing03', + [912832240] = 'id1_35_railing04', + [683514778] = 'id1_35_railing05', + [1518894895] = 'id1_35_railing06', + [-620789733] = 'id1_35_railing07', + [230253966] = 'id1_35_railing08', + [-3651156] = 'id1_35_railing09', + [1006945152] = 'id1_35_railing10', + [39964731] = 'id1_35_railing11', + [344355972] = 'id1_35_railing12', + [107927529] = 'id1_35_railing13', + [409631712] = 'id1_35_railing14', + [-1700888506] = 'id1_35_railing15', + [-1193231158] = 'id1_35_railing16', + [-1086699139] = 'id1_35_railing17', + [-847813129] = 'id1_35_railing18', + [-1816563076] = 'id1_35_railing19', + [2036907827] = 'id1_35_railing20', + [703995995] = 'id1_35_railing21', + [472089782] = 'id1_35_railing22', + [839528567] = 'id1_35_railing23', + [605262986] = 'id1_35_railing24', + [378304892] = 'id1_35_railing25', + [146726369] = 'id1_35_railing26', + [-169062321] = 'id1_emissive_ch3_10_em', + [-1390646886] = 'id1_emissive_ch3_10_em2', + [483711115] = 'id1_emissive_emissive2', + [75179578] = 'id1_emissive_id1_05', + [-1134663994] = 'id1_emissive_id1_051', + [-674738867] = 'id1_emissive_id1_06', + [-583778371] = 'id1_emissive_id1_062', + [-1311592501] = 'id1_emissive_id1_07_ema', + [-1154694529] = 'id1_emissive_id1_07_emb', + [-848992528] = 'id1_emissive_id1_07_emc', + [-957548905] = 'id1_emissive_id1_09a', + [-1255255270] = 'id1_emissive_id1_09b', + [-1418248276] = 'id1_emissive_id1_09c', + [-1687052383] = 'id1_emissive_id1_09d', + [-38640607] = 'id1_emissive_id1_09e', + [-336084820] = 'id1_emissive_id1_09f', + [1024891656] = 'id1_emissive_id1_10', + [1859245035] = 'id1_emissive_id1_10b', + [-1519664866] = 'id1_emissive_id1_10c', + [1377966732] = 'id1_emissive_id1_10d', + [-496573006] = 'id1_emissive_id1_13', + [-751035426] = 'id1_emissive_id1_13b', + [-251821353] = 'id1_emissive_id1_14', + [-973853491] = 'id1_emissive_id1_15', + [-743847880] = 'id1_emissive_id1_16', + [1947003673] = 'id1_emissive_id1_17a', + [1180110766] = 'id1_emissive_id1_17b', + [-690933600] = 'id1_emissive_id1_17c', + [-1472310405] = 'id1_emissive_id1_17d', + [-1152091737] = 'id1_emissive_id1_17e', + [-392802122] = 'id1_emissive_id1_18b', + [-1224839166] = 'id1_emissive_id1_18neonsign', + [1898382132] = 'id1_emissive_id1_19', + [391850635] = 'id1_emissive_id1_19b', + [-865067915] = 'id1_emissive_id1_20', + [-295065298] = 'id1_emissive_id1_20b', + [642979844] = 'id1_emissive_id1_21a', + [1168725668] = 'id1_emissive_id1_21b', + [434452318] = 'id1_emissive_id1_23', + [-1159511118] = 'id1_emissive_id1_23a', + [-1475666430] = 'id1_emissive_id1_23b', + [1030232547] = 'id1_emissive_id1_25_2', + [1706957677] = 'id1_emissive_id1_25a', + [1384051951] = 'id1_emissive_id1_25b', + [561825421] = 'id1_emissive_id1_26', + [1357555048] = 'id1_emissive_id1_27', + [1926608916] = 'id1_emissive_id1_27b', + [2065365448] = 'id1_emissive_id1_28', + [-2118891955] = 'id1_emissive_id1_29a', + [1927751783] = 'id1_emissive_id1_29b', + [1497232661] = 'id1_emissive_id1_29c', + [1973710335] = 'id1_emissive_id1_30', + [-422360185] = 'id1_emissive_id1_30b', + [1588936737] = 'id1_emissive_id1_31', + [904783451] = 'id1_emissive_id1_31b', + [-2113241453] = 'id1_emissive_id1_31c', + [1884281630] = 'id1_emissive_id1_31d', + [-1863375724] = 'id1_emissive_id1_32', + [-564873142] = 'id1_emissive_id1_32b', + [-1929700180] = 'id1_emissive_id1_33', + [-765188663] = 'id1_emissive_id1_33b', + [-1062960566] = 'id1_emissive_id1_33c', + [1371073906] = 'id1_lod_bridge_slod4', + [1831267806] = 'id1_lod_emissive', + [36498504] = 'id1_lod_id1_emissive_slod', + [2044059611] = 'id1_lod_slod4', + [-1852285529] = 'id1_lod_water_slod3', + [1704246958] = 'id1_props_combo01_01_lod', + [247733931] = 'id1_props_combo01_02_lod', + [-43352942] = 'id1_props_combo0203_01_lod', + [1685803874] = 'id1_props_combo0307_01_lod', + [894505574] = 'id1_props_combo0307_02_lod', + [-370559021] = 'id1_props_combo0307_03_lod', + [228605210] = 'id1_props_combo0502_01_lod', + [544207215] = 'id1_props_combo0901_slod', + [-1880649097] = 'id1_props_combo0905_slod', + [1432018141] = 'id1_props_combo0907_slod', + [656980177] = 'id1_props_combo1001_01_lod', + [-709603060] = 'id1_props_combo14_01_lod', + [-1555977033] = 'id1_props_combo1401_01_lod', + [1001636819] = 'id1_props_flyers01', + [1836230480] = 'id1_props_flyers02', + [-112673062] = 'id1_props_flyers03', + [-956704195] = 'id1_props_flyers04', + [362575745] = 'id1_props_flyers05', + [-497938195] = 'id1_props_flyers06', + [2064368238] = 'id1_props_flyers07', + [-1849888816] = 'id1_props_flyers08', + [-683607349] = 'id1_props_flyers09', + [356775356] = 'id1_props_flyers10', + [1339321056] = 'id1_props_flyers11', + [1101188733] = 'id1_props_flyers12', + [-75546073] = 'id1_props_flyers13', + [-1379129662] = 'id1_props_flyers14', + [-446884381] = 'id1_props_flyers15', + [387938663] = 'id1_props_flyers16', + [-1040167126] = 'id1_props_flyers17', + [1662030168] = 'id1_props_flyers18', + [-1651145131] = 'id1_props_flyers19', + [-928785077] = 'id1_rd_bboard002', + [387527450] = 'id1_rd_bboard1', + [82236108] = 'id1_rd_cable_69', + [994427057] = 'id1_rd_cable_70', + [1307895211] = 'id1_rd_cable_71', + [-90816773] = 'id1_rd_cable_72', + [2076945497] = 'id1_rd_cablemesh14652_thvy', + [-431492237] = 'id1_rd_cablemesh14669_thvy', + [1793212433] = 'id1_rd_cablemesh14877_thvy', + [835397033] = 'id1_rd_cablemesh15116_thvy', + [1418946150] = 'id1_rd_cablemesh15131_thvy', + [-1737256606] = 'id1_rd_cablemesh15444_thvy', + [295232412] = 'id1_rd_cablemesh15459_thvy', + [763577580] = 'id1_rd_cablemesh15474_thvy', + [-539423511] = 'id1_rd_cablemesh15760_thvy', + [-1759584560] = 'id1_rd_cablemesh15964_thvy', + [-922592720] = 'id1_rd_cablemesh15979_thvy', + [846373953] = 'id1_rd_cablemesh15994_thvy', + [-1797588525] = 'id1_rd_cablemesh16264_thvy', + [-933663547] = 'id1_rd_cablemesh16784_thvy', + [-2029035409] = 'id1_rd_cablemesh17741_thvy', + [784013073] = 'id1_rd_cablemesh17756_thvy', + [-103313694] = 'id1_rd_cablemesh17771_thvy', + [897022627] = 'id1_rd_cablemesh17788_thvy', + [-352940824] = 'id1_rd_cablemesh17813_thvy', + [1610429863] = 'id1_rd_cablemesh17828_thvy', + [-947049020] = 'id1_rd_cablemesh17843_thvy', + [1699533768] = 'id1_rd_cablemesh17858_thvy', + [-2016489265] = 'id1_rd_cablemesh17873_thvy', + [2110279415] = 'id1_rd_cablemesh17900_thvy', + [-1890290676] = 'id1_rd_cablemesh17915_thvy', + [1725462475] = 'id1_rd_cablemesh17930_thvy', + [299294919] = 'id1_rd_cablemesh17945_thvy', + [-1726635481] = 'id1_rd_cablemesh17960_thvy', + [1057020044] = 'id1_rd_cablemesh17975_thvy', + [692430395] = 'id1_rd_cablemesh18003_thvy', + [-1222023516] = 'id1_rd_cablemesh18018_thvy', + [268112934] = 'id1_rd_cablemesh18033_thvy', + [1874623363] = 'id1_rd_cablemesh18209_thvy', + [716940103] = 'id1_rd_cablemesh18480_thvy', + [-1885791679] = 'id1_rd_cablemesh18520_thvy', + [-1037136347] = 'id1_rd_cablemesh18535_thvy', + [-287013443] = 'id1_rd_cablemesh18550_thvy', + [-1925303859] = 'id1_rd_cablemesh18565_thvy', + [490518096] = 'id1_rd_cablemesh18618_thvy', + [1190560028] = 'id1_rd_cablemesh18633_thvy', + [1137046110] = 'id1_rd_cablemesh19154_thvy', + [261476464] = 'id1_rd_cablemesh19171_thvy', + [-1590496948] = 'id1_rd_cablemesh19186_thvy', + [1717739488] = 'id1_rd_cablemesh19283_thvy', + [-1529414666] = 'id1_rd_cablemesh19284_thvy', + [-139904276] = 'id1_rd_cablemesh19285_thvy', + [-1617787246] = 'id1_rd_cablemesh19286_thvy', + [-1328952441] = 'id1_rd_cablemesh19287_thvy', + [1109729070] = 'id1_rd_cablemesh19288_thvy', + [1662774405] = 'id1_rd_cablemesh19410_thvy', + [-77739197] = 'id1_rd_cablemesh19631_thvy', + [-1863935497] = 'id1_rd_cablemesh19933_thvy', + [-600734497] = 'id1_rd_cablemesh20124_thvy', + [-349483782] = 'id1_rd_cablemesh20157_thvy', + [1129481185] = 'id1_rd_cablemesh20172_thvy', + [547761345] = 'id1_rd_cablemesh20225_thvy', + [-1552785882] = 'id1_rd_cablemesh21092_thvy', + [716301467] = 'id1_rd_cablemesh21693_thvy', + [328870704] = 'id1_rd_cablemesh22008_thvy', + [922855536] = 'id1_rd_cablemesh22177_thvy', + [-785924833] = 'id1_rd_cablemesh22178_thvy', + [-634770529] = 'id1_rd_cablemesh22402_thvy', + [140543230] = 'id1_rd_cablemesh22606_thvy', + [751770221] = 'id1_rd_cablemesh23134_thvy', + [332092703] = 'id1_rd_cablemesh23135_thvy', + [1877157575] = 'id1_rd_cablemesh23136_thvy', + [837248032] = 'id1_rd_cablemesh23137_thvy', + [1847419154] = 'id1_rd_cablemesh23186_thvy', + [1268211172] = 'id1_rd_cablemesh23187_thvy', + [-258026478] = 'id1_rd_cablemesh23188_thvy', + [-1687860517] = 'id1_rd_cablemesh23858_thvy', + [-1724271670] = 'id1_rd_cablemesh24152_thvy', + [787156112] = 'id1_rd_cablemesh24167_thvy', + [1782365973] = 'id1_rd_cablemesh24182_thvy', + [-699559488] = 'id1_rd_cablemesh24197_thvy', + [-1837900621] = 'id1_rd_cablemesh24212_thvy', + [-1535906820] = 'id1_rd_cablemesh24227_thvy', + [-1855119395] = 'id1_rd_cablemesh37058_thvy', + [-754483904] = 'id1_rd_cablemesh45283_thvy', + [733147237] = 'id1_rd_cablemesh45314_thvy', + [2007626271] = 'id1_rd_cablemesh45375_thvy', + [-940561409] = 'id1_rd_cablemesh45761_thvy', + [-916191714] = 'id1_rd_cbl03', + [-140516715] = 'id1_rd_cbl04', + [-303444183] = 'id1_rd_cbl05', + [-1673909305] = 'id1_rd_cbl07', + [-1258922689] = 'id1_rd_cbl09', + [383586959] = 'id1_rd_cbl10', + [-519166218] = 'id1_rd_cbl11', + [-767030934] = 'id1_rd_cbl12', + [1281588639] = 'id1_rd_cbl13', + [765739041] = 'id1_rd_cbl14', + [-1689707667] = 'id1_rd_cbl15', + [-847839288] = 'id1_rd_cbl16', + [-1460914509] = 'id1_rd_cbl18', + [-604886818] = 'id1_rd_cbl20', + [-843281293] = 'id1_rd_cbl21', + [-1519174687] = 'id1_rd_cbl25', + [-551866572] = 'id1_rd_cbl26', + [-1638260997] = 'id1_rd_cbl33', + [-1997278161] = 'id1_rd_cbl34', + [2007257488] = 'id1_rd_cbl35', + [1724329942] = 'id1_rd_cbl36', + [1418103637] = 'id1_rd_cbl37', + [1113089777] = 'id1_rd_cbl38', + [768207849] = 'id1_rd_jl00', + [-1282766034] = 'id1_rd_jl04_o', + [1014602485] = 'id1_rd_jstealproxy1', + [1796765746] = 'id1_rd_jstealproxy2', + [1513401690] = 'id1_rd_r1_01_o', + [-1461728566] = 'id1_rd_r1_01', + [-1582098239] = 'id1_rd_r1_02_o', + [91587576] = 'id1_rd_r1_02', + [1274610407] = 'id1_rd_r1_03_o', + [386148117] = 'id1_rd_r1_03', + [1516351393] = 'id1_rd_r1_04_o', + [1875171477] = 'id1_rd_r1_04', + [1543602302] = 'id1_rd_r1_05_o', + [-2118747016] = 'id1_rd_r1_05', + [287603970] = 'id1_rd_r1_06_o', + [-568445622] = 'id1_rd_r1_06', + [1335772701] = 'id1_rd_r2_01_o', + [-1992783076] = 'id1_rd_r2_01', + [-885513442] = 'id1_rd_r2_02_o', + [-1685442621] = 'id1_rd_r2_02', + [1647306986] = 'id1_rd_r2_03_o', + [-1991275698] = 'id1_rd_r2_03', + [1736868142] = 'id1_rd_r2_04_o', + [-332508918] = 'id1_rd_r2_04', + [-501050395] = 'id1_rd_r3_01_o', + [-428288950] = 'id1_rd_r3_01', + [279814131] = 'id1_rd_r3_02_o', + [956725604] = 'id1_rd_r3_02', + [649126700] = 'id1_rd_r3_03_o', + [-890495695] = 'id1_rd_r3_03', + [183685554] = 'id1_rd_r3_04_o', + [-1377574127] = 'id1_rd_r3_04', + [-318889938] = 'id1_rd_r3_05_o', + [-1521688678] = 'id1_rd_r3_06_o', + [-1848628502] = 'id1_rd_r3_06', + [-854311771] = 'id1_rd_r3', + [2061687294] = 'id1_rd_r4_01_o', + [-1213268804] = 'id1_rd_r4_01', + [331655124] = 'id1_rd_r4_02_o', + [-1561275584] = 'id1_rd_r4_02', + [390868900] = 'id1_rd_r4_03_o', + [-1943853659] = 'id1_rd_r4_03', + [-1276976824] = 'id1_rd_r4_04_o', + [-2056382405] = 'id1_rd_r4_04', + [-1372568125] = 'id1_rd_r4_05_o', + [-619265169] = 'id1_rd_r4_05', + [-1332969719] = 'id1_rd_r4_07_o', + [-1097266572] = 'id1_rd_r4_07', + [-1827233401] = 'id1_rd_r4_08_o', + [-246419487] = 'id1_rd_r4_08', + [-849653920] = 'id1_rd_r4_09_o', + [639621504] = 'id1_rd_r4_09', + [2060429652] = 'id1_rd_r5_01_o', + [1669733977] = 'id1_rd_r5_01', + [-379263269] = 'id1_rd_r5_02_o', + [924829069] = 'id1_rd_r5_02', + [-1348221256] = 'id1_rd_r5_03_o', + [1357052179] = 'id1_rd_r5_03', + [-1095814538] = 'id1_rd_r5_04_o', + [470028118] = 'id1_rd_r5_04', + [-914167350] = 'id1_rd_r5_05_jun', + [-2085413222] = 'id1_rd_r5_06_o', + [-546957797] = 'id1_rd_r5_06', + [-1731775431] = 'id1_rd_r5_07_o', + [-98219111] = 'id1_rd_r5_07', + [-748273295] = 'id1_rd_r5_08_o', + [1026806193] = 'id1_rd_r5_08', + [-1803622247] = 'id1_rd_r6_01_o', + [-1737900703] = 'id1_rd_r6_01', + [-1998125932] = 'id1_rd_r6_02_o', + [1661489819] = 'id1_rd_r6_02', + [-548439141] = 'id1_rd_r6_03_o', + [-1403296444] = 'id1_rd_r6_03', + [-1513681274] = 'id1_rd_r6_04_o', + [-2049894352] = 'id1_rd_r6_04', + [1869773828] = 'id1_rd_r6_05_o', + [540265715] = 'id1_rd_r6_05', + [1153933586] = 'id1_rd_r6_06_o', + [762242921] = 'id1_rd_r6_06', + [31142121] = 'id1_rd_road_decal_', + [-265152187] = 'id1_rd_sign1_d2', + [-428335900] = 'id1_rd_sign1_slod', + [-741723506] = 'id1_rd_sign1_txt', + [1666268448] = 'id1_rd_sign1', + [1990249718] = 'id2_00_a__damfizz05', + [47782508] = 'id2_00_a__fizza_00', + [643129700] = 'id2_00_a__fizza_01', + [470240456] = 'id2_00_a__fizza_02', + [1461764802] = 'id2_00_a__fizza_03', + [228208566] = 'id2_00_a__fizza_04', + [-73036851] = 'id2_00_a__fizza_05', + [538367151] = 'id2_00_a__fizza_06', + [-1639427820] = 'id2_00_a__fizza_07', + [1417657728] = 'id2_00_a__fizza_08', + [956270208] = 'id2_00_a__fizza_09', + [-96081335] = 'id2_00_a__fizzb_00', + [-867561902] = 'id2_00_a__fizzb_01', + [-1305711048] = 'id2_00_a__fizzc_00', + [-2015454819] = 'id2_00_a__fizzc_01', + [-1786727199] = 'id2_00_a__fizzc_02', + [-350429164] = 'id2_00_a__fizzc_03', + [1334899057] = 'id2_00_a_00_weeds05', + [1061552016] = 'id2_00_a_bigdam_o', + [-975506945] = 'id2_00_a_bigdam', + [1890106847] = 'id2_00_a_build074', + [1429792943] = 'id2_00_a_build08_split', + [-1588301323] = 'id2_00_a_build08', + [-117577781] = 'id2_00_a_build08graf_b', + [130444504] = 'id2_00_a_build11_extra', + [1673263137] = 'id2_00_a_build11', + [1228129041] = 'id2_00_a_build14', + [1702413267] = 'id2_00_a_build70', + [946749412] = 'id2_00_a_cables01', + [-10990155] = 'id2_00_a_cables02', + [-222490056] = 'id2_00_a_dam_fizz01', + [983310837] = 'id2_00_a_dam_fizz02', + [-1584659465] = 'id2_00_a_damfizz03', + [-1823905934] = 'id2_00_a_damfizz04', + [-1986337481] = 'id2_00_a_damfizz04a', + [-1519019536] = 'id2_00_a_glue_02', + [-1297304482] = 'id2_00_a_glue_03', + [-1041018133] = 'id2_00_a_glue_04', + [-550007433] = 'id2_00_a_glue_05', + [-1142654] = 'id2_00_a_racemarks', + [1370733811] = 'id2_00_a_water_', + [492180939] = 'id2_00_a_water_01', + [723235158] = 'id2_00_a_water_02', + [1085856912] = 'id2_00_a_water_03', + [1319598189] = 'id2_00_a_water_04', + [-699496515] = 'id2_00_a_water_05', + [-1560209055] = 'id2_00_a_weed_01', + [773926815] = 'id2_00_a_weed_09', + [-1080536145] = 'id2_00_a_weed_10', + [-1048925918] = 'id2_00_bld02_lad', + [944853441] = 'id2_00_brokenwall_overlay', + [141220871] = 'id2_00_build01_a', + [1717164917] = 'id2_00_build01_b_shadproxy', + [-1423367791] = 'id2_00_build01_b', + [2090623912] = 'id2_00_build02_b', + [-1900405185] = 'id2_00_build02_c_fizz', + [1915899604] = 'id2_00_build02_c', + [-1265607242] = 'id2_00_build05', + [1688223187] = 'id2_00_build06', + [-1108077874] = 'id2_00_build074_a', + [-786089680] = 'id2_00_build074_b', + [411971600] = 'id2_00_build73', + [1630118687] = 'id2_00_cables01', + [2130108089] = 'id2_00_cables02', + [-101395281] = 'id2_00_cables03', + [130445394] = 'id2_00_cables04', + [660516738] = 'id2_00_cables05', + [196361947] = 'id2_00_dam_fwy', + [-1196400334] = 'id2_00_dam', + [-1343802353] = 'id2_00_damchan', + [-288170386] = 'id2_00_dummy', + [1810051778] = 'id2_00_fizza_00', + [2141280806] = 'id2_00_fizza_01', + [-1851195851] = 'id2_00_fizza_02', + [1397719427] = 'id2_00_fizza_03', + [1696867628] = 'id2_00_fizza_04', + [-1190998808] = 'id2_00_fizza_05', + [-1688956532] = 'id2_00_fizza_06', + [-1400425487] = 'id2_00_fizza_07', + [-18687833] = 'id2_00_fizza_08', + [298614394] = 'id2_00_fizza_09', + [1226976552] = 'id2_00_fizzb', + [-1925199885] = 'id2_00_fizzbc', + [848284859] = 'id2_00_glue_01', + [1467881111] = 'id2_00_glue_06', + [-1044124895] = 'id2_00_glue_07', + [-1302311846] = 'id2_00_glue_08', + [-1667096354] = 'id2_00_glue_09', + [-1480084392] = 'id2_00_glue_09b', + [-272875703] = 'id2_00_glue_11', + [-541483196] = 'id2_00_glue_12', + [-1522573343] = 'id2_00_props_duct_ed', + [-1963679944] = 'id2_00_props_duct_st', + [-6591426] = 'id2_00_stm1_cxd', + [-1167002736] = 'id2_00_storm_01_a', + [257063416] = 'id2_00_water_', + [1477484925] = 'id2_00_water_01', + [1240532286] = 'id2_00_water_02', + [1835322405] = 'id2_00_water_04', + [-1714006391] = 'id2_00_water_04b', + [842273384] = 'id2_00_water_05_b', + [1199603781] = 'id2_00_water_05', + [968025254] = 'id2_00_water_06', + [1811630394] = 'id2_00_water_07', + [1579462029] = 'id2_00_water_08', + [1527806042] = 'id2_00_water_08b', + [279515795] = 'id2_00_water_09', + [-903999178] = 'id2_00_weed_02', + [-2060974261] = 'id2_00_weed_03', + [526564286] = 'id2_00_weed_05', + [-312649804] = 'id2_00_weed_08', + [-18246851] = 'id2_01_build', + [1365582908] = 'id2_01_builddefizz', + [1050638779] = 'id2_01_detail', + [727775572] = 'id2_01_ground', + [-92190245] = 'id2_01_id1_01decal', + [2125543534] = 'id2_01_id1_01decal2', + [-848308758] = 'id2_01_id1_01decal3', + [-1444049178] = 'id2_01_id1_01decal4', + [-1216337397] = 'id2_01_id1_01decal5', + [816749422] = 'id2_01_ju007_fizz', + [129123077] = 'id2_01_ju007', + [1460845016] = 'id2_01_ju6_lod001', + [1994416] = 'id2_01_railfizz', + [-987726955] = 'id2_03_brd1', + [-476011676] = 'id2_03_brg_00', + [-767360855] = 'id2_03_brg_01', + [-1217263005] = 'id2_03_diner', + [1075097731] = 'id2_03_fence', + [-210610704] = 'id2_03_fencec', + [2104717245] = 'id2_03_fizza_00_lod', + [1327662002] = 'id2_03_fizza_00', + [-130577925] = 'id2_03_fizza_01_lod', + [-2134087931] = 'id2_03_fizza_01', + [1643675791] = 'id2_03_fizza_01a', + [-517425193] = 'id2_03_fizza_02_lod', + [-1293759687] = 'id2_03_fizza_02', + [1683402266] = 'id2_03_fizza_03', + [1842722776] = 'id2_03_fizza_04_lod', + [-1521078240] = 'id2_03_fizza_04', + [-420868437] = 'id2_03_fndtn005', + [-1599274257] = 'id2_03_ground_ovly', + [1159240663] = 'id2_03_ground_ovlya', + [331877564] = 'id2_03_railwindow_01', + [1602341549] = 'id2_03_railwindow_012', + [-98261291] = 'id2_03_tracks01', + [-208692821] = 'id2_03_tracks02', + [1206403675] = 'id2_03_tracks03', + [327770209] = 'id2_04_bld18fizz_lod', + [505233210] = 'id2_04_bld18fizz', + [1343557186] = 'id2_04_build07_det', + [1640193069] = 'id2_04_build07', + [-1314718361] = 'id2_04_build13', + [63177189] = 'id2_04_build14_fiizz', + [335594025] = 'id2_04_build14', + [-834411637] = 'id2_04_build14news', + [-1716411312] = 'id2_04_build14p', + [2119757215] = 'id2_04_build14r', + [60601532] = 'id2_04_build18_shutters', + [1828353051] = 'id2_04_build18', + [-564688685] = 'id2_04_cablemesh16718_thvy', + [1980739828] = 'id2_04_cablemesh16733_thvy', + [-1610766081] = 'id2_04_cablemesh16748_thvy', + [-1623584955] = 'id2_04_cablemesh16763_thvy', + [-705253418] = 'id2_04_cablemesh16778_thvy', + [-2134130662] = 'id2_04_cablemesh16793_thvy', + [1522196450] = 'id2_04_cablemesh30277_thvy', + [328824120] = 'id2_04_fizzb_00', + [991904835] = 'id2_04_fizzb_03', + [505776728] = 'id2_04_fizzb_05', + [-2136836358] = 'id2_04_fizze_00', + [-1038354052] = 'id2_04_fizze_02', + [-2000517430] = 'id2_04_fizze_03', + [-1788862459] = 'id2_04_fizze_04', + [-332608095] = 'id2_04_fizze_05', + [1805143158] = 'id2_04_fizze_06', + [2044389627] = 'id2_04_fizze_07', + [1592963883] = 'id2_04_fizze_08', + [-1254268993] = 'id2_04_fizze_09', + [-508840577] = 'id2_04_fizze_10', + [-1345072692] = 'id2_04_fizze_11', + [1428364396] = 'id2_04_fizze_12', + [201716862] = 'id2_04_fizzf_01', + [392976776] = 'id2_04_fizzg_01', + [-1954469360] = 'id2_04_fizzh_00', + [1505871510] = 'id2_04_fizzh_01', + [461326862] = 'id2_04_fizzh_02', + [701916860] = 'id2_04_fizzh_03', + [1862562071] = 'id2_04_fizzh_04', + [1296313751] = 'id2_04_fizzh_05', + [669203755] = 'id2_04_fizzi_01', + [-178950499] = 'id2_04_fizzj_04', + [469406585] = 'id2_04_fizzk_01', + [-1263308167] = 'id2_04_ground1_shad', + [-374079258] = 'id2_04_ground1', + [1871537952] = 'id2_04_largewalls_dets', + [-1275941573] = 'id2_04_largewalls', + [991191015] = 'id2_04_newdecal', + [-1716690767] = 'id2_04_overlaya', + [1786085954] = 'id2_04_overlayb', + [2118887918] = 'id2_04_overlayc', + [-721660086] = 'id2_04_overlayd', + [-300578424] = 'id2_04_overlayu', + [-719628396] = 'id2_04_overlayv', + [-488246487] = 'id2_04_overlayw', + [-1593905264] = 'id2_04_overlayx', + [-1925363699] = 'id2_04_overlayy', + [-999311747] = 'id2_04_overlayz', + [2034116350] = 'id2_04_rivside', + [-1574972389] = 'id2_04_shed_0003', + [1051346055] = 'id2_04_shed_fizz01_lod', + [434131422] = 'id2_04_shed_fizz01', + [-255721566] = 'id2_04_shed_fizz02', + [-626644514] = 'id2_04_weldsign01_fizz_hi', + [1277667059] = 'id2_04_weldsign02_fizz_hi', + [190458016] = 'id2_06_bub01', + [-225344512] = 'id2_06_bub02d', + [-1406953579] = 'id2_06_bufiz', + [-157905995] = 'id2_06_buov', + [344244099] = 'id2_06_buov2', + [412362776] = 'id2_06_fizza_00_lod', + [2054023963] = 'id2_06_fizza_00', + [1796361316] = 'id2_06_fizza_01', + [2102734222] = 'id2_06_fizza_02_lod', + [1189871286] = 'id2_06_fizza_03_lod', + [-812837544] = 'id2_06_fizza_04', + [-519518321] = 'id2_06_fizza_05_lod', + [2050485541] = 'id2_06_fizzb_00_lod', + [567797522] = 'id2_06_fizzb_00', + [350145824] = 'id2_06_fizzb_01', + [1125230981] = 'id2_06_fizzb_02', + [868485866] = 'id2_06_fizzb_03', + [-1673110547] = 'id2_06_fizzb_08', + [-1096900443] = 'id2_06_fizzb_09', + [1051363086] = 'id2_06_fizzc_01', + [964937229] = 'id2_06_fizzd_00', + [825374058] = 'id2_06_fizzd_01', + [585570516] = 'id2_06_fizzd_02', + [757154580] = 'id2_06_fway_legd02', + [1435568222] = 'id2_06_id2_lorrypipefizz01', + [1475909997] = 'id2_06_land_01', + [-1563896895] = 'id2_06_lsdderm2', + [-2057247574] = 'id2_07_build_03_o', + [-1849213332] = 'id2_07_build_03', + [817907423] = 'id2_07_build_69dt', + [535543207] = 'id2_07_build1_decal', + [1933269187] = 'id2_07_buildxx_01_o', + [1738436892] = 'id2_07_cablemesh19513_thvy', + [180432869] = 'id2_07_cablemesh19528_thvy', + [2034671996] = 'id2_07_cablemesh19557_thvy', + [499124134] = 'id2_07_cablemesh19558_thvy', + [32274944] = 'id2_07_cablemesh19756_thvy', + [2146259134] = 'id2_07_cablemesh19757_thvy', + [915778819] = 'id2_07_cablemesh19758_thvy', + [-1783855472] = 'id2_07_cablemesh19760_thvy', + [1931717608] = 'id2_07_cablemesh19761_thvy', + [-1981036538] = 'id2_07_cablemesh19762_thvy', + [-987331171] = 'id2_07_cablemesh19763_thvy', + [429999440] = 'id2_07_cablemesh19764_thvy', + [666367327] = 'id2_07_cablemesh19765_thvy', + [-478895327] = 'id2_07_cablemesh19766_thvy', + [-578668406] = 'id2_07_cablemesh19767_thvy', + [-1259535139] = 'id2_07_cablemesh19798_thvy', + [1960038894] = 'id2_07_cablemesh19799_thvy', + [-453211661] = 'id2_07_cablemesh19850_thvy', + [948532388] = 'id2_07_cablemesh19851_thvy', + [-275340313] = 'id2_07_cablemesh19866_thvy', + [-297351281] = 'id2_07_cablemesh19881_thvy', + [75293840] = 'id2_07_cablemesh19896_thvy', + [-381161920] = 'id2_07_cablemesh19911_thvy', + [-1131018211] = 'id2_07_fizza_00', + [-1428429655] = 'id2_07_fizza_01', + [-1676523754] = 'id2_07_fizza_02', + [441828255] = 'id2_07_fizza_03', + [409583559] = 'id2_07_fizza_04', + [-1240954488] = 'id2_07_fizzb_01', + [-2100020581] = 'id2_07_fizzc_00', + [-1359441177] = 'id2_07_fizzc_01', + [-527600112] = 'id2_07_fizzc_02', + [-1496644833] = 'id2_07_fizze_00', + [-646879125] = 'id2_07_fizze_01', + [1481203852] = 'id2_07_fizzg_00', + [1778910217] = 'id2_07_fizzg_01', + [2094475687] = 'id2_07_fizzg_02', + [-1855171887] = 'id2_07_fizzg_03', + [-835826366] = 'id2_07_fizzk_00', + [-596317745] = 'id2_07_fizzk_01', + [-372112247] = 'id2_07_fizzk_02', + [-116415740] = 'id2_07_fizzk_03', + [-452495189] = 'id2_07_fizzm_02', + [366905749] = 'id2_07_gar1_a', + [590586943] = 'id2_07_gar1_b', + [1011373672] = 'id2_07_gar1_c', + [-2001202822] = 'id2_07_ground', + [-266146614] = 'id2_07_ladder01', + [-554612121] = 'id2_07_ladder02', + [76518823] = 'id2_07_ladder03', + [889026178] = 'id2_07_ladder04', + [596956081] = 'id2_07_ladder05', + [1491549781] = 'id2_07_ladder06', + [-1480013337] = 'id2_07_land_02_decal_a', + [-1785879183] = 'id2_07_land_02_decal_b', + [-323403543] = 'id2_07_land_02_o2', + [781432037] = 'id2_07_pylon', + [1496370154] = 'id2_07_rfx00', + [1793552215] = 'id2_07_rfx01', + [842169842] = 'id2_07_rfx02', + [1799492624] = 'id2_07gutterfizz', + [908478197] = 'id2_07gutterfizz2', + [2092913710] = 'id2_07gutterfizz3', + [446861294] = 'id2_07gutterfizz4', + [186085592] = 'id2_07gutterfizz5', + [1678350061] = 'id2_08_tarmack_01', + [1627637554] = 'id2_09_land01', + [-1483221927] = 'id2_09_land02', + [-1755132483] = 'id2_10_alley_2', + [810017768] = 'id2_10_buildings_o', + [-389220576] = 'id2_10_buildings', + [-1731028741] = 'id2_10_buildings2_o', + [-1676074334] = 'id2_10_buildings3_o', + [-113571853] = 'id2_10_buildings4_o', + [-283317570] = 'id2_10_buildings5_o', + [1255884257] = 'id2_10_fiizz_03', + [1928108723] = 'id2_10_fizz', + [-1218287832] = 'id2_10_fizz02', + [917220152] = 'id2_10_ground3', + [-393531262] = 'id2_10_ground3av', + [-1913102526] = 'id2_10_park', + [-1707464106] = 'id2_10_rampnew', + [-1185625865] = 'id2_11_ads', + [1365060819] = 'id2_11_ads2', + [-1137188446] = 'id2_11_build_06d', + [1894292894] = 'id2_11_build_69_o', + [917837371] = 'id2_11_build_69a_o', + [864599785] = 'id2_11_build_69b_o', + [1129853894] = 'id2_11_build_69c_o', + [129875011] = 'id2_11_build_a', + [-1187146412] = 'id2_11_build_a2', + [-712943673] = 'id2_11_build_b', + [-1428327508] = 'id2_11_build_b2fizz', + [-738564782] = 'id2_11_build_bfizz', + [920028812] = 'id2_11_cablemesh16136_thvy', + [920332992] = 'id2_11_cablemesh16151_thvy', + [-1641618142] = 'id2_11_cablemesh16166_thvy', + [644589991] = 'id2_11_cablemesh16181_thvy', + [621221235] = 'id2_11_cablemesh16196_thvy', + [-2041442979] = 'id2_11_cablemesh16211_thvy', + [897176059] = 'id2_11_cablemesh16226_thvy', + [-1042585973] = 'id2_11_cablemesh16241_thvy', + [-1535328327] = 'id2_11_fizza_00', + [623984868] = 'id2_11_fizza_02', + [383755329] = 'id2_11_fizza_03', + [-880407093] = 'id2_11_fizza_04', + [-675695597] = 'id2_11_fizzb_01', + [828792501] = 'id2_11_fizzc_01', + [-1966206049] = 'id2_11_fizzc_01a', + [-1470977035] = 'id2_11_fizzf_01', + [51284173] = 'id2_11_fizzg_01', + [775691853] = 'id2_11_ground', + [-1091626460] = 'id2_11_ladder01', + [-687507035] = 'id2_11_pipes', + [-1768997069] = 'id2_11_rladder_010', + [1749955833] = 'id2_11_ssrail_fizz01', + [1377044613] = 'id2_11_ssrail_fizz02', + [477011327] = 'id2_11_ssrail_fizz03', + [1252358636] = 'id2_11_ssrail_fizz04', + [825554869] = 'id2_11_wall', + [1526002007] = 'id2_11_wall01', + [-729099894] = 'id2_12_b09_fizz', + [-1474756433] = 'id2_12_b1_fizz01', + [-1714592744] = 'id2_12_b1_fizz02', + [-2021245046] = 'id2_12_b1_fizz03', + [1903235936] = 'id2_12_b1_fizz04', + [-318961030] = 'id2_12_b1_fizz05', + [1042285609] = 'id2_12_build_01_o', + [-979737752] = 'id2_12_build_01_ob', + [233927701] = 'id2_12_build_01_oc', + [-1599170159] = 'id2_12_build_01_od', + [1516997896] = 'id2_12_build_01_oe', + [-1545664310] = 'id2_12_build_01', + [-329573951] = 'id2_12_build_02', + [-875785789] = 'id2_12_build_069', + [563370406] = 'id2_12_cablemesh105192_thvy', + [-1417016277] = 'id2_12_cablemesh105207_thvy', + [478164206] = 'id2_12_cablemesh105222_thvy', + [2006881350] = 'id2_12_cablemesh105237_thvy', + [-188390175] = 'id2_12_cablemesh105252_thvy', + [-1573735112] = 'id2_12_cablemesh105267_thvy', + [1251307368] = 'id2_12_cablemesh105282_thvy', + [1461905125] = 'id2_12_cablemesh105297_thvy', + [-1179691856] = 'id2_12_cablemesh105312_thvy', + [-309997273] = 'id2_12_cablemesh105327_thvy', + [-868784242] = 'id2_12_ground_01', + [-992586325] = 'id2_12_railgravel', + [-791858021] = 'id2_12_shadowmesh_11', + [2004652477] = 'id2_12_walls_01', + [1872347165] = 'id2_13_build12b', + [-125912779] = 'id2_13_build16_piped', + [1164849314] = 'id2_13_build16', + [1542020504] = 'id2_13_build19', + [1175938659] = 'id2_13_cablemesh9153_thvy', + [402535000] = 'id2_13_cablemesh9168_thvy', + [419283968] = 'id2_13_cablemesh9183_thvy', + [1510306157] = 'id2_13_cablemesh9198_thvy', + [-970806935] = 'id2_13_cablemesh9213_thvy', + [1105650504] = 'id2_13_cablemesh9228_thvy', + [-73648107] = 'id2_13_cablemesh9289_thvy', + [1989813145] = 'id2_13_cablemesh9290_thvy', + [179605313] = 'id2_13_cablemesh9291_thvy', + [-50972437] = 'id2_13_east_o', + [-808840370] = 'id2_13_fizza_01', + [-1847879442] = 'id2_13_fizzb_01', + [-577063013] = 'id2_13_fizzc_01_lod', + [706736103] = 'id2_13_fizzc_01', + [-256414962] = 'id2_13_fizze_001', + [967344494] = 'id2_13_fizzf_01', + [-466071362] = 'id2_13_fizzg_001', + [-1414861557] = 'id2_13_fizzh_00', + [1045140038] = 'id2_13_fizzh_02', + [1656052505] = 'id2_13_fizzh_04', + [1696525350] = 'id2_13_fizzi_00', + [1421101917] = 'id2_13_fizzi_01', + [1634624721] = 'id2_13_fizzi_02', + [1891959670] = 'id2_13_fizzi_03', + [-1627103244] = 'id2_13_fizzi_04', + [-1607705229] = 'id2_13_fizzj_00', + [-1326842130] = 'id2_13_fizzj_01', + [598140006] = 'id2_13_fizzj_02', + [-161707566] = 'id2_13_fizzj_03', + [-2013141868] = 'id2_13_fizzk_0100', + [441911616] = 'id2_13_fizzk_0101', + [1027328224] = 'id2_13_fizzletters_01', + [-1727573294] = 'id2_13_fizzm_00', + [-1276737392] = 'id2_13_fizzm_01', + [1482281508] = 'id2_13_gas_02_fizz', + [958395867] = 'id2_13_gas_02', + [135423744] = 'id2_13_gas_fizz_lod', + [1230881350] = 'id2_13_gas_fizz', + [-1376678347] = 'id2_13_gasgate_02', + [696228748] = 'id2_13_gatealpha_01', + [946191246] = 'id2_13_ground_3', + [-521601317] = 'id2_13_ground', + [-936623892] = 'id2_13_lader_m03', + [889101988] = 'id2_13_west_o', + [236911289] = 'id2_13_westa_o', + [-1798698973] = 'id2_13_westb_o', + [-1801792825] = 'id2_14_ads', + [-685831317] = 'id2_14_brg_ov_a', + [-1330255283] = 'id2_14_brga', + [227845133] = 'id2_14_brgb', + [-109108015] = 'id2_14_building_milodummy2', + [-278576219] = 'id2_14_building_ov', + [-952304603] = 'id2_14_building_ova', + [-1241622104] = 'id2_14_building_ovb', + [-1563872450] = 'id2_14_building_ovc', + [183398198] = 'id2_14_building', + [980687386] = 'id2_14_building2', + [523630986] = 'id2_14_building2fizz', + [-449378221] = 'id2_14_cablemesh', + [709942266] = 'id2_14_dbrosburnt', + [-130439724] = 'id2_14_dbrosburnt002', + [-1851150799] = 'id2_14_fx_helper01', + [-177441355] = 'id2_14_fx_helper02', + [1493122261] = 'id2_14_fx_helper03', + [-1669610543] = 'id2_14_fx_helper04', + [-1919383046] = 'id2_14_ground', + [-1768340881] = 'id2_14_groundov', + [-273228648] = 'id2_14_groundova', + [497072235] = 'id2_14_groundovb', + [-1017314331] = 'id2_14_groundovc', + [18579297] = 'id2_14_groundovd', + [1856658045] = 'id2_14_groundovl', + [1359817668] = 'id2_14_ladder_001', + [1188566874] = 'id2_14_ladder_002', + [-1238253155] = 'id2_14_ladder03', + [1657739949] = 'id2_14_ladder04', + [-2000066219] = 'id2_14_milodummy_lod', + [574449434] = 'id2_14_milodummy_lod001', + [-1205748890] = 'id2_14_milodummy', + [-1442009415] = 'id2_14_ov_hiprio', + [-574925030] = 'id2_14_predoor_lod', + [-1129531382] = 'id2_14_predoor', + [-671638894] = 'id2_14_sweat_empty_lod', + [-1963153239] = 'id2_14_sweat_lod', + [2094624750] = 'id2_15_bld_01_o', + [128072461] = 'id2_15_bld_01', + [-963011644] = 'id2_15_bld_02_o', + [1021617557] = 'id2_15_bld_02', + [1112350281] = 'id2_15_bld_03_o', + [723386888] = 'id2_15_bld_03', + [-71605075] = 'id2_15_bld_04_o', + [-1636308806] = 'id2_15_bld_04', + [-1273867623] = 'id2_15_cablemesh15107_thvy', + [1007539907] = 'id2_15_cablemesh15145_thvy', + [-182724898] = 'id2_15_cablemesh15174_thvy', + [111401484] = 'id2_15_cablemesh15189_thvy', + [197082890] = 'id2_15_cablemesh48288_thvy', + [-1433325498] = 'id2_15_cablemesh48313_thvy', + [851621249] = 'id2_15_cablemesh48336_thvy', + [994082210] = 'id2_15_cablemesh48365_thvy', + [-449290594] = 'id2_15_cablemesh48381_thvy', + [507207768] = 'id2_15_cablemesh48396_thvy', + [1565336210] = 'id2_15_cablemesh48411_thvy', + [1086908882] = 'id2_15_cablemesh48441_thvy', + [1391193179] = 'id2_15_cablemesh48459_thvy', + [-1006337342] = 'id2_15_cablemesh48492_thvy', + [749846250] = 'id2_15_cablemesh48508_thvy', + [-6684462] = 'id2_15_cablemesh48529_thvy', + [-1021729835] = 'id2_15_cablemesh48562_thvy', + [373810776] = 'id2_15_cablemesh48579_thvy', + [1743117602] = 'id2_15_cablemesh48596_thvy', + [-471589886] = 'id2_15_cablemesh48613_thvy', + [625929935] = 'id2_15_cablemesh48630_thvy', + [4696441] = 'id2_15_cablemesh48647_thvy', + [-1268999467] = 'id2_15_cablemesh48664_thvy', + [-1846514865] = 'id2_15_cablemesh48681_thvy', + [-1653126268] = 'id2_15_fizza_00', + [-1354109143] = 'id2_15_fizza_01', + [-511913070] = 'id2_15_fizza_02', + [-211060881] = 'id2_15_fizza_03', + [-987227415] = 'id2_15_fizza_04', + [-689062284] = 'id2_15_fizza_05', + [1326542601] = 'id2_15_fizzb_00', + [1559235266] = 'id2_15_fizzb_01', + [529567752] = 'id2_15_fizzb_02', + [1046531496] = 'id2_15_fizzb_03', + [87939939] = 'id2_15_fizzb_04', + [301003977] = 'id2_15_fizzb_05', + [-496364100] = 'id2_15_fizzb_06', + [-218777901] = 'id2_15_fizzb_07', + [-974562121] = 'id2_15_fizzb_08', + [-731907676] = 'id2_15_fizzb_09', + [2077924403] = 'id2_15_fizzc_01', + [-987254497] = 'id2_15_fizzd_00', + [-680700502] = 'id2_15_fizzd_01', + [-1192751042] = 'id2_15_gnd_01_o', + [-251485370] = 'id2_15_gnd_01', + [-1009507971] = 'id2_15_gnd_01a_o', + [-1339176127] = 'id2_15_gnd_01b_o', + [1046663019] = 'id2_15_gnd_01c_o', + [95656377] = 'id2_15_lad_005', + [834531789] = 'id2_15_lad_006', + [658955487] = 'id2_15_lad_007', + [-1410342153] = 'id2_15_lad_01', + [-460270536] = 'id2_15_lad_02', + [-1761789678] = 'id2_15_lad_03', + [-813094359] = 'id2_15_lad_04', + [254924478] = 'id2_16_b2_decal', + [177603379] = 'id2_16_b3', + [-1137542996] = 'id2_16_base_01', + [1262038387] = 'id2_16_build2_grafreewy', + [183930131] = 'id2_16_build2', + [-214177898] = 'id2_16_build2b', + [1690499810] = 'id2_16_build2glue', + [507845905] = 'id2_16_decal_01', + [1751378116] = 'id2_16_decal_01a', + [1013705790] = 'id2_16_fizz01_hi', + [-1759014889] = 'id2_16_fizz02_hi', + [-1413643920] = 'id2_16_fizz03_hi', + [-2033783791] = 'id2_16_fizz04_hi', + [1512915263] = 'id2_16_fizz05_hi', + [-1230622739] = 'id2_16_fizz06_hi', + [1766618706] = 'id2_16_land_002', + [1528438261] = 'id2_16_land_02', + [2092461031] = 'id2_16_post_glue001', + [-2081890035] = 'id2_16_wiremesh9192_tstd', + [1069139311] = 'id2_18_brail041', + [1102926957] = 'id2_18_bu04afizz', + [-1989955530] = 'id2_18_build004', + [1402339540] = 'id2_18_build004d', + [-1545257763] = 'id2_18_build004fizz', + [1204372287] = 'id2_18_build01_ov', + [1822007866] = 'id2_18_build01a_ov', + [1229874491] = 'id2_18_build01b_ov', + [1827269031] = 'id2_18_build01c_ov', + [-558253250] = 'id2_18_build01d_ov', + [-1317122137] = 'id2_18_build01e_ov', + [1645685042] = 'id2_18_build02', + [2085096580] = 'id2_18_build03_dt', + [1150316093] = 'id2_18_build03', + [-145745247] = 'id2_18_build03d', + [2112465486] = 'id2_18_build03d1', + [-1876406581] = 'id2_18_build03d2', + [1750859571] = 'id2_18_build03d3', + [-1158411408] = 'id2_18_build03detail', + [1947959833] = 'id2_18_cablemesh75586_thvy', + [1019659731] = 'id2_18_decnew', + [519794762] = 'id2_18_decnew2', + [548139134] = 'id2_18_fizza', + [1064185342] = 'id2_18_fizzb', + [1294780795] = 'id2_18_fizzc', + [1547134864] = 'id2_18_fizzd', + [-405700918] = 'id2_18_fizze', + [-596482355] = 'id2_18_id2_20shadow', + [1221875313] = 'id2_18_id2_frame_fizz01', + [1913729058] = 'id2_18_id2_railrainhatsc', + [-1889421304] = 'id2_18_land_02a', + [873890163] = 'id2_18_land_02b', + [-739418370] = 'id2_18_nladder_02', + [-854382207] = 'id2_18_pipe02', + [-386539194] = 'id2_18_pipe04', + [-1732230944] = 'id2_18_pipe06', + [47418615] = 'id2_18_pipe06a', + [-55939669] = 'id2_18_pipfizz01', + [-438353899] = 'id2_18_pipfizz02', + [230930784] = 'id2_18_pulley_fizz', + [96873953] = 'id2_18_rladder_01_lod', + [830643908] = 'id2_18_rladder_01', + [-2146905529] = 'id2_18_rladder_010', + [1539896144] = 'id2_18_rladder_02', + [-1727385839] = 'id2_18_rladder_03_lod', + [1308645311] = 'id2_18_rladder_03', + [-511836492] = 'id2_18_rladder_05', + [-875572392] = 'id2_18_rladder_06', + [-199842955] = 'id2_18_rladder_08', + [-369914065] = 'id2_18_rladder_09', + [-50685960] = 'id2_18_rladdr_002', + [170996325] = 'id2_18_rladdr_003', + [641345959] = 'id2_18_rladdr_01', + [358400760] = 'id2_18_roofover_det002', + [-2032743360] = 'id2_18_roofover002', + [-794217287] = 'id2_18_telegraph_wires', + [705635042] = 'id2_18flyers_01', + [-578052446] = 'id2_18lad_fizz005', + [1891244008] = 'id2_18lad_fizz01', + [-385665903] = 'id2_18lad_fizz01b', + [1678474887] = 'id2_18lad_fizz03', + [-2002095955] = 'id2_18lad_fizz03a', + [-1807368245] = 'id2_18lad_fizz03a001', + [1372445196] = 'id2_18lad_fizz04', + [-847058684] = 'id2_19_cablemesh30618_thvy', + [504519339] = 'id2_19_diner_decal', + [-1851912798] = 'id2_19_diner', + [-2036617743] = 'id2_19_fizza_00', + [-1576639290] = 'id2_19_fizza_02', + [-1927658462] = 'id2_19_graffiti', + [-1145662294] = 'id2_19_graflarge01', + [-839075530] = 'id2_19_graflarge02', + [180287672] = 'id2_19_ground2_decal', + [-1389099284] = 'id2_19_ground2', + [-956810636] = 'id2_19_ground3', + [-1090672990] = 'id2_19_id2_biilboard', + [-1150521956] = 'id2_19_ottoshop_b1', + [-1539590580] = 'id2_19_under01_d', + [-419305127] = 'id2_19_under01', + [527247543] = 'id2_19_under01b_d', + [943493746] = 'id2_19_under01b', + [1183624978] = 'id2_19_under01c', + [-1365915266] = 'id2_20_bri01_dec', + [1544362115] = 'id2_20_bri01', + [1914722565] = 'id2_20_britdec01', + [65204751] = 'id2_20_building01_d', + [291403838] = 'id2_20_building01', + [2022792470] = 'id2_20_det_01', + [1465945284] = 'id2_20_glue', + [107577353] = 'id2_20_ladder01', + [-35986598] = 'id2_20_land_02', + [-496385772] = 'id2_20_pillars_01', + [731345498] = 'id2_20_railfizz03', + [-710595688] = 'id2_20braketfizz01', + [1470155252] = 'id2_21_a_bridge_ovly', + [-1936705752] = 'id2_21_a_bridgebase_ovly', + [1058060635] = 'id2_21_a_bridgemain', + [19344379] = 'id2_21_a_bridgemnte', + [1908968756] = 'id2_21_a_bridgemntw', + [1524456257] = 'id2_21_a_bridgemntwrails', + [745487206] = 'id2_21_a_bridgemntwrailsb2', + [1916225273] = 'id2_21_a_bridgemntwrailsba', + [2127355940] = 'id2_21_a_bridgemntwrailsbb', + [-1223616334] = 'id2_21_a_bridgeside', + [-971139881] = 'id2_21_a_end_ovly', + [791374243] = 'id2_21_a_fenceafizz_hi', + [289002701] = 'id2_21_a_fenceafizzb_hi', + [-194455841] = 'id2_21_a_fencebfizz_hi', + [-356014614] = 'id2_21_a_fencebfizzb_hi', + [1035193760] = 'id2_21_a_fencecfizz_hi', + [-1441732950] = 'id2_21_a_fencecfizzb_hi', + [493386017] = 'id2_21_a_fencedfizz_hi', + [-1679756994] = 'id2_21_a_fencedfizzb_hi', + [-153865858] = 'id2_21_a_fizzyrails_002', + [-461042464] = 'id2_21_a_fizzyrails_003', + [-624330391] = 'id2_21_a_fizzyrails_004', + [-922266139] = 'id2_21_a_fizzyrails_005', + [-2127935956] = 'id2_21_a_fizzyrails_006', + [1564732350] = 'id2_21_a_id2light', + [389511367] = 'id2_21_a_id2light001', + [-387671006] = 'id2_21_a_id2light002', + [-1666710614] = 'id2_21_a_id2light003', + [-1370052857] = 'id2_21_a_id2light004', + [1343941265] = 'id2_21_a_id2light005', + [569118260] = 'id2_21_a_id2light006', + [-106938983] = 'id2_21_a_id2light007', + [1127796941] = 'id2_21_a_id2light008', + [1772133788] = 'id2_21_a_id2light009', + [-1496671429] = 'id2_21_a_id2light010', + [-1807321553] = 'id2_21_a_id2light011', + [-2013831791] = 'id2_21_a_id2light012', + [-575239918] = 'id2_21_a_id2light013', + [-1184120707] = 'id2_21_a_id2light015', + [-1319330447] = 'id2_21_a_ladders_002', + [-618729227] = 'id2_21_a_ladders_003', + [861741380] = 'id2_21_a_ladders_004', + [631211465] = 'id2_21_a_ladders_005', + [-1762826141] = 'id2_21_a_ladders_006', + [233127191] = 'id2_21_a_ladders_01', + [-1261900418] = 'id2_21_a_maint_ovly', + [1361738191] = 'id2_21_a_maintw_ovly', + [758868265] = 'id2_21_a_plots10-12_ovly', + [1481215982] = 'id2_21_a_plots1-3', + [-203038946] = 'id2_21_a_plots4-6_ovly', + [1046354802] = 'id2_21_a_plots4-6', + [-1937835467] = 'id2_21_a_plots7-12_ovly', + [634518709] = 'id2_21_a_plots7-9', + [623199792] = 'id2_21_a_shadowblocker01', + [-1442820120] = 'id2_21_a_shadowblocker02', + [-1152486780] = 'id2_21_a_shadowblocker03', + [-1972072239] = 'id2_21_a_shadowblocker04', + [-1672924038] = 'id2_21_a_shadowblocker05', + [1300552371] = 'id2_21_a_shadowproxy', + [1447628259] = 'id2_21_a_stairway_railings', + [-553032759] = 'id2_21_a_terrain', + [1161614545] = 'id2_21_a_terrain03', + [1157397822] = 'id2_21_a_terrainground1', + [-64918651] = 'id2_21_a_terrainground2', + [-1631557728] = 'id2_21_a_tnlsec_04', + [1983107919] = 'id2_21_a_tnlsec', + [88659787] = 'id2_21_a_tunn_ovly', + [720031242] = 'id2_21_a_tunnel0l_05a', + [1808586526] = 'id2_21_a_tunnelol_01', + [-859289006] = 'id2_21_a_tunnelol_01b', + [926248432] = 'id2_21_a_tunnelol_02', + [1198591591] = 'id2_21_a_tunnelol_03', + [-595629056] = 'id2_21_a_tunnelol_03b', + [307405867] = 'id2_21_a_tunnelol_04', + [-619224728] = 'id2_21_a_tunnelol_04b', + [552681832] = 'id2_21_a_tunnelol_05', + [-265429022] = 'id2_21_a_tunnelol_06', + [-59541395] = 'id2_21_a_tunnelol_07', + [-212189400] = 'id2_21_a_tunnelsh1', + [-577760364] = 'id2_21_a_tunnelsh2', + [1272606759] = 'id2_21_a_tunnelsh3', + [937642041] = 'id2_21_a_tunnelsh4', + [706063518] = 'id2_21_a_tunnelsh5', + [1577787381] = 'id2_21_a_tunnelstuff1', + [775143495] = 'id2_21_a_tunnelstuff2', + [2035799694] = 'id2_21_a_tunnelstuff3', + [-1950221470] = 'id2_21_a_tunnelstuff4', + [-1568364313] = 'id2_21_a_tunnelstuff5', + [-1258791029] = 'id2_21_b_billboard01_hi', + [300329497] = 'id2_21_b_billboard02_hi', + [-602166605] = 'id2_21_b_build01', + [-1988360847] = 'id2_21_b_build02', + [1819580081] = 'id2_21_b_details', + [540239505] = 'id2_21_b_emissivedummy_hi', + [-677787513] = 'id2_21_b_fizz01_hi', + [235196539] = 'id2_21_b_gnd01', + [1188610594] = 'id2_21_b_gnd02', + [373209791] = 'id2_21_b_grnddetail', + [1375097670] = 'id2_21_b_grnddetailb', + [-287303809] = 'id2_21_b_id2_21b_ladder_m3', + [2064485086] = 'id2_21_b_wires', + [253121969] = 'id2_21_billboard_hi', + [-920687201] = 'id2_21_builda_fizz01', + [1292271698] = 'id2_21_builda', + [2069900442] = 'id2_21_buildb_night_slod', + [1912613320] = 'id2_21_buildb_night', + [-207237742] = 'id2_21_buildb', + [2131746198] = 'id2_21_c_builda', + [654121158] = 'id2_21_c_buildb1', + [2133860329] = 'id2_21_c_buildb1rails', + [953662587] = 'id2_21_c_buildb2', + [-497688203] = 'id2_21_c_buildb2rails', + [1043405007] = 'id2_21_c_buildb2rails1_lod', + [883929867] = 'id2_21_c_buildc1', + [-1338747425] = 'id2_21_c_buildc1rails', + [705306048] = 'id2_21_c_buildc2', + [-123333546] = 'id2_21_c_buildc2rails', + [-1373907803] = 'id2_21_c_decala', + [-1094456794] = 'id2_21_c_decalb1', + [-1967554030] = 'id2_21_c_decalb2', + [-1661131111] = 'id2_21_c_decalb3', + [1926617799] = 'id2_21_c_decalb3a', + [-1456521799] = 'id2_21_c_decalc1', + [-225521549] = 'id2_21_c_decalc2', + [80508142] = 'id2_21_c_decalc3', + [349679226] = 'id2_21_c_decalc3a', + [1322303541] = 'id2_21_c_gluea', + [-98552252] = 'id2_21_c_gluea2', + [-2128632622] = 'id2_21_c_glueb', + [1246320073] = 'id2_21_c_glueb2', + [-1812928233] = 'id2_21_c_glueb3', + [584249920] = 'id2_21_c_grnda', + [-183167291] = 'id2_21_c_grndb', + [-834483935] = 'id2_21_c_grndc', + [-1541447685] = 'id2_21_c_hedgetop03', + [-390436556] = 'id2_21_c_hedgetop04', + [2105512636] = 'id2_21_c_hedgetop05', + [133078192] = 'id2_21_c_hedgetop2', + [1689441835] = 'id2_21_c_hedgetops', + [-1617516662] = 'id2_21_c_id2_21c_billboardad', + [-1309426253] = 'id2_21_c_id2_21c_ladder_01', + [1263857779] = 'id2_21_c_id2_21c_ladder_02', + [-1758185354] = 'id2_21_c_uvanim002', + [1241096351] = 'id2_21_c_uvanim01', + [1757531596] = 'id2_21_c_weed', + [-874274211] = 'id2_21_d_decals_a2', + [-576249891] = 'id2_21_d_decals_b_1', + [191167320] = 'id2_21_d_decals_b_2', + [1643646085] = 'id2_21_d_decals_c', + [389826809] = 'id2_21_d_decals_ca', + [-1286256402] = 'id2_21_d_hedgecutouta', + [-372656682] = 'id2_21_d_hedgecutoutb', + [-643442422] = 'id2_21_d_mesh_a', + [-429591928] = 'id2_21_d_mesh_b', + [1698459697] = 'id2_21_d_mesh_c', + [-2043044333] = 'id2_21_e_boathouse', + [-2026563303] = 'id2_21_e_boathousedecals', + [-597568856] = 'id2_21_e_boathouserails', + [1310911052] = 'id2_21_e_bridge_hi', + [799096124] = 'id2_21_e_bridgerails', + [-2054545655] = 'id2_21_e_newparka', + [521556519] = 'id2_21_e_newparkb', + [-1098361848] = 'id2_21_e_parkrailings', + [-707655592] = 'id2_21_e_propsa', + [-74296360] = 'id2_21_e_propsb', + [858639752] = 'id2_21_e_reflectproxy_hd', + [-274546278] = 'id2_21_e_reflectproxy_slod', + [1834311242] = 'id2_21_e_treedecal', + [1487632903] = 'id2_21_e_water', + [-810341147] = 'id2_21_f_alley_decala', + [-1576677037] = 'id2_21_f_alley_decalb', + [-24759314] = 'id2_21_f_hedgeb', + [232843674] = 'id2_21_f_railings', + [881281769] = 'id2_21_f_res_decal001', + [-1630265887] = 'id2_21_f_res_decal3', + [2108830257] = 'id2_21_f_res_ground', + [-941366508] = 'id2_21_f_res_ground3', + [-783320598] = 'id2_21_g_a_hedgetops00', + [-1223408268] = 'id2_21_g_a_hedgetops01', + [-2107778008] = 'id2_21_g_a_hedgetops02', + [-1925975596] = 'id2_21_g_a_hedgetops03', + [1459750257] = 'id2_21_g_a_hedgetops04', + [1141845619] = 'id2_21_g_blend_decal01', + [2060090820] = 'id2_21_g_culdesac_grnd', + [1500788111] = 'id2_21_g_flagfizz4_lod', + [750811590] = 'id2_21_g_id2_21g_flagfizz1_lod', + [-862509569] = 'id2_21_g_id2_21g_flagfizz1', + [-1681344458] = 'id2_21_g_id2_21g_flagfizz2_lod', + [-529379911] = 'id2_21_g_id2_21g_flagfizz2', + [68596801] = 'id2_21_g_id2_21g_flagfizz3_lod', + [36802875] = 'id2_21_g_id2_21g_flagfizz3', + [854356656] = 'id2_21_g_id2_21g_flagfizz4', + [-1261173749] = 'id2_21_g_land3_blend', + [-1540681668] = 'id2_21_g_res_2_grnd', + [542227169] = 'id2_21_g_timberfzz01', + [-380321993] = 'id2_21_g_timberfzz01a', + [311828330] = 'id2_21_g_timberfzz02', + [-610097941] = 'id2_21_g_timberfzz02a', + [-857929888] = 'id2_21_g_timberfzz02b', + [-839694464] = 'id2_21_g_woodframes', + [-997059739] = 'id2_21_g_woodframesb', + [-1744061863] = 'id2_21_g_woodframesc', + [-657626948] = 'id2_21_grndbdecals', + [-1931198776] = 'id2_21_grndenddecals', + [-1104535560] = 'id2_21_ladders_003', + [-310706531] = 'id2_21_ladders_004', + [-1153361366] = 'id2_21_ladders_005', + [-1859402248] = 'id2_21_ladders_006', + [300878346] = 'id2_21_ladders_01', + [-1147275071] = 'id2_21_resdecalsa', + [-830955914] = 'id2_21_resdecalsb', + [-667766294] = 'id2_21_resdecalsc', + [-1040932831] = 'id2_21_resgrnda', + [-1781479470] = 'id2_21_resgrndb', + [-1497437778] = 'id2_21_resgrndc', + [-468841012] = 'id2_21_terr_end', + [1847484926] = 'id2_21_terraina', + [1540373858] = 'id2_21_terrainb', + [-1393164033] = 'id2_21_wires', + [-108950953] = 'id2_emissive__slod', + [400022158] = 'id2_emissive_01', + [993698127] = 'id2_emissive_07', + [-770608600] = 'id2_emissive_07b_lod', + [1093410582] = 'id2_emissive_07b', + [1071032367] = 'id2_emissive_16', + [-1847763855] = 'id2_emissive_21_a_11', + [1995062468] = 'id2_emissive_21_c_01', + [1094373730] = 'id2_emissive_21_c_04', + [-91765763] = 'id2_emissive_21_c_07', + [-130629797] = 'id2_emissive_21_c_08', + [579137976] = 'id2_emissive_id2_01', + [1775767745] = 'id2_emissive_id2_04_01', + [-2011673279] = 'id2_emissive_id2_04_02', + [-1722552388] = 'id2_emissive_id2_04_03', + [-2022355969] = 'id2_emissive_id2_04_04', + [1385086217] = 'id2_emissive_id2_04_04b', + [-1909438275] = 'id2_emissive_id2_06', + [885033946] = 'id2_emissive_id2_10_lod', + [1542706645] = 'id2_emissive_id2_10', + [-2105086012] = 'id2_emissive_id2_11_01', + [1346702145] = 'id2_emissive_id2_11_02', + [-1292513123] = 'id2_emissive_id2_11_03', + [779057998] = 'id2_emissive_id2_12_01', + [1071521323] = 'id2_emissive_id2_12_02', + [-768559464] = 'id2_emissive_id2_13_01', + [715515741] = 'id2_emissive_id2_13_02', + [-110951208] = 'id2_emissive_id2_13_03', + [1310895702] = 'id2_emissive_id2_13_04', + [1549000781] = 'id2_emissive_id2_14_02', + [509215993] = 'id2_emissive_id2_15_01', + [-1986995351] = 'id2_emissive_id2_15_02', + [1122946594] = 'id2_emissive_id2_15_03', + [756916864] = 'id2_emissive_id2_15_04', + [-1555409001] = 'id2_emissive_id2_18_01', + [-1862290686] = 'id2_emissive_id2_18_02', + [-331945589] = 'id2_emissive_id2_18_04', + [-646855679] = 'id2_emissive_id2_18_05', + [-1961506948] = 'id2_emissive_id2_19_01', + [2128881788] = 'id2_emissive_id2_21_01', + [18263275] = 'id2_emissive_id2_21_02', + [1309572571] = 'id2_emissive_res00', + [620227954] = 'id2_emissive_res010', + [290637352] = 'id2_emissive_res011', + [156644911] = 'id2_emissive_res012', + [-198702125] = 'id2_emissive_res013', + [-304054460] = 'id2_emissive_res014', + [-686435921] = 'id2_emissive_res015', + [-1364590372] = 'id2_emissive_res016', + [-501618757] = 'id2_emissive_res017', + [-1821685161] = 'id2_emissive_res018', + [-983683516] = 'id2_emissive_res019', + [310609606] = 'id2_emissive_res02', + [702733228] = 'id2_emissive_res020', + [388019752] = 'id2_emissive_res021', + [-848387387] = 'id2_emissive_res022', + [985169239] = 'id2_emissive_res023', + [-291773153] = 'id2_emissive_res024', + [-590003822] = 'id2_emissive_res025', + [-1841845160] = 'id2_emissive_res026', + [-2140272443] = 'id2_emissive_res027', + [-1687044408] = 'id2_emissive_res028', + [-1981277259] = 'id2_emissive_res029', + [-396905873] = 'id2_emissive_res03', + [208617209] = 'id2_emissive_res030', + [1570234697] = 'id2_emissive_res031', + [-1732847738] = 'id2_emissive_res032', + [-2024655683] = 'id2_emissive_res033', + [871665155] = 'id2_emissive_res034', + [-1496878169] = 'id2_emissive_res035', + [-1339586961] = 'id2_emissive_res037', + [2045647349] = 'id2_emissive_res038', + [-341213838] = 'id2_emissive_res039', + [-90876182] = 'id2_emissive_res04', + [-1815360312] = 'id2_emissive_res040', + [1981059418] = 'id2_emissive_res041', + [821593891] = 'id2_emissive_res042', + [1100392543] = 'id2_emissive_res043', + [-351962302] = 'id2_emissive_res044', + [-1127768377] = 'id2_emissive_res045', + [-2038681047] = 'id2_emissive_res046', + [-632104483] = 'id2_emissive_res047', + [576645620] = 'id2_emissive_res048', + [-199422607] = 'id2_emissive_res049', + [-861537532] = 'id2_emissive_res05', + [-272924970] = 'id2_emissive_res050', + [-173765976] = 'id2_emissive_res051', + [2015629217] = 'id2_emissive_res052', + [-2115820769] = 'id2_emissive_res053', + [-1664067335] = 'id2_emissive_res054', + [-1367016350] = 'id2_emissive_res055', + [1754034266] = 'id2_emissive_res056', + [2080249661] = 'id2_emissive_res057', + [-1775285345] = 'id2_emissive_res058', + [-1473908852] = 'id2_emissive_res059', + [-552034319] = 'id2_emissive_res06', + [917476517] = 'id2_emissive_res060', + [1376308055] = 'id2_emissive_res061', + [1670344292] = 'id2_emissive_res062', + [-297499696] = 'id2_emissive_res063', + [2033293736] = 'id2_emissive_res064', + [-1963967195] = 'id2_emissive_res065', + [-1798745897] = 'id2_emissive_res066', + [-1500842918] = 'id2_emissive_res067', + [-1033294790] = 'id2_emissive_res068', + [-1322808905] = 'id2_emissive_res069', + [-1856109451] = 'id2_emissive_res07', + [-906611316] = 'id2_emissive_res070', + [-1139320345] = 'id2_emissive_res08', + [1977765246] = 'id2_emissive_res09', + [306952354] = 'id2_lod_00a_proxy', + [629106487] = 'id2_lod_emissive_ref', + [-172709582] = 'id2_lod_emissive', + [341970037] = 'id2_lod_id2_water_lod_slod4', + [-461831703] = 'id2_lod_slod4', + [-2065352382] = 'id2_props_cablemesh127270_thvy', + [-400565028] = 'id2_props_cablemesh127285_thvy', + [900026800] = 'id2_props_cablemesh127300_thvy', + [-961308982] = 'id2_props_cablemesh127315_thvy', + [2090180314] = 'id2_props_cablemesh127330_thvy', + [1107902364] = 'id2_props_cablemesh127345_thvy', + [-1680783888] = 'id2_props_cablemesh127360_thvy', + [945741993] = 'id2_props_cablemesh127375_thvy', + [-1406743211] = 'id2_props_cablemesh127390_thvy', + [795591617] = 'id2_props_cablemesh127405_thvy', + [1509749311] = 'id2_props_cablemesh127422_thvy', + [77936207] = 'id2_props_cablemesh127440_thvy', + [-1083587673] = 'id2_props_cablemesh127455_thvy', + [45128439] = 'id2_props_cablemesh127471_thvy', + [1389716363] = 'id2_props_combo01_dslod', + [1779735241] = 'id2_props_id2_railrainhatsa', + [-607650258] = 'id2_props_id2_railrainhatsb', + [-280025796] = 'id2_props_id2_railrainhatsc', + [-557124600] = 'id2_propsb_id2_cablesb_00', + [-2023176891] = 'id2_propsb_id2_cablesb_01', + [1107409524] = 'id2_propsb_id2_cablesb_03', + [-1733204010] = 'id2_propsb_id2_cablesb_04', + [-1094164084] = 'id2_propsb_id2_cablesb_04b', + [1946733574] = 'id2_propsb_id2_cablesb_04c', + [1623160815] = 'id2_propsb_id2_cablesb_05', + [-1003829394] = 'id2_rail_bridfizz01', + [349007000] = 'id2_rail_bridge01', + [-704738343] = 'id2_rail_rail_', + [2063891531] = 'id2_rail_rail_01', + [-400839532] = 'id2_rail_rail_013', + [-73335422] = 'id2_rail_rail_02', + [-2059464512] = 'id2_rail_rail_03', + [2032225488] = 'id2_rail_rail_04_o', + [-1743407507] = 'id2_rail_rail_04', + [-1578382823] = 'id2_rail_rail_05', + [1596376320] = 'id2_rail_rail_06', + [1506458184] = 'id2_rail_rail_07', + [45714471] = 'id2_rail_rail_08', + [1837064625] = 'id2_rail_rail_09', + [-863953325] = 'id2_rail_rail_10', + [-624510242] = 'id2_rail_rail_11', + [-386148536] = 'id2_rail_rail_12', + [-466194131] = 'id2_rail_rail_d', + [-1966621533] = 'id2_rail_rail01_d', + [-1666934141] = 'id2_rail_raild_2b', + [-989333071] = 'id2_rail_rovly_', + [-1967740799] = 'id2_rail_rovly_01', + [2102332850] = 'id2_rail_rovly_02', + [-1572972656] = 'id2_rail_rovly_03', + [-730743818] = 'id2_rail_rovly_04', + [-1230864296] = 'id2_rail_rovly_05', + [-402889973] = 'id2_rail_rovly_06', + [-647379482] = 'id2_rail_rovly_07', + [1874962896] = 'id2_rd_154', + [251596710] = 'id2_rd_b02_o', + [-550526110] = 'id2_rd_b02', + [806316173] = 'id2_rd_b03_o', + [823248677] = 'id2_rd_b03', + [456179218] = 'id2_rd_b03c', + [705183184] = 'id2_rd_b04_o', + [-224478057] = 'id2_rd_bridgea_hi', + [-2084693801] = 'id2_rd_bridgeb_hi', + [2143580863] = 'id2_rd_britdec003', + [224321795] = 'id2_rd_britun01', + [1722053367] = 'id2_rd_dtown01', + [586366980] = 'id2_rd_fizza_00', + [882828123] = 'id2_rd_fizza_01', + [576569049] = 'id2_rd_fizza_02', + [1883724459] = 'id2_rd_fizza_03', + [2122151703] = 'id2_rd_fizza_04', + [1287230352] = 'id2_rd_fizza_05', + [1459136526] = 'id2_rd_fizza_06', + [1251086213] = 'id2_rd_fizza_07', + [1414275833] = 'id2_rd_fizza_08', + [-1548271218] = 'id2_rd_fizza_09', + [55902704] = 'id2_rd_fizza_10', + [327852635] = 'id2_rd_fizza_11', + [69075846] = 'id2_rd_fizza_12', + [368027433] = 'id2_rd_fizza_13', + [1858296015] = 'id2_rd_fizza_14', + [-2140013524] = 'id2_rd_fizza_15', + [1282380840] = 'id2_rd_fizza_16', + [-1494202072] = 'id2_rd_fizza_17', + [-1188106843] = 'id2_rd_fizza_18', + [1280135776] = 'id2_rd_glue00', + [1525444510] = 'id2_rd_glue01', + [-374141651] = 'id2_rd_glue02', + [-160094543] = 'id2_rd_glue03', + [89638006] = 'id2_rd_glue04', + [335700427] = 'id2_rd_glue05', + [-1022902313] = 'id2_rd_glue06', + [394546791] = 'id2_rd_id2_tel_00', + [572416923] = 'id2_rd_id2_tel_01', + [1015191651] = 'id2_rd_id2_tel_02', + [1539135192] = 'id2_rd_id2_tel_04', + [1963362666] = 'id2_rd_id2_tel_05', + [-2011549807] = 'id2_rd_id2_tel_06', + [-1855176139] = 'id2_rd_id2_tel_07', + [-1564023574] = 'id2_rd_id2_tel_08', + [1320439230] = 'id2_rd_id2_tel_13', + [1569647475] = 'id2_rd_id2_tel_14', + [-414831861] = 'id2_rd_r2_01', + [264794105] = 'id2_rd_r2_02_o', + [-653554026] = 'id2_rd_r2_02', + [325332305] = 'id2_rd_r2_02b_o', + [1732427914] = 'id2_rd_r3_05_o', + [-447954322] = 'id2_rd_r3_05', + [-882710089] = 'id2_rd_r4_01_o', + [-469527637] = 'id2_rd_r4_01', + [806693735] = 'id2_rd_r4_02_o', + [-107430187] = 'id2_rd_r4_02', + [2133206361] = 'id2_rd_r4_03_o', + [14110034] = 'id2_rd_r4_03', + [499625894] = 'id2_rd_r4_04_o', + [252897737] = 'id2_rd_r4_04', + [-1691483651] = 'id2_rd_r4_05', + [1271909085] = 'id2_rd_r5_01_o', + [1649200317] = 'id2_rd_r5_01', + [1656603112] = 'id2_rd_r5_02_o', + [1970860821] = 'id2_rd_r5_02', + [2083482636] = 'id2_rd_r5_03_o', + [-200052660] = 'id2_rd_r5_03', + [2119008751] = 'id2_rd_r5_04_o', + [-2042882917] = 'id2_rd_r5_04', + [2073924137] = 'id2_rd_r5_05_o', + [-1689108793] = 'id2_rd_r5_05', + [-2053280542] = 'id2_rd_r6_01_o', + [61443570] = 'id2_rd_r6_01', + [529887462] = 'id2_rd_r6_02_o', + [-975957432] = 'id2_rd_r6_02', + [-340981254] = 'id2_rd_r6_03_o', + [940078767] = 'id2_rd_r6_03', + [2099373321] = 'id2_rd_r6_04_o', + [-327557229] = 'id2_rd_r6_04', + [-1718221089] = 'id2_rd_r6_05_o', + [-709840383] = 'id2_rd_r6_05', + [-95160571] = 'id2_rd_r6_06_o', + [2106491294] = 'id2_rd_r6_06', + [-321993666] = 'id2_rdb_r1_01_o', + [-1993144563] = 'id2_rdb_r1_01', + [1380280369] = 'id2_rdb_r1_02_o', + [1514973505] = 'id2_rdb_r1_02', + [-995243609] = 'id2_rdb_r1_03_o', + [-1390948650] = 'id2_rdb_r1_03', + [-1735670780] = 'id2_rdb_r1_04_o', + [-32018216] = 'id2_rdb_r1_04', + [-65733544] = 'id2_rdb_r1_05_o', + [-799763117] = 'id2_rdb_r1_05', + [612507900] = 'id2_rdb_r1_06_o', + [-1582024689] = 'id2_rdb_r1_06', + [-1585979927] = 'id2_rdb_r2_03_o', + [11329108] = 'id2_rdb_r2_04_o', + [-185130195] = 'id2_rdb_r2_04', + [-10869550] = 'id2_rdb_r2_05_o', + [-1490483310] = 'id2_rdb_r2_05', + [-603623094] = 'id2_rdb_r2_07', + [1839791154] = 'id2_rdb_r3_01_o', + [1376948174] = 'id2_rdb_r3_01', + [470697715] = 'id2_rdb_r3_02_o', + [2069357144] = 'id2_rdb_r3_02', + [-1198327153] = 'id2_rdb_r3_03_o', + [1839613685] = 'id2_rdb_r3_03', + [716599004] = 'id2_rdb_r3_04_o', + [-1494959755] = 'id2_rdb_r3_04', + [1074457665] = 'ig_abigail', + [610988552] = 'ig_agent', + [1830688247] = 'ig_amandatownley', + [1206185632] = 'ig_andreas', + [2129936603] = 'ig_ashley', + [-1492432238] = 'ig_ballasog', + [-1868718465] = 'ig_bankman', + [797459875] = 'ig_barry', + [1464257942] = 'ig_bestmen', + [-1113448868] = 'ig_beverly', + [-1111799518] = 'ig_brad', + [1633872967] = 'ig_bride', + [-2063996617] = 'ig_car3guy1', + [1975732938] = 'ig_car3guy2', + [-520477356] = 'ig_casey', + [1240128502] = 'ig_chef', + [-2054645053] = 'ig_chef2', + [-1427838341] = 'ig_chengsr', + [678319271] = 'ig_chrisformage', + [1825562762] = 'ig_clay', + [-1660909656] = 'ig_claypain', + [-429715051] = 'ig_cletus', + [1182012905] = 'ig_dale', + [365775923] = 'ig_davenorton', + [-2113195075] = 'ig_denise', + [1952555184] = 'ig_devin', + [-1674727288] = 'ig_dom', + [-628553422] = 'ig_dreyfuss', + [-872673803] = 'ig_drfriedlander', + [-795819184] = 'ig_fabien', + [988062523] = 'ig_fbisuit_01', + [-1313761614] = 'ig_floyd', + [-20018299] = 'ig_groom', + [1704428387] = 'ig_hao', + [-837606178] = 'ig_hunter', + [225287241] = 'ig_janet', + [2050158196] = 'ig_jay_norris', + [257763003] = 'ig_jewelass', + [-308279251] = 'ig_jimmyboston', + [1459905209] = 'ig_jimmydisanto', + [-1105179493] = 'ig_joeminuteman', + [-2016771922] = 'ig_johnnyklebitz', + [-518348876] = 'ig_josef', + [2040438510] = 'ig_josh', + [-346957479] = 'ig_karen_daniels', + [1530648845] = 'ig_kerrymcintosh', + [1706635382] = 'ig_lamardavis', + [-538688539] = 'ig_lazlow', + [1302784073] = 'ig_lestercrest', + [1401530684] = 'ig_lifeinvad_01', + [666718676] = 'ig_lifeinvad_02', + [-52653814] = 'ig_magenta', + [-46035440] = 'ig_manuel', + [411185872] = 'ig_marnie', + [-1552967674] = 'ig_maryann', + [1005070462] = 'ig_maude', + [-1080659212] = 'ig_michelle', + [-886023758] = 'ig_milton', + [-1358701087] = 'ig_molly', + [939183526] = 'ig_money', + [-67533719] = 'ig_mp_agent14', + [-304305299] = 'ig_mrk', + [503621995] = 'ig_mrs_thornhill', + [946007720] = 'ig_mrsphillips', + [-568861381] = 'ig_natalia', + [-1124046095] = 'ig_nervousron', + [-927525251] = 'ig_nigel', + [1906124788] = 'ig_old_man1a', + [-283816889] = 'ig_old_man2', + [1625728984] = 'ig_omega', + [768005095] = 'ig_oneil', + [1641334641] = 'ig_orleans', + [648372919] = 'ig_ortega', + [357551935] = 'ig_paige', + [-1717894970] = 'ig_paper', + [-982642292] = 'ig_patricia', + [645279998] = 'ig_popov', + [1681385341] = 'ig_priest', + [666086773] = 'ig_prolsec_02', + [-449965460] = 'ig_ramp_gang', + [1165307954] = 'ig_ramp_hic', + [-554721426] = 'ig_ramp_hipster', + [-424905564] = 'ig_ramp_mex', + [940330470] = 'ig_rashcosvki', + [-709209345] = 'ig_roccopelosi', + [1024089777] = 'ig_russiandrunk', + [-1689993] = 'ig_screen_writer', + [1283141381] = 'ig_siemonyetarian', + [-2034368986] = 'ig_solomon', + [941695432] = 'ig_stevehains', + [915948376] = 'ig_stretch', + [-409745176] = 'ig_talina', + [226559113] = 'ig_tanisha', + [-597926235] = 'ig_taocheng', + [2089096292] = 'ig_taostranslator', + [-1573167273] = 'ig_tenniscoach', + [1728056212] = 'ig_terry', + [-847807830] = 'ig_tomepsilon', + [-892841148] = 'ig_tonya', + [-566941131] = 'ig_tracydisanto', + [1461287021] = 'ig_trafficwarden', + [1382414087] = 'ig_tylerdix', + [-1835459726] = 'ig_wade', + [188012277] = 'ig_zimbor', + [-1486744544] = 'ind_prop_dlc_flag_01', + [1572208841] = 'ind_prop_dlc_flag_02', + [525880110] = 'ind_prop_dlc_roller_car_02', + [1543894721] = 'ind_prop_dlc_roller_car', + [-1611832715] = 'ind_prop_firework_01', + [-879052345] = 'ind_prop_firework_02', + [-1118757580] = 'ind_prop_firework_03', + [-1502580877] = 'ind_prop_firework_04', + [418536135] = 'infernus', + [-1405937764] = 'infernus2', + [-1289722222] = 'ingot', + [-159126838] = 'innovation', + [-1860900134] = 'insurgent', + [2071877360] = 'insurgent2', + [-288163167] = 'int_boxthing', + [886934177] = 'intruder', + [-1177863319] = 'issi2', + [-2048333973] = 'italigtb', + [-482719877] = 'italigtb2', + [-624529134] = 'jackal', + [1051415893] = 'jb700', + [-1297672541] = 'jester', + [-1106353882] = 'jester2', + [1058115860] = 'jet', + [861409633] = 'jetmax', + [-120287622] = 'journey', + [92612664] = 'kalahari', + [544021352] = 'khamelion', + [32913979] = 'kt1_00_02', + [1164736217] = 'kt1_00_02ovly', + [-1499015167] = 'kt1_00_05ovly', + [687048745] = 'kt1_00_06', + [-21985337] = 'kt1_00_gnd_dcl_f', + [1526728569] = 'kt1_00_grnd04_land', + [880977347] = 'kt1_00_grnd04_o', + [-51112718] = 'kt1_00_grnd04_o1', + [1210331535] = 'kt1_00_grnd04_ramp', + [-1543033071] = 'kt1_00_grnd05_land', + [-329760055] = 'kt1_00_shadowproxy_01', + [-2122236110] = 'kt1_00_tunnel', + [825810545] = 'kt1_01_00', + [467055525] = 'kt1_01_01', + [945974460] = 'kt1_01_03', + [629884686] = 'kt1_01_04', + [248025074] = 'kt1_01_glue_01', + [1602040158] = 'kt1_01_glue_02', + [843405035] = 'kt1_01_glue_03', + [-2095122271] = 'kt1_01_glue_04', + [384334934] = 'kt1_01_shadowcaster', + [-1104019814] = 'kt1_02_build', + [-209137944] = 'kt1_02_detail', + [-1384751664] = 'kt1_02_skyscraper', + [-643321187] = 'kt1_03_02_r2fint', + [-794418410] = 'kt1_03_02_r3fint', + [1840916529] = 'kt1_03_02_r3iint2', + [605214549] = 'kt1_03_02_r3j_ovlyint', + [-864702061] = 'kt1_03_02_r4iint2', + [-341068877] = 'kt1_03_bld', + [1515171624] = 'kt1_03_glue_02', + [1889164221] = 'kt1_03_glue_03', + [1453980949] = 'kt1_03_glue_int', + [-594134890] = 'kt1_03_glue', + [1606913433] = 'kt1_03_glue2_int', + [998516882] = 'kt1_03_grd_carparkbits2int', + [2041952847] = 'kt1_03_grd_carparkbitsint', + [-1171182756] = 'kt1_03_grd_markings2int', + [-1434480077] = 'kt1_03_grd_markingsint', + [19469904] = 'kt1_03_grd_nonshadow', + [-1842511984] = 'kt1_03_grd_nonshadowint', + [1452137678] = 'kt1_03_grd', + [224034403] = 'kt1_03_grdint', + [1482808700] = 'kt1_03_interior_reflection', + [314183075] = 'kt1_04_02_r3iint', + [-123624365] = 'kt1_04_build03_noshadowint', + [-1623527605] = 'kt1_04_build03', + [-1920290838] = 'kt1_04_build12int', + [-904148252] = 'kt1_04_build17', + [1475324199] = 'kt1_04_detail_carpark', + [1497594889] = 'kt1_04_detail', + [-1030603692] = 'kt1_04_detail01', + [2062319766] = 'kt1_04_detail01int', + [78626946] = 'kt1_04_detail07', + [-1844126898] = 'kt1_04_detail08', + [594100841] = 'kt1_04_detailint', + [2107836430] = 'kt1_04_detailint2', + [-1386520307] = 'kt1_04_fizza_00', + [380810174] = 'kt1_04_fizza_01', + [678451001] = 'kt1_04_fizza_02', + [2047801973] = 'kt1_04_fizza_03', + [211459982] = 'kt1_04_fizza_04', + [-846519952] = 'kt1_04_fizza_05', + [-97289536] = 'kt1_04_fizza_06', + [821127227] = 'kt1_04_fizza_07', + [-1011937864] = 'kt1_04_fizza_08', + [890433678] = 'kt1_04_fizza_09', + [-353741150] = 'kt1_04_fizza_10', + [-1320787109] = 'kt1_04_fizza_11', + [-812146691] = 'kt1_04_fizza_12', + [-1850137535] = 'kt1_04_fizza_13', + [-1030375479] = 'kt1_04_fizza_15_lod', + [2012639420] = 'kt1_04_fizza_16', + [1311579434] = 'kt1_04_fizza_17', + [1551612359] = 'kt1_04_fizza_18', + [543900039] = 'kt1_04_fizza_19', + [-393127536] = 'kt1_04_fizza_20', + [912782652] = 'kt1_04_fizza_21', + [-1004498769] = 'kt1_04_fizza_22', + [-743442682] = 'kt1_04_fw_dcl', + [1776995093] = 'kt1_04_landa', + [2037672488] = 'kt1_04_landb', + [1530943732] = 'kt1_04_shadow', + [1138983251] = 'kt1_04_shadow01', + [-1187288063] = 'kt1_04_shadow02', + [-808949549] = 'kt1_04_supports', + [-1079004717] = 'kt1_04_tunnel_01_int_lod', + [1118661943] = 'kt1_04_tunnel_01', + [-1167544758] = 'kt1_04_tunnel_01int', + [-520107087] = 'kt1_04_tunnel_02int', + [1540257122] = 'kt1_04_underground_detail', + [-1281898044] = 'kt1_04_underground_glue', + [1115655671] = 'kt1_05_00_fizz01', + [1338910868] = 'kt1_05_00_fizz02', + [-839310100] = 'kt1_05_00_fizz03', + [-1643180179] = 'kt1_05_00_fizz06_lod', + [-2030561561] = 'kt1_05_00_fizz06', + [80908958] = 'kt1_05_00_fizz07', + [1486365682] = 'kt1_05_00_noshadow', + [-1154101555] = 'kt1_05_00', + [-1517575303] = 'kt1_05_01', + [399939167] = 'kt1_05_fuzzd_00', + [1251212249] = 'kt1_05_fuzzd_01', + [1011441476] = 'kt1_05_fuzzd_02', + [1250491335] = 'kt1_05_fuzzd_03', + [1012555626] = 'kt1_05_fuzzd_04', + [-586440498] = 'kt1_05_fuzzd_05', + [1842897297] = 'kt1_05_glue_a', + [-2069754012] = 'kt1_05_glue_b', + [-1035510547] = 'kt1_05_glue', + [-1081622907] = 'kt1_05_props_combo02_slod', + [987944569] = 'kt1_06_aptbld', + [-299398110] = 'kt1_06_banner_01', + [-1831198469] = 'kt1_06_church', + [1111626012] = 'kt1_06_consitefizz01_lod', + [1642483896] = 'kt1_06_consitefizz01', + [-1319606329] = 'kt1_06_consitehedge', + [-1048604412] = 'kt1_06_decals01', + [-1753662216] = 'kt1_06_decals02', + [-1523394453] = 'kt1_06_decals03', + [1591135152] = 'kt1_06_decals04', + [1818617550] = 'kt1_06_decals05', + [2094208083] = 'kt1_06_fence_sign', + [189393543] = 'kt1_06_fizza_00', + [-1068804985] = 'kt1_06_fizza_01', + [-292605678] = 'kt1_06_fizza_02', + [431359839] = 'kt1_06_fizza_03', + [1206117306] = 'kt1_06_fizza_04', + [-47296944] = 'kt1_06_fizza_05', + [727263909] = 'kt1_06_fizza_06', + [-1616704773] = 'kt1_06_fizzb_00', + [1182787526] = 'kt1_06_fizzb_001', + [-825857831] = 'kt1_06_fizzb_01', + [1963373915] = 'kt1_06_fizzb_02', + [-1309987037] = 'kt1_06_fizzb_03', + [-1601663906] = 'kt1_06_fizzb_04', + [2104575536] = 'kt1_06_fizzb_05', + [733815493] = 'kt1_06_fizzb_06', + [-1596650630] = 'kt1_06_fizzb1a', + [-546579127] = 'kt1_06_grd01', + [1947478378] = 'kt1_06_hedgedetail_01', + [1725009637] = 'kt1_06_hedgedetail_02', + [1450110496] = 'kt1_06_hedgedetail_03', + [1096008682] = 'kt1_06_hedgedetail_04', + [-641033076] = 'kt1_06_plazabld', + [1007603236] = 'kt1_06_plazastairs_01', + [-1641367996] = 'kt1_07_detail', + [1779349573] = 'kt1_07_detail02', + [2014368865] = 'kt1_07_detail03', + [709168788] = 'kt1_07_fizz01a', + [-897790995] = 'kt1_07_fizza_00', + [-1229216661] = 'kt1_07_fizza_01', + [-1529806698] = 'kt1_07_fizza_02', + [594935262] = 'kt1_07_fizza_03', + [258987474] = 'kt1_07_fizza_04', + [-4639131] = 'kt1_07_fizza_05', + [-544468843] = 'kt1_07_interior01', + [1265102909] = 'kt1_07_kplaza', + [582771119] = 'kt1_07_laddergang', + [-1603296138] = 'kt1_07_neons_01', + [19575093] = 'kt1_07_park_06', + [-2054945664] = 'kt1_07_roofladder', + [414646835] = 'kt1_07_wiltern_01_textem', + [-1933562690] = 'kt1_07_wiltern_01', + [-1940785932] = 'kt1_08_apt_01_d1', + [-829465341] = 'kt1_08_apt_01a_water', + [-1439001815] = 'kt1_08_apt_01a', + [-1246437729] = 'kt1_08_apt_02_d1', + [-1511421081] = 'kt1_08_apt_02a', + [-2108363028] = 'kt1_08_apt_04_d1', + [-311708970] = 'kt1_08_apt_06_d1', + [-1278204590] = 'kt1_08_bld', + [-344237907] = 'kt1_08_fizza_00', + [1773688101] = 'kt1_08_fizza_01', + [1478799870] = 'kt1_08_fizza_02', + [1294375938] = 'kt1_08_fizza_03', + [998242485] = 'kt1_08_fizza_04', + [-1563703477] = 'kt1_08_fizza_05', + [-1860557848] = 'kt1_08_fizza_06', + [-2041573804] = 'kt1_08_fizza_07', + [2043016512] = 'kt1_08_fizza_08', + [-133992007] = 'kt1_08_fizza_09', + [1816646184] = 'kt1_08_fizza_10', + [-316910637] = 'kt1_08_fizza_11', + [1994099753] = 'kt1_08_fizzc_00', + [-2123259563] = 'kt1_08_fizzc_01', + [1730564037] = 'kt1_08_fizzd_01', + [518343006] = 'kt1_08_glue', + [1924448356] = 'kt1_08_hedgedetail01', + [822295810] = 'kt1_08_hedgedetail02', + [524851597] = 'kt1_08_hedgedetail03', + [-27879818] = 'kt1_08_ladder01', + [1877572002] = 'kt1_08_ladder02', + [432229711] = 'kt1_08_ladder03', + [187707433] = 'kt1_08_ladder04', + [-1911287660] = 'kt1_09_building1', + [-863413084] = 'kt1_09_building2_fizza', + [-800451333] = 'kt1_09_building2', + [1613700450] = 'kt1_09_buildingfuzz_01', + [1259459143] = 'kt1_09_fencefizz_01', + [439515029] = 'kt1_09_fizz01a', + [1677211917] = 'kt1_09_ground', + [-1258434105] = 'kt1_09_hedgedetail', + [232234910] = 'kt1_09_hedgedetail01', + [822852711] = 'kt1_09_kt1_carpark_01', + [-861423742] = 'kt1_09_ovly1', + [1204202938] = 'kt1_09_ovly2', + [-2138814397] = 'kt1_09_seoulstepsextrasint', + [-1169746142] = 'kt1_09_seoulstepsint', + [-1711314887] = 'kt1_09_subway_lod', + [92521016] = 'kt1_09_subway_reflect', + [50117072] = 'kt1_09_subwayfizz_01', + [-1072201616] = 'kt1_10_aptm_detailb', + [-1203873629] = 'kt1_10_aptm_h', + [1944342386] = 'kt1_10_aptm', + [2060931274] = 'kt1_10_build_01_x', + [782373199] = 'kt1_10_build_01_xa_lod', + [1026866273] = 'kt1_10_build_01_xa', + [369363689] = 'kt1_10_detail01c', + [666545750] = 'kt1_10_detail01d', + [-1266047589] = 'kt1_10_detail02', + [-1572929274] = 'kt1_10_detail03', + [1217373937] = 'kt1_10_flyers00', + [949290748] = 'kt1_10_flyers01', + [1790733130] = 'kt1_10_flyers02', + [1559941063] = 'kt1_10_flyers03', + [1260567720] = 'kt1_10_ground', + [-1122132433] = 'kt1_11_apt_01', + [1463865983] = 'kt1_11_apt_02', + [1955513843] = 'kt1_11_aptladder_01', + [276697159] = 'kt1_11_carwash_details_01', + [1151049241] = 'kt1_11_cwash_d_no_spinners', + [-919013111] = 'kt1_11_cwash_d', + [151189009] = 'kt1_11_decal01', + [1962754562] = 'kt1_11_decal010', + [-2007403336] = 'kt1_11_decal02', + [1568939790] = 'kt1_11_decal03', + [1826536899] = 'kt1_11_decal04', + [-1105108921] = 'kt1_11_decal05', + [1091823150] = 'kt1_11_decal06', + [-513368823] = 'kt1_11_decal15', + [-2084445763] = 'kt1_11_decal16', + [2135965193] = 'kt1_11_detail_01', + [1829083508] = 'kt1_11_detail_02', + [1264048471] = 'kt1_11_detail_fizz', + [-1052804137] = 'kt1_11_emm01_a_lod', + [613897263] = 'kt1_11_emm01_a', + [-1108431481] = 'kt1_11_ems_lod', + [1611256801] = 'kt1_11_fence_a_01', + [1572851527] = 'kt1_11_fence_b_01', + [-2108040810] = 'kt1_11_fence_c_01', + [2015381452] = 'kt1_11_flyers', + [308910039] = 'kt1_11_gas', + [-137671009] = 'kt1_11_gasgnd', + [1392471276] = 'kt1_11_ground_01', + [844376982] = 'kt1_11_ground_03', + [1141624581] = 'kt1_11_ground_04', + [-645206502] = 'kt1_11_mp_door', + [1209301005] = 'kt1_11_night01', + [-1631047307] = 'kt1_11_shop', + [-729420824] = 'kt1_12_decal_02', + [1350099920] = 'kt1_12_decal_03', + [1587606314] = 'kt1_12_decal', + [466151723] = 'kt1_12_detail', + [2102757681] = 'kt1_12_ground', + [-1893519150] = 'kt1_12_hedgedetail', + [726204298] = 'kt1_12_hedgedetail01', + [-456407770] = 'kt1_12_policedep', + [-711635061] = 'kt1_12_railing', + [679307345] = 'kt1_12_shop', + [-1442431369] = 'kt1_12_shopladder', + [-1564614824] = 'kt1_13_bld1', + [417648950] = 'kt1_13_bld1fizz03', + [332245728] = 'kt1_13_bld1fizz2_lod', + [1592041501] = 'kt1_13_bld2_v_02', + [-2119270426] = 'kt1_13_bld2_v', + [1270050139] = 'kt1_13_bld2fizz_v', + [-1332611862] = 'kt1_13_bldfizz05_01', + [1547201436] = 'kt1_13_decal_00', + [-1607601274] = 'kt1_13_decal_01', + [2087955474] = 'kt1_13_decal_02', + [-1025656599] = 'kt1_13_decal_03', + [-1860020881] = 'kt1_13_decal_04', + [13939914] = 'kt1_13_decal_05', + [-1462675734] = 'kt1_13_detail01a', + [633589969] = 'kt1_13_detail01b', + [1024065373] = 'kt1_13_detail01c', + [171055534] = 'kt1_13_detail01d', + [728735266] = 'kt1_13_detailb_01', + [-488928005] = 'kt1_13_detailb_02', + [1206605593] = 'kt1_13_detailb_03', + [-251221663] = 'kt1_13_detailb_04', + [1259210896] = 'kt1_13_fizza_00', + [1783645936] = 'kt1_13_fizza_01', + [1417157440] = 'kt1_13_fizza_02', + [-1898573829] = 'kt1_13_fizza_03', + [-1760747415] = 'kt1_13_fizza_04', + [-527529570] = 'kt1_13_fizzb1_00', + [531564518] = 'kt1_13_fizzb1_01', + [-1827718222] = 'kt1_13_ground1ns_walls', + [666165633] = 'kt1_13_ground1ns', + [-109716255] = 'kt1_13_ground2ns_walls', + [1570339460] = 'kt1_13_ground2ns', + [-704967145] = 'kt1_13_ground2nsfizz1', + [-1058479117] = 'kt1_13_ground2nsfizz2', + [-1272581542] = 'kt1_13_ladder01', + [1190198292] = 'kt1_13_props_prop_05_slod', + [1564417504] = 'kt1_13_props_prop_06_slod', + [1520386630] = 'kt1_13_scaffold01', + [93296676] = 'kt1_13_scaffold02', + [399719595] = 'kt1_13_scaffold03', + [571298079] = 'kt1_13_scaffold04', + [1364060731] = 'kt1_13_shadow_object', + [-284273354] = 'kt1_14_apt', + [-921755468] = 'kt1_14_apt2', + [-1500728565] = 'kt1_14_decal00', + [-1731061866] = 'kt1_14_decal01', + [65596866] = 'kt1_14_decal02', + [-177876804] = 'kt1_14_decal03', + [2143872388] = 'kt1_14_decal05', + [-104859743] = 'kt1_14_fencefizz_01_slod', + [186549603] = 'kt1_14_fencefizz_01', + [-424821447] = 'kt1_14_fencefizz_02_slod', + [1170274983] = 'kt1_14_fencefizz_02', + [-593838207] = 'kt1_14_fizz05a', + [1929767135] = 'kt1_14_fizz6a', + [-1061715746] = 'kt1_14_fizzx_00', + [-765844445] = 'kt1_14_fizzx_01', + [-266707037] = 'kt1_14_fizzx_02', + [-102206657] = 'kt1_14_fizzx_03', + [-190682953] = 'kt1_14_fizzx_04', + [-1247272568] = 'kt1_14_flyers00', + [-1511554553] = 'kt1_14_flyers01', + [1728699107] = 'kt1_14_ground01', + [-1415093219] = 'kt1_14_ground02', + [2044952726] = 'kt1_14_ground03', + [-828933806] = 'kt1_14_hedgedetail01', + [-1133685506] = 'kt1_14_hedgedetail02', + [-1328267828] = 'kt1_14_hedgedetail03', + [-1633773215] = 'kt1_14_hedgedetail04', + [-1888942020] = 'kt1_14_pool_01', + [-1837149242] = 'kt1_14_props_prop_05_slod', + [1357264226] = 'kt1_14_props_prop_06_slod', + [-1764034454] = 'kt1_14_shop', + [-501687536] = 'kt1_14_topfizz01', + [1177535424] = 'kt1_15_apt_01', + [-556286927] = 'kt1_15_aptfizz_01', + [1397507467] = 'kt1_15_aptfizz02_01', + [-535105445] = 'kt1_15_aptfizz10_01', + [223378560] = 'kt1_15_decal_01', + [455809077] = 'kt1_15_decal_02', + [-772241967] = 'kt1_15_decal_03', + [-550100916] = 'kt1_15_decal_04', + [-1012438745] = 'kt1_15_decal_06', + [-1505743271] = 'kt1_15_decal_08', + [1538349367] = 'kt1_15_detail_01', + [1785886393] = 'kt1_15_detail_02', + [-916802424] = 'kt1_15_detail_03', + [-686010357] = 'kt1_15_detail_04', + [-1283115968] = 'kt1_15_fizzobject_00', + [1561724767] = 'kt1_15_fizzobject_01', + [-1959730284] = 'kt1_15_fizzobject_02', + [-318232763] = 'kt1_15_fizzobject_03', + [-2017456640] = 'kt1_15_flyers_001', + [385756278] = 'kt1_15_flyers_003', + [86542539] = 'kt1_15_flyers_004', + [1744762143] = 'kt1_15_ground01', + [-2140887000] = 'kt1_15_ground01fizz04', + [-191394222] = 'kt1_15_ground03', + [650868174] = 'kt1_15_hedge_detail003', + [-548568837] = 'kt1_15_hedge_detail02', + [2034283821] = 'kt1_15_kmall_1', + [1201590762] = 'kt1_15_kmall_2', + [676297586] = 'kt1_15_kmallfizz04_2', + [-659844015] = 'kt1_15_kmallfizz1_1', + [571750891] = 'kt1_15_kmallfizz2_002', + [-738769869] = 'kt1_15_kmallfizz2_1', + [1394667781] = 'kt1_15_kmallfizz2_lod001', + [-243935101] = 'kt1_15_kmallfizz4_lod', + [887892021] = 'kt1_15_r1_gnd_s', + [749082766] = 'kt1_15_rest_01', + [852957602] = 'kt1_15_shop_06_fizz', + [-404617785] = 'kt1_15_shop_06', + [-143318156] = 'kt1_16_dirt03', + [-1899222777] = 'kt1_16_dirt0301', + [-501133420] = 'kt1_16_dirt0302', + [773908990] = 'kt1_16_dirt0323', + [857021664] = 'kt1_16_dirt1', + [-698811245] = 'kt1_16_em_win_lod', + [2102415535] = 'kt1_16_em_win', + [838348451] = 'kt1_16_fizzc_00', + [473826095] = 'kt1_16_fizzc_01', + [362509802] = 'kt1_16_fizzc_02', + [-1345082792] = 'kt1_16_fizzc_03', + [1546400918] = 'kt1_16_fwy_wall', + [-623194470] = 'kt1_16_ground_00', + [1372306279] = 'kt1_16_ground_006', + [-1141206822] = 'kt1_16_ground_01', + [-1481264983] = 'kt1_16_ground_03_noshadow', + [-220823911] = 'kt1_16_ground_03', + [-712686601] = 'kt1_16_ground_04', + [-1000758880] = 'kt1_16_ground_05', + [1275691080] = 'kt1_16_newdecal_02', + [-219282505] = 'kt1_16_overlay05', + [32022952] = 'kt1_16_overlay06', + [815262836] = 'kt1_16_petrol_grd', + [-569931796] = 'kt1_16_petrol_ov', + [-438263293] = 'kt1_16_petrol', + [1795186697] = 'kt1_16_railfizza_01', + [6916829] = 'kt1_16_railfizza_02', + [-1515407970] = 'kt1_16_rub_04', + [909102633] = 'kt1_16_shadowproxy_hd', + [2085134985] = 'kt1_16_shadowproxy_lod', + [-142535414] = 'kt1_16_shadowproxy01', + [1766062222] = 'kt1_16_shadowproxy02', + [1527602209] = 'kt1_16_shadowproxy03', + [-67974429] = 'kt1_16_stairfizz_01', + [1686439839] = 'kt1_16_stepsfizza_01', + [1388471322] = 'kt1_16_stepsfizza_02', + [1090269503] = 'kt1_17_01', + [366987407] = 'kt1_17_detail', + [-2129938351] = 'kt1_17_fence_00', + [-1890134809] = 'kt1_17_fence_01', + [39615520] = 'kt1_17_fizza_00', + [-1883793708] = 'kt1_17_fizza_01', + [2014242895] = 'kt1_emissive_kt1_02', + [152078932] = 'kt1_emissive_kt1_03', + [458436313] = 'kt1_emissive_kt1_04', + [747458893] = 'kt1_emissive_kt1_05', + [-2020511634] = 'kt1_emissive_kt1_06_01', + [-1622171670] = 'kt1_emissive_kt1_06_02', + [295470206] = 'kt1_emissive_kt1_06_03', + [2128220593] = 'kt1_emissive_kt1_07_ema', + [-1358106090] = 'kt1_emissive_kt1_07_emb', + [204552529] = 'kt1_emissive_kt1_08_ema', + [-32662262] = 'kt1_emissive_kt1_08_emb', + [1341809196] = 'kt1_emissive_kt1_08_f', + [-1221894981] = 'kt1_emissive_kt1_09_ema', + [-1049005737] = 'kt1_emissive_kt1_09_emb', + [1128788450] = 'kt1_emissive_kt1_10_em', + [1271174427] = 'kt1_emissive_kt1_10', + [-274471642] = 'kt1_emissive_kt1_11a', + [-512964424] = 'kt1_emissive_kt1_11b', + [-1826182099] = 'kt1_emissive_kt1_11c', + [-1858721428] = 'kt1_emissive_kt1_12a', + [-1537421383] = 'kt1_emissive_kt1_12b', + [2044985372] = 'kt1_emissive_kt1_14a', + [-1869206144] = 'kt1_emissive_kt1_14b', + [1584482611] = 'kt1_emissive_kt1_14c', + [-1882576768] = 'kt1_emissive_kt1_15a', + [-1651686394] = 'kt1_emissive_kt1_15b', + [-1403526757] = 'kt1_emissive_kt1_15c', + [1245781355] = 'kt1_emissive_kt1_15d', + [1486273046] = 'kt1_emissive_kt1_15e', + [-14382433] = 'kt1_lod_emi_6_20_proxy', + [401608846] = 'kt1_lod_emi_6_21_proxy', + [-1495365358] = 'kt1_lod_emissive', + [-1871494654] = 'kt1_lod_kt1_emissive_slod', + [-1726881792] = 'kt1_lod_slod4', + [2100279514] = 'kt1_rd_02_r1a_ovly', + [-863879554] = 'kt1_rd_02_r1a', + [1992116786] = 'kt1_rd_02_r1b_ovly', + [2000135611] = 'kt1_rd_02_r1d_ovly', + [-1065081222] = 'kt1_rd_02_r1d', + [1484296047] = 'kt1_rd_02_r1e_ovly', + [-1171121706] = 'kt1_rd_02_r1e', + [1060170437] = 'kt1_rd_02_r1f_ovly', + [-1915698924] = 'kt1_rd_02_r1f', + [1727699610] = 'kt1_rd_02_r1g_ovly', + [1073325415] = 'kt1_rd_02_r1g', + [608881118] = 'kt1_rd_02_r1h_ovly', + [1908148459] = 'kt1_rd_02_r1h', + [1458655570] = 'kt1_rd_02_r1i_ovly', + [-1559434356] = 'kt1_rd_02_r1i', + [-1371326922] = 'kt1_rd_02_r2a_ovly', + [242467128] = 'kt1_rd_02_r2a', + [-1910310615] = 'kt1_rd_02_r2b_ovly', + [164509677] = 'kt1_rd_02_r2b', + [-1858466376] = 'kt1_rd_02_r2c_ovly', + [-237434877] = 'kt1_rd_02_r2c', + [-1397212241] = 'kt1_rd_02_r2d_ovly', + [-372443157] = 'kt1_rd_02_r2d', + [-51293020] = 'kt1_rd_02_r2e_ovly', + [-773732331] = 'kt1_rd_02_r2e', + [1434438413] = 'kt1_rd_02_r2f_ovly', + [-851493168] = 'kt1_rd_02_r2f', + [974884884] = 'kt1_rd_02_r2g_ovly', + [-1216539828] = 'kt1_rd_02_r2g', + [1835653785] = 'kt1_rd_02_r2h_ovly', + [-1693197702] = 'kt1_rd_02_r2h', + [-268314129] = 'kt1_rd_02_r3a_ovly', + [1281441894] = 'kt1_rd_02_r3a', + [1031919319] = 'kt1_rd_02_r3b_ovly', + [735444824] = 'kt1_rd_02_r3b', + [-141873066] = 'kt1_rd_02_r3d_ovly', + [123418211] = 'kt1_rd_02_r3d', + [367383416] = 'kt1_rd_02_r3e', + [-2085560807] = 'kt1_rd_02_r3f_ovly', + [1865287179] = 'kt1_rd_02_r3f', + [1448640666] = 'kt1_rd_02_r3g_ovly', + [2105189028] = 'kt1_rd_02_r3g', + [1983853054] = 'kt1_rd_02_r3h_ovly', + [-926926546] = 'kt1_rd_02_r3h', + [-2098064296] = 'kt1_rd_02_r4a_ovly', + [-148237087] = 'kt1_rd_02_r4a', + [-401155455] = 'kt1_rd_02_r4b_ovly', + [1623059079] = 'kt1_rd_02_r4d_ovly', + [537585314] = 'kt1_rd_02_r4d', + [-101402126] = 'kt1_rd_02_r4d1', + [940421498] = 'kt1_rd_02_r4e_ovly', + [-1377533353] = 'kt1_rd_02_r4e', + [-1921229947] = 'kt1_rd_02_r4f_ovly', + [200621687] = 'kt1_rd_02_r4f', + [2049297384] = 'kt1_rd_02_r4g_ovly', + [423287042] = 'kt1_rd_02_r4g', + [-293687579] = 'kt1_rd_02_r4h_ovly', + [-477565537] = 'kt1_rd_02_r4h', + [1768513977] = 'kt1_rd_02_r5a_ovly', + [472638068] = 'kt1_rd_02_r5a', + [-1021878432] = 'kt1_rd_02_r5b_ovly', + [581168988] = 'kt1_rd_02_r5b', + [341299908] = 'kt1_rd_02_r5c', + [886540884] = 'kt1_rd_02_r6a_ovly', + [-599629446] = 'kt1_rd_02_r6a', + [1438244636] = 'kt1_rd_02_r6e_ovly', + [632026188] = 'kt1_rd_02_r6e', + [1836210674] = 'kt1_rd_02_r6f_ovly', + [-84762918] = 'kt1_rd_02_r6f', + [-418175777] = 'kt1_rd_02_r6g_ovly', + [154221399] = 'kt1_rd_02_r6g', + [162359328] = 'kt1_rd_02_r7a_ovly', + [196021150] = 'kt1_rd_02_r7a', + [-697687971] = 'kt1_rd_02_r7b_ovly', + [962881288] = 'kt1_rd_02_r7b', + [19860761] = 'kt1_rd_02_r7c_ovly', + [655540837] = 'kt1_rd_02_r7c', + [-1269170018] = 'kt1_rd_02_r7d_ovly', + [-722330079] = 'kt1_rd_02_r7d', + [1943005794] = 'kt1_rd_02_tramstn_ovly', + [510245034] = 'kt1_rd_08_ovly01', + [-3786941] = 'kt1_rd_fizza', + [158519514] = 'kt1_rd_fizza1_00', + [408415908] = 'kt1_rd_fizza1_01', + [-434697693] = 'kt1_rd_fizza1_02', + [-2069215405] = 'kt1_rd_fizza1_03', + [-377812307] = 'kt1_rd_fizzb', + [1544712110] = 'kt1_rd_fizzc', + [1146896450] = 'kt1_rd_fizzd', + [1717260351] = 'kt1_rd_kt1_tel_007', + [2099084739] = 'kt1_rd_kt1_tel_008', + [-235973767] = 'kt1_rd_kt1_tram_top', + [1373525723] = 'kt1_rd_shadowcast01', + [1085635770] = 'kt1_rd_stationsteps_01', + [313322977] = 'kt1_rd_tram_01', + [-1110794399] = 'kt1_rd_tram_02_ovly', + [-1677000549] = 'kt1_rd_tram_02', + [-252728729] = 'kt1_rd_tram_03', + [-1512510888] = 'kt1_rd_tram_cable_bot', + [-876355859] = 'kt1_rd_tram_ovly', + [-1372848492] = 'kuruma', + [410882957] = 'kuruma2', + [1269098716] = 'landstalker', + [-1281684762] = 'lazer', + [-1232836011] = 'le7b', + [640818791] = 'lectro', + [-703042172] = 'lf_house_01_', + [-1971997752] = 'lf_house_01d_', + [290054274] = 'lf_house_04_', + [-1695139618] = 'lf_house_04d_', + [-678335574] = 'lf_house_05_', + [-362722984] = 'lf_house_05d_', + [1515811704] = 'lf_house_07_', + [1669865158] = 'lf_house_07d_', + [-1174384544] = 'lf_house_08_', + [1649421057] = 'lf_house_08d_', + [-173048366] = 'lf_house_09_', + [485587234] = 'lf_house_09d_', + [-1385687317] = 'lf_house_10_', + [77716409] = 'lf_house_10d_', + [-737975551] = 'lf_house_11_', + [1198608380] = 'lf_house_11d_', + [-93114936] = 'lf_house_13_', + [2090804722] = 'lf_house_13d_', + [-964112964] = 'lf_house_14_', + [-360720436] = 'lf_house_14d_', + [-1015167302] = 'lf_house_15_', + [-1519311956] = 'lf_house_15d_', + [2122660754] = 'lf_house_16_', + [1801372084] = 'lf_house_16d_', + [203806105] = 'lf_house_17_', + [-1390413172] = 'lf_house_17d_', + [-578846675] = 'lf_house_18_', + [-1219135800] = 'lf_house_18d_', + [763371317] = 'lf_house_19_', + [1618384288] = 'lf_house_19d_', + [-73511144] = 'lf_house_20_', + [-1050016419] = 'lf_house_20d_', + [469291905] = 'lguard', + [-230231084] = 'light_car_rig', + [-914335905] = 'light_plane_rig', + [-114627507] = 'limo2', + [1277738372] = 'lts_p_para_bag_lts_s', + [1269440357] = 'lts_p_para_bag_pilot2_s', + [1931904776] = 'lts_p_para_pilot2_sp_s', + [182048815] = 'lts_prop_lts_elecbox_24', + [19408745] = 'lts_prop_lts_elecbox_24b', + [1051213133] = 'lts_prop_lts_offroad_tyres01', + [-1359996601] = 'lts_prop_lts_ramp_01', + [-1061569318] = 'lts_prop_lts_ramp_02', + [1290523964] = 'lts_prop_lts_ramp_03', + [2069251995] = 'lts_prop_tumbler_01_s2', + [-426922231] = 'lts_prop_tumbler_cs2_s2', + [2103844742] = 'lts_prop_wine_glass_s2', + [2068293287] = 'lurcher', + [621481054] = 'luxor', + [-1214293858] = 'luxor2', + [482197771] = 'lynx', + [-1660945322] = 'mamba', + [-1746576111] = 'mammatus', + [-2124201592] = 'manana', + [-1523428744] = 'manchez', + [1914556826] = 'marina_xr_rocks_01', + [-2015167196] = 'marina_xr_rocks_02', + [-1063063905] = 'marina_xr_rocks_03', + [-1904670132] = 'marina_xr_rocks_04', + [-585390192] = 'marina_xr_rocks_05', + [-1425095817] = 'marina_xr_rocks_06', + [-1043459709] = 'marquis', + [1233534620] = 'marshall', + [-142942670] = 'massacro', + [-631760477] = 'massacro2', + [-1660661558] = 'maverick', + [914654722] = 'mesa', + [-748008636] = 'mesa2', + [-2064372143] = 'mesa3', + [109846795] = 'met_st_seoul_mirr', + [1579140606] = 'met_st_seoul_mirrb', + [1823863923] = 'metro__t_st_sl_bot_ol', + [-283231658] = 'metro_', + [1484127491] = 'metro_03_rp_02', + [-380895886] = 'metro_06_rp_02', + [1831792241] = 'metro_30_', + [-1118146967] = 'metro_30_cables', + [2081685936] = 'metro_30_cables001', + [-244978606] = 'metro_30_cables002', + [-542357281] = 'metro_30_cables003', + [-1250942022] = 'metro_30_lod001', + [-1499036121] = 'metro_30_lod002', + [-543492081] = 'metro_30_lod003', + [-774611838] = 'metro_30_lod004', + [398026831] = 'metro_30_lod005', + [207307348] = 'metro_30_ol', + [95647208] = 'metro_30_ol2', + [-796688317] = 'metro_30reflect', + [-125008297] = 'metro_b_ol', + [-1112117012] = 'metro_cables', + [676851711] = 'metro_cables001', + [360794706] = 'metro_cables002', + [-1400779872] = 'metro_cagelight018', + [-199822148] = 'metro_end_', + [-499171879] = 'metro_end_031reflect', + [-1780048131] = 'metro_end_032_ol', + [1024003625] = 'metro_end_032', + [1298082008] = 'metro_end_30_', + [356499156] = 'metro_end_30_2', + [130085342] = 'metro_end_30_2ol', + [-178422915] = 'metro_end_30_cables', + [-2376281] = 'metro_end_30_cables001', + [672344407] = 'metro_end_30_ol', + [1720123297] = 'metro_end_30_ol2', + [1169924634] = 'metro_end_30reflect', + [1591372967] = 'metro_end_b_ol', + [1650924683] = 'metro_end_b_ol001', + [-730738105] = 'metro_end_bb_', + [-1535304967] = 'metro_end_cables', + [220069623] = 'metro_end_cables001', + [-2022035985] = 'metro_end_lod_001', + [-760535921] = 'metro_end_lod', + [-1713396680] = 'metro_end_new3', + [-696107910] = 'metro_end_ol001', + [-521842368] = 'metro_end_ol002', + [1500192492] = 'metro_end_shadow', + [-338704707] = 'metro_endnew_ol', + [-303685511] = 'metro_endnew_ol2', + [-409233552] = 'metro_endnew1_', + [-57128203] = 'metro_endnew1_cables', + [1293769392] = 'metro_endnew2_ol', + [1014101854] = 'metro_endnew2', + [-1652051138] = 'metro_endnew2cables002', + [407164543] = 'metro_endnew3_ol', + [-1423791787] = 'metro_endnew3cables', + [-1928427811] = 'metro_endolnew2', + [-167972287] = 'metro_endreflect', + [484938648] = 'metro_gridnew', + [637248301] = 'metro_lift001seoul', + [-2106815173] = 'metro_liftglassbotseoul', + [1679669627] = 'metro_liftglasstop004seoul', + [1326117462] = 'metro_liftglasstop004seoul001', + [-1022636972] = 'metro_liftglasstopseoul', + [732669249] = 'metro_liftglasstopseoul001', + [-1809136604] = 'metro_liftseoul', + [316299536] = 'metro_lsiaparkingtext', + [959063851] = 'metro_lsiaterminaltext', + [-1381996320] = 'metro_map_endreflect', + [1490519005] = 'metro_map_endshadowbox', + [-770164707] = 'metro_map_join_1_', + [-698180840] = 'metro_map_join_1_lod', + [-1483505130] = 'metro_map_join_1_ol', + [-1155790067] = 'metro_map_join_1b_ol', + [-279653998] = 'metro_map_join_1reflect', + [-519473795] = 'metro_map_join_1shadowbox', + [-2025644504] = 'metro_map_join_2_', + [-1993939088] = 'metro_map_join_2_lod', + [709796306] = 'metro_map_join_2_ol', + [732634002] = 'metro_map_join_2_ol2', + [127675884] = 'metro_map_join_2mark001', + [-1408784964] = 'metro_map_join_2reflect', + [-91416267] = 'metro_map_join_2shadowbox', + [-795748211] = 'metro_map_join_lod', + [-1472763774] = 'metro_map_join2wallg009', + [-1617471970] = 'metro_map_join2wallg010', + [-1022900905] = 'metro_newwaldoors', + [967818144] = 'metro_newwalk1', + [1481763959] = 'metro_newwalk1pipes003', + [-763508781] = 'metro_newwalk1pipes005seoul', + [-94269730] = 'metro_newwalk1pipes2', + [476521765] = 'metro_newwalk2reflect_b', + [-345619475] = 'metro_newwalk2reflect', + [1706196339] = 'metro_newwalk2shadowbox', + [616522692] = 'metro_newwalk2shell', + [907525659] = 'metro_newwalk3shell', + [1539767361] = 'metro_newwalk4reflect', + [1650813357] = 'metro_newwalk4shell', + [-736327030] = 'metro_newwalk5reflect_a', + [586541382] = 'metro_newwalk5reflect', + [-345256398] = 'metro_newwalk5shell', + [1519414802] = 'metro_newwalk6shell', + [1278414586] = 'metro_railclips', + [1560087579] = 'metro_railclips003', + [1790650263] = 'metro_railclips004', + [-171751503] = 'metro_railclips0044', + [1073798187] = 'metro_railclips0045', + [303595611] = 'metro_railclips0046', + [1520144736] = 'metro_railclips0047', + [964117776] = 'metro_railclips005', + [1195237533] = 'metro_railclips006', + [-1504141611] = 'metro_railclips007', + [-1273873848] = 'metro_railclips008', + [-2101422178] = 'metro_railclips009', + [852220517] = 'metro_railclips0091', + [1822730782] = 'metro_railclips010', + [-1366067789] = 'metro_railclips01000', + [1338732652] = 'metro_railclips011', + [1107219667] = 'metro_railclips012', + [1855073765] = 'metro_railclips013', + [1589546558] = 'metro_railclips014', + [1105548428] = 'metro_railclips015', + [878459258] = 'metro_railclips016', + [-1277708173] = 'metro_railclips017', + [-1510597456] = 'metro_railclips018', + [-1990532234] = 'metro_railclips019', + [1225061615] = 'metro_railclips020', + [978278276] = 'metro_railclips021', + [1212937081] = 'metro_railclips022', + [1708404361] = 'metro_railclips023', + [1402571284] = 'metro_railclips024', + [-2123438658] = 'metro_railclips025', + [1861828819] = 'metro_railclips026', + [-1399342057] = 'metro_railclips027', + [-1635180550] = 'metro_railclips028', + [-868156567] = 'metro_railclips029', + [-434229189] = 'metro_railclips030', + [-240203940] = 'metro_railclips031', + [56879814] = 'metro_railclips032', + [755875349] = 'metro_railclips033', + [-51651118] = 'metro_railclips034', + [1185575246] = 'metro_railclips035', + [404067365] = 'metro_railclips036', + [1675176875] = 'metro_railclips037', + [898715420] = 'metro_railclips038', + [2138825456] = 'metro_railclips039', + [933908474] = 'metro_railclips040', + [1089954452] = 'metro_railclips041', + [833864713] = 'metro_railclips042', + [1132750762] = 'metro_railclips043', + [-1527567730] = 'metro_railclips048', + [-1226256775] = 'metro_railclips049', + [2034422802] = 'metro_railclips050', + [-2080380532] = 'metro_railclips051', + [500687632] = 'metro_railclips053seoul', + [-1839593916] = 'metro_railclips054', + [-1122280506] = 'metro_railclips055', + [-872089191] = 'metro_railclips056', + [1664705199] = 'metro_railclips0new230', + [1122179590] = 'metro_railclips2', + [89463693] = 'metro_railclipsnew3018', + [-227611389] = 'metro_reflectonly', + [928394347] = 'metro_s3airconseoul', + [-320447383] = 'metro_s3liftrail001seoul', + [624771500] = 'metro_s3liftrailseoul', + [353839072] = 'metro_s3lightbarseoul', + [-1638887088] = 'metro_s3overlay2seoul', + [-2087322176] = 'metro_s3overlayseoul', + [-2064158526] = 'metro_sb', + [1124295943] = 'metro_sideexitw', + [782252325] = 'metro_sl_bot_', + [648343857] = 'metro_sl_bot_lod_001', + [1852791112] = 'metro_sl_bot_lod', + [-1212997795] = 'metro_sl_bot_lod001', + [-342915311] = 'metro_sl_bot_lod002', + [318783595] = 'metro_sl_bot_ol', + [-775514018] = 'metro_sl_bot_ol2', + [1842549821] = 'metro_sl_botolextra', + [1807810723] = 'metro_sl_botreflect', + [1874756548] = 'metro_sl_top_', + [535064819] = 'metro_sl_top_ol', + [-2142389360] = 'metro_sl_top_ol2', + [1259214908] = 'metro_sl_topolextra', + [-1523819241] = 'metro_sl_topreflect', + [-310853095] = 'metro_sm_', + [836395826] = 'metro_sm_001', + [1141704599] = 'metro_sm_002', + [-734973899] = 'metro_sm_cables', + [-806420041] = 'metro_sm_cables00', + [705066998] = 'metro_sm_cables001', + [-1004229580] = 'metro_sm_cables002', + [-1772466016] = 'metro_sm_cables003', + [-511547665] = 'metro_sm_cables004', + [-1916321926] = 'metro_sm_cables006', + [1610802170] = 'metro_sm_cables007', + [-1440057280] = 'metro_sm_cables008', + [2073271059] = 'metro_sm_cables009', + [-636298952] = 'metro_sm_cables010', + [-331776635] = 'metro_sm_cables011', + [-1364655515] = 'metro_sm_cables012', + [-1057839368] = 'metro_sm_cables013', + [-1833842057] = 'metro_sm_cables015', + [1977848027] = 'metro_sm_cables016', + [-2028915914] = 'metro_sm_cables017', + [129479821] = 'metro_sm_cables018', + [-548648614] = 'metro_sm_cablesol2', + [623417052] = 'metro_sm_cablessht1', + [1390441035] = 'metro_sm_cablessht2', + [128439241] = 'metro_sm_cablesshtnew', + [657160541] = 'metro_sm_lod', + [-687090075] = 'metro_sm_lod001', + [-387249719] = 'metro_sm_ol001', + [-49335791] = 'metro_sm_ol002', + [-506231780] = 'metro_sm_sl_bot_', + [-2046105846] = 'metro_sm_sl_bot_lod001', + [1941488230] = 'metro_sm_sl_bot_lod002', + [-1352169135] = 'metro_sm_sl_botol2', + [-1552772785] = 'metro_sm_sl_botreflect', + [1296168761] = 'metro_sm_sl_mid_', + [-1740467647] = 'metro_sm_sl_midol2', + [961555896] = 'metro_sm_sl_midreflect', + [-18722386] = 'metro_sm_sl_top_', + [-470647066] = 'metro_sm_sl_top_lod001', + [-987545272] = 'metro_sm_sl_top_lod002', + [236250256] = 'metro_sm_sl_top_ol', + [1532567237] = 'metro_sm_sl_topol2', + [1067562810] = 'metro_sm_sl_topreflect', + [1441835763] = 'metro_sm1reflect', + [-702158691] = 'metro_sm2reflect', + [-447154863] = 'metro_small_30_', + [1694006389] = 'metro_small_30_cables', + [1397856366] = 'metro_small_30_lod001', + [1636349148] = 'metro_small_30_lod002', + [1926190953] = 'metro_small_30_lod003', + [606266622] = 'metro_small_30_ol', + [2064473806] = 'metro_small_30reflect', + [537213512] = 'metro_smolextra', + [-458891740] = 'metro_smolextra001', + [-2006702686] = 'metro_smolextra002', + [231702342] = 'metro_smreflect', + [-849283772] = 'metro_stain003', + [-1741901560] = 'metro_stat3_platseoul', + [643649573] = 'metro_stat3endboxesseoul', + [-1744983116] = 'metro_stat3glift001seoul', + [1047127621] = 'metro_stat3gliftseoul', + [-1639731425] = 'metro_stat3join', + [-334246353] = 'metro_stat3join004', + [-1002814100] = 'metro_stat3join004ol', + [-126033053] = 'metro_stat3join1_lod001', + [2020631372] = 'metro_stat3join1_lod002', + [1254524921] = 'metro_stat3join1_lod003', + [888167497] = 'metro_stat3join1_lod004', + [-728574532] = 'metro_stat3join1reflect', + [-486777164] = 'metro_stat3join1reflect001', + [1397697970] = 'metro_stat3join2reflect', + [320967775] = 'metro_stat3join2reflect001', + [1450835004] = 'metro_stat3join3reflect', + [-908980310] = 'metro_stat3join3reflect001', + [39478872] = 'metro_stat3join4reflect', + [-1970530036] = 'metro_stat3join4shadow', + [606334009] = 'metro_stat3joinbend', + [60738992] = 'metro_stat3joinbend2', + [-182379021] = 'metro_stat3joinbend2ol', + [-511540164] = 'metro_stat3joinol', + [1124068457] = 'metro_stat3joinstuff', + [1215955531] = 'metro_stat3joinstuff4', + [-54608299] = 'metro_stat3railings003seoul', + [-320118423] = 'metro_stat3railings004seoul', + [-1200748865] = 'metro_stat3sp_cables2', + [1480388548] = 'metro_stat3sp', + [-799176264] = 'metro_stat3special_lod001', + [-757396161] = 'metro_stat3spol', + [-1054042537] = 'metro_stat3spreflect', + [-1368322409] = 'metro_stat3spstuff', + [391258084] = 'metro_statejoinbendol', + [-1463188217] = 'metro_station_3_seoul', + [-1749240062] = 'metro_station_3seoul_reflect', + [2086599887] = 'metro_station_3seoul_shb', + [-1815447721] = 'metro_station_3seoul', + [1036384401] = 'metro_station_3seoul001', + [-1460310618] = 'metro_stationburtontext', + [-1724475697] = 'metro_stationburtontext2', + [-1580866404] = 'metro_stationhut002seoul', + [-870188425] = 'metro_stationlsiaparkingtext2', + [-613571461] = 'metro_stationlsiaterminaltext2', + [-946800384] = 'metro_stationperrotext', + [-574997152] = 'metro_stationperrotext2', + [-2068583636] = 'metro_stationporttext003', + [-477321196] = 'metro_stationseoultext', + [1472685765] = 'metro_stationseoultext2', + [-159164695] = 'metro_subway1proxy', + [1446045988] = 'metro_subway1shell', + [1910849677] = 'metro_subwayetxt1', + [-1862238525] = 'metro_subwayetxt2', + [-1165089918] = 'metro_t_end_', + [-1465421597] = 'metro_t_end_30_', + [-1305949561] = 'metro_t_end_30_lod001', + [909300381] = 'metro_t_end_30_lod002', + [1701177392] = 'metro_t_end_30_ol', + [292304028] = 'metro_t_end_30_ol001', + [-525608070] = 'metro_t_end_30_ol2', + [-670394128] = 'metro_t_end_30reflect', + [804941067] = 'metro_t_end_b_', + [320913383] = 'metro_t_end_b_ol', + [1567181109] = 'metro_t_end_b_ol2', + [-1760239772] = 'metro_t_end_cables', + [-255986135] = 'metro_t_end_lod001', + [-1065871970] = 'metro_t_end_lod002', + [-1005619556] = 'metro_t_end_ol2', + [1416596668] = 'metro_t_end_reflect', + [825860277] = 'metro_t_end2_30_', + [-1245307987] = 'metro_t_end2_30_ol', + [-1084585782] = 'metro_t_end2_30ol2', + [2058080855] = 'metro_t_end2_30reflect', + [-519535809] = 'metro_t_join_', + [159566043] = 'metro_t_join_lod001', + [851549016] = 'metro_t_join_lod002', + [1091483634] = 'metro_t_join_lod003', + [-163470759] = 'metro_t_join_lod004', + [1672117545] = 'metro_t_join_lod005', + [-1980151354] = 'metro_t_join_lod006', + [-1745853004] = 'metro_t_join_lod007', + [821630915] = 'metro_t_join_lod008', + [1054192508] = 'metro_t_join_lod009', + [-309620211] = 'metro_t_join_lod010', + [1280135055] = 'metro_t_join_lod011', + [-1780522318] = 'metro_t_join_lod012', + [-2055880225] = 'metro_t_join_lod013', + [985934969] = 'metro_t_join_lod014', + [686917844] = 'metro_t_join_lod015', + [-534186172] = 'metro_t_join_lod016', + [-1368709971] = 'metro_t_join_ol', + [2019383489] = 'metro_t_joinreflect', + [-1585368011] = 'metro_t_lg_30_', + [-1398439556] = 'metro_t_lg_30_lod005', + [-1186931930] = 'metro_t_lg_30_ol1', + [-537629978] = 'metro_t_lg_30mark', + [-1262175414] = 'metro_t_lg_30reflect', + [-156084367] = 'metro_t_sl_bot_', + [-433908758] = 'metro_t_sl_bot_ol', + [1406504592] = 'metro_t_sl_botreflect', + [843159421] = 'metro_t_sl_top_', + [-384617339] = 'metro_t_sl_top_ol', + [-457589614] = 'metro_t_sl_top_ol2', + [1543402348] = 'metro_t_st_lg_30_', + [455762787] = 'metro_t_st_lg_30_lod', + [793653600] = 'metro_t_st_lg_30_lod001', + [25843157] = 'metro_t_st_lg_30_lod002', + [315848807] = 'metro_t_st_lg_30_lod003', + [-454517614] = 'metro_t_st_lg_30_lod004', + [1514899290] = 'metro_t_st_lg_30_lod005', + [1820437446] = 'metro_t_st_lg_30_lod006', + [-115482139] = 'metro_t_st_lg_30_ol', + [100877312] = 'metro_t_st_lg_30_ol002', + [-1950938105] = 'metro_t_st_lg_30_ol2', + [-1334258466] = 'metro_t_st_lg_30reflect', + [-224426079] = 'metro_t_st_lg_30shadbox', + [-758899365] = 'metro_t_st_sl_bot_', + [2041321892] = 'metro_t_st_sl_bot_lod001', + [93629311] = 'metro_t_st_sl_bot_ol001', + [974224533] = 'metro_t_st_sl_bot_ol2', + [949761967] = 'metro_t_st_sl_botreflect', + [1310168527] = 'metro_t_st_sl_top_', + [1647949157] = 'metro_t_st_sl_top_lod001', + [259649618] = 'metro_t_st_sl_top_ol001', + [-578208385] = 'metro_t_st_sl_topreflect', + [1856894547] = 'metro_t_stair_', + [390372917] = 'metro_t_stair_2_lod001', + [868442587] = 'metro_t_stair_2', + [-1762670138] = 'metro_t_stair_lod001', + [1143743552] = 'metro_t_stair_lod002', + [847413485] = 'metro_t_stair_lod003', + [-238289027] = 'metro_t_stair_lod004', + [-537568304] = 'metro_t_stair_lod005', + [-1924680074] = 'metro_t_stair_lod006', + [2069500571] = 'metro_t_stair_lod007', + [353551878] = 'metro_t_stair_lod008', + [-1014979869] = 'metro_t_stair_lod009', + [727183752] = 'metro_t_stair_lod010', + [-53275521] = 'metro_t_stair_lod011', + [1191225569] = 'metro_t_stair_lod012', + [-1704865886] = 'metro_t_stair_lod013', + [1671389726] = 'metro_t_stair_lod014', + [-1067251337] = 'metro_t_stair_ol', + [1036598985] = 'metro_t_stair_ol2', + [-292981443] = 'metro_t_stair2reflect', + [561844062] = 'metro_t_stairreflect', + [2120048793] = 'metro_t_step__ol', + [-2103115246] = 'metro_t_step__ol002', + [-1731891165] = 'metro_t_step_', + [1030688243] = 'metro_t_step_20_', + [-1260195433] = 'metro_t_step_20_lod001', + [2146830270] = 'metro_t_step_20_lod002', + [-892550174] = 'metro_t_step_20_ol', + [1464779364] = 'metro_t_step_20_ol2', + [-529294854] = 'metro_t_step_20reflect', + [2096603299] = 'metro_t_step_lod001', + [1191031992] = 'metro_t_step_lod002', + [-729844213] = 'metro_t_step_ol', + [737590170] = 'metro_t_stepolextra', + [258156671] = 'metro_t_stepreflect', + [-1210941175] = 'metro_t_stepreflect003', + [1716017079] = 'metro_topen_cables', + [-1585959895] = 'metro_topen_moreol', + [-683913398] = 'metro_topen_step__ol', + [1808433531] = 'metro_topen_step_', + [1111976904] = 'metro_topen_step_lod001', + [-68919545] = 'metro_topen_step_lod002', + [170390308] = 'metro_topen_stepreflect', + [1652900192] = 'metro_tsidex_', + [265440303] = 'metro_tsidex_ol', + [-75588373] = 'metro_tsidex_ol2', + [-42720284] = 'metro_tsidexreflect', + [944662010] = 'metro_walkway1panels002', + [461352029] = 'metro_walkway1panels004', + [152325154] = 'metro_walkway2panels1', + [-69441751] = 'metro_walkway5panels005', + [1590916747] = 'metro_wallgrid0011', + [1365400489] = 'metro_wallgrid0012', + [-510335871] = 'metro_wallgrid003', + [-1091592393] = 'metro_wallgrid004', + [-853525608] = 'metro_wallgrid005', + [985568979] = 'metro_wallgrid007', + [-259489176] = 'metro_wallgrid008', + [-2093111024] = 'metro_wallgrid013', + [-1054006034] = 'metro_wallgrid014', + [-1896398709] = 'metro_wallgrid015', + [-1521193659] = 'metro_wallgrid016', + [1938393520] = 'metro_wallgrid017', + [176600992] = 'metro_wallgrid018', + [-591373292] = 'metro_wallgrid019', + [-549167844] = 'metro_wallgrid020', + [-1268191095] = 'metro_wallgrid1', + [-1505799114] = 'metro_wallgrid2', + [195666588] = 'metro_watermark', + [1972827299] = 'metro_watermark4', + [-1305318586] = 'metro1_add_001', + [1140854499] = 'metro1_add_002', + [1692422307] = 'metro1_add_003', + [2021521374] = 'metro1_add_004', + [660373253] = 'metro1_ceiling', + [-637636261] = 'metro1_ceiling001', + [-2044110513] = 'metro1_ceilinga', + [-716908565] = 'metro1_ceilinga001', + [-1198055792] = 'metro1_ceilinga003', + [-825202016] = 'metro1_ceilingb', + [681985495] = 'metro1_ceilingb001', + [358165878] = 'metro2_ceiling2', + [1331708226] = 'metro3_ceiling', + [-1749909505] = 'metro6_ceiling', + [-484054720] = 'metropill_001', + [439965534] = 'metropill_002', + [1216820217] = 'metropill_003', + [-36921723] = 'metropill_004', + [689304855] = 'metropill_005', + [1589305452] = 'metropill_006', + [1565318544] = 'metropill_007', + [1126181175] = 'metropill_008', + [-966563498] = 'metropill_decal_001', + [-1222784309] = 'metropill_decal_002', + [1820931483] = 'metropill_decal_003', + [1515098406] = 'metropill_decal_004', + [-1879311232] = 'metropill_decal_005', + [2110412829] = 'metropill_decal_006', + [632662005] = 'metropill_decal_007', + [323420952] = 'metropill_decal_008', + [-1915712597] = 'metropilla', + [-1836276370] = 'metropilla001', + [2070701791] = 'metropillb', + [-481802157] = 'metropillb001', + [207082448] = 'metrotest_lod_001', + [-553289428] = 'metrotest_lod_002', + [-1345414465] = 'metrotest_lod_003', + [1967072673] = 'metrotest_lod_004', + [16613707] = 'metrotest_lod001', + [-134320307] = 'metrotest_lod002', + [761354770] = 'metrotest_lod003', + [336930682] = 'metrotest_lod004', + [-1537298430] = 'metrotestreflect', + [868868440] = 'metrotrain', + [165154707] = 'miljet', + [-310465116] = 'minivan', + [-1126264336] = 'minivan2', + [-121486168] = 'miss_rub_couch_01_l1', + [1894671041] = 'miss_rub_couch_01', + [-784816453] = 'mixer', + [475220373] = 'mixer2', + [176212222] = 'mk_arrow_flat', + [-688511582] = 'mk_arrow', + [768582247] = 'mk_cone', + [-512769117] = 'mk_cylinder', + [794464383] = 'mk_flag', + [816514494] = 'mk_ring', + [-433375717] = 'monroe', + [-845961253] = 'monster', + [525509695] = 'moonbeam', + [1896491931] = 'moonbeam2', + [1783355638] = 'mower', + [1943971979] = 'mp_f_deadhooker', + [-1667301416] = 'mp_f_freemode_01', + [-785842275] = 'mp_f_misty_01', + [695248020] = 'mp_f_stripperlite', + [1822283721] = 'mp_g_m_pros_01', + [1173958009] = 'mp_headtargets', + [-1057787465] = 'mp_m_claude_01', + [1161072059] = 'mp_m_exarmy_01', + [866411749] = 'mp_m_famdd_01', + [1558115333] = 'mp_m_fibsec_01', + [1885233650] = 'mp_m_freemode_01', + [943915367] = 'mp_m_marston_01', + [-287649847] = 'mp_m_niko_01', + [416176080] = 'mp_m_shopkeep_01', + [-839953400] = 'mp_s_m_armoured_01', + [487502835] = 'mt_neon_a', + [-1677577764] = 'mt_neon_b', + [-509995673] = 'mt01_glow_001', + [231325255] = 'mt1_info_a', + [904750859] = 'mule', + [-1050465301] = 'mule2', + [-2052737935] = 'mule3', + [-634879114] = 'nemesis', + [1034187331] = 'nero', + [1093792632] = 'nero2', + [1910680247] = 'new_walk_1_reflect', + [844547720] = 'ng_proc_beerbottle_01a', + [1098802391] = 'ng_proc_beerbottle_01b', + [1328808002] = 'ng_proc_beerbottle_01c', + [-1895783233] = 'ng_proc_binbag_01a', + [-1734625067] = 'ng_proc_binbag_02a', + [-1834013032] = 'ng_proc_block_01a', + [-1063872862] = 'ng_proc_block_02a', + [-831245731] = 'ng_proc_block_02b', + [1778631864] = 'ng_proc_box_01a', + [-1731615921] = 'ng_proc_box_02a', + [-1439676900] = 'ng_proc_box_02b', + [64781110] = 'ng_proc_brick_01a', + [-1157863053] = 'ng_proc_brick_01b', + [-1318793273] = 'ng_proc_brkbottle_02a', + [-128983652] = 'ng_proc_brkbottle_02b', + [99186895] = 'ng_proc_brkbottle_02c', + [215254697] = 'ng_proc_brkbottle_02d', + [442704326] = 'ng_proc_brkbottle_02e', + [827936690] = 'ng_proc_brkbottle_02f', + [1055714009] = 'ng_proc_brkbottle_02g', + [110881648] = 'ng_proc_candy01a', + [-385561723] = 'ng_proc_cigar01a', + [175300549] = 'ng_proc_cigarette01a', + [1175299436] = 'ng_proc_cigbuts01a', + [1479656360] = 'ng_proc_cigbuts02a', + [-200345012] = 'ng_proc_cigbuts03a', + [152603738] = 'ng_proc_ciglight01a', + [-593364948] = 'ng_proc_cigpak01a', + [-499055750] = 'ng_proc_cigpak01b', + [-200890619] = 'ng_proc_cigpak01c', + [-163314598] = 'ng_proc_coffee_01a', + [152282765] = 'ng_proc_coffee_02a', + [1475200408] = 'ng_proc_coffee_03b', + [1397473724] = 'ng_proc_coffee_04b', + [-1460292532] = 'ng_proc_concchips01', + [-1747381741] = 'ng_proc_concchips02', + [-827621449] = 'ng_proc_concchips03', + [1310916264] = 'ng_proc_concchips04', + [-720584521] = 'ng_proc_crate_01a', + [-1109001010] = 'ng_proc_crate_02a', + [1218252530] = 'ng_proc_crate_03a', + [1102352397] = 'ng_proc_crate_04a', + [-2127785247] = 'ng_proc_drug01a002', + [1450083036] = 'ng_proc_food_aple1a', + [1675697833] = 'ng_proc_food_aple2a', + [-196552994] = 'ng_proc_food_bag01a', + [-1599364663] = 'ng_proc_food_bag02a', + [386283738] = 'ng_proc_food_burg01a', + [566090194] = 'ng_proc_food_burg02a', + [1967980783] = 'ng_proc_food_burg02c', + [791748562] = 'ng_proc_food_chips01a', + [1013430847] = 'ng_proc_food_chips01b', + [-1122944124] = 'ng_proc_food_chips01c', + [-1519432258] = 'ng_proc_food_nana1a', + [-1045986034] = 'ng_proc_food_nana2a', + [1465367612] = 'ng_proc_food_ornge1a', + [-1350121957] = 'ng_proc_inhaler01a', + [334129668] = 'ng_proc_leaves01', + [-1065565414] = 'ng_proc_leaves02', + [-223893633] = 'ng_proc_leaves03', + [-1133167861] = 'ng_proc_leaves04', + [-1389192058] = 'ng_proc_leaves05', + [-669781424] = 'ng_proc_leaves06', + [-900049187] = 'ng_proc_leaves07', + [-1249759955] = 'ng_proc_leaves08', + [833463360] = 'ng_proc_litter_plasbot1', + [1072709829] = 'ng_proc_litter_plasbot2', + [-1508373229] = 'ng_proc_litter_plasbot3', + [-812352833] = 'ng_proc_oilcan01a', + [1542781471] = 'ng_proc_ojbot_01a', + [332160486] = 'ng_proc_paintcan01a_sh', + [-493523971] = 'ng_proc_paintcan01a', + [-811841173] = 'ng_proc_paintcan02a', + [-961781516] = 'ng_proc_paper_01a', + [1214769065] = 'ng_proc_paper_02a', + [-807340607] = 'ng_proc_paper_03a', + [858737478] = 'ng_proc_paper_03a001', + [1864388210] = 'ng_proc_paper_burger01a', + [-275962512] = 'ng_proc_paper_mag_1a', + [1153355730] = 'ng_proc_paper_mag_1b', + [271492684] = 'ng_proc_paper_news_globe', + [109007300] = 'ng_proc_paper_news_meteor', + [1202131520] = 'ng_proc_paper_news_quik', + [1636521374] = 'ng_proc_paper_news_rag', + [-835359795] = 'ng_proc_pizza01a', + [-1208997704] = 'ng_proc_rebar_01a', + [-1519122176] = 'ng_proc_sodabot_01a', + [144995201] = 'ng_proc_sodacan_01a', + [-1321253704] = 'ng_proc_sodacan_01b', + [-83831014] = 'ng_proc_sodacan_02a', + [-1223995600] = 'ng_proc_sodacan_02b', + [-649751644] = 'ng_proc_sodacan_02c', + [-1853193169] = 'ng_proc_sodacan_02d', + [-1703831183] = 'ng_proc_sodacan_03a', + [-1053563147] = 'ng_proc_sodacan_03b', + [1015700596] = 'ng_proc_sodacan_04a', + [-550724351] = 'ng_proc_sodacup_01a', + [-803078428] = 'ng_proc_sodacup_01b', + [-489249803] = 'ng_proc_sodacup_01c', + [1266644053] = 'ng_proc_sodacup_02a', + [1711909225] = 'ng_proc_sodacup_02b', + [-942946224] = 'ng_proc_sodacup_02b001', + [826654690] = 'ng_proc_sodacup_02c', + [-569010013] = 'ng_proc_sodacup_03a', + [938495063] = 'ng_proc_sodacup_03c', + [657068640] = 'ng_proc_sodacup_lid', + [153354187] = 'ng_proc_spraycan01a', + [-765160883] = 'ng_proc_spraycan01b', + [-1282296755] = 'ng_proc_syrnige01a', + [122627294] = 'ng_proc_temp', + [-944554615] = 'ng_proc_tyre_01', + [-964966892] = 'ng_proc_tyre_dam1', + [-2007573392] = 'ng_proc_wood_01a', + [1167949327] = 'ng_proc_wood_02a', + [-1606187161] = 'nightblade', + [-1943285540] = 'nightshade', + [-1295027632] = 'nimbus', + [1032823388] = 'ninef', + [-1461482751] = 'ninef2', + [-777172681] = 'omnis', + [1348744438] = 'oracle', + [-511601230] = 'oracle2', + [1987142870] = 'osiris', + [2022656922] = 'p_a4_sheets_s', + [1922550796] = 'p_abat_roller_1_col', + [687149709] = 'p_abat_roller_1', + [-1892870230] = 'p_airdancer_01_s', + [1005988375] = 'p_amanda_note_01_s', + [334157238] = 'p_amb_bag_bottle_01', + [-2081834323] = 'p_amb_bagel_01', + [1477930039] = 'p_amb_brolly_01_s', + [-781595832] = 'p_amb_brolly_01', + [-969349845] = 'p_amb_clipboard_01', + [-598185919] = 'p_amb_coffeecup_01', + [1696672834] = 'p_amb_drain_water_double', + [-365854806] = 'p_amb_drain_water_longstrip', + [810320178] = 'p_amb_drain_water_single', + [-1412276716] = 'p_amb_joint_01', + [1661782514] = 'p_amb_lap_top_01', + [-1855510874] = 'p_amb_lap_top_02', + [94130617] = 'p_amb_phone_01', + [-1310709074] = 'p_arm_bind_cut_s', + [-2065455377] = 'p_armchair_01_s', + [-426085191] = 'p_ashley_neck_01_s', + [359105829] = 'p_attache_case_01_s', + [-1244204979] = 'p_balaclavamichael_s', + [139950461] = 'p_banknote_onedollar_s', + [-906831231] = 'p_banknote_s', + [-1507474729] = 'p_barier_test_s', + [1640819392] = 'p_barierbase_test_s', + [-1613856019] = 'p_barriercrash_01_s', + [-897426451] = 'p_beefsplitter_s', + [-819563011] = 'p_binbag_01_s', + [-255563997] = 'p_bison_winch_s', + [-857302273] = 'p_bloodsplat_s', + [598012071] = 'p_blueprints_01_s', + [-650269716] = 'p_brain_chunk_s', + [-1859992197] = 'p_bs_map_door_01_s', + [320854256] = 'p_cablecar_s_door_l', + [-439452078] = 'p_cablecar_s_door_r', + [-733833763] = 'p_cablecar_s', + [977923025] = 'p_car_keys_01', + [886894755] = 'p_cargo_chute_s', + [264881854] = 'p_cash_envelope_01_s', + [289451089] = 'p_cctv_s', + [-603767659] = 'p_champ_flute_s', + [2016808872] = 'p_chem_vial_02b_s', + [-1981474309] = 'p_cigar_pack_02_s', + [-1173315865] = 'p_clb_officechair_s', + [850900610] = 'p_cletus_necklace_s', + [-1326828316] = 'p_cloth_airdancer_s', + [1873223844] = 'p_clothtarp_down_s', + [667673034] = 'p_clothtarp_s', + [-632887129] = 'p_clothtarp_up_s', + [-1404244377] = 'p_controller_01_s', + [284970900] = 'p_counter_01_glass_plug', + [1041076678] = 'p_counter_01_glass', + [-1442918238] = 'p_counter_02_glass', + [479709182] = 'p_counter_03_glass', + [1870138714] = 'p_counter_04_glass', + [1328154590] = 'p_crahsed_heli_s', + [-148001007] = 'p_cs_15m_rope_s', + [2129874414] = 'p_cs_bandana_s', + [1742452667] = 'p_cs_bbbat_01', + [-1141851766] = 'p_cs_beachtowel_01_s', + [-205657605] = 'p_cs_beverly_lanyard_s', + [-1301244203] = 'p_cs_bottle_01', + [-55816390] = 'p_cs_bowl_01b_s', + [789652940] = 'p_cs_cam_phone', + [692857360] = 'p_cs_ciggy_01b_s', + [1027109416] = 'p_cs_clipboard', + [-643540469] = 'p_cs_clothes_box_s', + [473625129] = 'p_cs_coke_line_s', + [2075712814] = 'p_cs_comb_01', + [-1281059971] = 'p_cs_cuffs_02_s', + [-561989645] = 'p_cs_duffel_01_s', + [-1630172026] = 'p_cs_joint_01', + [-960996301] = 'p_cs_joint_02', + [1910331218] = 'p_cs_laptop_02_w', + [2109346928] = 'p_cs_laptop_02', + [-903501682] = 'p_cs_laz_ptail_s', + [400375711] = 'p_cs_leaf_s', + [-680040094] = 'p_cs_lighter_01', + [-2094907124] = 'p_cs_locker_01_s', + [-994868291] = 'p_cs_locker_01', + [250681399] = 'p_cs_locker_02', + [645774080] = 'p_cs_locker_door_01', + [2120038965] = 'p_cs_locker_door_01b', + [899635523] = 'p_cs_locker_door_02', + [-1027860019] = 'p_cs_mp_jet_01_s', + [1914837387] = 'p_cs_newspaper_s', + [-415861411] = 'p_cs_pamphlet_01_s', + [-1413299318] = 'p_cs_panties_03_s', + [282159321] = 'p_cs_paper_disp_02', + [-908010235] = 'p_cs_paper_disp_1', + [-794885282] = 'p_cs_papers_01', + [28632457] = 'p_cs_papers_02', + [-215824283] = 'p_cs_papers_03', + [-2104938113] = 'p_cs_para_ropebit_s', + [933678382] = 'p_cs_para_ropes_s', + [1473615697] = 'p_cs_polaroid_s', + [71008234] = 'p_cs_police_torch_s', + [1202315039] = 'p_cs_pour_tube_s', + [93734612] = 'p_cs_power_cord_s', + [-1927574507] = 'p_cs_rope_tie_01_s', + [-782390768] = 'p_cs_sack_01_s', + [25967894] = 'p_cs_saucer_01_s', + [-1224179799] = 'p_cs_scissors_s', + [1019439145] = 'p_cs_script_bottle_s', + [-1972099092] = 'p_cs_script_s', + [1488914677] = 'p_cs_shirt_01_s', + [1787281554] = 'p_cs_shot_glass_2_s', + [2032950376] = 'p_cs_shot_glass_s', + [1208606316] = 'p_cs_sub_hook_01_s', + [-1773983618] = 'p_cs_toaster_s', + [-969695354] = 'p_cs_tracy_neck2_s', + [1846382434] = 'p_cs_trolley_01_s', + [-1897431054] = 'p_cs1_14b_train_esdoor', + [-1150377354] = 'p_cs1_14b_train_s_col', + [-532698014] = 'p_cs1_14b_train_s_colopen', + [-1491044252] = 'p_cs1_14b_train_s', + [1119015720] = 'p_csbporndudes_necklace_s', + [-582322177] = 'p_csh_strap_01_pro_s', + [1398481760] = 'p_csh_strap_01_s', + [568587468] = 'p_csh_strap_03_s', + [-453852320] = 'p_cut_door_01', + [-684382235] = 'p_cut_door_02', + [-815851463] = 'p_cut_door_03', + [239157435] = 'p_d_scuba_mask_s', + [414775158] = 'p_d_scuba_tank_s', + [-966274179] = 'p_defilied_ragdoll_01_s', + [1519875640] = 'p_devin_box_01_s', + [-721037220] = 'p_dinechair_01_s', + [1795767067] = 'p_disp_02_door_01', + [-1290409783] = 'p_dock_crane_cabl_s', + [-339559827] = 'p_dock_crane_cable_s', + [-1683671214] = 'p_dock_crane_sld_s', + [913564566] = 'p_dock_rtg_ld_cab', + [1496091510] = 'p_dock_rtg_ld_spdr', + [-29181140] = 'p_dock_rtg_ld_wheel', + [577432224] = 'p_dumpster_t', + [-890087262] = 'p_ecg_01_cable_01_s', + [1650657833] = 'p_f_duster_handle_01', + [-816251662] = 'p_f_duster_head_01', + [1079465856] = 'p_fag_packet_01_s', + [452612255] = 'p_ferris_car_01', + [1805157542] = 'p_ferris_wheel_amo_l', + [-1904367099] = 'p_ferris_wheel_amo_l2', + [1210826189] = 'p_ferris_wheel_amo_p', + [-1295299286] = 'p_fib_rubble_s', + [798176293] = 'p_film_set_static_01', + [-1042390945] = 'p_fin_vaultdoor_s', + [-2124287878] = 'p_finale_bld_ground_s', + [432116038] = 'p_finale_bld_pool_s', + [2126528679] = 'p_flatbed_strap_s', + [794871542] = 'p_fnclink_dtest', + [-1867132116] = 'p_folding_chair_01_s', + [-2046753783] = 'p_gaffer_tape_s', + [285775647] = 'p_gaffer_tape_strip_s', + [645231946] = 'p_gar_door_01_s', + [1645674613] = 'p_gar_door_02_s', + [923341943] = 'p_gar_door_03_s', + [1228377684] = 'p_gasmask_s', + [1673290408] = 'p_gate_prison_01_s', + [1407268736] = 'p_gcase_s', + [1350616857] = 'p_gdoor1_s', + [-1298716645] = 'p_gdoor1colobject_s', + [192682307] = 'p_gdoortest_s', + [2095672150] = 'p_hand_toilet_s', + [1714199852] = 'p_hw1_22_doors_s', + [-1001571795] = 'p_hw1_22_table_s', + [-2074760643] = 'p_ice_box_01_s', + [545302142] = 'p_ice_box_proxy_col', + [933794942] = 'p_idol_case_s', + [736919402] = 'p_ilev_p_easychair_s', + [-999584101] = 'p_ing_bagel_01', + [-133688399] = 'p_ing_coffeecup_01', + [692778550] = 'p_ing_coffeecup_02', + [-921000564] = 'p_ing_microphonel_01', + [126000171] = 'p_ing_skiprope_01_s', + [-1913525176] = 'p_ing_skiprope_01', + [-438114230] = 'p_inhaler_01_s', + [-1847044452] = 'p_int_jewel_mirror', + [-1174817344] = 'p_int_jewel_plant_01', + [-950054773] = 'p_int_jewel_plant_02', + [1425919976] = 'p_jewel_door_l', + [9467943] = 'p_jewel_door_r1', + [1277485905] = 'p_jewel_necklace_02', + [1925649262] = 'p_jewel_necklace01_s', + [439457590] = 'p_jewel_necklace02_s', + [-414705250] = 'p_jewel_pickup33_s', + [-1435891468] = 'p_jimmy_necklace_s', + [-1491833875] = 'p_jimmyneck_03_s', + [-1599176945] = 'p_kitch_juicer_s', + [785421426] = 'p_lamarneck_01_s', + [2028748281] = 'p_laptop_02_s', + [1910485680] = 'p_large_gold_s', + [-1327396865] = 'p_laz_j01_s', + [2086911125] = 'p_laz_j02_s', + [1516229897] = 'p_lazlow_shirt_s', + [516221692] = 'p_ld_am_ball_01', + [-1499819825] = 'p_ld_bs_bag_01', + [664069992] = 'p_ld_cable_tie_01_s', + [-1318035530] = 'p_ld_coffee_vend_01', + [-2015792788] = 'p_ld_coffee_vend_s', + [813750836] = 'p_ld_conc_cyl_01', + [50437630] = 'p_ld_crocclips01_s', + [-1589103511] = 'p_ld_crocclips02_s', + [-1270234221] = 'p_ld_frisbee_01', + [332394125] = 'p_ld_heist_bag_01', + [-679192147] = 'p_ld_heist_bag_s_1', + [-582458059] = 'p_ld_heist_bag_s_2', + [1185332651] = 'p_ld_heist_bag_s_pro_o', + [-651206088] = 'p_ld_heist_bag_s_pro', + [1075296156] = 'p_ld_heist_bag_s_pro2_s', + [1514570228] = 'p_ld_heist_bag_s', + [-1595369626] = 'p_ld_id_card_002', + [292851939] = 'p_ld_id_card_01', + [303234577] = 'p_ld_sax', + [-717142483] = 'p_ld_soc_ball_01', + [-874338148] = 'p_ld_stinger_s', + [-1282866511] = 'p_leg_bind_cut_s', + [1937985747] = 'p_lestersbed_s', + [1526269963] = 'p_lev_sofa_s', + [92191450] = 'p_lifeinv_neck_01_s', + [-676133793] = 'p_litter_picker_s', + [921993182] = 'p_loose_rag_01_s', + [-114933643] = 'p_mast_01_s', + [-1284191201] = 'p_mbbed_s', + [-444717304] = 'p_med_jet_01_s', + [310462430] = 'p_medal_01_s', + [1808635348] = 'p_meth_bag_01_s', + [1203231469] = 'p_michael_backpack_s', + [136880302] = 'p_michael_scuba_mask_s', + [1593773001] = 'p_michael_scuba_tank_s', + [1924030334] = 'p_mp_showerdoor_s', + [-25464105] = 'p_mr_raspberry_01_s', + [-1173768201] = 'p_mrk_harness_s', + [709180631] = 'p_new_j_counter_01', + [938137634] = 'p_new_j_counter_02', + [-2036042344] = 'p_new_j_counter_03', + [-502024136] = 'p_notepad_01_s', + [-1832227997] = 'p_novel_01_s', + [2075235594] = 'p_num_plate_01', + [-2006012284] = 'p_num_plate_02', + [167522649] = 'p_num_plate_03', + [-88501548] = 'p_num_plate_04', + [-1207886863] = 'p_oil_pjack_01_amo', + [684384219] = 'p_oil_pjack_01_frg_s', + [568309711] = 'p_oil_pjack_01_s', + [200010599] = 'p_oil_pjack_02_amo', + [96996152] = 'p_oil_pjack_02_frg_s', + [1888301071] = 'p_oil_pjack_02_s', + [1677473970] = 'p_oil_pjack_03_amo', + [1598709538] = 'p_oil_pjack_03_frg_s', + [323971301] = 'p_oil_pjack_03_s', + [-492435441] = 'p_oil_slick_01', + [388861061] = 'p_omega_neck_01_s', + [-1814060388] = 'p_omega_neck_02_s', + [-915071241] = 'p_orleans_mask_s', + [-1858071425] = 'p_ortega_necklace_s', + [-1973600183] = 'p_oscar_necklace_s', + [-1388130770] = 'p_overalls_02_s', + [-1315854077] = 'p_pallet_02a_s', + [548349475] = 'p_panties_s', + [1766664132] = 'p_para_bag_xmas_s', + [-1410396731] = 'p_para_broken1_s', + [1393914438] = 'p_parachute_fallen_s', + [1746997299] = 'p_parachute_s_shop', + [1269906701] = 'p_parachute_s', + [-1038982469] = 'p_parachute1_mp_dec', + [1336576410] = 'p_parachute1_mp_s', + [-313681483] = 'p_parachute1_s', + [1740193300] = 'p_parachute1_sp_dec', + [218548447] = 'p_parachute1_sp_s', + [-573707493] = 'p_patio_lounger1_s', + [-233697971] = 'p_pharm_unit_01', + [1651928600] = 'p_pharm_unit_02', + [-1559354806] = 'p_phonebox_01b_s', + [-429560270] = 'p_phonebox_02_s', + [-677710671] = 'p_pistol_holster_s', + [445443711] = 'p_planning_board_01', + [-1790516235] = 'p_planning_board_02', + [-2030024856] = 'p_planning_board_03', + [-2117059320] = 'p_planning_board_04', + [1701933528] = 'p_pliers_01_s', + [1150266519] = 'p_po1_01_doorm_s', + [483426292] = 'p_police_radio_hset_s', + [-1666779307] = 'p_poly_bag_01_s', + [-2028292621] = 'p_pour_wine_s', + [-1378608019] = 'p_rail_controller_s', + [-1741877302] = 'p_rc_handset', + [-1210228783] = 'p_rcss_folded', + [-889858063] = 'p_rcss_s', + [-406716247] = 'p_res_sofa_l_s', + [-671139745] = 'p_ringbinder_01_s', + [840819528] = 'p_rpulley_s', + [-289082718] = 'p_rub_binbag_test', + [138065747] = 'p_s_scuba_mask_s', + [1569945555] = 'p_s_scuba_tank_s', + [220926652] = 'p_seabed_whalebones', + [-821715369] = 'p_sec_case_02_s', + [-660683845] = 'p_sec_gate_01_s_col', + [-859846705] = 'p_sec_gate_01_s', + [-586091884] = 'p_secret_weapon_02', + [-834831712] = 'p_shoalfish_s', + [-1550153628] = 'p_shower_towel_s', + [-1048509434] = 'p_single_rose_s', + [-788483932] = 'p_skiprope_r_s', + [1359588858] = 'p_smg_holster_01_s', + [733015881] = 'p_sofa_s', + [1196890646] = 'p_soloffchair_s', + [-1268267712] = 'p_spinning_anus_s', + [-656602706] = 'p_steve_scuba_hood_s', + [795100068] = 'p_stinger_02', + [1276148988] = 'p_stinger_03', + [-596599738] = 'p_stinger_04', + [1991736182] = 'p_stinger_piece_01', + [763062523] = 'p_stinger_piece_02', + [1053590205] = 'p_stretch_necklace_s', + [260344606] = 'p_sub_crane_s', + [-1113650340] = 'p_sunglass_m_s', + [-298630371] = 'p_syringe_01_s', + [452397669] = 'p_t_shirt_pile_s', + [-382431567] = 'p_tennis_bag_01_s', + [892543765] = 'p_till_01_s', + [-14292445] = 'p_tmom_earrings_s', + [-2083166171] = 'p_tourist_map_01_s', + [774425122] = 'p_tram_crash_s', + [1052341626] = 'p_trev_rope_01_s', + [-1211793417] = 'p_trev_ski_mask_s', + [-1107883581] = 'p_trevor_prologe_bally_s', + [1481705834] = 'p_tumbler_01_bar_s', + [1480049515] = 'p_tumbler_01_s', + [9730626] = 'p_tumbler_01_trev_s', + [788975200] = 'p_tumbler_02_s1', + [227213780] = 'p_tumbler_cs2_s_day', + [1384562503] = 'p_tumbler_cs2_s_trev', + [-1533900808] = 'p_tumbler_cs2_s', + [-1821020865] = 'p_tv_cam_02_s', + [1089807209] = 'p_v_43_safe_s', + [-532050425] = 'p_v_ilev_chopshopswitch_s', + [1593135630] = 'p_v_med_p_sofa_s', + [-1211387925] = 'p_v_res_tt_bed_s', + [1041628835] = 'p_w_ar_musket_chrg', + [469594741] = 'p_w_grass_gls_s', + [1428248303] = 'p_wade_necklace_s', + [-935222204] = 'p_watch_01_s', + [1937367659] = 'p_watch_01', + [-1855510517] = 'p_watch_02_s', + [1169295068] = 'p_watch_02', + [133193419] = 'p_watch_03_s', + [1597848050] = 'p_watch_03', + [-1330553639] = 'p_watch_04', + [-1052312060] = 'p_watch_05', + [-1929013886] = 'p_watch_06', + [1122483751] = 'p_waterboardc_s', + [-1981517174] = 'p_wboard_clth_s', + [2021859795] = 'p_weed_bottle_s', + [488156118] = 'p_whiskey_bottle_s', + [6840295] = 'p_whiskey_notop_empty', + [-1051179078] = 'p_whiskey_notop', + [-1364166376] = 'p_winch_long_s', + [-35679191] = 'p_wine_glass_s', + [604553643] = 'p_yacht_chair_01_s', + [1532110050] = 'p_yacht_sofa_01_s', + [876225403] = 'p_yoga_mat_01_s', + [900603612] = 'p_yoga_mat_02_s', + [-2137918589] = 'p_yoga_mat_03_s', + [569305213] = 'packer', + [-431692672] = 'panto', + [1488164764] = 'paradise', + [-808457413] = 'patriot', + [-2007026063] = 'pbus', + [-909201658] = 'pcj', + [-1758137366] = 'penetrator', + [-377465520] = 'penumbra', + [1830407356] = 'peyote', + [-1829802492] = 'pfister811', + [-2137348917] = 'phantom', + [-1649536104] = 'phantom2', + [-2095439403] = 'phoenix', + [-1624416230] = 'physics_glasses', + [-435372404] = 'physics_hat', + [780047980] = 'physics_hat2', + [1507916787] = 'picador', + [1078682497] = 'pigalle', + [1479397204] = 'pil_p_para_bag_pilot_s', + [-2124524821] = 'pil_p_para_pilot_sp_s', + [-284254006] = 'pil_prop_fs_safedoor', + [2112939163] = 'pil_prop_fs_target_01', + [1806057478] = 'pil_prop_fs_target_02', + [683260466] = 'pil_prop_fs_target_03', + [1400495203] = 'pil_prop_fs_target_base', + [-28585071] = 'pil_prop_pilot_icon_01', + [-1692214353] = 'player_one', + [-1686040670] = 'player_two', + [225514697] = 'player_zero', + [-1199815829] = 'plg_01_animlight_003', + [964150636] = 'plg_01_animlight_004', + [-1220873354] = 'plg_01_animlight_01', + [-2013784847] = 'plg_01_animlight_02', + [731100675] = 'plg_01_arm_00_lod', + [1661073969] = 'plg_01_arm_00_slod', + [-1410742344] = 'plg_01_arm_00', + [-932633546] = 'plg_01_arm_01_lod', + [-272025418] = 'plg_01_arm_01_slod', + [-1715657889] = 'plg_01_arm_01', + [479822626] = 'plg_01_arm_02_lod', + [-556860947] = 'plg_01_arm_02_slod', + [-2010218430] = 'plg_01_arm_02', + [2088201014] = 'plg_01_arm_03_lod', + [346076238] = 'plg_01_arm_03_slod', + [1997037046] = 'plg_01_arm_03', + [-892088734] = 'plg_01_baleiref_01', + [2132257033] = 'plg_01_baleiref_lod', + [804108574] = 'plg_01_baleiref_lod01', + [-644445071] = 'plg_01_baleiref_lod02', + [1137860839] = 'plg_01_baleiref_lod03', + [1740810439] = 'plg_01_baleiref_lod04', + [1491405580] = 'plg_01_baleiref_lod05', + [589438855] = 'plg_01_baleiref_lod06', + [-1938296271] = 'plg_01_baleiref_lod07', + [-1334298063] = 'plg_01_baleiref_lod08', + [-1594025157] = 'plg_01_baleiref_lod09', + [-1356417350] = 'plg_01_baleiref_lod10', + [-1721529548] = 'plg_01_baleiref_lod11', + [1101749177] = 'plg_01_baleiref_lod12', + [862240556] = 'plg_01_baleiref_lod13', + [1163665718] = 'plg_01_barn_lod', + [-963128503] = 'plg_01_barn_slod', + [-317265306] = 'plg_01_barn1_slod', + [429186029] = 'plg_01_barn2_lod', + [-1267126365] = 'plg_01_batch_lod', + [-182173701] = 'plg_01_c_iref_lod', + [1675128922] = 'plg_01_c_iref_lod01', + [1809285132] = 'plg_01_c_iref_lod02', + [-2091537556] = 'plg_01_cables_heavy0', + [1821129343] = 'plg_01_cables_heavy001', + [1912161625] = 'plg_01_cables_heavy002', + [2139218026] = 'plg_01_cables_heavy003', + [-1777070706] = 'plg_01_cables_heavy004', + [-188344476] = 'plg_01_cables_heavy01', + [703332783] = 'plg_01_cables_heavy02', + [389274687] = 'plg_01_cables_heavy03', + [-561124624] = 'plg_01_cables_heavy04', + [-1376843341] = 'plg_01_cables_heavy05', + [50508765] = 'plg_01_cables_heavy06', + [-800436631] = 'plg_01_cables_heavy07', + [-1106153153] = 'plg_01_cables_light', + [813686258] = 'plg_01_cables_light01', + [671011333] = 'plg_01_cf_1_lod', + [-1289491932] = 'plg_01_cf_2_lod', + [-975704197] = 'plg_01_cf_2_slod1', + [185408256] = 'plg_01_chopped_field_lod', + [1415212342] = 'plg_01_chopped_field', + [1984602315] = 'plg_01_chopped_field04', + [-2056504744] = 'plg_01_chopped_field05_lod', + [208850201] = 'plg_01_chopped_field05', + [-75454038] = 'plg_01_chopped_field06_lod', + [-1161975380] = 'plg_01_chopped_field06', + [1436180327] = 'plg_01_chopped_field09', + [1598124957] = 'plg_01_chopped_field10', + [-75387873] = 'plg_01_chopped_field11', + [1759625366] = 'plg_01_dutchbarn_d', + [1652291972] = 'plg_01_dutchbarn', + [1857338341] = 'plg_01_fence_00_lod', + [-972187528] = 'plg_01_fence_01_lod', + [-588622459] = 'plg_01_fence_02_lod', + [499534595] = 'plg_01_fence_03_lod', + [1619474278] = 'plg_01_fence_04_lod', + [-1717558890] = 'plg_01_fence_05_lod', + [-1466169775] = 'plg_01_fence_06_lod', + [-696092019] = 'plg_01_fence_07_lod', + [-1556742175] = 'plg_01_fence_08_lod', + [-1570079618] = 'plg_01_fence_09_lod', + [-626094069] = 'plg_01_fence_10_lod', + [-21934564] = 'plg_01_fence_11_lod', + [-931103058] = 'plg_01_fence_12_lod', + [1416968082] = 'plg_01_fence_13_lod', + [-1782253704] = 'plg_01_fence_14_lod', + [-1971893412] = 'plg_01_fence_15_lod', + [473135295] = 'plg_01_field_hi_1_slod', + [-1573424923] = 'plg_01_field_hi_1a_lod', + [772009890] = 'plg_01_field_hi_1a', + [-343425612] = 'plg_01_field_hi_1b_lod', + [1941043961] = 'plg_01_field_hi_1b', + [1743524091] = 'plg_01_field_hi_1c_lod', + [1227859445] = 'plg_01_field_hi_1c', + [665022958] = 'plg_01_field_hi_1d_lod', + [-100628552] = 'plg_01_field_hi_1d', + [-313444937] = 'plg_01_field_hi_1e_lod', + [599841592] = 'plg_01_field_hi_1e', + [-1811151056] = 'plg_01_field_hi_1f_lod', + [1435877085] = 'plg_01_field_hi_1f', + [-504798613] = 'plg_01_field_hi_2_d', + [-2062810657] = 'plg_01_field_hi_2_lod', + [-1901241809] = 'plg_01_field_hi_2', + [-1358296223] = 'plg_01_hay_lod', + [889414298] = 'plg_01_hed_slod', + [1472425979] = 'plg_01_hed_slod01', + [-993965619] = 'plg_01_hed_slod03', + [1916865826] = 'plg_01_hedgepush02a_d', + [-531708493] = 'plg_01_hedgepush02a_lod', + [-1927310773] = 'plg_01_hedgepush02a', + [1242995074] = 'plg_01_hedgepush02b_d', + [-1007331308] = 'plg_01_hedgepush02b_lod', + [1438653006] = 'plg_01_hedgepush02b_slod', + [1750091945] = 'plg_01_hedgepush02b', + [1335318007] = 'plg_01_hedgepush19a_d', + [-908397736] = 'plg_01_hedgepush19a_lod', + [-72969903] = 'plg_01_hedgepush19a', + [-1716612273] = 'plg_01_hedgepush19b_d', + [1253907362] = 'plg_01_hedgepush19b_lod', + [158182623] = 'plg_01_hedgepush19b', + [897076999] = 'plg_01_hedgepush2_slod', + [45694131] = 'plg_01_hedgepush20_d', + [971836008] = 'plg_01_hedgepush20_lod', + [1305310746] = 'plg_01_hedgepush20', + [-865887703] = 'plg_01_hedgepush22a_d', + [-924439130] = 'plg_01_hedgepush22a_lod', + [-1880245974] = 'plg_01_hedgepush22a', + [-152726644] = 'plg_01_hedgepush22b_d', + [-2056668604] = 'plg_01_hedgepush22b_lod', + [-2103173481] = 'plg_01_hedgepush22b', + [-880721772] = 'plg_01_hedgepush23_slod', + [121289761] = 'plg_01_hedgepush23a_d', + [1183138991] = 'plg_01_hedgepush23a_lod', + [-1409778265] = 'plg_01_hedgepush23a', + [1011557372] = 'plg_01_hedgepush23b_d', + [2114391844] = 'plg_01_hedgepush23b_lod', + [800949575] = 'plg_01_hedgepush23b', + [-1815131782] = 'plg_01_hedgepush24_d', + [670728849] = 'plg_01_hedgepush24_lod', + [1594759323] = 'plg_01_hedgepush24', + [-1893067277] = 'plg_01_hedgepush25_d', + [-553803484] = 'plg_01_hedgepush25_lod', + [1171777055] = 'plg_01_hedgepush25', + [-1939433776] = 'plg_01_hedgepush28_d', + [1448615657] = 'plg_01_hedgepush28_lod', + [897205604] = 'plg_01_hedgepush28', + [215830364] = 'plg_01_hedgepush31a_d', + [1502813941] = 'plg_01_hedgepush31a_lod', + [1806537383] = 'plg_01_hedgepush31a', + [-1939635093] = 'plg_01_hedgepush31b_d', + [1492145986] = 'plg_01_hedgepush31b_lod', + [2118072266] = 'plg_01_hedgepush31b', + [2072063320] = 'plg_01_hedgepush34_slod', + [-1441494761] = 'plg_01_hedgepush34a_d', + [1385065662] = 'plg_01_hedgepush34a_lod', + [253256330] = 'plg_01_hedgepush34a', + [-1747587042] = 'plg_01_hedgepush34b_d', + [648818976] = 'plg_01_hedgepush34b_lod', + [1207391303] = 'plg_01_hedgepush34b', + [-931186497] = 'plg_01_hedgepush35_slod', + [751182727] = 'plg_01_hedgepush35a_d', + [-1874125355] = 'plg_01_hedgepush35a_lod', + [-1712917855] = 'plg_01_hedgepush35a', + [-849658213] = 'plg_01_hedgepush35b_d', + [1103217253] = 'plg_01_hedgepush35b_lod', + [-1423403740] = 'plg_01_hedgepush35b', + [1869523448] = 'plg_01_lgfnc1iref_', + [-248439925] = 'plg_01_lgfnc2iref_', + [166862493] = 'plg_01_ml_hedge_0_slod', + [-131526851] = 'plg_01_ml_hedge_01_d', + [1075798954] = 'plg_01_ml_hedge_01_lod', + [-1361639440] = 'plg_01_ml_hedge_01', + [-1822413104] = 'plg_01_ml_hedge_02_d', + [-1254088801] = 'plg_01_ml_hedge_02_lod', + [1201944976] = 'plg_01_ml_hedge_02', + [1249930546] = 'plg_01_ml_hedge_03_d', + [-939756965] = 'plg_01_ml_hedge_03_lod', + [-1721803515] = 'plg_01_ml_hedge_03', + [2054865746] = 'plg_01_ml_hedge_031', + [-1255173224] = 'plg_01_ml_hedge_04_d', + [1588327595] = 'plg_01_ml_hedge_04_lod', + [-1555402533] = 'plg_01_ml_hedge_04', + [-1025819104] = 'plg_01_ml_hedge_05_d', + [134101942] = 'plg_01_ml_hedge_05_lod', + [1963693150] = 'plg_01_ml_hedge_05', + [-740223304] = 'plg_01_ml_hedge_06_d', + [-192100418] = 'plg_01_ml_hedge_06_lod', + [-138569280] = 'plg_01_ml_hedge_06', + [-215713474] = 'plg_01_ml_hedge_07_d', + [1670245211] = 'plg_01_ml_hedge_07_lod', + [159661389] = 'plg_01_ml_hedge_07', + [-853231067] = 'plg_01_ml_hedge_08_d', + [509365618] = 'plg_01_ml_hedge_08_lod', + [1450301227] = 'plg_01_ml_hedge_08', + [1295583172] = 'plg_01_ml_hedge_09_d', + [730429347] = 'plg_01_ml_hedge_09_lod', + [1697608870] = 'plg_01_ml_hedge_09', + [-527159101] = 'plg_01_ml_hedge_1_slod', + [1745541696] = 'plg_01_ml_hedge_10_d', + [-478736029] = 'plg_01_ml_hedge_10_lod', + [-176311264] = 'plg_01_ml_hedge_10', + [2096755470] = 'plg_01_ml_hedge_11_d', + [355504964] = 'plg_01_ml_hedge_11_lod', + [-454094077] = 'plg_01_ml_hedge_11', + [-974500673] = 'plg_01_ml_hedge_12_d', + [-1441274526] = 'plg_01_ml_hedge_12_lod', + [1104465105] = 'plg_01_ml_hedge_12', + [-1599234423] = 'plg_01_ml_hedge_13_d', + [-1221956669] = 'plg_01_ml_hedge_13_lod', + [796862502] = 'plg_01_ml_hedge_13', + [-1744768818] = 'plg_01_ml_hedge_14_d', + [-1347144117] = 'plg_01_ml_hedge_14_lod', + [-202395396] = 'plg_01_ml_hedge_14', + [-236147911] = 'plg_01_ml_hedge_15_d', + [-1937389169] = 'plg_01_ml_hedge_15_lod', + [97080495] = 'plg_01_ml_hedge_15', + [1727081184] = 'plg_01_ml_hedge_16_d', + [29050018] = 'plg_01_ml_hedge_16_lod', + [1091226421] = 'plg_01_ml_hedge_16', + [-997829602] = 'plg_01_ml_hedge_17_d', + [1125761721] = 'plg_01_ml_hedge_17_lod', + [1396010890] = 'plg_01_ml_hedge_17', + [946067728] = 'plg_01_ml_hedge_18_d', + [2022491586] = 'plg_01_ml_hedge_18_lod', + [-1162494327] = 'plg_01_ml_hedge_18', + [-956444150] = 'plg_01_ml_hedge_19_d', + [-296805014] = 'plg_01_ml_hedge_19_lod', + [-1127103807] = 'plg_01_ml_hedge_19', + [-1314719436] = 'plg_01_ml_hedge_20_d', + [149536328] = 'plg_01_ml_hedge_20_lod', + [-2060987810] = 'plg_01_ml_hedge_20', + [-1454022730] = 'plg_01_ml_hedge_21_d', + [-231625605] = 'plg_01_ml_hedge_21_lod', + [1944891368] = 'plg_01_ml_hedge_21', + [388425930] = 'plg_01_ml_hedge_22_d', + [-401033780] = 'plg_01_ml_hedge_22_lod', + [-229954397] = 'plg_01_ml_hedge_22', + [-1776570810] = 'plg_01_ml_hedge_23_d', + [-1821196456] = 'plg_01_ml_hedge_23_lod', + [-535263170] = 'plg_01_ml_hedge_23', + [408335847] = 'plg_01_ml_hedge_25_d', + [725678707] = 'plg_01_ml_hedge_25_lod', + [1015070993] = 'plg_01_ml_hedge_25', + [-1380443270] = 'plg_01_ml_hedge_26_d', + [-2112409332] = 'plg_01_ml_hedge_26_lod', + [-1153188203] = 'plg_01_ml_hedge_26', + [-2007034318] = 'plg_01_ml_hedge_27_d', + [-826390438] = 'plg_01_ml_hedge_27_lod', + [-1459807736] = 'plg_01_ml_hedge_27', + [1627546418] = 'plg_01_ml_hedge_28_d', + [-170251627] = 'plg_01_ml_hedge_28_lod', + [399177634] = 'plg_01_ml_hedge_28', + [2103601809] = 'plg_01_ml_hedge_29_d', + [961156167] = 'plg_01_ml_hedge_29_lod', + [92361487] = 'plg_01_ml_hedge_29', + [-429380169] = 'plg_01_ml_hedge_30_d', + [-493952491] = 'plg_01_ml_hedge_30_lod', + [686792007] = 'plg_01_ml_hedge_30', + [2092306547] = 'plg_01_ml_hedge_31_d', + [805218369] = 'plg_01_ml_hedge_31_lod', + [275239183] = 'plg_01_ml_hedge_32_d', + [-184167006] = 'plg_01_ml_hedge_32_lod', + [-2073897940] = 'plg_01_ml_hedge_32', + [-722380858] = 'plg_01_ml_hedge_33_d', + [569969206] = 'plg_01_ml_hedge_33_lod', + [1613794248] = 'plg_01_ml_hedge_33', + [-2022519538] = 'plg_01_ml_hedge_slod', + [1549507918] = 'plg_01_ml_hedge_slod01', + [-1976076027] = 'plg_01_ml_hedge_slod02', + [1104235804] = 'plg_01_newfield_small_lod', + [-1560465259] = 'plg_01_newfield_small', + [1712954028] = 'plg_01_newfield_sml_slod', + [-570290953] = 'plg_01_newfield_sml_west_decal', + [490826912] = 'plg_01_newfield_sml_west_lod', + [-419653276] = 'plg_01_newfield_sml_west', + [1190765642] = 'plg_01_newfields_00_d', + [1309887542] = 'plg_01_newfields_00_d3', + [-2115788026] = 'plg_01_newfields_00', + [1543154546] = 'plg_01_newfields_003_decals', + [-1186245224] = 'plg_01_newfields_003_lod', + [569842621] = 'plg_01_newfields_003', + [-944345132] = 'plg_01_newfields_004_d2', + [-1067126721] = 'plg_01_newfields_004_lod', + [1892828010] = 'plg_01_newfields_004_lod001', + [-1871742808] = 'plg_01_newfields_004', + [2038960811] = 'plg_01_newfields_01_d2', + [769485145] = 'plg_01_newfields_01_decals', + [-1847442685] = 'plg_01_newfields_01', + [1954643308] = 'plg_01_newfields_020_d2', + [540964333] = 'plg_01_newfields_020_decals', + [-1810718975] = 'plg_01_newfields_020_lod', + [-1335511464] = 'plg_01_newfields_020', + [511677070] = 'plg_01_newfields_022', + [-1133318739] = 'plg_01_newfields_023_lod', + [1621966836] = 'plg_01_newfields_023_slod', + [1421541124] = 'plg_01_newfields_023', + [-2103260942] = 'plg_01_newfields_03_d2', + [537669157] = 'plg_01_newfields_03_decals', + [-396298246] = 'plg_01_newfields_03_lod', + [-1002702385] = 'plg_01_newfields_03_new', + [-1468390100] = 'plg_01_newfields_04_decal', + [-592488292] = 'plg_01_newfields_05', + [-1686571798] = 'plg_01_newfields_06_d4', + [604938084] = 'plg_01_newfields_06_decals', + [-1979446670] = 'plg_01_newfields_06_lod', + [-360942538] = 'plg_01_newfields_06', + [-114617965] = 'plg_01_newfields_07', + [1348743348] = 'plg_01_newfields_08_d2', + [-621892736] = 'plg_01_newfields_08_decals', + [1190252873] = 'plg_01_newfields_08_lod', + [1881108745] = 'plg_01_newfields_08_slod1', + [400248563] = 'plg_01_newfields_08', + [668528366] = 'plg_01_newfields_09', + [-371010286] = 'plg_01_newfields_10_decals', + [-1210675193] = 'plg_01_newfields_10', + [206924349] = 'plg_01_newfields_13_d1b', + [600131496] = 'plg_01_newfields_13_d2', + [566493989] = 'plg_01_newfields_13_lod', + [26792102] = 'plg_01_newfields_13_slod', + [1268332406] = 'plg_01_newfields_13', + [-1782863560] = 'plg_01_newfields_19_decal', + [626008152] = 'plg_01_newfields_b_lod', + [-1384241385] = 'plg_01_newfields_b', + [-273320332] = 'plg_01_newfields_ml_100_lod', + [1547536298] = 'plg_01_newfields_ml_100', + [-1864442785] = 'plg_01_newfields2_slod', + [-1750486057] = 'plg_01_nico_new', + [-826571137] = 'plg_01_pipe_a_lod', + [-1026262315] = 'plg_01_pipe_lod', + [-1505889135] = 'plg_01_plough_field_01_d', + [-314420528] = 'plg_01_plough_field_01_lod', + [-1661509386] = 'plg_01_plough_field_01', + [-674955088] = 'plg_01_plough_field_02_d', + [-777390059] = 'plg_01_plough_field_02_lod', + [-1213515954] = 'plg_01_plough_field_02_slod', + [-1900362627] = 'plg_01_plough_field_02', + [1472328067] = 'plg_01_props_combo0101_01_lod', + [-199133255] = 'plg_01_props_combo0101_slod', + [65211705] = 'plg_01_props_combo0102_01_lod', + [558426351] = 'plg_01_props_combo0102_slod', + [-1799041668] = 'plg_01_props_combo0103_01_lod', + [1785634440] = 'plg_01_props_combo0103_slod', + [-367751100] = 'plg_01_props_combo0105_01_lod', + [-505150681] = 'plg_01_props_combo0105_slod', + [-415908415] = 'plg_01_props_combo0107_01_lod', + [-571504372] = 'plg_01_props_combo0107_slod', + [-188798036] = 'plg_01_props_combo0108_01_lod', + [925688682] = 'plg_01_props_combo0108_slod', + [-228870935] = 'plg_01_props_combo0109_17_lod', + [1838644921] = 'plg_01_props_combo0109_18_lod', + [-630972286] = 'plg_01_props_combo0110_02_lod', + [-1802714078] = 'plg_01_props_combo0110_03_lod', + [-1734767472] = 'plg_01_props_combo0111_01_lod', + [-672803352] = 'plg_01_props_combo0111_slod', + [281518649] = 'plg_01_props_combo0113_01_lod', + [-797905136] = 'plg_01_props_combo0113_slod', + [-519284608] = 'plg_01_props_combo0114_01_lod', + [341320456] = 'plg_01_props_combo0114_02_lod', + [-562811709] = 'plg_01_props_combo0114_03_lod', + [-1060750220] = 'plg_01_props_combo0114_04_lod', + [-626249560] = 'plg_01_props_combo0114_05_lod', + [1714771617] = 'plg_01_props_combo0114_slod', + [1384661741] = 'plg_01_props_combo0202_28_lod', + [-1889990624] = 'plg_01_props_combo0203_01_lod', + [984787315] = 'plg_01_props_combo0203_02_lod', + [-1319119928] = 'plg_01_props_combo0203_slod', + [-806328876] = 'plg_01_props_combo0205_08_lod', + [-2036970324] = 'plg_01_props_combo0205_slod', + [-300059301] = 'plg_01_props_combo0502_22_lod', + [-61003217] = 'plg_01_props_combo0502_23_lod', + [-795135886] = 'plg_01_props_combo0502_24_lod', + [890815671] = 'plg_01_props_combo0505_16_lod', + [623928960] = 'plg_01_props_combo0505_20_lod', + [-2049329705] = 'plg_01_props_combo0505_25_lod', + [635095162] = 'plg_01_props_combo0505_26_lod', + [-83047703] = 'plg_01_props_combo0505_27_lod', + [-1976739696] = 'plg_01_props_combo0505_slod', + [533048010] = 'plg_01_props_combo0705_36_lod', + [-477983664] = 'plg_01_props_combo0804_33_lod', + [-2077351609] = 'plg_01_props_combo0903_02_lod', + [-1653082454] = 'plg_01_props_combo0903_04_lod', + [-1757064678] = 'plg_01_props_combo0903_slod', + [-352489622] = 'plg_01_props_combo0905_08_lod', + [1465452143] = 'plg_01_props_combo0905_09_lod', + [2136093723] = 'plg_01_props_combo811_08_lod', + [-983344908] = 'plg_01_props_combo813_21_lod', + [1024758452] = 'plg_01_props_combo813_22_lod', + [-321785099] = 'plg_01_props_dt_029', + [2076185375] = 'plg_01_props_dt_043', + [70886768] = 'plg_01_props_dt_050', + [1199549663] = 'plg_01_props_dt_060', + [-1110369932] = 'plg_01_props_dt_063', + [1940653355] = 'plg_01_props_dt_067', + [-1089463022] = 'plg_01_props_dt_074', + [233978877] = 'plg_01_props_dt_080', + [-1805759977] = 'plg_01_props_dt_096', + [1641045147] = 'plg_01_props_dt_105', + [2146932885] = 'plg_01_props_dt_110', + [677523156] = 'plg_01_props_dt_148', + [-644967578] = 'plg_01_props_dt_167', + [939180771] = 'plg_01_props_dt_17', + [472651620] = 'plg_01_props_dt_178', + [-1989481676] = 'plg_01_props_dt_190', + [145779141] = 'plg_01_props_dt_197', + [-813749607] = 'plg_01_props_dt_207', + [-679232006] = 'plg_01_props_dt_217', + [2131823898] = 'plg_01_props_dt_219', + [-1561735341] = 'plg_01_props_dt_222', + [-1727054142] = 'plg_01_props_dt_234', + [1667241445] = 'plg_01_props_dt_260', + [-940056809] = 'plg_01_props_dt_263', + [-1439980673] = 'plg_01_props_dt_264', + [1830332914] = 'plg_01_props_dt_277', + [-313049515] = 'plg_01_props_dt_28', + [1098305431] = 'plg_01_props_dt_281', + [-2077338363] = 'plg_01_props_dt_288', + [2012782971] = 'plg_01_props_dtr1_002', + [-830322711] = 'plg_01_props_dtr1_024', + [-1779902793] = 'plg_01_props_dtr1_028', + [-853213731] = 'plg_01_props_dtr2_042', + [-805633147] = 'plg_01_props_dtr2_045', + [-1819407920] = 'plg_01_props_dtr2_053', + [-1266165927] = 'plg_01_props_l_014', + [-817656624] = 'plg_01_props_l_016', + [-635329908] = 'plg_01_props_l_017', + [-728588290] = 'plg_01_props_missioncut_01_lod', + [-1756532050] = 'plg_01_props_missioncut_02_lod', + [2086042080] = 'plg_01_rdside_bale_lod', + [-44036385] = 'plg_01_rdside_barn_01_bale_d', + [1620197581] = 'plg_01_rdside_barn_01_bale', + [104863745] = 'plg_01_rdside_barn_01_baleedge', + [-1317003766] = 'plg_01_rdside_barn_01_d20', + [-2130508683] = 'plg_01_rdside_barn_01_gnd_d', + [607166379] = 'plg_01_rdside_barn_01_hedge_d', + [169501508] = 'plg_01_rdside_barn_01_hedge', + [1186805405] = 'plg_01_rdside_barn_20', + [1458833311] = 'plg_01_rdsidebale_lod', + [493339308] = 'plg_01_rdsidebarn_01_edge', + [-173122791] = 'plg_01_rdsidebarn_02_bales_d', + [2115732618] = 'plg_01_rdsidebarn_02_bales_gnd', + [-1263493914] = 'plg_01_rdsidebarn_02_bales', + [516678120] = 'plg_01_rdsidebarn_02_d', + [-1759508677] = 'plg_01_rdsidebarn_02_lod', + [1035375927] = 'plg_01_rdsidebarn_02_slod', + [533203258] = 'plg_01_rdsidebarn_02', + [-1323187134] = 'plg_01_river_field_south_lod', + [1006548358] = 'plg_01_river_field_south_slod', + [2031157366] = 'plg_01_river_field_south', + [181948213] = 'plg_01_river_fld_decals', + [1132953862] = 'plg_01_rock', + [963220703] = 'plg_01_rocksflat', + [-414979326] = 'plg_01_roxside', + [-1041278568] = 'plg_01_shadow1', + [-858468290] = 'plg_01_slod', + [724068502] = 'plg_01_trafficl002', + [1135352221] = 'plg_01_trafficl005', + [1728962660] = 'plg_01_trafficl007', + [-1650305466] = 'plg_01riverpart00_lod', + [1026370802] = 'plg_01riverpart02_lod', + [-1786864579] = 'plg_01riverpart03_lod', + [873832954] = 'plg_01riversect00', + [-1526365236] = 'plg_01riversect02', + [384624553] = 'plg_01riversect03', + [2093942603] = 'plg_02_dist_007_lod', + [-1929139903] = 'plg_02_dist_007', + [2067932817] = 'plg_02_dist_008_lod', + [2134445484] = 'plg_02_dist_008', + [-1132693804] = 'plg_02_dist_01_lod', + [-540250604] = 'plg_02_dist_01', + [-836116783] = 'plg_02_dist_02_lod', + [-831927473] = 'plg_02_dist_02', + [-625210] = 'plg_02_dist_03_lod', + [-1569656138] = 'plg_02_dist_03', + [-1063814445] = 'plg_02_dist_ml_01_lod', + [-1741445559] = 'plg_02_dist_ml_01', + [407971214] = 'plg_02_dist_ml_02_lod', + [-428490036] = 'plg_02_dist_ml_02', + [1710974121] = 'plg_02_dist_ml_03_lod', + [1286836042] = 'plg_02_dist_ml_03', + [1665136347] = 'plg_02_dist_ml_04_lod', + [1495935031] = 'plg_02_dist_ml_04', + [370568754] = 'plg_02_dist_west_001_lod', + [-149379519] = 'plg_02_dist_west_001', + [628418709] = 'plg_02_dist_west_002_lod', + [-446823732] = 'plg_02_dist_west_002', + [386576658] = 'plg_02_dist_west_003_lod', + [-16599535] = 'plg_02_dist_west_003', + [-1294631342] = 'plg_02_dist_west_004_lod', + [-314043748] = 'plg_02_dist_west_004', + [1552789555] = 'plg_02_disttrees_02', + [2051337121] = 'plg_02_disttrees_03', + [-827222919] = 'plg_02_disttrees_04', + [-588304140] = 'plg_02_disttrees_05', + [1096120767] = 'plg_02_disttrees_07', + [-107189678] = 'plg_02_disttrees_08', + [-1593803832] = 'plg_02_disttrees_10', + [1001730403] = 'plg_02_disttrees_12', + [801610120] = 'plg_02_disttrees_13', + [1472948623] = 'plg_02_disttrees_14', + [1232850160] = 'plg_02_disttrees_15', + [-214622108] = 'plg_02_disttrees_16', + [-760389811] = 'plg_02_disttrees_18', + [-520094734] = 'plg_02_disttrees_19', + [783521868] = 'plg_02_disttrees_20', + [1089354945] = 'plg_02_disttrees_21', + [1265062323] = 'plg_02_disttrees_22', + [1571616318] = 'plg_02_disttrees_23', + [2063806750] = 'plg_02_disttrees_24', + [1804672157] = 'plg_02_fence_track1', + [-1696367799] = 'plg_02_fence_track2', + [-187289322] = 'plg_02_mountain_01', + [1038893889] = 'plg_02_mountain_02', + [1482192921] = 'plg_02_mountain_03', + [-400746548] = 'plg_02_mountain_04', + [-168774797] = 'plg_02_mountain_05', + [792348729] = 'plg_02_props_temp', + [617406285] = 'plg_02_westdisttrees3', + [-1667252929] = 'plg_03_back_ovly', + [2009407472] = 'plg_03_bale_iref024', + [1288672732] = 'plg_03_bale', + [2138509298] = 'plg_03_bale01_lod', + [342772625] = 'plg_03_bale02_lod', + [-1082363404] = 'plg_03_bale02b_lod', + [1981540230] = 'plg_03_bale02c_lod', + [-712611427] = 'plg_03_bale03_lod', + [-718642871] = 'plg_03_barn001_lod', + [615202506] = 'plg_03_barn001', + [1279475256] = 'plg_03_barnovly001', + [1101962579] = 'plg_03_bespokerail', + [-634083426] = 'plg_03_bush_cs', + [-90060616] = 'plg_03_carpark_wall_lod', + [-991719890] = 'plg_03_carpark_wall', + [-1108302560] = 'plg_03_cbush_01', + [-1405615697] = 'plg_03_cbush_02', + [-509711237] = 'plg_03_cbush_03', + [-807876368] = 'plg_03_cbush_04', + [997702403] = 'plg_03_church_lod', + [-1660476187] = 'plg_03_church', + [1096305097] = 'plg_03_crypts_lod', + [-1582666845] = 'plg_03_decals_road', + [-2012588507] = 'plg_03_decals_road2', + [-1739839152] = 'plg_03_eastgate', + [-1540538612] = 'plg_03_em_slod', + [-1478689000] = 'plg_03_f_2x_lod', + [991747046] = 'plg_03_f_2x_lod01', + [-850526134] = 'plg_03_f_2x_lod02', + [-562388281] = 'plg_03_f_2x_lod03', + [34957820] = 'plg_03_f_2x_lod05', + [-1748134546] = 'plg_03_f_2x_lod08', + [544121710] = 'plg_03_f_2x_lod10', + [387612991] = 'plg_03_fence_c_lod', + [1166920843] = 'plg_03_fence_j_lod', + [1926549193] = 'plg_03_fence_l_lod', + [-180055716] = 'plg_03_fence_m_lod', + [1537597810] = 'plg_03_fence_n_lod', + [1561800695] = 'plg_03_fence', + [-246605656] = 'plg_03_field_east_lod', + [-42566323] = 'plg_03_field_east_ovly_a', + [827581703] = 'plg_03_field_east_ovly_b', + [462666119] = 'plg_03_field_east_ovly_c', + [1351582474] = 'plg_03_field_east', + [2071619895] = 'plg_03_field_west_b_lod', + [162843384] = 'plg_03_field_west_b', + [-1092490060] = 'plg_03_field_west_lod', + [928253622] = 'plg_03_field_west', + [-58451859] = 'plg_03_fncsec_besp', + [1701524682] = 'plg_03_fncsec_besp001', + [376442900] = 'plg_03_fncsec_besp10', + [1663770254] = 'plg_03_fncsec_besp3', + [-2067799625] = 'plg_03_fncsec_besp5', + [670410780] = 'plg_03_fncsec_besp7', + [1534791462] = 'plg_03_fncsec_besp9', + [332308443] = 'plg_03_fncsec_bsp', + [-202333048] = 'plg_03_fncsec_bspk_lod', + [-146472397] = 'plg_03_fncsec_bspk', + [508007395] = 'plg_03_fncsec_ibesp4', + [692959781] = 'plg_03_fncsec', + [-940639402] = 'plg_03_foliage_o', + [-2034604468] = 'plg_03_foliage002', + [863897858] = 'plg_03_foliage01', + [778694522] = 'plg_03_foliage1_lod', + [-309787927] = 'plg_03_foliage2_lod', + [1355047645] = 'plg_03_grave_covered_lod', + [182214304] = 'plg_03_grave_covered', + [-626037186] = 'plg_03_grave_dug_lod', + [245161238] = 'plg_03_grave_dug', + [1522853652] = 'plg_03_grave_funeral', + [1320632924] = 'plg_03_grave_lod', + [20866338] = 'plg_03_grave', + [253499342] = 'plg_03_graveb_lod', + [1126973471] = 'plg_03_graveb', + [1757105101] = 'plg_03_graverail001', + [-2098673288] = 'plg_03_graves_section_0', + [1448395803] = 'plg_03_graves_section_01_lod', + [361051797] = 'plg_03_graves_section_01', + [-1686110125] = 'plg_03_graves_section_02_lod', + [456901122] = 'plg_03_graves_section_02', + [-499604809] = 'plg_03_graves_section_03_lod', + [791603688] = 'plg_03_graves_section_03', + [174760024] = 'plg_03_graves_section_04', + [2137605589] = 'plg_03_graves_sl_03_lod', + [1179728976] = 'plg_03_graves_sl_03', + [1576900079] = 'plg_03_graves_sl_n_04', + [-880781787] = 'plg_03_ground_shed_lod', + [1739587515] = 'plg_03_ground_shed', + [1208518257] = 'plg_03_ground007_lod', + [602197453] = 'plg_03_ground007', + [-964981] = 'plg_03_ground01_back', + [452575684] = 'plg_03_ground01_lod', + [175296053] = 'plg_03_ground01', + [-1157609895] = 'plg_03_ground04_2_lod', + [2000229415] = 'plg_03_ground04_2', + [1009988021] = 'plg_03_ground04', + [-641783316] = 'plg_03_ground1_lod', + [516810711] = 'plg_03_ground1', + [-327984951] = 'plg_03_ground2_lod', + [1057630179] = 'plg_03_ground2', + [1469059867] = 'plg_03_ground3_lod', + [-956186923] = 'plg_03_guttering_lod', + [60200978] = 'plg_03_guttering', + [633085181] = 'plg_03_hedga_lod', + [1415124595] = 'plg_03_hedge01', + [805307282] = 'plg_03_hedge01a_lod', + [1968173218] = 'plg_03_hedge01b_lod', + [-1370596411] = 'plg_03_hedge01b', + [1308200150] = 'plg_03_hedge05_lod', + [-1853647548] = 'plg_03_hedge05a', + [-925412197] = 'plg_03_hedge05c_split_lod', + [39427458] = 'plg_03_hedge05c_split', + [1760198347] = 'plg_03_hedge06_ml_lod', + [262122300] = 'plg_03_hedge06_ml', + [-706189435] = 'plg_03_hej_lod01', + [181948776] = 'plg_03_hej_lod02', + [-860113961] = 'plg_03_hej', + [-70210432] = 'plg_03_hej01', + [-309915667] = 'plg_03_hej02', + [2146553893] = 'plg_03_maingatenew_lod', + [-2059585668] = 'plg_03_maingatenew', + [-542742753] = 'plg_03_ml_bespin_lod', + [-1979691237] = 'plg_03_ml_bespin', + [-1767307857] = 'plg_03_ml_carpark_lod', + [1862358318] = 'plg_03_ml_carpark', + [-1178850717] = 'plg_03_ml_carpark2_lod', + [883876272] = 'plg_03_ml_carpark2', + [1449333834] = 'plg_03_ml_gate_01', + [-399086629] = 'plg_03_neverdeleteme', + [534788335] = 'plg_03_ovly_carpark', + [-434582850] = 'plg_03_ovly_crossing', + [-1887587678] = 'plg_03_ovly_foliage_carpark', + [204556553] = 'plg_03_ovly_railw_2', + [-148612694] = 'plg_03_ovly_railw', + [-1257374171] = 'plg_03_ovly_road', + [-1507177503] = 'plg_03_ovly04', + [-740250072] = 'plg_03_plg03_night_lod', + [-2047988178] = 'plg_03_plg03_night', + [-1319886726] = 'plg_03_props_combo01_01_lod', + [1685669272] = 'plg_03_props_combo02_01_lod', + [-924214414] = 'plg_03_props_combo02_02_lod', + [1256226899] = 'plg_03_props_combo03_01_lod', + [-200219885] = 'plg_03_props_combo03_02_lod', + [-871958093] = 'plg_03_props_combo03_03_lod', + [-1193949214] = 'plg_03_props_combo03_04_lod', + [-686917108] = 'plg_03_props_combo03_05_lod', + [2082753908] = 'plg_03_props_combo03_06_lod', + [-1356890239] = 'plg_03_props_combo03_08_lod', + [-703656429] = 'plg_03_props_combo03_09_lod', + [-855994283] = 'plg_03_props_gs_00_lod', + [-1458644144] = 'plg_03_props_gs_01_lod', + [2070038520] = 'plg_03_props_gs_02_lod', + [164618499] = 'plg_03_props_gs_03_lod', + [-145753217] = 'plg_03_props_gs_04_lod', + [-1230803540] = 'plg_03_props_gs_05_lod', + [1803009660] = 'plg_03_props_gs_06_lod', + [-1970205845] = 'plg_03_props_gs_07_lod', + [296799822] = 'plg_03_props_gs_08_lod', + [972779133] = 'plg_03_props_gs_09_lod', + [1833124671] = 'plg_03_props_gs_10_lod', + [-1949278168] = 'plg_03_props_gs_11_lod', + [1309768609] = 'plg_03_props_gs_12_lod', + [239606818] = 'plg_03_props_gs_13_lod', + [1270330989] = 'plg_03_props_gs_14_lod', + [181670506] = 'plg_03_props_gs_15_lod', + [-1147007169] = 'plg_03_props_gs_16_lod', + [-1164898420] = 'plg_03_props_gs_17_lod', + [-1753408870] = 'plg_03_props_gs_18_lod', + [1371908414] = 'plg_03_props_gs_19_lod', + [-1774937005] = 'plg_03_props_gs_20_lod', + [-358515230] = 'plg_03_props_gs_21_lod', + [-1936219959] = 'plg_03_props_gs_22_lod', + [1397994711] = 'plg_03_props_gs_23_lod', + [1923831213] = 'plg_03_props_gs_24_lod', + [1125253733] = 'plg_03_props_gs_25_lod', + [-1477732596] = 'plg_03_props_gs_26_lod', + [-326163309] = 'plg_03_props_gs_27_lod', + [1397206805] = 'plg_03_railembox', + [1773236014] = 'plg_03_railembox001', + [1475136421] = 'plg_03_railembox002', + [91104929] = 'plg_03_railembox003', + [-654069133] = 'plg_03_railschurch_lod', + [-70675832] = 'plg_03_railschurch', + [-1127970865] = 'plg_03_railschurch2_lod', + [-396992522] = 'plg_03_railschurch2', + [-1527365464] = 'plg_03_railschurch2a_lod', + [779337937] = 'plg_03_railschurch2aa_lod', + [-1110657925] = 'plg_03_railschurch2aa', + [-910096704] = 'plg_03_side_ground_lod', + [-1373194521] = 'plg_03_side_ground', + [-105889249] = 'plg_03_sign_lod', + [-282045546] = 'plg_03_sign', + [-1419446761] = 'plg_03_slod1_a', + [2115148659] = 'plg_03_slod1_b', + [-2000703283] = 'plg_03_slod1_c', + [1246241871] = 'plg_03_spx1', + [1005750180] = 'plg_03_spx2', + [650337606] = 'plg_03_spx3', + [275787936] = 'plg_03_spx4', + [-1754546663] = 'plg_03_spx5', + [-2051269958] = 'plg_03_spx6', + [1838607084] = 'plg_03_spx7', + [860549279] = 'plg_03_tomb_002_lod', + [-1501871278] = 'plg_03_tomb_003_lod', + [714944358] = 'plg_03_tomb_004_lod', + [254697501] = 'plg_03_tomb_004', + [1916618929] = 'plg_03_tomb_005_lod', + [-430698903] = 'plg_03_tomb_005', + [-481361836] = 'plg_03_tomb_006_lod', + [132221767] = 'plg_03_tomb_007_lod', + [526690140] = 'plg_03_tomb_008_lod', + [-397173408] = 'plg_03_tomb_009_lod', + [1176264558] = 'plg_03_tomb_01_lod', + [-332312620] = 'plg_03_tomb_010_lod', + [943174483] = 'plg_03_tomb_011', + [173594518] = 'plg_03_tomb_012', + [-112446095] = 'plg_03_tomb_013', + [-888284939] = 'plg_03_tomb_014', + [-807279971] = 'plg_03_tomb_015', + [-1307138297] = 'plg_03_tomb_017', + [-2082190685] = 'plg_03_tomb_018', + [-1776095456] = 'plg_03_tomb_019', + [210498986] = 'plg_03_tombs_main_lod', + [-1144691499] = 'plg_03_tombs_main_n_lod', + [358989057] = 'plg_03_track_decal', + [-1354723816] = 'plg_03_track_decal01', + [-1116263803] = 'plg_03_track_decal02', + [543551577] = 'plg_03_track_decal03', + [311645364] = 'plg_03_track_decal04', + [1156757874] = 'plg_03_track_decal05', + [-1289426465] = 'plg_03_track_west01_lod', + [2113536841] = 'plg_03_track_west01', + [-1073626832] = 'plg_03_track_west01a', + [251911013] = 'plg_03_track_west01aa_lod', + [-795778481] = 'plg_03_track_west01b', + [1323385927] = 'plg_03_track_west02_lod', + [-1733412687] = 'plg_03_track_west02', + [-71932130] = 'plg_03_track_west02a_lod', + [-1786811776] = 'plg_03_track_west02a', + [-1585270598] = 'plg_03_traffic_lights', + [2018876517] = 'plg_03_wallfoliage', + [1039054498] = 'plg_03_wallsteps_lod', + [-768773627] = 'plg_03_wallsteps', + [1575862089] = 'plg_03_westgate', + [-2100414940] = 'plg_04_backdec', + [-2110743083] = 'plg_04_bale001', + [-1740928073] = 'plg_04_balesa_lod', + [-1453578018] = 'plg_04_balesb_lod', + [1562467340] = 'plg_04_balesc_lod', + [-1862495550] = 'plg_04_barn_grain_d', + [1455544824] = 'plg_04_barn_grain_lod', + [708388784] = 'plg_04_barn_grain', + [-689239077] = 'plg_04_barn_lod', + [-25834296] = 'plg_04_barn', + [2045317817] = 'plg_04_barnovly', + [-437493279] = 'plg_04_beaver001_lod', + [-806469094] = 'plg_04_beaver001', + [-12508993] = 'plg_04_beaver002', + [-1174834763] = 'plg_04_cover_up', + [683548943] = 'plg_04_farmhouse_lod', + [-1470276119] = 'plg_04_farmhouse', + [553260760] = 'plg_04_farmroad_decals', + [-1014194905] = 'plg_04_farmroad_grou', + [216752863] = 'plg_04_farmroad_ground_d', + [-1183513292] = 'plg_04_farmroad_ground_lod', + [801202216] = 'plg_04_farmroad_ground', + [-408930346] = 'plg_04_farmroad_groundb_lod', + [1346068090] = 'plg_04_farmroad_groundb', + [326499201] = 'plg_04_farmroadlinkroad_lod', + [495975437] = 'plg_04_farmroadlinkroad', + [1865650726] = 'plg_04_fence_lod', + [-1790615662] = 'plg_04_fence', + [-385370314] = 'plg_04_fence001', + [-1308241331] = 'plg_04_fence002_lod', + [262243433] = 'plg_04_fence002', + [626487970] = 'plg_04_fence004_lod', + [-2071417] = 'plg_04_fence004', + [-1440094695] = 'plg_04_fenceb_lod', + [-1753951328] = 'plg_04_fenceb', + [888208977] = 'plg_04_fencefront_lod', + [337640238] = 'plg_04_field_east_lod', + [852395661] = 'plg_04_field_east', + [-1746177501] = 'plg_04_field_run_d', + [306541642] = 'plg_04_field_west_lod', + [-103024439] = 'plg_04_field_west', + [229178232] = 'plg_04_fol1', + [-83896794] = 'plg_04_fol2', + [-1012218377] = 'plg_04_foliage_d', + [174612768] = 'plg_04_foliage_d2', + [-1028283770] = 'plg_04_foliagec_d', + [1211927319] = 'plg_04_foliagec_lod', + [423840742] = 'plg_04_foliagec', + [1377519944] = 'plg_04_groundovly', + [-302404366] = 'plg_04_haybales_d', + [-795407005] = 'plg_04_haybales_lod', + [-1076124981] = 'plg_04_haybales', + [-248415201] = 'plg_04_hedgerow_d', + [-1774284455] = 'plg_04_hedgerow_lod', + [1646018701] = 'plg_04_hedgerow', + [-1806889860] = 'plg_04_hedgerow2_d', + [-1414819244] = 'plg_04_hedgerow2_lod', + [-431614893] = 'plg_04_hedgerow2', + [-864117396] = 'plg_04_hi_res_lod', + [382664714] = 'plg_04_hi_res_mission_dcl', + [1561570643] = 'plg_04_hi_res_mission', + [472354421] = 'plg_04_lights', + [-2030181816] = 'plg_04_literef', + [-422418051] = 'plg_04_literef001', + [-735624153] = 'plg_04_literef002', + [-517448147] = 'plg_04_literef003', + [1529261682] = 'plg_04_mainground_lod', + [-679471906] = 'plg_04_mainground', + [-1895291070] = 'plg_04_mainground002', + [694045060] = 'plg_04_mainground2_lod', + [1737986405] = 'plg_04_neverdeleteme', + [407501211] = 'plg_04_outbuilding_lod', + [649707875] = 'plg_04_outbuilding', + [-29052228] = 'plg_04_props_combo01_01_lod', + [-1592832602] = 'plg_04_props_combo02_01_lod', + [1100777419] = 'plg_04_props_combo03_01_lod', + [1022177307] = 'plg_04_props_combo03_02_lod', + [1429338625] = 'plg_04_props_combo03_03_lod', + [634232612] = 'plg_04_props_combo03_04_lod', + [1945585244] = 'plg_04_props_combo03_05_lod', + [1722616465] = 'plg_04_props_combo03_06_lod', + [64273633] = 'plg_04_props_combo04_01_lod', + [1109731540] = 'plg_04_props_combo04_02_lod', + [173175106] = 'plg_04_props_sgllod', + [-967607012] = 'plg_04_props_sig_lod', + [-1118347705] = 'plg_04_props_tree_l2', + [-12144435] = 'plg_04_props_treeend', + [1467598435] = 'plg_04_props_treest', + [-2021285365] = 'plg_04_propstree_l1', + [-428735328] = 'plg_04_q', + [-1779701155] = 'plg_04_rd_side_area_lod', + [-625709798] = 'plg_04_rd_side_area_ovly', + [-1996878492] = 'plg_04_rd_side_area_slod', + [-1889823384] = 'plg_04_rd_side_area', + [1825474576] = 'plg_04_shed_lod', + [-1504884582] = 'plg_04_shed', + [559086037] = 'plg_04_silolights', + [-2047848956] = 'plg_04_slod_new', + [1613216772] = 'plg_04_slod_new01', + [-1250924908] = 'plg_04_slod_new02', + [-2069461759] = 'plg_04_slod_new03', + [1556592852] = 'plg_04_slod1', + [893320663] = 'plg_04_snowveg01_lod', + [-803181202] = 'plg_04_snowveg01', + [-448304238] = 'plg_04_snowveg02_lod', + [1341844769] = 'plg_04_snowveg02', + [1139628350] = 'plg_04_tracks1_d', + [565485910] = 'plg_04_tracks1_lod', + [1655838095] = 'plg_04_tracks1', + [-2143014787] = 'plg_04_tracks2_d', + [-1448725447] = 'plg_04_tracks2_lod', + [-1115993108] = 'plg_04_tracks2', + [-1614599617] = 'plg_04_tracks3_d', + [-975489601] = 'plg_04_tracks3_lod', + [-1353666665] = 'plg_04_tracks3', + [-701774470] = 'plg_04_tracks4_d', + [2045331060] = 'plg_04_tracks4_lod', + [-1851952091] = 'plg_04_tracks4', + [-404087886] = 'plg_04_trafficl', + [-729127685] = 'plg_05_anotherwall_lod', + [-1040365409] = 'plg_05_anotherwall', + [521458610] = 'plg_05_cinema_em_lod', + [1586860197] = 'plg_05_cinema_em', + [-330788083] = 'plg_05_cinema_lod', + [1171573972] = 'plg_05_cinema', + [1249232878] = 'plg_05_comp_01_gnd_lod', + [542026377] = 'plg_05_comp_01_gnd', + [330001424] = 'plg_05_corn_wall1_decls', + [943958113] = 'plg_05_corn_wall1_lod', + [-1274449700] = 'plg_05_corn_wall1', + [1580054526] = 'plg_05_di_bui_01_em', + [2084180860] = 'plg_05_di_bui_01', + [-1259054181] = 'plg_05_dis_bui2_em', + [237065936] = 'plg_05_disbl2_em_lod', + [480158627] = 'plg_05_dist_build_01_lod', + [-1954316258] = 'plg_05_dist_build2_lod', + [-1553173311] = 'plg_05_dist_build2', + [-704945600] = 'plg_05_ds_bil_em_lod', + [693494035] = 'plg_05_em_slod_a', + [156279049] = 'plg_05_em_slod_c', + [-939319701] = 'plg_05_em_slod_f', + [-770100585] = 'plg_05_em_slod_g', + [-1681078785] = 'plg_05_em_slod_i', + [1779495224] = 'plg_05_foliage_ml_decals', + [1332656812] = 'plg_05_foliage009_decals', + [269120979] = 'plg_05_foliage011_decals', + [347078363] = 'plg_05_foliage012_decals', + [-1806445115] = 'plg_05_foliage014_decals', + [1196880607] = 'plg_05_foliage014_lod', + [-1649318197] = 'plg_05_foliage014', + [1014268976] = 'plg_05_foliage017_lod', + [139887618] = 'plg_05_ground10_lod', + [429718811] = 'plg_05_ground10', + [1385547710] = 'plg_05_long_build_dec', + [2059467733] = 'plg_05_long_build_em_lod', + [-2039961730] = 'plg_05_long_build_em', + [-457518598] = 'plg_05_long_build_lod', + [1433876189] = 'plg_05_long_build', + [1594580053] = 'plg_05_lroad_03', + [898713214] = 'plg_05_lud_sign_lod', + [-95829455] = 'plg_05_lud_sign', + [1287404635] = 'plg_05_lud_wd_dec', + [389439247] = 'plg_05_lud_wd_em', + [882274073] = 'plg_05_lud_wood_bld', + [917685800] = 'plg_05_m_road_02_decls', + [1355196420] = 'plg_05_m_road_02_decls2', + [-1424565085] = 'plg_05_m_road_02_decls3', + [-1201932499] = 'plg_05_m_road_02_decls4', + [-1903025250] = 'plg_05_m_road_02_decls5', + [-1603156131] = 'plg_05_m_road_02_decls6', + [-231970095] = 'plg_05_m_road_02_decls7', + [-2082075066] = 'plg_05_m_road_02_decls8', + [-709381656] = 'plg_05_m_road_02_decls9', + [-1482517398] = 'plg_05_mid_build_lod', + [1232237762] = 'plg_05_mid_build', + [321493675] = 'plg_05_ml_w_house2_lod', + [1649889542] = 'plg_05_ml_w_house2', + [-518625432] = 'plg_05_neverdeleteme', + [-969239530] = 'plg_05_props_combo01_01_lod', + [-2132216392] = 'plg_05_props_combo02_01_lod', + [-642140384] = 'plg_05_props_combo02_02_lod', + [1935256849] = 'plg_05_props_combo03_01_lod', + [1796229737] = 'plg_05_props_combo04_01_lod', + [901785457] = 'plg_05_props_combo05_01_lod', + [-2118815221] = 'plg_05_props_combo05_02_lod', + [1884042535] = 'plg_05_props_combo05_03_lod', + [-1408950574] = 'plg_05_props_combo05_04_lod', + [426301180] = 'plg_05_props_combo05_05_lod', + [379805346] = 'plg_05_props_combo05_06_lod', + [1284734339] = 'plg_05_props_combo05_07_lod', + [-157902168] = 'plg_05_props_combo05_08_lod', + [-2132413317] = 'plg_05_props_combo05_09_lod', + [134634008] = 'plg_05_props_combo06_01_lod', + [-734878262] = 'plg_05_props_combo06_02_lod', + [-1331488207] = 'plg_05_props_combo06_03_lod', + [-458865773] = 'plg_05_props_combo06_04_lod', + [-1521780019] = 'plg_05_props_combo06_05_lod', + [-1607207695] = 'plg_05_props_l_001', + [1764281493] = 'plg_05_props_trucklod', + [928650092] = 'plg_05_props_trucklod01', + [25241523] = 'plg_05_props_trucklod02', + [1340884112] = 'plg_05_props_trucklod03', + [1918142816] = 'plg_05_props_trucklod04', + [-2072760929] = 'plg_05_props_trucklod05', + [-238273684] = 'plg_05_props_truckslod', + [-1820685463] = 'plg_05_props_truckslod01', + [-1473137449] = 'plg_05_props_truckslod02', + [297534126] = 'plg_05_rail_wall_01_lod', + [1430578792] = 'plg_05_rail_wall_01', + [-1169215725] = 'plg_05_rail_wall_02_lod', + [-618630639] = 'plg_05_rail_wall_02', + [-2061106766] = 'plg_05_rail_wall_03_d', + [1247156620] = 'plg_05_rail_wall_03_lod', + [-1386113388] = 'plg_05_rail_wall_03', + [-1373483339] = 'plg_05_railfiz', + [-190197197] = 'plg_05_randbuild_em', + [-1546786103] = 'plg_05_randbuild_lod', + [-1201723912] = 'plg_05_randombuild', + [-1458085944] = 'plg_05_redwall2_d', + [33899787] = 'plg_05_redwall2_lod', + [696097878] = 'plg_05_redwall2', + [-35964604] = 'plg_05_repair_dep_em', + [268631402] = 'plg_05_repair_dep_lod', + [2073978658] = 'plg_05_repair_dep_slod', + [-10619266] = 'plg_05_repair_dep', + [-1782865015] = 'plg_05_repd_em_lod', + [600351010] = 'plg_05_rnbuil_em_lod', + [-1275135182] = 'plg_05_road_01_lod', + [1783850020] = 'plg_05_road_01', + [237011027] = 'plg_05_road_02_lod', + [1492697455] = 'plg_05_road_02', + [975462788] = 'plg_05_road_03_lod', + [-1802599164] = 'plg_05_road_04_lod', + [1016793268] = 'plg_05_road_04', + [163730429] = 'plg_05_road_05_lod', + [566088438] = 'plg_05_road_05', + [1952131080] = 'plg_05_road_06_lod', + [245058737] = 'plg_05_road_07_lod', + [-928969277] = 'plg_05_roadextension_dcl', + [-657075800] = 'plg_05_roadextension_dcl1', + [-359303897] = 'plg_05_roadextension_dcl2', + [1790253435] = 'plg_05_roadextension', + [-893795959] = 'plg_05_roadextension2', + [-2051961945] = 'plg_05_rwall_lod', + [976826305] = 'plg_05_rwall', + [1585377435] = 'plg_05_ship_dec', + [695216401] = 'plg_05_slod_a', + [-2103420044] = 'plg_05_slod_b', + [-1879935464] = 'plg_05_slod_c', + [1689984938] = 'plg_05_slod_d', + [1921628999] = 'plg_05_slod_e', + [-1490148209] = 'plg_05_slod_f', + [-1258569686] = 'plg_05_slod_g', + [-1642229138] = 'plg_05_slod_i', + [-1576520628] = 'plg_05_tower_lod', + [1164572440] = 'plg_05_tower', + [1528374256] = 'plg_05_towerovly', + [-678511751] = 'plg_05_town_field_01a_lod001', + [-1401093546] = 'plg_05_town_field_01a', + [333907882] = 'plg_05_town_field_01b_lod', + [693828624] = 'plg_05_town_field_01b', + [-1238700689] = 'plg_05_town_field_01c_lod', + [329240730] = 'plg_05_town_field_01c', + [-945752454] = 'plg_05_town_field_01d_lod', + [113915631] = 'plg_05_town_field_01d', + [2120036384] = 'plg_05_town_field_02_lod', + [-1418896404] = 'plg_05_town_field_02', + [1352177932] = 'plg_05_town_gnd_south_lod', + [-165659628] = 'plg_05_town_gnd_south', + [-324942867] = 'plg_05_town_wall_dec', + [-2137814461] = 'plg_05_town_wall_lod', + [-1250804438] = 'plg_05_town_wall', + [1858951678] = 'plg_05_town_wall2_lod', + [167529279] = 'plg_05_town_wall2', + [812063775] = 'plg_05_veg01_decals', + [-685163549] = 'plg_05_veg01', + [-2069807405] = 'plg_05_wall_rturn_lod', + [-25612444] = 'plg_05_wall_rturn', + [-935041592] = 'plg_05_wallfol01_dec', + [1247042923] = 'plg_05_wallfol01_fol', + [-1889463738] = 'plg_05_wallfol01_lod', + [-1313450729] = 'plg_05_wallfol01', + [-1448892300] = 'plg_05_walllturn_dec', + [1187045906] = 'plg_05_walllturn_lod', + [-1155101728] = 'plg_05_walllturn', + [1848129847] = 'plg_05_ware04_em', + [1860003663] = 'plg_05_waretest04_em_lod', + [977563931] = 'plg_05_waretest04_lod', + [-479709232] = 'plg_05_waretest04', + [-906297217] = 'plg_05_wh_round_lod', + [-1256673476] = 'plg_05_wh_round', + [835336927] = 'plg_05_wh_round001_lod', + [-418285138] = 'plg_05_wh_round001', + [2090324229] = 'plg_05_wh_round002_lod', + [850333932] = 'plg_05_wh_round002', + [835265824] = 'plg_05_wh_sc_em_lod', + [210804926] = 'plg_05_wh_sect_em', + [591069614] = 'plg_05_wh_sect_lod', + [1639619996] = 'plg_05_wh_sect', + [-784174388] = 'plg_05_wh1_em_lod', + [-1178934999] = 'plg_05_wh1_lod', + [-984040554] = 'plg_05_white_bui_hi_em', + [-1514661682] = 'plg_05_white_build_hi', + [-1674882031] = 'plg_05_white_build_ovly', + [1013542880] = 'plg_05_whitebuild_em_lod', + [1686395694] = 'plg_05_whitebuild_lod', + [-1290464555] = 'plg_06_012', + [1272485807] = 'plg_06_013_lod', + [-1147579341] = 'plg_06_03', + [-1194373461] = 'plg_06_04', + [-421713218] = 'plg_06_05', + [-719321276] = 'plg_06_06', + [55501729] = 'plg_06_07', + [726049816] = 'plg_06_back_det_lod', + [659612303] = 'plg_06_back_det', + [786934124] = 'plg_06_back_det2_lod', + [-10108246] = 'plg_06_back_det4_lod', + [-1965872335] = 'plg_06_bale_d', + [530919580] = 'plg_06_bale', + [-1809299935] = 'plg_06_bale2', + [1626235542] = 'plg_06_baleedge', + [-2147324595] = 'plg_06_barn_lod', + [-488623603] = 'plg_06_barn_ovly', + [-20680165] = 'plg_06_barn_slod', + [1478355705] = 'plg_06_bdutchbarn', + [1356219746] = 'plg_06_blood_decals', + [-131274976] = 'plg_06_building_decal', + [1540125192] = 'plg_06_cash_depot_building', + [-1652038632] = 'plg_06_cash_depot_lod', + [-1793210667] = 'plg_06_decal', + [767400263] = 'plg_06_decal01', + [1125434357] = 'plg_06_decal02', + [1897766918] = 'plg_06_decal03', + [1715964506] = 'plg_06_decal04', + [-1732677827] = 'plg_06_decal05', + [1836271539] = 'plg_06_fencepart', + [789112000] = 'plg_06_fnc_01_lod', + [839932358] = 'plg_06_fnc_02_lod', + [1174070460] = 'plg_06_fnc_22_lod', + [1517238012] = 'plg_06_fnc_24_lod', + [-1529998323] = 'plg_06_fncbsp3', + [-2047388185] = 'plg_06_fncpt_bpk1', + [1998796867] = 'plg_06_fncpt_bpk2', + [395504350] = 'plg_06_gate_lod', + [-355240077] = 'plg_06_gate_posts', + [1880024711] = 'plg_06_gate_posts001', + [-646205680] = 'plg_06_gate_posts002_lod', + [-1082059603] = 'plg_06_gnd_01a_lod', + [-948120017] = 'plg_06_gnd_01a', + [1660608699] = 'plg_06_gnd_01b_lod', + [2112579760] = 'plg_06_gnd_01d_lod', + [-1173767351] = 'plg_06_gnd_01d', + [-807365727] = 'plg_06_gnd_02_lod', + [-152818950] = 'plg_06_gnd_02', + [-1529120025] = 'plg_06_gnd_02a_dcl', + [790972025] = 'plg_06_gnd_02b_dcl', + [1171215946] = 'plg_06_gnd_02b', + [-1248220098] = 'plg_06_gnd_break', + [1343524037] = 'plg_06_gnd_fol_d', + [-1242361363] = 'plg_06_gnd_pol_d', + [892037871] = 'plg_06_gnd_pol_d2', + [1070313902] = 'plg_06_gnd_slod1', + [-494350963] = 'plg_06_gnd1_norm_dcl', + [-2063251440] = 'plg_06_gnd2_norm_dcl', + [-1001024882] = 'plg_06_h_fol1', + [907802141] = 'plg_06_h_fol2', + [-536327693] = 'plg_06_h_fol3', + [-778523372] = 'plg_06_h_fol4', + [-1314296462] = 'plg_06_h_fol5', + [2143586729] = 'plg_06_h_fol6', + [1445803639] = 'plg_06_h_fol7', + [-1536666896] = 'plg_06_h_fol8', + [2059927468] = 'plg_06_h_fol9', + [-1897801144] = 'plg_06_h_lod', + [-1821881557] = 'plg_06_h_lod01', + [-1473940315] = 'plg_06_h_lod02', + [1978503222] = 'plg_06_h_lod03', + [-1980778438] = 'plg_06_h_lod04', + [-525310534] = 'plg_06_h_lod05', + [-1368227521] = 'plg_06_h_lod06', + [-1087298884] = 'plg_06_h_lod07', + [-1282602144] = 'plg_06_h_lod08', + [2013300578] = 'plg_06_h1_slod1', + [-1970964241] = 'plg_06_h2_slod1', + [1974615205] = 'plg_06_hedgepush26a_d', + [-231371254] = 'plg_06_hedgepush26a', + [519155278] = 'plg_06_hedgepush26b_d', + [-556178960] = 'plg_06_hedgepush26bb', + [-1341946811] = 'plg_06_hedgepush26bc', + [272746715] = 'plg_06_hedgepush26c_d', + [352255737] = 'plg_06_hedgepush27a_d', + [504490914] = 'plg_06_hedgepush27a', + [-186103261] = 'plg_06_hedgepush27b_d', + [1268205224] = 'plg_06_hedgepush27b', + [-1404559433] = 'plg_06_hedgepush29a_d', + [1837697103] = 'plg_06_hedgepush29a', + [-2018772545] = 'plg_06_hedgepush29b_d', + [-959890734] = 'plg_06_hedgepush29b', + [-1179694904] = 'plg_06_hedgepush30a_d', + [51120656] = 'plg_06_hedgepush30a', + [2126692395] = 'plg_06_hedgepush30b_d', + [817849718] = 'plg_06_hedgepush30b', + [904582956] = 'plg_06_left_det', + [-151681071] = 'plg_06_left_det3_lod', + [1528846402] = 'plg_06_m2door_lod', + [245230435] = 'plg_06_m2door', + [1381293193] = 'plg_06_ml_hedge_test', + [-80518929] = 'plg_06_ml_hedge_test001', + [-281718262] = 'plg_06_neverdeleteme', + [-1003060321] = 'plg_06_ovly_carpark001', + [-1474174121] = 'plg_06_plg_05_72_lod', + [86104305] = 'plg_06_plg_05_72', + [719480] = 'plg_06_plg_barier_conc_0', + [-679108403] = 'plg_06_plg_barier_conc_02a', + [-527054088] = 'plg_06_pol_lod', + [1091698702] = 'plg_06_props_combo01_01_lod', + [859321317] = 'plg_06_props_combo01_02_lod', + [2121761616] = 'plg_06_props_combo02_01_lod', + [503537617] = 'plg_06_props_combo03_01_lod', + [-2054885692] = 'plg_06_props_combo03_02_lod', + [282029359] = 'plg_06_props_combo04_01_lod', + [1660536482] = 'plg_06_props_combo04_02_lod', + [467847223] = 'plg_06_props_combo05_01_lod', + [-1777184773] = 'plg_06_props_combo05_02_lod', + [-1781681236] = 'plg_06_props_combo05_03_lod', + [1877778571] = 'plg_06_props_combo05_04_lod', + [-1566609857] = 'plg_06_props_combo05_05_lod', + [364223355] = 'plg_06_props_combo05_06_lod', + [-191585014] = 'plg_06_props_combo05_07_lod', + [-1290766730] = 'plg_06_props_combo05_08_lod', + [612757698] = 'plg_06_props_combo05_09_lod', + [1375187323] = 'plg_06_props_combo05_10_lod', + [432178811] = 'plg_06_props_combo05_11_lod', + [40725961] = 'plg_06_props_combo05_12_lod', + [1734464218] = 'plg_06_right_det', + [233558894] = 'plg_06_right_det4', + [-1051828044] = 'plg_06_slod', + [2041342411] = 'plg_06_testland', + [457696143] = 'plg_06_turn_lod', + [-1098224993] = 'plg_06_turn', + [-396546437] = 'plg_06_v_cashdepot_lod', + [-115612878] = 'plg_rd_bri_hd', + [2145810884] = 'plg_rd_bri2', + [1134068090] = 'plg_rd_brid_rail2', + [1828142079] = 'plg_rd_brid_railhd', + [-2019860836] = 'plg_rd_m_bridge1_lod', + [-2012092376] = 'plg_rd_m_bridge1', + [-211682954] = 'plg_rd_m_road_00', + [11146242] = 'plg_rd_m_road_01', + [2054898420] = 'plg_rd_m_road_03_lod', + [1197252966] = 'plg_rd_m_road_03', + [679296123] = 'plg_rd_m_road_037_lod', + [993830101] = 'plg_rd_m_road_037', + [237541841] = 'plg_rd_m_road_038_d', + [184880528] = 'plg_rd_m_road_038_lod', + [-1415503180] = 'plg_rd_m_road_038_slod', + [-1043910222] = 'plg_rd_m_road_04_lod', + [493833612] = 'plg_rd_m_road_04', + [-1175795129] = 'plg_rd_m_road_05_de', + [1955298243] = 'plg_rd_m_road_05', + [970786407] = 'plg_rd_m_road_06', + [-156515933] = 'plg_rd_m_road_060_lod', + [-1839450264] = 'plg_rd_m_road_07', + [-2023922169] = 'plg_rd_m_road_08_lod', + [1621578747] = 'plg_rd_m_road_08', + [581792730] = 'plg_rd_m_road_09_lod', + [-1699690479] = 'plg_rd_m_road_09', + [525750906] = 'plg_rd_m_road_10', + [2147471996] = 'plg_rd_m_road_11_lod', + [1768384155] = 'plg_rd_m_road_11', + [1007750127] = 'plg_rd_m_road_12', + [-1155826060] = 'plg_rd_m_road_13_lod', + [-2099045994] = 'plg_rd_m_road_13', + [-1801601781] = 'plg_rd_m_road_14', + [960834993] = 'plg_rd_m_road_15_lod', + [-1635987255] = 'plg_rd_m_road_15', + [1936571612] = 'plg_rd_m_road_16_lod', + [-1336773516] = 'plg_rd_m_road_16', + [1301524228] = 'plg_rd_m_road_17', + [459154763] = 'plg_rd_m_road_18_lod', + [996018841] = 'plg_rd_m_road_18', + [-736038488] = 'plg_rd_m_road_19_lod', + [1776510883] = 'plg_rd_m_road_19', + [-129482412] = 'plg_rd_m_road_20_lod', + [-947577011] = 'plg_rd_m_road_20', + [651590505] = 'plg_rd_m_road_21_lod', + [-626637425] = 'plg_rd_m_road_21', + [-1255096068] = 'plg_rd_m_road_22_lod', + [-392371844] = 'plg_rd_m_road_22', + [-897127102] = 'plg_rd_m_road_24_lod', + [228371383] = 'plg_rd_m_road_24', + [-137676725] = 'plg_rd_m_road_26_lod', + [808874218] = 'plg_rd_m_road_26', + [-1462246872] = 'plg_rd_m_road_27_lod', + [123477758] = 'plg_rd_m_road_27', + [-1993423866] = 'plg_rd_newlod', + [-1830164756] = 'plg_rd_newlod01', + [-470578870] = 'plg_rd_newlod02', + [365221274] = 'plg_rd_plg_01_new_lod', + [-181559047] = 'plg_rd_plg_01_shadow', + [846672925] = 'plg_rd_props__wires_00', + [1342730047] = 'plg_rd_props__wires_01', + [1580272516] = 'plg_rd_props__wires_02', + [1810573048] = 'plg_rd_props__wires_03', + [2066662783] = 'plg_rd_props__wires_04', + [1883156395] = 'plg_rd_props__wires_05', + [2115849064] = 'plg_rd_props__wires_06', + [-1949079852] = 'plg_rd_props__wires_07', + [-1718943165] = 'plg_rd_props__wires_08', + [-1248314787] = 'plg_rd_props__wires_09', + [1663898732] = 'plg_rd_props__wires_10', + [-706637909] = 'plg_rd_props__wires_1000', + [1912391643] = 'plg_rd_props__wires_1001', + [1448999642] = 'plg_rd_props__wires_11', + [1096428621] = 'plg_rd_props_wires_farm99', + [-1268156401] = 'plg_rd_props_wires_town01', + [-2093410901] = 'plg_rd_props_wires_town02', + [1955199053] = 'plg_rd_props_wires_town03', + [1723030688] = 'plg_rd_props_wires_town04', + [-885675496] = 'plg_rd_rail1_lod', + [1770121763] = 'plg_rd_rail2_lod', + [154023929] = 'plg_rd_rail3_lod', + [2128473940] = 'plg_rd_slod1', + [848843470] = 'plg_rd_slod101', + [1759231828] = 'plg_rd_slod102', + [2074928374] = 'plg_rd_slod103', + [1767260233] = 'plg_rd_slod104', + [-330381696] = 'plg_rd_slod105', + [530722018] = 'plg_rd_slod106', + [714920561] = 'plg_rd_slod106b', + [242780815] = 'plg_rd_slod107', + [1143928315] = 'plg_rd_slod108', + [-160448961] = 'plogint_co1_deta', + [213365268] = 'plogint_co1_over', + [-790817975] = 'plogint_co1_pipe', + [-1973182714] = 'plogint_co1_refem', + [1321859441] = 'plogint_desk', + [1364964175] = 'plogint_panels', + [-1345557674] = 'plogint_pro_int_light_', + [-444531987] = 'plogint_pro_int_light_002', + [-613456270] = 'plogint_pro_int_light_006', + [-1233281905] = 'plogint_pro_int_light_008', + [-2104413005] = 'plogint_pro_int_light_009', + [2062862085] = 'plogint_rea_deta', + [-900185457] = 'plogint_rea_nocover', + [-2087717581] = 'plogint_rea_over', + [-1007424172] = 'plogint_rec_deta', + [-1169432456] = 'plogint_rec_details', + [1456914506] = 'plogint_rec_divi', + [-1025097857] = 'plogint_rec_dust', + [-259576741] = 'plogint_rec_glas1', + [979812381] = 'plogint_rec_glas2', + [346538897] = 'plogint_rec_over', + [761940430] = 'plogint_rec_pipe', + [1412881295] = 'plogint_rec_refem', + [-439309300] = 'plogint_shell_dt', + [1202916346] = 'plogint_shell', + [1495160591] = 'plogint_sid_det', + [-427888041] = 'plogint_sid_mounds', + [438549871] = 'plogint_sid_over', + [622800197] = 'plogint_sid_pipe', + [-1605601875] = 'plogint_sid_refem', + [2110746664] = 'plogint_sto_d_vfx_root', + [1435263394] = 'plogint_sto_deta', + [-854679885] = 'plogint_sto_mounds', + [-1452337973] = 'plogint_sto_over', + [-1220387898] = 'plogint_sto_pipe', + [1514026555] = 'plogint_sto_refem', + [-1809450040] = 'plogint_tree', + [929790624] = 'plogint_vau_deta01', + [-786897293] = 'plogint_vau_over', + [-1721300350] = 'plogint_vau_pipe', + [1385824389] = 'plogint_vau_refem', + [-1760141333] = 'plogint_vaultdoo_refonly', + [-96927377] = 'po1_01_b_det_01', + [742909324] = 'po1_01_b_det_02', + [-412984382] = 'po1_01_b_det_03', + [417087157] = 'po1_01_b_det_04', + [-1007840039] = 'po1_01_b_det_05', + [-180717710] = 'po1_01_b_det_06', + [-984967305] = 'po1_01_b_det_07', + [-168822591] = 'po1_01_b_det_08', + [-1321341062] = 'po1_01_b_det_09', + [2085519876] = 'po1_01_b_det_10', + [-831299466] = 'po1_01_b_ladder', + [-623390338] = 'po1_01_b_lod_prox', + [1453029937] = 'po1_01_b', + [-1154275807] = 'po1_01_bufferm', + [-1584207297] = 'po1_01_build_d_1', + [193884497] = 'po1_01_build_detail', + [144653438] = 'po1_01_build_win', + [550415820] = 'po1_01_build064_dt', + [1891797233] = 'po1_01_build081', + [-1345192885] = 'po1_01_build58_dt', + [736109907] = 'po1_01_build58_dt008', + [1155024635] = 'po1_01_build58_dt2', + [328221354] = 'po1_01_build58_em', + [-555089326] = 'po1_01_build59_ov2', + [1021511751] = 'po1_01_build61_dt_ladder', + [2008546334] = 'po1_01_build61_dt', + [1728960422] = 'po1_01_build61', + [-1161822430] = 'po1_01_build62_det_01', + [817589083] = 'po1_01_build62_det_02', + [561564886] = 'po1_01_build62_det_03', + [-874045004] = 'po1_01_build62_det_04', + [-530880288] = 'po1_01_build62_dt', + [1883367950] = 'po1_01_build62', + [1791093803] = 'po1_01_build63_dt_01', + [-109344356] = 'po1_01_build63_dt_02', + [-1632019189] = 'po1_01_build63_dt01_1', + [-1392576106] = 'po1_01_build63_dt01_2', + [1361357640] = 'po1_01_build63_dt02', + [1131614181] = 'po1_01_build63_dt03', + [1265442767] = 'po1_01_build63_dt041', + [-1398218167] = 'po1_01_build63_dt042', + [824765255] = 'po1_01_build63_dt043', + [594694106] = 'po1_01_build63_dt044', + [266471475] = 'po1_01_build63_shad', + [-1069875433] = 'po1_01_cablemesh32281_tstd', + [-1706452958] = 'po1_01_cablemesh50529_thvy', + [1314134962] = 'po1_01_cablemesh50530_thvy', + [892209] = 'po1_01_cablemesh87975_thvy', + [1525793271] = 'po1_01_cablemesh95540_thvy', + [-667723482] = 'po1_01_cablemesh95548_thvy', + [1425939276] = 'po1_01_cg020_ladder01', + [2125262505] = 'po1_01_cg020_ladder02', + [347516078] = 'po1_01_cg020', + [-1690158621] = 'po1_01_cg021', + [1858619613] = 'po1_01_cg024_gd', + [1916185841] = 'po1_01_detail_1', + [1987426295] = 'po1_01_detail', + [514501283] = 'po1_01_dockdetailm', + [1888054632] = 'po1_01_doorm', + [-1402278964] = 'po1_01_fancase001', + [-1723021936] = 'po1_01_fancase002', + [-947084789] = 'po1_01_fancase003', + [-983982683] = 'po1_01_fancase004', + [-217024238] = 'po1_01_fancase005', + [1862719617] = 'po1_01_glue_01', + [1271075322] = 'po1_01_glue_03', + [1578284697] = 'po1_01_glue_04', + [-1470739681] = 'po1_01_glue_05', + [393814881] = 'po1_01_ground_d_1', + [1473984828] = 'po1_01_jump2', + [1216256643] = 'po1_01_jump3', + [1001546344] = 'po1_01_jumplod_003', + [1115942935] = 'po1_01_jumplod_006', + [557493637] = 'po1_01_jumplod_007', + [-817236022] = 'po1_01_jumplod_01', + [-2081393649] = 'po1_01_jumplod_010', + [266472436] = 'po1_01_jumplod_014', + [726647503] = 'po1_01_jumplod_016', + [1456085443] = 'po1_01_jumplod_017', + [-683334323] = 'po1_01_jumpmas', + [-979341034] = 'po1_01_lad_main', + [1677272332] = 'po1_01_land002', + [1379631505] = 'po1_01_land003', + [1201040455] = 'po1_01_land004', + [1315299648] = 'po1_01_lifebeltm', + [1303687283] = 'po1_01_props_combo03_04_lod', + [-1954195107] = 'po1_01_props_combo03_06_lod', + [1236876977] = 'po1_01_props_combo05_01_lod', + [151295727] = 'po1_01_pulleyparent', + [798592100] = 'po1_01_shadprox01', + [1583376881] = 'po1_01_shadprox02', + [1277642111] = 'po1_01_shadprox03', + [1717382076] = 'po1_01_ship_dt01_det_009', + [701707185] = 'po1_01_ship_dt01_det_016', + [44623197] = 'po1_01_ship_dt01_det_018', + [343410939] = 'po1_01_ship_dt01_det_019', + [1796960877] = 'po1_01_ship_dt01_det_02', + [1507151841] = 'po1_01_ship_dt01_det_03', + [324322025] = 'po1_01_ship_dt01_det_04', + [1086299582] = 'po1_01_ship_dt01_det_05', + [1850636507] = 'po1_01_ship_dt01_det_06', + [1546867877] = 'po1_01_ship_dt01_det_07', + [-642035793] = 'po1_01_ship_dt01_det_08', + [124136204] = 'po1_01_ship_dt01_det_09', + [-1027625992] = 'po1_01_ship_dt01_det_10', + [-732803299] = 'po1_01_ship_dt01_det_11', + [-570072445] = 'po1_01_ship_dt01_det_12', + [1876821558] = 'po1_01_ship_dt01_det_13', + [-300907871] = 'po1_01_ship_dt01_det_14', + [-3267044] = 'po1_01_ship_dt01_det_15', + [697203100] = 'po1_01_ship_dt01_det_16', + [-1149231751] = 'po1_01_ship_dt01_det_17', + [892080343] = 'po1_01_ship_dt01_det_18', + [1117072297] = 'po1_01_ship_dt01_det_19', + [1943183591] = 'po1_01_ship_dt01_det_20', + [-27986500] = 'po1_01_ship_dt01_det01', + [2093146971] = 'po1_01_ship_dt01', + [1208383975] = 'po1_01_ship_dt02', + [-1289760752] = 'po1_01_ship_dt04', + [-460992937] = 'po1_01_ship_dt05_det_01', + [280674249] = 'po1_01_ship_dt05_det_010', + [-1670228174] = 'po1_01_ship_dt05_det_012', + [-1489474370] = 'po1_01_ship_dt05_det_013', + [-1327071206] = 'po1_01_ship_dt05_det_014', + [-1016716007] = 'po1_01_ship_dt05_det_015', + [1629675672] = 'po1_01_ship_dt05_det_016', + [-1343586778] = 'po1_01_ship_dt05_det_019', + [675435983] = 'po1_01_ship_dt05_det_02', + [371576371] = 'po1_01_ship_dt05_det_020', + [-1040152243] = 'po1_01_ship_dt05_det_03', + [-264116793] = 'po1_01_ship_dt05_det_04', + [-374155095] = 'po1_01_ship_dt05_det_05', + [-721670340] = 'po1_01_ship_dt05_det_06', + [-1088027760] = 'po1_01_ship_dt05_det_07', + [-1199147439] = 'po1_01_ship_dt05_det_08', + [-1517669147] = 'po1_01_ship_dt05', + [1563060572] = 'po1_01_shipa_stairs01', + [1942207558] = 'po1_01_shipa_stairs01b', + [1339870913] = 'po1_01_shipa_stairs02', + [-881889556] = 'po1_01_shipa_stairs02b', + [1723983835] = 'po1_01_shipa01', + [-1199302180] = 'po1_01_shipbuffer012_det01', + [1893403271] = 'po1_01_shipbuffer012_det02', + [-493457920] = 'po1_01_shipbuffer012_det03', + [-1916418980] = 'po1_01_shipbuffer012_det04', + [2139039695] = 'po1_01_shipbuffer012_det05', + [-1928326835] = 'po1_01_shipbuffer012', + [-618543443] = 'po1_01_shipdecal', + [-2038774770] = 'po1_01_shipdetail01', + [-106280541] = 'po1_01_shipmain_det_01', + [2123780985] = 'po1_01_shipmain_det_02', + [109750574] = 'po1_01_shipmain', + [-299421617] = 'po1_01_shiprad1', + [1081824506] = 'po1_01_shiprad2', + [-160989943] = 'po1_01_shrailing01', + [762276628] = 'po1_01_shrailing02', + [439960744] = 'po1_01_shrailing03', + [1358180893] = 'po1_01_shrailing04', + [-916731185] = 'po1_01_sidewall044', + [458921549] = 'po1_01_sidewall044b', + [2117252226] = 'po1_01_sidewall046', + [-648307731] = 'po1_01_sidewall046b', + [1850197188] = 'po1_01_spotlite01', + [1860049994] = 'po1_01_tug_dec', + [1382867804] = 'po1_01_tug_det', + [1461947337] = 'po1_01_tug', + [2032926544] = 'po1_01_tuglight', + [-95791646] = 'po1_01_weed', + [-1273837631] = 'po1_01_weed2', + [-621505430] = 'po1_01_windowshadow', + [-1669942809] = 'po1_02_armco01', + [-1708172197] = 'po1_02_bufferm', + [778007450] = 'po1_02_build056_dt_det_02', + [521215420] = 'po1_02_build056_dt_det01', + [-812800942] = 'po1_02_build056_dt', + [-500127072] = 'po1_02_build056_dt03', + [-263945665] = 'po1_02_build056', + [-711056115] = 'po1_02_build057_ov', + [-429232501] = 'po1_02_build057', + [1018492113] = 'po1_02_build065_dt_det', + [1698354213] = 'po1_02_build065_dt', + [353905231] = 'po1_02_build065_dt001', + [-1213985953] = 'po1_02_build065', + [-1092485039] = 'po1_02_build066_dt_det', + [973338466] = 'po1_02_build066_dt', + [361621455] = 'po1_02_build066_g', + [-622613370] = 'po1_02_build069_g', + [-372806063] = 'po1_02_build071', + [1571934254] = 'po1_02_build073_det', + [-1142517044] = 'po1_02_build073', + [-1909073485] = 'po1_02_build078_ov', + [832471335] = 'po1_02_build079_dt_det', + [761255925] = 'po1_02_build079_dt', + [1468025341] = 'po1_02_build079', + [-465971970] = 'po1_02_build080', + [173731756] = 'po1_02_build59_ov3', + [-1653596671] = 'po1_02_build61_ov002', + [2121557862] = 'po1_02_build62_dt001_det', + [-1052617026] = 'po1_02_build62_dt001', + [1937887023] = 'po1_02_build62_ov003', + [-1932847186] = 'po1_02_build69_dt_det01', + [499199550] = 'po1_02_build69_dt', + [-788900473] = 'po1_02_build69_dt02', + [-1036503037] = 'po1_02_build69_dt03', + [-1265328964] = 'po1_02_build69_dt04', + [1442968378] = 'po1_02_build69_ov', + [-1233970938] = 'po1_02_build79fizz', + [-1499586071] = 'po1_02_cablemesh6668_thvy', + [-1927140911] = 'po1_02_cablemesh6669_thvy', + [-1359525020] = 'po1_02_cablemesh6670_thvy', + [-1313975305] = 'po1_02_cablemesh6671_thvy', + [-1305412080] = 'po1_02_cablemesh6672_thvy', + [-176141572] = 'po1_02_cablemesh6673_thvy', + [-1615298332] = 'po1_02_cablemesh6674_thvy', + [1217493052] = 'po1_02_cablemesh6675_thvy', + [-268792128] = 'po1_02_chimeny_01_cap01', + [-564139125] = 'po1_02_chimeny_01_cap02', + [2102458665] = 'po1_02_chimeny_01_det', + [-1995932524] = 'po1_02_chimeny_01', + [-1678732455] = 'po1_02_chimeny_railing', + [-705909884] = 'po1_02_cranetrks005', + [-754631951] = 'po1_02_cranetrks01', + [-845930783] = 'po1_02_dockdetailm', + [-1655637611] = 'po1_02_fancase002', + [-1354916498] = 'po1_02_fancase003', + [2007303663] = 'po1_02_gdhut_int', + [1093609669] = 'po1_02_gdhut001_dt_det', + [1732045295] = 'po1_02_gdhut001_dt', + [1063916798] = 'po1_02_gdhut001_ov', + [-2089374575] = 'po1_02_gdhut002', + [-1703757925] = 'po1_02_gdhut0027', + [2052269043] = 'po1_02_glue_01', + [-1928705655] = 'po1_02_glue_02', + [-1723309563] = 'po1_02_glue_03', + [1672181452] = 'po1_02_glue_04', + [2113186654] = 'po1_02_glue_05', + [1174322035] = 'po1_02_glue_06', + [1480613878] = 'po1_02_glue_07', + [986167907] = 'po1_02_gnd001', + [1309761782] = 'po1_02_gnd003', + [312823846] = 'po1_02_graf1', + [-1399830891] = 'po1_02_grounddt008_det01', + [83326826] = 'po1_02_grounddt008_det02', + [511847039] = 'po1_02_grounddt008_det03', + [-390316300] = 'po1_02_grounddt008_det04', + [-1773885721] = 'po1_02_grounddt008', + [-1972125954] = 'po1_02_handrail01', + [-503639391] = 'po1_02_lad_main', + [-1765545957] = 'po1_02_land001', + [-1689866249] = 'po1_02_land001shadoff', + [-1083193947] = 'po1_02_land001shadproxy', + [2105718169] = 'po1_02_land002', + [-2057790521] = 'po1_02_land002shadoff', + [994528176] = 'po1_02_land002shadproxy', + [-503316846] = 'po1_02_land004', + [404656224] = 'po1_02_pipesb001_det01', + [748468572] = 'po1_02_pipesb001_det02', + [1054629339] = 'po1_02_pipesb001_det03', + [1324482054] = 'po1_02_pipesb001_det04', + [1631855274] = 'po1_02_pipesb001_det05', + [1352958343] = 'po1_02_pipesb001_det06', + [-1533535044] = 'po1_02_pipesb001', + [-1623921714] = 'po1_02_props_combo05_01_lod', + [-1510670563] = 'po1_02_props_combo05_04_lod', + [-686812855] = 'po1_02_props_combo07_04_lod', + [-975956425] = 'po1_02_props_combo13_slod', + [1259532266] = 'po1_02_puddle', + [-1869011098] = 'po1_02_shipbuffer019', + [-726946238] = 'po1_02_shipbuffer020', + [1256331949] = 'po1_02_shipbuffer021', + [-1596529058] = 'po1_02_shipbuffer06', + [809521175] = 'po1_02_sidewall001', + [2125074081] = 'po1_02_sidewall053', + [1761338181] = 'po1_02_sidewall054', + [1531987950] = 'po1_02_sidewall055', + [-1814972184] = 'po1_02_sidewall056', + [-2044650105] = 'po1_02_sidewall057', + [1039863100] = 'po1_02_sidewall059', + [-1470788522] = 'po1_02_slite00', + [-493854907] = 'po1_02_snipe_d', + [916985707] = 'po1_02_snipe', + [817317511] = 'po1_02_talklaugh_pipe', + [1755651564] = 'po1_02_tyrebmas', + [-1691518845] = 'po1_02_tyremaster', + [1874796006] = 'po1_02_valveb_m', + [-590059922] = 'po1_02_valvem', + [379537229] = 'po1_02_wall005', + [611443442] = 'po1_02_wall006', + [1749636691] = 'po1_02_wall007_dt', + [-1128480752] = 'po1_02_wall007_ov', + [290503856] = 'po1_02_wall007', + [492648536] = 'po1_02_wall008_dt_det01', + [868640042] = 'po1_02_wall008_dt_det02', + [620611481] = 'po1_02_wall008_dt_det03', + [671707908] = 'po1_02_wall008_dt', + [-112882927] = 'po1_02_wall008_ov', + [1124864566] = 'po1_02_wall056', + [354610355] = 'po1_02_weed_01', + [779853668] = 'po1_02_weed_02', + [949400474] = 'po1_02_weed_03', + [-1039710595] = 'po1_02_weed_04', + [-1230954998] = 'po1_02_weeds002', + [-735684332] = 'po1_02_weeds004', + [-1870016020] = 'po1_02_weeds005', + [1937019394] = 'po1_02_weighst01', + [1682645315] = 'po1_03_barrier01', + [-1355663608] = 'po1_03_barrier02', + [-2121075247] = 'po1_03_bridge_det_decal', + [-1305590270] = 'po1_03_bridge_ovl_02', + [-2073236864] = 'po1_03_bridge_ovl_03', + [-1455365710] = 'po1_03_brig1_det_00', + [273985460] = 'po1_03_brig1_det_01', + [964559370] = 'po1_03_brig1_det_04', + [-993453922] = 'po1_03_brig1_det_05', + [-754764526] = 'po1_03_brig1_det_06', + [-497232955] = 'po1_03_brig1_det_07', + [-22672297] = 'po1_03_brig1_det_08', + [-1648768384] = 'po1_03_brig1_det_09', + [384678326] = 'po1_03_brig1_det_10', + [1901063733] = 'po1_03_brig1_det_11', + [-46627324] = 'po1_03_brig1_det_16', + [195764969] = 'po1_03_brig1_det_17', + [1346712116] = 'po1_03_brig1_det_20', + [-886167540] = 'po1_03_brig1_det_21', + [563449357] = 'po1_03_brig2_b', + [713643299] = 'po1_03_brig2_det02', + [1613512840] = 'po1_03_brig2_det03', + [1429351032] = 'po1_03_brig2_det06', + [-1940776777] = 'po1_03_brig2_det07', + [590792626] = 'po1_03_brig2_det10', + [1223004947] = 'po1_03_brig2_det11', + [1578155369] = 'po1_03_brig2_det14', + [-2142305819] = 'po1_03_brig2_det15', + [-1780994825] = 'po1_03_brig2_det18', + [1768412163] = 'po1_03_brig2_det19', + [-1999532174] = 'po1_03_brig2_det22', + [1920688838] = 'po1_03_brig2_det23', + [1773165218] = 'po1_03_brig2_noshad', + [879026856] = 'po1_03_brig2', + [-1644328954] = 'po1_03_brig3_b', + [-1236690951] = 'po1_03_brig3_cb01', + [592814587] = 'po1_03_brig3_cb69', + [465604] = 'po1_03_brig3_csup01', + [806943463] = 'po1_03_brig3_csup02', + [1062484854] = 'po1_03_brig3_noshad', + [800115969] = 'po1_03_brig3_top_det', + [1754835821] = 'po1_03_brig3_top', + [639845925] = 'po1_03_brig3', + [315717358] = 'po1_03_brig4_b', + [-1427555200] = 'po1_03_brig4_det00', + [1318290390] = 'po1_03_brig4_det07', + [1494653164] = 'po1_03_brig4_det08', + [-1582682294] = 'po1_03_brig4_det15', + [-2056915286] = 'po1_03_brig4_det16', + [2072470541] = 'po1_03_brig4_det23', + [1350897161] = 'po1_03_brig4_det24', + [19427433] = 'po1_03_brig4_det31', + [-193407222] = 'po1_03_brig4_det32', + [-1889465124] = 'po1_03_brig4_det37', + [-2129858504] = 'po1_03_brig4_det38', + [1956337493] = 'po1_03_brig4_det39', + [1518695091] = 'po1_03_brig4_noshad', + [-2008479145] = 'po1_03_brig4', + [582805032] = 'po1_03_brigzz00', + [285360819] = 'po1_03_brigzz01', + [-840254331] = 'po1_03_brigzz02', + [-1134225030] = 'po1_03_brigzz03', + [-375950370] = 'po1_03_brigzz04', + [-669593379] = 'po1_03_brigzz05', + [-2024198309] = 'po1_03_brigzz06', + [-479926566] = 'po1_03_brsud00', + [-1969176851] = 'po1_03_brsup00', + [1876038019] = 'po1_03_brsup010', + [1166851321] = 'po1_03_brsup013', + [-1467907371] = 'po1_03_brsup014', + [-1944466926] = 'po1_03_brsup016', + [1388924731] = 'po1_03_brsup05', + [-983198019] = 'po1_03_bug_det', + [-855423234] = 'po1_03_builbr50', + [-201788052] = 'po1_03_build0a', + [-1039134309] = 'po1_03_build0b', + [-980405116] = 'po1_03_build0blad', + [-2119151293] = 'po1_03_build0c_det', + [-680641449] = 'po1_03_build0c', + [1783194739] = 'po1_03_build50', + [-1130338724] = 'po1_03_builda_dec', + [-1182846633] = 'po1_03_builda_dt_det_01', + [1975768762] = 'po1_03_builda_dt', + [987145290] = 'po1_03_builda', + [1973231567] = 'po1_03_buildb_dec', + [-627831530] = 'po1_03_buildb_dt_007', + [-939717379] = 'po1_03_buildb_dt_01', + [-175380454] = 'po1_03_buildb_dt_02', + [306553229] = 'po1_03_buildb_dt_04', + [239114627] = 'po1_03_buildb_dt_05', + [1050245684] = 'po1_03_buildb_dt_06', + [1044084249] = 'po1_03_buildb_dt', + [1226391759] = 'po1_03_buildb', + [-1000121911] = 'po1_03_buildd_dec', + [806513108] = 'po1_03_buildd_ladder_01', + [-954896542] = 'po1_03_buildd_ladder_02_lod', + [-932200578] = 'po1_03_buildd', + [2024382155] = 'po1_03_buildf_dec', + [491153040] = 'po1_03_buildf_dt01', + [-1807250874] = 'po1_03_buildf_dt3', + [103745683] = 'po1_03_buildf_lights', + [1662676791] = 'po1_03_buildf_lights001', + [85701435] = 'po1_03_buildf_lights002', + [-1662033176] = 'po1_03_buildf_lights003', + [783812223] = 'po1_03_buildf_lights004', + [-103267819] = 'po1_03_buildfizz01', + [630167943] = 'po1_03_buildfizz02', + [-1903865598] = 'po1_03_buildg_hut', + [-1555896922] = 'po1_03_buildg_ladder', + [-379780780] = 'po1_03_buildg', + [177068410] = 'po1_03_buildgb_dt', + [947093998] = 'po1_03_cablemesh27777_tstd', + [-803440905] = 'po1_03_cablemesh27807_tstd', + [245979914] = 'po1_03_cablemesh45512_thvy', + [1638026503] = 'po1_03_cablemesh45584_thvy', + [721628739] = 'po1_03_cablemesh45727_hvhvy', + [-2122321143] = 'po1_03_cablemesh45744_hvhvy', + [-1134234618] = 'po1_03_ddyell01', + [-1847795895] = 'po1_03_decalglue1', + [-1609335882] = 'po1_03_decalglue2', + [-434990734] = 'po1_03_drydoc01_noshad', + [2113484833] = 'po1_03_drydoc02_noshad', + [-1293874647] = 'po1_03_ebox', + [-474953328] = 'po1_03_erhouse003', + [-617944440] = 'po1_03_gate', + [-1387442821] = 'po1_03_gate01', + [4848171] = 'po1_03_glue01', + [-1834770720] = 'po1_03_glue02', + [1410867658] = 'po1_03_glue07', + [1709819245] = 'po1_03_glue08', + [-843616812] = 'po1_03_gndshadprox', + [-1381517192] = 'po1_03_ladmaster', + [524754566] = 'po1_03_light_master2', + [-1081795575] = 'po1_03_lightc_m', + [857991340] = 'po1_03_pipesb50', + [-2142260378] = 'po1_03_ramp01', + [569514827] = 'po1_03_roadmarkings_01', + [-2036407137] = 'po1_03_roadmarkings_02', + [373095380] = 'po1_03_sail002', + [-1982818403] = 'po1_03_sail01', + [1170605559] = 'po1_03_shed01_det_01', + [-1954016902] = 'po1_03_shed01_det_02', + [-1076200930] = 'po1_03_shed01_det_03', + [-292300912] = 'po1_03_shed01_det_04', + [2107689645] = 'po1_03_shed01', + [-1274030152] = 'po1_03_side03', + [-1511574939] = 'po1_03_side038_det', + [837247775] = 'po1_03_side038_det1', + [644533123] = 'po1_03_side038', + [1788630221] = 'po1_03_side041', + [422823946] = 'po1_03_side059_det', + [-1872420466] = 'po1_03_side059', + [-31247540] = 'po1_03_side063', + [2100198307] = 'po1_03_side15', + [44032215] = 'po1_03_sideref_iref001', + [-1347208457] = 'po1_03_sideref_iref002', + [-1587241382] = 'po1_03_sideref_iref003', + [565387005] = 'po1_03_sideref_iref004', + [1272542025] = 'po1_03_sideref_iref005', + [1011340326] = 'po1_03_sideref_iref006', + [-427546464] = 'po1_03_sideref_iref007', + [-2094374426] = 'po1_03_sideref_iref008', + [793295396] = 'po1_03_sideref_iref009', + [-720469096] = 'po1_03_sideref', + [-1865683825] = 'po1_03_test_wire', + [2026563338] = 'po1_03_test_wire2', + [239309309] = 'po1_03_test_wire3', + [14343662] = 'po1_03_tug_det_01', + [-1345867236] = 'po1_03_tug', + [243949632] = 'po1_03_tyremaster', + [-566191252] = 'po1_03_yard00_det01', + [-319014685] = 'po1_03_yard00_det02', + [1153528623] = 'po1_03_yard00', + [-1710431507] = 'po1_03_yard00a_det', + [654290606] = 'po1_03_yard00a', + [-2022855234] = 'po1_03_yard00b_det', + [2094092353] = 'po1_03_yard00b_ladder', + [378146243] = 'po1_03_yard00b', + [310171877] = 'po1_03_yard00c_det', + [623291104] = 'po1_03_yard00c', + [192378754] = 'po1_03_yard00d', + [-966172298] = 'po1_03_yard00da', + [126041386] = 'po1_04_b01c_det', + [-228943037] = 'po1_04_bridge_d', + [1527377052] = 'po1_04_bridge_m', + [981805300] = 'po1_04_bridge1', + [-188277467] = 'po1_04_bridge2', + [756969006] = 'po1_04_bridgeladder_01', + [1998559697] = 'po1_04_bridgeladder_2', + [-1326084740] = 'po1_04_bridgeladder_3', + [-576461096] = 'po1_04_bridgeladder_4', + [259082870] = 'po1_04_bridgeladder_5', + [-1043779805] = 'po1_04_bridgeladder_6', + [-1005714047] = 'po1_04_brigerail01', + [1162053614] = 'po1_04_brigerail02', + [2123954840] = 'po1_04_brigerail03', + [1874353367] = 'po1_04_brigerail04', + [-1719226253] = 'po1_04_brigerail05', + [467547428] = 'po1_04_brigerail06', + [899639462] = 'po1_04_brigerail07', + [650693369] = 'po1_04_brigerail08', + [1484959340] = 'po1_04_brigerail09', + [2006176305] = 'po1_04_build_01', + [1170958955] = 'po1_04_build_01b', + [1429276942] = 'po1_04_build_01c', + [-1670734882] = 'po1_04_build_03', + [1777414222] = 'po1_04_build_03b', + [707362498] = 'po1_04_build_07_b', + [-753399488] = 'po1_04_build_07', + [85191991] = 'po1_04_build_08', + [1497635066] = 'po1_04_build_09', + [1796141333] = 'po1_04_build_09a', + [-1020845760] = 'po1_04_build_09b', + [-1058136882] = 'po1_04_build_09c', + [-503513759] = 'po1_04_build_09cut', + [-629437867] = 'po1_04_build_105', + [582959369] = 'po1_04_build_105b', + [-1738527675] = 'po1_04_build_105z', + [879053219] = 'po1_04_build_105zb', + [-1897665451] = 'po1_04_build_11', + [-1238319552] = 'po1_04_build_11a', + [-59290080] = 'po1_04_build_12_lod', + [-1658222368] = 'po1_04_build_12', + [1799234826] = 'po1_04_build_13', + [1635479776] = 'po1_04_build_16_nu', + [888518882] = 'po1_04_build_16', + [-1875127549] = 'po1_04_build_16b', + [-1307866837] = 'po1_04_build_18_1', + [-1000985152] = 'po1_04_build_18_2', + [279900245] = 'po1_04_build_18', + [1970316337] = 'po1_04_build_18a', + [-2085470028] = 'po1_04_build_18b', + [506459565] = 'po1_04_build_18c', + [-5022470] = 'po1_04_build_19_a', + [762198127] = 'po1_04_build_19_b', + [1154901823] = 'po1_04_build_19_c', + [848282290] = 'po1_04_build_19_d', + [1269986563] = 'po1_04_build_19_e', + [39932858] = 'po1_04_build_19', + [-965997327] = 'po1_04_build_20', + [-56166042] = 'po1_04_build_21', + [-771998876] = 'po1_04_build_21cut', + [1646156810] = 'po1_04_build_22b', + [592824003] = 'po1_04_build_23', + [337356883] = 'po1_04_build_26', + [1450630039] = 'po1_04_build_26b', + [1210924804] = 'po1_04_build_26c', + [346158591] = 'po1_04_build_30', + [-2076180423] = 'po1_04_build_30a', + [-1100286834] = 'po1_04_build_30b', + [1679146981] = 'po1_04_build_30d', + [-1495426396] = 'po1_04_build_30r1', + [-1254574246] = 'po1_04_build_30r2', + [1641178232] = 'po1_04_build_41e', + [-1525122754] = 'po1_04_buthole', + [-197586652] = 'po1_04_cablemesh_1_tstd', + [-1856197429] = 'po1_04_cablemesh_2_tstd', + [-778937891] = 'po1_04_cage', + [-899167612] = 'po1_04_cage2', + [2141598978] = 'po1_04_cage3', + [181963840] = 'po1_04_ce_ladder', + [-63016951] = 'po1_04_ce_ladder002', + [1597216176] = 'po1_04_ce_xr_ctr1_', + [675030978] = 'po1_04_ce_xr_ctr1c', + [1806675948] = 'po1_04_ce_xr_ctr2b', + [-302351282] = 'po1_04_ctr2brl', + [1315715287] = 'po1_04_decal_02', + [1010701435] = 'po1_04_decal_03', + [-222124821] = 'po1_04_decal_03a', + [-528482202] = 'po1_04_decal_03b', + [-206893432] = 'po1_04_decal_05c', + [2036698821] = 'po1_04_decal_06', + [1996035614] = 'po1_04_decal_06b', + [358336183] = 'po1_04_decal_09', + [-1126231517] = 'po1_04_decal_10', + [788297316] = 'po1_04_decal_11', + [-2071854217] = 'po1_04_dirt', + [-597091967] = 'po1_04_dirt1', + [162609957] = 'po1_04_domez', + [1174187718] = 'po1_04_factdecal', + [-1985804380] = 'po1_04_fencehumper1_r', + [740473758] = 'po1_04_fencehumper2_r', + [168646958] = 'po1_04_fencehumper2_r001', + [62718235] = 'po1_04_fencehumper4_r', + [-2147199698] = 'po1_04_floatgrass', + [567466809] = 'po1_04_frame01', + [-1232337751] = 'po1_04_frame02', + [-1948302196] = 'po1_04_frameb01', + [821172762] = 'po1_04_gav_jumps2', + [274626410] = 'po1_04_gav_jumps2a', + [-2032844693] = 'po1_04_glue_03', + [-1981888942] = 'po1_04_glue_04', + [-1203931957] = 'po1_04_hump004', + [643120657] = 'po1_04_hump1', + [1076140214] = 'po1_04_kerbs', + [-622821593] = 'po1_04_land01_2', + [1772428466] = 'po1_04_land01_3', + [1837311086] = 'po1_04_land01_4', + [1183294234] = 'po1_04_land01_proxchd', + [-369490200] = 'po1_04_land01_sw', + [2130379010] = 'po1_04_land01', + [1756051184] = 'po1_04_land01shadoff', + [-188280769] = 'po1_04_lines01', + [-726052824] = 'po1_04_lines02', + [-1300100166] = 'po1_04_lines03', + [-236085988] = 'po1_04_newgrnd_shadoff', + [-1380676042] = 'po1_04_pipe_08b', + [1471623081] = 'po1_04_pipe_08ba', + [554401543] = 'po1_04_pipe09', + [1300501444] = 'po1_04_pipedetails01', + [-880682223] = 'po1_04_pipes_a', + [2038839067] = 'po1_04_pipes_b', + [1721995606] = 'po1_04_pipes_c', + [1437469779] = 'po1_04_pipes_det', + [1532207746] = 'po1_04_pipes', + [-1020016526] = 'po1_04_pipese', + [-1516583410] = 'po1_04_railline01', + [-1187910340] = 'po1_04_railline02', + [-1970794519] = 'po1_04_railline03', + [-337587559] = 'po1_04_railline04', + [1887330626] = 'po1_04_shadprox01', + [1658570237] = 'po1_04_shadprox02', + [-1258547467] = 'po1_04_sign001', + [1871123721] = 'po1_04_signsgdet', + [-523427058] = 'po1_04_signsgg_a', + [-753432669] = 'po1_04_signsgg_b', + [-2007600710] = 'po1_04_signsgg_c', + [711470383] = 'po1_04_signsgg', + [-727386825] = 'po1_04_silorail00', + [-1051341159] = 'po1_04_silorail01', + [1866050142] = 'po1_04_silorail02', + [-246075753] = 'po1_04_silorail03', + [1745324759] = 'po1_04_staircase01', + [-1711038806] = 'po1_04_supp01', + [-1017777842] = 'po1_04_supp02', + [478011478] = 'po1_04_tankbuilding01', + [22752726] = 'po1_04_tankbuilding02_lod', + [315542776] = 'po1_04_tankbuilding02', + [985261064] = 'po1_04_text002', + [671187007] = 'po1_04_weedy01', + [1084981327] = 'po1_05__rail1b_lod', + [-1254299309] = 'po1_05__rail1b', + [-978764361] = 'po1_05_109', + [149832192] = 'po1_05_123', + [-1990533733] = 'po1_05_126_pipe1_lod', + [-1026727838] = 'po1_05_126_pipe1', + [475883742] = 'po1_05_126', + [-599443005] = 'po1_05_130', + [46827213] = 'po1_05_131', + [2000495076] = 'po1_05_bcloth_01', + [1735819863] = 'po1_05_bcloth_02', + [-946389586] = 'po1_05_billboard_01', + [2057610182] = 'po1_05_billboard_02', + [-2131077448] = 'po1_05_bridge_a', + [489382911] = 'po1_05_bridge_dec_1', + [665232748] = 'po1_05_bridge_dec_1a', + [-167209542] = 'po1_05_bridge_dec_2', + [-4347612] = 'po1_05_bridge_dec_3', + [-455539563] = 'po1_05_bridge', + [-2036269974] = 'po1_05_bridgebas_dec', + [-1510903556] = 'po1_05_bridgecables1_lod', + [906537577] = 'po1_05_bridgecables1', + [-1893315521] = 'po1_05_bridgecables2_lod', + [690983095] = 'po1_05_bridgecables2', + [-889154896] = 'po1_05_bridgecables3_lod', + [540966629] = 'po1_05_bridgecables3', + [1458865930] = 'po1_05_bridgerail1_lod', + [63401758] = 'po1_05_bridgerail1', + [-824305343] = 'po1_05_bridgerail1a_lod', + [-910791121] = 'po1_05_bridgerail1a', + [467167509] = 'po1_05_bridgerail2_lod', + [-301448288] = 'po1_05_bridgerail2', + [-1560370992] = 'po1_05_bridgerail2a_lod', + [-1811348467] = 'po1_05_bridgerail2a', + [-1897781382] = 'po1_05_bridgerail3_lod', + [-1535692681] = 'po1_05_bridgerail3', + [1848971703] = 'po1_05_bridgerail3a_lod', + [-1006246642] = 'po1_05_bridgerail3a', + [-606638156] = 'po1_05_bridgg2', + [-201143825] = 'po1_05_brig_raila_lod', + [-1815761339] = 'po1_05_brig_raila', + [535145730] = 'po1_05_brig_railb_lod', + [-1583986202] = 'po1_05_brig_railb', + [1297965129] = 'po1_05_brig_railc_lod', + [-286727030] = 'po1_05_brig_railc', + [1312484325] = 'po1_05_brig_raild_lod', + [2093056061] = 'po1_05_brig_raild', + [-1602369456] = 'po1_05_brig_raile_lod', + [-725831630] = 'po1_05_brig_raile', + [1652048945] = 'po1_05_brig_railf_lod', + [-355476392] = 'po1_05_brig_railf', + [-839152189] = 'po1_05_briggrail_lod', + [1760766652] = 'po1_05_briggrail', + [694269418] = 'po1_05_briggrail2_lod', + [1755678398] = 'po1_05_briggrail2', + [-1174650205] = 'po1_05_briggrail3_lod', + [-417332299] = 'po1_05_briggrail3', + [-1363775723] = 'po1_05_briggrail4_lod', + [416671520] = 'po1_05_briggrail4', + [-450979891] = 'po1_05_briggrail5_lod', + [329899208] = 'po1_05_briggrail5', + [608408090] = 'po1_05_build0x7d004', + [1422102266] = 'po1_05_building01', + [-1500286208] = 'po1_05_building01fizz', + [1526707497] = 'po1_05_building01fizz2_lod', + [-502976012] = 'po1_05_building01fizz2', + [835445578] = 'po1_05_building02_fizz', + [2121654878] = 'po1_05_building02', + [1866941441] = 'po1_05_building03', + [704756087] = 'po1_05_building04', + [-907807015] = 'po1_05_building05_fizzybit_lod', + [1549468601] = 'po1_05_building05_fizzybit', + [363630797] = 'po1_05_building05', + [1197110312] = 'po1_05_building06', + [1054340741] = 'po1_05_building08_fiz_lod', + [151284861] = 'po1_05_building08_fiz', + [-761525595] = 'po1_05_building08', + [-1437497497] = 'po1_05_building09_fiz_lod', + [172009824] = 'po1_05_building09_fiz', + [-502093418] = 'po1_05_building09', + [-1750851035] = 'po1_05_buildmesh239_b', + [-389504427] = 'po1_05_buildmesh239', + [-188926150] = 'po1_05_buildmesh240', + [-478440265] = 'po1_05_buildmesh241', + [134264427] = 'po1_05_buildmesh242_b', + [-813863753] = 'po1_05_buildmesh242', + [-1119958982] = 'po1_05_buildmesh243', + [802861303] = 'po1_05_buildmesh245_b', + [-1714290335] = 'po1_05_buildmesh245', + [1064914093] = 'po1_05_buildmesh248', + [719260465] = 'po1_05_cables', + [-1156055816] = 'po1_05_ce_xr_ctr2_rsref001', + [-1877488064] = 'po1_05_ce_xr_ctr2001_d', + [81959320] = 'po1_05_ce_xr_ctr2ss_d', + [669089190] = 'po1_05_ce_xr_ctr2ss', + [2144096245] = 'po1_05_ce_xr003_det', + [-55234546] = 'po1_05_ce_xr003', + [-1982942298] = 'po1_05_coastwee_1a', + [-1699981983] = 'po1_05_coastwee_1b', + [-1401259779] = 'po1_05_coastwee_1c', + [753400282] = 'po1_05_coastwee_1d', + [-499727164] = 'po1_05_cont006', + [335358032] = 'po1_05_cont007', + [1148844142] = 'po1_05_decalsn05', + [1775972320] = 'po1_05_decalsn16', + [1878894848] = 'po1_05_det_lod', + [1957804961] = 'po1_05_det1', + [-1815680041] = 'po1_05_det2_lod', + [508727000] = 'po1_05_det2', + [1763833750] = 'po1_05_det3_lod', + [1344139886] = 'po1_05_det3', + [1013467458] = 'po1_05_det4_lod', + [-102775309] = 'po1_05_det4', + [267542994] = 'po1_05_fact_detailfade', + [-141116766] = 'po1_05_factory1', + [641316648] = 'po1_05_factory2_d_lod', + [-34649522] = 'po1_05_factory2_d', + [-436462312] = 'po1_05_factory2_fizz1', + [-689471765] = 'po1_05_factory2_fizz2', + [1243144105] = 'po1_05_factory2', + [148142672] = 'po1_05_factory4_fiz1_lod', + [1743415410] = 'po1_05_factory4_fiz1', + [-1279905066] = 'po1_05_factory4', + [263804192] = 'po1_05_factory4rail_lod', + [-2015233099] = 'po1_05_factory4rail', + [79438364] = 'po1_05_factory4steps_lod', + [-1670038272] = 'po1_05_factory4steps', + [-452593986] = 'po1_05_fenfiz1_lod', + [-938550342] = 'po1_05_fenfiz1', + [474526474] = 'po1_05_fenfiz10_lod', + [2129524860] = 'po1_05_fenfiz10', + [-1600370494] = 'po1_05_fenfiz11_lod', + [-1519336127] = 'po1_05_fenfiz11', + [-472959968] = 'po1_05_fenfiz12_lod', + [1515302724] = 'po1_05_fenfiz12', + [-1811272826] = 'po1_05_fenfiz13_lod', + [192745884] = 'po1_05_fenfiz13', + [910942911] = 'po1_05_fenfiz14_lod', + [1035204105] = 'po1_05_fenfiz14', + [82863611] = 'po1_05_fenfiz15_lod', + [1859868759] = 'po1_05_fenfiz15', + [-1939262309] = 'po1_05_fenfiz16_lod', + [556285170] = 'po1_05_fenfiz16', + [1523802772] = 'po1_05_fenfiz17_lod', + [-110858929] = 'po1_05_fenfiz17', + [435656123] = 'po1_05_fenfiz2_lod', + [1287972132] = 'po1_05_fenfiz2', + [-856580085] = 'po1_05_fenfiz3_lod', + [495191715] = 'po1_05_fenfiz3', + [1081430538] = 'po1_05_fenfiz4_lod', + [812788863] = 'po1_05_fenfiz4', + [-1891752478] = 'po1_05_fenfiz5_lod', + [2130135436] = 'po1_05_fenfiz5', + [-1106917212] = 'po1_05_fenfiz6_lod', + [-2085203210] = 'po1_05_fenfiz6', + [-1253337593] = 'po1_05_fenfiz7_lod', + [851784065] = 'po1_05_fenfiz7', + [404128523] = 'po1_05_fenfiz8_lod', + [1817191466] = 'po1_05_fenfiz8', + [259902039] = 'po1_05_fenfiz9_lod', + [-1709801546] = 'po1_05_fenfiz9', + [-1165163214] = 'po1_05_fizzcont1_lod', + [1955260158] = 'po1_05_fizzcont1', + [-35092589] = 'po1_05_flagpole_1_lod', + [-336212275] = 'po1_05_flagpole_1', + [1127090102] = 'po1_05_flagsup002', + [36039069] = 'po1_05_flagsup01', + [2072369678] = 'po1_05_gav_jump_slod', + [-302839145] = 'po1_05_gav_jump', + [-1152439189] = 'po1_05_gg_ladlod1', + [-229514744] = 'po1_05_gg_nb_a_fiz', + [542163280] = 'po1_05_gg_nb_a_rail_d', + [827150909] = 'po1_05_gg_nb_a_rail', + [1143956595] = 'po1_05_gg_nb_a', + [178968695] = 'po1_05_gg_nb_b_d', + [1454246216] = 'po1_05_gg_nb_b', + [1210187641] = 'po1_05_gg_sig013b_frame_lod', + [-1993515658] = 'po1_05_gg_sig013b_frame', + [-925661858] = 'po1_05_gg_sig013b_frameb_lod', + [442706047] = 'po1_05_gg_sig013b_frameb', + [-454078787] = 'po1_05_gg_sig013b', + [1522186778] = 'po1_05_gg_sig013s', + [651299589] = 'po1_05_gg_sig014', + [-809860780] = 'po1_05_gg_upramp', + [-28029162] = 'po1_05_gg2_ladder', + [1842091215] = 'po1_05_ggmw1_bridgesup', + [684664744] = 'po1_05_gpip1_lod', + [-617057022] = 'po1_05_gpip1', + [-16850065] = 'po1_05_gpip2_lod', + [-359459913] = 'po1_05_gpip2', + [-1208077239] = 'po1_05_gpip3_lod', + [-17941395] = 'po1_05_gpip3', + [2096287147] = 'po1_05_grail1a_lod', + [688240612] = 'po1_05_grail1a', + [55779374] = 'po1_05_grail1c_lod', + [-1546179215] = 'po1_05_grail1c', + [-403024708] = 'po1_05_ground01', + [677149273] = 'po1_05_ground02_decal', + [482436273] = 'po1_05_ground02_o1', + [-361070556] = 'po1_05_ground02_o2', + [-148049119] = 'po1_05_ground02', + [1370872768] = 'po1_05_ground03_decal', + [1317370727] = 'po1_05_ground03_o1', + [2079512121] = 'po1_05_ground03_o2', + [-1923670153] = 'po1_05_ground03', + [-702837516] = 'po1_05_ground04_decal', + [-625493922] = 'po1_05_ground04_o1', + [798974508] = 'po1_05_ground04_o2', + [764894748] = 'po1_05_ground04_o3', + [-1700742646] = 'po1_05_ground04', + [1526159168] = 'po1_05_ground05_o2', + [1752035885] = 'po1_05_ground05_o3', + [902226968] = 'po1_05_hiway', + [1268833003] = 'po1_05_judesbit', + [-400144801] = 'po1_05_mainbridge', + [481853201] = 'po1_05_mainbridge2', + [-1716501234] = 'po1_05_new_entpop_d_lod', + [710884872] = 'po1_05_new_entpop_d', + [-861460750] = 'po1_05_new_entpop', + [1680322394] = 'po1_05_object321d', + [-589853049] = 'po1_05_object322', + [-293024635] = 'po1_05_po1_06_build67', + [-1525135333] = 'po1_05_props_combo01_slod', + [952997663] = 'po1_05_props_combo02_slod', + [-2143313857] = 'po1_05_props_combo04_slod', + [1794587176] = 'po1_05_props_combo05_slod', + [-1844668206] = 'po1_05_props_combo06_slod', + [1368287930] = 'po1_05_props_combo07_slod', + [609073646] = 'po1_05_railriver1_lod', + [-1110300094] = 'po1_05_railriver1', + [1333332491] = 'po1_05_railriver2_lod', + [-1342337383] = 'po1_05_railriver2', + [-2024615811] = 'po1_05_railriver3_lod', + [-1702009939] = 'po1_05_railriver3', + [565913684] = 'po1_05_rocks1', + [332958863] = 'po1_05_rocks2', + [184938441] = 'po1_05_sground', + [606888361] = 'po1_05_signsgg', + [-911071645] = 'po1_05_signsgg2_lod', + [937194792] = 'po1_05_signsggframe_lod', + [-2075847278] = 'po1_05_signsggframe', + [-1675487732] = 'po1_05_traintracks', + [-1351839993] = 'po1_05_trax1_lod', + [-536919101] = 'po1_05_trax1', + [769204252] = 'po1_05_trax2_lod', + [243409096] = 'po1_05_trax2', + [-1887669879] = 'po1_05_trax3_lod', + [1011579994] = 'po1_05_trax3', + [40260892] = 'po1_05_tri_details_fiz1_lod', + [1274201628] = 'po1_05_tri_details_fiz1', + [1767516564] = 'po1_05_tri_details_fiz2_lod', + [1049209674] = 'po1_05_tri_details_fiz2', + [1811238392] = 'po1_05_tri_details_fiz3_lod', + [826708164] = 'po1_05_tri_details_fiz3', + [-1228901940] = 'po1_05_tri_details_fiz4_lod', + [591361206] = 'po1_05_tri_details_fiz4', + [407065699] = 'po1_05_tri_details_lod', + [-1877313693] = 'po1_05_tri_details', + [1846034233] = 'po1_05_triladders', + [-953848090] = 'po1_05_triladders2_lod', + [1667454291] = 'po1_05_triladders2', + [-1857427626] = 'po1_05_triladders5_lod', + [-1774077165] = 'po1_05_triladders5', + [-2089738501] = 'po1_05_underbridge_steps1_lod', + [-48811936] = 'po1_05_underbridge_steps1', + [-998439605] = 'po1_05_underbridge_steps2_lod', + [1399971092] = 'po1_05_underbridge_steps2', + [-1420279948] = 'po1_05_wall007', + [1337807905] = 'po1_06__det_01_lod', + [1114530011] = 'po1_06__ggd', + [187495455] = 'po1_06__ggd2', + [1462808983] = 'po1_06_brumz', + [938908712] = 'po1_06_build071_brand', + [392907638] = 'po1_06_build071_ladder', + [-29382018] = 'po1_06_build071_ladder1', + [-1332716734] = 'po1_06_build071_txt', + [-217403376] = 'po1_06_build071', + [1597642627] = 'po1_06_build078_ov', + [-1925167862] = 'po1_06_build079_dt', + [1710607779] = 'po1_06_build140_ladder', + [1530882553] = 'po1_06_build140', + [-2125548005] = 'po1_06_build141', + [915644578] = 'po1_06_build142', + [1517624898] = 'po1_06_build143_ladder', + [-1334892505] = 'po1_06_build143_ladder1', + [751930654] = 'po1_06_build143', + [644087867] = 'po1_06_build147', + [628096595] = 'po1_06_build148', + [333798206] = 'po1_06_build149', + [570652202] = 'po1_06_build150', + [339761828] = 'po1_06_build151', + [-19419181] = 'po1_06_build152', + [-283406245] = 'po1_06_build153', + [-1412036175] = 'po1_06_build154', + [1333612797] = 'po1_06_build159', + [1648292112] = 'po1_06_build160', + [1475665020] = 'po1_06_build161', + [-1858973950] = 'po1_06_build165', + [1814004957] = 'po1_06_build167', + [-1806478020] = 'po1_06_build168', + [-988662087] = 'po1_06_build169', + [-2041628664] = 'po1_06_build171', + [-1257400956] = 'po1_06_build172', + [-489852669] = 'po1_06_build173', + [1865954131] = 'po1_06_carpark_bumpers', + [-716505356] = 'po1_06_carparkbumps', + [1864522906] = 'po1_06_carparkbumpsb', + [-1429496043] = 'po1_06_decal', + [529049897] = 'po1_06_det_02_lod', + [-1785623842] = 'po1_06_detail05', + [1514110966] = 'po1_06_elevateddecals', + [214410533] = 'po1_06_factory4_detail_lod', + [-1394519360] = 'po1_06_factory4_detail', + [-325704528] = 'po1_06_factory4', + [106699452] = 'po1_06_fencefade', + [-1179768139] = 'po1_06_fizent1', + [-2144419061] = 'po1_06_g_decals_01', + [7053731] = 'po1_06_g_details_01', + [1306921155] = 'po1_06_garage_01', + [872372080] = 'po1_06_gg_fencefade', + [-213934563] = 'po1_06_gg_ladder', + [147450732] = 'po1_06_gg_ladder1_lod007', + [-1812856386] = 'po1_06_gg_ladder1_lod008', + [-1542151677] = 'po1_06_gg_ladder1_lod009', + [-1747645784] = 'po1_06_gg_ladder1_lod010', + [-969906338] = 'po1_06_gg_ladder1_lod011', + [-1283800589] = 'po1_06_gg_ladder1_lod012', + [1897282859] = 'po1_06_gg_ladder1_lod013', + [212956251] = 'po1_06_gg_ladder1_lod014', + [-1434931221] = 'po1_06_gg_ladder1_lod015', + [-1743910122] = 'po1_06_gg_ladder1_lod016', + [-975345996] = 'po1_06_gg_ladder1_lod017', + [1172760269] = 'po1_06_gg_ladder1_lod018', + [860963234] = 'po1_06_gg_ladder1_lod019', + [437981202] = 'po1_06_gg_ladder1_lod020', + [1239183252] = 'po1_06_gg_ladder1_lod021', + [-1520785773] = 'po1_06_gg_ladder1_lod022', + [-1811414034] = 'po1_06_gg_ladder1_lod023', + [-1068999570] = 'po1_06_gg_ladder1_lod024', + [1853241547] = 'po1_06_gg_ladder1_lod025', + [-360435483] = 'po1_06_gg_ladder1_lod026', + [-658567845] = 'po1_06_gg_ladder1_lod027', + [117434844] = 'po1_06_gg_ladder1_lod028', + [-147699135] = 'po1_06_gg_ladder1_lod029', + [705573128] = 'po1_06_gg_ladder1_lod030', + [453481211] = 'po1_06_gg_ladder1_lod031', + [1306654895] = 'po1_06_gg_ladder1_lod032', + [1066032128] = 'po1_06_gg_ladder1_lod033', + [961915194] = 'po1_06_gg_post_decal', + [-1209988802] = 'po1_06_gg_seaw1', + [-2114970283] = 'po1_06_gg_seaw2', + [-311069594] = 'po1_06_gg_seaw3', + [92087413] = 'po1_06_gg_seaw4', + [-3729143] = 'po1_06_gg_seaw5', + [842229367] = 'po1_06_gg_seawdec1', + [98836] = 'po1_06_gg_seawdec2', + [1464185019] = 'po1_06_gg_seawdec3', + [642731695] = 'po1_06_gg_seawdec4', + [-1677868372] = 'po1_06_gg_walkway001_r', + [-462208247] = 'po1_06_gg_walkway001_r2', + [-1389362883] = 'po1_06_gg_walkway001', + [1648925645] = 'po1_06_gg_walkway004_r_lod', + [856658117] = 'po1_06_gg_walkway004_r', + [-1147886692] = 'po1_06_gg_walkway004_r2_lod', + [533698529] = 'po1_06_gg_walkway004_r2', + [-461303557] = 'po1_06_gg_walkway004_rb_lod', + [1267855217] = 'po1_06_gg_walkway004_rb', + [1382435743] = 'po1_06_gg_walkway004', + [1329905139] = 'po1_06_gg_walkway005_r_lod', + [550320469] = 'po1_06_gg_walkway005_r', + [-362822140] = 'po1_06_gg_walkway005_r2_lod', + [1820324617] = 'po1_06_gg_walkway005_r2', + [1685909452] = 'po1_06_gg_walkway005', + [612418441] = 'po1_06_gg_ww_canopy_rail_lod', + [-968599077] = 'po1_06_gg_ww_canopy_rail', + [-1238824414] = 'po1_06_ggfnce_a', + [1114435989] = 'po1_06_ggnulan2_dec', + [-1045631411] = 'po1_06_ggnulan2', + [-2140367013] = 'po1_06_ggnulan2a', + [1734665340] = 'po1_06_ggnulan3s', + [522914885] = 'po1_06_ggnulan3s0', + [801999505] = 'po1_06_global_tex_003', + [-451198692] = 'po1_06_glue_012', + [760615980] = 'po1_06_glue_02', + [-2012821108] = 'po1_06_glue_03', + [-278325169] = 'po1_06_glue_04', + [1372255285] = 'po1_06_glue_04b001', + [1643674988] = 'po1_06_glue_05', + [1033745591] = 'po1_06_glue_07', + [-1455584263] = 'po1_06_glue_08', + [442691138] = 'po1_06_glue_09', + [-856992652] = 'po1_06_glue_10', + [-1758595254] = 'po1_06_grey005', + [2130671936] = 'po1_06_grey3', + [-1409494214] = 'po1_06_grey4', + [618011810] = 'po1_06_grnddet04', + [778058769] = 'po1_06_grornd003', + [-2084641067] = 'po1_06_grornd004', + [-1644815549] = 'po1_06_grornd005', + [984635006] = 'po1_06_gway_03b009', + [2131537810] = 'po1_06_hiframe002', + [1115325246] = 'po1_06_hiframe1_lod', + [-510600642] = 'po1_06_hiframe1', + [-126635734] = 'po1_06_hiway_xframe_02a002', + [1551743463] = 'po1_06_hway_lod', + [-1957467372] = 'po1_06_maingrnd3_deca', + [1068328930] = 'po1_06_maingrnd3', + [-1052237568] = 'po1_06_new_terminal_ladder', + [-1847936784] = 'po1_06_new_terminal_ladder1', + [-2144823924] = 'po1_06_new_terminal_ladder2', + [1812229464] = 'po1_06_new_terminal_ladder3', + [1438269636] = 'po1_06_new_terminal_ladder4', + [769355944] = 'po1_06_new_terminal_sig', + [817359532] = 'po1_06_new_terminal', + [848916651] = 'po1_06_openroad_2_deca', + [1902887775] = 'po1_06_openroad_2', + [-943878128] = 'po1_06_pipes_gav', + [-193659535] = 'po1_06_pipes_gav2', + [1978124699] = 'po1_06_po1_03_shed01_det_01', + [-2028737549] = 'po1_06_po1_03_shed01_det_02', + [2053549864] = 'po1_06_po1_03_shed01', + [854583419] = 'po1_06_postrail_lod', + [1247900063] = 'po1_06_postrail', + [1965508186] = 'po1_06_postrail2_lod', + [930047893] = 'po1_06_postrail2', + [-410009828] = 'po1_06_postrail3_lod', + [630834154] = 'po1_06_postrail3', + [97735248] = 'po1_06_postrail4_lod', + [-502121252] = 'po1_06_postrail4', + [-592775118] = 'po1_06_postrail5_lod', + [-809002937] = 'po1_06_postrail5', + [2098146653] = 'po1_06_prop_sign_hway_03b', + [828159069] = 'po1_06_prop_sign_hway_03b003', + [1467973794] = 'po1_06_prop_sign_hway_03b004', + [-118403553] = 'po1_06_props_combo_slod', + [-1692873392] = 'po1_06_rail_decal', + [1511068713] = 'po1_06_road_decals', + [-1483211843] = 'po1_06_road_decals2', + [-1745305183] = 'po1_06_ropes_north', + [655431326] = 'po1_06_ropes_north2', + [880554356] = 'po1_06_ropes_north3', + [-533739203] = 'po1_06_seawalla_sb', + [610347635] = 'po1_06_seawalla', + [431953199] = 'po1_06_seawallb', + [133460378] = 'po1_06_seawallc', + [-15245344] = 'po1_06_seawalld', + [-1796811872] = 'po1_06_sechurhut2', + [1426519125] = 'po1_06_security_roof', + [-1841505959] = 'po1_06_shadow_gnd', + [-293401296] = 'po1_06_sig1_a_source', + [-1362111091] = 'po1_06_sig1_b_source', + [922767447] = 'po1_06_sig1_c_source', + [-40680523] = 'po1_06_sig1_d_source', + [-2128377247] = 'po1_06_sig1_e_source', + [-392762930] = 'po1_06_sig1_f_source', + [-1218737358] = 'po1_06_sig1_g_source', + [446891082] = 'po1_06_sig1_h_source', + [1003535658] = 'po1_06_sig1_i_source', + [1634383414] = 'po1_06_sig1_j_source', + [-1944976981] = 'po1_06_sig1_k_source', + [1204147362] = 'po1_06_sig1_l_source', + [2144317382] = 'po1_06_sig1_m_source', + [-395739623] = 'po1_06_sig1_n_source', + [1946433204] = 'po1_06_sig1_o_source', + [-1798381275] = 'po1_06_termiansign', + [4292158] = 'po1_06_terminal_graf', + [1328343576] = 'po1_06_terminal_graf001', + [57651546] = 'po1_06_tgrnd008', + [1404019724] = 'po1_06_tgrnd1_deca', + [891955237] = 'po1_06_tgrnd1_deca2', + [2006917910] = 'po1_06_tgrnd1_ol', + [931109522] = 'po1_06_tgrnd1', + [1159577055] = 'po1_06_tgrnd2_deca', + [-1968029438] = 'po1_06_tgrnd2', + [2138755829] = 'po1_06_tgrnd3_deca', + [1410028457] = 'po1_06_tgrnd3', + [-1584565357] = 'po1_06_tgrnd4_deca', + [1765309955] = 'po1_06_tgrnd4', + [-1273181746] = 'po1_06_tgrnd5_deca', + [-436111461] = 'po1_06_tgrnd5', + [659161377] = 'po1_06_tgrnd6_deca', + [-1278110916] = 'po1_06_tgrnd6', + [-1975928231] = 'po1_06_xtra_signs', + [-1579407723] = 'po1_06_zfighto', + [1726590041] = 'po1_07_beams01', + [68061840] = 'po1_07_cardreader01', + [366292509] = 'po1_07_cardreader02', + [-1244219036] = 'po1_07_ce_ladder_b', + [-1723184179] = 'po1_07_ce_ladder_lod', + [-876535273] = 'po1_07_ce_ladder', + [-104891602] = 'po1_07_chunky_exdetail1', + [567298895] = 'po1_07_chunky_exdetail2', + [479578425] = 'po1_07_decal02_boat', + [-122777548] = 'po1_07_decal02', + [-688960330] = 'po1_07_decal03', + [-124142100] = 'po1_07_details01', + [-1033875078] = 'po1_07_details02', + [2051752273] = 'po1_07_details03', + [1134679039] = 'po1_07_details07', + [1729796848] = 'po1_07_details09', + [-205188957] = 'po1_07_details10', + [1392168721] = 'po1_07_details11', + [386946873] = 'po1_07_details12', + [868792360] = 'po1_07_entrance_chunkydetails', + [-762796492] = 'po1_07_entrance_details', + [299883444] = 'po1_07_ex_chunkydetails', + [15365310] = 'po1_07_ex_chunkyfizz1_lod', + [1274500851] = 'po1_07_ex_chunkyfizz1', + [-237470457] = 'po1_07_ex_chunkyfizz2_lod', + [-1788974652] = 'po1_07_ex_chunkyfizz2', + [1384981029] = 'po1_07_ex_chunkyfizz3_lod', + [-1582005648] = 'po1_07_ex_chunkyfizz3', + [2144929698] = 'po1_07_exdetail2', + [-1186601928] = 'po1_07_fiz1_lod', + [-964842967] = 'po1_07_fiz1', + [-2003755120] = 'po1_07_fiz1b_lod', + [-1944249844] = 'po1_07_fiz1b', + [-1454057800] = 'po1_07_fizzygirder_lod', + [-826695899] = 'po1_07_fizzygirder', + [-508756703] = 'po1_07_flurlightgantry', + [1571262965] = 'po1_07_flurlightm', + [-1409718703] = 'po1_07_gg_fix5_lod', + [-617334910] = 'po1_07_gg_fix5', + [-238786598] = 'po1_07_gg_fiz2_lod', + [1049755592] = 'po1_07_gg_fiz2', + [1518053281] = 'po1_07_gg_fiz3_lod', + [237772541] = 'po1_07_gg_fiz3', + [-1927331766] = 'po1_07_gg_fiz4_lod', + [467188310] = 'po1_07_gg_fiz4', + [-1442061592] = 'po1_07_gg_ladder1_lod009', + [670528565] = 'po1_07_gg_ladder1_lod010', + [1209444233] = 'po1_07_ground01_o1', + [54468055] = 'po1_07_ground01_o2', + [-1202545062] = 'po1_07_ground01', + [-430540191] = 'po1_07_ground02', + [-1792813059] = 'po1_07_ground03', + [908940332] = 'po1_07_intdetail_lod', + [1239592840] = 'po1_07_intdetail', + [148728824] = 'po1_07_intdetailb_lod', + [-578831880] = 'po1_07_intdetailb', + [853756564] = 'po1_07_intpipes', + [790762918] = 'po1_07_newfence1', + [1841172424] = 'po1_07_po1_06_b_det2b', + [378590024] = 'po1_07_po1_06_build_det2', + [-2142324885] = 'po1_07_po1_06_build189', + [-1521923134] = 'po1_07_rail2_lod', + [1394183990] = 'po1_07_rail2', + [720096800] = 'po1_07_rail3_lod', + [-979176381] = 'po1_07_rail3', + [1748330218] = 'po1_07_room3struc', + [-798676957] = 'po1_07_ser', + [787532541] = 'po1_07_ship_decalo', + [1687497142] = 'po1_07_ship', + [-854270880] = 'po1_07_slucegates', + [-742023230] = 'po1_07_spinlight', + [737932025] = 'po1_07_spinlight001', + [1397212312] = 'po1_07_steplad_lod', + [-393866669] = 'po1_07_steplad', + [1056910035] = 'po1_07_steplad2_lod', + [-1409105918] = 'po1_07_steplad2', + [52041570] = 'po1_07_sub1', + [-48831560] = 'po1_07_tyremaster', + [-1435977565] = 'po1_07_walkway_2_lod001', + [-1716611281] = 'po1_07_walkway_2_lod002', + [2023152409] = 'po1_07_walkway_2', + [-117089296] = 'po1_07_walkway_3', + [1080189885] = 'po1_07_walkways_1b_lod', + [548680631] = 'po1_07_walkways_1b', + [859660175] = 'po1_07_walkways_2b_lod', + [-1140201096] = 'po1_07_walkways_2b', + [-916702253] = 'po1_07_walkways_3b_lod', + [187139678] = 'po1_07_walkways_3b', + [-1787782566] = 'po1_07_walkways_4b', + [1380714217] = 'po1_07_walkways', + [-439568612] = 'po1_07_walls1', + [-1287710255] = 'po1_07_walls5_beams', + [-1913910807] = 'po1_07_walls5_beamsb_lod', + [211538] = 'po1_07_walls5_beamsb', + [731693695] = 'po1_07_walls5', + [-2079800406] = 'po1_07_wyre_1_lod', + [914218773] = 'po1_07_wyre_1', + [-521896573] = 'po1_07_wyre_2_lod', + [1132886310] = 'po1_07_wyre_2', + [162398369] = 'po1_07_wyre_3_lod', + [297538962] = 'po1_07_wyre_3', + [306895366] = 'po1_07_wyre_4_lod', + [2073749830] = 'po1_07_wyre_4', + [939647133] = 'po1_07parts05', + [-716667126] = 'po1_07sub', + [-2077936428] = 'po1_08_awning_det_01', + [1632890678] = 'po1_08_awning_det_02', + [719487572] = 'po1_08_awning_det_03', + [1026369257] = 'po1_08_awning_det_04', + [369023133] = 'po1_08_awning_det_05', + [674266368] = 'po1_08_awning_det_06', + [-230354646] = 'po1_08_awning_det_07', + [75740583] = 'po1_08_awning_det_08', + [-747992306] = 'po1_08_build_01', + [-1033883466] = 'po1_08_build_02_det', + [1182560568] = 'po1_08_build_02', + [872565828] = 'po1_08_build_03', + [-1642223379] = 'po1_08_build_03dt', + [278833811] = 'po1_08_build_04b', + [894366707] = 'po1_08_build_04c', + [-881962910] = 'po1_08_build_05_det', + [413963673] = 'po1_08_build_05', + [-1373403671] = 'po1_08_build_07_det', + [2103041778] = 'po1_08_build_07', + [-1339734904] = 'po1_08_build_08', + [1197106962] = 'po1_08_build_12_ladder_01', + [1467390768] = 'po1_08_build_12_ladder_2', + [-862422042] = 'po1_08_build_12', + [-678086822] = 'po1_08_build_12det01', + [-386115040] = 'po1_08_build_12det02', + [1766120811] = 'po1_08_build_13_silo1_det', + [1791993741] = 'po1_08_build_13_silo1', + [-846350816] = 'po1_08_build_13_silo2_det', + [2078919081] = 'po1_08_build_13_silo2', + [-1101340821] = 'po1_08_build_13', + [-317866800] = 'po1_08_build_14', + [-1325775690] = 'po1_08_build_15', + [1456163628] = 'po1_08_build_17_road', + [-800226468] = 'po1_08_build_17', + [-760177388] = 'po1_08_build_17b', + [-411973994] = 'po1_08_build_17c', + [-1978599708] = 'po1_08_build_19', + [1846264378] = 'po1_08_build_20', + [-1287575829] = 'po1_08_build_22b_det', + [-1335677569] = 'po1_08_build_22b', + [-785610634] = 'po1_08_build_23', + [-1911979467] = 'po1_08_build_25', + [-574935622] = 'po1_08_build_26_stair', + [1419864935] = 'po1_08_build_26_wall', + [3663504] = 'po1_08_build_26', + [-224605350] = 'po1_08_build_27', + [-69832036] = 'po1_08_build_27a', + [-845310421] = 'po1_08_build_27b', + [-2049997200] = 'po1_08_build_27c', + [-455659569] = 'po1_08_build_28', + [1851867577] = 'po1_08_build_30', + [-1806749990] = 'po1_08_build_30d1', + [-1614723650] = 'po1_08_build_30d2', + [-806255400] = 'po1_08_build_31', + [921906471] = 'po1_08_cablemesh62099_tstd', + [-267764144] = 'po1_08_cablemesh62299_tstd', + [217414100] = 'po1_08_ce_ladder', + [927866505] = 'po1_08_coastal_weed_0', + [-156860691] = 'po1_08_coastal_weed_001', + [2107933182] = 'po1_08_dec_01', + [1378731774] = 'po1_08_dec02', + [445241271] = 'po1_08_dec03', + [970588759] = 'po1_08_decal_02', + [1600441708] = 'po1_08_decal_04', + [-1730429232] = 'po1_08_decal_04b', + [113744550] = 'po1_08_decal_04d', + [-1407752950] = 'po1_08_decal_gavnu', + [-1116913416] = 'po1_08_decal_plntr', + [283343269] = 'po1_08_decal_tnt_03c', + [-1892582712] = 'po1_08_decal08_0_g', + [-1799662779] = 'po1_08_decal08_0', + [975128938] = 'po1_08_fence_underlay', + [603892634] = 'po1_08_fencerubbish', + [-360236890] = 'po1_08_fizzy01', + [-600269815] = 'po1_08_fizzy02', + [137556989] = 'po1_08_fizzy03', + [-113551858] = 'po1_08_fizzy04', + [595634840] = 'po1_08_fizzy05', + [316148039] = 'po1_08_fizzy06', + [1159065026] = 'po1_08_fizzy07', + [1908328327] = 'po1_08_fizzy08', + [529769266] = 'po1_08_fizzy09', + [829318527] = 'po1_08_fizzy10', + [-1073110305] = 'po1_08_ga1_int_reflect', + [369949746] = 'po1_08_garage_int2_reflect', + [1994484622] = 'po1_08_garage_int2', + [-521384993] = 'po1_08_garage001_int', + [-558325299] = 'po1_08_garageshadowbox1', + [-928254548] = 'po1_08_garageshadowbox2', + [1834515933] = 'po1_08_glue_0', + [1662124602] = 'po1_08_glue_001', + [-1383786721] = 'po1_08_glue_002', + [-1103153005] = 'po1_08_glue_003', + [133549415] = 'po1_08_glue_010', + [-606681621] = 'po1_08_ground_02_int2', + [1326431789] = 'po1_08_ground_02', + [1084227842] = 'po1_08_ground_02b_int1', + [417880168] = 'po1_08_ground_02b_stp1_det', + [1107026835] = 'po1_08_ground_02b_stp2', + [1446317061] = 'po1_08_ground_02b_stp3', + [1701751416] = 'po1_08_ground_02b_stp4', + [2071123584] = 'po1_08_ground_02b_stp5', + [1917994059] = 'po1_08_ground_02b_stp6', + [-2134449868] = 'po1_08_ground_02b_stp7', + [1097538559] = 'po1_08_ground_02b', + [1228812926] = 'po1_08_ground_04', + [330975095] = 'po1_08_ground_05', + [587360721] = 'po1_08_ground_ov1_int', + [-2010642918] = 'po1_08_ground_ov2_int2', + [1007046342] = 'po1_08_ju012_det', + [-1635666322] = 'po1_08_ju012', + [-1849211007] = 'po1_08_ju1', + [1746333845] = 'po1_08_ju10', + [2138972003] = 'po1_08_ju11', + [-1429167715] = 'po1_08_ju2_det', + [-597566283] = 'po1_08_ju2', + [-504530590] = 'po1_08_ju3_det', + [-1375043577] = 'po1_08_ju3', + [-1999391334] = 'po1_08_ju4', + [1252877083] = 'po1_08_ju5_det', + [1519737118] = 'po1_08_ju5', + [623182777] = 'po1_08_ju6_det', + [-1514508441] = 'po1_08_ju6', + [824150824] = 'po1_08_ju7_det', + [1997476369] = 'po1_08_ju7', + [2105946075] = 'po1_08_ju8_det', + [770670551] = 'po1_08_ju8', + [-14278075] = 'po1_08_ju9', + [102743998] = 'po1_08_ladnew01', + [-212723165] = 'po1_08_ladnew02', + [414475495] = 'po1_08_ladnew03', + [133022554] = 'po1_08_ladnew04', + [988181407] = 'po1_08_pipes005', + [-99413847] = 'po1_08_props_combo01_01_lod', + [-30224740] = 'po1_08_props_combo0201_slod', + [-1846036615] = 'po1_08_props_combo13_01_lod', + [-1339912854] = 'po1_08_props_combo13_02_lod', + [-1686209224] = 'po1_08_props_combo13_03_lod', + [923028670] = 'po1_08_props_combo13_04_lod', + [203884032] = 'po1_08_roofaccess_ladder01', + [988930965] = 'po1_08_roofaccess_ladder02', + [-761742654] = 'po1_08_ropefiz01', + [72719935] = 'po1_08_ropefiz02', + [848984776] = 'po1_08_ropefiz03', + [1623250708] = 'po1_08_ropefiz04', + [1887267687] = 'po1_08_ruflad01', + [-1884542524] = 'po1_08_ruflad02', + [-2064706486] = 'po1_08_ruflad03', + [-1270680847] = 'po1_08_ruflad04', + [906059378] = 'po1_08_seawall1', + [1008393901] = 'po1_08_seawall1g', + [474196727] = 'po1_08_seawall2', + [-1754532447] = 'po1_08_seawall2gg', + [192743786] = 'po1_08_seawall3', + [1713420743] = 'po1_08_shadprox01', + [328668345] = 'po1_08_shadprox02', + [1096872012] = 'po1_08_shadprox03', + [91534271] = 'po1_08_signage01', + [1058881644] = 'po1_08_signage02_det', + [1522032197] = 'po1_08_signage02', + [1274672426] = 'po1_08_signage03_det', + [-1151248380] = 'po1_08_sub_trans', + [206638960] = 'po1_08_substation_decal', + [33862547] = 'po1_08_substation_fence', + [1928693035] = 'po1_08_substation_wall', + [1513328252] = 'po1_08_substation', + [1850905958] = 'po1_08_wall_piece_gg', + [2059118487] = 'po1_08_walldecal1', + [-642570640] = 'po1_08_wallsmall01', + [496799310] = 'po1_08_wareh_01', + [1100797518] = 'po1_08_wareh_02', + [-1446267606] = 'po1_08_wareh_02b', + [1936275946] = 'po1_08_wareh_03', + [1021205849] = 'po1_08_wareh_04_ladders', + [1696898401] = 'po1_08_wareh_04', + [1251749741] = 'po1_08_wareh2_d_01', + [-1755428616] = 'po1_08_wareh2_d_02', + [-794470753] = 'po1_08_weed_004', + [-1642916395] = 'po1_08_weed_02', + [191983760] = 'po1_08_weed_03', + [-1705162337] = 'po1_08_weedy01', + [-1800749510] = 'po1_08_weedy02', + [2106616742] = 'po1_08_whouse_02_det01', + [1656894986] = 'po1_08_whouse_02_det02', + [1359516311] = 'po1_08_whouse_02_det03', + [1180663105] = 'po1_08_whouse_02_det04', + [-1163172389] = 'po1_08_whouse_02_det05', + [-1466580560] = 'po1_08_whouse_02_det06', + [-1647334364] = 'po1_08_whouse_02_det07', + [-1889333429] = 'po1_08_whouse_02_det08', + [1814862927] = 'po1_08_whouse_02_ladder_01', + [553059781] = 'po1_08_whouse_02_ladder_02', + [-1141845125] = 'po1_08_whouse_02', + [1517581186] = 'po1_08_whouse_02int', + [207574868] = 'po1_08_whouse_05_det_01', + [455210201] = 'po1_08_whouse_05_det_02', + [1728875693] = 'po1_08_whouse_05_det_03', + [1959143456] = 'po1_08_whouse_05_det_04', + [1131070826] = 'po1_08_whouse_05_det_05', + [-1421446829] = 'po1_08_whouse_05_ladder_01', + [1232907713] = 'po1_08_whouse_05_ladder_02', + [-723548836] = 'po1_08_whouse_05', + [-1424128189] = 'po1_08_whouse_05int', + [2006265530] = 'po1_09_bch2_00', + [-1197499261] = 'po1_09_bluey001_det', + [-392427410] = 'po1_09_bluey001', + [1035330703] = 'po1_09_bridge_det01', + [-496914972] = 'po1_09_bridge_det03', + [1774763184] = 'po1_09_bridge_det05', + [2133157737] = 'po1_09_bridge_det07', + [-1829990669] = 'po1_09_bridge_det09', + [1125248555] = 'po1_09_bridge_det11', + [1432982234] = 'po1_09_bridge_det13', + [2042452865] = 'po1_09_bridge_det15', + [-914011912] = 'po1_09_bridge', + [1531369880] = 'po1_09_brig_det_00', + [1753543700] = 'po1_09_brig_det_01', + [918425735] = 'po1_09_brig_det_02', + [-1026545495] = 'po1_09_brig_det_03', + [-1811789042] = 'po1_09_brig_det_04', + [-1573099646] = 'po1_09_brig_det_05', + [1875346073] = 'po1_09_brig_det_06', + [-71722365] = 'po1_09_brig_det_07', + [150910221] = 'po1_09_brig_det_08', + [-680537624] = 'po1_09_brig_det_09', + [-1163788866] = 'po1_09_brig_det01', + [-1538076384] = 'po1_09_brig_det02', + [759290290] = 'po1_09_brig_m_glue', + [809476508] = 'po1_09_brig_m', + [-1681863007] = 'po1_09_briga', + [-1441895620] = 'po1_09_brigb', + [-1862975456] = 'po1_09_ce_xr_ctr2_002', + [887660495] = 'po1_09_ce_xr_ctr2_gg_det1', + [1109539394] = 'po1_09_ce_xr_ctr2_gg_det2', + [-177104432] = 'po1_09_ce_xr_ctr2_gg', + [-1458724314] = 'po1_09_ce_xr_ctr3_gg_det', + [452057548] = 'po1_09_ce_xr_ctr3_gg_det2', + [1567952789] = 'po1_09_ce_xr_ctr3_gg', + [-1149075785] = 'po1_09_ce_xrdec', + [-1958932207] = 'po1_09_collapsed_dt1', + [-1598145517] = 'po1_09_collapsed_dt2', + [420441682] = 'po1_09_collapsed', + [-712700665] = 'po1_09_collapsed2_decal_lod', + [830488600] = 'po1_09_collapsed2_decal', + [-1394274008] = 'po1_09_collapsed2_det', + [1971153404] = 'po1_09_collapsed2', + [-1243008143] = 'po1_09_congrnd', + [-117396406] = 'po1_09_decalb02', + [69452424] = 'po1_09_decalb03', + [366634485] = 'po1_09_decalb04', + [12204981] = 'po1_09_decalb05', + [1379950288] = 'po1_09_decalb06', + [1554609058] = 'po1_09_decalb07', + [778802983] = 'po1_09_decalb08', + [1033123192] = 'po1_09_decalb09', + [542276045] = 'po1_09_decalb10', + [-2084120444] = 'po1_09_dock', + [-402300937] = 'po1_09_dtgnd_det', + [1980765915] = 'po1_09_dtgnd', + [-592653548] = 'po1_09_dtgndb001_decal', + [1569090510] = 'po1_09_dtgndb001', + [-1068832209] = 'po1_09_dtgndentrance_dt', + [-1414890814] = 'po1_09_dtgndentrance', + [-779689788] = 'po1_09_ducto', + [1301196091] = 'po1_09_elec_wires_spline14', + [1914069288] = 'po1_09_factory_det', + [1513236963] = 'po1_09_factory', + [-440762701] = 'po1_09_factory2_det', + [1904668164] = 'po1_09_factory2', + [-1429343892] = 'po1_09_fence_01', + [2096895433] = 'po1_09_fence_02', + [-1872544617] = 'po1_09_fence_03', + [-493428475] = 'po1_09_fence_04', + [-1271200690] = 'po1_09_fence_05', + [-978475213] = 'po1_09_fence_06', + [-827180652] = 'po1_09_fence_07', + [-1125378552] = 'po1_09_fence_08', + [-346164501] = 'po1_09_fence_09', + [1625886244] = 'po1_09_fence_10', + [1344534635] = 'po1_09_fence2', + [-96222078] = 'po1_09_fwyrail_01', + [-398778255] = 'po1_09_fwyrail_02', + [-675020925] = 'po1_09_fwyrail_03', + [1438481272] = 'po1_09_fwyrail_04', + [1131108052] = 'po1_09_fwyrail_05', + [844838068] = 'po1_09_fwyrail_06', + [551915977] = 'po1_09_fwyrail_07', + [2056242456] = 'po1_09_fwyrail_08', + [1758077325] = 'po1_09_fwyrail_09', + [-1653109669] = 'po1_09_fwyrail_10', + [-2019925859] = 'po1_09_fwyrail_11', + [-2063246477] = 'po1_09_fwyrail_12', + [1941420248] = 'po1_09_fwyrail_13', + [-148248168] = 'po1_09_gg_ladder', + [-1366619160] = 'po1_09_gg_les_steps', + [2007254] = 'po1_09_gg_supp', + [1458978935] = 'po1_09_gg_walls1_noshad', + [2010672569] = 'po1_09_gg00_det01', + [-1916700161] = 'po1_09_gg00_steps_det', + [-1815762836] = 'po1_09_gg00_steps', + [605458855] = 'po1_09_gg00', + [15064663] = 'po1_09_gg00b_det', + [895374011] = 'po1_09_gg00b', + [-1226382022] = 'po1_09_gg02_det_05', + [1107481362] = 'po1_09_gg02_det01', + [2066597227] = 'po1_09_gg02_det02', + [1820829727] = 'po1_09_gg02_det03', + [902871714] = 'po1_09_gg02_det04', + [1200707740] = 'po1_09_gg02', + [104856488] = 'po1_09_gg03_balcony_det', + [-1359658317] = 'po1_09_gg03_decal', + [401174650] = 'po1_09_gg03_ladders_det1', + [-491092451] = 'po1_09_gg03_ladders_det2', + [955549264] = 'po1_09_gg03_lean1', + [-13528373] = 'po1_09_gg03_lean2', + [-1037061637] = 'po1_09_gg03_lowerstairs1_det', + [-582050033] = 'po1_09_gg03_lowerstairs2_det', + [-325522912] = 'po1_09_gg03_lowrail_01', + [-76216364] = 'po1_09_gg03_lowrail_02', + [-1040902951] = 'po1_09_gg03_lowrail_03', + [-810373036] = 'po1_09_gg03_lowrail_04', + [1214521773] = 'po1_09_gg03_lowrail_05', + [1721982507] = 'po1_09_gg03_lowrail_06', + [748317210] = 'po1_09_gg03_lowrail_07', + [987530910] = 'po1_09_gg03_lowrail_08', + [-1624092852] = 'po1_09_gg03_lowrail_09', + [-243480599] = 'po1_09_gg03_railing_det_01', + [-15506666] = 'po1_09_gg03_railing_det_02', + [-605020976] = 'po1_09_gg03_railing_det_03', + [-376588277] = 'po1_09_gg03_railing_det_04', + [-1811706636] = 'po1_09_gg03_railing_det_05', + [-1582356405] = 'po1_09_gg03_railing_det_06', + [-225097218] = 'po1_09_gg03_railing_det_07', + [-13343940] = 'po1_09_gg03_railing_det_08', + [2135679877] = 'po1_09_gg03_railing_det_09', + [816039210] = 'po1_09_gg03_railing_det_10', + [-1417597819] = 'po1_09_gg03_stair_det', + [-581051450] = 'po1_09_gg03_sup', + [971685199] = 'po1_09_gg03', + [-874617518] = 'po1_09_gg04_a_det01', + [-1661499515] = 'po1_09_gg04_a_det02', + [538856661] = 'po1_09_gg04_a', + [1130800576] = 'po1_09_gg04_det1', + [1421920372] = 'po1_09_gg04_det2', + [1782615609] = 'po1_09_gg04_det69', + [1322511976] = 'po1_09_gg04_fence_det', + [1024402943] = 'po1_09_gg04_fence', + [1296736699] = 'po1_09_gg04_lod', + [-610992015] = 'po1_09_gg04', + [1469929734] = 'po1_09_gg1b_dlod', + [727067150] = 'po1_09_gg1b', + [-695215346] = 'po1_09_ground_decal_01', + [-380501874] = 'po1_09_ground_decal_02', + [-1307373035] = 'po1_09_ground_decal_03', + [-456394874] = 'po1_09_ground_decal_04', + [542600860] = 'po1_09_ground_decal_05', + [1469318540] = 'po1_09_jumpdecal', + [948498569] = 'po1_09_ladder_03', + [338482723] = 'po1_09_landa', + [351804967] = 'po1_09_landab', + [1027024951] = 'po1_09_landb', + [-715723928] = 'po1_09_landbb_s', + [1426532948] = 'po1_09_landbb', + [462657962] = 'po1_09_memorial_det', + [1596484297] = 'po1_09_memorial', + [-216688915] = 'po1_09_met_stair_ref_source', + [-116234767] = 'po1_09_pipes_det01', + [-425803510] = 'po1_09_pipes_det02', + [359931576] = 'po1_09_pipes_det03', + [1104115566] = 'po1_09_pipes_det04', + [747130080] = 'po1_09_pipes_det05', + [-1218880632] = 'po1_09_pipes_detail1', + [-988317948] = 'po1_09_pipes_detail2', + [-1846636365] = 'po1_09_pipes_detail3', + [1449708114] = 'po1_09_pipes_metal01', + [1647763950] = 'po1_09_pipes_metal02', + [-1409190638] = 'po1_09_pipes_metal03', + [-1707093617] = 'po1_09_pipes_metal04', + [-1217917985] = 'po1_09_pipes_metal05', + [1394979243] = 'po1_09_pipes', + [-1611417924] = 'po1_09_pipes004_det', + [1985140352] = 'po1_09_pipes004', + [-578905468] = 'po1_09_pipes2', + [-161565127] = 'po1_09_po109_gg_walls1', + [74142290] = 'po1_09_po109_gg_walls2', + [957857156] = 'po1_09_prereflprox01_dummy', + [1171921038] = 'po1_09_prereflprox01', + [1989774053] = 'po1_09_prop_tank_05_decal', + [-507842927] = 'po1_09_railcrane_det', + [362266212] = 'po1_09_railcrane_det6', + [1111167555] = 'po1_09_railcrane_lod', + [-2131213691] = 'po1_09_railcrane_track', + [1819899732] = 'po1_09_railcrane', + [950815684] = 'po1_09_railcrane1', + [-1221998403] = 'po1_09_railcrane2', + [1832989933] = 'po1_09_railcrane3', + [-785313269] = 'po1_09_rails', + [-671659056] = 'po1_09_redrail2_01', + [-1580507271] = 'po1_09_redrail2_02', + [1921777915] = 'po1_09_redrail2_03', + [1013028007] = 'po1_09_redrail2_04', + [1336654651] = 'po1_09_redrail2_05', + [1509773278] = 'po1_09_redrail2_06', + [1799254624] = 'po1_09_redrail2_07', + [-975356472] = 'po1_09_redrailing_01', + [-1810802131] = 'po1_09_redrailing_02', + [-1998109723] = 'po1_09_redrailing_03', + [-1187306336] = 'po1_09_redrailing_04', + [-1417934558] = 'po1_09_redrailing_05', + [509188715] = 'po1_09_spec_decals', + [212945726] = 'po1_09_stairref_source_d', + [-1207539782] = 'po1_09_tower_detail_hd_01', + [625984420] = 'po1_09_tower_hd_01', + [204522659] = 'po1_09_weewall', + [2019560323] = 'po1_09_wet_new', + [466882323] = 'po1_09_xr_ctr2_2_det01', + [-1681177772] = 'po1_10_armco_2', + [-1891317448] = 'po1_10_armco1', + [1344202741] = 'po1_10_bigpipes_det_01', + [-579632496] = 'po1_10_bigpipes_det_02', + [680007880] = 'po1_10_bigpipes_det_03', + [-834336068] = 'po1_10_bigpipes', + [-1530080408] = 'po1_10_buid207', + [1037627582] = 'po1_10_buif207_detail', + [357273879] = 'po1_10_buif207_details', + [-328286727] = 'po1_10_buif207', + [-68584758] = 'po1_10_cablemesh_thvy', + [1727806363] = 'po1_10_elecwire', + [700668077] = 'po1_10_fizz_hd', + [-451058061] = 'po1_10_fizzing_bars_002', + [283164161] = 'po1_10_fizzing_bars_003', + [-1776660653] = 'po1_10_fizzing_bars_01', + [312872721] = 'po1_10_fizzy_006', + [1025874090] = 'po1_10_fizzy_04', + [1980435060] = 'po1_10_fizzy_08', + [-1033791927] = 'po1_10_fizzy_hd_02', + [-135136870] = 'po1_10_gaaaate', + [-1283805971] = 'po1_10_gaaaate001', + [46189432] = 'po1_10_gaaaate002', + [268822018] = 'po1_10_gaaaate003', + [-565706105] = 'po1_10_gaaaate004', + [-803181949] = 'po1_10_gg_ladder', + [38042240] = 'po1_10_gound2_build', + [2135347557] = 'po1_10_gound2_detail', + [-1017012170] = 'po1_10_gound2', + [1068821914] = 'po1_10_ground1_details', + [294069676] = 'po1_10_ground1', + [-15445256] = 'po1_10_ground3_detail', + [-170496437] = 'po1_10_ground3', + [-2072167053] = 'po1_10_ground4_detail', + [-544521803] = 'po1_10_ground4', + [-1203930220] = 'po1_10_ground5_detail', + [-2081086074] = 'po1_10_ground5_pipes', + [1515894610] = 'po1_10_ground5', + [-965126350] = 'po1_10_house1_detail', + [965092516] = 'po1_10_house1_int_det', + [1647152576] = 'po1_10_house1_int', + [-504130017] = 'po1_10_house1', + [-1574439387] = 'po1_10_ladder_002', + [-1329032346] = 'po1_10_ladder_003', + [1305062362] = 'po1_10_ladder_01', + [-1011308966] = 'po1_10_largepipe', + [-468065982] = 'po1_10_new_yell1_detail', + [1165990509] = 'po1_10_new_yell1_wall', + [-861812570] = 'po1_10_new_yell1', + [-159591261] = 'po1_10_pier_detail', + [1100059398] = 'po1_10_pier_hd', + [1732460782] = 'po1_10_pier_hd2', + [1792791999] = 'po1_10_pier', + [-1378716855] = 'po1_10_pierbuild01_detail', + [-667216973] = 'po1_10_pierbuild01', + [-2105570937] = 'po1_10_pipe1_2', + [1236326308] = 'po1_10_pipe1_3_det', + [-1807733496] = 'po1_10_pipe1_3', + [629378962] = 'po1_10_pipe1_detail', + [1370064921] = 'po1_10_pipe1_pipefail', + [-1428916698] = 'po1_10_pipe1_pipefail2', + [-2051629200] = 'po1_10_pipe1', + [-279332751] = 'po1_10_pipes_fizzy_01', + [902776103] = 'po1_10_pipes_fizzy_02', + [-289054264] = 'po1_10_silo_detail', + [1587383701] = 'po1_10_silo_fizz1', + [1208115299] = 'po1_10_silo_fizz2', + [978306302] = 'po1_10_silo_fizz3', + [323042034] = 'po1_10_silo_small_ladders', + [-740565927] = 'po1_10_silo_smallgg', + [-714341136] = 'po1_10_silo', + [2075217504] = 'po1_10_supports_hd', + [1843489597] = 'po1_10_supports2_hd', + [-597309867] = 'po1_10_supports3_hd', + [-848905384] = 'po1_10_tarp', + [-1001751646] = 'po1_10_tower1_detail', + [690064848] = 'po1_10_tower1', + [571828606] = 'po1_10_tower1b_detail', + [526195371] = 'po1_10_tower1b', + [1825775319] = 'po1_10_tower3_detail', + [1152337131] = 'po1_10_tower3', + [1599098414] = 'po1_10_tower4_detail', + [1382342742] = 'po1_10_tower4', + [-1793585478] = 'po1_10_walkway1_detail', + [-139380079] = 'po1_10_walkway1', + [119137630] = 'po1_10_walkway1b', + [846928484] = 'po1_10_walkway2_detail', + [-1960746653] = 'po1_10_walkway2', + [1834429475] = 'po1_10_walkway2a', + [-1323322441] = 'po1_10_walkway2b', + [-252741249] = 'po1_emissive_po1_01a', + [-2037078837] = 'po1_emissive_po1_01b', + [-747618687] = 'po1_emissive_po1_01c', + [-515712474] = 'po1_emissive_po1_01d', + [881458531] = 'po1_emissive_po1_02a', + [522703519] = 'po1_emissive_po1_02b', + [-805325748] = 'po1_emissive_po1_02c', + [-1161655854] = 'po1_emissive_po1_02d', + [939820120] = 'po1_emissive_po1_02e', + [41959915] = 'po1_emissive_po1_03_emc', + [1172774133] = 'po1_emissive_po1_03b', + [866416752] = 'po1_emissive_po1_03c', + [594106362] = 'po1_emissive_po1_03d', + [-1168243207] = 'po1_emissive_po1_03e', + [-862115209] = 'po1_emissive_po1_03f', + [1672593981] = 'po1_emissive_po1_04', + [617886152] = 'po1_emissive_po1_05_ema', + [1927138782] = 'po1_emissive_po1_05_emb', + [1618290957] = 'po1_emissive_po1_05_emc', + [-788203254] = 'po1_emissive_po1_05_emc1', + [303207796] = 'po1_emissive_po1_06_ema', + [536097079] = 'po1_emissive_po1_06_emb', + [1658315630] = 'po1_emissive_po1_061_ema', + [-773228401] = 'po1_emissive_po1_07_emb', + [-1584382455] = 'po1_emissive_po1_07', + [305531456] = 'po1_emissive_po1_08a', + [553396172] = 'po1_emissive_po1_08b', + [916640537] = 'po1_emissive_po1_08c', + [1130491031] = 'po1_emissive_po1_08d', + [1737241835] = 'po1_emissive_po1_08e', + [-1254207410] = 'po1_emissive_po1_08f', + [-1946223152] = 'po1_emissive_po1_08g', + [1504254245] = 'po1_emissive_po1_08h', + [-1540018628] = 'po1_emissive_po1_08i', + [-1206822548] = 'po1_emissive_po1_09a', + [-1093310732] = 'po1_emissive_po1_09b', + [561476973] = 'po1_emissive_po1_10_ema', + [-298643739] = 'po1_emissive_po1_10_emb', + [1160527050] = 'po1_emissive_po1_10_emc', + [262066620] = 'po1_emissive_po1_10_emd', + [-632690925] = 'po1_emissive_po1_10_eme', + [-1022642025] = 'po1_emissive_po1_10_emf', + [576022948] = 'po1_lod_emi_proxy_slod3', + [-506918457] = 'po1_lod_emissive', + [-1327155414] = 'po1_lod_slod4', + [-1788412152] = 'po1_rd_barrier_01', + [-2084283453] = 'po1_rd_barrier_02', + [-1179531351] = 'po1_rd_barrier_03', + [386534411] = 'po1_rd_big_junc', + [-775332018] = 'po1_rd_bj2', + [-523993788] = 'po1_rd_bj3', + [1160850440] = 'po1_rd_bork', + [521756822] = 'po1_rd_gg1', + [-395742401] = 'po1_rd_gg2', + [-57161550] = 'po1_rd_ovly_01_new', + [1936793046] = 'po1_rd_ovly_02_lod', + [122438017] = 'po1_rd_ovly_02', + [420603148] = 'po1_rd_ovly_03', + [-1278403960] = 'po1_rd_ovly_04', + [-802630849] = 'po1_rd_ovly_06', + [-525700030] = 'po1_rd_ovly_07', + [2098212107] = 'po1_rd_ovly_09', + [1597042385] = 'po1_rd_props_l_001', + [-1066803320] = 'po1_rd_road04', + [-846104105] = 'po1_rd_road05', + [-884327658] = 'po1_rd_road10_det', + [-1683024693] = 'po1_rd_road10', + [1820345435] = 'po1_rd_road116', + [1229679321] = 'po1_rd_road25', + [-467913573] = 'po1_rd_shadow', + [-1892654688] = 'po1_sh1_cable007', + [-2144116454] = 'po1_sh1_cablemesh132857_thvy', + [1358355856] = 'po1_sh1_cablemesh132858_thvy', + [260615645] = 'po1_sh1_cablemesh74254_thvy', + [-1389651603] = 'po1_sh1_cablemesh74267_thvy', + [-1407261995] = 'po1_sh1_cablemesh74322_thvy', + [880693418] = 'po1_sh1_cablemesh74323_thvy', + [1615030391] = 'po1_sh1_cablemesh74324_thvy', + [1101062279] = 'po1_sh1_cablemesh74325_thvy', + [-762618947] = 'po1_sh1_cablemesh91910_thvy', + [1110203487] = 'po1_sh1_cablemesh91925_thvy', + [-850325873] = 'po1_sh1_cablemesh91941_thvy', + [-1614090404] = 'po1_sh1_cablemesh91956_thvy', + [1205023989] = 'po1_sh1_cablemesh91971_thvy', + [-413712297] = 'po1_sh1_cablemesh91986_thvy', + [1953678221] = 'po1_sh1_cablemesh92001_thvy', + [905007624] = 'po1_sh1_cablemesh92016_thvy', + [-187438110] = 'po1_sh1_cablemesh92031_thvy', + [158639696] = 'po1_sh1_cablemesh92046_thvy', + [1423701083] = 'po1_sh1_cablemesh92061_thvy', + [1787893875] = 'po1_sh1_cablemesh92076_thvy', + [779624194] = 'po1_sh1_cablemesh92092_thvy', + [55258574] = 'po1_sh1_cablemesh92107_thvy', + [1328452171] = 'po1_sh1_cablemesh92381_thvy', + [1462981042] = 'po1_sh1_cablemesh92382_thvy', + [109283038] = 'po1_sh1_cablemesh92383_thvy', + [253544174] = 'po1_sh1_cablemesh92384_thvy', + [1065150549] = 'po1_sh1_cablemesh92385_thvy', + [-635693058] = 'po1_sh1_cablemesh92386_thvy', + [-1737592698] = 'po1_sh1_cablemesh92387_thvy', + [1989904336] = 'po1_sh1_cablemesh92388_thvy', + [-20347931] = 'po1_sh1_cablemesh92389_thvy', + [1037126769] = 'po1_sh1_cablemesh92390_thvy', + [-179638538] = 'po1_sh1_cablemesh92391_thvy', + [1654555837] = 'po1_sh1_cablemesh92392_thvy', + [-937607461] = 'po1_sh1_cablemesh92393_thvy', + [-465644219] = 'po1_sh1_cablemesh92394_thvy', + [-1575724083] = 'po1_sh1_cablemesh92627_thvy', + [-124078652] = 'po1_sh1_cablemesh92628_thvy', + [1373725116] = 'po1_sh1_cablemesh92629_thvy', + [1569687330] = 'po1_sh1_cablemesh92630_thvy', + [-448888884] = 'po1_sh1_cablemesh92631_thvy', + [-2136204015] = 'po1_sh1_cablemesh92632_thvy', + [-1154796704] = 'po1_sh1_cablemesh92633_thvy', + [-345472610] = 'po1_sh1_cablemesh92634_thvy', + [-312481226] = 'po1_sh1_cablemesh92635_thvy', + [287836390] = 'po1_sh1_cablemesh92636_thvy', + [487639633] = 'po1_sh1_cablemesh92739_thvy', + [-1402574965] = 'po1_sh1_cablemesh92740_thvy', + [320514514] = 'po1_sh1_cablemesh92742_thvy', + [-173881972] = 'po1_sh1_cablemesh92743_thvy', + [2043994835] = 'po1_sh1_cablemesh92744_thvy', + [1780666843] = 'po1_sh1_cablemesh92745_thvy', + [-1611571907] = 'po1_sh1_cablemesh92960_thvy', + [543605257] = 'po1_sh1_cablemesh92961_thvy', + [941540822] = 'po1_sh1_cablemesh92962_thvy', + [1938615983] = 'po1_sh1_cablemesh92963_thvy', + [1377491721] = 'po1_sh1_cablemesh92964_thvy', + [-1882642571] = 'po1_sh1_cablemesh92965_thvy', + [-1100025059] = 'po1_sh1_cablemesh92966_thvy', + [-367975617] = 'po1_sh1_cablemesh92967_thvy', + [-1304647027] = 'po1_sh1_cablemesh92968_thvy', + [1661321925] = 'po1_sh1_cablemesh92969_thvy', + [754805482] = 'po1_sh1_cablemesh92970_thvy', + [-1681632956] = 'po1_sh1_cablemesh92971_thvy', + [1209290430] = 'po1_sh1_cablemesh92986_thvy', + [-368457898] = 'po1_sh1_cablemesh92987_thvy', + [748768904] = 'po1_sh1_cablemesh93508_thvy', + [-1752228188] = 'po1_sh1_cablemesh93509_thvy', + [-1731814015] = 'po1_sh1_cablemesh93510_thvy', + [-549357191] = 'po1_sh1_cablemesh93511_thvy', + [1220373552] = 'po1_sh1_cablemesh93512_thvy', + [1144237072] = 'po1_sh1_cablemesh93513_thvy', + [1441674390] = 'po1_sh1_cablemesh93514_thvy', + [-960308527] = 'po1_sh1_cablemesh93515_thvy', + [425215711] = 'po1_sh1_cablemesh93516_thvy', + [1600601284] = 'po1_sh1_cablemesh93517_thvy', + [1971493884] = 'po1_sh1_cablemesh93518_thvy', + [1065243060] = 'po1_sh1_cablemesh93519_thvy', + [1396932670] = 'po1_sh1_cablemesh93520_thvy', + [1611495361] = 'po1_sh1_cablemesh93521_thvy', + [-1791440933] = 'po1_sh1_cablemesh93524_thvy', + [1140228521] = 'po1_sh1_cablemesh93525_thvy', + [-2086976284] = 'po1_sh1_cablemesh93526_thvy', + [436798399] = 'po1_sh1_cablemesh93527_thvy', + [-299799291] = 'po1_sh1_cablemesh93528_thvy', + [-1500923011] = 'po1_sh1_cablemesh93529_thvy', + [-373115256] = 'po1_sh1_cablemesh93530_thvy', + [-1785739863] = 'po1_sh1_cablemesh93531_thvy', + [-225910105] = 'po1_sh1_cablemesh93533_thvy', + [89393425] = 'po1_sh1_cablemesh93534_thvy', + [2050331064] = 'po1_sh1_cablemesh93535_thvy', + [-1732552693] = 'po1_sh1_cablemesh93536_thvy', + [-1678711685] = 'po1_sh1_cablemesh93537_thvy', + [1700726269] = 'po1_sh1_cablemesh93538_thvy', + [2056200971] = 'po1_sh1_cablemesh93602_thvy', + [378833876] = 'po1_sh1_cablemesh93603_thvy', + [327452601] = 'po1_sh1_cablemesh93604_thvy', + [1474465310] = 'po1_sh1_cablemesh93605_thvy', + [-767815094] = 'po1_sh1_cablemesh93607_thvy', + [-478973760] = 'po1_sh1_cablemesh93609_thvy', + [-1479200007] = 'po1_sh1_cablemesh93611_thvy', + [998702070] = 'po1_sh1_cablemesh93612_thvy', + [1989117003] = 'po1_sh1_cablemesh93613_thvy', + [137741997] = 'po1_sh1_cablemesh93614_thvy', + [-1072838151] = 'po1_sh1_cablemesh93616_thvy', + [-2145648939] = 'po1_sh1_cablemesh93617_thvy', + [1631543348] = 'po1_sh1_cablemesh94042_thvy', + [-1325859523] = 'po1_sh1_cablemesh94043_thvy', + [1203680880] = 'po1_sh1_cablemesh94044_thvy', + [-318755264] = 'po1_sh1_cablemesh94045_thvy', + [-554791307] = 'po1_sh1_cablemesh94046_thvy', + [-38984706] = 'po1_sh1_cablemesh94047_thvy', + [-1256772166] = 'po1_sh1_cablemesh94048_thvy', + [328703459] = 'po1_sh1_cablemesh94049_thvy', + [1229759026] = 'po1_sh1_cablemesh94050_thvy', + [1680916584] = 'po1_sh1_cablemesh94051_thvy', + [-268379608] = 'po1_sh1_cablemesh94052_thvy', + [-907121250] = 'po1_sh1_cablemesh94053_thvy', + [-1061785066] = 'po1_sh1_cablemesh94054_thvy', + [-146338329] = 'po1_sh1_cablemesh94055_thvy', + [316954512] = 'po1_sh1_cablemesh94056_thvy', + [-72209233] = 'po1_sh1_cablemesh94057_thvy', + [2043608357] = 'po1_sh1_cablemesh94058_thvy', + [1577368522] = 'po1_sh1_cablemesh94059_thvy', + [-683630197] = 'po1_sh1_cablemesh94060_thvy', + [-1248510969] = 'po1_sh1_cablemesh94061_thvy', + [-10865491] = 'po1_sh1_cablemesh94062_thvy', + [-902136477] = 'po1_sh1_cablemesh94063_thvy', + [-1275103973] = 'po1_sh1_cablemesh94064_thvy', + [-1543444401] = 'po1_sh1_cablemesh94065_thvy', + [709327744] = 'po1_sh1_cablemesh94066_thvy', + [1506204649] = 'po1_sh1_cablemesh94067_thvy', + [1954394458] = 'po1_sh1_cablemesh94068_thvy', + [257364230] = 'po1_sh1_cablemesh94069_thvy', + [53032664] = 'po1_sh1_crane_dec00', + [-251833918] = 'po1_sh1_crane00', + [-1924055100] = 'po1_sh1_cranewire1', + [-845692848] = 'po1_sh1_cranewire2', + [1254229492] = 'po1_sh1_drips', + [-1837704821] = 'po1_sh1_fire_overlay', + [861993529] = 'po1_sh1_gg_fizz1', + [96804610] = 'po1_sh1_gg_fizz2', + [1182965884] = 'po1_sh1_gg_fizz3', + [412206235] = 'po1_sh1_gg_fizz4', + [1027509748] = 'po1_sh1_gg_fizz6', + [828208578] = 'po1_sh1_gg_fizz7', + [-4812171] = 'po1_sh1_gg_fizz8', + [-96174935] = 'po1_sh1_gg_lad1', + [-402008012] = 'po1_sh1_gg_lad2', + [-221352519] = 'po1_sh1_gg_lad3', + [-487338492] = 'po1_sh1_gg_lad4', + [-1663551752] = 'po1_sh1_gg_netting', + [-1337057720] = 'po1_sh1_gg_netting2', + [1456640986] = 'po1_sh1_gg003', + [2142004621] = 'po1_sh1_gg004', + [1897220191] = 'po1_sh1_gg005', + [-1918271089] = 'po1_sh1_gg006', + [-2693656] = 'po1_sh1_gg007', + [-930351277] = 'po1_sh1_gg008', + [-1176053239] = 'po1_sh1_gg009', + [1941399646] = 'po1_sh1_gg1', + [746910308] = 'po1_sh1_hangrope5', + [-1702528301] = 'po1_sh1_hull_debris002', + [1032304185] = 'po1_sh1_lod_01b', + [269019608] = 'po1_sh1_numbers', + [-1269106316] = 'po1_sh1_pipe003', + [2137657235] = 'po1_sh1_pipe004', + [-470542093] = 'po1_sh1_pipe1', + [-2121480745] = 'po1_sh1_pipe2_lod', + [-776604553] = 'po1_sh1_pipe2', + [-137510746] = 'po1_sh1_pipe3', + [-150290656] = 'po1_sh1_pipe4', + [465275021] = 'po1_sh1_pipe5', + [175597049] = 'po1_sh1_pipe6', + [1395619700] = 'po1_sh1_pipe7', + [770714870] = 'po1_sh1_pipe8', + [-1653295277] = 'po1_sh1_port_xr_door00', + [-15369581] = 'po1_sh1_port_xr_door01', + [-371437535] = 'po1_sh1_port_xr_door02', + [-1556593958] = 'po1_sh1_port_xr_door03', + [-832005830] = 'po1_sh1_port_xr_door04', + [419212901] = 'po1_sh1_port_xr_door05', + [48857663] = 'po1_sh1_port_xr_door06', + [-63048472] = 'po1_sh1_port_xr_door07', + [-411841708] = 'po1_sh1_port_xr_door08', + [1238732822] = 'po1_sh1_port_xr_door09', + [-318351467] = 'po1_sh1_port_xr_door10', + [-774790868] = 'po1_sh1_port_xr_door11', + [-930378080] = 'po1_sh1_port_xr_door12', + [497072333] = 'po1_sh1_port_xr_door13', + [862053455] = 'po1_sh1_port_xr_door14', + [-1993647489] = 'po1_sh1_props_combo_slod', + [-1842428275] = 'po1_sh1_props_combo01_slod', + [1720302083] = 'po1_sh1_props_lod', + [-1082140071] = 'po1_sh1_props10_lod', + [-368807232] = 'po1_sh1_props10b_lod', + [536195830] = 'po1_sh1_props11_lod', + [-1266142119] = 'po1_sh1_props12_lod', + [953732150] = 'po1_sh1_props2_lod', + [-1366109013] = 'po1_sh1_props4_lod', + [1180333701] = 'po1_sh1_props5_lod', + [-576313983] = 'po1_sh1_props6_lod', + [1202330715] = 'po1_sh1_props7_lod', + [445945453] = 'po1_sh1_props8_lod', + [-1555331043] = 'po1_sh1_props9_lod', + [-1703523201] = 'po1_sh1_rf_door004', + [397323665] = 'po1_sh1_rf_prop23', + [-376779463] = 'po1_sh1_rope004', + [-1711100374] = 'po1_sh1_rope005', + [1422926786] = 'po1_sh1_rope006', + [1183156013] = 'po1_sh1_rope007', + [-1057620980] = 'po1_sh1_rope009', + [2001436006] = 'po1_sh1_rustedge', + [-94741319] = 'po1_sh1_ship_sunk_det00', + [-1637361686] = 'po1_sh1_ship_sunk_int01', + [-929469528] = 'po1_sh1_shipa_006', + [2087747926] = 'po1_sh1_shipa_05', + [-644403589] = 'po1_sh1_shipa_05a', + [-942372106] = 'po1_sh1_shipa_05b', + [850682036] = 'po1_sh1_shipa_05c', + [1877234107] = 'po1_sh1_shipa_09_rope1_det', + [-119662110] = 'po1_sh1_shipa_09_rope1', + [1406001375] = 'po1_sh1_shipa_09_rope2_det', + [1090660957] = 'po1_sh1_shipa_09_rope2', + [1073907835] = 'po1_sh1_shipa_09', + [-450984745] = 'po1_sh1_shipa_cabin_ov', + [1232442706] = 'po1_sh1_shipa_cabin', + [940111680] = 'po1_sh1_shipa_cabin001', + [-1221521939] = 'po1_sh1_shipa_decals', + [-1968632191] = 'po1_sh1_shipa_decals2', + [-769072662] = 'po1_sh1_shipa_detail', + [1381926518] = 'po1_sh1_shipa_detail001', + [1792440137] = 'po1_sh1_shipa_hull', + [-726921261] = 'po1_sh1_shipa_hull001', + [565440205] = 'po1_sh1_shipa_ladder_p1', + [-335379605] = 'po1_sh1_shipa_ladder_p2', + [-369181351] = 'po1_sh1_shipa_ladder002', + [-925203762] = 'po1_sh1_shipa_ladder002b', + [506809511] = 'po1_sh1_shipa_lifeboats', + [924001114] = 'po1_sh1_shipa_lifeboats001', + [-1664318454] = 'po1_sh1_shipa_lifeboats2', + [1211853693] = 'po1_sh1_shipa_railings_3', + [317784297] = 'po1_sh1_shipa_railings_4', + [-914952718] = 'po1_sh1_shipa_railings_6', + [-1892484757] = 'po1_sh1_shipa_railings_7', + [-438846243] = 'po1_sh1_shipa_railings_p01', + [-406077243] = 'po1_sh1_shipa_railings_p02', + [-96115272] = 'po1_sh1_shipa_railings_p03', + [208701966] = 'po1_sh1_shipa_railings_p04', + [515059347] = 'po1_sh1_shipa_railings_p05', + [1092973431] = 'po1_sh1_shipa_railings_p06', + [1398872050] = 'po1_sh1_shipa_railings_p07', + [1639363741] = 'po1_sh1_shipa_railings_p08', + [1944901897] = 'po1_sh1_shipa_railings_p09', + [1582664252] = 'po1_sh1_shipa_railings_p1', + [-689891012] = 'po1_sh1_shipa_railings_p10', + [-1580126431] = 'po1_sh1_shipa_railings_p11', + [-358235963] = 'po1_sh1_shipa_railings_p12', + [-1794312278] = 'po1_sh1_shipa_railings_p2', + [-2118495995] = 'po1_sh1_shipa_railings_p3', + [-1200177535] = 'po1_sh1_shipa_railings_p4', + [-910213443] = 'po1_sh1_shipa_railings001', + [-2117551994] = 'po1_sh1_shipa_stairs', + [1601214123] = 'po1_sh1_shipa_stairs002', + [-853020136] = 'po1_sh1_shipa_stairs003', + [-2080022572] = 'po1_sh1_shipa_stairs004', + [-38102941] = 'po1_sh1_shipcrates1', + [1957081450] = 'po1_sh1_shipcrates2_d', + [789871382] = 'po1_sh1_shipcrates2', + [360464429] = 'po1_sh1_shipcrates2b_d', + [-1948354067] = 'po1_sh1_shipcrates2b', + [938468680] = 'po1_sh1_shipcrates3_d', + [-631320148] = 'po1_sh1_shipcrates3', + [-1233711778] = 'po1_sh1_shipcrates3b_d', + [301861762] = 'po1_sh1_shipcrates3b', + [1213197611] = 'po1_sh1_shipcrates4_d', + [193836041] = 'po1_sh1_shipcrates4', + [-361195211] = 'po1_sh1_shipcrates4b_d', + [481894928] = 'po1_sh1_shipcrates4b', + [-35405218] = 'po1_sh1_shipcrates5_d', + [496162831] = 'po1_sh1_shipcrates5', + [-624607375] = 'po1_sh1_shipcrates5b_d', + [-1348449008] = 'po1_sh1_shipcrates5b', + [616271603] = 'po1_sh1_slod002', + [-1291964770] = 'po1_sh1_stairs_004', + [490386153] = 'po1_sh1_stairs_03', + [-617580230] = 'po1_sh1_stairs_032', + [-1995114922] = 'po1_sh1_sunk_slod', + [-14043999] = 'po1_sh1_sunklad1', + [175426359] = 'po1_sh1_sunklad2', + [1689190314] = 'po1_sh1_sunklad3', + [-297790770] = 'po1_sh1_sunklad4', + [-1714267800] = 'po1_sh1_window_overlay', + [1522069532] = 'po1_sh2_crane_cables_01', + [830447018] = 'po1_sh2_crane_cables_02', + [-1193741830] = 'po1_sh2_decalsgg_01', + [-837084034] = 'po1_sh2_decalsgg_02', + [-486848962] = 'po1_sh2_decalsgg_03', + [884131854] = 'po1_sh2_drips', + [-768896172] = 'po1_sh2_gavfix_fiz1_lod', + [782411229] = 'po1_sh2_gavfix_fiz2_lod', + [740851122] = 'po1_sh2_gg_lad2', + [-1551225730] = 'po1_sh2_gg003', + [145880780] = 'po1_sh2_gg004', + [-694480225] = 'po1_sh2_gg005', + [841627149] = 'po1_sh2_gg1', + [-2091444081] = 'po1_sh2_laddertest1', + [-1799373984] = 'po1_sh2_laddertest2', + [1501447398] = 'po1_sh2_laddertest3', + [191564381] = 'po1_sh2_lod_04b', + [-1483220376] = 'po1_sh2_numbers', + [-1940821995] = 'po1_sh2_pipe1', + [-1625813594] = 'po1_sh2_pipe2', + [979726030] = 'po1_sh2_po1_sh1_anchors', + [-810687974] = 'po1_sh2_po1_sh1_antenna1', + [236911090] = 'po1_sh2_po1_sh1_decals_02', + [-540009131] = 'po1_sh2_po1_sh1_decals_03', + [315196223] = 'po1_sh2_po1_sh1_decals_04', + [619718540] = 'po1_sh2_po1_sh1_decals_05', + [-881003345] = 'po1_sh2_po1_sh1_decals_06', + [-1731031205] = 'po1_sh2_po1_sh1_decals_07', + [-270025340] = 'po1_sh2_po1_sh1_decals_08', + [-1186443194] = 'po1_sh2_po1_sh1_decals_09', + [1899250551] = 'po1_sh2_po1_sh1_decals_11', + [-606791497] = 'po1_sh2_po1_sh1_decals_12', + [816070070] = 'po1_sh2_po1_sh1_decalwires_03', + [-1276838965] = 'po1_sh2_po1_sh1_details_02', + [-430743385] = 'po1_sh2_po1_sh1_details_03', + [1633340585] = 'po1_sh2_po1_sh1_hull001', + [1561725554] = 'po1_sh2_po1_sh1_hullrudder', + [329685343] = 'po1_sh2_po1_sh1_pipes', + [-974020524] = 'po1_sh2_po1_sh1_ropes01', + [-1909235556] = 'po1_sh2_po1_sh1_ropesf', + [451017103] = 'po1_sh2_po1_sh1_ropesr', + [-2016344491] = 'po1_sh2_po1_sh1_stps_det', + [1267804496] = 'po1_sh2_po1_sh1_stps', + [608609330] = 'po1_sh2_po1_sh1_tower002', + [102336357] = 'po1_sh2_railings_01', + [315891930] = 'po1_sh2_railings_02', + [937290477] = 'po1_sh2_railings_04', + [705777488] = 'po1_sh2_railings_05', + [-22873996] = 'po1_sh2_railings_07', + [-1391585082] = 'po1_sh2_railings_100', + [1289214023] = 'po1_sh2_railings_101', + [1418848187] = 'po1_sh2_railings_102', + [1633386830] = 'po1_sh2_railings_103', + [2024976380] = 'po1_sh2_railings_104', + [-175232571] = 'po1_sh2_railings_105', + [458126661] = 'po1_sh2_railings_106', + [724833536] = 'po1_sh2_railings_107', + [966373835] = 'po1_sh2_railings_108', + [369519273] = 'po1_sh2_railings_109', + [2143865516] = 'po1_sh2_railings_110', + [-540341581] = 'po1_sh2_railings_111', + [-181010663] = 'po1_sh2_railings2_01', + [-833360488] = 'po1_sh2_rope02', + [-1332956662] = 'po1_sh2_rope03', + [-1562765659] = 'po1_sh2_rope04', + [-33436441] = 'po1_sh2_rope05', + [198469772] = 'po1_sh2_rope06', + [-752683226] = 'po1_sh2_rope07', + [-523857295] = 'po1_sh2_rope08', + [440266385] = 'po1_sh2_rope1_2', + [-1636567301] = 'po1_sh2_rope1_3', + [-1887905531] = 'po1_sh2_rope1_4', + [-1932569282] = 'po1_sh2_rope3_2', + [-125487144] = 'po1_sh2_rustedge', + [-2070698107] = 'po1_sh2_s_001', + [-474210339] = 'po1_sh2_sh1_details_01_hd', + [-991994332] = 'po1_sh2_sh1_details_02_hd', + [1099359019] = 'po1_sh2_sh1_details_69', + [1096963266] = 'po1_sh2_ship2_fizz1', + [1328607327] = 'po1_sh2_ship2_fizz2', + [139190922] = 'po1_sh2_ship2_fizz3', + [872233464] = 'po1_sh2_ship2_fizz4', + [-320521672] = 'po1_sh2_shipa_05', + [-1663070894] = 'po1_sh2_shipa_05b_det', + [-416818391] = 'po1_sh2_shipa_05b', + [44393912] = 'po1_sh2_shipa_06', + [376474241] = 'po1_sh2_shipa_bollards1', + [-1293761693] = 'po1_sh2_shipa_bollards2', + [-2122594469] = 'po1_sh2_shipa_cabin_ov2', + [1216271714] = 'po1_sh2_shipa_cabin_ov3', + [1455256031] = 'po1_sh2_shipa_cabin_ov4', + [-423359804] = 'po1_sh2_shipa_cabin', + [-1273158462] = 'po1_sh2_shipa_dec_1', + [-949990584] = 'po1_sh2_shipa_dec_2', + [190784200] = 'po1_sh2_shipa_dec', + [-1627181951] = 'po1_sh2_shipa_decals', + [1115677385] = 'po1_sh2_shipa_decals2', + [-979889780] = 'po1_sh2_shipa_detail', + [420187091] = 'po1_sh2_shipa_hull', + [-478050236] = 'po1_sh2_shipa_ladder002', + [-179033111] = 'po1_sh2_shipa_ladder003', + [-486983846] = 'po1_sh2_shipa_ladder01', + [-248785985] = 'po1_sh2_shipa_ladder02', + [271734987] = 'po1_sh2_shipa_lifeboats1', + [562559862] = 'po1_sh2_shipa_lifeboats2', + [-1463346467] = 'po1_sh2_shipa_railings', + [-1334616724] = 'po1_sh2_shipa_stairs', + [229387087] = 'po1_sh2_shipa_stairs002', + [2120934406] = 'po1_sh2_shipa_windows', + [-855924320] = 'po1_sh2_stairs_01', + [-1652669790] = 'po1_sh2_stairs_07', + [743767427] = 'po1_sh2_wire', + [2046537925] = 'police', + [-1627000575] = 'police2', + [1912215274] = 'police3', + [-1973172295] = 'police4', + [-34623805] = 'policeb', + [-1536924937] = 'policeold1', + [-1779120616] = 'policeold2', + [456714581] = 'policet', + [353883353] = 'polmav', + [-119658072] = 'pony', + [943752001] = 'pony2', + [-1290268385] = 'pop_v_bank_door_l', + [-498077814] = 'pop_v_bank_door_r', + [-1977698976] = 'poro_06_sig1_c_source', + [-1976806603] = 'port_xr_bins', + [-1221701255] = 'port_xr_cont_01', + [-1803023315] = 'port_xr_cont_02', + [-1171564689] = 'port_xr_cont_03', + [-935595120] = 'port_xr_cont_04', + [710539794] = 'port_xr_cont_sm', + [575329936] = 'port_xr_contpod_01', + [806973997] = 'port_xr_contpod_02', + [1917744790] = 'port_xr_contpod_03', + [-401460437] = 'port_xr_cranelg', + [1369145036] = 'port_xr_door_01', + [-2085166334] = 'port_xr_door_04', + [1450215542] = 'port_xr_door_05', + [2123151705] = 'port_xr_elecbox_1', + [-2007544594] = 'port_xr_elecbox_2', + [-1683917950] = 'port_xr_elecbox_3', + [2133090796] = 'port_xr_fire', + [1034340814] = 'port_xr_firehose', + [-1340510246] = 'port_xr_lifeboat', + [-1727003037] = 'port_xr_lifep', + [456885502] = 'port_xr_lightdoor', + [1809625346] = 'port_xr_lighthal', + [-390630130] = 'port_xr_lightspot', + [1013710720] = 'port_xr_railbal', + [-626023976] = 'port_xr_railside', + [1857662402] = 'port_xr_railst', + [-734430729] = 'port_xr_spoolsm', + [-520750160] = 'port_xr_stairs_01', + [-833990705] = 'port_xr_tiedown', + [2112052861] = 'pounder', + [-1450650718] = 'prairie', + [741586030] = 'pranger', + [-488123221] = 'predator', + [-1883869285] = 'premier', + [-1150599089] = 'primo', + [-2040426790] = 'primo2', + [-1100075058] = 'proair_hoc_puck', + [29828513] = 'proc_brittlebush_01', + [-1280423821] = 'proc_coral_01', + [-2114240528] = 'proc_desert_sage_01', + [1870499111] = 'proc_drkyel001', + [2041844081] = 'proc_dry_plants_01', + [2015249693] = 'proc_drygrasses01', + [-1511795599] = 'proc_drygrasses01b', + [1781006001] = 'proc_drygrassfronds01', + [-2044882611] = 'proc_dryplantsgrass_01', + [-1945854697] = 'proc_dryplantsgrass_02', + [-2131000111] = 'proc_fern_02', + [-203856859] = 'proc_flower_wild_04', + [-287168502] = 'proc_flower1', + [-67644897] = 'proc_forest_grass01', + [-429997852] = 'proc_forest_ivy_01', + [-1010825119] = 'proc_grassdandelion01', + [1599985244] = 'proc_grasses01', + [-1065905452] = 'proc_grasses01b', + [1406134282] = 'proc_grassfronds01', + [-638302388] = 'proc_grassplantmix_01', + [213036232] = 'proc_grassplantmix_02', + [-964059938] = 'proc_indian_pbrush_01', + [-783590493] = 'proc_leafybush_01', + [849975660] = 'proc_leafyplant_01', + [775482218] = 'proc_litter_01', + [479086613] = 'proc_litter_02', + [1775565172] = 'proc_lizardtail_01', + [-1025025503] = 'proc_lupins_01', + [17258065] = 'proc_meadowmix_01', + [-508643576] = 'proc_meadowpoppy_01', + [580043721] = 'proc_mntn_stone01', + [334177914] = 'proc_mntn_stone02', + [237509364] = 'proc_mntn_stone03', + [-876909511] = 'proc_sage_01', + [1872771678] = 'proc_scrub_bush01', + [2064959419] = 'proc_searock_01', + [1758339886] = 'proc_searock_02', + [1589448460] = 'proc_searock_03', + [-814048611] = 'proc_sml_reeds_01', + [875648136] = 'proc_sml_reeds_01b', + [1173321732] = 'proc_sml_reeds_01c', + [-503723136] = 'proc_sml_stones01', + [-741527769] = 'proc_sml_stones02', + [-1015640454] = 'proc_sml_stones03', + [-1405230777] = 'proc_stones_01', + [-889446717] = 'proc_stones_02', + [-646857810] = 'proc_stones_03', + [-412821612] = 'proc_stones_04', + [-182488311] = 'proc_stones_05', + [31952029] = 'proc_stones_06', + [950980702] = 'proc_trolley_lakebed', + [-1406314798] = 'proc_weeds01a', + [-1272191277] = 'proc_weeds01b', + [-1578024354] = 'proc_weeds01c', + [-1533650692] = 'proc_wildquinine', + [-1344020018] = 'prop_06_sig1_a', + [2041509221] = 'prop_06_sig1_b', + [1982492248] = 'prop_06_sig1_d', + [1760580580] = 'prop_06_sig1_e', + [1384097539] = 'prop_06_sig1_f', + [1162513561] = 'prop_06_sig1_g', + [790913101] = 'prop_06_sig1_h', + [563529010] = 'prop_06_sig1_i', + [-331261304] = 'prop_06_sig1_j', + [368618998] = 'prop_06_sig1_k', + [-1619803918] = 'prop_06_sig1_l', + [-785013643] = 'prop_06_sig1_m', + [-1701726418] = 'prop_06_sig1_n', + [-1940612428] = 'prop_06_sig1_o', + [1875279045] = 'prop_1st_hostage_scene', + [1280887308] = 'prop_1st_prologue_scene', + [-742199344] = 'prop_2nd_hostage_scene', + [-1331536247] = 'prop_50s_jukebox', + [1611303890] = 'prop_a_base_bars_01', + [1293907652] = 'prop_a_trailer_door_01', + [478908889] = 'prop_a4_pile_01', + [-1378325165] = 'prop_a4_sheet_01', + [-1220181943] = 'prop_a4_sheet_02', + [-1831225514] = 'prop_a4_sheet_03', + [-1684027166] = 'prop_a4_sheet_04', + [17929184] = 'prop_a4_sheet_05', + [1373227456] = 'prop_abat_roller_static', + [-1468417022] = 'prop_abat_slide', + [-121802573] = 'prop_acc_guitar_01_d1', + [-708789241] = 'prop_acc_guitar_01', + [-1602845292] = 'prop_aerial_01a', + [363720705] = 'prop_aerial_01b', + [201055389] = 'prop_aerial_01c', + [1161678624] = 'prop_aerial_01d', + [924808509] = 'prop_afsign_amun', + [718227482] = 'prop_afsign_vbike', + [-1056637498] = 'prop_agave_01', + [-1437872044] = 'prop_agave_02', + [-1716731852] = 'prop_aiprort_sign_01', + [-1187578040] = 'prop_aiprort_sign_02', + [167557869] = 'prop_air_bagloader', + [1683244033] = 'prop_air_bagloader2_cr', + [-1287677794] = 'prop_air_bagloader2', + [1175931267] = 'prop_air_barrier', + [-76230599] = 'prop_air_bench_01', + [307625467] = 'prop_air_bench_02', + [-1550393228] = 'prop_air_bigradar_l1', + [-1773582887] = 'prop_air_bigradar_l2', + [-1062232474] = 'prop_air_bigradar_slod', + [-1988908952] = 'prop_air_bigradar', + [-1265137328] = 'prop_air_blastfence_01', + [-1562286620] = 'prop_air_blastfence_02', + [131289656] = 'prop_air_bridge01', + [497122772] = 'prop_air_bridge02', + [1610144111] = 'prop_air_cargo_01a', + [1891269362] = 'prop_air_cargo_01b', + [1046025776] = 'prop_air_cargo_01c', + [-274013936] = 'prop_air_cargo_02a', + [542982772] = 'prop_air_cargo_02b', + [-1986685425] = 'prop_air_cargo_03a', + [628478833] = 'prop_air_cargo_04a', + [-500478759] = 'prop_air_cargo_04b', + [-806573988] = 'prop_air_cargo_04c', + [1757803317] = 'prop_air_cargoloader_01', + [1514102675] = 'prop_air_chock_01', + [-452397756] = 'prop_air_chock_03', + [1800372691] = 'prop_air_chock_04', + [-1587301201] = 'prop_air_conelight', + [-1779825653] = 'prop_air_fireexting', + [-770054074] = 'prop_air_fueltrail1', + [-1075526692] = 'prop_air_fueltrail2', + [-925511118] = 'prop_air_gasbogey_01', + [-1564544556] = 'prop_air_generator_01', + [-1474397017] = 'prop_air_generator_03', + [78540130] = 'prop_air_hoc_paddle_01', + [-218084858] = 'prop_air_hoc_paddle_02', + [1784537360] = 'prop_air_lights_01a', + [1095208676] = 'prop_air_lights_01b', + [-1035660791] = 'prop_air_lights_02a', + [-772034186] = 'prop_air_lights_02b', + [1998517203] = 'prop_air_lights_03a', + [-887448895] = 'prop_air_lights_04a', + [-173347079] = 'prop_air_lights_05a', + [-1914374242] = 'prop_air_luggtrolley', + [-1824199444] = 'prop_air_mast_01', + [1524825141] = 'prop_air_mast_02', + [1849402306] = 'prop_air_monhut_01', + [1670942332] = 'prop_air_monhut_02', + [169792355] = 'prop_air_monhut_03_cr', + [-961391442] = 'prop_air_monhut_03', + [1562403901] = 'prop_air_propeller01', + [-1867237480] = 'prop_air_radar_01', + [-105439435] = 'prop_air_sechut_01', + [1363465830] = 'prop_air_stair_01', + [123191949] = 'prop_air_stair_02', + [900603705] = 'prop_air_stair_03', + [-2103481739] = 'prop_air_stair_04a_cr', + [1412727143] = 'prop_air_stair_04a', + [-68540493] = 'prop_air_stair_04b_cr', + [-1444467509] = 'prop_air_stair_04b', + [2129093333] = 'prop_air_taxisign_01a', + [1896958025] = 'prop_air_taxisign_02a', + [-159713206] = 'prop_air_taxisign_03a', + [-994110897] = 'prop_air_terlight_01a', + [-479309907] = 'prop_air_terlight_01b', + [714071539] = 'prop_air_terlight_01c', + [-806121615] = 'prop_air_towbar_01', + [-576443694] = 'prop_air_towbar_02', + [1555409147] = 'prop_air_towbar_03', + [-397607777] = 'prop_air_trailer_1a', + [-1161911933] = 'prop_air_trailer_1b', + [-1957313850] = 'prop_air_trailer_1c', + [401136338] = 'prop_air_trailer_2a', + [623310158] = 'prop_air_trailer_2b', + [-399903427] = 'prop_air_trailer_3a', + [-1236266614] = 'prop_air_trailer_3b', + [-64349163] = 'prop_air_trailer_4a', + [712505520] = 'prop_air_trailer_4b', + [425776770] = 'prop_air_trailer_4c', + [638798121] = 'prop_air_watertank1', + [1422763677] = 'prop_air_watertank2', + [447918696] = 'prop_air_watertank3', + [61509710] = 'prop_air_windsock_base', + [-310772260] = 'prop_air_windsock', + [886547537] = 'prop_air_woodsteps', + [827943275] = 'prop_aircon_l_01', + [605277920] = 'prop_aircon_l_02', + [1413477803] = 'prop_aircon_l_03_dam', + [1426534598] = 'prop_aircon_l_03', + [1195939145] = 'prop_aircon_l_04', + [1369811908] = 'prop_aircon_m_01', + [1131941737] = 'prop_aircon_m_02', + [1948414141] = 'prop_aircon_m_03', + [1709954128] = 'prop_aircon_m_04', + [-1393761711] = 'prop_aircon_m_05', + [-1625667924] = 'prop_aircon_m_06', + [1366469466] = 'prop_aircon_m_07', + [1135153095] = 'prop_aircon_m_08', + [-432646941] = 'prop_aircon_m_09', + [726292818] = 'prop_aircon_m_10', + [-223157118] = 'prop_aircon_s_01a', + [317638569] = 'prop_aircon_s_02a', + [532504902] = 'prop_aircon_s_02b', + [1767043400] = 'prop_aircon_s_03a', + [1552504757] = 'prop_aircon_s_03b', + [217291359] = 'prop_aircon_s_04a', + [-759879321] = 'prop_aircon_s_05a', + [-867494225] = 'prop_aircon_s_06a', + [1928095639] = 'prop_aircon_s_07a', + [-1177062036] = 'prop_aircon_s_07b', + [-1545030330] = 'prop_aircon_t_03', + [-793463384] = 'prop_aircon_tna_02', + [-775805135] = 'prop_airdancer_2_cloth', + [1480247349] = 'prop_airdancer_base', + [-1679199186] = 'prop_airhockey_01', + [160628940] = 'prop_airport_sale_sign', + [-1758446314] = 'prop_alarm_01', + [-2112285976] = 'prop_alarm_02', + [1803116220] = 'prop_alien_egg_01', + [-73263722] = 'prop_aloevera_01', + [-1536173086] = 'prop_am_box_wood_01', + [-1139842859] = 'prop_amanda_note_01', + [503635721] = 'prop_amanda_note_01b', + [-440787091] = 'prop_amb_40oz_02', + [-1217150239] = 'prop_amb_40oz_03', + [683570518] = 'prop_amb_beer_bottle', + [2017086435] = 'prop_amb_ciggy_01', + [1847598393] = 'prop_amb_donut', + [1197080420] = 'prop_amb_handbag_01', + [974883178] = 'prop_amb_phone', + [-547813259] = 'prop_ammunation_sign_01', + [1011250084] = 'prop_amp_01', + [1814532926] = 'prop_anim_cash_note_b', + [1597489407] = 'prop_anim_cash_note', + [-1170050911] = 'prop_anim_cash_pile_01', + [-1448063107] = 'prop_anim_cash_pile_02', + [1405043423] = 'prop_apple_box_01', + [-585968300] = 'prop_apple_box_02', + [1011158577] = 'prop_ar_arrow_1', + [1811869092] = 'prop_ar_arrow_2', + [958367714] = 'prop_ar_arrow_3', + [977639986] = 'prop_ar_ring_01', + [-1995840812] = 'prop_arc_blueprints_01', + [-1991361770] = 'prop_arcade_01', + [952375787] = 'prop_arcade_02', + [-2029892494] = 'prop_arm_gate_l', + [-861197080] = 'prop_arm_wrestle_01', + [719404538] = 'prop_armchair_01', + [1534513698] = 'prop_armenian_gate', + [701173564] = 'prop_armour_pickup', + [-267139712] = 'prop_artgallery_02_dl', + [650392296] = 'prop_artgallery_02_dr', + [-751501685] = 'prop_artgallery_dl', + [-1382730932] = 'prop_artgallery_dr', + [-956377380] = 'prop_artifact_01', + [996113921] = 'prop_ashtray_01', + [-543669801] = 'prop_asteroid_01', + [1685515260] = 'prop_astro_table_01', + [832407114] = 'prop_astro_table_02', + [-870868698] = 'prop_atm_01', + [-1126237515] = 'prop_atm_02', + [-1364697528] = 'prop_atm_03', + [-1600440298] = 'prop_attache_case_01', + [2047842025] = 'prop_aviators_01', + [1335593994] = 'prop_b_board_blank', + [-1212160278] = 'prop_bahammenu', + [-465397894] = 'prop_balcony_glass_01', + [-156648376] = 'prop_balcony_glass_02', + [128212541] = 'prop_balcony_glass_03', + [170812241] = 'prop_balcony_glass_04', + [-206337278] = 'prop_ball_box', + [812526004] = 'prop_ballistic_shield_lod1', + [1141389967] = 'prop_ballistic_shield', + [-1743279446] = 'prop_bandsaw_01', + [-554465314] = 'prop_bank_shutter', + [-134415992] = 'prop_bank_vaultdoor', + [-1766751344] = 'prop_bar_beans', + [-1102277088] = 'prop_bar_beerfridge_01', + [-1711526423] = 'prop_bar_caddy', + [-16236139] = 'prop_bar_coastbarr', + [-2132107072] = 'prop_bar_coastchamp', + [1260570993] = 'prop_bar_coastdusc', + [1793667637] = 'prop_bar_coasterdisp', + [1374371923] = 'prop_bar_coastmount', + [-420103132] = 'prop_bar_cockshaker', + [-1525506599] = 'prop_bar_cockshakropn', + [2072037848] = 'prop_bar_cooler_01', + [1913075429] = 'prop_bar_cooler_03', + [-1660391290] = 'prop_bar_drinkstraws', + [-458183035] = 'prop_bar_fridge_01', + [-304627501] = 'prop_bar_fridge_02', + [18704222] = 'prop_bar_fridge_03', + [-1720674274] = 'prop_bar_fridge_04', + [1753238891] = 'prop_bar_fruit', + [-1696280277] = 'prop_bar_ice_01', + [993353915] = 'prop_bar_lemons', + [2010966735] = 'prop_bar_limes', + [67883626] = 'prop_bar_measrjug', + [-521301105] = 'prop_bar_napkindisp', + [-1838355393] = 'prop_bar_nuts', + [-1281229898] = 'prop_bar_pump_01', + [-766101190] = 'prop_bar_pump_04', + [-1188362524] = 'prop_bar_pump_05', + [-420814237] = 'prop_bar_pump_06', + [-1339984727] = 'prop_bar_pump_07', + [2143392746] = 'prop_bar_pump_08', + [1285434788] = 'prop_bar_pump_09', + [1090360663] = 'prop_bar_pump_10', + [-754287693] = 'prop_bar_shots', + [-1619027728] = 'prop_bar_sink_01', + [846652480] = 'prop_bar_stirrers', + [-1829764702] = 'prop_bar_stool_01', + [2139379968] = 'prop_barbell_01', + [-1711403533] = 'prop_barbell_02', + [-486823720] = 'prop_barbell_100kg', + [-1902111326] = 'prop_barbell_10kg', + [371177307] = 'prop_barbell_20kg', + [927793327] = 'prop_barbell_30kg', + [-1314904318] = 'prop_barbell_40kg', + [1897403261] = 'prop_barbell_50kg', + [-43213041] = 'prop_barbell_60kg', + [-164226377] = 'prop_barbell_80kg', + [-1882134861] = 'prop_barebulb_01', + [-1228223417] = 'prop_barier_conc_01a', + [-978556406] = 'prop_barier_conc_01b', + [-347163314] = 'prop_barier_conc_01c', + [-1286880215] = 'prop_barier_conc_02a', + [-514023350] = 'prop_barier_conc_02b', + [-674591450] = 'prop_barier_conc_02c', + [432739598] = 'prop_barier_conc_03a', + [-1810823144] = 'prop_barier_conc_04a', + [693843550] = 'prop_barier_conc_05a', + [415536433] = 'prop_barier_conc_05b', + [1172303719] = 'prop_barier_conc_05c', + [-165117488] = 'prop_barn_door_l', + [-459350339] = 'prop_barn_door_r', + [18445149] = 'prop_barrachneon', + [-1738103333] = 'prop_barrel_01a', + [1298403575] = 'prop_barrel_02a', + [-1069975900] = 'prop_barrel_02b', + [89948745] = 'prop_barrel_03a', + [344662182] = 'prop_barrel_03d', + [-1344435013] = 'prop_barrel_exp_01a', + [-1088738506] = 'prop_barrel_exp_01b', + [-1935686084] = 'prop_barrel_exp_01c', + [-1269401419] = 'prop_barrel_float_1', + [-840225818] = 'prop_barrel_float_2', + [1652026494] = 'prop_barrel_pile_01', + [-260208501] = 'prop_barrel_pile_02', + [-921781850] = 'prop_barrel_pile_03', + [-566369276] = 'prop_barrel_pile_04', + [631304913] = 'prop_barrel_pile_05', + [-841417216] = 'prop_barrier_wat_01a', + [2080595106] = 'prop_barrier_wat_03a', + [546252211] = 'prop_barrier_wat_03b', + [579512398] = 'prop_barrier_wat_04a', + [1198649884] = 'prop_barrier_wat_04b', + [968840887] = 'prop_barrier_wat_04c', + [1072616162] = 'prop_barrier_work01a', + [1329951119] = 'prop_barrier_work01b', + [1718951922] = 'prop_barrier_work01c', + [1946925855] = 'prop_barrier_work01d', + [-1984567405] = 'prop_barrier_work02a', + [-565797937] = 'prop_barrier_work04a', + [-143315610] = 'prop_barrier_work05', + [765541575] = 'prop_barrier_work06a', + [1048501890] = 'prop_barrier_work06b', + [742943823] = 'prop_barriercrash_01', + [1415068782] = 'prop_barriercrash_02', + [574380059] = 'prop_barriercrash_03', + [1871573721] = 'prop_barriercrash_04', + [118769507] = 'prop_barry_table_detail', + [510628364] = 'prop_basejump_target_01', + [659269893] = 'prop_basketball_net', + [-2088525666] = 'prop_bath_dirt_01', + [-1966747703] = 'prop_battery_01', + [-1726256012] = 'prop_battery_02', + [-1525817904] = 'prop_bball_arcade_01', + [1903501406] = 'prop_bbq_1', + [519797612] = 'prop_bbq_2', + [-476379988] = 'prop_bbq_3', + [-770250239] = 'prop_bbq_4_l1', + [977744387] = 'prop_bbq_4', + [286252949] = 'prop_bbq_5', + [-1363752925] = 'prop_beach_bag_01a', + [2094687343] = 'prop_beach_bag_01b', + [-845760792] = 'prop_beach_bag_02', + [1972733671] = 'prop_beach_bag_03', + [-489525601] = 'prop_beach_bars_01', + [1920863736] = 'prop_beach_bars_02', + [-1608693916] = 'prop_beach_bbq', + [1672330940] = 'prop_beach_dip_bars_01', + [-1531756342] = 'prop_beach_dip_bars_02', + [-1065766299] = 'prop_beach_fire', + [-1880772547] = 'prop_beach_lg_float', + [183900128] = 'prop_beach_lg_stretch', + [-418873017] = 'prop_beach_lg_surf', + [1715961520] = 'prop_beach_lilo_01', + [-1675793829] = 'prop_beach_lilo_02', + [-554270033] = 'prop_beach_lotion_01', + [238248232] = 'prop_beach_lotion_02', + [-1826591984] = 'prop_beach_lotion_03', + [1054627099] = 'prop_beach_parasol_01', + [756855196] = 'prop_beach_parasol_02', + [516887809] = 'prop_beach_parasol_03', + [-1929219726] = 'prop_beach_parasol_04', + [-2108662770] = 'prop_beach_parasol_05', + [1913502601] = 'prop_beach_parasol_06', + [1473546007] = 'prop_beach_parasol_07', + [-979901796] = 'prop_beach_parasol_08', + [-1151218128] = 'prop_beach_parasol_09', + [1483509531] = 'prop_beach_parasol_10', + [1867233273] = 'prop_beach_punchbag', + [1677315747] = 'prop_beach_ring_01', + [1772442022] = 'prop_beach_rings_01', + [336523661] = 'prop_beach_sandcas_01', + [339341791] = 'prop_beach_sandcas_03', + [1285350052] = 'prop_beach_sandcas_04', + [-488829146] = 'prop_beach_sandcas_05', + [1639776969] = 'prop_beach_sculp_01', + [1181350742] = 'prop_beach_towel_01', + [951345131] = 'prop_beach_towel_02', + [1604201946] = 'prop_beach_towel_03', + [1230242118] = 'prop_beach_towel_04', + [-946169730] = 'prop_beach_volball01', + [1017479830] = 'prop_beach_volball02', + [34136386] = 'prop_beachbag_01', + [-886312055] = 'prop_beachbag_02', + [-393990599] = 'prop_beachbag_03', + [-1414482797] = 'prop_beachbag_04', + [-1658644616] = 'prop_beachbag_05', + [-1571249689] = 'prop_beachbag_06', + [1407021173] = 'prop_beachbag_combo_01', + [-429845122] = 'prop_beachbag_combo_02', + [1574107526] = 'prop_beachball_01', + [136236575] = 'prop_beachball_02', + [1275920395] = 'prop_beachf_01_cr', + [-764254753] = 'prop_beachflag_01', + [1585741317] = 'prop_beachflag_02', + [803874239] = 'prop_beachflag_le', + [1350970027] = 'prop_beer_am', + [1174226320] = 'prop_beer_amopen', + [-527552795] = 'prop_beer_bar', + [-1403539035] = 'prop_beer_bison', + [-1555693050] = 'prop_beer_blr', + [1172836182] = 'prop_beer_bottle', + [2057005985] = 'prop_beer_box_01', + [-1145966996] = 'prop_beer_jakey', + [348272579] = 'prop_beer_logger', + [1146109585] = 'prop_beer_logopen', + [1433474877] = 'prop_beer_neon_01', + [1671082896] = 'prop_beer_neon_02', + [-487902677] = 'prop_beer_neon_03', + [-1178279969] = 'prop_beer_neon_04', + [-535527755] = 'prop_beer_patriot', + [1451528099] = 'prop_beer_pissh', + [1669623194] = 'prop_beer_pride', + [-1243177429] = 'prop_beer_stz', + [1940235411] = 'prop_beer_stzopen', + [-2060136857] = 'prop_beerdusche', + [88234209] = 'prop_beerneon', + [-245386275] = 'prop_beggers_sign_01', + [-533655168] = 'prop_beggers_sign_02', + [-1109340972] = 'prop_beggers_sign_03', + [-801803927] = 'prop_beggers_sign_04', + [1805980844] = 'prop_bench_01a', + [2037887057] = 'prop_bench_01b', + [-1215681419] = 'prop_bench_01c', + [-628719744] = 'prop_bench_02', + [-1062810675] = 'prop_bench_03', + [-763859088] = 'prop_bench_04', + [-1631057904] = 'prop_bench_05', + [-1317098115] = 'prop_bench_06', + [-71417349] = 'prop_bench_07', + [-403891623] = 'prop_bench_08', + [-99500382] = 'prop_bench_09', + [437354449] = 'prop_bench_10', + [1290593659] = 'prop_bench_11', + [345907779] = 'prop_beta_tape', + [576744296] = 'prop_beware_dog_sign', + [-1747119540] = 'prop_bh1_03_gate_l', + [-1565579268] = 'prop_bh1_03_gate_r', + [-2036241356] = 'prop_bh1_08_mp_gar', + [1301550063] = 'prop_bh1_09_mp_gar', + [-918724285] = 'prop_bh1_09_mp_l', + [1410103055] = 'prop_bh1_09_mp_r', + [1713721272] = 'prop_bh1_16_display', + [1523529669] = 'prop_bh1_44_door_01l', + [1596276849] = 'prop_bh1_44_door_01r', + [-1454760130] = 'prop_bh1_48_backdoor_l', + [1245831483] = 'prop_bh1_48_backdoor_r', + [-1568354151] = 'prop_bh1_48_gate_1', + [-403433025] = 'prop_bhhotel_door_l', + [1308911070] = 'prop_bhhotel_door_r', + [1234788901] = 'prop_big_bag_01', + [914229232] = 'prop_big_cin_screen', + [-346427197] = 'prop_big_clock_01', + [-1842599357] = 'prop_big_shit_01', + [-2071359746] = 'prop_big_shit_02', + [940495467] = 'prop_bikerack_1a', + [-1314273436] = 'prop_bikerack_2', + [-1747937636] = 'prop_bikerset', + [1772964347] = 'prop_bikini_disp_01', + [265721423] = 'prop_bikini_disp_02', + [-614421216] = 'prop_bikini_disp_03', + [-451690362] = 'prop_bikini_disp_04', + [1119091721] = 'prop_bikini_disp_05', + [-836824419] = 'prop_bikini_disp_06', + [1317998709] = 'prop_billb_frame01a', + [-2058846745] = 'prop_billb_frame01b', + [-1482898465] = 'prop_billb_frame02a', + [1538534411] = 'prop_billb_frame02b', + [2024434543] = 'prop_billb_frame03a', + [1784860384] = 'prop_billb_frame03b', + [1412211316] = 'prop_billb_frame03c', + [731304561] = 'prop_billb_frame04a', + [-514310667] = 'prop_billb_frame04b', + [934279312] = 'prop_billboard_01', + [-915891197] = 'prop_billboard_02', + [369046831] = 'prop_billboard_03', + [666654889] = 'prop_billboard_04', + [1653034562] = 'prop_billboard_05', + [73306606] = 'prop_billboard_06', + [1233198134] = 'prop_billboard_07', + [1328228234] = 'prop_billboard_08', + [-1507502723] = 'prop_billboard_09', + [1154944443] = 'prop_billboard_09wall', + [281779892] = 'prop_billboard_10', + [1539912878] = 'prop_billboard_11', + [756504395] = 'prop_billboard_12', + [1748749715] = 'prop_billboard_13', + [1233293345] = 'prop_billboard_14', + [-2068543868] = 'prop_billboard_15', + [-1778996984] = 'prop_billboard_16', + [1437508529] = 'prop_bin_01a', + [1614656839] = 'prop_bin_02a', + [-130812911] = 'prop_bin_03a', + [-93819890] = 'prop_bin_04a', + [1329570871] = 'prop_bin_05a', + [1143474856] = 'prop_bin_06a', + [-228596739] = 'prop_bin_07a', + [-468629664] = 'prop_bin_07b', + [-1426008804] = 'prop_bin_07c', + [-1187286639] = 'prop_bin_07d', + [-1096777189] = 'prop_bin_08a', + [-413198204] = 'prop_bin_08open', + [437765445] = 'prop_bin_09a', + [-1830793175] = 'prop_bin_10a', + [-329415894] = 'prop_bin_10b', + [-341442425] = 'prop_bin_11a', + [1792999139] = 'prop_bin_11b', + [-2096124444] = 'prop_bin_12a', + [122303831] = 'prop_bin_13a', + [1748268526] = 'prop_bin_14a', + [998415499] = 'prop_bin_14b', + [234941195] = 'prop_bin_beach_01a', + [-5943724] = 'prop_bin_beach_01d', + [1380691550] = 'prop_bin_delpiero_b', + [-317177646] = 'prop_bin_delpiero', + [985101275] = 'prop_binoc_01', + [1071105235] = 'prop_biolab_g_door', + [361533569] = 'prop_biotech_store', + [2142268482] = 'prop_bird_poo', + [-321570585] = 'prop_birdbath1', + [667168444] = 'prop_birdbath2', + [1032165235] = 'prop_birdbathtap', + [1641541792] = 'prop_bison_winch', + [1861974681] = 'prop_blackjack_01', + [-200725035] = 'prop_bleachers_01', + [1079494257] = 'prop_bleachers_02', + [1329488958] = 'prop_bleachers_03', + [-1663557985] = 'prop_bleachers_04_cr', + [493125771] = 'prop_bleachers_04', + [984170102] = 'prop_bleachers_05_cr', + [-1691255725] = 'prop_bleachers_05', + [-1484965124] = 'prop_blox_spray', + [634122469] = 'prop_bmu_01_b', + [-1525295470] = 'prop_bmu_01', + [1969144476] = 'prop_bmu_02_ld_cab', + [-1919316447] = 'prop_bmu_02_ld_sup', + [-1127914163] = 'prop_bmu_02_ld', + [-1754285242] = 'prop_bmu_02', + [-570322204] = 'prop_bmu_track01', + [-273336757] = 'prop_bmu_track02', + [-1387646590] = 'prop_bmu_track03', + [1111175276] = 'prop_bodyarmour_02', + [-1779214373] = 'prop_bodyarmour_03', + [-1497794201] = 'prop_bodyarmour_04', + [2022153476] = 'prop_bodyarmour_05', + [-84434502] = 'prop_bodyarmour_06', + [-79347610] = 'prop_bollard_01a', + [1348987562] = 'prop_bollard_01b', + [-542078659] = 'prop_bollard_01c', + [-994492850] = 'prop_bollard_02a', + [-903362261] = 'prop_bollard_02b', + [-663886409] = 'prop_bollard_02c', + [-1510803822] = 'prop_bollard_03a', + [-259356231] = 'prop_bollard_04', + [37760292] = 'prop_bollard_05', + [1764669601] = 'prop_bomb_01_s', + [848107085] = 'prop_bomb_01', + [346229883] = 'prop_bonesaw', + [-257549932] = 'prop_bong_01', + [591916419] = 'prop_bongos_01', + [1203342297] = 'prop_boogbd_stack_01', + [1091305086] = 'prop_boogbd_stack_02', + [1159992493] = 'prop_boogieboard_01', + [1323771955] = 'prop_boogieboard_02', + [1977677406] = 'prop_boogieboard_03', + [1142887131] = 'prop_boogieboard_04', + [1517567877] = 'prop_boogieboard_05', + [-1463264208] = 'prop_boogieboard_06', + [-1397464056] = 'prop_boogieboard_07', + [2062975117] = 'prop_boogieboard_08', + [-1856393901] = 'prop_boogieboard_09', + [688185351] = 'prop_boogieboard_10', + [1729911864] = 'prop_boombox_01', + [-23214081] = 'prop_bottle_brandy', + [-1296774200] = 'prop_bottle_cap_01', + [1404018125] = 'prop_bottle_cognac', + [-1756838334] = 'prop_bottle_macbeth', + [-748864306] = 'prop_bottle_richard', + [2018525338] = 'prop_bowl_crisps', + [-563331074] = 'prop_bowling_ball', + [-1501785249] = 'prop_bowling_pin', + [1843823183] = 'prop_box_ammo01a', + [-1522670383] = 'prop_box_ammo02a', + [-1586104172] = 'prop_box_ammo03a_set', + [2107849419] = 'prop_box_ammo03a_set2', + [-1422265815] = 'prop_box_ammo03a', + [-371004270] = 'prop_box_ammo04a', + [155659266] = 'prop_box_ammo05b', + [1824078756] = 'prop_box_ammo06a', + [1580014892] = 'prop_box_ammo07a', + [1093460780] = 'prop_box_ammo07b', + [1430410579] = 'prop_box_guncase_01a', + [-1920611843] = 'prop_box_guncase_02a', + [798951501] = 'prop_box_guncase_03a', + [-1147461795] = 'prop_box_tea01a', + [1165008631] = 'prop_box_wood01a', + [-1032791704] = 'prop_box_wood02a_mws', + [-1861623876] = 'prop_box_wood02a_pu', + [396412624] = 'prop_box_wood02a', + [-2022916910] = 'prop_box_wood03a', + [-1322183878] = 'prop_box_wood04a', + [-1513883840] = 'prop_box_wood05a', + [738624455] = 'prop_box_wood05b', + [-1685625437] = 'prop_box_wood06a', + [307713837] = 'prop_box_wood07a', + [1916770868] = 'prop_box_wood08a', + [1815646479] = 'prop_boxcar5_handle', + [335898267] = 'prop_boxing_glove_01', + [1513590521] = 'prop_boxpile_01a', + [1524671283] = 'prop_boxpile_02b', + [1280771616] = 'prop_boxpile_02c', + [-865565111] = 'prop_boxpile_02d', + [1576342596] = 'prop_boxpile_03a', + [300547451] = 'prop_boxpile_04a', + [1935071027] = 'prop_boxpile_05a', + [-77338465] = 'prop_boxpile_06a', + [153748523] = 'prop_boxpile_06b', + [-1726996371] = 'prop_boxpile_07a', + [519908417] = 'prop_boxpile_07d', + [-188983024] = 'prop_boxpile_08a', + [-340374416] = 'prop_boxpile_09a', + [-1480604471] = 'prop_boxpile_10a', + [-1249550252] = 'prop_boxpile_10b', + [155046858] = 'prop_brandy_glass', + [2064772359] = 'prop_bread_rack_01', + [1186956387] = 'prop_bread_rack_02', + [329675898] = 'prop_breadbin_01', + [-559661536] = 'prop_break_skylight_01', + [-1039974809] = 'prop_broken_cboard_p1', + [208851797] = 'prop_broken_cboard_p2', + [-1261591476] = 'prop_broken_cell_gate_01', + [-355648437] = 'prop_broom_unit_01', + [-1635579193] = 'prop_bs_map_door_01', + [1840863642] = 'prop_bskball_01', + [1678716578] = 'prop_buck_spade_01', + [1909574183] = 'prop_buck_spade_02', + [-2120586824] = 'prop_buck_spade_03', + [655799498] = 'prop_buck_spade_04', + [-1503317171] = 'prop_buck_spade_05', + [-1154786087] = 'prop_buck_spade_06', + [-906364298] = 'prop_buck_spade_07', + [1353058256] = 'prop_buck_spade_08', + [-226735210] = 'prop_buck_spade_09', + [2054934387] = 'prop_buck_spade_10', + [702767871] = 'prop_bucket_01a', + [4591557] = 'prop_bucket_01b', + [-13720938] = 'prop_bucket_02a', + [1474888937] = 'prop_buckets_02', + [-1948924681] = 'prop_bumper_01', + [-1720688596] = 'prop_bumper_02', + [-1185439750] = 'prop_bumper_03', + [-956482747] = 'prop_bumper_04', + [-774156031] = 'prop_bumper_05', + [-401310349] = 'prop_bumper_06', + [-77393630] = 'prop_bumper_car_01', + [1129053052] = 'prop_burgerstand_01', + [-550386901] = 'prop_burto_gate_01', + [-1022684418] = 'prop_bus_stop_sign', + [-704596622] = 'prop_bush_dead_02', + [1719383358] = 'prop_bush_gorse_dry', + [-1576578766] = 'prop_bush_gorse_lush', + [1116369239] = 'prop_bush_grape_01', + [754902525] = 'prop_bush_ivy_01_1m', + [1551246947] = 'prop_bush_ivy_01_2m', + [218547716] = 'prop_bush_ivy_01_bk', + [1727654695] = 'prop_bush_ivy_01_l', + [1724835979] = 'prop_bush_ivy_01_pot', + [-1963183301] = 'prop_bush_ivy_01_r', + [-298407735] = 'prop_bush_ivy_01_top', + [-2145301823] = 'prop_bush_ivy_02_1m', + [1296557055] = 'prop_bush_ivy_02_2m', + [-467587443] = 'prop_bush_ivy_02_l', + [425311731] = 'prop_bush_ivy_02_pot', + [14149626] = 'prop_bush_ivy_02_r', + [858596542] = 'prop_bush_ivy_02_top', + [-685850110] = 'prop_bush_lrg_01', + [-1825519337] = 'prop_bush_lrg_01b', + [11906616] = 'prop_bush_lrg_01c_cr', + [2044171877] = 'prop_bush_lrg_01c', + [-2003160086] = 'prop_bush_lrg_01d', + [662880068] = 'prop_bush_lrg_01e_cr', + [-1705943745] = 'prop_bush_lrg_01e_cr2', + [735410778] = 'prop_bush_lrg_01e', + [498290474] = 'prop_bush_lrg_02', + [-465751269] = 'prop_bush_lrg_02b', + [1277635601] = 'prop_bush_lrg_03', + [21490660] = 'prop_bush_lrg_03b', + [211487370] = 'prop_bush_lrg_04b', + [849958566] = 'prop_bush_lrg_04c', + [-302658244] = 'prop_bush_lrg_04d', + [-26307958] = 'prop_bush_med_01', + [236794343] = 'prop_bush_med_02', + [-1658282356] = 'prop_bush_med_03_cr', + [-1656246279] = 'prop_bush_med_03_cr2', + [-1733179630] = 'prop_bush_med_03', + [992644101] = 'prop_bush_med_05', + [1165271193] = 'prop_bush_med_06', + [-307793672] = 'prop_bush_med_07', + [1225919411] = 'prop_bush_neat_01', + [-1205638700] = 'prop_bush_neat_02', + [-1385802662] = 'prop_bush_neat_03', + [-1127746783] = 'prop_bush_neat_04', + [-1316102995] = 'prop_bush_neat_05', + [-1602995590] = 'prop_bush_neat_06', + [-148117528] = 'prop_bush_neat_07', + [-435337813] = 'prop_bush_neat_08', + [754546165] = 'prop_bush_ornament_01', + [-29353853] = 'prop_bush_ornament_02', + [1235038012] = 'prop_bush_ornament_03', + [466408348] = 'prop_bush_ornament_04', + [-1153241480] = 'prop_busker_hat_01', + [2142033519] = 'prop_busstop_02', + [1681727376] = 'prop_busstop_04', + [1888204845] = 'prop_busstop_05', + [1575751856] = 'prop_byard_bench01', + [-1884883931] = 'prop_byard_bench02', + [-27783086] = 'prop_byard_benchset', + [-1188661082] = 'prop_byard_block_01', + [122468881] = 'prop_byard_boat01', + [1062775336] = 'prop_byard_boat02', + [-371331137] = 'prop_byard_chains01', + [674064465] = 'prop_byard_dingy', + [686477543] = 'prop_byard_elecbox01', + [-244456978] = 'prop_byard_elecbox02', + [246619256] = 'prop_byard_elecbox03', + [-708760939] = 'prop_byard_elecbox04', + [-559617036] = 'prop_byard_float_01', + [-162430513] = 'prop_byard_float_01b', + [73742208] = 'prop_byard_float_02', + [-977919647] = 'prop_byard_float_02b', + [-1203351544] = 'prop_byard_floatpile', + [936543891] = 'prop_byard_gastank01', + [1242409737] = 'prop_byard_gastank02', + [817332001] = 'prop_byard_hoist_2', + [-1479518736] = 'prop_byard_hoist', + [1049934319] = 'prop_byard_hoses01', + [808918324] = 'prop_byard_hoses02', + [-1289036632] = 'prop_byard_ladder01', + [-1056923006] = 'prop_byard_lifering', + [-1729805677] = 'prop_byard_machine01', + [-735594213] = 'prop_byard_machine02', + [-993191322] = 'prop_byard_machine03', + [-1703033697] = 'prop_byard_motor_01', + [-1471717326] = 'prop_byard_motor_02', + [1907585799] = 'prop_byard_motor_03', + [1324389995] = 'prop_byard_net02', + [-1387053364] = 'prop_byard_phone', + [-1323388435] = 'prop_byard_pipe_01', + [568297919] = 'prop_byard_pipes01', + [-896684404] = 'prop_byard_planks01', + [2082303835] = 'prop_byard_pulley01', + [880641625] = 'prop_byard_rack', + [-341893038] = 'prop_byard_ramp', + [-535359464] = 'prop_byard_rampold_cr', + [-555044201] = 'prop_byard_rampold', + [-1249123711] = 'prop_byard_rowboat1', + [-1507769428] = 'prop_byard_rowboat2', + [-1685705098] = 'prop_byard_rowboat3', + [-2006939605] = 'prop_byard_rowboat4', + [-290892613] = 'prop_byard_rowboat5', + [-459195495] = 'prop_byard_scfhold01', + [-1881895757] = 'prop_byard_sleeper01', + [-1115854844] = 'prop_byard_sleeper02', + [-1200565436] = 'prop_byard_steps_01', + [-551453476] = 'prop_byard_tank_01', + [-264508577] = 'prop_byard_trailer01', + [-1081538054] = 'prop_byard_trailer02', + [-2033654589] = 'prop_c4_final_green', + [-1266278729] = 'prop_c4_final', + [921663118] = 'prop_c4_num_0001', + [-765547158] = 'prop_c4_num_0002', + [-594492978] = 'prop_c4_num_0003', + [1144664784] = 'prop_cabinet_01', + [-2008585441] = 'prop_cabinet_01b', + [1797500920] = 'prop_cabinet_02b', + [461118750] = 'prop_cable_hook_01', + [-423137698] = 'prop_cablespool_01a', + [-903793390] = 'prop_cablespool_01b', + [-1485906437] = 'prop_cablespool_02', + [-1255376522] = 'prop_cablespool_03', + [2111998691] = 'prop_cablespool_04', + [-1951881617] = 'prop_cablespool_05', + [-497495090] = 'prop_cablespool_06', + [-1951996480] = 'prop_cactus_01a', + [-759499797] = 'prop_cactus_01b', + [-938090847] = 'prop_cactus_01c', + [-194496699] = 'prop_cactus_01d', + [-492137526] = 'prop_cactus_01e', + [390870628] = 'prop_cactus_02', + [704797648] = 'prop_cactus_03', + [2092257548] = 'prop_camera_strap', + [996225620] = 'prop_can_canoe', + [-984269803] = 'prop_candy_pqs', + [1819853303] = 'prop_cap_01', + [1619813869] = 'prop_cap_01b', + [-1435549699] = 'prop_cap_row_01', + [-1523993790] = 'prop_cap_row_01b', + [-131638424] = 'prop_cap_row_02', + [-1604836925] = 'prop_cap_row_02b', + [1158698200] = 'prop_car_battery_01', + [-1196571587] = 'prop_car_bonnet_01', + [342457267] = 'prop_car_bonnet_02', + [277255495] = 'prop_car_door_01', + [-699424554] = 'prop_car_door_02', + [674546851] = 'prop_car_door_03', + [-204842037] = 'prop_car_door_04', + [232216084] = 'prop_car_engine_01', + [-60739707] = 'prop_car_exhaust_01', + [-8553080] = 'prop_car_ignition', + [1382419899] = 'prop_car_seat', + [272384846] = 'prop_carcreeper', + [-1364253020] = 'prop_cardbordbox_01a', + [250374685] = 'prop_cardbordbox_02a', + [-1515940233] = 'prop_cardbordbox_03a', + [-1438964996] = 'prop_cardbordbox_04a', + [-475360078] = 'prop_cardbordbox_05a', + [1511660505] = 'prop_cargo_int', + [859851171] = 'prop_carjack_l2', + [-946793326] = 'prop_carjack', + [-982012260] = 'prop_carrier_bag_01_lod', + [-1681475898] = 'prop_carrier_bag_01', + [-157551270] = 'prop_cartwheel_01', + [1435400154] = 'prop_carwash_roller_horz', + [-382832258] = 'prop_carwash_roller_vert', + [-2084301080] = 'prop_casey_sec_id', + [1603932804] = 'prop_cash_case_01', + [-1787068858] = 'prop_cash_case_02', + [-464691988] = 'prop_cash_crate_01', + [31652530] = 'prop_cash_dep_bag_01', + [1284202985] = 'prop_cash_depot_billbrd', + [-293267906] = 'prop_cash_envelope_01', + [-449200111] = 'prop_cash_note_01', + [-295781225] = 'prop_cash_pile_01', + [-598402940] = 'prop_cash_pile_02', + [929864185] = 'prop_cash_trolly', + [-655196089] = 'prop_casino_door_01l', + [1713150633] = 'prop_casino_door_01r', + [-1927236321] = 'prop_cat_tail_01', + [708945182] = 'prop_cattlecrush', + [-448246534] = 'prop_cava', + [-906652006] = 'prop_cctv_01_sm_02', + [-1217031096] = 'prop_cctv_01_sm', + [1924666731] = 'prop_cctv_02_sm', + [548760764] = 'prop_cctv_cam_01a', + [-354221800] = 'prop_cctv_cam_01b', + [-1159421424] = 'prop_cctv_cam_02a', + [1449155105] = 'prop_cctv_cam_03a', + [-1095296451] = 'prop_cctv_cam_04a', + [1919058329] = 'prop_cctv_cam_04b', + [-1884701657] = 'prop_cctv_cam_04c', + [-173206916] = 'prop_cctv_cam_05a', + [168901740] = 'prop_cctv_cam_06a', + [-1340405475] = 'prop_cctv_cam_07a', + [1079430269] = 'prop_cctv_cont_01', + [262335250] = 'prop_cctv_cont_02', + [-505081961] = 'prop_cctv_cont_03', + [-1420320131] = 'prop_cctv_cont_04', + [-41040152] = 'prop_cctv_cont_05', + [-982919519] = 'prop_cctv_cont_06', + [39380961] = 'prop_cctv_mon_02', + [1927491455] = 'prop_cctv_pole_01a', + [299608302] = 'prop_cctv_pole_02', + [-6978462] = 'prop_cctv_pole_03', + [2135655372] = 'prop_cctv_pole_04', + [808554411] = 'prop_cctv_unit_01', + [-155935570] = 'prop_cctv_unit_02', + [7254050] = 'prop_cctv_unit_03', + [1517151235] = 'prop_cctv_unit_04', + [1295239567] = 'prop_cctv_unit_05', + [-1524553731] = 'prop_cd_folder_pile1', + [-1906181505] = 'prop_cd_folder_pile2', + [1573132612] = 'prop_cd_folder_pile3', + [1879489993] = 'prop_cd_folder_pile4', + [2006770941] = 'prop_cd_lamp', + [-925658112] = 'prop_cd_paper_pile1', + [-1339628889] = 'prop_cd_paper_pile2', + [-1503146199] = 'prop_cd_paper_pile3', + [1899123601] = 'prop_cementbags01', + [-2113539824] = 'prop_cementmixer_01a', + [-500221685] = 'prop_cementmixer_02a', + [-1414337382] = 'prop_ceramic_jug_01', + [-769322496] = 'prop_ceramic_jug_cork', + [2052512905] = 'prop_ch_025c_g_door_01', + [441265733] = 'prop_ch1_02_glass_01', + [758895650] = 'prop_ch1_02_glass_02', + [-44475594] = 'prop_ch1_07_door_01l', + [1183182250] = 'prop_ch1_07_door_01r', + [1764111426] = 'prop_ch1_07_door_02l', + [-1082334994] = 'prop_ch1_07_door_02r', + [1056781042] = 'prop_ch2_05d_g_door', + [-264464292] = 'prop_ch2_07b_20_g_door', + [1291867081] = 'prop_ch2_09b_door', + [913904359] = 'prop_ch2_09c_garage_door', + [-345463719] = 'prop_ch2_wdfence_01', + [-709723927] = 'prop_ch2_wdfence_02', + [-26664553] = 'prop_ch3_01_trlrdoor_l', + [914592203] = 'prop_ch3_01_trlrdoor_r', + [-582278602] = 'prop_ch3_04_door_01l', + [1343686600] = 'prop_ch3_04_door_01r', + [1742849246] = 'prop_ch3_04_door_02', + [525667351] = 'prop_chair_01a', + [764848282] = 'prop_chair_01b', + [725259233] = 'prop_chair_02', + [1064877149] = 'prop_chair_03', + [2064599526] = 'prop_chair_04a', + [-1941377959] = 'prop_chair_04b', + [1545434534] = 'prop_chair_05', + [826023884] = 'prop_chair_06', + [1056357185] = 'prop_chair_07', + [1281480215] = 'prop_chair_08', + [1612971419] = 'prop_chair_09', + [1691387372] = 'prop_chair_10', + [-296249014] = 'prop_chair_pile_01', + [-1764790987] = 'prop_chall_lamp_01', + [-1720704599] = 'prop_chall_lamp_01n', + [-1529607874] = 'prop_chall_lamp_02', + [-169049173] = 'prop_champ_01a', + [1053267296] = 'prop_champ_01b', + [1470358132] = 'prop_champ_box_01', + [-781987689] = 'prop_champ_cool', + [1217034051] = 'prop_champ_flute', + [1275890453] = 'prop_champ_jer_01a', + [-1504198742] = 'prop_champ_jer_01b', + [866201454] = 'prop_champset', + [1028260687] = 'prop_chateau_chair_01', + [-1593767197] = 'prop_chateau_table_01', + [936905486] = 'prop_cheetah_covered', + [-1297635988] = 'prop_chem_grill_bit', + [705954659] = 'prop_chem_grill', + [-330775550] = 'prop_chem_vial_02', + [-192665395] = 'prop_chem_vial_02b', + [516891919] = 'prop_cherenkov_01', + [218661250] = 'prop_cherenkov_02', + [95220379] = 'prop_cherenkov_03', + [-77406713] = 'prop_cherenkov_04', + [-1380380796] = 'prop_cherenneon', + [965237685] = 'prop_chickencoop_a', + [1532772963] = 'prop_chip_fryer', + [-447760697] = 'prop_choc_ego', + [921283475] = 'prop_choc_meto', + [1374501775] = 'prop_choc_pq', + [-1425058769] = 'prop_cigar_01', + [-461945070] = 'prop_cigar_02', + [-693032058] = 'prop_cigar_03', + [-222435362] = 'prop_cigar_pack_01', + [66849370] = 'prop_cigar_pack_02', + [-942741090] = 'prop_cj_big_boat', + [2040474443] = 'prop_clapper_brd_01', + [-177104014] = 'prop_cleaning_trolly', + [123739945] = 'prop_cleaver', + [1551512929] = 'prop_cliff_paper', + [1633371511] = 'prop_clippers_01', + [180400975] = 'prop_clothes_rail_01', + [-680244041] = 'prop_clothes_rail_02', + [772635112] = 'prop_clothes_rail_03', + [1282291969] = 'prop_clothes_rail_2b', + [1870748288] = 'prop_clothes_tub_01', + [-2105381678] = 'prop_clown_chair', + [-1218939119] = 'prop_clubset', + [-1848368739] = 'prop_cntrdoor_ld_l', + [-1035763073] = 'prop_cntrdoor_ld_r', + [1535443769] = 'prop_coathook_01', + [-2344144] = 'prop_cockneon', + [-563430544] = 'prop_cocktail_glass', + [-2140390666] = 'prop_cocktail', + [1348707560] = 'prop_coffee_cup_trailer', + [-938179374] = 'prop_coffee_mac_01', + [-170500011] = 'prop_coffee_mac_02', + [253279588] = 'prop_coffin_01', + [460248592] = 'prop_coffin_02', + [-2101688943] = 'prop_coffin_02b', + [-1447228138] = 'prop_coke_block_01', + [-1508012205] = 'prop_coke_block_half_a', + [-1268044818] = 'prop_coke_block_half_b', + [-190780785] = 'prop_com_gar_door_01', + [-550347177] = 'prop_com_ls_door_01', + [1742374783] = 'prop_compressor_01', + [1917885559] = 'prop_compressor_02', + [-527501070] = 'prop_compressor_03', + [-1951226014] = 'prop_conc_blocks01a', + [-1672689514] = 'prop_conc_blocks01b', + [1711856655] = 'prop_conc_blocks01c', + [-1828462170] = 'prop_conc_sacks_02a', + [-175009656] = 'prop_cone_float_1', + [1962326206] = 'prop_cons_cements01', + [1262767548] = 'prop_cons_crate', + [1742463912] = 'prop_cons_plank', + [-219300] = 'prop_cons_ply01', + [256067049] = 'prop_cons_ply02', + [1804750010] = 'prop_cons_plyboard_01', + [-1901869594] = 'prop_conschute', + [1848810133] = 'prop_consign_01a', + [-1686309583] = 'prop_consign_01b', + [-1874075953] = 'prop_consign_01c', + [-2146714905] = 'prop_consign_02a', + [-277986462] = 'prop_conslift_base', + [1981921967] = 'prop_conslift_brace', + [1082648418] = 'prop_conslift_cage', + [1500925016] = 'prop_conslift_door', + [1925435073] = 'prop_conslift_lift', + [-1528949789] = 'prop_conslift_rail', + [-1348447382] = 'prop_conslift_rail2', + [358100685] = 'prop_conslift_steps', + [1942724096] = 'prop_console_01', + [1993507294] = 'prop_const_fence01a', + [2108146567] = 'prop_const_fence01b_cr', + [-1998445059] = 'prop_const_fence01b', + [1087520462] = 'prop_const_fence02a', + [779917859] = 'prop_const_fence02b', + [-679229497] = 'prop_const_fence03a_cr', + [-1147467348] = 'prop_const_fence03b_cr', + [-1404409203] = 'prop_const_fence03b', + [2061319915] = 'prop_construcionlamp_01', + [-339041260] = 'prop_cont_chiller_01', + [-629735826] = 'prop_container_01a', + [466911544] = 'prop_container_01b', + [772023703] = 'prop_container_01c', + [2140719283] = 'prop_container_01d', + [-1857328104] = 'prop_container_01e', + [1525186387] = 'prop_container_01f', + [-380625884] = 'prop_container_01g', + [511018606] = 'prop_container_01h', + [1600026313] = 'prop_container_01mb', + [1670285818] = 'prop_container_02a', + [2082122732] = 'prop_container_03_ld', + [314436594] = 'prop_container_03a', + [-328261803] = 'prop_container_03b', + [-1001469406] = 'prop_container_03mb', + [-2003545603] = 'prop_container_04a', + [-973498652] = 'prop_container_04mb', + [1765283457] = 'prop_container_05a', + [-384237829] = 'prop_container_05mb', + [1437126442] = 'prop_container_door_mb_l', + [519594446] = 'prop_container_door_mb_r', + [1082797888] = 'prop_container_hole', + [-1617592469] = 'prop_container_ld_d', + [-699955605] = 'prop_container_ld_pu', + [1022953480] = 'prop_container_ld', + [-1363788725] = 'prop_container_ld2', + [1067874014] = 'prop_container_old1', + [1934587523] = 'prop_contnr_pile_01a', + [874602658] = 'prop_contr_03b_ld', + [1413187371] = 'prop_control_rm_door_01', + [-561798108] = 'prop_controller_01', + [-1781967271] = 'prop_cooker_03', + [1925308724] = 'prop_coolbox_01', + [-1025251070] = 'prop_copier_01', + [-512779781] = 'prop_copper_pan', + [-1197075149] = 'prop_cora_clam_01', + [2085456462] = 'prop_coral_01', + [454281176] = 'prop_coral_02', + [148251485] = 'prop_coral_03', + [-1066518642] = 'prop_coral_bush_01', + [1515229990] = 'prop_coral_flat_01_l1', + [732902614] = 'prop_coral_flat_01', + [1932313568] = 'prop_coral_flat_02', + [-899327850] = 'prop_coral_flat_brainy', + [1142716866] = 'prop_coral_flat_clam', + [-1644521867] = 'prop_coral_grass_01', + [-1383778934] = 'prop_coral_grass_02', + [2012178995] = 'prop_coral_kelp_01_l1', + [-1438425225] = 'prop_coral_kelp_01', + [-362837572] = 'prop_coral_kelp_02_l1', + [1634749906] = 'prop_coral_kelp_02', + [-500555734] = 'prop_coral_kelp_03_l1', + [1169102416] = 'prop_coral_kelp_03', + [611872568] = 'prop_coral_kelp_03a', + [302500439] = 'prop_coral_kelp_03b', + [130856417] = 'prop_coral_kelp_03c', + [-178188022] = 'prop_coral_kelp_03d', + [857050146] = 'prop_coral_kelp_04_l1', + [11701240] = 'prop_coral_kelp_04', + [40625548] = 'prop_coral_pillar_01', + [-274317311] = 'prop_coral_pillar_02', + [624417658] = 'prop_coral_spikey_01', + [17064270] = 'prop_coral_stone_03', + [976638897] = 'prop_coral_stone_04', + [-2119215420] = 'prop_coral_sweed_01', + [-1265714046] = 'prop_coral_sweed_02', + [-1555752465] = 'prop_coral_sweed_03', + [595499640] = 'prop_coral_sweed_04', + [-936729545] = 'prop_cork_board', + [267944901] = 'prop_couch_01', + [1787607276] = 'prop_couch_03', + [1960004985] = 'prop_couch_04', + [-712445787] = 'prop_couch_lg_02', + [1469543616] = 'prop_couch_lg_05', + [-359621964] = 'prop_couch_lg_06', + [-65258037] = 'prop_couch_lg_07', + [2131641261] = 'prop_couch_lg_08', + [1781364495] = 'prop_couch_sm_02', + [-405540270] = 'prop_couch_sm_05', + [-1896300387] = 'prop_couch_sm_06', + [-863683659] = 'prop_couch_sm_07', + [332315958] = 'prop_couch_sm1_07', + [266823484] = 'prop_couch_sm2_07', + [322789545] = 'prop_crane_01_truck1', + [77841270] = 'prop_crane_01_truck2', + [1482017401] = 'prop_cranial_saw', + [-1903396261] = 'prop_crashed_heli', + [1138020438] = 'prop_crate_01a', + [2027909842] = 'prop_crate_02a', + [2078243314] = 'prop_crate_03a', + [1228641767] = 'prop_crate_04a', + [1734726491] = 'prop_crate_05a', + [1452552716] = 'prop_crate_06a', + [1195840658] = 'prop_crate_07a', + [-1349621981] = 'prop_crate_08a', + [-1748158271] = 'prop_crate_09a', + [1502702711] = 'prop_crate_10a', + [279501755] = 'prop_crate_11a', + [575569670] = 'prop_crate_11b', + [-718674754] = 'prop_crate_11c', + [-1092569044] = 'prop_crate_11d', + [2009246193] = 'prop_crate_11e', + [1062737045] = 'prop_crate_float_1', + [-1885873988] = 'prop_cratepile_01a', + [1872828871] = 'prop_cratepile_02a', + [2005215959] = 'prop_cratepile_03a', + [-939897404] = 'prop_cratepile_05a', + [-746113019] = 'prop_cratepile_07a_l1', + [-2073573168] = 'prop_cratepile_07a', + [958706278] = 'prop_creosote_b_01', + [-1106953345] = 'prop_crisp_small', + [664874098] = 'prop_crisp', + [274043485] = 'prop_crosssaw_01', + [810004487] = 'prop_crt_mon_01', + [1123308896] = 'prop_crt_mon_02', + [-937216864] = 'prop_cs_20m_rope', + [-532590520] = 'prop_cs_30m_rope', + [13812341] = 'prop_cs_abattoir_switch', + [63698946] = 'prop_cs_aircon_01', + [-1442454769] = 'prop_cs_aircon_fan', + [1536669612] = 'prop_cs_amanda_shoe', + [1768299584] = 'prop_cs_ashtray', + [1256177865] = 'prop_cs_bandana', + [-1232739548] = 'prop_cs_bar', + [1280564504] = 'prop_cs_beachtowel_01', + [-1620762220] = 'prop_cs_beer_bot_01', + [142566137] = 'prop_cs_beer_bot_01b', + [426102607] = 'prop_cs_beer_bot_01lod', + [1360987401] = 'prop_cs_beer_bot_02', + [2138694078] = 'prop_cs_beer_bot_03', + [2010247122] = 'prop_cs_beer_bot_40oz_02', + [466433990] = 'prop_cs_beer_bot_40oz_03', + [1027704914] = 'prop_cs_beer_bot_40oz', + [-611631168] = 'prop_cs_beer_bot_test', + [465289078] = 'prop_cs_beer_box', + [-2056768813] = 'prop_cs_bin_01_lid', + [1010534896] = 'prop_cs_bin_01_skinned', + [-654874323] = 'prop_cs_bin_01', + [651101403] = 'prop_cs_bin_02', + [909943734] = 'prop_cs_bin_03', + [-1176461999] = 'prop_cs_binder_01', + [2025816514] = 'prop_cs_book_01', + [-1427999220] = 'prop_cs_bottle_opener', + [170053282] = 'prop_cs_bowie_knife', + [2120940455] = 'prop_cs_bowl_01', + [-295727581] = 'prop_cs_bowl_01b', + [-719727517] = 'prop_cs_box_clothes', + [1956168703] = 'prop_cs_box_step', + [201663137] = 'prop_cs_brain_chunk', + [-775118285] = 'prop_cs_bs_cup', + [-1677504802] = 'prop_cs_bucket_s_lod', + [554267863] = 'prop_cs_bucket_s', + [-2054442544] = 'prop_cs_burger_01', + [-1282513796] = 'prop_cs_business_card', + [1302435108] = 'prop_cs_cardbox_01', + [-1505197182] = 'prop_cs_cash_note_01', + [406712611] = 'prop_cs_cashenvelope', + [2090203758] = 'prop_cs_cctv', + [-1615062121] = 'prop_cs_champ_flute', + [-917746868] = 'prop_cs_ciggy_01', + [-1025266894] = 'prop_cs_ciggy_01b', + [652737713] = 'prop_cs_clothes_box', + [545057810] = 'prop_cs_coke_line', + [533451505] = 'prop_cs_cont_latch', + [-693475324] = 'prop_cs_crackpipe', + [-875075437] = 'prop_cs_credit_card', + [723503026] = 'prop_cs_creeper_01', + [-406097840] = 'prop_cs_crisps_01', + [1070220657] = 'prop_cs_cuffs_01', + [-335230536] = 'prop_cs_diaphram', + [-422877666] = 'prop_cs_dildo_01', + [-445408901] = 'prop_cs_documents_01', + [-996771701] = 'prop_cs_dog_lead_2a', + [1266353722] = 'prop_cs_dog_lead_2b', + [977232831] = 'prop_cs_dog_lead_2c', + [-1928819012] = 'prop_cs_dog_lead_3a', + [-575524846] = 'prop_cs_dog_lead_3b', + [-697139703] = 'prop_cs_dog_lead_a_s', + [-66960395] = 'prop_cs_dog_lead_a', + [917372867] = 'prop_cs_dog_lead_b_s', + [-1456365995] = 'prop_cs_dog_lead_b', + [-546403634] = 'prop_cs_dog_lead_c', + [1666748342] = 'prop_cs_duffel_01', + [-1623160520] = 'prop_cs_duffel_01b', + [684586828] = 'prop_cs_dumpster_01a', + [-1111368675] = 'prop_cs_dumpster_lidl', + [1620484584] = 'prop_cs_dumpster_lidr', + [1898245022] = 'prop_cs_dvd_case', + [159474821] = 'prop_cs_dvd_player', + [-1990299112] = 'prop_cs_dvd', + [-401083813] = 'prop_cs_envolope_01', + [424800391] = 'prop_cs_fertilizer', + [-1843032146] = 'prop_cs_film_reel_01', + [-502288475] = 'prop_cs_focussheet1', + [-222397056] = 'prop_cs_folding_chair_01', + [798703340] = 'prop_cs_fork', + [495720653] = 'prop_cs_frank_photo', + [1107966991] = 'prop_cs_freightdoor_l1', + [-405152626] = 'prop_cs_freightdoor_r1', + [885756908] = 'prop_cs_fridge_door', + [1425833142] = 'prop_cs_fridge', + [1877113268] = 'prop_cs_fuel_hose', + [-1937636863] = 'prop_cs_fuel_nozle', + [-1999455180] = 'prop_cs_gascutter_1', + [2056069033] = 'prop_cs_gascutter_2', + [-1978316686] = 'prop_cs_glass_scrap', + [-1152832576] = 'prop_cs_gravyard_gate_l', + [-1613007647] = 'prop_cs_gravyard_gate_r', + [-1385720190] = 'prop_cs_gunrack', + [1474598747] = 'prop_cs_h_bag_strap_01', + [-1964402432] = 'prop_cs_hand_radio', + [-711724000] = 'prop_cs_heist_bag_01', + [1626933972] = 'prop_cs_heist_bag_02', + [-885937534] = 'prop_cs_heist_bag_strap_01', + [-180730371] = 'prop_cs_heist_rope_b', + [-701398104] = 'prop_cs_heist_rope', + [-1729226035] = 'prop_cs_hotdog_01', + [-1490012335] = 'prop_cs_hotdog_02', + [1781429436] = 'prop_cs_ice_locker_door_l', + [-1248359543] = 'prop_cs_ice_locker_door_r', + [-315721232] = 'prop_cs_ice_locker', + [-1718725630] = 'prop_cs_ilev_blind_01', + [913235136] = 'prop_cs_ironing_board', + [-491126417] = 'prop_cs_katana_01', + [1653123003] = 'prop_cs_kettle_01', + [1355944948] = 'prop_cs_keyboard_01', + [403319434] = 'prop_cs_keys_01', + [1745889433] = 'prop_cs_kitchen_cab_l', + [-472476695] = 'prop_cs_kitchen_cab_l2', + [-1078473900] = 'prop_cs_kitchen_cab_ld', + [-4270084] = 'prop_cs_kitchen_cab_r', + [-702878534] = 'prop_cs_kitchen_cab_rd', + [-173563530] = 'prop_cs_lazlow_ponytail', + [-64507759] = 'prop_cs_lazlow_shirt_01', + [1307059286] = 'prop_cs_lazlow_shirt_01b', + [-1837161340] = 'prop_cs_leaf', + [-1289626238] = 'prop_cs_leg_chain_01', + [1779489719] = 'prop_cs_lester_crate', + [-1265049850] = 'prop_cs_lipstick', + [-1567349688] = 'prop_cs_magazine', + [-294844349] = 'prop_cs_marker_01', + [-212446848] = 'prop_cs_meth_pipe', + [-2127730952] = 'prop_cs_milk_01', + [-2111499173] = 'prop_cs_mini_tv', + [-320848029] = 'prop_cs_mop_s', + [-1325917674] = 'prop_cs_mopbucket_01', + [-802505806] = 'prop_cs_mouse_01', + [1230429806] = 'prop_cs_nail_file', + [-1342300326] = 'prop_cs_newspaper', + [-1118419705] = 'prop_cs_office_chair', + [-730039367] = 'prop_cs_overalls_01', + [-280273712] = 'prop_cs_package_01', + [-964718646] = 'prop_cs_padlock', + [-2015467307] = 'prop_cs_pamphlet_01', + [680820076] = 'prop_cs_panel_01', + [392343608] = 'prop_cs_panties_02', + [183572309] = 'prop_cs_panties_03', + [-107476029] = 'prop_cs_panties', + [1151364435] = 'prop_cs_paper_cup', + [188509020] = 'prop_cs_para_ropebit', + [1802746629] = 'prop_cs_para_ropes', + [-1210765722] = 'prop_cs_pebble_02', + [825178770] = 'prop_cs_pebble', + [-963445391] = 'prop_cs_petrol_can', + [810403723] = 'prop_cs_phone_01', + [-1771756887] = 'prop_cs_photoframe_01', + [-756465278] = 'prop_cs_pills', + [543307053] = 'prop_cs_plane_int_01', + [2003467845] = 'prop_cs_planning_photo', + [-2032546125] = 'prop_cs_plant_01', + [1699172013] = 'prop_cs_plate_01', + [929749731] = 'prop_cs_polaroid', + [211760048] = 'prop_cs_police_torch_02', + [1110740384] = 'prop_cs_police_torch', + [2044620980] = 'prop_cs_pour_tube', + [1456723945] = 'prop_cs_power_cell', + [885625790] = 'prop_cs_power_cord', + [-1202268978] = 'prop_cs_protest_sign_01', + [513679711] = 'prop_cs_protest_sign_02', + [684677473] = 'prop_cs_protest_sign_02b', + [1289584093] = 'prop_cs_protest_sign_03', + [-1957551963] = 'prop_cs_protest_sign_04a', + [-668026271] = 'prop_cs_protest_sign_04b', + [-410593242] = 'prop_cs_r_business_card', + [-1005864181] = 'prop_cs_rage_statue_p1', + [-1777344752] = 'prop_cs_rage_statue_p2', + [542291840] = 'prop_cs_remote_01', + [-1721110035] = 'prop_cs_rolled_paper', + [-2144934510] = 'prop_cs_rope_tie_01', + [-675277761] = 'prop_cs_rub_binbag_01', + [-1649986476] = 'prop_cs_rub_box_01', + [-1358047455] = 'prop_cs_rub_box_02', + [161602935] = 'prop_cs_sack_01', + [1932149942] = 'prop_cs_saucer_01', + [-601355186] = 'prop_cs_sc1_11_gate', + [-1089970267] = 'prop_cs_scissors', + [1648892290] = 'prop_cs_script_bottle_01', + [393961710] = 'prop_cs_script_bottle', + [977288393] = 'prop_cs_server_drive', + [573064907] = 'prop_cs_sheers', + [684238724] = 'prop_cs_shirt_01', + [-1187210516] = 'prop_cs_shopping_bag', + [1109316917] = 'prop_cs_shot_glass', + [-1668478519] = 'prop_cs_silver_tray', + [2084853348] = 'prop_cs_sink_filler_02', + [-1358251024] = 'prop_cs_sink_filler_03', + [-2046364835] = 'prop_cs_sink_filler', + [-197632755] = 'prop_cs_sm_27_gate', + [-1703594174] = 'prop_cs_sol_glasses', + [1749718958] = 'prop_cs_spray_can', + [-1663028984] = 'prop_cs_steak', + [-1483715345] = 'prop_cs_stock_book', + [628215202] = 'prop_cs_street_binbag_01', + [1080644630] = 'prop_cs_street_card_01', + [454560116] = 'prop_cs_street_card_02', + [771280738] = 'prop_cs_sub_hook_01', + [925468589] = 'prop_cs_sub_rope_01', + [511938898] = 'prop_cs_swipe_card', + [-1048256558] = 'prop_cs_t_shirt_pile', + [921401054] = 'prop_cs_tablet_02', + [-1585232418] = 'prop_cs_tablet', + [-1505729971] = 'prop_cs_toaster', + [-1388073043] = 'prop_cs_trev_overlay', + [-1776497660] = 'prop_cs_trolley_01', + [-1934174148] = 'prop_cs_trowel', + [84687303] = 'prop_cs_truck_ladder', + [1201332031] = 'prop_cs_tshirt_ball_01', + [122877578] = 'prop_cs_tv_stand', + [-1457669319] = 'prop_cs_valve', + [-116183211] = 'prop_cs_vent_cover', + [-2022085894] = 'prop_cs_vial_01', + [1806057883] = 'prop_cs_walkie_talkie', + [1152510020] = 'prop_cs_walking_stick', + [561783600] = 'prop_cs_whiskey_bot_stop', + [211213803] = 'prop_cs_whiskey_bottle', + [1959553115] = 'prop_cs_wrench', + [-1258501664] = 'prop_cs1_14b_traind_dam', + [1301406642] = 'prop_cs1_14b_traind', + [1342464176] = 'prop_cs4_05_tdoor', + [67910261] = 'prop_cs4_10_tr_gd_01', + [-948829372] = 'prop_cs4_11_door', + [338220432] = 'prop_cs6_03_door_l', + [1075555701] = 'prop_cs6_03_door_r', + [337097444] = 'prop_cs6_04_glass', + [1930882775] = 'prop_cub_door_lifeblurb', + [617643669] = 'prop_cub_lifeblurb', + [-331172978] = 'prop_cuff_keys_01', + [-1039780876] = 'prop_cup_saucer_01', + [-1555713785] = 'prop_curl_bar_01', + [1042946313] = 'prop_d_balcony_l_light', + [1978304752] = 'prop_d_balcony_r_light', + [836865002] = 'prop_daiquiri', + [-1023447729] = 'prop_damdoor_01', + [1327834842] = 'prop_dandy_b', + [-472443277] = 'prop_dart_1', + [-790269808] = 'prop_dart_2', + [-303331298] = 'prop_dart_bd_01', + [-1113392619] = 'prop_dart_bd_cab_01', + [-1479543950] = 'prop_dealer_win_01', + [-1785934100] = 'prop_dealer_win_02', + [-1568511773] = 'prop_dealer_win_03', + [-332567508] = 'prop_defilied_ragdoll_01', + [-1165586043] = 'prop_desert_iron_01', + [-1787521651] = 'prop_dest_cctv_01', + [383555675] = 'prop_dest_cctv_02', + [480355301] = 'prop_dest_cctv_03', + [-1211836083] = 'prop_dest_cctv_03b', + [-1282911349] = 'prop_detergent_01a', + [-918651145] = 'prop_detergent_01b', + [-1797423879] = 'prop_devin_box_01', + [-1619952456] = 'prop_devin_box_closed', + [-1632945196] = 'prop_devin_box_dummy_01', + [1443647253] = 'prop_devin_rope_01', + [770306532] = 'prop_diggerbkt_01', + [900821510] = 'prop_direct_chair_01', + [181607490] = 'prop_direct_chair_02', + [1731771922] = 'prop_disp_cabinet_002', + [1030901262] = 'prop_disp_cabinet_01', + [1042666393] = 'prop_disp_razor_01', + [-7099851] = 'prop_display_unit_01', + [592572849] = 'prop_display_unit_02', + [1946261094] = 'prop_distantcar_day', + [-307663033] = 'prop_distantcar_night', + [-1310331447] = 'prop_distantcar_truck', + [1164617828] = 'prop_dj_deck_01', + [411094673] = 'prop_dj_deck_02', + [455567202] = 'prop_dock_bouy_1', + [736528608] = 'prop_dock_bouy_2', + [1944361179] = 'prop_dock_bouy_3', + [1341706512] = 'prop_dock_bouy_5', + [2098247772] = 'prop_dock_crane_01', + [991230204] = 'prop_dock_crane_02_cab', + [1562489357] = 'prop_dock_crane_02_hook', + [69661806] = 'prop_dock_crane_02_ld', + [-1948789270] = 'prop_dock_crane_02', + [-1473868153] = 'prop_dock_crane_04', + [-1064744201] = 'prop_dock_crane_lift', + [-1846445721] = 'prop_dock_float_1', + [670963709] = 'prop_dock_float_1b', + [-1775749263] = 'prop_dock_moor_01', + [-1789381239] = 'prop_dock_moor_04', + [-2095279854] = 'prop_dock_moor_05', + [-130712762] = 'prop_dock_moor_06', + [-418457351] = 'prop_dock_moor_07', + [836548561] = 'prop_dock_ropefloat', + [499271674] = 'prop_dock_ropetyre1', + [1237491706] = 'prop_dock_ropetyre2', + [1938092926] = 'prop_dock_ropetyre3', + [14112042] = 'prop_dock_rtg_01', + [1120043236] = 'prop_dock_rtg_ld', + [1170431850] = 'prop_dock_shippad', + [-62671737] = 'prop_dock_sign_01', + [-509384787] = 'prop_dock_woodpole1', + [-790673883] = 'prop_dock_woodpole2', + [187087539] = 'prop_dock_woodpole3', + [-44884212] = 'prop_dock_woodpole4', + [664892328] = 'prop_dock_woodpole5', + [379820688] = 'prop_dog_cage_01', + [1692612370] = 'prop_dog_cage_02', + [-1782242710] = 'prop_doghouse_01', + [439871883] = 'prop_dolly_01', + [175786512] = 'prop_dolly_02', + [702242327] = 'prop_donut_01', + [874345115] = 'prop_donut_02', + [-302942743] = 'prop_donut_02b', + [776184575] = 'prop_door_01', + [-1776185420] = 'prop_door_balcony_frame', + [-197147162] = 'prop_door_balcony_left', + [368191321] = 'prop_door_balcony_right', + [254309271] = 'prop_door_bell_01', + [1668169185] = 'prop_double_grid_line', + [-1478588509] = 'prop_dress_disp_01', + [-587238940] = 'prop_dress_disp_02', + [-891859564] = 'prop_dress_disp_03', + [-47795662] = 'prop_dress_disp_04', + [600913159] = 'prop_drink_champ', + [-1296547421] = 'prop_drink_redwine', + [-1863407086] = 'prop_drink_whisky', + [-1081236305] = 'prop_drink_whtwine', + [-1096792232] = 'prop_drinkmenu', + [-1319782883] = 'prop_drop_armscrate_01', + [1877891248] = 'prop_drop_armscrate_01b', + [505870426] = 'prop_drop_crate_01_set', + [758360035] = 'prop_drop_crate_01_set2', + [247892203] = 'prop_drop_crate_01', + [-1382355819] = 'prop_drug_bottle', + [2046325121] = 'prop_drug_burner', + [-374844025] = 'prop_drug_erlenmeyer', + [-1964997422] = 'prop_drug_package_02', + [528555233] = 'prop_drug_package', + [1842782908] = 'prop_drywallpile_01', + [-300211401] = 'prop_drywallpile_02', + [1466610934] = 'prop_dryweed_001_a', + [-771025032] = 'prop_dryweed_002_a', + [-1370006795] = 'prop_dt1_13_groundlight', + [-604862988] = 'prop_dt1_13_walllightsource', + [2026076529] = 'prop_dt1_20_mp_door_l', + [207200483] = 'prop_dt1_20_mp_door_r', + [-904347255] = 'prop_dt1_20_mp_gar', + [716584927] = 'prop_ducktape_01', + [2147205602] = 'prop_dummy_01', + [-1007599668] = 'prop_dummy_car', + [-1748817893] = 'prop_dummy_light', + [-473036318] = 'prop_dummy_plane', + [218085040] = 'prop_dumpster_01a', + [666561306] = 'prop_dumpster_02a', + [-58485588] = 'prop_dumpster_02b', + [-206690185] = 'prop_dumpster_3a', + [-349837572] = 'prop_dumpster_3step', + [1511880420] = 'prop_dumpster_4a', + [682791951] = 'prop_dumpster_4b', + [1600071214] = 'prop_dyn_pc_02', + [-1830645735] = 'prop_dyn_pc', + [1581199790] = 'prop_ear_defenders_01', + [-1807045778] = 'prop_ecg_01_cable_01', + [1719717851] = 'prop_ecg_01_cable_02', + [-776740207] = 'prop_ecg_01', + [1020618269] = 'prop_ecola_can', + [-1774898062] = 'prop_egg_clock_01', + [953734356] = 'prop_ejector_seat_01', + [-1528307545] = 'prop_el_guitar_01', + [916292624] = 'prop_el_guitar_02', + [61087258] = 'prop_el_guitar_03', + [1593642543] = 'prop_el_tapeplayer_01', + [-1599192661] = 'prop_elec_heater_01', + [393527760] = 'prop_elecbox_01a', + [1419852836] = 'prop_elecbox_01b', + [-2138350253] = 'prop_elecbox_02a', + [1381105889] = 'prop_elecbox_02b', + [1130200868] = 'prop_elecbox_03a', + [-2008643115] = 'prop_elecbox_04a', + [-2007495856] = 'prop_elecbox_05a', + [491238953] = 'prop_elecbox_06a', + [-1620823304] = 'prop_elecbox_07a', + [1841929479] = 'prop_elecbox_08', + [-259008966] = 'prop_elecbox_08b', + [1923262137] = 'prop_elecbox_09', + [-1333576134] = 'prop_elecbox_10_cr', + [-686494084] = 'prop_elecbox_10', + [1518466392] = 'prop_elecbox_11', + [1756664253] = 'prop_elecbox_12', + [2114960499] = 'prop_elecbox_13', + [-1944495994] = 'prop_elecbox_14', + [1820092997] = 'prop_elecbox_15_cr', + [254402217] = 'prop_elecbox_15', + [493845300] = 'prop_elecbox_16', + [-1001532663] = 'prop_elecbox_17_cr', + [847750500] = 'prop_elecbox_17', + [1086210513] = 'prop_elecbox_18', + [-1008711657] = 'prop_elecbox_19', + [-1372185849] = 'prop_elecbox_20', + [-1610383710] = 'prop_elecbox_21', + [-1046756910] = 'prop_elecbox_22', + [-1284627081] = 'prop_elecbox_23', + [-450918183] = 'prop_elecbox_24', + [-1094431857] = 'prop_elecbox_24b', + [-692524020] = 'prop_elecbox_25', + [1660155592] = 'prop_employee_month_01', + [1427692306] = 'prop_employee_month_02', + [582043502] = 'prop_energy_drink', + [1742634574] = 'prop_engine_hoist', + [-1319764601] = 'prop_entityxf_covered', + [-2045308299] = 'prop_epsilon_door_l', + [-42303174] = 'prop_epsilon_door_r', + [667105809] = 'prop_etricmotor_01', + [361676134] = 'prop_exer_bike_01', + [1853930700] = 'prop_exer_bike_mg', + [-387859854] = 'prop_exercisebike', + [1496262794] = 'prop_f_b_insert_broken', + [-1589821555] = 'prop_f_duster_01_s', + [-2121195449] = 'prop_f_duster_02', + [501823275] = 'prop_fac_machine_02', + [1285415702] = 'prop_face_rag_01', + [393888353] = 'prop_faceoffice_door_l', + [-893114122] = 'prop_faceoffice_door_r', + [569833973] = 'prop_facgate_01', + [-655468553] = 'prop_facgate_01b', + [-1975652018] = 'prop_facgate_02_l', + [-878463029] = 'prop_facgate_02pole', + [437009729] = 'prop_facgate_03_l', + [-970794948] = 'prop_facgate_03_ld_l', + [-1740145570] = 'prop_facgate_03_ld_r', + [450182863] = 'prop_facgate_03_r', + [406528547] = 'prop_facgate_03b_l', + [-1391539216] = 'prop_facgate_03b_r', + [432085890] = 'prop_facgate_03post', + [-742460265] = 'prop_facgate_04_l', + [1107349801] = 'prop_facgate_04_r', + [112336130] = 'prop_facgate_05_r_dam_l1', + [1154123433] = 'prop_facgate_05_r_l1', + [-43433986] = 'prop_facgate_05_r', + [-1368913668] = 'prop_facgate_06_l', + [-1657444801] = 'prop_facgate_06_r', + [-768779561] = 'prop_facgate_07', + [1286535678] = 'prop_facgate_07b', + [-775744691] = 'prop_facgate_08_frame', + [-512634970] = 'prop_facgate_08_ld', + [1054262428] = 'prop_facgate_08_ld2', + [-1483471451] = 'prop_facgate_08', + [44830813] = 'prop_facgate_id1_27', + [-1890824350] = 'prop_fag_packet_01', + [-1837476061] = 'prop_fan_01', + [374464092] = 'prop_fan_palm_01a', + [1785922871] = 'prop_fax_01', + [1598545299] = 'prop_fbi3_coffee_table', + [-433502981] = 'prop_fbibombbin', + [-1848876151] = 'prop_fbibombcupbrd', + [1601487018] = 'prop_fbibombfile', + [-886501662] = 'prop_fbibombplant', + [-335465691] = 'prop_feed_sack_01', + [641607582] = 'prop_feed_sack_02', + [-1576911260] = 'prop_feeder1_cr', + [1563219665] = 'prop_feeder1', + [1145422464] = 'prop_fem_01', + [966503966] = 'prop_fence_log_01', + [-1996501787] = 'prop_fence_log_02', + [-837772196] = 'prop_fernba', + [-532037426] = 'prop_fernbb', + [-2021542625] = 'prop_ferris_car_01_lod1', + [-1975182244] = 'prop_ferris_car_01', + [-483631019] = 'prop_ff_counter_01', + [-1326449699] = 'prop_ff_counter_02', + [-1567006928] = 'prop_ff_counter_03', + [1027524526] = 'prop_ff_noodle_01', + [50451253] = 'prop_ff_noodle_02', + [-1940201823] = 'prop_ff_shelves_01', + [1506123827] = 'prop_ff_sink_01', + [-1527269738] = 'prop_ff_sink_02', + [-70627249] = 'prop_fib_3b_bench', + [-505150482] = 'prop_fib_3b_cover1', + [-262823731] = 'prop_fib_3b_cover2', + [-568951729] = 'prop_fib_3b_cover3', + [-339081347] = 'prop_fib_ashtray_01', + [1409747695] = 'prop_fib_badge', + [775109203] = 'prop_fib_broken_window_2', + [544251598] = 'prop_fib_broken_window_3', + [1596462100] = 'prop_fib_broken_window', + [176137803] = 'prop_fib_clipboard', + [52546966] = 'prop_fib_coffee', + [1019644700] = 'prop_fib_counter', + [1173660835] = 'prop_fib_morg_cnr01', + [712268108] = 'prop_fib_morg_plr01', + [-1936019214] = 'prop_fib_morg_wal01', + [-2044627725] = 'prop_fib_plant_01', + [1942868044] = 'prop_fib_plant_02', + [352272157] = 'prop_fib_skylight_piece', + [1310540658] = 'prop_fib_skylight_plug', + [-133590469] = 'prop_fib_wallfrag01', + [-1689979033] = 'prop_film_cam_01', + [-1185606320] = 'prop_fire_driser_1a', + [-1405158620] = 'prop_fire_driser_1b', + [-680963984] = 'prop_fire_driser_2b', + [-578110513] = 'prop_fire_driser_3b', + [380522805] = 'prop_fire_driser_4a', + [210058467] = 'prop_fire_driser_4b', + [-666581633] = 'prop_fire_exting_1a', + [-1980225301] = 'prop_fire_exting_1b', + [-1610165324] = 'prop_fire_exting_2a', + [-875057463] = 'prop_fire_exting_3a', + [-956123246] = 'prop_fire_hosebox_01', + [-651275771] = 'prop_fire_hosereel_l1', + [-149015768] = 'prop_fire_hosereel', + [200846641] = 'prop_fire_hydrant_1', + [687935120] = 'prop_fire_hydrant_2_l1', + [-97646180] = 'prop_fire_hydrant_2', + [-366155374] = 'prop_fire_hydrant_4', + [241167444] = 'prop_fireescape_01a', + [-631339950] = 'prop_fireescape_01b', + [-360111801] = 'prop_fireescape_02a', + [-1552346328] = 'prop_fireescape_02b', + [-2013814998] = 'prop_fish_slice_01', + [-1910604593] = 'prop_fishing_rod_01', + [1338703913] = 'prop_fishing_rod_02', + [-112762029] = 'prop_flag_canada_s', + [1627828183] = 'prop_flag_canada', + [541248010] = 'prop_flag_eu_s', + [-1296409602] = 'prop_flag_eu', + [-666399476] = 'prop_flag_france_s', + [-1034797968] = 'prop_flag_france', + [1603975478] = 'prop_flag_german_s', + [1970675376] = 'prop_flag_german', + [-1434834004] = 'prop_flag_ireland_s', + [302931829] = 'prop_flag_ireland', + [1155186447] = 'prop_flag_japan_s', + [-178815855] = 'prop_flag_japan', + [-2055846053] = 'prop_flag_ls_s', + [-1493938606] = 'prop_flag_ls', + [-425441205] = 'prop_flag_lsfd_s', + [366178255] = 'prop_flag_lsfd', + [-1734859577] = 'prop_flag_lsservices_s', + [1072290182] = 'prop_flag_lsservices', + [11846651] = 'prop_flag_mexico_s', + [-716201733] = 'prop_flag_mexico', + [-474725660] = 'prop_flag_russia_s', + [-908104950] = 'prop_flag_russia', + [-1730980585] = 'prop_flag_s', + [1793411117] = 'prop_flag_sa_s', + [1374928302] = 'prop_flag_sa', + [-1404481545] = 'prop_flag_sapd_s', + [-2114165809] = 'prop_flag_sapd', + [1357789167] = 'prop_flag_scotland_s', + [-795774545] = 'prop_flag_scotland', + [1382367337] = 'prop_flag_sheriff_s', + [1689290811] = 'prop_flag_sheriff', + [-109750292] = 'prop_flag_uk_s', + [-1051882404] = 'prop_flag_uk', + [1976910263] = 'prop_flag_us_r', + [-2032933964] = 'prop_flag_us_s', + [1117917059] = 'prop_flag_us', + [1487401018] = 'prop_flag_usboat', + [-1207959739] = 'prop_flagpole_1a', + [-686248546] = 'prop_flagpole_2a', + [-992802541] = 'prop_flagpole_2b', + [-225680251] = 'prop_flagpole_2c', + [-755161417] = 'prop_flagpole_3a', + [-1070059960] = 'prop_flamingo', + [-2071229766] = 'prop_flare_01', + [445804908] = 'prop_flare_01b', + [-212318599] = 'prop_flash_unit', + [-1020908409] = 'prop_flatbed_strap_b', + [111820268] = 'prop_flatbed_strap', + [2079702193] = 'prop_flatscreen_overlay', + [649665061] = 'prop_flattrailer_01a', + [531440379] = 'prop_flattruck_01a', + [282166596] = 'prop_flattruck_01b', + [51866064] = 'prop_flattruck_01c', + [-191836989] = 'prop_flattruck_01d', + [506770882] = 'prop_fleeca_atm', + [-589090886] = 'prop_flight_box_01', + [1869935347] = 'prop_flight_box_insert', + [-768970549] = 'prop_flight_box_insert2', + [1822567898] = 'prop_flipchair_01', + [-1509387784] = 'prop_floor_duster_01', + [2027852753] = 'prop_flowerweed_005_a', + [-219706798] = 'prop_fnc_farm_01a', + [93794225] = 'prop_fnc_farm_01b', + [1322893877] = 'prop_fnc_farm_01c', + [-1178167275] = 'prop_fnc_farm_01d', + [-872399736] = 'prop_fnc_farm_01e', + [373936410] = 'prop_fnc_farm_01f', + [710800597] = 'prop_fnc_omesh_01a', + [344241399] = 'prop_fnc_omesh_02a', + [1469496946] = 'prop_fnc_omesh_03a', + [-1210289519] = 'prop_fncbeach_01a', + [-704270621] = 'prop_fncbeach_01b', + [-1640448182] = 'prop_fncbeach_01c', + [-941064660] = 'prop_fncconstruc_01d', + [1660695985] = 'prop_fncconstruc_02a', + [-733651026] = 'prop_fncconstruc_ld', + [360404853] = 'prop_fnccorgm_01a', + [1042000049] = 'prop_fnccorgm_01b', + [-1894591898] = 'prop_fnccorgm_02a', + [-1519583462] = 'prop_fnccorgm_02b', + [1916672189] = 'prop_fnccorgm_02c', + [-940719073] = 'prop_fnccorgm_02d', + [1185366416] = 'prop_fnccorgm_02e', + [1159289407] = 'prop_fnccorgm_02pole', + [2074061472] = 'prop_fnccorgm_03a', + [-1593445012] = 'prop_fnccorgm_03b', + [-1880599759] = 'prop_fnccorgm_03c', + [-94130214] = 'prop_fnccorgm_04a', + [176705571] = 'prop_fnccorgm_04c', + [-37833296] = 'prop_fnccorgm_05a', + [-296347937] = 'prop_fnccorgm_05b', + [1150658405] = 'prop_fnccorgm_06a', + [1386955664] = 'prop_fnccorgm_06b', + [-1851510046] = 'prop_fncglass_01a', + [1821799499] = 'prop_fnclink_01a', + [409652213] = 'prop_fnclink_01b', + [-928338834] = 'prop_fnclink_01c', + [-208600510] = 'prop_fnclink_01d', + [637724453] = 'prop_fnclink_01e', + [-475536788] = 'prop_fnclink_01f', + [526006615] = 'prop_fnclink_01gate1', + [-856050416] = 'prop_fnclink_01h', + [-2007760198] = 'prop_fnclink_02a_sdt', + [2012223962] = 'prop_fnclink_02a', + [-1591940045] = 'prop_fnclink_02b', + [-1767254195] = 'prop_fnclink_02c', + [1035773304] = 'prop_fnclink_02d', + [796035300] = 'prop_fnclink_02e', + [1481857697] = 'prop_fnclink_02f', + [1242349076] = 'prop_fnclink_02g', + [1843657781] = 'prop_fnclink_02gate1', + [1046551856] = 'prop_fnclink_02gate2', + [1278261455] = 'prop_fnclink_02gate3', + [436622459] = 'prop_fnclink_02gate4', + [733542368] = 'prop_fnclink_02gate5', + [1526539404] = 'prop_fnclink_02gate6_l', + [227019171] = 'prop_fnclink_02gate6_r', + [-138702874] = 'prop_fnclink_02gate6', + [91564889] = 'prop_fnclink_02gate7', + [-186182710] = 'prop_fnclink_02h', + [1722447695] = 'prop_fnclink_02i', + [254920799] = 'prop_fnclink_02j', + [81703865] = 'prop_fnclink_02k', + [-1414692524] = 'prop_fnclink_02l', + [493020353] = 'prop_fnclink_02m', + [1833567378] = 'prop_fnclink_02n', + [-552277978] = 'prop_fnclink_02o', + [-1439105425] = 'prop_fnclink_02p', + [-759902142] = 'prop_fnclink_03a', + [-1900591032] = 'prop_fnclink_03b', + [-1591284441] = 'prop_fnclink_03c', + [729940451] = 'prop_fnclink_03d', + [1001693768] = 'prop_fnclink_03e', + [874386199] = 'prop_fnclink_03f', + [1181661112] = 'prop_fnclink_03g', + [-1234764774] = 'prop_fnclink_03gate1', + [-250842784] = 'prop_fnclink_03gate2', + [-446014948] = 'prop_fnclink_03gate3', + [-875157772] = 'prop_fnclink_03gate4', + [-1156020871] = 'prop_fnclink_03gate5', + [-21288878] = 'prop_fnclink_03h', + [1357335721] = 'prop_fnclink_03i', + [266061667] = 'prop_fnclink_04a', + [1543004059] = 'prop_fnclink_04b', + [1764620806] = 'prop_fnclink_04c', + [928814692] = 'prop_fnclink_04d', + [1186411801] = 'prop_fnclink_04e', + [790529524] = 'prop_fnclink_04f', + [1020862825] = 'prop_fnclink_04g', + [-1218968680] = 'prop_fnclink_04gate1', + [1804939234] = 'prop_fnclink_04h_l2', + [-1952203011] = 'prop_fnclink_04h', + [-448728522] = 'prop_fnclink_04j', + [2079727522] = 'prop_fnclink_04k', + [-1043649717] = 'prop_fnclink_04l', + [-796079922] = 'prop_fnclink_04m', + [-1985397776] = 'prop_fnclink_05a', + [1102326779] = 'prop_fnclink_05b', + [-1491536177] = 'prop_fnclink_05c', + [206865238] = 'prop_fnclink_05crnr1', + [1560863396] = 'prop_fnclink_05d', + [304918404] = 'prop_fnclink_05pole', + [-1393524934] = 'prop_fnclink_06a', + [-837500542] = 'prop_fnclink_06b', + [2122752615] = 'prop_fnclink_06c', + [-1314912103] = 'prop_fnclink_06d', + [-419676332] = 'prop_fnclink_06gate2', + [-768731720] = 'prop_fnclink_06gate3', + [-1555641785] = 'prop_fnclink_06gatepost', + [1620465091] = 'prop_fnclink_07a', + [1031606161] = 'prop_fnclink_07b', + [1187258911] = 'prop_fnclink_07c', + [-1744550758] = 'prop_fnclink_07d', + [1127922797] = 'prop_fnclink_07gate1', + [1846022663] = 'prop_fnclink_07gate2', + [-1615465118] = 'prop_fnclink_07gate3', + [1322200853] = 'prop_fnclink_08b', + [1904768135] = 'prop_fnclink_08c', + [-148960916] = 'prop_fnclink_08post', + [1411103374] = 'prop_fnclink_09a', + [1130240275] = 'prop_fnclink_09b', + [-216200273] = 'prop_fnclink_09crnr1', + [-2025053974] = 'prop_fnclink_09d', + [2122387284] = 'prop_fnclink_09e', + [351792706] = 'prop_fnclink_09frame', + [1817008884] = 'prop_fnclink_09gate1', + [-313656158] = 'prop_fnclink_10a', + [-1754771240] = 'prop_fnclink_10b', + [-911526563] = 'prop_fnclink_10c', + [1819728343] = 'prop_fnclink_10d_ld', + [1976339873] = 'prop_fnclink_10d', + [-1509528044] = 'prop_fnclink_10e', + [-1141167399] = 'prop_fnclog_01a', + [-1444411725] = 'prop_fnclog_01b', + [237424435] = 'prop_fnclog_01c', + [-1325788233] = 'prop_fnclog_02a', + [-1095553239] = 'prop_fnclog_02b', + [994927545] = 'prop_fnclog_03a', + [-352585176] = 'prop_fncpeir_03a', + [-519102073] = 'prop_fncply_01a', + [-226179982] = 'prop_fncply_01b', + [311268833] = 'prop_fncply_01gate', + [1135099165] = 'prop_fncply_01post', + [1172914654] = 'prop_fncres_01a', + [931439893] = 'prop_fncres_01b', + [41630463] = 'prop_fncres_01c', + [-1489109258] = 'prop_fncres_02_gate1', + [1984962971] = 'prop_fncres_02a', + [1736803334] = 'prop_fncres_02b', + [-369653524] = 'prop_fncres_02c', + [453929753] = 'prop_fncres_02d', + [58931935] = 'prop_fncres_03a', + [-759735992] = 'prop_fncres_03b', + [-453116459] = 'prop_fncres_03c', + [1006450599] = 'prop_fncres_03gate1', + [955919780] = 'prop_fncres_04a', + [583270712] = 'prop_fncres_04b', + [-73256531] = 'prop_fncres_05a', + [1272140286] = 'prop_fncres_05b', + [1411643001] = 'prop_fncres_05c_l1', + [519370834] = 'prop_fncres_05c', + [-531924460] = 'prop_fncres_06a', + [1730774994] = 'prop_fncres_06b', + [1543721754] = 'prop_fncres_06gatel', + [-1258814178] = 'prop_fncres_06gater', + [1113832743] = 'prop_fncres_07a', + [1351637376] = 'prop_fncres_07b', + [950819638] = 'prop_fncres_07gate', + [-659178840] = 'prop_fncres_08a', + [1875234307] = 'prop_fncres_08gatel', + [355284102] = 'prop_fncres_09a', + [62686511] = 'prop_fncres_09gate', + [1405325415] = 'prop_fncsec_01a', + [-958269790] = 'prop_fncsec_01b', + [982664653] = 'prop_fncsec_01crnr', + [-1442782001] = 'prop_fncsec_01gate', + [-1145238320] = 'prop_fncsec_01pole', + [1423774102] = 'prop_fncsec_02a', + [2004077130] = 'prop_fncsec_02pole', + [-288824422] = 'prop_fncsec_03a', + [-1669382392] = 'prop_fncsec_03b', + [1153503113] = 'prop_fncsec_03c', + [1385605940] = 'prop_fncsec_03d', + [-1113128273] = 'prop_fncsec_04a', + [1977269893] = 'prop_fncwood_01_ld', + [1614306905] = 'prop_fncwood_01a', + [1912373737] = 'prop_fncwood_01b', + [-1547278980] = 'prop_fncwood_01c', + [-1965126495] = 'prop_fncwood_01gate', + [494529585] = 'prop_fncwood_02b', + [174737202] = 'prop_fncwood_03a', + [45854657] = 'prop_fncwood_04a', + [-1266608755] = 'prop_fncwood_06a', + [119454419] = 'prop_fncwood_06b', + [-670704490] = 'prop_fncwood_06c', + [310596348] = 'prop_fncwood_07a', + [-916632445] = 'prop_fncwood_07gate1', + [545913053] = 'prop_fncwood_08a', + [-365360068] = 'prop_fncwood_08b', + [-51629662] = 'prop_fncwood_08c', + [1265028758] = 'prop_fncwood_08d', + [1560179421] = 'prop_fncwood_09a', + [397076535] = 'prop_fncwood_09b', + [158026680] = 'prop_fncwood_09c', + [-150919444] = 'prop_fncwood_09d', + [-100540097] = 'prop_fncwood_10b', + [1305807072] = 'prop_fncwood_10d', + [-440387398] = 'prop_fncwood_11a_l1', + [-958252923] = 'prop_fncwood_11a', + [-21026390] = 'prop_fncwood_12a', + [-1769679457] = 'prop_fncwood_13c', + [321245018] = 'prop_fncwood_14a', + [20786057] = 'prop_fncwood_14b', + [-253064476] = 'prop_fncwood_14c', + [1594648354] = 'prop_fncwood_14d', + [1512136012] = 'prop_fncwood_14e', + [-1805953701] = 'prop_fncwood_15a', + [-1029492242] = 'prop_fncwood_15b', + [-1212802028] = 'prop_fncwood_15c', + [-997805143] = 'prop_fncwood_16a', + [-1243802026] = 'prop_fncwood_16b', + [-964053093] = 'prop_fncwood_16c', + [-551294769] = 'prop_fncwood_16d', + [-790803390] = 'prop_fncwood_16e', + [2074059204] = 'prop_fncwood_16f', + [1805779401] = 'prop_fncwood_16g', + [-1140513222] = 'prop_fncwood_17b', + [-1357771692] = 'prop_fncwood_17c', + [-1200153162] = 'prop_fncwood_18a', + [2028813471] = 'prop_fncwood_19_end', + [-1418426619] = 'prop_fncwood_19a', + [1937946092] = 'prop_folded_polo_shirt', + [-1066172296] = 'prop_folder_01', + [-711873868] = 'prop_folder_02', + [936464539] = 'prop_food_bag1', + [1463127915] = 'prop_food_bag2', + [-246439655] = 'prop_food_bin_01', + [74073934] = 'prop_food_bin_02', + [-1922399062] = 'prop_food_bs_bag_01', + [-1690230697] = 'prop_food_bs_bag_02', + [-2089652038] = 'prop_food_bs_bag_03', + [301501900] = 'prop_food_bs_bag_04', + [-660240499] = 'prop_food_bs_bshelf', + [2103979129] = 'prop_food_bs_burg1', + [759729215] = 'prop_food_bs_burg3', + [987331897] = 'prop_food_bs_burger2', + [1443311452] = 'prop_food_bs_chips', + [128394026] = 'prop_food_bs_coffee', + [69797947] = 'prop_food_bs_cups01', + [360098518] = 'prop_food_bs_cups02', + [666652513] = 'prop_food_bs_cups03', + [2127253708] = 'prop_food_bs_juice01', + [438929182] = 'prop_food_bs_juice02', + [735816322] = 'prop_food_bs_juice03', + [-164904344] = 'prop_food_bs_soda_01', + [-358765748] = 'prop_food_bs_soda_02', + [510552540] = 'prop_food_bs_tray_01', + [-2040350273] = 'prop_food_bs_tray_02', + [2014649636] = 'prop_food_bs_tray_03', + [-1832103274] = 'prop_food_bs_tray_06', + [880981550] = 'prop_food_burg1', + [-624196927] = 'prop_food_burg2', + [420216641] = 'prop_food_burg3', + [193377723] = 'prop_food_cb_bag_01', + [1447185213] = 'prop_food_cb_bag_02', + [-208361166] = 'prop_food_cb_bshelf', + [421881790] = 'prop_food_cb_burg01', + [308173360] = 'prop_food_cb_burg02', + [2029023424] = 'prop_food_cb_chips', + [-593980191] = 'prop_food_cb_coffee', + [-768271918] = 'prop_food_cb_cups01', + [-1621314530] = 'prop_food_cb_cups02', + [-1517371262] = 'prop_food_cb_cups04', + [-1916043210] = 'prop_food_cb_donuts', + [-656006459] = 'prop_food_cb_juice01', + [-163947155] = 'prop_food_cb_juice02', + [-2092475251] = 'prop_food_cb_nugets', + [-912034344] = 'prop_food_cb_soda_01', + [-1763798961] = 'prop_food_cb_soda_02', + [141145745] = 'prop_food_cb_tray_01', + [1388727113] = 'prop_food_cb_tray_02', + [754220966] = 'prop_food_cb_tray_03', + [-521383735] = 'prop_food_chips', + [-1306484245] = 'prop_food_coffee', + [1530773952] = 'prop_food_cups1', + [2006710908] = 'prop_food_cups2', + [1407151828] = 'prop_food_juice01', + [-510326207] = 'prop_food_juice02', + [1777646892] = 'prop_food_ketchup', + [1453189379] = 'prop_food_mustard', + [-1317924709] = 'prop_food_napkin_01', + [-391348465] = 'prop_food_napkin_02', + [-22826474] = 'prop_food_sugarjar', + [-446181301] = 'prop_food_tray_01', + [-1455204349] = 'prop_food_tray_02', + [-1344051901] = 'prop_food_tray_03', + [-272361894] = 'prop_food_van_01', + [1257426102] = 'prop_food_van_02', + [-1415058956] = 'prop_foodprocess_01', + [1193854962] = 'prop_forsale_dyn_01', + [292248696] = 'prop_forsale_dyn_02', + [1916908483] = 'prop_forsale_lenny_01', + [1756612226] = 'prop_forsale_lrg_01', + [2063723294] = 'prop_forsale_lrg_02', + [1295978393] = 'prop_forsale_lrg_03', + [1517333028] = 'prop_forsale_lrg_04', + [1278610863] = 'prop_forsale_lrg_05', + [1979474235] = 'prop_forsale_lrg_06', + [1740162228] = 'prop_forsale_lrg_07', + [394699857] = 'prop_forsale_lrg_08', + [356949969] = 'prop_forsale_lrg_09', + [348364163] = 'prop_forsale_lrg_10', + [626610300] = 'prop_forsale_sign_01', + [-678415125] = 'prop_forsale_sign_02', + [44927781] = 'prop_forsale_sign_03', + [889089990] = 'prop_forsale_sign_04', + [1581302346] = 'prop_forsale_sign_05', + [276407997] = 'prop_forsale_sign_06', + [-1561146455] = 'prop_forsale_sign_07', + [-1054037867] = 'prop_forsale_sign_fs', + [1627083076] = 'prop_forsale_sign_jb', + [-420425946] = 'prop_forsale_tri_01', + [2013260172] = 'prop_forsalejr1', + [133695870] = 'prop_forsalejr2', + [1542041952] = 'prop_forsalejr3', + [1847940567] = 'prop_forsalejr4', + [-1146344215] = 'prop_foundation_sponge', + [-2049104282] = 'prop_fountain1', + [-736410911] = 'prop_fountain2', + [500451298] = 'prop_fragtest_cnst_01', + [-163907412] = 'prop_fragtest_cnst_02', + [-939910101] = 'prop_fragtest_cnst_03', + [310817095] = 'prop_fragtest_cnst_04', + [-459352716] = 'prop_fragtest_cnst_05', + [2054127895] = 'prop_fragtest_cnst_06', + [-1014310545] = 'prop_fragtest_cnst_06b', + [-1892636007] = 'prop_fragtest_cnst_07', + [-655507950] = 'prop_fragtest_cnst_08', + [-1263978120] = 'prop_fragtest_cnst_08b', + [891468385] = 'prop_fragtest_cnst_08c', + [-1383667899] = 'prop_fragtest_cnst_09', + [-552825026] = 'prop_fragtest_cnst_09b', + [143302823] = 'prop_fragtest_cnst_10', + [-104070358] = 'prop_fragtest_cnst_11', + [251142457] = 'prop_franklin_dl', + [-540000270] = 'prop_freeweight_01', + [-309142665] = 'prop_freeweight_02', + [-41273338] = 'prop_fridge_01', + [1876827312] = 'prop_fridge_03', + [1970182901] = 'prop_front_seat_01', + [-2035794584] = 'prop_front_seat_02', + [-1713871928] = 'prop_front_seat_03', + [-1423243667] = 'prop_front_seat_04', + [764611387] = 'prop_front_seat_05', + [1070641078] = 'prop_front_seat_06', + [1376179234] = 'prop_front_seat_07', + [960293494] = 'prop_front_seat_row_01', + [-1204812477] = 'prop_fruit_basket', + [-1673688289] = 'prop_fruit_plas_crate_01', + [-2007742866] = 'prop_fruit_sign_01', + [-1381786722] = 'prop_fruit_stand_01', + [-1016215758] = 'prop_fruit_stand_02', + [-689705442] = 'prop_fruit_stand_03', + [-1655478122] = 'prop_fruitstand_01', + [-2133104859] = 'prop_fruitstand_b_nite', + [858993389] = 'prop_fruitstand_b', + [1136462066] = 'prop_ftowel_01', + [-388312273] = 'prop_ftowel_07', + [-1153697806] = 'prop_ftowel_08', + [797243150] = 'prop_ftowel_10', + [1488589320] = 'prop_funfair_zoltan', + [393296697] = 'prop_gaffer_arm_bind_cut', + [2084404420] = 'prop_gaffer_arm_bind', + [465122537] = 'prop_gaffer_leg_bind_cut', + [-618339469] = 'prop_gaffer_leg_bind', + [419222340] = 'prop_gaffer_tape_strip', + [-1179532563] = 'prop_gaffer_tape', + [-1004588353] = 'prop_game_clock_01', + [-349306656] = 'prop_game_clock_02', + [-1652821467] = 'prop_gar_door_01', + [1013329911] = 'prop_gar_door_02', + [-1223237597] = 'prop_gar_door_03_ld', + [-1212275031] = 'prop_gar_door_03', + [-982531572] = 'prop_gar_door_04', + [-910962270] = 'prop_gar_door_05_l', + [1946625558] = 'prop_gar_door_05_r', + [-728539053] = 'prop_gar_door_05', + [2051508718] = 'prop_gar_door_a_01', + [239492112] = 'prop_gar_door_plug', + [1181558204] = 'prop_garden_chimes_01', + [1929765107] = 'prop_garden_dreamcatch_01', + [-1405103747] = 'prop_garden_edging_01', + [1874876539] = 'prop_garden_edging_02', + [-1831680671] = 'prop_garden_zapper_01', + [2004141829] = 'prop_gardnght_01', + [-1730917948] = 'prop_gas_01', + [-478519537] = 'prop_gas_02', + [1973650275] = 'prop_gas_03', + [1304671132] = 'prop_gas_04', + [1602967339] = 'prop_gas_05', + [-132092731] = 'prop_gas_airunit01', + [-1472203944] = 'prop_gas_binunit01', + [-1936212109] = 'prop_gas_grenade', + [-2025105036] = 'prop_gas_mask_hang_01', + [1470731681] = 'prop_gas_mask_hang_01bb', + [1339433404] = 'prop_gas_pump_1a', + [1694452750] = 'prop_gas_pump_1b', + [1933174915] = 'prop_gas_pump_1c', + [-2007231801] = 'prop_gas_pump_1d', + [-469694731] = 'prop_gas_pump_old2', + [-164877493] = 'prop_gas_pump_old3', + [310783660] = 'prop_gas_rack01', + [865150065] = 'prop_gas_smallbin01', + [-2129526670] = 'prop_gas_tank_01a', + [-46303329] = 'prop_gas_tank_02a', + [-353447166] = 'prop_gas_tank_02b', + [-9837968] = 'prop_gas_tank_04a', + [-1348598835] = 'prop_gascage01', + [1270590574] = 'prop_gascyl_01a', + [2138646444] = 'prop_gascyl_02a', + [-672016228] = 'prop_gascyl_02b', + [-1918614878] = 'prop_gascyl_03a', + [1257553220] = 'prop_gascyl_03b', + [-1029296059] = 'prop_gascyl_04a', + [1962660298] = 'prop_gascyl_ramp_01', + [920306374] = 'prop_gascyl_ramp_door_01', + [725274945] = 'prop_gate_airport_01', + [-1934898817] = 'prop_gate_bridge_ld', + [-13153749] = 'prop_gate_cult_01_l', + [-1578791031] = 'prop_gate_cult_01_r', + [1286392437] = 'prop_gate_docks_ld', + [1911284463] = 'prop_gate_farm_01a', + [1733865899] = 'prop_gate_farm_03', + [-696575513] = 'prop_gate_farm_post', + [-588124891] = 'prop_gate_frame_01', + [-885831256] = 'prop_gate_frame_02', + [-1692014194] = 'prop_gate_frame_04', + [-1050528246] = 'prop_gate_frame_05', + [-1348431225] = 'prop_gate_frame_06', + [1185512375] = 'prop_gate_military_01', + [741314661] = 'prop_gate_prison_01', + [-1049302886] = 'prop_gate_tep_01_l', + [1653418708] = 'prop_gate_tep_01_r', + [613608955] = 'prop_gatecom_01', + [-238286738] = 'prop_gatecom_02', + [1845903456] = 'prop_gazebo_01', + [468818960] = 'prop_gazebo_02', + [1186722212] = 'prop_gazebo_03', + [558578166] = 'prop_gc_chair02', + [-915091986] = 'prop_gd_ch2_08', + [-415509317] = 'prop_generator_01a', + [-1775229459] = 'prop_generator_02a', + [136645433] = 'prop_generator_03a', + [-57215983] = 'prop_generator_03b', + [-1001828301] = 'prop_generator_04', + [1433530172] = 'prop_ghettoblast_01', + [1060029110] = 'prop_ghettoblast_02', + [2096990081] = 'prop_girder_01a', + [1723816705] = 'prop_girder_01b', + [209943352] = 'prop_glass_panel_01', + [-636152228] = 'prop_glass_panel_02', + [-439931456] = 'prop_glass_panel_03', + [-1282324139] = 'prop_glass_panel_04', + [825312403] = 'prop_glass_panel_05', + [1064231182] = 'prop_glass_panel_06', + [781107022] = 'prop_glass_panel_07', + [677473294] = 'prop_glass_stack_01', + [-2065226472] = 'prop_glass_stack_02', + [-542975346] = 'prop_glass_stack_03', + [-242975151] = 'prop_glass_stack_04', + [-1136258091] = 'prop_glass_stack_05', + [1004245762] = 'prop_glass_stack_06', + [1311389599] = 'prop_glass_stack_07', + [-1466766225] = 'prop_glass_stack_08', + [1923645595] = 'prop_glass_stack_09', + [-1842692417] = 'prop_glass_stack_10', + [-279982155] = 'prop_glass_suck_holder', + [1731206726] = 'prop_glasscutter_01', + [-2012285464] = 'prop_glf_roller', + [884216853] = 'prop_glf_spreader', + [809669486] = 'prop_gnome1', + [1301925404] = 'prop_gnome2', + [-11849332] = 'prop_gnome3', + [-475521732] = 'prop_goal_posts_01', + [-263787977] = 'prop_gold_bar', + [959275690] = 'prop_gold_cont_01', + [1396140175] = 'prop_gold_cont_01b', + [-1363719163] = 'prop_gold_trolly_full', + [1098812088] = 'prop_gold_trolly_strap_01', + [-1326042488] = 'prop_gold_trolly', + [-463637955] = 'prop_gold_vault_fence_l', + [1450792563] = 'prop_gold_vault_fence_r', + [-275220570] = 'prop_gold_vault_gate_01', + [886428669] = 'prop_golf_bag_01', + [-344128923] = 'prop_golf_bag_01b', + [-37837080] = 'prop_golf_bag_01c', + [1616526761] = 'prop_golf_ball_p2', + [-717871261] = 'prop_golf_ball_p3', + [-980219875] = 'prop_golf_ball_p4', + [-1243214768] = 'prop_golf_ball_tee', + [-1358020705] = 'prop_golf_ball', + [-2141023172] = 'prop_golf_driver', + [334347537] = 'prop_golf_iron_01', + [-1124612472] = 'prop_golf_marker_01', + [1933637837] = 'prop_golf_pitcher_01', + [1750479612] = 'prop_golf_putter_01', + [-1315457772] = 'prop_golf_tee', + [1705580940] = 'prop_golf_wood_01', + [-1939813147] = 'prop_golfflag', + [1487505949] = 'prop_grain_hopper', + [1104521776] = 'prop_grapes_01', + [753041482] = 'prop_grapes_02', + [1590120139] = 'prop_grapeseed_sign_01', + [-2130406583] = 'prop_grapeseed_sign_02', + [-440885967] = 'prop_grass_001_a', + [1481697203] = 'prop_grass_ca', + [1793920587] = 'prop_grass_da', + [987584502] = 'prop_grass_dry_02', + [1221915621] = 'prop_grass_dry_03', + [-547750016] = 'prop_gravestones_01a', + [1735136050] = 'prop_gravestones_02a', + [1996337525] = 'prop_gravestones_03a', + [-1734058762] = 'prop_gravestones_04a', + [-1551797828] = 'prop_gravestones_05a', + [106473525] = 'prop_gravestones_06a', + [828538216] = 'prop_gravestones_07a', + [-1217653243] = 'prop_gravestones_08a', + [-1117413116] = 'prop_gravestones_09a', + [806109679] = 'prop_gravestones_10a', + [1801452061] = 'prop_gravetomb_01a', + [879398291] = 'prop_gravetomb_02a', + [2050228397] = 'prop_griddle_01', + [-1876087649] = 'prop_griddle_02', + [1888438146] = 'prop_grumandoor_l', + [272205552] = 'prop_grumandoor_r', + [-1567395276] = 'prop_gshotsensor_01', + [454331217] = 'prop_guard_tower_glass', + [1243022785] = 'prop_gumball_01', + [462203053] = 'prop_gumball_02', + [785076010] = 'prop_gumball_03', + [-1821585180] = 'prop_gun_case_01', + [-1590104964] = 'prop_gun_case_02', + [132273106] = 'prop_gun_frame', + [-177773532] = 'prop_hacky_sack_01', + [2133050471] = 'prop_hand_toilet', + [1022326434] = 'prop_handdry_01', + [792353592] = 'prop_handdry_02', + [-447055518] = 'prop_handrake', + [1011723317] = 'prop_handtowels', + [-1992828732] = 'prop_hanger_door_1', + [-537490919] = 'prop_hard_hat_01', + [1841479543] = 'prop_hat_box_01', + [1064067787] = 'prop_hat_box_02', + [-2022214944] = 'prop_hat_box_03', + [1497011815] = 'prop_hat_box_04', + [-1563678327] = 'prop_hat_box_05', + [1955876122] = 'prop_hat_box_06', + [1731900299] = 'prop_hayb_st_01_cr', + [-213622973] = 'prop_haybailer_01', + [533342826] = 'prop_haybale_01', + [1700312454] = 'prop_haybale_02', + [1395331371] = 'prop_haybale_03', + [1976202024] = 'prop_haybale_stack_01', + [173430006] = 'prop_hd_seats_01', + [960152042] = 'prop_headphones_01', + [-409048857] = 'prop_headset_01', + [1632396221] = 'prop_hedge_trimmer_01', + [-505101878] = 'prop_helipad_01', + [1487220553] = 'prop_helipad_02', + [659046336] = 'prop_henna_disp_01', + [-1568983512] = 'prop_henna_disp_02', + [-1865248041] = 'prop_henna_disp_03', + [-1380152605] = 'prop_hifi_01', + [1866775124] = 'prop_highway_paddle', + [1019962318] = 'prop_hobo_seat_01', + [690464963] = 'prop_hobo_stove_01', + [1517156714] = 'prop_hockey_bag_01', + [-1735747416] = 'prop_hole_plug_01', + [-1169577885] = 'prop_holster_01', + [1578055800] = 'prop_homeles_shelter_01', + [884467146] = 'prop_homeles_shelter_02', + [810220961] = 'prop_homeless_matress_01', + [-242909161] = 'prop_homeless_matress_02', + [309119026] = 'prop_horo_box_01', + [624061885] = 'prop_horo_box_02', + [-23080404] = 'prop_hose_1', + [-1306773210] = 'prop_hose_2', + [862960591] = 'prop_hose_3', + [329068831] = 'prop_hose_nozzle', + [711901167] = 'prop_hospital_door_l', + [-227061755] = 'prop_hospital_door_r', + [1316648054] = 'prop_hospitaldoors_start', + [926831074] = 'prop_hot_tub_coverd', + [-1581502570] = 'prop_hotdogstand_01', + [495599970] = 'prop_hotel_clock_01', + [-1793698597] = 'prop_hotel_trolley', + [2142042627] = 'prop_hottub2', + [-85281267] = 'prop_huf_rag_01', + [-984871726] = 'prop_huge_display_01', + [-752703361] = 'prop_huge_display_02', + [451150746] = 'prop_hunterhide', + [1991494706] = 'prop_hw1_03_gardoor_01', + [-1463743939] = 'prop_hw1_04_door_l1', + [-1429437264] = 'prop_hw1_04_door_r1', + [-1677789234] = 'prop_hw1_23_door', + [-539645279] = 'prop_hwbowl_pseat_6x1', + [1726530640] = 'prop_hwbowl_seat_01', + [1438851589] = 'prop_hwbowl_seat_02', + [1269566935] = 'prop_hwbowl_seat_03', + [189672896] = 'prop_hwbowl_seat_03b', + [870777956] = 'prop_hwbowl_seat_6x6', + [105539200] = 'prop_hydro_platform_01', + [686266275] = 'prop_ice_box_01_l1', + [923172859] = 'prop_ice_box_01', + [-536963642] = 'prop_ice_cube_01', + [1253272370] = 'prop_ice_cube_02', + [962709647] = 'prop_ice_cube_03', + [889818406] = 'prop_id_21_gardoor_01', + [2120130511] = 'prop_id_21_gardoor_02', + [270330101] = 'prop_id2_11_gdoor', + [1336644224] = 'prop_id2_20_clock', + [-1016291832] = 'prop_idol_01_error', + [1972583435] = 'prop_idol_01', + [319657375] = 'prop_idol_case_01', + [-36934887] = 'prop_idol_case_02', + [-128067231] = 'prop_idol_case', + [430616003] = 'prop_in_tray_01', + [487569140] = 'prop_ind_barge_01_cr', + [-993863934] = 'prop_ind_barge_01', + [-678364002] = 'prop_ind_barge_02', + [-1912798749] = 'prop_ind_coalcar_01', + [-1630952580] = 'prop_ind_coalcar_02', + [206536334] = 'prop_ind_coalcar_03', + [-1604772893] = 'prop_ind_conveyor_01', + [-1383057839] = 'prop_ind_conveyor_02', + [2107037279] = 'prop_ind_conveyor_04', + [-84563444] = 'prop_ind_crusher', + [1519880608] = 'prop_ind_deiseltank', + [1777231328] = 'prop_ind_light_01a', + [-303862328] = 'prop_ind_light_01b', + [-539274824] = 'prop_ind_light_01c', + [273101167] = 'prop_ind_light_02a', + [-805588751] = 'prop_ind_light_02b', + [-306910109] = 'prop_ind_light_02c', + [1393636838] = 'prop_ind_light_03a', + [-753093121] = 'prop_ind_light_03b', + [-1059778192] = 'prop_ind_light_03c', + [-1401479836] = 'prop_ind_light_04', + [-1161709063] = 'prop_ind_light_05', + [-456055176] = 'prop_ind_mech_01c', + [1776894270] = 'prop_ind_mech_02a', + [2142465234] = 'prop_ind_mech_02b', + [1960859144] = 'prop_ind_mech_03a', + [1800683984] = 'prop_ind_mech_04a', + [-899728244] = 'prop_ind_oldcrane', + [-1047752402] = 'prop_ind_pipe_01', + [905405774] = 'prop_ind_washer_02', + [838685283] = 'prop_indus_meet_door_l', + [-1020431159] = 'prop_indus_meet_door_r', + [-1750759319] = 'prop_inflatearch_01', + [350476011] = 'prop_inflategate_01', + [-1286783315] = 'prop_ing_camera_01', + [495450405] = 'prop_ing_crowbar', + [538293533] = 'prop_inhaler_01', + [-2137905671] = 'prop_inout_tray_01', + [-601924246] = 'prop_inout_tray_02', + [334531408] = 'prop_int_cf_chick_01', + [-931728298] = 'prop_int_cf_chick_02', + [-1205447755] = 'prop_int_cf_chick_03', + [1856037649] = 'prop_int_gate01', + [1754291799] = 'prop_irish_sign_01', + [1772380287] = 'prop_irish_sign_02', + [1005159690] = 'prop_irish_sign_03', + [1293363045] = 'prop_irish_sign_04', + [534039777] = 'prop_irish_sign_05', + [202089803] = 'prop_irish_sign_06', + [-555267329] = 'prop_irish_sign_07', + [-275256224] = 'prop_irish_sign_08', + [-765939230] = 'prop_irish_sign_09', + [59737791] = 'prop_irish_sign_10', + [-325625649] = 'prop_irish_sign_11', + [-565396422] = 'prop_irish_sign_12', + [-907308168] = 'prop_irish_sign_13', + [-249304586] = 'prop_iron_01', + [-317499403] = 'prop_j_disptray_01_dam', + [854404762] = 'prop_j_disptray_01', + [1373326460] = 'prop_j_disptray_01b', + [817210985] = 'prop_j_disptray_02_dam', + [-1345673133] = 'prop_j_disptray_02', + [2116459863] = 'prop_j_disptray_03_dam', + [375485823] = 'prop_j_disptray_03', + [120772386] = 'prop_j_disptray_04', + [-934392140] = 'prop_j_disptray_04b', + [-176933979] = 'prop_j_disptray_05', + [-1833835356] = 'prop_j_disptray_05b', + [1451839726] = 'prop_j_heist_pic_01', + [-1112072400] = 'prop_j_heist_pic_02', + [-396266364] = 'prop_j_heist_pic_03', + [-650848725] = 'prop_j_heist_pic_04', + [119825807] = 'prop_j_neck_disp_01', + [-74035597] = 'prop_j_neck_disp_02', + [-359093128] = 'prop_j_neck_disp_03', + [1928679056] = 'prop_jb700_covered', + [517117079] = 'prop_jeans_01', + [786272259] = 'prop_jerrycan_01a', + [-1281648158] = 'prop_jet_bloodsplat_01', + [-1081534242] = 'prop_jetski_ramp_01', + [1083683517] = 'prop_jetski_trailer_01', + [-46504303] = 'prop_jewel_02a', + [-352927222] = 'prop_jewel_02b', + [-569858002] = 'prop_jewel_02c', + [-1407761612] = 'prop_jewel_03a', + [-908427590] = 'prop_jewel_03b', + [-1386034965] = 'prop_jewel_04a', + [-1147673259] = 'prop_jewel_04b', + [-304401110] = 'prop_jewel_glass_root', + [1982992541] = 'prop_jewel_glass', + [-2052363316] = 'prop_jewel_pickup_new_01', + [1052756483] = 'prop_joshua_tree_01a', + [-2010456872] = 'prop_joshua_tree_01b', + [-1838026394] = 'prop_joshua_tree_01c', + [727229237] = 'prop_joshua_tree_01d', + [99244117] = 'prop_joshua_tree_01e', + [337638300] = 'prop_joshua_tree_02a', + [-1060680468] = 'prop_joshua_tree_02b', + [1863264633] = 'prop_joshua_tree_02c', + [-1659075177] = 'prop_joshua_tree_02d', + [-848665038] = 'prop_joshua_tree_02e', + [-1369928609] = 'prop_juice_dispenser', + [-369673841] = 'prop_juice_pool_01', + [148511758] = 'prop_juicestand', + [1049684170] = 'prop_jukebox_01', + [1945457558] = 'prop_jukebox_02', + [-560584347] = 'prop_jyard_block_01a', + [-507412625] = 'prop_kayak_01', + [-1671588654] = 'prop_kayak_01b', + [354187183] = 'prop_kebab_grill', + [1265521483] = 'prop_keg_01', + [1862437453] = 'prop_kettle_01', + [1173831889] = 'prop_kettle', + [-954257764] = 'prop_keyboard_01a', + [-69396461] = 'prop_keyboard_01b', + [-1666213193] = 'prop_kino_light_01', + [1792816905] = 'prop_kino_light_02', + [2035667964] = 'prop_kino_light_03', + [1859812803] = 'prop_kitch_juicer', + [260566774] = 'prop_kitch_pot_fry', + [-1030226139] = 'prop_kitch_pot_huge', + [-920794651] = 'prop_kitch_pot_lrg', + [-1591250544] = 'prop_kitch_pot_lrg2', + [-854388316] = 'prop_kitch_pot_med', + [-718917135] = 'prop_kitch_pot_sm', + [-729631922] = 'prop_knife_stand', + [436978267] = 'prop_knife', + [-1447681559] = 'prop_kt1_06_door_l', + [1543931499] = 'prop_kt1_06_door_r', + [1701450624] = 'prop_kt1_10_mpdoor_l', + [340291898] = 'prop_kt1_10_mpdoor_r', + [483841708] = 'prop_ladel', + [1385417869] = 'prop_laptop_01a', + [-1159050800] = 'prop_laptop_02_closed', + [363555755] = 'prop_laptop_jimmy', + [881450200] = 'prop_laptop_lester', + [-1769322543] = 'prop_laptop_lester2', + [-1802035584] = 'prop_large_gold_alt_a', + [1240336683] = 'prop_large_gold_alt_b', + [-1324034181] = 'prop_large_gold_alt_c', + [-1479600188] = 'prop_large_gold_empty', + [1483319544] = 'prop_large_gold', + [447976993] = 'prop_lawnmower_01', + [-1637875765] = 'prop_ld_alarm_01_dam', + [1378673294] = 'prop_ld_alarm_01', + [-1062200609] = 'prop_ld_alarm_alert', + [190687980] = 'prop_ld_ammo_pack_01', + [1560006187] = 'prop_ld_ammo_pack_02', + [669213687] = 'prop_ld_ammo_pack_03', + [-1806890273] = 'prop_ld_armour', + [295541576] = 'prop_ld_balastrude', + [-980870186] = 'prop_ld_balcfnc_01a', + [-1979013930] = 'prop_ld_balcfnc_01b', + [-1053157648] = 'prop_ld_balcfnc_02a', + [-1926582578] = 'prop_ld_balcfnc_02b', + [-611923063] = 'prop_ld_balcfnc_02c', + [-1425083786] = 'prop_ld_balcfnc_03a', + [-2117361680] = 'prop_ld_balcfnc_03b', + [-434396696] = 'prop_ld_bale01', + [-1743257725] = 'prop_ld_bankdoors_01', + [-2041685008] = 'prop_ld_bankdoors_02', + [54588191] = 'prop_ld_barrier_01', + [1916676832] = 'prop_ld_bench01', + [-935625561] = 'prop_ld_binbag_01', + [-1466745439] = 'prop_ld_bomb_01_open', + [-1306048251] = 'prop_ld_bomb_01', + [1771868096] = 'prop_ld_bomb_anim', + [929047740] = 'prop_ld_bomb', + [-89848631] = 'prop_ld_breakmast', + [-963499920] = 'prop_ld_cable_tie_01', + [-423939669] = 'prop_ld_cable', + [-1153271191] = 'prop_ld_can_01', + [114933932] = 'prop_ld_can_01b', + [1338392374] = 'prop_ld_case_01_lod', + [248872646] = 'prop_ld_case_01_s', + [880595258] = 'prop_ld_case_01', + [1197489041] = 'prop_ld_cont_light_01', + [1214755619] = 'prop_ld_contact_card', + [-1376085798] = 'prop_ld_contain_dl', + [211871682] = 'prop_ld_contain_dl2', + [-2125774984] = 'prop_ld_contain_dr', + [-825889959] = 'prop_ld_contain_dr2', + [-469102706] = 'prop_ld_container', + [-1787668082] = 'prop_ld_crate_01', + [-1913949042] = 'prop_ld_crate_lid_01', + [542041270] = 'prop_ld_crocclips01', + [260653867] = 'prop_ld_crocclips02', + [1215053148] = 'prop_ld_dstcover_01', + [-1123867000] = 'prop_ld_dstcover_02', + [1405006221] = 'prop_ld_dstpillar_01', + [1192859715] = 'prop_ld_dstpillar_02', + [2037611766] = 'prop_ld_dstpillar_03', + [189702314] = 'prop_ld_dstpillar_04', + [-49478617] = 'prop_ld_dstpillar_05', + [180592504] = 'prop_ld_dstpillar_06', + [419576821] = 'prop_ld_dstpillar_07', + [638277127] = 'prop_ld_dstpillar_08', + [-544464940] = 'prop_ld_dstplanter_01', + [316900990] = 'prop_ld_dstplanter_02', + [924295337] = 'prop_ld_dstsign_01', + [-360336526] = 'prop_ld_dummy_rope', + [-596948790] = 'prop_ld_fags_01', + [-245402958] = 'prop_ld_fags_02', + [-1737154494] = 'prop_ld_fan_01_old', + [-1768401357] = 'prop_ld_fan_01', + [-1869605644] = 'prop_ld_farm_chair01', + [-527772679] = 'prop_ld_farm_cnr01', + [544186037] = 'prop_ld_farm_couch01', + [773405192] = 'prop_ld_farm_couch02', + [1891144592] = 'prop_ld_farm_rail01', + [973800157] = 'prop_ld_farm_table01', + [1272292978] = 'prop_ld_farm_table02', + [-1001341595] = 'prop_ld_faucet', + [-1003748966] = 'prop_ld_ferris_wheel', + [466974385] = 'prop_ld_fib_pillar01', + [-1589780889] = 'prop_ld_filmset', + [2133533553] = 'prop_ld_fireaxe', + [746336278] = 'prop_ld_flow_bottle', + [-818999775] = 'prop_ld_fragwall_01a', + [-1116116298] = 'prop_ld_fragwall_01b', + [30769481] = 'prop_ld_garaged_01', + [1489572967] = 'prop_ld_gold_chest', + [-1189971267] = 'prop_ld_gold_tooth', + [909721256] = 'prop_ld_greenscreen_01', + [-619058125] = 'prop_ld_handbag_s', + [-1950370778] = 'prop_ld_handbag', + [-1929385697] = 'prop_ld_hat_01', + [1410413102] = 'prop_ld_haybail', + [329627681] = 'prop_ld_hdd_01', + [1753541233] = 'prop_ld_headset_01', + [678958360] = 'prop_ld_health_pack', + [-301207358] = 'prop_ld_hook', + [-1251197000] = 'prop_ld_int_safe_01', + [-642608865] = 'prop_ld_jail_door', + [-1157632529] = 'prop_ld_jeans_01', + [-1471068014] = 'prop_ld_jeans_02', + [1069395324] = 'prop_ld_jerrycan_01', + [1321190118] = 'prop_ld_keypad_01', + [277179989] = 'prop_ld_keypad_01b_lod', + [623406777] = 'prop_ld_keypad_01b', + [1351606497] = 'prop_ld_lab_corner01', + [-170235898] = 'prop_ld_lab_dorway01', + [668041498] = 'prop_ld_lap_top', + [-1911264257] = 'prop_ld_monitor_01', + [787795698] = 'prop_ld_peep_slider', + [525797972] = 'prop_ld_pipe_single_01', + [932342438] = 'prop_ld_planning_pin_01', + [-975272128] = 'prop_ld_planning_pin_02', + [-735763507] = 'prop_ld_planning_pin_03', + [339283616] = 'prop_ld_planter1a', + [1778465327] = 'prop_ld_planter1b', + [2024691593] = 'prop_ld_planter1c', + [-717043092] = 'prop_ld_planter2a', + [-413765997] = 'prop_ld_planter2b', + [-1314389193] = 'prop_ld_planter2c', + [-1864252677] = 'prop_ld_planter3a', + [-1901937027] = 'prop_ld_planter3b', + [-1307376291] = 'prop_ld_planter3c', + [461387027] = 'prop_ld_purse_01_lod', + [-34897201] = 'prop_ld_purse_01', + [152884146] = 'prop_ld_rail_01', + [-480540624] = 'prop_ld_rail_02', + [1185249461] = 'prop_ld_rope_t', + [-1998455445] = 'prop_ld_rub_binbag_01', + [-1350614541] = 'prop_ld_rubble_01', + [-305283433] = 'prop_ld_rubble_02', + [-611378662] = 'prop_ld_rubble_03', + [1507825333] = 'prop_ld_rubble_04', + [-2122188986] = 'prop_ld_scrap', + [-1256588656] = 'prop_ld_shirt_01', + [1682675077] = 'prop_ld_shoe_01', + [1916612968] = 'prop_ld_shoe_02', + [-966735958] = 'prop_ld_shovel_dirt', + [1925751803] = 'prop_ld_shovel', + [-1877813643] = 'prop_ld_snack_01', + [-994740387] = 'prop_ld_suitcase_01', + [697352466] = 'prop_ld_suitcase_02', + [186956100] = 'prop_ld_test_01', + [1872312775] = 'prop_ld_toilet_01', + [-1716504528] = 'prop_ld_tooth', + [1346165884] = 'prop_ld_tshirt_01', + [578126062] = 'prop_ld_tshirt_02', + [-1264354268] = 'prop_ld_vault_door', + [-2055486531] = 'prop_ld_w_me_machette', + [1334928729] = 'prop_ld_wallet_01_s', + [-1379254308] = 'prop_ld_wallet_01', + [-1734077040] = 'prop_ld_wallet_02', + [-21449061] = 'prop_ld_wallet_pickup', + [1603835013] = 'prop_leaf_blower_01', + [1671786281] = 'prop_lectern_01', + [-830216854] = 'prop_letterbox_01', + [354284193] = 'prop_letterbox_02', + [-1414914121] = 'prop_letterbox_03', + [-138758181] = 'prop_letterbox_04', + [1892623307] = 'prop_lev_crate_01', + [-1963621339] = 'prop_lev_des_barge_01', + [-1669978330] = 'prop_lev_des_barge_02', + [-1487498162] = 'prop_life_ring_01', + [-1306547744] = 'prop_life_ring_02', + [262294578] = 'prop_lifeblurb_01', + [1609518039] = 'prop_lifeblurb_01b', + [-1014909978] = 'prop_lifeblurb_02', + [-211749928] = 'prop_lifeblurb_02b', + [1721635574] = 'prop_lift_overlay_01', + [2014688741] = 'prop_lift_overlay_02', + [1489118250] = 'prop_lime_jar', + [-1619549892] = 'prop_litter_picker', + [1366334172] = 'prop_log_01', + [-1692750285] = 'prop_log_02', + [-1395207765] = 'prop_log_03', + [-989183355] = 'prop_log_aa', + [-1236753150] = 'prop_log_ab', + [1581872401] = 'prop_log_ac', + [1203849217] = 'prop_log_ad', + [-41176169] = 'prop_log_ae', + [-279701720] = 'prop_log_af', + [-593160806] = 'prop_log_break_01', + [-672395555] = 'prop_loggneon', + [-37176073] = 'prop_logpile_01', + [192829538] = 'prop_logpile_02', + [-1381557071] = 'prop_logpile_03', + [-1152075764] = 'prop_logpile_04', + [-1060060412] = 'prop_logpile_05', + [-685576280] = 'prop_logpile_06', + [1889091531] = 'prop_logpile_06b', + [1417112147] = 'prop_logpile_07', + [-12425453] = 'prop_logpile_07b', + [920165506] = 'prop_loose_rag_01', + [-349730013] = 'prop_lrggate_01_l', + [1383638045] = 'prop_lrggate_01_pst', + [-1918480350] = 'prop_lrggate_01_r', + [256791144] = 'prop_lrggate_01b', + [546378757] = 'prop_lrggate_01c_l', + [-1249591818] = 'prop_lrggate_01c_r', + [-2125423493] = 'prop_lrggate_02_ld', + [-844827165] = 'prop_lrggate_02', + [575680671] = 'prop_lrggate_03a', + [724862427] = 'prop_lrggate_03b_ld', + [279678294] = 'prop_lrggate_03b', + [1738619932] = 'prop_lrggate_04a', + [11038584] = 'prop_lrggate_05a', + [-1153093533] = 'prop_lrggate_06a', + [-206954186] = 'prop_luggage_01a', + [4602238] = 'prop_luggage_02a', + [1424581035] = 'prop_luggage_03a', + [879323380] = 'prop_luggage_04a', + [914418735] = 'prop_luggage_05a', + [656854087] = 'prop_luggage_06a', + [753227456] = 'prop_luggage_07a', + [-230858727] = 'prop_luggage_08a', + [-2137120552] = 'prop_luggage_09a', + [-934705991] = 'prop_m_pack_int_01', + [668467214] = 'prop_magenta_door', + [-2098426548] = 'prop_makeup_brush', + [-293536422] = 'prop_makeup_trail_01_cr', + [-1738641949] = 'prop_makeup_trail_01', + [1012842044] = 'prop_makeup_trail_02_cr', + [-1534786000] = 'prop_makeup_trail_02', + [-502195954] = 'prop_map_door_01', + [-1313704889] = 'prop_mask_ballistic_trip1', + [-1072033486] = 'prop_mask_ballistic_trip2', + [-594044771] = 'prop_mask_ballistic', + [-1730591027] = 'prop_mask_bugstar_trip', + [-30968431] = 'prop_mask_bugstar', + [570101940] = 'prop_mask_fireman', + [1048062970] = 'prop_mask_flight', + [-1010838977] = 'prop_mask_motobike_a', + [-1394924426] = 'prop_mask_motobike_b', + [-1766193780] = 'prop_mask_motobike_trip', + [-1630286816] = 'prop_mask_motobike', + [1994083055] = 'prop_mask_motox_trip', + [-1734491935] = 'prop_mask_motox', + [-630008420] = 'prop_mask_scuba01_trip', + [-1981720153] = 'prop_mask_scuba01', + [1313795453] = 'prop_mask_scuba02_trip', + [1165086929] = 'prop_mask_scuba02', + [1115396903] = 'prop_mask_scuba03_trip', + [1407249839] = 'prop_mask_scuba03', + [768085611] = 'prop_mask_scuba04_trip', + [619515848] = 'prop_mask_scuba04', + [404420572] = 'prop_mask_specops_trip', + [-368775533] = 'prop_mask_specops', + [-550146809] = 'prop_mask_test_01', + [591839817] = 'prop_mast_01', + [-1709503252] = 'prop_mat_box', + [-1118478184] = 'prop_maxheight_01', + [-789386409] = 'prop_mb_cargo_01a', + [2082783416] = 'prop_mb_cargo_02a', + [-222480965] = 'prop_mb_cargo_03a', + [897366637] = 'prop_mb_cargo_04a', + [1197039142] = 'prop_mb_cargo_04b', + [-666179646] = 'prop_mb_crate_01a_set', + [481432069] = 'prop_mb_crate_01a', + [788248216] = 'prop_mb_crate_01b', + [1727205997] = 'prop_mb_hanger_sprinkler', + [1354899844] = 'prop_mb_hesco_06', + [502597611] = 'prop_mb_ordnance_01', + [1246158990] = 'prop_mb_ordnance_02', + [2013608974] = 'prop_mb_ordnance_03', + [-152913465] = 'prop_mb_ordnance_04', + [-148635027] = 'prop_mb_sandblock_01', + [165521376] = 'prop_mb_sandblock_02', + [523344868] = 'prop_mb_sandblock_03_cr', + [1485817159] = 'prop_mb_sandblock_03', + [1834086091] = 'prop_mb_sandblock_04', + [1708971027] = 'prop_mb_sandblock_05_cr', + [1056805411] = 'prop_mb_sandblock_05', + [2139919312] = 'prop_mc_conc_barrier_01', + [1368637848] = 'prop_med_bag_01', + [-509478557] = 'prop_med_bag_01b', + [1303897364] = 'prop_med_jet_01', + [1185713036] = 'prop_medal_01', + [-509973344] = 'prop_medstation_01', + [1869023287] = 'prop_medstation_02', + [1313261047] = 'prop_medstation_03', + [1539137764] = 'prop_medstation_04', + [-1585551192] = 'prop_megaphone_01', + [-769292007] = 'prop_mem_candle_01', + [-529291851] = 'prop_mem_candle_02', + [781500918] = 'prop_mem_candle_03', + [-1359461697] = 'prop_mem_candle_04', + [-853901565] = 'prop_mem_candle_05', + [-1685349402] = 'prop_mem_candle_06', + [-1721654639] = 'prop_mem_candle_combo', + [1753243846] = 'prop_mem_reef_01', + [-1652897094] = 'prop_mem_reef_02', + [-1934481111] = 'prop_mem_reef_03', + [336541402] = 'prop_mem_teddy_01', + [-319297368] = 'prop_mem_teddy_02', + [2067252279] = 'prop_metal_plates01', + [1757912919] = 'prop_metal_plates02', + [-546529839] = 'prop_metalfoodjar_002', + [-898793083] = 'prop_metalfoodjar_01', + [285917444] = 'prop_meth_bag_01', + [-2059889071] = 'prop_meth_setup_01', + [1585260068] = 'prop_michael_backpack', + [-407830426] = 'prop_michael_balaclava', + [1011598562] = 'prop_michael_door', + [-720810643] = 'prop_michael_sec_id', + [566576618] = 'prop_michaels_credit_tv', + [1490269418] = 'prop_micro_01', + [1796594030] = 'prop_micro_02', + [356462018] = 'prop_micro_04', + [-891120940] = 'prop_micro_cs_01_door', + [380825205] = 'prop_micro_cs_01', + [933500565] = 'prop_microphone_02', + [1306960905] = 'prop_microwave_1', + [90805875] = 'prop_mil_crate_01', + [-301668442] = 'prop_mil_crate_02', + [-1313687957] = 'prop_military_pickup_01', + [-18398025] = 'prop_mine_doorng_l', + [-872784146] = 'prop_mine_doorng_r', + [-1241212535] = 'prop_mineshaft_door', + [-929681224] = 'prop_minigun_01', + [1267718013] = 'prop_mk_arrow_3d', + [-2069820128] = 'prop_mk_arrow_flat', + [-2026528599] = 'prop_mk_bike_logo_1', + [2029257766] = 'prop_mk_bike_logo_2', + [1400047790] = 'prop_mk_boost', + [1682183567] = 'prop_mk_cone', + [-461640156] = 'prop_mk_cylinder', + [489393990] = 'prop_mk_flag_2', + [556204867] = 'prop_mk_flag', + [-1751054247] = 'prop_mk_heli', + [169493890] = 'prop_mk_lap', + [-992932885] = 'prop_mk_mp_ring_01', + [-1499561117] = 'prop_mk_mp_ring_01b', + [457010614] = 'prop_mk_num_0', + [-56151926] = 'prop_mk_num_1', + [-1216076223] = 'prop_mk_num_2', + [-1455748689] = 'prop_mk_num_3', + [-660543366] = 'prop_mk_num_4', + [-898872303] = 'prop_mk_num_5', + [1966973365] = 'prop_mk_num_6', + [1727005978] = 'prop_mk_num_7', + [-1580631348] = 'prop_mk_num_8', + [-1823285793] = 'prop_mk_num_9', + [1387939745] = 'prop_mk_plane', + [-237215991] = 'prop_mk_race_chevron_01', + [-1633273698] = 'prop_mk_race_chevron_02', + [-2056845792] = 'prop_mk_race_chevron_03', + [-247073735] = 'prop_mk_repair', + [2136410906] = 'prop_mk_ring_flat', + [-1565856713] = 'prop_mk_ring', + [1530167798] = 'prop_mk_sphere', + [-1386785352] = 'prop_mk_tri_cycle', + [-256059350] = 'prop_mk_tri_run', + [1358269310] = 'prop_mk_tri_swim', + [1888604944] = 'prop_mobile_mast_1', + [1660696549] = 'prop_mobile_mast_2', + [1565560522] = 'prop_mojito', + [289396019] = 'prop_money_bag_01', + [1333557690] = 'prop_monitor_01a', + [557686077] = 'prop_monitor_01b', + [843005760] = 'prop_monitor_01c', + [1940636184] = 'prop_monitor_01d', + [-1496356952] = 'prop_monitor_02', + [1140820728] = 'prop_monitor_03b', + [-943811168] = 'prop_monitor_04a', + [394821236] = 'prop_monitor_li', + [-1524180747] = 'prop_monitor_w_large', + [-1306074314] = 'prop_motel_door_09', + [-830589106] = 'prop_mouse_01', + [-524036402] = 'prop_mouse_01a', + [-1884703589] = 'prop_mouse_01b', + [-1128754237] = 'prop_mouse_02', + [-1192183952] = 'prop_mov_sechutwin_02', + [1398321063] = 'prop_mov_sechutwin', + [-1800403885] = 'prop_movie_rack', + [1867879106] = 'prop_mp_arrow_barrier_01', + [-1507470892] = 'prop_mp_arrow_ring', + [868148414] = 'prop_mp_barrier_01', + [1603241576] = 'prop_mp_barrier_01b', + [24969275] = 'prop_mp_barrier_02', + [-205311355] = 'prop_mp_barrier_02b', + [1672168046] = 'prop_mp_base_marker', + [1709896882] = 'prop_mp_boost_01', + [628878810] = 'prop_mp_cant_place_lrg', + [-263709501] = 'prop_mp_cant_place_med', + [-1860765147] = 'prop_mp_cant_place_sm', + [682373179] = 'prop_mp_conc_barrier_01', + [939377219] = 'prop_mp_cone_01', + [1245865676] = 'prop_mp_cone_02', + [862664990] = 'prop_mp_cone_03', + [93871477] = 'prop_mp_cone_04', + [-1620734287] = 'prop_mp_drug_pack_blue', + [138777325] = 'prop_mp_drug_pack_red', + [765087784] = 'prop_mp_drug_package', + [203510308] = 'prop_mp_halo_lrg', + [1573742756] = 'prop_mp_halo_med', + [-1720855371] = 'prop_mp_halo_point_lrg', + [1181134573] = 'prop_mp_halo_point_med', + [359824118] = 'prop_mp_halo_point_sm', + [1067498314] = 'prop_mp_halo_point', + [1528913568] = 'prop_mp_halo_rotate_lrg', + [-547833144] = 'prop_mp_halo_rotate_med', + [1988157930] = 'prop_mp_halo_rotate_sm', + [-317653089] = 'prop_mp_halo_rotate', + [-1855054434] = 'prop_mp_halo_sm', + [19912391] = 'prop_mp_halo', + [-1029803156] = 'prop_mp_icon_shad_lrg', + [-133291774] = 'prop_mp_icon_shad_med', + [-1916383162] = 'prop_mp_icon_shad_sm', + [-1099135528] = 'prop_mp_max_out_lrg', + [-458245934] = 'prop_mp_max_out_med', + [391417229] = 'prop_mp_max_out_sm', + [-939235386] = 'prop_mp_num_0', + [1519357138] = 'prop_mp_num_1', + [1798123021] = 'prop_mp_num_2', + [2046479272] = 'prop_mp_num_3', + [-507372739] = 'prop_mp_num_4', + [-135051361] = 'prop_mp_num_5', + [84140480] = 'prop_mp_num_6', + [-1686303052] = 'prop_mp_num_7', + [518657424] = 'prop_mp_num_8', + [748204269] = 'prop_mp_num_9', + [-621140855] = 'prop_mp_placement_lrg', + [2053394677] = 'prop_mp_placement_maxd', + [-51423166] = 'prop_mp_placement_med', + [1700850768] = 'prop_mp_placement_red', + [-582796990] = 'prop_mp_placement_sm', + [379560922] = 'prop_mp_placement', + [-1775547488] = 'prop_mp_pointer_ring', + [1212630005] = 'prop_mp_ramp_01_tu', + [-1319646748] = 'prop_mp_ramp_01', + [-1135198622] = 'prop_mp_ramp_02_tu', + [-185511650] = 'prop_mp_ramp_02', + [55777251] = 'prop_mp_ramp_03_tu', + [-1818980770] = 'prop_mp_ramp_03', + [1219257666] = 'prop_mp_repair_01', + [-419793040] = 'prop_mp_repair', + [170715090] = 'prop_mp_respawn_02', + [-1531914544] = 'prop_mp_rocket_01', + [-414027994] = 'prop_mp_solid_ring', + [1944414445] = 'prop_mp_spike_01', + [-627813781] = 'prop_mp3_dock', + [1998656713] = 'prop_mr_rasberryclean', + [1022578470] = 'prop_mr_raspberry_01', + [-331509782] = 'prop_mug_01', + [1319392426] = 'prop_mug_02', + [130107121] = 'prop_mug_03', + [-164781110] = 'prop_mug_04', + [647955628] = 'prop_mug_06', + [672753785] = 'prop_mugs_rm_flashb', + [1191103069] = 'prop_mugs_rm_lightoff', + [1725772482] = 'prop_mugs_rm_lighton', + [-1838046182] = 'prop_muscle_bench_01', + [-1577762015] = 'prop_muscle_bench_02', + [-1095992177] = 'prop_muscle_bench_03', + [-865527800] = 'prop_muscle_bench_04', + [-115510932] = 'prop_muscle_bench_05', + [383495400] = 'prop_muscle_bench_06', + [-409840349] = 'prop_muster_wboard_01', + [-1713129017] = 'prop_muster_wboard_02', + [483744672] = 'prop_necklace_board', + [506350134] = 'prop_new_drug_pack_01', + [-1186769817] = 'prop_news_disp_01a', + [-377891123] = 'prop_news_disp_02a_s', + [1211559620] = 'prop_news_disp_02a', + [1375076930] = 'prop_news_disp_02b', + [720581693] = 'prop_news_disp_02c', + [917457845] = 'prop_news_disp_02d', + [261193082] = 'prop_news_disp_02e', + [-756152956] = 'prop_news_disp_03a', + [-1383056703] = 'prop_news_disp_03c', + [-838860344] = 'prop_news_disp_05a', + [1287257122] = 'prop_news_disp_06a', + [-1829964307] = 'prop_ng_sculpt_fix', + [1010590096] = 'prop_nigel_bag_pickup', + [-1276798450] = 'prop_night_safe_01', + [29402038] = 'prop_notepad_01', + [-334989242] = 'prop_notepad_02', + [944959446] = 'prop_novel_01', + [1407197773] = 'prop_npc_phone_02', + [-1038739674] = 'prop_npc_phone', + [536071214] = 'prop_off_chair_01', + [96868307] = 'prop_off_chair_03', + [475561894] = 'prop_off_chair_04_s', + [1268458364] = 'prop_off_chair_04', + [1480618483] = 'prop_off_chair_04b', + [1037469683] = 'prop_off_chair_05', + [124188622] = 'prop_off_phone_01', + [-508101108] = 'prop_office_alarm_01', + [-95585677] = 'prop_office_desk_01', + [148141454] = 'prop_office_phone_tnt', + [1451741313] = 'prop_offroad_bale01', + [90475403] = 'prop_offroad_bale02_l1_frag_', + [-1601837956] = 'prop_offroad_bale02', + [2084346858] = 'prop_offroad_bale03', + [-757971088] = 'prop_offroad_barrel01', + [-996988174] = 'prop_offroad_barrel02', + [1369821530] = 'prop_offroad_tyres01_tu', + [509852852] = 'prop_offroad_tyres01', + [812376260] = 'prop_offroad_tyres02', + [-705229846] = 'prop_oil_derrick_01', + [-2127648188] = 'prop_oil_guage_01', + [1195772660] = 'prop_oil_spool_02', + [-482489660] = 'prop_oil_valve_01', + [-774920224] = 'prop_oil_valve_02', + [1464670617] = 'prop_oil_wellhead_01', + [64287394] = 'prop_oil_wellhead_03', + [-1570558016] = 'prop_oil_wellhead_04', + [-1867871153] = 'prop_oil_wellhead_05', + [-1091540774] = 'prop_oil_wellhead_06', + [-276344022] = 'prop_oilcan_01a', + [-1532806025] = 'prop_oilcan_02a', + [834559808] = 'prop_oiltub_01', + [1681638458] = 'prop_oiltub_02', + [309108893] = 'prop_oiltub_03', + [1851545707] = 'prop_oiltub_04', + [544881832] = 'prop_oiltub_05', + [1437574930] = 'prop_oiltub_06', + [1803975195] = 'prop_old_boot', + [129608276] = 'prop_old_churn_01', + [-159152152] = 'prop_old_churn_02', + [956957017] = 'prop_old_deck_chair_02', + [1103738692] = 'prop_old_deck_chair', + [-636008946] = 'prop_old_farm_01', + [-857396310] = 'prop_old_farm_02', + [-125664540] = 'prop_old_farm_03', + [734263480] = 'prop_old_wood_chair_lod', + [1544350879] = 'prop_old_wood_chair', + [-1572767351] = 'prop_oldlight_01a', + [-1895279849] = 'prop_oldlight_01b', + [1035808898] = 'prop_oldlight_01c', + [-1296622201] = 'prop_oldplough1', + [283394517] = 'prop_optic_jd', + [-2084757382] = 'prop_optic_rum', + [-1320431804] = 'prop_optic_vodka', + [1832502141] = 'prop_orang_can_01', + [-1890952940] = 'prop_out_door_speaker', + [57758678] = 'prop_outdoor_fan_01', + [-1973482041] = 'prop_overalls_01', + [-1759159805] = 'prop_owl_totem_01', + [1670527089] = 'prop_p_jack_03_col', + [-992734280] = 'prop_p_spider_01a', + [-400827833] = 'prop_p_spider_01c', + [-1687076625] = 'prop_p_spider_01d', + [874772806] = 'prop_paint_brush01', + [-42923039] = 'prop_paint_brush02', + [179316319] = 'prop_paint_brush03', + [1453178373] = 'prop_paint_brush04', + [976586037] = 'prop_paint_brush05', + [1807682983] = 'prop_paint_roller', + [724405277] = 'prop_paint_spray01a', + [-1788911489] = 'prop_paint_spray01b', + [214384272] = 'prop_paint_stepl01', + [-2096130282] = 'prop_paint_stepl01b', + [1316995584] = 'prop_paint_stepl02', + [1214673062] = 'prop_paint_tray', + [-590902397] = 'prop_paint_wpaper01', + [2126419969] = 'prop_paints_bench01', + [-597454856] = 'prop_paints_can01', + [1032540746] = 'prop_paints_can02', + [-174505373] = 'prop_paints_can03', + [-405100826] = 'prop_paints_can04', + [-1595008754] = 'prop_paints_can05', + [322272667] = 'prop_paints_can06', + [1786752042] = 'prop_paints_can07', + [2082302221] = 'prop_paints_pallete01', + [757019157] = 'prop_pallet_01a', + [830159341] = 'prop_pallet_02a', + [740895081] = 'prop_pallet_03a', + [1047645690] = 'prop_pallet_03b', + [-1853453107] = 'prop_pallet_pile_01', + [-3872440] = 'prop_pallet_pile_02', + [1615800919] = 'prop_pallet_pile_03', + [1343261146] = 'prop_pallet_pile_04', + [-1894042373] = 'prop_pallettruck_01', + [895484294] = 'prop_pallettruck_02', + [-1969479583] = 'prop_palm_fan_02_a', + [2095154412] = 'prop_palm_fan_02_b', + [-2116697995] = 'prop_palm_fan_03_a', + [2096445108] = 'prop_palm_fan_03_b', + [-212949180] = 'prop_palm_fan_03_c_graff', + [1848580392] = 'prop_palm_fan_03_c', + [1829091778] = 'prop_palm_fan_03_d_graff', + [-648384643] = 'prop_palm_fan_03_d', + [-627182787] = 'prop_palm_fan_04_a', + [-850405215] = 'prop_palm_fan_04_b', + [-654381053] = 'prop_palm_fan_04_c', + [-876325490] = 'prop_palm_fan_04_d', + [-1209618476] = 'prop_palm_huge_01a', + [287728210] = 'prop_palm_huge_01b', + [-1901972340] = 'prop_palm_med_01a', + [-1459918530] = 'prop_palm_med_01b', + [743960561] = 'prop_palm_med_01c', + [-1268318187] = 'prop_palm_med_01d', + [709417929] = 'prop_palm_sm_01a', + [945879033] = 'prop_palm_sm_01d', + [2044426993] = 'prop_palm_sm_01e', + [1802493466] = 'prop_palm_sm_01f', + [680380202] = 'prop_pap_camera_01', + [1108364521] = 'prop_paper_bag_01', + [-1803909274] = 'prop_paper_bag_small', + [2145382395] = 'prop_paper_ball', + [-1996476047] = 'prop_paper_box_01', + [1950582780] = 'prop_paper_box_02', + [-1938376606] = 'prop_paper_box_03', + [1465830963] = 'prop_paper_box_04', + [1636622991] = 'prop_paper_box_05', + [643651670] = 'prop_parachute', + [-1679378668] = 'prop_parapack_01', + [-1043239133] = 'prop_parasol_01_b', + [-1317220738] = 'prop_parasol_01_c', + [1878378076] = 'prop_parasol_01_down', + [478737801] = 'prop_parasol_01_lod', + [-592861175] = 'prop_parasol_01', + [-987757643] = 'prop_parasol_01b_lod', + [1398809829] = 'prop_parasol_02_b', + [1629405282] = 'prop_parasol_02_c', + [56751481] = 'prop_parasol_02', + [264031651] = 'prop_parasol_03_b', + [25538869] = 'prop_parasol_03_c', + [-248688364] = 'prop_parasol_03', + [-60790918] = 'prop_parasol_04', + [-104193816] = 'prop_parasol_04b', + [-333412971] = 'prop_parasol_04c', + [639433101] = 'prop_parasol_04d', + [1249015613] = 'prop_parasol_04e_lod1', + [400973088] = 'prop_parasol_04e', + [175309727] = 'prop_parasol_05', + [-1327303424] = 'prop_parasol_bh_48', + [1447355784] = 'prop_park_ticket_01', + [304890764] = 'prop_parking_hut_2', + [1981833514] = 'prop_parking_hut_2b', + [290648114] = 'prop_parking_sign_06', + [-404775616] = 'prop_parking_sign_07', + [-2038478357] = 'prop_parking_sign_1', + [-1040137999] = 'prop_parking_sign_2', + [-839348691] = 'prop_parking_wand_01', + [-544726684] = 'prop_parkingpay', + [-1940238623] = 'prop_parknmeter_01', + [2108567945] = 'prop_parknmeter_02', + [-756713902] = 'prop_partsbox_01', + [-1750183478] = 'prop_passport_01', + [-1714859751] = 'prop_patio_heater_01', + [1699040865] = 'prop_patio_lounger_2', + [2017293393] = 'prop_patio_lounger_3', + [-1682596365] = 'prop_patio_lounger1_table', + [-1498352975] = 'prop_patio_lounger1', + [-2024837020] = 'prop_patio_lounger1b', + [-1814664762] = 'prop_patriotneon', + [1774846173] = 'prop_paynspray_door_l', + [546827942] = 'prop_paynspray_door_r', + [1429487523] = 'prop_pc_01a', + [1654151435] = 'prop_pc_02a', + [-1669330389] = 'prop_peanut_bowl_01', + [1530424218] = 'prop_ped_gib_01', + [1052085257] = 'prop_ped_pic_01_sm', + [1110699354] = 'prop_ped_pic_01', + [618574817] = 'prop_ped_pic_02_sm', + [602124474] = 'prop_ped_pic_02', + [1316165619] = 'prop_ped_pic_03_sm', + [-576805839] = 'prop_ped_pic_03', + [-152094541] = 'prop_ped_pic_04_sm', + [-751857837] = 'prop_ped_pic_04', + [1098873624] = 'prop_ped_pic_05_sm', + [-52305225] = 'prop_ped_pic_05', + [-363675173] = 'prop_ped_pic_06_sm', + [-292927992] = 'prop_ped_pic_06', + [2130308972] = 'prop_ped_pic_07_sm', + [-232108832] = 'prop_ped_pic_07', + [-2118131946] = 'prop_ped_pic_08_sm', + [-535582541] = 'prop_ped_pic_08', + [463086472] = 'prop_pencil_01', + [1979076528] = 'prop_peyote_chunk_01', + [421059073] = 'prop_peyote_gold_01', + [-212010961] = 'prop_peyote_highland_01', + [1367913609] = 'prop_peyote_highland_02', + [-1425791387] = 'prop_peyote_lowland_01', + [-1178483744] = 'prop_peyote_lowland_02', + [-1429181545] = 'prop_peyote_water_01', + [-1910370445] = 'prop_pharm_sign_01', + [1534100734] = 'prop_phone_cs_frank', + [1907022252] = 'prop_phone_ing_02_lod', + [-746954904] = 'prop_phone_ing_02', + [-263063365] = 'prop_phone_ing_03_lod', + [-511116411] = 'prop_phone_ing_03', + [413312110] = 'prop_phone_ing', + [485673473] = 'prop_phone_overlay_01', + [-1645196294] = 'prop_phone_overlay_02', + [-1348538537] = 'prop_phone_overlay_03', + [127083682] = 'prop_phone_overlay_anim', + [-1599936665] = 'prop_phone_proto_back', + [1525904360] = 'prop_phone_proto_battery', + [-2017357667] = 'prop_phone_proto', + [1511539537] = 'prop_phonebox_01a', + [1281992692] = 'prop_phonebox_01b', + [-2103798695] = 'prop_phonebox_01c', + [295857659] = 'prop_phonebox_02', + [-78626473] = 'prop_phonebox_03', + [1158960338] = 'prop_phonebox_04', + [-55180266] = 'prop_phonebox_05a', + [163244680] = 'prop_phys_wades_head', + [465817409] = 'prop_picnictable_01_lod', + [-1572018818] = 'prop_picnictable_01', + [-1795175708] = 'prop_picnictable_02', + [1688679327] = 'prop_pier_kiosk_01', + [1511005809] = 'prop_pier_kiosk_02', + [-2009466172] = 'prop_pier_kiosk_03', + [923487792] = 'prop_piercing_gun', + [986152416] = 'prop_pighouse1', + [657577653] = 'prop_pighouse2', + [196166568] = 'prop_pile_dirt_01', + [1004872719] = 'prop_pile_dirt_02', + [-1218241727] = 'prop_pile_dirt_03', + [-382992686] = 'prop_pile_dirt_04', + [-17159622] = 'prop_pile_dirt_06', + [-1977592297] = 'prop_pile_dirt_07_cr', + [-26957549] = 'prop_pile_dirt_07', + [-814630114] = 'prop_pinacolada', + [-845035989] = 'prop_pineapple', + [-337441861] = 'prop_ping_pong', + [-1465676794] = 'prop_pint_glass_01', + [-748232308] = 'prop_pint_glass_02', + [-133185213] = 'prop_pint_glass_tall', + [1980814227] = 'prop_pipe_single_01', + [1668676931] = 'prop_pipe_stack_01', + [-1654693836] = 'prop_pipes_01a', + [1836351583] = 'prop_pipes_01b', + [764282027] = 'prop_pipes_02a', + [1530421247] = 'prop_pipes_02b', + [2099682835] = 'prop_pipes_03a', + [-1418167626] = 'prop_pipes_03b', + [-1341946012] = 'prop_pipes_04a', + [1722122269] = 'prop_pipes_05a', + [63237339] = 'prop_pipes_conc_01', + [-310198185] = 'prop_pipes_conc_02', + [1207991827] = 'prop_pipes_ld_01', + [534382381] = 'prop_pistol_holster', + [-1250752255] = 'prop_pitcher_01_cs', + [-722072228] = 'prop_pitcher_01', + [1320288466] = 'prop_pitcher_02', + [604847691] = 'prop_pizza_box_01', + [-856584171] = 'prop_pizza_box_02', + [1085274000] = 'prop_pizza_box_03', + [458266265] = 'prop_pizza_oven_01', + [311860131] = 'prop_planer_01', + [-1683281785] = 'prop_plant_01a', + [-1979382469] = 'prop_plant_01b', + [-147519789] = 'prop_plant_base_01', + [1648483571] = 'prop_plant_base_02', + [1282650455] = 'prop_plant_base_03', + [1099128256] = 'prop_plant_cane_01a', + [1160242441] = 'prop_plant_cane_01b', + [894583222] = 'prop_plant_cane_02a', + [1390116040] = 'prop_plant_cane_02b', + [-500041449] = 'prop_plant_clover_01', + [-1276175214] = 'prop_plant_clover_02', + [1951116262] = 'prop_plant_fern_01a', + [562366042] = 'prop_plant_fern_01b', + [-765237524] = 'prop_plant_fern_02a', + [-1719175883] = 'prop_plant_fern_02b', + [-1950262871] = 'prop_plant_fern_02c', + [-1751947657] = 'prop_plant_flower_01', + [-2051292472] = 'prop_plant_flower_02', + [2080223052] = 'prop_plant_flower_03', + [1780681623] = 'prop_plant_flower_04', + [1859431100] = 'prop_plant_group_01', + [1563330416] = 'prop_plant_group_02', + [-1968414101] = 'prop_plant_group_03', + [1566353027] = 'prop_plant_group_04_cr', + [-2020516811] = 'prop_plant_group_04', + [-1224328414] = 'prop_plant_group_05', + [-335093434] = 'prop_plant_group_05b', + [-1580184358] = 'prop_plant_group_05c', + [-1886934967] = 'prop_plant_group_05d', + [-946956202] = 'prop_plant_group_05e', + [-2099867525] = 'prop_plant_group_06a', + [-1794886442] = 'prop_plant_group_06b', + [1311254299] = 'prop_plant_group_06c', + [276954077] = 'prop_plant_int_01a', + [-1328202619] = 'prop_plant_int_01b', + [-1672244062] = 'prop_plant_int_02a', + [-904499161] = 'prop_plant_int_02b', + [-664859048] = 'prop_plant_int_03a', + [119729119] = 'prop_plant_int_03b', + [-67906175] = 'prop_plant_int_03c', + [1883518564] = 'prop_plant_int_04a', + [1637751064] = 'prop_plant_int_04b', + [1458701228] = 'prop_plant_int_04c', + [1680905773] = 'prop_plant_int_05a', + [-1812892242] = 'prop_plant_int_05b', + [-1580658051] = 'prop_plant_int_06a', + [-1275414816] = 'prop_plant_int_06b', + [-1736736754] = 'prop_plant_int_06c', + [1818151509] = 'prop_plant_interior_05a', + [-1327429222] = 'prop_plant_palm_01a', + [-1028739787] = 'prop_plant_palm_01b', + [-1636670283] = 'prop_plant_palm_01c', + [-43948379] = 'prop_plant_paradise_b', + [-1194642315] = 'prop_plant_paradise', + [-1199673887] = 'prop_plas_barier_01a', + [-1016640704] = 'prop_plastic_cup_02', + [-306982646] = 'prop_plate_01', + [751033] = 'prop_plate_02', + [-901903841] = 'prop_plate_03', + [-596726144] = 'prop_plate_04', + [-1706302154] = 'prop_plate_stand_01', + [1191386269] = 'prop_plate_warmer', + [-1154398125] = 'prop_player_gasmask', + [760935785] = 'prop_player_phone_01', + [1448265560] = 'prop_player_phone_02', + [654965994] = 'prop_pliers_01', + [1644097553] = 'prop_plonk_red', + [-295049461] = 'prop_plonk_rose', + [112192004] = 'prop_plonk_white', + [1602949740] = 'prop_plough', + [-351060269] = 'prop_plywoodpile_01a', + [-658531796] = 'prop_plywoodpile_01b', + [567755715] = 'prop_podium_mic', + [-176635891] = 'prop_police_door_l_dam', + [-2062889184] = 'prop_police_door_l', + [1609617895] = 'prop_police_door_r_dam', + [130962589] = 'prop_police_door_r', + [1829375674] = 'prop_police_door_surround', + [-1623189257] = 'prop_police_id_board', + [-1090119157] = 'prop_police_id_text_02', + [-955488312] = 'prop_police_id_text', + [-975421026] = 'prop_police_phone', + [-1619540609] = 'prop_police_radio_handset', + [-1712659381] = 'prop_police_radio_main', + [-1194335261] = 'prop_poly_bag_01', + [290621560] = 'prop_poly_bag_money', + [473985065] = 'prop_pool_ball_01', + [1184113278] = 'prop_pool_cue', + [1299967108] = 'prop_pool_rack_01', + [551195458] = 'prop_pool_rack_02', + [-1279805564] = 'prop_pool_tri', + [518638935] = 'prop_poolball_1', + [-1545548207] = 'prop_poolball_10', + [-1306105124] = 'prop_poolball_11', + [-281647869] = 'prop_poolball_12', + [2104951174] = 'prop_poolball_13', + [-1826083608] = 'prop_poolball_14', + [-1201572006] = 'prop_poolball_15', + [-1629729474] = 'prop_poolball_2', + [-2008080348] = 'prop_poolball_3', + [1982987238] = 'prop_poolball_4', + [1744002921] = 'prop_poolball_5', + [-406462704] = 'prop_poolball_6', + [-779701614] = 'prop_poolball_7', + [-1015736721] = 'prop_poolball_8', + [-1388647941] = 'prop_poolball_9', + [1541020665] = 'prop_poolball_cue', + [1969778515] = 'prop_poolskimmer', + [322248450] = 'prop_pooltable_02', + [-314623274] = 'prop_pooltable_3b', + [-1603796423] = 'prop_porn_mag_01', + [-1876336196] = 'prop_porn_mag_02', + [-988623986] = 'prop_porn_mag_03', + [-1227804917] = 'prop_porn_mag_04', + [-1259776486] = 'prop_portable_hifi_01', + [-1098506160] = 'prop_portacabin01', + [682074297] = 'prop_portaloo_01a', + [-455113622] = 'prop_portasteps_01', + [-113824571] = 'prop_portasteps_02', + [1363150739] = 'prop_postbox_01a', + [-861422469] = 'prop_postbox_ss_01a', + [715767402] = 'prop_postcard_rack', + [-476875122] = 'prop_poster_tube_01', + [-782380509] = 'prop_poster_tube_02', + [485216006] = 'prop_postit_drive', + [-487697737] = 'prop_postit_gun', + [-1991880252] = 'prop_postit_it', + [2023983392] = 'prop_postit_lock', + [-1674632306] = 'prop_pot_01', + [-114565750] = 'prop_pot_02', + [-1703665636] = 'prop_pot_03', + [-725281603] = 'prop_pot_04', + [134970185] = 'prop_pot_05', + [1068591760] = 'prop_pot_06', + [-1737949350] = 'prop_pot_plant_01a', + [-1191427964] = 'prop_pot_plant_01b', + [-1256343353] = 'prop_pot_plant_01c', + [-530673848] = 'prop_pot_plant_01d', + [-894868514] = 'prop_pot_plant_01e', + [-901521477] = 'prop_pot_plant_02a', + [-1878463678] = 'prop_pot_plant_02b', + [1558349046] = 'prop_pot_plant_02c', + [-1299468213] = 'prop_pot_plant_02d', + [-1860309428] = 'prop_pot_plant_03a', + [1435537088] = 'prop_pot_plant_03b_cr2', + [-199904194] = 'prop_pot_plant_03b', + [-442558639] = 'prop_pot_plant_03c', + [2139768797] = 'prop_pot_plant_04a', + [933214217] = 'prop_pot_plant_04b', + [702880916] = 'prop_pot_plant_04c', + [1874766238] = 'prop_pot_plant_05a', + [336917068] = 'prop_pot_plant_05b', + [-503017940] = 'prop_pot_plant_05c', + [-1304172382] = 'prop_pot_plant_05d_l1', + [-1203783005] = 'prop_pot_plant_05d', + [-1822851821] = 'prop_pot_plant_6a', + [1019629550] = 'prop_pot_plant_6b', + [-1491050248] = 'prop_pot_plant_bh1', + [264354080] = 'prop_pot_plant_inter_03a', + [-489719518] = 'prop_pot_rack', + [-841373210] = 'prop_potatodigger', + [-2059885722] = 'prop_power_cell', + [1774228345] = 'prop_power_cord_01', + [272925894] = 'prop_premier_fence_01', + [1039360035] = 'prop_premier_fence_02', + [-824819003] = 'prop_printer_01', + [-78931017] = 'prop_printer_02', + [233175726] = 'prop_pris_bars_01', + [1005957871] = 'prop_pris_bench_01', + [-752497691] = 'prop_pris_door_01_l', + [1737094319] = 'prop_pris_door_01_r', + [-1204251591] = 'prop_pris_door_02', + [1373390714] = 'prop_pris_door_03', + [1193398208] = 'prop_prlg_gravestone_01a', + [1397319391] = 'prop_prlg_gravestone_02a', + [-56833361] = 'prop_prlg_gravestone_03a', + [1719178257] = 'prop_prlg_gravestone_04a', + [1667673456] = 'prop_prlg_gravestone_05a_l1', + [-1008546364] = 'prop_prlg_gravestone_05a', + [-1394499950] = 'prop_prlg_gravestone_06a', + [-1617412079] = 'prop_prlg_snowpile', + [1284375840] = 'prop_projector_overlay', + [-1435460625] = 'prop_prologue_phone_lod', + [251676848] = 'prop_prologue_phone', + [-2033615398] = 'prop_prologue_pillar_01', + [-78587596] = 'prop_prop_tree_01', + [763411859] = 'prop_prop_tree_02', + [1716800000] = 'prop_protest_sign_01', + [974300346] = 'prop_protest_table_01', + [385429618] = 'prop_prototype_minibomb', + [-1100726734] = 'prop_proxy_chateau_table', + [-1870936557] = 'prop_proxy_hat_01', + [-215322844] = 'prop_punch_bag_l', + [-48775863] = 'prop_pylon_01', + [70929294] = 'prop_pylon_02', + [294348336] = 'prop_pylon_03', + [1487500395] = 'prop_pylon_04', + [996499903] = 'prop_ql_revolving_door', + [1237270008] = 'prop_quad_grid_line', + [1200261250] = 'prop_rad_waste_barrel_01', + [2057223314] = 'prop_radio_01', + [-1374416477] = 'prop_radiomast01', + [-2041757162] = 'prop_radiomast02', + [679927467] = 'prop_rag_01', + [1428702884] = 'prop_ragganeon', + [1961489851] = 'prop_rail_boxcar', + [-1565687858] = 'prop_rail_boxcar2', + [-943306241] = 'prop_rail_boxcar3', + [2097329273] = 'prop_rail_boxcar4', + [-939452740] = 'prop_rail_boxcar5_d', + [1504341417] = 'prop_rail_boxcar5', + [81690419] = 'prop_rail_buffer_01', + [-292793713] = 'prop_rail_buffer_02', + [-257022130] = 'prop_rail_controller', + [701128452] = 'prop_rail_crane_01', + [805649274] = 'prop_rail_points01', + [-2112331873] = 'prop_rail_points02', + [1728588159] = 'prop_rail_points04', + [1656167615] = 'prop_rail_sigbox01', + [-1882949927] = 'prop_rail_sigbox02', + [-2009270739] = 'prop_rail_sign01', + [-1275638367] = 'prop_rail_sign02', + [1638934804] = 'prop_rail_sign03', + [-1413006015] = 'prop_rail_sign04', + [-1708877316] = 'prop_rail_sign05', + [123499626] = 'prop_rail_sign06', + [1612443970] = 'prop_rail_signals01', + [-285602028] = 'prop_rail_signals02', + [-591697261] = 'prop_rail_signals03', + [-897497569] = 'prop_rail_signals04', + [-1622919007] = 'prop_rail_tankcar', + [1518155103] = 'prop_rail_tankcar2', + [1754255748] = 'prop_rail_tankcar3', + [-1282428048] = 'prop_rail_wellcar', + [1024332415] = 'prop_rail_wellcar2', + [-1120465738] = 'prop_rail_wheel01', + [2042711033] = 'prop_railsleepers01', + [-1897367993] = 'prop_railsleepers02', + [1213103781] = 'prop_railstack01', + [437133861] = 'prop_railstack02', + [1707194767] = 'prop_railstack03', + [1474305484] = 'prop_railstack04', + [1606004099] = 'prop_railstack05', + [-700892790] = 'prop_railway_barrier_01', + [-1451925505] = 'prop_railway_barrier_02', + [1741284929] = 'prop_range_target_01', + [-58618026] = 'prop_range_target_02', + [104571594] = 'prop_range_target_03', + [-1740687742] = 'prop_rcyl_win_01', + [-1508781529] = 'prop_rcyl_win_02', + [-1243975240] = 'prop_rcyl_win_03', + [513712149] = 'prop_rebar_pile01', + [-250952474] = 'prop_rebar_pile02', + [-1724049248] = 'prop_recycle_light', + [-115771139] = 'prop_recyclebin_01a', + [-85604259] = 'prop_recyclebin_02_c', + [1233216915] = 'prop_recyclebin_02_d', + [375956747] = 'prop_recyclebin_02a', + [673826957] = 'prop_recyclebin_02b', + [354692929] = 'prop_recyclebin_03_a', + [-14708062] = 'prop_recyclebin_04_a', + [811169045] = 'prop_recyclebin_04_b', + [-96647174] = 'prop_recyclebin_05_a', + [-5479653] = 'prop_ret_door_02', + [761708175] = 'prop_ret_door_03', + [456661554] = 'prop_ret_door_04', + [1739173235] = 'prop_ret_door', + [99477918] = 'prop_rf_conc_pillar', + [727439546] = 'prop_riding_crop_01', + [1747729913] = 'prop_rio_del_01_l3', + [1506471111] = 'prop_rio_del_01', + [-547381377] = 'prop_riot_shield', + [1774274711] = 'prop_road_memorial_01', + [1325339411] = 'prop_road_memorial_02', + [-534360227] = 'prop_roadcone01a', + [-1059647297] = 'prop_roadcone01b', + [-73333162] = 'prop_roadcone01c', + [-1036807324] = 'prop_roadcone02a', + [1839621839] = 'prop_roadcone02b', + [1008436154] = 'prop_roadcone02c', + [1462955468] = 'prop_roadheader_01', + [10928689] = 'prop_roadpole_01a', + [-223271354] = 'prop_roadpole_01b', + [690963000] = 'prop_rock_1_a', + [374873226] = 'prop_rock_1_b', + [76642561] = 'prop_rock_1_c', + [-266907635] = 'prop_rock_1_d', + [-571659335] = 'prop_rock_1_e', + [-877983947] = 'prop_rock_1_f', + [-1186241930] = 'prop_rock_1_g', + [-1454521733] = 'prop_rock_1_h', + [-1764385397] = 'prop_rock_1_i', + [-1663061536] = 'prop_rock_2_a', + [103187568] = 'prop_rock_2_c', + [1952637159] = 'prop_rock_2_d', + [1362008703] = 'prop_rock_2_f', + [-786884010] = 'prop_rock_2_g', + [1887007857] = 'prop_rock_3_a', + [1308766083] = 'prop_rock_3_b', + [400343865] = 'prop_rock_3_c', + [694838868] = 'prop_rock_3_d', + [52435392] = 'prop_rock_3_e', + [351714669] = 'prop_rock_3_f', + [-560377681] = 'prop_rock_3_g', + [-264047614] = 'prop_rock_3_h', + [232075042] = 'prop_rock_3_i', + [-76838321] = 'prop_rock_3_j', + [-1814952641] = 'prop_rock_4_a', + [2124667619] = 'prop_rock_4_b', + [725387438] = 'prop_rock_4_big', + [2042668880] = 'prop_rock_4_big2', + [390804950] = 'prop_rock_4_c_2', + [-1215378248] = 'prop_rock_4_c', + [-1625949270] = 'prop_rock_4_cl_1', + [2055647880] = 'prop_rock_4_cl_2', + [-1053433850] = 'prop_rock_4_d', + [1797043157] = 'prop_rock_4_e', + [-1204312266] = 'prop_rock_5_a', + [-949664367] = 'prop_rock_5_b', + [-608997843] = 'prop_rock_5_c', + [1835700637] = 'prop_rock_5_d', + [-2120435199] = 'prop_rock_5_e', + [-239598083] = 'prop_rock_5_smash1', + [736590427] = 'prop_rock_5_smash2', + [2139496847] = 'prop_rock_5_smash3', + [854385596] = 'prop_rock_chair_01', + [783940841] = 'prop_rolled_sock_01', + [948080762] = 'prop_rolled_sock_02', + [-648012001] = 'prop_rolled_yoga_mat', + [1446187959] = 'prop_roller_car_01', + [-881525183] = 'prop_roller_car_02', + [-1428622127] = 'prop_ron_door_01', + [1727181033] = 'prop_roofpipe_01', + [1487410260] = 'prop_roofpipe_02', + [-1961526994] = 'prop_roofpipe_03', + [2102386083] = 'prop_roofpipe_04', + [-1368342556] = 'prop_roofpipe_05', + [-1884061078] = 'prop_roofpipe_06', + [-733979128] = 'prop_roofvent_011a', + [1412500798] = 'prop_roofvent_01a', + [-1109401446] = 'prop_roofvent_01b', + [1221493993] = 'prop_roofvent_02a', + [1678424929] = 'prop_roofvent_02b', + [669336675] = 'prop_roofvent_03a', + [1929467662] = 'prop_roofvent_04a', + [193890678] = 'prop_roofvent_05a', + [-95131902] = 'prop_roofvent_05b', + [1214250852] = 'prop_roofvent_06a', + [-695558945] = 'prop_roofvent_07a', + [97299702] = 'prop_roofvent_08a', + [-1500333376] = 'prop_roofvent_09a', + [-1835000284] = 'prop_roofvent_10a', + [733106246] = 'prop_roofvent_10b', + [-594595103] = 'prop_roofvent_11b', + [-836528630] = 'prop_roofvent_11c', + [150472798] = 'prop_roofvent_12a', + [969992943] = 'prop_roofvent_13a', + [1776671180] = 'prop_roofvent_14a', + [-989556436] = 'prop_roofvent_15a', + [-889153068] = 'prop_roofvent_16a', + [-1237359228] = 'prop_rope_family_3', + [1704695145] = 'prop_rope_hook_01', + [-508617917] = 'prop_roundbailer01', + [738930686] = 'prop_roundbailer02', + [731682010] = 'prop_rub_bike_01', + [902408500] = 'prop_rub_bike_02', + [134794675] = 'prop_rub_bike_03', + [-375613925] = 'prop_rub_binbag_01', + [-1681329307] = 'prop_rub_binbag_01b', + [897494494] = 'prop_rub_binbag_03', + [1948359883] = 'prop_rub_binbag_03b', + [600967813] = 'prop_rub_binbag_04', + [1388308576] = 'prop_rub_binbag_05', + [1098827230] = 'prop_rub_binbag_06', + [1813879595] = 'prop_rub_binbag_08', + [1388415578] = 'prop_rub_binbag_sd_01', + [1627301588] = 'prop_rub_binbag_sd_02', + [856312526] = 'prop_rub_boxpile_01', + [1138027619] = 'prop_rub_boxpile_02', + [258835349] = 'prop_rub_boxpile_03', + [-1712220001] = 'prop_rub_boxpile_04', + [1167668471] = 'prop_rub_boxpile_04b', + [-1415300092] = 'prop_rub_boxpile_05', + [-52732303] = 'prop_rub_boxpile_06', + [143291855] = 'prop_rub_boxpile_07', + [1735046030] = 'prop_rub_boxpile_08', + [-1211968443] = 'prop_rub_boxpile_09', + [-466572284] = 'prop_rub_boxpile_10', + [-992845609] = 'prop_rub_busdoor_01', + [-1231371160] = 'prop_rub_busdoor_02', + [-105334880] = 'prop_rub_buswreck_01', + [1111476397] = 'prop_rub_buswreck_03', + [929870599] = 'prop_rub_buswreck_06', + [-1782210005] = 'prop_rub_cabinet', + [306579620] = 'prop_rub_cabinet01', + [603696143] = 'prop_rub_cabinet02', + [309266674] = 'prop_rub_cabinet03', + [2063962179] = 'prop_rub_cage01a', + [-1386777370] = 'prop_rub_cage01b', + [-1601152168] = 'prop_rub_cage01c', + [1387151245] = 'prop_rub_cage01d', + [1679057497] = 'prop_rub_cage01e', + [-1413947866] = 'prop_rub_cardpile_01', + [741629727] = 'prop_rub_cardpile_02', + [379532277] = 'prop_rub_cardpile_03', + [122721624] = 'prop_rub_cardpile_04', + [1626425496] = 'prop_rub_cardpile_05', + [-580107888] = 'prop_rub_cardpile_06', + [-819616509] = 'prop_rub_cardpile_07', + [211799305] = 'prop_rub_carpart_02', + [986884462] = 'prop_rub_carpart_03', + [-171729071] = 'prop_rub_carpart_04', + [575699050] = 'prop_rub_carpart_05', + [1898296526] = 'prop_rub_carwreck_10', + [1069797899] = 'prop_rub_carwreck_11', + [1434516869] = 'prop_rub_carwreck_12', + [-896997473] = 'prop_rub_carwreck_13', + [-1748303324] = 'prop_rub_carwreck_14', + [-1366478936] = 'prop_rub_carwreck_15', + [2090224559] = 'prop_rub_carwreck_16', + [-52638650] = 'prop_rub_carwreck_17', + [591265130] = 'prop_rub_carwreck_2', + [-915224107] = 'prop_rub_carwreck_3', + [-273279397] = 'prop_rub_carwreck_5', + [322493792] = 'prop_rub_carwreck_7', + [10106915] = 'prop_rub_carwreck_8', + [1120812170] = 'prop_rub_carwreck_9', + [1696004910] = 'prop_rub_chassis_01', + [-1023166706] = 'prop_rub_chassis_02', + [-1330310543] = 'prop_rub_chassis_03', + [-937016776] = 'prop_rub_cont_01a', + [-173040310] = 'prop_rub_cont_01b', + [109264625] = 'prop_rub_cont_01c', + [-1841495633] = 'prop_rub_couch01', + [-2021659595] = 'prop_rub_couch02', + [1975077032] = 'prop_rub_couch03', + [-1199485389] = 'prop_rub_couch04', + [-203906105] = 'prop_rub_flotsam_01', + [550501813] = 'prop_rub_flotsam_02', + [243292438] = 'prop_rub_flotsam_03', + [-1752323099] = 'prop_rub_frklft', + [-1698683516] = 'prop_rub_generator', + [1207821893] = 'prop_rub_litter_01', + [443058963] = 'prop_rub_litter_02', + [750661566] = 'prop_rub_litter_03', + [-1671360865] = 'prop_rub_litter_03b', + [-804358663] = 'prop_rub_litter_03c', + [906314316] = 'prop_rub_litter_04', + [-205570378] = 'prop_rub_litter_04b', + [1213196001] = 'prop_rub_litter_05', + [1634867493] = 'prop_rub_litter_06', + [1912846920] = 'prop_rub_litter_07', + [-1884850801] = 'prop_rub_litter_09', + [-1709324304] = 'prop_rub_litter_8', + [973168155] = 'prop_rub_matress_01', + [-838892007] = 'prop_rub_matress_02', + [4385439] = 'prop_rub_matress_03', + [-242987742] = 'prop_rub_matress_04', + [1004070522] = 'prop_rub_monitor', + [1914146234] = 'prop_rub_pile_01', + [-560863591] = 'prop_rub_pile_02', + [-1919073083] = 'prop_rub_pile_03', + [2069078066] = 'prop_rub_pile_04', + [730596951] = 'prop_rub_planks_01', + [1698789825] = 'prop_rub_planks_02', + [1460133198] = 'prop_rub_planks_03', + [-2138558390] = 'prop_rub_planks_04', + [-530738665] = 'prop_rub_railwreck_1', + [-1136244251] = 'prop_rub_railwreck_2', + [-1374769802] = 'prop_rub_railwreck_3', + [-316280517] = 'prop_rub_scrap_02', + [2137036206] = 'prop_rub_scrap_03', + [-1850623408] = 'prop_rub_scrap_04', + [-1543217419] = 'prop_rub_scrap_05', + [-1505729683] = 'prop_rub_scrap_06', + [882180120] = 'prop_rub_scrap_07', + [740404217] = 'prop_rub_stool', + [-1832470637] = 'prop_rub_sunktyre', + [141476213] = 'prop_rub_t34', + [48898026] = 'prop_rub_table_01', + [-555690024] = 'prop_rub_table_02', + [-1050536022] = 'prop_rub_trainers_01', + [1854419556] = 'prop_rub_trainers_01b', + [1622841033] = 'prop_rub_trainers_01c', + [1395334609] = 'prop_rub_trolley01a', + [979462386] = 'prop_rub_trolley02a', + [-1322592273] = 'prop_rub_trolley03a', + [-92549270] = 'prop_rub_trukwreck_1', + [69853894] = 'prop_rub_trukwreck_2', + [-1048832984] = 'prop_rub_tyre_01', + [-1694087371] = 'prop_rub_tyre_02', + [-1992580192] = 'prop_rub_tyre_03', + [-333661828] = 'prop_rub_tyre_dam1', + [-238828342] = 'prop_rub_tyre_dam2', + [-826835278] = 'prop_rub_tyre_dam3', + [-151044291] = 'prop_rub_washer_01', + [103020963] = 'prop_rub_wheel_01', + [-857962731] = 'prop_rub_wheel_02', + [-1810291396] = 'prop_rub_wreckage_3', + [-2089384969] = 'prop_rub_wreckage_4', + [-1063518655] = 'prop_rub_wreckage_5', + [-1379772274] = 'prop_rub_wreckage_6', + [-620711158] = 'prop_rub_wreckage_7', + [-912256951] = 'prop_rub_wreckage_8', + [-405713749] = 'prop_rub_wreckage_9', + [-154609122] = 'prop_rum_bottle', + [402778632] = 'prop_runlight_b', + [140790497] = 'prop_runlight_g', + [754816039] = 'prop_runlight_r', + [-1384835816] = 'prop_runlight_y', + [-1569260983] = 'prop_rural_windmill_l1', + [762449981] = 'prop_rural_windmill_l2', + [1000238796] = 'prop_rural_windmill', + [-1584403182] = 'prop_rus_olive_l2', + [2075346744] = 'prop_rus_olive_wint', + [-1173932531] = 'prop_rus_olive', + [-676184356] = 'prop_s_pine_dead_01', + [-200982847] = 'prop_sacktruck_01', + [38230152] = 'prop_sacktruck_02a', + [686990798] = 'prop_sacktruck_02b', + [-2011860718] = 'prop_safety_glasses', + [-1479625776] = 'prop_sam_01', + [-692093509] = 'prop_sandwich_01', + [-1026778664] = 'prop_saplin_001_b', + [-1884146780] = 'prop_saplin_001_c', + [618696223] = 'prop_saplin_002_b', + [863710036] = 'prop_saplin_002_c', + [-1711923954] = 'prop_sapling_01', + [-2093428068] = 'prop_sapling_break_01', + [-1324470710] = 'prop_sapling_break_02', + [-385807240] = 'prop_satdish_2_a', + [-213901066] = 'prop_satdish_2_b', + [-1040630167] = 'prop_satdish_2_f', + [1959633939] = 'prop_satdish_2_g', + [-1673594709] = 'prop_satdish_3_b', + [-1557461381] = 'prop_satdish_3_c', + [-1855167746] = 'prop_satdish_3_d', + [-1495557877] = 'prop_satdish_l_01', + [-1188479578] = 'prop_satdish_l_02', + [1046318489] = 'prop_satdish_l_02b', + [-727843691] = 'prop_satdish_s_01', + [-1025550056] = 'prop_satdish_s_02', + [-368990372] = 'prop_satdish_s_03', + [-1584951622] = 'prop_satdish_s_04a', + [541723713] = 'prop_satdish_s_04b', + [1309435845] = 'prop_satdish_s_04c', + [-1749780528] = 'prop_satdish_s_05a', + [1223940684] = 'prop_satdish_s_05b', + [115679102] = 'prop_sc1_06_gate_l', + [-1927271438] = 'prop_sc1_06_gate_r', + [720693755] = 'prop_sc1_12_door', + [703855057] = 'prop_sc1_21_g_door_01', + [1896366565] = 'prop_scaffold_pole', + [1507654113] = 'prop_scafold_01a', + [-1726580657] = 'prop_scafold_01c', + [-845684399] = 'prop_scafold_01f', + [-952969805] = 'prop_scafold_02a', + [-1508928659] = 'prop_scafold_02c', + [709238004] = 'prop_scafold_03a', + [1056851556] = 'prop_scafold_03b', + [1321264617] = 'prop_scafold_03c', + [-502264711] = 'prop_scafold_03f', + [108315486] = 'prop_scafold_04a', + [-318072738] = 'prop_scafold_05a', + [1769771028] = 'prop_scafold_06a', + [-301885156] = 'prop_scafold_06b', + [6503903] = 'prop_scafold_06c', + [380070235] = 'prop_scafold_07a', + [-1453683313] = 'prop_scafold_08a', + [-726771162] = 'prop_scafold_09a', + [-820094346] = 'prop_scafold_frame1a', + [-507904083] = 'prop_scafold_frame1b', + [573669515] = 'prop_scafold_frame1c', + [404057187] = 'prop_scafold_frame1f', + [-827794773] = 'prop_scafold_frame2a', + [-772415163] = 'prop_scafold_frame2b', + [1467739199] = 'prop_scafold_frame2c', + [17157696] = 'prop_scafold_frame3a', + [889108045] = 'prop_scafold_frame3c', + [2026758407] = 'prop_scafold_rail_01', + [-592402233] = 'prop_scafold_rail_02', + [-296006628] = 'prop_scafold_rail_03', + [799268283] = 'prop_scafold_xbrace', + [1985013634] = 'prop_scalpel', + [-66965919] = 'prop_scn_police_torch', + [1411425721] = 'prop_scourer_01', + [886171930] = 'prop_scrap_2_crate', + [-1791375708] = 'prop_scrap_win_01', + [1363024442] = 'prop_scrim_01', + [-1018528175] = 'prop_scrim_02', + [-1397635855] = 'prop_scythemower', + [1274586365] = 'prop_sea_rubprox_01', + [-16149258] = 'prop_seabrain_01', + [2030999457] = 'prop_seagroup_02', + [297693906] = 'prop_sealife_01', + [567350007] = 'prop_sealife_02', + [862041624] = 'prop_sealife_03', + [1293609354] = 'prop_sealife_04', + [1593871705] = 'prop_sealife_05', + [641979137] = 'prop_seaweed_01', + [948533132] = 'prop_seaweed_02', + [1142865108] = 'prop_sec_barier_01a', + [406416082] = 'prop_sec_barier_02a', + [242636620] = 'prop_sec_barier_02b', + [627816582] = 'prop_sec_barier_03a', + [-136782495] = 'prop_sec_barier_03b', + [-1591116048] = 'prop_sec_barier_04a', + [1801655140] = 'prop_sec_barier_04b', + [307771752] = 'prop_sec_barier_base_01', + [-1184516519] = 'prop_sec_barrier_ld_01a', + [1230099731] = 'prop_sec_barrier_ld_02a', + [628598716] = 'prop_sec_gate_01b', + [-577103870] = 'prop_sec_gate_01c', + [267648181] = 'prop_sec_gate_01d', + [878161517] = 'prop_secdoor_01', + [1482630529] = 'prop_section_garage_01', + [-1249748547] = 'prop_security_case_01', + [-1162517469] = 'prop_security_case_02', + [205857876] = 'prop_securityvan_lightrig', + [54873101] = 'prop_set_generator_01_cr', + [-823726932] = 'prop_set_generator_01', + [1511642783] = 'prop_sewing_fabric', + [262461191] = 'prop_sewing_machine', + [2091124520] = 'prop_sglasses_stand_01', + [-1964268617] = 'prop_sglasses_stand_02', + [1563902689] = 'prop_sglasses_stand_02b', + [1967421541] = 'prop_sglasses_stand_03', + [1973320977] = 'prop_sglasses_stand_1b', + [486135506] = 'prop_sglasss_1_lod', + [-2110365083] = 'prop_sglasss_1b_lod', + [610446625] = 'prop_sgun_casing', + [-278067143] = 'prop_sh_beer_pissh_01', + [-342360182] = 'prop_sh_bong_01', + [-110986183] = 'prop_sh_cigar_01', + [-1199910959] = 'prop_sh_joint_01', + [-711103718] = 'prop_sh_mr_rasp_01', + [1598379640] = 'prop_sh_shot_glass', + [-2132370718] = 'prop_sh_tall_glass', + [-1536154964] = 'prop_sh_tt_fridgedoor', + [757668998] = 'prop_sh_wine_glass', + [1257886169] = 'prop_shamal_crash', + [572449021] = 'prop_shelves_01', + [-1653844078] = 'prop_shelves_02', + [-886295791] = 'prop_shelves_03', + [24002365] = 'prop_shop_front_door_l', + [1833539318] = 'prop_shop_front_door_r', + [605601072] = 'prop_shopping_bags01', + [1907480645] = 'prop_shopping_bags02', + [1627778316] = 'prop_shopsign_01', + [-1118166626] = 'prop_shot_glass', + [333258627] = 'prop_shots_glass_cs', + [313442092] = 'prop_shower_01', + [1472881208] = 'prop_shower_rack_01', + [-1593002777] = 'prop_shower_towel', + [-1902553960] = 'prop_showroom_door_l', + [1564471782] = 'prop_showroom_door_r', + [773350470] = 'prop_showroom_glass_1', + [-1829309699] = 'prop_showroom_glass_1b', + [2000516751] = 'prop_showroom_glass_2', + [143825211] = 'prop_showroom_glass_3', + [1404743562] = 'prop_showroom_glass_4', + [1703138076] = 'prop_showroom_glass_5', + [-1383800031] = 'prop_showroom_glass_6', + [-1432741974] = 'prop_shredder_01', + [-1744853985] = 'prop_shrub_rake', + [-1352332651] = 'prop_shuttering01', + [667319138] = 'prop_shuttering02', + [309416120] = 'prop_shuttering03', + [137575484] = 'prop_shuttering04', + [1370689662] = 'prop_side_lights', + [2023881475] = 'prop_side_spreader', + [-1127113574] = 'prop_sign_airp_01a', + [-733459309] = 'prop_sign_airp_02a', + [-1860385163] = 'prop_sign_airp_02b', + [1356205294] = 'prop_sign_big_01', + [-667908451] = 'prop_sign_freewayentrance', + [-377605116] = 'prop_sign_gas_01', + [-59483664] = 'prop_sign_gas_02', + [-1862434048] = 'prop_sign_gas_03', + [-1614012259] = 'prop_sign_gas_04', + [1211452612] = 'prop_sign_interstate_01', + [1441261609] = 'prop_sign_interstate_02', + [749704633] = 'prop_sign_interstate_03', + [979185940] = 'prop_sign_interstate_04', + [284941906] = 'prop_sign_interstate_05', + [543595731] = 'prop_sign_loading_1', + [-1532791430] = 'prop_sign_mallet', + [238110203] = 'prop_sign_parking_1', + [-1892213657] = 'prop_sign_prologue_01a', + [-276539604] = 'prop_sign_prologue_06e', + [-1798594116] = 'prop_sign_prologue_06g', + [-949234773] = 'prop_sign_road_01a', + [2029303486] = 'prop_sign_road_01b', + [1800641404] = 'prop_sign_road_01c', + [-639994124] = 'prop_sign_road_02a', + [-1293825] = 'prop_sign_road_03a', + [840050250] = 'prop_sign_road_03b', + [609684180] = 'prop_sign_road_03c', + [1452666705] = 'prop_sign_road_03d', + [1191039009] = 'prop_sign_road_03e', + [2034218148] = 'prop_sign_road_03f', + [1803721002] = 'prop_sign_road_03g', + [-1648525921] = 'prop_sign_road_03h', + [-1917330028] = 'prop_sign_road_03i', + [-1607925130] = 'prop_sign_road_03j', + [-765008143] = 'prop_sign_road_03k', + [-998978803] = 'prop_sign_road_03l', + [-156356737] = 'prop_sign_road_03m', + [-395898127] = 'prop_sign_road_03n', + [432141734] = 'prop_sign_road_03o', + [193190186] = 'prop_sign_road_03p', + [-488700007] = 'prop_sign_road_03q', + [-249781228] = 'prop_sign_road_03r', + [-9158461] = 'prop_sign_road_03s', + [768318833] = 'prop_sign_road_03t', + [966571283] = 'prop_sign_road_03u', + [1205227910] = 'prop_sign_road_03v', + [1445490218] = 'prop_sign_road_03w', + [1685785295] = 'prop_sign_road_03x', + [1963305956] = 'prop_sign_road_03y', + [-2092152719] = 'prop_sign_road_03z', + [-463994753] = 'prop_sign_road_04a', + [-133126160] = 'prop_sign_road_04b', + [156945028] = 'prop_sign_road_04c', + [455110159] = 'prop_sign_road_04d', + [-1722094986] = 'prop_sign_road_04e', + [730828513] = 'prop_sign_road_04f', + [-1174808720] = 'prop_sign_road_04g_l1', + [1053734239] = 'prop_sign_road_04g', + [1347016789] = 'prop_sign_road_04h', + [-764650340] = 'prop_sign_road_04i', + [1707967324] = 'prop_sign_road_04j', + [2012751793] = 'prop_sign_road_04k', + [-1993258461] = 'prop_sign_road_04l', + [133449643] = 'prop_sign_road_04m', + [422144533] = 'prop_sign_road_04n', + [-1418850656] = 'prop_sign_road_04o', + [-1117900160] = 'prop_sign_road_04p', + [1081686200] = 'prop_sign_road_04q', + [1393352159] = 'prop_sign_road_04r', + [-435354659] = 'prop_sign_road_04s', + [-159800138] = 'prop_sign_road_04t', + [1977951119] = 'prop_sign_road_04u', + [-2018392280] = 'prop_sign_road_04v', + [-1721242988] = 'prop_sign_road_04w', + [729058991] = 'prop_sign_road_04x', + [-1371630523] = 'prop_sign_road_04y', + [-1057375813] = 'prop_sign_road_04z', + [1887651104] = 'prop_sign_road_04za', + [-2100663890] = 'prop_sign_road_04zb', + [1502931467] = 'prop_sign_road_05a', + [-331378834] = 'prop_sign_road_05b', + [219009290] = 'prop_sign_road_05c', + [532969079] = 'prop_sign_road_05d', + [-1651641860] = 'prop_sign_road_05e', + [793482617] = 'prop_sign_road_05f', + [1144831835] = 'prop_sign_road_05g', + [1392401630] = 'prop_sign_road_05h', + [-943634842] = 'prop_sign_road_05i', + [-628921366] = 'prop_sign_road_05j', + [1797524777] = 'prop_sign_road_05k', + [-1914350933] = 'prop_sign_road_05l', + [-582192764] = 'prop_sign_road_05m', + [-1148375546] = 'prop_sign_road_05n', + [-2118829485] = 'prop_sign_road_05o', + [1868764591] = 'prop_sign_road_05p', + [133285582] = 'prop_sign_road_05q', + [-172481957] = 'prop_sign_road_05r', + [-1467316223] = 'prop_sign_road_05s', + [442297252] = 'prop_sign_road_05t', + [995405207] = 'prop_sign_road_05u', + [688785674] = 'prop_sign_road_05v', + [-269904194] = 'prop_sign_road_05w', + [1566503339] = 'prop_sign_road_05x', + [1983816554] = 'prop_sign_road_05y', + [1944821444] = 'prop_sign_road_05z', + [-1753555592] = 'prop_sign_road_05za', + [-1496457572] = 'prop_sign_road_06a', + [-1798096217] = 'prop_sign_road_06b', + [-2090002469] = 'prop_sign_road_06c', + [1898279756] = 'prop_sign_road_06d', + [-570995470] = 'prop_sign_road_06e', + [-879318991] = 'prop_sign_road_06f', + [-1169914483] = 'prop_sign_road_06g', + [-1474502342] = 'prop_sign_road_06h', + [843019649] = 'prop_sign_road_06i', + [539480402] = 'prop_sign_road_06j', + [282735287] = 'prop_sign_road_06k', + [-290853289] = 'prop_sign_road_06l', + [1822452318] = 'prop_sign_road_06m', + [1509115140] = 'prop_sign_road_06n', + [1212260769] = 'prop_sign_road_06o', + [1165990941] = 'prop_sign_road_06p', + [-1454939221] = 'prop_sign_road_06q', + [-1547577184] = 'prop_sign_road_06r', + [-1853115340] = 'prop_sign_road_06s', + [-797331153] = 'prop_sign_road_07a', + [-1119188271] = 'prop_sign_road_07b', + [-1815190559] = 'prop_sign_road_08a', + [1762201175] = 'prop_sign_road_08b', + [-1097090961] = 'prop_sign_road_09a', + [240277467] = 'prop_sign_road_09b', + [-733912134] = 'prop_sign_road_09c', + [-1333126068] = 'prop_sign_road_09d', + [1999907185] = 'prop_sign_road_09e', + [-974207211] = 'prop_sign_road_09f', + [-1058868155] = 'prop_sign_road_callbox', + [1021214550] = 'prop_sign_road_restriction_10', + [60777741] = 'prop_sign_route_01', + [-928289202] = 'prop_sign_route_11', + [-1522620555] = 'prop_sign_route_13', + [-614394955] = 'prop_sign_route_15', + [826728812] = 'prop_sign_sec_01', + [-157127644] = 'prop_sign_sec_02', + [425374100] = 'prop_sign_sec_03', + [-735074497] = 'prop_sign_sec_04', + [-455948155] = 'prop_sign_sec_05', + [-1326686055] = 'prop_sign_sec_06', + [-1792687544] = 'prop_sign_taxi_1', + [1491239074] = 'prop_single_grid_line', + [76092178] = 'prop_single_rose', + [-832054451] = 'prop_sink_01', + [-525238304] = 'prop_sink_02', + [555352240] = 'prop_sink_03', + [844145437] = 'prop_sink_04', + [90130747] = 'prop_sink_05', + [384625750] = 'prop_sink_06', + [-1907102305] = 'prop_skate_flatramp_cr', + [2109585724] = 'prop_skate_flatramp', + [-1912195761] = 'prop_skate_funbox_cr', + [1325012866] = 'prop_skate_funbox', + [-613845235] = 'prop_skate_halfpipe_cr', + [-160475089] = 'prop_skate_halfpipe', + [1982829832] = 'prop_skate_kickers_cr', + [1931428867] = 'prop_skate_kickers', + [1367199760] = 'prop_skate_quartpipe_cr', + [846020017] = 'prop_skate_quartpipe', + [51727836] = 'prop_skate_rail', + [-1685045150] = 'prop_skate_spiner_cr', + [-1964556336] = 'prop_skate_spiner', + [1424042130] = 'prop_skid_box_01', + [1730858277] = 'prop_skid_box_02', + [832856633] = 'prop_skid_box_03', + [1132529106] = 'prop_skid_box_04', + [525712796] = 'prop_skid_box_05', + [553894136] = 'prop_skid_box_06', + [-87886729] = 'prop_skid_box_07', + [291348133] = 'prop_skid_chair_01', + [1071807406] = 'prop_skid_chair_02', + [-1108904010] = 'prop_skid_chair_03', + [-204585309] = 'prop_skid_pillar_01', + [-435147993] = 'prop_skid_pillar_02', + [-1356608749] = 'prop_skid_sleepbag_1', + [-596943609] = 'prop_skid_tent_01', + [1777271576] = 'prop_skid_tent_01b', + [-1055611302] = 'prop_skid_tent_03', + [617248772] = 'prop_skid_tent_cloth', + [1918323043] = 'prop_skid_trolley_1', + [-230045366] = 'prop_skid_trolley_2', + [-387405094] = 'prop_skip_01a', + [364445978] = 'prop_skip_02a', + [-515278816] = 'prop_skip_03', + [-1340926540] = 'prop_skip_04', + [-1831107703] = 'prop_skip_05a', + [-995793124] = 'prop_skip_05b', + [1605769687] = 'prop_skip_06a', + [388197031] = 'prop_skip_08a', + [161075092] = 'prop_skip_08b', + [-1790177567] = 'prop_skip_10a', + [680025219] = 'prop_skip_rope_01', + [-48112401] = 'prop_skunk_bush_01', + [-1175037383] = 'prop_sky_cover_01', + [-1324621082] = 'prop_skylight_01', + [1242953190] = 'prop_skylight_02_l1', + [1054932594] = 'prop_skylight_02', + [1252726310] = 'prop_skylight_03', + [1473556601] = 'prop_skylight_04', + [1982197019] = 'prop_skylight_05', + [2132727951] = 'prop_skylight_06a', + [925419684] = 'prop_skylight_06b', + [1223453739] = 'prop_skylight_06c', + [-1729975506] = 'prop_slacks_01', + [-1961095263] = 'prop_slacks_02', + [816950694] = 'prop_sluicegate', + [-1168924436] = 'prop_sluicegatel', + [1283966294] = 'prop_sluicegater', + [1251246798] = 'prop_slush_dispenser', + [308262790] = 'prop_sm_10_mp_door', + [671816687] = 'prop_sm_14_mp_gar', + [-1378557197] = 'prop_sm_19_clock', + [-1904897132] = 'prop_sm_27_door', + [-1368963005] = 'prop_sm_27_gate_02', + [-1063457618] = 'prop_sm_27_gate_03', + [-1964932808] = 'prop_sm_27_gate_04', + [939273339] = 'prop_sm_27_gate', + [-48868009] = 'prop_sm_locker_door', + [-725970636] = 'prop_sm1_11_doorl', + [827574885] = 'prop_sm1_11_doorr', + [-627681782] = 'prop_sm1_11_garaged', + [1936183844] = 'prop_small_bushyba', + [1674224970] = 'prop_smg_holster_01', + [1915081479] = 'prop_snow_bailer_01', + [903076338] = 'prop_snow_barrel_pile_03', + [1544445682] = 'prop_snow_bench_01', + [2012837021] = 'prop_snow_bin_01', + [173513051] = 'prop_snow_bin_02', + [-1436938693] = 'prop_snow_bush_01_a', + [739293418] = 'prop_snow_bush_02_a', + [1017666073] = 'prop_snow_bush_02_b', + [443483936] = 'prop_snow_bush_03', + [1235412359] = 'prop_snow_bush_04', + [1638772241] = 'prop_snow_bush_04b', + [1382242693] = 'prop_snow_cam_03', + [1849991131] = 'prop_snow_cam_03a', + [1291938645] = 'prop_snow_diggerbkt_01', + [-1587184881] = 'prop_snow_dumpster_01', + [-871648433] = 'prop_snow_elecbox_16', + [635680451] = 'prop_snow_facgate_01', + [-337848190] = 'prop_snow_field_01', + [562447320] = 'prop_snow_field_02', + [1053589092] = 'prop_snow_field_03', + [81496707] = 'prop_snow_field_04', + [176971574] = 'prop_snow_flower_01', + [-1676901836] = 'prop_snow_flower_02', + [1162298325] = 'prop_snow_fnc_01', + [-515818037] = 'prop_snow_fnclink_03crnr2', + [-1863772065] = 'prop_snow_fnclink_03h', + [49970308] = 'prop_snow_fnclink_03i', + [392997700] = 'prop_snow_fncwood_14a', + [-1712213940] = 'prop_snow_fncwood_14b', + [1907318728] = 'prop_snow_fncwood_14c', + [2127100411] = 'prop_snow_fncwood_14d', + [1410835609] = 'prop_snow_fncwood_14e', + [-99254484] = 'prop_snow_gate_farm_03', + [-1331473695] = 'prop_snow_grain_01', + [-924743781] = 'prop_snow_grass_01', + [2049774069] = 'prop_snow_light_01', + [1363875138] = 'prop_snow_oldlight_01b', + [873869803] = 'prop_snow_rail_signals02', + [147102372] = 'prop_snow_rub_trukwreck_2', + [-351262629] = 'prop_snow_side_spreader_01', + [962570067] = 'prop_snow_sign_road_01a', + [-2065375912] = 'prop_snow_sign_road_06e', + [-1124643460] = 'prop_snow_sign_road_06g', + [-692954963] = 'prop_snow_streetlight_01_frag_', + [-996428325] = 'prop_snow_streetlight_09', + [-1486404392] = 'prop_snow_streetlight01', + [-698339330] = 'prop_snow_sub_frame_01a', + [443492491] = 'prop_snow_sub_frame_04b', + [558395118] = 'prop_snow_t_ml_01', + [185221746] = 'prop_snow_t_ml_02', + [73184535] = 'prop_snow_t_ml_03', + [76677081] = 'prop_snow_t_ml_cscene', + [-409826211] = 'prop_snow_telegraph_01a', + [-1272339428] = 'prop_snow_telegraph_02a', + [-801765866] = 'prop_snow_telegraph_03', + [229526925] = 'prop_snow_traffic_rail_1a', + [1073918521] = 'prop_snow_traffic_rail_1b', + [-1367245739] = 'prop_snow_trailer01', + [1830560242] = 'prop_snow_tree_03_e', + [546277594] = 'prop_snow_tree_03_h', + [905229220] = 'prop_snow_tree_03_i', + [-27978499] = 'prop_snow_tree_04_d', + [565828550] = 'prop_snow_tree_04_f', + [549555408] = 'prop_snow_truktrailer_01a', + [1408048185] = 'prop_snow_tyre_01', + [-508577929] = 'prop_snow_wall_light_09a', + [1219140462] = 'prop_snow_wall_light_15a', + [953081984] = 'prop_snow_watertower01_l2', + [-1512529268] = 'prop_snow_watertower01', + [-901878953] = 'prop_snow_watertower03', + [1360389234] = 'prop_snow_woodpile_04a', + [-1225719104] = 'prop_snow_xmas_cards_01', + [-1928024340] = 'prop_snow_xmas_cards_02', + [1823805071] = 'prop_soap_disp_01', + [-838086337] = 'prop_soap_disp_02', + [-524841151] = 'prop_sock_box_01', + [-1633198649] = 'prop_sol_chair', + [86768762] = 'prop_solarpanel_01', + [-759326818] = 'prop_solarpanel_02', + [61929864] = 'prop_solarpanel_03', + [-1114972153] = 'prop_space_pistol', + [1792222914] = 'prop_space_rifle', + [-968169310] = 'prop_speaker_01', + [2112313308] = 'prop_speaker_02', + [-1474974664] = 'prop_speaker_03', + [-1885111468] = 'prop_speaker_05', + [1126163022] = 'prop_speaker_06', + [1902132942] = 'prop_speaker_07', + [648227157] = 'prop_speaker_08', + [-157791115] = 'prop_speedball_01', + [-678752633] = 'prop_sponge_01', + [1157292806] = 'prop_sports_clock_01', + [1400279820] = 'prop_spot_01', + [1345719963] = 'prop_spot_clamp_02', + [127052170] = 'prop_spot_clamp', + [-1462085431] = 'prop_spray_backpack_01', + [1420515116] = 'prop_spray_jackframe', + [-1491499226] = 'prop_spray_jackleg', + [291444619] = 'prop_sprayer', + [-640983710] = 'prop_spraygun_01', + [-1625163671] = 'prop_sprink_crop_01', + [1864388154] = 'prop_sprink_golf_01', + [946782395] = 'prop_sprink_park_01', + [-203475463] = 'prop_spycam', + [1881787435] = 'prop_squeegee', + [1818395686] = 'prop_ss1_05_mp_door', + [2049718375] = 'prop_ss1_08_mp_door_l', + [216030657] = 'prop_ss1_08_mp_door_r', + [-2076287065] = 'prop_ss1_10_door_l', + [-374527357] = 'prop_ss1_10_door_r', + [-1857663329] = 'prop_ss1_14_garage_door', + [-1867159867] = 'prop_ss1_mpint_door_l', + [911651337] = 'prop_ss1_mpint_door_r', + [-493122268] = 'prop_ss1_mpint_garage_cl', + [-1212944997] = 'prop_ss1_mpint_garage', + [-1145063624] = 'prop_stag_do_rope', + [-2013109097] = 'prop_starfish_01', + [1976746040] = 'prop_starfish_02', + [748957148] = 'prop_starfish_03', + [-1157901789] = 'prop_start_finish_line_01', + [-183132887] = 'prop_start_gate_01', + [690751374] = 'prop_start_gate_01b', + [-221765270] = 'prop_start_grid_01', + [1099032664] = 'prop_stat_pack_01', + [-2102670060] = 'prop_staticmixer_01', + [1180729823] = 'prop_steam_basket_01', + [1478108498] = 'prop_steam_basket_02', + [-1033361631] = 'prop_steps_big_01', + [512062897] = 'prop_stickbfly', + [553845503] = 'prop_stickhbird', + [-274348208] = 'prop_still', + [311714906] = 'prop_stockade_wheel_flat', + [-890463279] = 'prop_stockade_wheel', + [-1027805354] = 'prop_stoneshroom1', + [1358072771] = 'prop_stoneshroom2', + [1130482396] = 'prop_stool_01', + [-1873238189] = 'prop_storagetank_01_cr', + [792791774] = 'prop_storagetank_01', + [1115304272] = 'prop_storagetank_02', + [1890640474] = 'prop_storagetank_02b', + [416210422] = 'prop_storagetank_03', + [1977052615] = 'prop_storagetank_03a', + [1747145311] = 'prop_storagetank_03b', + [638679163] = 'prop_storagetank_04', + [383146481] = 'prop_storagetank_05', + [-334560157] = 'prop_storagetank_06', + [1897886171] = 'prop_storagetank_07a', + [-1063472968] = 'prop_streetlight_01', + [1821241621] = 'prop_streetlight_01b', + [-1222468156] = 'prop_streetlight_02', + [729253480] = 'prop_streetlight_03', + [1327054116] = 'prop_streetlight_03b', + [1021745343] = 'prop_streetlight_03c', + [-1114695146] = 'prop_streetlight_03d', + [-1454378608] = 'prop_streetlight_03e', + [431612653] = 'prop_streetlight_04', + [326972916] = 'prop_streetlight_05_b', + [267702115] = 'prop_streetlight_05', + [-30528554] = 'prop_streetlight_06', + [-365135956] = 'prop_streetlight_07a', + [-614573584] = 'prop_streetlight_07b', + [1847069612] = 'prop_streetlight_08', + [1380570124] = 'prop_streetlight_09', + [-214501064] = 'prop_streetlight_10', + [173177608] = 'prop_streetlight_11a', + [-1684988513] = 'prop_streetlight_11b', + [-1529663453] = 'prop_streetlight_11c', + [-1332492740] = 'prop_streetlight_12a', + [-1978238654] = 'prop_streetlight_12b', + [681787797] = 'prop_streetlight_14a', + [-507269705] = 'prop_streetlight_15a', + [-1080006443] = 'prop_streetlight_16a', + [-1116041313] = 'prop_strip_door_01', + [2088900873] = 'prop_strip_pole_01', + [1529403367] = 'prop_stripmenu', + [-3921994] = 'prop_stripset', + [2074531687] = 'prop_studio_light_01', + [1776497632] = 'prop_studio_light_02', + [-2120293549] = 'prop_studio_light_03', + [-2086291435] = 'prop_sub_chunk_01', + [493317742] = 'prop_sub_cover_01', + [-2128680992] = 'prop_sub_crane_hook', + [-746947486] = 'prop_sub_frame_01a', + [-1103080978] = 'prop_sub_frame_01b', + [1899182025] = 'prop_sub_frame_01c', + [-1130344490] = 'prop_sub_frame_02a', + [681419899] = 'prop_sub_frame_03a', + [-1076177897] = 'prop_sub_frame_04a', + [-837455732] = 'prop_sub_frame_04b', + [-1116128604] = 'prop_sub_gantry', + [-1663877307] = 'prop_sub_release', + [-525926661] = 'prop_sub_trans_01a', + [1870961552] = 'prop_sub_trans_02a', + [900310739] = 'prop_sub_trans_03a', + [1464363276] = 'prop_sub_trans_04a', + [140757512] = 'prop_sub_trans_05b', + [-1968414405] = 'prop_sub_trans_06b', + [1184436308] = 'prop_suitcase_01', + [1622603823] = 'prop_suitcase_01b', + [-214655688] = 'prop_suitcase_01c', + [-177495642] = 'prop_suitcase_01d', + [623955332] = 'prop_suitcase_02', + [826992056] = 'prop_suitcase_03', + [-1460271444] = 'prop_suitcase_03b', + [59140280] = 'prop_surf_board_01', + [-105032410] = 'prop_surf_board_02', + [644198006] = 'prop_surf_board_03', + [344984267] = 'prop_surf_board_04', + [506946533] = 'prop_surf_board_ldn_01', + [246006942] = 'prop_surf_board_ldn_02', + [687012144] = 'prop_surf_board_ldn_03', + [-1154114121] = 'prop_surf_board_ldn_04', + [-131025346] = 'prop_swiss_ball_01', + [-61966571] = 'prop_syringe_01', + [-386283689] = 'prop_t_coffe_table_02', + [502827120] = 'prop_t_coffe_table', + [465647765] = 'prop_t_shirt_ironing', + [647052434] = 'prop_t_shirt_row_01', + [342136889] = 'prop_t_shirt_row_02', + [193415603] = 'prop_t_shirt_row_02b', + [-63346721] = 'prop_t_shirt_row_03', + [-371080400] = 'prop_t_shirt_row_04', + [1109832849] = 'prop_t_shirt_row_05l', + [-1826761078] = 'prop_t_shirt_row_05r', + [1088478360] = 'prop_t_sofa_02', + [-1964110779] = 'prop_t_sofa', + [-656927072] = 'prop_t_telescope_01b', + [-1521264200] = 'prop_table_01_chr_a', + [-1235256368] = 'prop_table_01_chr_b', + [-207026330] = 'prop_table_01', + [-1761659350] = 'prop_table_02_chr', + [702477265] = 'prop_table_02', + [-741944541] = 'prop_table_03_chr', + [386059801] = 'prop_table_03', + [146905321] = 'prop_table_03b_chr', + [-1462060028] = 'prop_table_03b_cs', + [-380698483] = 'prop_table_03b', + [1404176808] = 'prop_table_04_chr', + [794001094] = 'prop_table_04', + [47332588] = 'prop_table_05_chr', + [487905865] = 'prop_table_05', + [-2016553006] = 'prop_table_06_chr', + [1350713635] = 'prop_table_06', + [-1188005325] = 'prop_table_07_l1', + [1051204975] = 'prop_table_07', + [-232870343] = 'prop_table_08_chr', + [-46621628] = 'prop_table_08_side', + [1982532724] = 'prop_table_08', + [-219578277] = 'prop_table_mic_01', + [509106503] = 'prop_table_para_comb_01', + [816905720] = 'prop_table_para_comb_02', + [-40724548] = 'prop_table_para_comb_03', + [-679720048] = 'prop_table_para_comb_04', + [-382013683] = 'prop_table_para_comb_05', + [909487668] = 'prop_table_ten_bat', + [-692384911] = 'prop_table_tennis', + [-326606499] = 'prop_tablesaw_01', + [1981475410] = 'prop_tablesmall_01', + [1655278098] = 'prop_taco_01', + [1968648045] = 'prop_taco_02', + [959623711] = 'prop_tail_gate_col', + [-1851944363] = 'prop_tall_drygrass_aa', + [1943033760] = 'prop_tall_glass', + [-2139632096] = 'prop_tall_grass_ba', + [-531344027] = 'prop_tanktrailer_01a', + [-1999188639] = 'prop_tapeplayer_01', + [-1625479312] = 'prop_target_arm_b', + [-1142744341] = 'prop_target_arm_long', + [-1377695428] = 'prop_target_arm_sm', + [-1727683449] = 'prop_target_arm', + [-121801331] = 'prop_target_backboard_b', + [1531278693] = 'prop_target_backboard', + [1698512660] = 'prop_target_blue_arrow', + [520020464] = 'prop_target_blue', + [1806541954] = 'prop_target_bull_b', + [1994234085] = 'prop_target_bull', + [597152946] = 'prop_target_comp_metal', + [-66869463] = 'prop_target_comp_wood', + [-295816636] = 'prop_target_frag_board', + [-1020646305] = 'prop_target_frame_01', + [-1365850513] = 'prop_target_inner_b', + [1074322985] = 'prop_target_inner1', + [-22604388] = 'prop_target_inner2_b', + [1312193156] = 'prop_target_inner2', + [1169744207] = 'prop_target_inner3_b', + [1553176382] = 'prop_target_inner3', + [949702051] = 'prop_target_ora_purp_01', + [-1373134080] = 'prop_target_oran_cross', + [-2006859820] = 'prop_target_orange_arrow', + [1598655701] = 'prop_target_purp_arrow', + [784977997] = 'prop_target_purp_cross', + [180220464] = 'prop_target_red_arrow', + [-3877305] = 'prop_target_red_blue_01', + [1681797341] = 'prop_target_red_cross', + [485206839] = 'prop_target_red', + [-1232780856] = 'prop_tarp_strap', + [1867913151] = 'prop_taxi_meter_1', + [-232645291] = 'prop_taxi_meter_2', + [1553744564] = 'prop_tea_trolly', + [603786675] = 'prop_tea_urn', + [44758414] = 'prop_telegraph_01a', + [337057898] = 'prop_telegraph_01b', + [643087589] = 'prop_telegraph_01c', + [1782596803] = 'prop_telegraph_01d', + [2013454408] = 'prop_telegraph_01e', + [-1894576532] = 'prop_telegraph_01f', + [-1664177693] = 'prop_telegraph_01g', + [312449251] = 'prop_telegraph_02a', + [1044049945] = 'prop_telegraph_02b', + [-1222487368] = 'prop_telegraph_03', + [2043798770] = 'prop_telegraph_04a', + [-1383773092] = 'prop_telegraph_04b', + [658916172] = 'prop_telegraph_05a', + [573389082] = 'prop_telegraph_05b', + [131794038] = 'prop_telegraph_05c', + [2033510992] = 'prop_telegraph_06a', + [-1600276187] = 'prop_telegraph_06b', + [-1898474087] = 'prop_telegraph_06c', + [729614651] = 'prop_telegwall_01a', + [940581473] = 'prop_telegwall_01b', + [-432605400] = 'prop_telegwall_02a', + [-1288958521] = 'prop_telegwall_03a', + [552167744] = 'prop_telegwall_03b', + [-357761560] = 'prop_telegwall_04a', + [1186047406] = 'prop_telescope_01', + [844159446] = 'prop_telescope', + [-151113999] = 'prop_temp_block_blocker', + [552807189] = 'prop_temp_carrier', + [-1641715447] = 'prop_tennis_bag_01', + [2142056602] = 'prop_tennis_ball_lobber', + [-1720813907] = 'prop_tennis_ball', + [1188107761] = 'prop_tennis_net_01', + [2052737670] = 'prop_tennis_rack_01', + [-1085743389] = 'prop_tennis_rack_01b', + [-551366296] = 'prop_tequila_bottle', + [1673852595] = 'prop_tequila', + [-1632046606] = 'prop_tequsunrise', + [-357480896] = 'prop_test_bed', + [160789653] = 'prop_test_boulder_01', + [390860802] = 'prop_test_boulder_02', + [773471646] = 'prop_test_boulder_03', + [899107992] = 'prop_test_boulder_04', + [-1693574816] = 'prop_test_elevator_dl', + [1839251074] = 'prop_test_elevator_dr', + [251770068] = 'prop_test_elevator', + [-297314236] = 'prop_test_rocks01', + [-1601356591] = 'prop_test_rocks02', + [-1968566005] = 'prop_test_rocks03', + [122030657] = 'prop_test_rocks04', + [191758891] = 'prop_test_sandcas_002', + [1149510719] = 'prop_thindesertfiller_aa', + [743182023] = 'prop_tick_02', + [-1093265220] = 'prop_tick', + [-354930144] = 'prop_till_01_dam', + [303280717] = 'prop_till_01', + [534367705] = 'prop_till_02', + [759654580] = 'prop_till_03', + [-1176957578] = 'prop_time_capsule_01', + [787272080] = 'prop_tint_towel', + [-179254208] = 'prop_tint_towels_01', + [-2126169243] = 'prop_tint_towels_01b', + [1697216212] = 'prop_toaster_01', + [1055533654] = 'prop_toaster_02', + [-930879665] = 'prop_toilet_01', + [-1228586030] = 'prop_toilet_02', + [-1410060752] = 'prop_toilet_03', + [139983360] = 'prop_toilet_brush_01', + [1279857212] = 'prop_toilet_cube_01', + [806607070] = 'prop_toilet_cube_02', + [-217671688] = 'prop_toilet_roll_01', + [-468616690] = 'prop_toilet_roll_02', + [-699146605] = 'prop_toilet_roll_03', + [1793001351] = 'prop_toilet_roll_04', + [2000199738] = 'prop_toilet_roll_05', + [1564445728] = 'prop_toilet_shamp_01', + [1392670630] = 'prop_toilet_shamp_02', + [-546701982] = 'prop_toilet_soap_01', + [-802201875] = 'prop_toilet_soap_02', + [-1165675623] = 'prop_toilet_soap_03', + [-1404987630] = 'prop_toilet_soap_04', + [-2059029335] = 'prop_toiletfoot_static', + [260517631] = 'prop_tollbooth_1', + [-533884656] = 'prop_tool_adjspanner', + [732255442] = 'prop_tool_bench01', + [31071109] = 'prop_tool_bench02_ld', + [904554844] = 'prop_tool_bench02', + [896078401] = 'prop_tool_blowtorch', + [-2039574742] = 'prop_tool_bluepnt', + [887694239] = 'prop_tool_box_01', + [648185618] = 'prop_tool_box_02', + [-1784486639] = 'prop_tool_box_03', + [-1972842851] = 'prop_tool_box_04', + [-424507601] = 'prop_tool_box_05', + [1467574459] = 'prop_tool_box_06', + [1248317080] = 'prop_tool_box_07', + [-113902346] = 'prop_tool_broom', + [1990201466] = 'prop_tool_broom2_l1', + [1689385044] = 'prop_tool_broom2', + [-1960568157] = 'prop_tool_cable01', + [-1119158544] = 'prop_tool_cable02', + [2115125482] = 'prop_tool_consaw', + [1610146834] = 'prop_tool_drill', + [-1152027126] = 'prop_tool_fireaxe', + [-127739306] = 'prop_tool_hammer', + [-246563715] = 'prop_tool_hardhat', + [1360563376] = 'prop_tool_jackham', + [-1187684779] = 'prop_tool_mallet', + [1623033797] = 'prop_tool_mopbucket', + [1854391800] = 'prop_tool_nailgun', + [260873931] = 'prop_tool_pickaxe', + [-548333345] = 'prop_tool_pliers', + [434666704] = 'prop_tool_rake_l1', + [-1855416667] = 'prop_tool_rake', + [-358944507] = 'prop_tool_sawhorse', + [-1323607904] = 'prop_tool_screwdvr01', + [-910882349] = 'prop_tool_screwdvr02', + [1054209047] = 'prop_tool_screwdvr03', + [-531179099] = 'prop_tool_shovel', + [1594770590] = 'prop_tool_shovel006', + [2144550976] = 'prop_tool_shovel2', + [-1095320058] = 'prop_tool_shovel3', + [-1386603699] = 'prop_tool_shovel4', + [-617580807] = 'prop_tool_shovel5', + [58886654] = 'prop_tool_sledgeham', + [-2050576199] = 'prop_tool_spanner01', + [1996755764] = 'prop_tool_spanner02', + [-1840363064] = 'prop_tool_spanner03', + [1751718740] = 'prop_tool_torch', + [10555072] = 'prop_tool_wrench', + [-1674314660] = 'prop_toolchest_01', + [-1326111298] = 'prop_toolchest_02', + [-1485840051] = 'prop_toolchest_03_l2', + [-2111846380] = 'prop_toolchest_03', + [-866263921] = 'prop_toolchest_04', + [-573669520] = 'prop_toolchest_05', + [829211247] = 'prop_toothb_cup_01', + [-1664982460] = 'prop_toothbrush_01', + [-1643959453] = 'prop_toothpaste_01', + [814150459] = 'prop_tornado_wheel', + [-835068288] = 'prop_torture_01', + [1716133836] = 'prop_torture_ch_01', + [-645296272] = 'prop_tourist_map_01', + [-1391719270] = 'prop_towel_01', + [38324630] = 'prop_towel_rail_01', + [337341755] = 'prop_towel_rail_02', + [1902578957] = 'prop_towel_shelf_01', + [1415168320] = 'prop_towel_small_01', + [-1633398718] = 'prop_towel2_01', + [566679177] = 'prop_towel2_02', + [60858040] = 'prop_towercrane_01a', + [1681875160] = 'prop_towercrane_02a', + [494228293] = 'prop_towercrane_02b', + [263894992] = 'prop_towercrane_02c', + [1163207500] = 'prop_towercrane_02d', + [1613519098] = 'prop_towercrane_02e', + [-1526981220] = 'prop_towercrane_02el', + [1122863164] = 'prop_towercrane_02el2', + [1043035044] = 'prop_traffic_01a', + [862871082] = 'prop_traffic_01b', + [-655644382] = 'prop_traffic_01d', + [-730685616] = 'prop_traffic_02a', + [656557234] = 'prop_traffic_02b', + [865627822] = 'prop_traffic_03a', + [589548997] = 'prop_traffic_03b', + [-1535830511] = 'prop_traffic_lightset_01', + [-945465914] = 'prop_traffic_rail_1a', + [-925181899] = 'prop_traffic_rail_1c', + [-2065691369] = 'prop_traffic_rail_2', + [-22216529] = 'prop_traffic_rail_3', + [1560354582] = 'prop_trafficdiv_01', + [-1967654269] = 'prop_trafficdiv_02', + [899858262] = 'prop_trailer_01_new', + [1015012981] = 'prop_trailer_door_closed', + [-1461908217] = 'prop_trailer_door_open', + [-1495726010] = 'prop_trailer_monitor_01', + [1914490036] = 'prop_trailer01_up', + [483393123] = 'prop_trailer01', + [1033239239] = 'prop_trailr_backside', + [1465091378] = 'prop_trailr_base_static', + [279651793] = 'prop_trailr_base', + [-1711381475] = 'prop_trailr_fridge', + [1134178299] = 'prop_trailr_porch1', + [-455396574] = 'prop_train_ticket_02_tu', + [-1700277466] = 'prop_train_ticket_02', + [-1279684868] = 'prop_tram_pole_double01', + [923047320] = 'prop_tram_pole_double02', + [1156788597] = 'prop_tram_pole_double03', + [393610914] = 'prop_tram_pole_roadside', + [1799608506] = 'prop_tram_pole_single01', + [-1669416145] = 'prop_tram_pole_single02', + [-179487766] = 'prop_tram_pole_wide01', + [-947490680] = 'prop_tree_birch_01', + [-1170418187] = 'prop_tree_birch_02', + [977294842] = 'prop_tree_birch_03', + [-1286228176] = 'prop_tree_birch_03b', + [376901224] = 'prop_tree_birch_04', + [10609342] = 'prop_tree_birch_05', + [-2114297789] = 'prop_tree_cedar_02', + [1958725070] = 'prop_tree_cedar_03', + [1768206104] = 'prop_tree_cedar_04', + [-1272652611] = 'prop_tree_cedar_s_01', + [1600467771] = 'prop_tree_cedar_s_02', + [-844656702] = 'prop_tree_cedar_s_04', + [-148774218] = 'prop_tree_cedar_s_05', + [-429702855] = 'prop_tree_cedar_s_06', + [1314228253] = 'prop_tree_cypress_01', + [-567386505] = 'prop_tree_eng_oak_01', + [-1279773008] = 'prop_tree_eng_oak_cr2', + [1204839864] = 'prop_tree_eng_oak_creator', + [2070834250] = 'prop_tree_eucalip_01', + [1192617956] = 'prop_tree_fallen_01', + [887112569] = 'prop_tree_fallen_02', + [-1180374943] = 'prop_tree_fallen_pine_01', + [-1868979192] = 'prop_tree_jacada_01', + [-1903714332] = 'prop_tree_jacada_02', + [680549965] = 'prop_tree_lficus_02', + [721117987] = 'prop_tree_lficus_03', + [1563936387] = 'prop_tree_lficus_05', + [-1978097596] = 'prop_tree_lficus_06', + [1171197889] = 'prop_tree_log_01', + [-1147503786] = 'prop_tree_log_02', + [879962411] = 'prop_tree_maple_02', + [648056198] = 'prop_tree_maple_03', + [884889652] = 'prop_tree_mquite_01_l2', + [2138424832] = 'prop_tree_mquite_01', + [381625293] = 'prop_tree_oak_01', + [1352295901] = 'prop_tree_olive_01', + [-73584559] = 'prop_tree_olive_cr2', + [-155870793] = 'prop_tree_olive_creator', + [-1605097644] = 'prop_tree_pine_01', + [1380551480] = 'prop_tree_pine_02', + [-94404248] = 'prop_tree_stump_01', + [-1221006233] = 'prop_trev_sec_id', + [1434219911] = 'prop_trev_tv_01', + [-87845850] = 'prop_trevor_rope_01', + [1977786498] = 'prop_tri_finish_banner', + [1522397599] = 'prop_tri_pod_lod', + [-117184141] = 'prop_tri_pod', + [-600593637] = 'prop_tri_start_banner', + [1566872341] = 'prop_tri_table_01', + [-701685533] = 'prop_trials_seesaw', + [1323604488] = 'prop_trials_seesaw2', + [-734735991] = 'prop_triple_grid_line', + [726619973] = 'prop_trough1', + [1152297372] = 'prop_truktrailer_01a', + [296207441] = 'prop_tshirt_box_01', + [-1478135602] = 'prop_tshirt_box_02', + [-1251029815] = 'prop_tshirt_shelf_1', + [-962367694] = 'prop_tshirt_shelf_2', + [-2048004474] = 'prop_tshirt_shelf_2a', + [1295580445] = 'prop_tshirt_shelf_2b', + [920375395] = 'prop_tshirt_shelf_2c', + [2141353603] = 'prop_tshirt_stand_01', + [1393626871] = 'prop_tshirt_stand_01b', + [233968420] = 'prop_tshirt_stand_02', + [-532760642] = 'prop_tshirt_stand_04', + [-488621636] = 'prop_tt_screenstatic', + [169137225] = 'prop_tumbler_01_empty', + [-1244923879] = 'prop_tumbler_01', + [1115870447] = 'prop_tumbler_01b_bar', + [1025792510] = 'prop_tumbler_01b', + [1231444999] = 'prop_tunnel_liner01', + [-1809321587] = 'prop_tunnel_liner02', + [639538552] = 'prop_tunnel_liner03', + [-1898057898] = 'prop_turkey_leg_01', + [-1717091240] = 'prop_turnstyle_01', + [1531047580] = 'prop_turnstyle_bars', + [-1394674526] = 'prop_tv_01', + [-2111856860] = 'prop_tv_02', + [-1724413516] = 'prop_tv_03_overlay', + [-897601557] = 'prop_tv_03', + [743076735] = 'prop_tv_04', + [-435919116] = 'prop_tv_05', + [-1211954574] = 'prop_tv_06', + [1599855009] = 'prop_tv_07', + [-1990117150] = 'prop_tv_cabinet_03', + [2065669215] = 'prop_tv_cabinet_04', + [-1513164355] = 'prop_tv_cabinet_05', + [1355733718] = 'prop_tv_cam_02', + [-1113453233] = 'prop_tv_flat_01_screen', + [1036195894] = 'prop_tv_flat_01', + [1340914825] = 'prop_tv_flat_02', + [1065897083] = 'prop_tv_flat_02b', + [1393541839] = 'prop_tv_flat_03', + [-698352776] = 'prop_tv_flat_03b', + [1194029334] = 'prop_tv_flat_michael', + [1298316891] = 'prop_tv_screeen_sign', + [1444640441] = 'prop_tv_stand_01', + [1553931317] = 'prop_tv_test', + [132494565] = 'prop_tyre_rack_01', + [-57685738] = 'prop_tyre_spike_01', + [2090810892] = 'prop_tyre_wall_01', + [-1082910619] = 'prop_tyre_wall_01b', + [776861087] = 'prop_tyre_wall_01c', + [-905357089] = 'prop_tyre_wall_02', + [159919520] = 'prop_tyre_wall_02b', + [-160036996] = 'prop_tyre_wall_02c', + [-666143389] = 'prop_tyre_wall_03', + [690613779] = 'prop_tyre_wall_03b', + [-140899596] = 'prop_tyre_wall_03c', + [1465709448] = 'prop_tyre_wall_04', + [631705629] = 'prop_tyre_wall_05', + [-826852533] = 'prop_umpire_01', + [-1357436528] = 'prop_utensil', + [763497189] = 'prop_v_15_cars_clock', + [1623304263] = 'prop_v_5_bclock', + [-290464389] = 'prop_v_bmike_01', + [-206866686] = 'prop_v_cam_01', + [1427153555] = 'prop_v_door_44', + [-1137425659] = 'prop_v_hook_s', + [1298935678] = 'prop_v_m_phone_01', + [1142221529] = 'prop_v_m_phone_o1s', + [1654893215] = 'prop_v_parachute', + [1652730148] = 'prop_valet_01', + [-2086179979] = 'prop_valet_02', + [1902790395] = 'prop_valet_03', + [1710403596] = 'prop_valet_04', + [36810380] = 'prop_vault_door_scene', + [-1485006268] = 'prop_vault_shutter', + [1209027853] = 'prop_vb_34_tencrt_lighting', + [330240957] = 'prop_vcr_01', + [-2098052468] = 'prop_veg_corn_01', + [-1007446468] = 'prop_veg_crop_01', + [649223100] = 'prop_veg_crop_02', + [-634939447] = 'prop_veg_crop_03_cab', + [-2084538847] = 'prop_veg_crop_03_pump', + [-1163697832] = 'prop_veg_crop_04_leaf', + [-383623015] = 'prop_veg_crop_04', + [-83295126] = 'prop_veg_crop_05', + [955777091] = 'prop_veg_crop_06', + [2007502834] = 'prop_veg_crop_orange', + [-1194920181] = 'prop_veg_crop_tr_01', + [-2040982992] = 'prop_veg_crop_tr_02', + [-62459927] = 'prop_veg_grass_01_a', + [-1634847635] = 'prop_veg_grass_01_b', + [-1933078304] = 'prop_veg_grass_01_c', + [52002182] = 'prop_veg_grass_01_d', + [-1180346286] = 'prop_veg_grass_02_a', + [-534597020] = 'prop_vehicle_hook', + [463039275] = 'prop_ven_market_stool', + [-1184096195] = 'prop_ven_market_table1', + [615030415] = 'prop_ven_shop_1_counter', + [690372739] = 'prop_vend_coffe_01', + [684389648] = 'prop_vend_condom_01', + [73774428] = 'prop_vend_fags_01', + [-1317235795] = 'prop_vend_fridge01', + [-1034034125] = 'prop_vend_snak_01_tu', + [-654402915] = 'prop_vend_snak_01', + [992069095] = 'prop_vend_soda_01', + [1114264700] = 'prop_vend_soda_02', + [1099892058] = 'prop_vend_water_01', + [-770680652] = 'prop_venice_board_01', + [-459014693] = 'prop_venice_board_02', + [-1317169265] = 'prop_venice_board_03', + [797649894] = 'prop_venice_counter_01', + [504531189] = 'prop_venice_counter_02', + [-772083517] = 'prop_venice_counter_03', + [-999336532] = 'prop_venice_counter_04', + [-1137685101] = 'prop_venice_shop_front_01', + [1544902921] = 'prop_venice_sign_01', + [410964433] = 'prop_venice_sign_02', + [172569958] = 'prop_venice_sign_03', + [1125459709] = 'prop_venice_sign_04', + [896142247] = 'prop_venice_sign_05', + [-785038521] = 'prop_venice_sign_06', + [-1016485968] = 'prop_venice_sign_07', + [-67299122] = 'prop_venice_sign_08', + [-297501339] = 'prop_venice_sign_09', + [1357036280] = 'prop_venice_sign_10', + [1049138756] = 'prop_venice_sign_11', + [1690657469] = 'prop_venice_sign_12', + [-1754871813] = 'prop_venice_sign_14', + [-2062015650] = 'prop_venice_sign_15', + [1274163475] = 'prop_venice_sign_16', + [-1465259391] = 'prop_venice_sign_17', + [-565160499] = 'prop_venice_sign_18', + [-872566488] = 'prop_venice_sign_19', + [1568391284] = 'prop_ventsystem_01', + [263824625] = 'prop_ventsystem_02', + [-1666269479] = 'prop_ventsystem_03', + [-2030791835] = 'prop_ventsystem_04', + [77391653] = 'prop_vertdrill_01', + [-409330145] = 'prop_vinewood_sign_01', + [130556722] = 'prop_vintage_filmcan', + [-462817101] = 'prop_vintage_pump', + [1925761914] = 'prop_vodka_bottle', + [-1891207956] = 'prop_voltmeter_01', + [-1609037443] = 'prop_w_board_blank_2', + [-925331707] = 'prop_w_board_blank', + [1504162505] = 'prop_w_fountain_01', + [-789123952] = 'prop_w_me_bottle', + [1725061196] = 'prop_w_me_dagger', + [173095431] = 'prop_w_me_hatchet', + [-518344816] = 'prop_w_me_knife_01', + [80813867] = 'prop_w_r_cedar_01', + [1872658008] = 'prop_w_r_cedar_dead', + [267626795] = 'prop_wait_bench_01', + [1355718178] = 'prop_waiting_seat_01', + [962420079] = 'prop_wall_light_01a', + [-1874162628] = 'prop_wall_light_02a', + [1457658556] = 'prop_wall_light_03a', + [1965446988] = 'prop_wall_light_03b', + [1402414826] = 'prop_wall_light_04a', + [1976979908] = 'prop_wall_light_05a', + [305924745] = 'prop_wall_light_05c', + [-845118873] = 'prop_wall_light_06a', + [-153364983] = 'prop_wall_light_07a', + [1917308407] = 'prop_wall_light_08a', + [959280723] = 'prop_wall_light_09a', + [200219607] = 'prop_wall_light_09b', + [-1950573712] = 'prop_wall_light_09c', + [-1645527091] = 'prop_wall_light_09d', + [-1433191435] = 'prop_wall_light_10a', + [-481743520] = 'prop_wall_light_10b', + [83521730] = 'prop_wall_light_10c', + [1610843006] = 'prop_wall_light_11', + [-1790382584] = 'prop_wall_light_12', + [-200410159] = 'prop_wall_light_12a', + [-1310188721] = 'prop_wall_light_13_snw', + [-813556366] = 'prop_wall_light_13a', + [-1928422948] = 'prop_wall_light_14a', + [1513305126] = 'prop_wall_light_14b', + [1257909556] = 'prop_wall_light_15a', + [-1765292598] = 'prop_wall_light_16a', + [-1418399964] = 'prop_wall_light_16b', + [977439937] = 'prop_wall_light_16c', + [1293333097] = 'prop_wall_light_16d', + [1608538108] = 'prop_wall_light_16e', + [1404517486] = 'prop_wall_light_17a', + [-1563010389] = 'prop_wall_light_17b', + [1816194717] = 'prop_wall_light_18a', + [-156403936] = 'prop_wall_light_19a', + [-1356590918] = 'prop_wall_light_20a', + [1187140144] = 'prop_wall_light_21', + [1858825521] = 'prop_wall_vent_01', + [1492402563] = 'prop_wall_vent_02', + [1161501201] = 'prop_wall_vent_03', + [931495590] = 'prop_wall_vent_04', + [-869259227] = 'prop_wall_vent_05', + [-566178746] = 'prop_wall_vent_06', + [-1541521238] = 'prop_wallbrick_01', + [-1151045834] = 'prop_wallbrick_02', + [1065973630] = 'prop_wallbrick_03', + [-1268884662] = 'prop_wallchunk_01', + [-1638168425] = 'prop_walllight_ld_01', + [-851361974] = 'prop_walllight_ld_01b', + [283948267] = 'prop_wardrobe_door_01', + [-1902543747] = 'prop_warehseshelf01', + [2092685506] = 'prop_warehseshelf02', + [1846426471] = 'prop_warehseshelf03', + [424659621] = 'prop_warninglight_01', + [991241305] = 'prop_washer_01', + [1231012078] = 'prop_washer_02', + [-1312681555] = 'prop_washer_03', + [1492339777] = 'prop_washing_basket_01', + [587574807] = 'prop_water_bottle_dark', + [315205724] = 'prop_water_bottle', + [-1240857364] = 'prop_water_corpse_01', + [-1011638209] = 'prop_water_corpse_02', + [42353697] = 'prop_water_frame', + [1408345510] = 'prop_water_ramp_01', + [1226543098] = 'prop_water_ramp_02', + [2001562717] = 'prop_water_ramp_03', + [-1691644768] = 'prop_watercooler_dark', + [-742198632] = 'prop_watercooler', + [1370563384] = 'prop_watercrate_01', + [-1644950477] = 'prop_wateringcan', + [1102844316] = 'prop_watertower01', + [1343762004] = 'prop_watertower02', + [1535001888] = 'prop_watertower03', + [1822812015] = 'prop_watertower04', + [1382596692] = 'prop_waterwheela', + [-1128524427] = 'prop_waterwheelb', + [1016189997] = 'prop_weed_001_aa', + [861098586] = 'prop_weed_002_ba', + [452618762] = 'prop_weed_01', + [-305885281] = 'prop_weed_02', + [-1688127] = 'prop_weed_block_01', + [671777952] = 'prop_weed_bottle', + [243282660] = 'prop_weed_pallet', + [-232602273] = 'prop_weed_tub_01', + [1913437669] = 'prop_weed_tub_01b', + [-527085761] = 'prop_weeddead_nxg01', + [1621217110] = 'prop_weeddead_nxg02', + [-1279789847] = 'prop_weeddry_nxg01', + [1280913271] = 'prop_weeddry_nxg01b', + [-840357557] = 'prop_weeddry_nxg02', + [-329224025] = 'prop_weeddry_nxg02b', + [-1831947497] = 'prop_weeddry_nxg03', + [-1824211007] = 'prop_weeddry_nxg03b', + [-2063067254] = 'prop_weeddry_nxg04', + [105912864] = 'prop_weeddry_nxg05', + [1870743581] = 'prop_weeds_nxg01', + [1588183713] = 'prop_weeds_nxg01b', + [1572283529] = 'prop_weeds_nxg02', + [2008938025] = 'prop_weeds_nxg02b', + [621425456] = 'prop_weeds_nxg03', + [17892537] = 'prop_weeds_nxg03b', + [-2093224046] = 'prop_weeds_nxg04', + [1681607908] = 'prop_weeds_nxg04b', + [-1193616693] = 'prop_weeds_nxg05', + [1105329006] = 'prop_weeds_nxg05b', + [-1499154849] = 'prop_weeds_nxg06', + [-946010170] = 'prop_weeds_nxg06b', + [1272323782] = 'prop_weeds_nxg07b', + [-811215908] = 'prop_weeds_nxg07b001', + [-1139220153] = 'prop_weeds_nxg08', + [-853012324] = 'prop_weeds_nxg08b', + [-568220328] = 'prop_weeds_nxg09', + [2008030266] = 'prop_weight_1_5k', + [1844017351] = 'prop_weight_10k', + [933757793] = 'prop_weight_15k', + [588920696] = 'prop_weight_2_5k', + [-1450650106] = 'prop_weight_20k', + [-2011207824] = 'prop_weight_5k', + [1231502205] = 'prop_weight_bench_02', + [1749174061] = 'prop_weight_rack_01', + [1241057947] = 'prop_weight_rack_02', + [1505848876] = 'prop_weight_squat', + [-1010290664] = 'prop_weld_torch', + [1011326142] = 'prop_welding_mask_01_s', + [-1821801372] = 'prop_welding_mask_01', + [-624946387] = 'prop_wheat_grass_empty', + [-1270307707] = 'prop_wheat_grass_glass', + [945617281] = 'prop_wheat_grass_half', + [-292162984] = 'prop_wheel_01', + [626679780] = 'prop_wheel_02', + [-755287261] = 'prop_wheel_03', + [-1425970384] = 'prop_wheel_04', + [-1751235478] = 'prop_wheel_05', + [-563981839] = 'prop_wheel_06', + [-1286728675] = 'prop_wheel_hub_01', + [-1731873955] = 'prop_wheel_hub_02_lod_02', + [1465152224] = 'prop_wheel_rim_01', + [1150963052] = 'prop_wheel_rim_02', + [-1472588642] = 'prop_wheel_rim_03', + [-705040355] = 'prop_wheel_rim_04', + [212098417] = 'prop_wheel_rim_05', + [-1570565546] = 'prop_wheel_tyre', + [1430257647] = 'prop_wheelbarrow01a', + [1133730678] = 'prop_wheelbarrow02a', + [1737474779] = 'prop_wheelchair_01_s', + [1262298127] = 'prop_wheelchair_01', + [1909973641] = 'prop_whisk', + [-822947892] = 'prop_whiskey_01', + [-1461673141] = 'prop_whiskey_bottle', + [-1833232393] = 'prop_whiskey_glasses', + [-171496681] = 'prop_white_keyboard', + [-1956944339] = 'prop_win_plug_01_dam', + [1704392426] = 'prop_win_plug_01', + [-52859321] = 'prop_win_trailer_ld', + [997144281] = 'prop_winch_hook_long', + [-719148431] = 'prop_winch_hook_short', + [-1404196790] = 'prop_windmill_01_l1', + [1939614199] = 'prop_windmill_01_slod', + [1745179636] = 'prop_windmill_01_slod2', + [1952396163] = 'prop_windmill_01', + [1065211932] = 'prop_windmill1', + [1252486771] = 'prop_windmill2', + [1955084863] = 'prop_windowbox_a', + [-2079532728] = 'prop_windowbox_b', + [-925896790] = 'prop_windowbox_broken', + [-2024123364] = 'prop_windowbox_small', + [21833643] = 'prop_wine_bot_01', + [-285113580] = 'prop_wine_bot_02', + [54971870] = 'prop_wine_glass', + [1295017223] = 'prop_wine_red', + [2036176768] = 'prop_wine_rose', + [-1248983640] = 'prop_wine_white', + [-367045252] = 'prop_wok', + [650320113] = 'prop_wooden_barrel', + [1367246936] = 'prop_woodpile_01a', + [-1186441238] = 'prop_woodpile_01b', + [1861370687] = 'prop_woodpile_01c', + [1293189284] = 'prop_woodpile_02a', + [-740912282] = 'prop_woodpile_03a', + [382933634] = 'prop_woodpile_04a', + [-1783064501] = 'prop_woodpile_04b', + [-2107814619] = 'prop_worklight_01a_l1', + [145818549] = 'prop_worklight_01a', + [160663734] = 'prop_worklight_02a', + [-304108711] = 'prop_worklight_03a_l1', + [-350795026] = 'prop_worklight_03a', + [-1808235374] = 'prop_worklight_03b_l1', + [-1901227524] = 'prop_worklight_03b', + [-1208490064] = 'prop_worklight_04a', + [765603833] = 'prop_worklight_04b_l1', + [1813008354] = 'prop_worklight_04b', + [-1580136567] = 'prop_worklight_04c_l1', + [1506454359] = 'prop_worklight_04c', + [-1009522972] = 'prop_worklight_04d_l1', + [279288106] = 'prop_worklight_04d', + [1188930991] = 'prop_workwall_01', + [1496566363] = 'prop_workwall_02', + [-1288515433] = 'prop_wrecked_buzzard', + [-1663150675] = 'prop_wreckedcart', + [118627012] = 'prop_xmas_ext', + [238789712] = 'prop_xmas_tree_int', + [1160611253] = 'prop_yacht_lounger', + [-294499241] = 'prop_yacht_seat_01', + [-1320300017] = 'prop_yacht_seat_02', + [-1005619310] = 'prop_yacht_seat_03', + [-1848238485] = 'prop_yacht_table_01', + [-1788992133] = 'prop_yacht_table_02', + [-1367418948] = 'prop_yacht_table_03', + [-1931340691] = 'prop_yaught_chair_01', + [-864927101] = 'prop_yaught_sofa_01', + [58661718] = 'prop_yell_plastic_target', + [-232023078] = 'prop_yoga_mat_01', + [2057317573] = 'prop_yoga_mat_02', + [-1978741854] = 'prop_yoga_mat_03', + [267881419] = 'prop_ztype_covered', + [356391690] = 'proptrailer', + [2123327359] = 'prototipo', + [-1651067813] = 'radi', + [390902130] = 'raketrailer', + [-2103821244] = 'rallytruck', + [1645267888] = 'rancherxl', + [1933662059] = 'rancherxl2', + [-1934452204] = 'rapidgt', + [1737773231] = 'rapidgt2', + [-674927303] = 'raptor', + [1873600305] = 'ratbike', + [-667151410] = 'ratloader', + [-589178377] = 'ratloader2', + [234062309] = 'reaper', + [-1207771834] = 'rebel', + [-2045594037] = 'rebel2', + [775083365] = 'reeds_03', + [-14495224] = 'regina', + [-1098802077] = 'rentalbus', + [841808271] = 'rhapsody', + [782665360] = 'rhino', + [-1205689942] = 'riot', + [-845979911] = 'ripley', + [1794800292] = 'rnotes', + [1471437843] = 'rock_4_cl_2_1', + [-2041628332] = 'rock_4_cl_2_2', + [2136773105] = 'rocoto', + [627094268] = 'romero', + [14103519] = 'root_scroll_anim_skel', + [-1705304628] = 'rubble', + [-893578776] = 'ruffian', + [-227741703] = 'ruiner', + [941494461] = 'ruiner2', + [777714999] = 'ruiner3', + [1162065741] = 'rumpo', + [-1776615689] = 'rumpo2', + [1475773103] = 'rumpo3', + [719660200] = 'ruston', + [373000027] = 's_f_m_fembarber', + [-527186490] = 's_f_m_maid_01', + [-1371020112] = 's_f_m_shop_high', + [824925120] = 's_f_m_sweatshop_01', + [1567728751] = 's_f_y_airhostess_01', + [2014052797] = 's_f_y_bartender_01', + [1250841910] = 's_f_y_baywatch_01', + [368603149] = 's_f_y_cop_01', + [1777626099] = 's_f_y_factory_01', + [42647445] = 's_f_y_hooker_01', + [348382215] = 's_f_y_hooker_02', + [51789996] = 's_f_y_hooker_03', + [-715445259] = 's_f_y_migrant_01', + [587253782] = 's_f_y_movprem_01', + [-1614285257] = 's_f_y_ranger_01', + [-1420211530] = 's_f_y_scrubs_01', + [1096929346] = 's_f_y_sheriff_01', + [-1452399100] = 's_f_y_shop_low', + [1055701597] = 's_f_y_shop_mid', + [1381498905] = 's_f_y_stripper_01', + [1846523796] = 's_f_y_stripper_02', + [1544875514] = 's_f_y_stripperlite', + [-2063419726] = 's_f_y_sweatshop_01', + [233415434] = 's_m_m_ammucountry', + [-1782092083] = 's_m_m_armoured_01', + [1669696074] = 's_m_m_armoured_02', + [68070371] = 's_m_m_autoshop_01', + [-261389155] = 's_m_m_autoshop_02', + [-1613485779] = 's_m_m_bouncer_01', + [-907676309] = 's_m_m_ccrew_01', + [788443093] = 's_m_m_chemsec_01', + [1650288984] = 's_m_m_ciasec_01', + [436345731] = 's_m_m_cntrybar_01', + [349680864] = 's_m_m_dockwork_01', + [-730659924] = 's_m_m_doctor_01', + [-306416314] = 's_m_m_fiboffice_01', + [653289389] = 's_m_m_fiboffice_02', + [2072724299] = 's_m_m_fibsec_01', + [-1453933154] = 's_m_m_gaffer_01', + [1240094341] = 's_m_m_gardener_01', + [411102470] = 's_m_m_gentransport', + [1099825042] = 's_m_m_hairdress_01', + [-245247470] = 's_m_m_highsec_01', + [691061163] = 's_m_m_highsec_02', + [-1452549652] = 's_m_m_janitor', + [-1635724594] = 's_m_m_lathandy_01', + [-570394627] = 's_m_m_lifeinvad_01', + [-610530921] = 's_m_m_linecook', + [1985653476] = 's_m_m_lsmetro_01', + [2124742566] = 's_m_m_mariachi_01', + [-220552467] = 's_m_m_marine_01', + [-265970301] = 's_m_m_marine_02', + [-317922106] = 's_m_m_migrant_01', + [1684083350] = 's_m_m_movalien_01', + [-664900312] = 's_m_m_movprem_01', + [-407694286] = 's_m_m_movspace_01', + [-1286380898] = 's_m_m_paramedic_01', + [-413447396] = 's_m_m_pilot_01', + [-163714847] = 's_m_m_pilot_02', + [1650036788] = 's_m_m_postal_01', + [1936142927] = 's_m_m_postal_02', + [1456041926] = 's_m_m_prisguard_01', + [1092080539] = 's_m_m_scientist_01', + [-681004504] = 's_m_m_security_01', + [451459928] = 's_m_m_snowcop_01', + [2035992488] = 's_m_m_strperf_01', + [469792763] = 's_m_m_strpreach_01', + [-829353047] = 's_m_m_strvend_01', + [1498487404] = 's_m_m_trucker_01', + [-1614577886] = 's_m_m_ups_01', + [-792862442] = 's_m_m_ups_02', + [-1382092357] = 's_m_o_busker_01', + [1644266841] = 's_m_y_airworker', + [-1643617475] = 's_m_y_ammucity_01', + [1657546978] = 's_m_y_armymech_01', + [-1306051250] = 's_m_y_autopsy_01', + [-442429178] = 's_m_y_barman_01', + [189425762] = 's_m_y_baywatch_01', + [-1275859404] = 's_m_y_blackops_01', + [2047212121] = 's_m_y_blackops_02', + [1349953339] = 's_m_y_blackops_03', + [-654717625] = 's_m_y_busboy_01', + [261586155] = 's_m_y_chef_01', + [71929310] = 's_m_y_clown_01', + [-673538407] = 's_m_y_construct_01', + [-973145378] = 's_m_y_construct_02', + [1581098148] = 's_m_y_cop_01', + [-459818001] = 's_m_y_dealer_01', + [-1688898956] = 's_m_y_devinsec_01', + [-2039072303] = 's_m_y_dockwork_01', + [579932932] = 's_m_y_doorman_01', + [1976765073] = 's_m_y_dwservice_01', + [-175076858] = 's_m_y_dwservice_02', + [1097048408] = 's_m_y_factory_01', + [-1229853272] = 's_m_y_fireman_01', + [-294281201] = 's_m_y_garbage', + [815693290] = 's_m_y_grip_01', + [1939545845] = 's_m_y_hwaycop_01', + [1702441027] = 's_m_y_marine_01', + [1490458366] = 's_m_y_marine_02', + [1925237458] = 's_m_y_marine_03', + [1021093698] = 's_m_y_mime', + [1209091352] = 's_m_y_pestcont_01', + [-1422914553] = 's_m_y_pilot_01', + [1596003233] = 's_m_y_prismuscl_01', + [-1313105063] = 's_m_y_prisoner_01', + [-277793362] = 's_m_y_ranger_01', + [-1067576423] = 's_m_y_robber_01', + [-1320879687] = 's_m_y_sheriff_01', + [1846684678] = 's_m_y_shop_mask', + [-1837161693] = 's_m_y_strvend_01', + [-1920001264] = 's_m_y_swat_01', + [-905948951] = 's_m_y_uscg_01', + [999748158] = 's_m_y_valet_01', + [-1387498932] = 's_m_y_waiter_01', + [1426951581] = 's_m_y_winclean_01', + [1142162924] = 's_m_y_xmech_01', + [-1105135100] = 's_m_y_xmech_02', + [1673368704] = 's_prop_hdphones_1', + [2133258022] = 's_prop_hdphones', + [-1685021548] = 'sabregt', + [223258115] = 'sabregt2', + [-599568815] = 'sadler', + [734217681] = 'sadler2', + [788045382] = 'sanchez', + [-1453280962] = 'sanchez2', + [1491277511] = 'sanctus', + [-1189015600] = 'sandking', + [989381445] = 'sandking2', + [-82626025] = 'savage', + [-2008601783] = 'sc1_00b_bld2', + [-62401449] = 'sc1_00b_det_01', + [-229855071] = 'sc1_00b_det_01a', + [-535065537] = 'sc1_00b_det_01b', + [-682034506] = 'sc1_00b_det_01c', + [1269975498] = 'sc1_00b_ground', + [542470635] = 'sc1_00b_lockups', + [738819622] = 'sc1_00b_lockupscorner', + [1582216841] = 'sc1_00b_pylon', + [1301498202] = 'sc1_00b_sc1_00c_pipes_01', + [1591798773] = 'sc1_00b_sc1_00c_pipes_02', + [1762590801] = 'sc1_00b_sc1_00c_pipes_03', + [-161604899] = 'sc1_00b_sc1_00c_pipes_04', + [1015840874] = 'sc1_00b_tram01', + [-1287623216] = 'sc1_00b_tram02', + [-789052503] = 'sc1_00b_wiresa', + [-1997933682] = 'sc1_00b_wiresb', + [-1400414183] = 'sc1_00c_bikeshop_sign', + [-1828212850] = 'sc1_00c_bikeshop', + [-540550488] = 'sc1_00c_build01', + [1864501829] = 'sc1_00c_cablemesh31014_tstd', + [-365361876] = 'sc1_00c_det_01', + [-646880407] = 'sc1_00c_det_02', + [396091377] = 'sc1_00c_det_03', + [89471844] = 'sc1_00c_det_04', + [-2106247826] = 'sc1_00c_det_05', + [-643505374] = 'sc1_00c_flag003', + [-591871719] = 'sc1_00c_land01', + [90608244] = 'sc1_00c_land02', + [181018953] = 'sc1_00c_lower_station_det', + [1831838822] = 'sc1_00c_pipes_01', + [-1625716691] = 'sc1_00c_pipes_02', + [-1386568529] = 'sc1_00c_pipes_03', + [607228519] = 'sc1_00c_pipes_04', + [1531571186] = 'sc1_00c_platform_det_01', + [1065464930] = 'sc1_00c_platform_det_02', + [-1921855433] = 'sc1_00c_platform_det_03', + [-299884453] = 'sc1_00c_platform_skylight', + [-1586129227] = 'sc1_00c_sc1`_00c_platform', + [-834786947] = 'sc1_00c_tacoshop', + [-111831361] = 'sc1_00c_tramlines', + [1369546350] = 'sc1_00c_tramtrck003', + [-1878653559] = 'sc1_00c_upper_station_det', + [-1103681465] = 'sc1_00d_cablemesh_swaying_01', + [-1377695843] = 'sc1_00d_cablemesh_swaying_02', + [-33336891] = 'sc1_00d_fence03', + [1000161802] = 'sc1_00d_fencedoor', + [704966981] = 'sc1_00d_glue01', + [-1729959149] = 'sc1_00d_glue2', + [203749405] = 'sc1_00d_gnd_decal', + [-927169445] = 'sc1_00d_gnd_decal01', + [-150642452] = 'sc1_00d_gnd_decal02', + [1722891348] = 'sc1_00d_gnd', + [1730755967] = 'sc1_00d_gnd01', + [1215496211] = 'sc1_00d_gnd02', + [-1542615694] = 'sc1_00d_rayhut', + [770391499] = 'sc1_00d_rocks', + [1853051868] = 'sc1_00d_sc1_00_rayhut', + [531099269] = 'sc1_00d_tunnel_ov', + [-419320403] = 'sc1_00d_tunnel_shadow', + [2079968681] = 'sc1_00d_tunnel', + [-1841368491] = 'sc1_00d_weed', + [-1036941561] = 'sc1_00d_weed01', + [-1934697241] = 'sc1_00e_bld1', + [20179390] = 'sc1_00e_detail01', + [-1817276747] = 'sc1_00e_detail02', + [-714337745] = 'sc1_00e_detail03', + [162624953] = 'sc1_00e_ground', + [1726936538] = 'sc1_00e_rails_01', + [1459377641] = 'sc1_00e_rails_02', + [1748662373] = 'sc1_00e_rails_03', + [-92791582] = 'sc1_00e_rails_04', + [-47994724] = 'sc1_00e_tram0', + [-1203200281] = 'sc1_00e_tram3', + [-1031097493] = 'sc1_00e_tram4', + [327330473] = 'sc1_00e_tramlines_01', + [-1413653728] = 'sc1_00e_tramlines_02', + [-134353910] = 'sc1_00f_bwall', + [656935410] = 'sc1_00f_detail01', + [252860871] = 'sc1_00f_detail02', + [292025501] = 'sc1_00f_ground1', + [574690895] = 'sc1_00f_ground2', + [813347522] = 'sc1_00f_ground3', + [-1926198268] = 'sc1_00f_tram1', + [2080893363] = 'sc1_00f_tram2', + [540551802] = 'sc1_00f_tramlines_01', + [-1496079768] = 'sc1_00g_b01_det', + [-1222149160] = 'sc1_00g_b01_detb2', + [-271160011] = 'sc1_00g_b01_detb3', + [661929054] = 'sc1_00g_b01_puddle', + [-122547247] = 'sc1_00g_build_01', + [1929119835] = 'sc1_00g_build_02', + [-2061456220] = 'sc1_00g_build_03', + [716785308] = 'sc1_00g_cable_thvy', + [330484609] = 'sc1_00g_cablemesh10073_hvstd', + [1184850792] = 'sc1_00g_detail', + [1283915047] = 'sc1_00g_detail2', + [-1459620242] = 'sc1_00g_ground', + [-794872209] = 'sc1_00g_metal_debris', + [-1745498718] = 'sc1_00g_stpa', + [-374640372] = 'sc1_00g_stpb', + [-1148414769] = 'sc1_00g_stpc', + [-678291890] = 'sc1_00g_tramtrck2', + [-1539268935] = 'sc1_01_bb_empty_slod', + [-1658912950] = 'sc1_01_bb_empty', + [-364259600] = 'sc1_01_bb_meltdown_slod', + [-1983082903] = 'sc1_01_bb_meltdown', + [-94019181] = 'sc1_01_build1', + [-2137531411] = 'sc1_01_det__02a', + [1650045069] = 'sc1_01_det_02', + [-20960311] = 'sc1_01_grnd01', + [707560101] = 'sc1_01_grnd02', + [-765223349] = 'sc1_01_ladder_01', + [1391271776] = 'sc1_01_ladder_02', + [-1056932987] = 'sc1_01_ladder_03', + [-773333910] = 'sc1_01_ladders_00', + [1573774847] = 'sc1_01_leanprk_build2', + [1540223635] = 'sc1_01_railings', + [-694994529] = 'sc1_01_wires00', + [-927097356] = 'sc1_01_wires01', + [-227282592] = 'sc1_01_wires02', + [-1813334957] = 'sc1_01_wires03', + [-2118676499] = 'sc1_01_wires04', + [-1423646009] = 'sc1_01_wires05', + [-1661581718] = 'sc1_01_wires06', + [1451866510] = 'sc1_01_wires07', + [1215569251] = 'sc1_01_wires08', + [1913352337] = 'sc1_01_wires09', + [1640908807] = 'sc1_01_wires10', + [337325218] = 'sc1_01_wires11', + [-81377383] = 'sc1_02__pipes01a', + [424538606] = 'sc1_02_build1_det', + [1118513415] = 'sc1_02_build1', + [-156462837] = 'sc1_02_build2', + [557344468] = 'sc1_02_build3_railings', + [686716302] = 'sc1_02_build3', + [1024220108] = 'sc1_02_det01', + [1321140017] = 'sc1_02_det02', + [1484001947] = 'sc1_02_det03', + [1781642774] = 'sc1_02_det04', + [1489834825] = 'sc1_02_det05', + [1795864516] = 'sc1_02_det06', + [119346338] = 'sc1_02_garage_posts_01_lod', + [2139559772] = 'sc1_02_garage_posts_01', + [-740249712] = 'sc1_02_garage_posts_02_lod', + [-403773398] = 'sc1_02_garage_posts_02', + [-945652776] = 'sc1_02_ground', + [1340858276] = 'sc1_02_halfpipe_01', + [-264691652] = 'sc1_02_halfpipe_02', + [41403577] = 'sc1_02_halfpipe_03', + [1769297715] = 'sc1_02_halfpipeb', + [1971008470] = 'sc1_02_ladder_01', + [-317742339] = 'sc1_02_ladder_02', + [-558758334] = 'sc1_02_ladder_03', + [1367141334] = 'sc1_02_ladder_04', + [1107283164] = 'sc1_02_ladder_05', + [-383911344] = 'sc1_02_spray_gates_01', + [2069864149] = 'sc1_02_spray_gates_02', + [-1968030342] = 'sc1_02_spray_gates_03', + [-1528674638] = 'sc1_02_spray_railings_02', + [-1487982429] = 'sc1_02_spray_railings', + [2031062520] = 'sc1_02_sprayshop2', + [-1666977317] = 'sc1_02_storge', + [1936277519] = 'sc1_03_247_em_dum_slod', + [919876488] = 'sc1_03_build_01_railings_a', + [-2087727874] = 'sc1_03_build_01_railings_b', + [-2138592322] = 'sc1_03_build1_det_01', + [700567018] = 'sc1_03_build1_det_02_lod', + [1426347176] = 'sc1_03_build1_det_02', + [-2004168654] = 'sc1_03_build1', + [1090645799] = 'sc1_03_build1b_sign', + [1493372804] = 'sc1_03_build1b_signs', + [1651621499] = 'sc1_03_build1b', + [1135497871] = 'sc1_03_build1c_det', + [1361845232] = 'sc1_03_build1c', + [1881996678] = 'sc1_03_build2_fiz', + [2077898449] = 'sc1_03_build2', + [1879468651] = 'sc1_03_cablemesh14618_tstd', + [-1199579382] = 'sc1_03_cablemesh14627_tstd', + [-1722734303] = 'sc1_03_det_01', + [-1912073585] = 'sc1_03_det_02', + [64224777] = 'sc1_03_det_03', + [-1409850900] = 'sc1_03_ground', + [-4041248] = 'sc1_03_ladder_008', + [2111410555] = 'sc1_03_ladder_01', + [-1197275379] = 'sc1_03_ladder_05', + [-353211477] = 'sc1_03_ladder_06', + [243380937] = 'sc1_03_ladder_07', + [-178927576] = 'sc1_03_pipes_01_xtra_a', + [-626683192] = 'sc1_03_pipes_01_xtra_b', + [-1951172227] = 'sc1_03_pipes001', + [-236053992] = 'sc1_03_railings_01', + [-4442700] = 'sc1_03_railings_02', + [2085957352] = 'sc1_03_railings_03', + [353374571] = 'sc1_04_bld_01', + [648459416] = 'sc1_04_bld_02', + [1337207746] = 'sc1_04_bld_03_emmisstime', + [140933144] = 'sc1_04_bld_03', + [-1710941361] = 'sc1_04_bld_04', + [2049389667] = 'sc1_04_cablemesh3039_thvy', + [1075290411] = 'sc1_04_det_01', + [1591271085] = 'sc1_04_det_02', + [1460031220] = 'sc1_04_det_03', + [1071243760] = 'sc1_04_det_03a', + [1716055417] = 'sc1_04_det_04', + [-1588521526] = 'sc1_04_em', + [-1993723859] = 'sc1_04_ground', + [551178173] = 'sc1_04_ladder_01', + [-1172667841] = 'sc1_04_ladder_02', + [-1407064502] = 'sc1_04_ladder_03', + [895770394] = 'sc1_04_mtl_frm_lod', + [1648495087] = 'sc1_04_mtl_frm', + [529696609] = 'sc1_04_signem_lod', + [1593615189] = 'sc1_04_signem', + [-824382849] = 'sc1_04_stps_railngs_lod', + [-102551037] = 'sc1_04_stps_railngs', + [370275906] = 'sc1_05_build_1', + [-1606874490] = 'sc1_05_build_4', + [1868591364] = 'sc1_05_build4_em', + [1768892571] = 'sc1_05_cablemesh28159_thvy', + [1510406370] = 'sc1_05_det_01', + [-2039328328] = 'sc1_05_det_02', + [2117056827] = 'sc1_05_emissive_2_slod', + [-1906671436] = 'sc1_05_flowers', + [1935842084] = 'sc1_05_gas_stn_det', + [579090920] = 'sc1_05_gas_stn_stripes', + [2068286576] = 'sc1_05_ground01', + [-438279772] = 'sc1_05_ground02', + [200866254] = 'sc1_05_ladder_01', + [467900843] = 'sc1_05_ladder_02', + [-1412205734] = 'sc1_05_shop_stripes', + [-787287482] = 'sc1_05_tools_sign', + [1703468080] = 'sc1_05_wall_shdw_proxy', + [-1369570216] = 'sc1_05_window_fiz', + [-2097598983] = 'sc1_06_build01', + [-1473415071] = 'sc1_06_build03', + [2031085387] = 'sc1_06_carpark', + [-1877492060] = 'sc1_06_det01', + [1469730218] = 'sc1_06_det02', + [1675650614] = 'sc1_06_det03', + [906824336] = 'sc1_06_det04', + [1220259821] = 'sc1_06_det05', + [1733891551] = 'sc1_06_detail2', + [-1896321869] = 'sc1_06_fizzles01', + [-717129400] = 'sc1_06_fizzles02', + [-1012509166] = 'sc1_06_fizzles03', + [-668962160] = 'sc1_06_ground', + [1497233043] = 'sc1_06_wires', + [-479401150] = 'sc1_07_build_det', + [-2125542092] = 'sc1_07_build', + [-58092040] = 'sc1_07_clinical_bin', + [-792111134] = 'sc1_07_cor_cutdet', + [-910487531] = 'sc1_07_coroner', + [179758396] = 'sc1_07_cupola_glass', + [-716723906] = 'sc1_07_det_01', + [-68225396] = 'sc1_07_det_02', + [164008507] = 'sc1_07_det_03', + [335226532] = 'sc1_07_det_04', + [566018599] = 'sc1_07_det_05', + [945221467] = 'sc1_07_det_06', + [-339427617] = 'sc1_07_em_lod', + [-794514252] = 'sc1_07_em', + [1600321598] = 'sc1_07_fence_00', + [-418379878] = 'sc1_07_fence_01', + [-753475672] = 'sc1_07_fence_02', + [-521634997] = 'sc1_07_fence_03', + [-1363011841] = 'sc1_07_fence_04', + [-1135955440] = 'sc1_07_fence_05', + [1724614367] = 'sc1_07_fence_06', + [1964385140] = 'sc1_07_fence_07', + [639239135] = 'sc1_07_ground_2', + [1100877936] = 'sc1_07_ground', + [-853224615] = 'sc1_07_ladder_01', + [1352456775] = 'sc1_07_ladder_02', + [1659797226] = 'sc1_07_ladder_03', + [-239133555] = 'sc1_07_ladder_04', + [-194371101] = 'sc1_07_ladder_05', + [-546466925] = 'sc1_07_milo_emissive_dummy', + [-885950074] = 'sc1_07_scroll_det', + [1758470254] = 'sc1_07_shadow_mesh', + [390897501] = 'sc1_07_uvanim01', + [284350399] = 'sc1_07_window_no_int', + [-1974578571] = 'sc1_08_det_01', + [-1147915024] = 'sc1_08_det_02', + [1709803948] = 'sc1_08_det_03', + [-1758434247] = 'sc1_08_det_04', + [1094762587] = 'sc1_08_det_05', + [-946992633] = 'sc1_08_entrance_fizz', + [184791156] = 'sc1_08_fake_interior', + [-246692737] = 'sc1_08_ground', + [974076152] = 'sc1_08_hdg1', + [-2034335123] = 'sc1_08_hdg1det', + [-1211583279] = 'sc1_08_hdg2', + [780389973] = 'sc1_08_hdg2det', + [1049220749] = 'sc1_08_hedge2_lod', + [-2054027446] = 'sc1_08_hosp_brid', + [-662742446] = 'sc1_08_hosp_shdw', + [2027691010] = 'sc1_08_hosp_winblin', + [441124330] = 'sc1_08_hosp', + [1375534007] = 'sc1_08_ladder_004', + [-1914664746] = 'sc1_08_ladder_01', + [-1609880277] = 'sc1_08_ladder_02', + [-1438891635] = 'sc1_08_ladder_03', + [1048638088] = 'sc1_08_railings_01', + [876010996] = 'sc1_08_railings_02', + [-1029179306] = 'sc1_08_shadow01', + [-26620203] = 'sc1_08_sign_lights', + [198637310] = 'sc1_09_bld1_det_fiz', + [814697810] = 'sc1_09_build_fiz', + [587422966] = 'sc1_09_build_sprts', + [-1754019242] = 'sc1_09_build', + [-759705398] = 'sc1_09_build1_detail', + [324329341] = 'sc1_09_emissive_slod', + [-897987152] = 'sc1_09_emissive', + [-404950428] = 'sc1_09_gas1_details', + [582887904] = 'sc1_09_gasem', + [821128352] = 'sc1_09_ground', + [1820939251] = 'sc1_09_ladder_01', + [1040687496] = 'sc1_09_pipefizz', + [760570356] = 'sc1_09_railings_01', + [1294975356] = 'sc1_09_roof_shadow', + [2118891771] = 'sc1_09_underfizz', + [-1558725888] = 'sc1_10_apt_03', + [-1816730140] = 'sc1_10_apt01_det', + [-636506916] = 'sc1_10_apt01', + [2119734233] = 'sc1_10_apt02_det_fz1', + [927303088] = 'sc1_10_apt02_det_fz2', + [-1303188796] = 'sc1_10_apt02_det', + [-464666280] = 'sc1_10_apt02', + [-530042332] = 'sc1_10_apt03_det', + [1391864871] = 'sc1_10_baseball_cage', + [-1740692335] = 'sc1_10_commc', + [339643696] = 'sc1_10_det02', + [1114462039] = 'sc1_10_detail01', + [206283965] = 'sc1_10_detail01a', + [-561886937] = 'sc1_10_detail01b', + [464044975] = 'sc1_10_detail01c', + [825355969] = 'sc1_10_detail01d', + [1899212832] = 'sc1_10_fence_01', + [-1065169215] = 'sc1_10_fence_07', + [491579936] = 'sc1_10_fizz_dummy', + [1949401786] = 'sc1_10_fizz_dummy2', + [-252122686] = 'sc1_10_fizzbalcony', + [418914950] = 'sc1_10_fizzdets_1', + [1494860642] = 'sc1_10_fizzer', + [-1546585000] = 'sc1_10_fizzpanels_00', + [-1843898137] = 'sc1_10_fizzpanels_01', + [965519313] = 'sc1_10_fizzpanels_02', + [734628939] = 'sc1_10_fizzpanels_03', + [-780782950] = 'sc1_10_grills_01', + [691578060] = 'sc1_10_ground01', + [1623430093] = 'sc1_10_ground02', + [1181744731] = 'sc1_10_hedge03', + [-1276774599] = 'sc1_10_lrg_fnc_alley', + [2073686170] = 'sc1_10_lrg_fnc00', + [-1178833698] = 'sc1_10_lrg_fnc01', + [1225919371] = 'sc1_10_lrg_fnc02', + [804346186] = 'sc1_10_lrg_fnc03', + [901670116] = 'sc1_10_lrg_fnc04', + [307633684] = 'sc1_10_lrg_fnc05', + [573095353] = 'sc1_10_lrg_fnc06', + [-753983617] = 'sc1_10_lrg_fnc08', + [145558202] = 'sc1_10_lrg_fnc09', + [-671700382] = 'sc1_10_lrg_fnc10', + [2127384194] = 'sc1_10_railings_01', + [1617629630] = 'sc1_10_railings_02', + [1370190907] = 'sc1_10_railings_03', + [-1327582536] = 'sc1_10_railings_04', + [-747474909] = 'sc1_10_shop', + [1760214618] = 'sc1_11_apt_d', + [-2091131280] = 'sc1_11_apt_railings', + [-1175844579] = 'sc1_11_apt', + [577757959] = 'sc1_11_carwash_det', + [1275283653] = 'sc1_11_carwash_nightshutters', + [400591906] = 'sc1_11_carwash_shdow', + [-803074035] = 'sc1_11_carwash', + [-765474360] = 'sc1_11_chophouse', + [1683329301] = 'sc1_11_cwash_d_a', + [1029886076] = 'sc1_11_cwash_d_no_spinners', + [-595651090] = 'sc1_11_cwash_d', + [-1028319053] = 'sc1_11_cwash_d02', + [-562240624] = 'sc1_11_det_000', + [1944456804] = 'sc1_11_det_001', + [-157838435] = 'sc1_11_det_002', + [1818132265] = 'sc1_11_det_003', + [1500698962] = 'sc1_11_det_004', + [-1156334446] = 'sc1_11_det_02', + [835622378] = 'sc1_11_det_02b', + [1603367279] = 'sc1_11_det_02c', + [1528830045] = 'sc1_11_frank_win', + [-399816851] = 'sc1_11_garage_01', + [-1391253703] = 'sc1_11_garage_shadow', + [370703749] = 'sc1_11_ground', + [1425116535] = 'sc1_11_ground01', + [462153794] = 'sc1_11_ind_d', + [-166053792] = 'sc1_11_ind_railings_01', + [2007851883] = 'sc1_11_ind', + [-1488798657] = 'sc1_11_ind2', + [-2032920460] = 'sc1_11_ladder_01', + [-1727087383] = 'sc1_11_ladder_02', + [-598129795] = 'sc1_11_ladder_03', + [-296032384] = 'sc1_11_ladder_04', + [1348217733] = 'sc1_11_ladder_05', + [-288167535] = 'sc1_11_ladder1', + [-1826355401] = 'sc1_11_light_emmissives', + [-263587354] = 'sc1_11_mall_d', + [-958394461] = 'sc1_11_mall1', + [-1196887243] = 'sc1_11_mall2', + [-1277892803] = 'sc1_11_railings_01', + [2049504230] = 'sc1_11_railings_02', + [-1891230176] = 'sc1_11_railings_03', + [-2040689589] = 'sc1_11_railings_04', + [1905582778] = 'sc1_11_railings_05', + [-1159753232] = 'sc1_11_res_d_a', + [-868141901] = 'sc1_11_res_d_b', + [-1620911369] = 'sc1_11_res_d_c', + [291323834] = 'sc1_11_res1_01', + [328614956] = 'sc1_11_res1_02', + [-1842275781] = 'sc1_11_trio', + [28617184] = 'sc1_12_apt_det01', + [327306619] = 'sc1_12_apt_det02', + [-1489443265] = 'sc1_12_apt_railings_01', + [959646265] = 'sc1_12_apt_railings_02', + [1412585377] = 'sc1_12_apt', + [429320542] = 'sc1_12_balc_fence', + [853548768] = 'sc1_12_bb', + [-106199077] = 'sc1_12_build', + [2142676767] = 'sc1_12_cablemesh377', + [1872641470] = 'sc1_12_cablemesh62638_tstd', + [-184736504] = 'sc1_12_church_d', + [-1994824260] = 'sc1_12_church', + [92104339] = 'sc1_12_detail_01', + [-1347175679] = 'sc1_12_detail_02', + [-1164390185] = 'sc1_12_detail_03', + [69105825] = 'sc1_12_fencing_00', + [-1377612756] = 'sc1_12_fencing_01', + [-1718541432] = 'sc1_12_fencing_02', + [-746711199] = 'sc1_12_fencing_03', + [-1120343337] = 'sc1_12_fencing_04', + [382351087] = 'sc1_12_fizzdet_1', + [594071596] = 'sc1_12_fizzdet_2', + [974847376] = 'sc1_12_fizzdet_3', + [-1355946056] = 'sc1_12_fizzdet_4', + [1610069329] = 'sc1_12_ground02_d1', + [1140424049] = 'sc1_12_ground02_d2', + [-1553585069] = 'sc1_12_ground02', + [16476028] = 'sc1_12_ground04', + [1063686824] = 'sc1_12_ladder_01', + [-1993848924] = 'sc1_12_props_combo_01_lod', + [440329991] = 'sc1_12_railing01', + [-412942000] = 'sc1_12_railing02', + [2022092079] = 'sc1_12_railings_2', + [122733550] = 'sc1_13__grd', + [-879155217] = 'sc1_13_build04', + [1763227789] = 'sc1_13_build06_ovly', + [753527443] = 'sc1_13_build07', + [-343017754] = 'sc1_13_buildladder_fizz', + [-541739900] = 'sc1_13_burger_ov', + [-368612031] = 'sc1_13_fizz01a', + [1780804986] = 'sc1_13_fizz01b', + [249247464] = 'sc1_13_fizz01c', + [544496154] = 'sc1_13_fizz01d', + [-2061642732] = 'sc1_13_glue_02', + [775208945] = 'sc1_13_glue', + [-997727664] = 'sc1_13_ladder', + [-562084173] = 'sc1_13_props_fnc_01_lod', + [1038025393] = 'sc1_13_props_fnc_02_lod', + [-487470377] = 'sc1_13_props_fnc_03_lod', + [-1468254596] = 'sc1_13_props_fnc_04_lod', + [-624314612] = 'sc1_13_strip_ldr', + [-435776584] = 'sc1_13_strip_ldr001', + [-1203500197] = 'sc1_13_strip_ldr2', + [1252993669] = 'sc1_13_strip_oly', + [1002079316] = 'sc1_13_stripsgn_ladder', + [-1668290541] = 'sc1_13_stripsgn', + [-813257011] = 'sc1_14_bb_meltdown_slod', + [-2055558885] = 'sc1_14_bb_meltdown', + [-863149821] = 'sc1_14_bb_mollis_slod', + [-664997263] = 'sc1_14_bb_mollis', + [1644466330] = 'sc1_14_build1_alpha', + [-1148481743] = 'sc1_14_build1', + [-486580720] = 'sc1_14_build2', + [-71158690] = 'sc1_14_detail_01', + [184210075] = 'sc1_14_detail_02', + [1087127101] = 'sc1_14_detail_03', + [366699985] = 'sc1_14_grate_fizz', + [-2096729964] = 'sc1_14_grnd_02', + [1696038186] = 'sc1_14_ironwork', + [559494366] = 'sc1_14_leanfizz', + [1902963699] = 'sc1_14_stairs', + [-245137328] = 'sc1_14_tacorail', + [2011341572] = 'sc1_15_billboard', + [-1087971190] = 'sc1_15_build1', + [-336119266] = 'sc1_15_build2', + [-1168124184] = 'sc1_15_build5', + [-338815283] = 'sc1_15_build7_wndws_01', + [-100617422] = 'sc1_15_build7_wndws_02', + [-801480794] = 'sc1_15_build7_wndws_03', + [-1781920323] = 'sc1_15_build7', + [1707979512] = 'sc1_15_det_01', + [-2137134952] = 'sc1_15_det_02', + [308251677] = 'sc1_15_det_03', + [550512894] = 'sc1_15_det_04', + [848219259] = 'sc1_15_det_05', + [1027858917] = 'sc1_15_det_06', + [-822573744] = 'sc1_15_det_07', + [523279301] = 'sc1_15_emissive', + [-1626281886] = 'sc1_15_flatfence00', + [-1242720733] = 'sc1_15_flatfence06', + [1092397403] = 'sc1_15_flatfence11', + [604139243] = 'sc1_15_flatfence12', + [297323096] = 'sc1_15_flatfence15', + [1579705142] = 'sc1_15_flatfence16', + [2146361838] = 'sc1_15_flatfence17_lod', + [1185035306] = 'sc1_15_flatfence18', + [1492408526] = 'sc1_15_flatfence19', + [296333577] = 'sc1_15_fountain_water', + [2053230388] = 'sc1_15_gates_01', + [-2017695255] = 'sc1_15_gates_02', + [1501465966] = 'sc1_15_gates_03', + [911886827] = 'sc1_15_gfences00', + [1216867910] = 'sc1_15_gfences01', + [-1636046563] = 'sc1_15_ground1', + [-724542061] = 'sc1_15_ladder_01', + [36714582] = 'sc1_15_ladder_02', + [-260631324] = 'sc1_15_ladder_03', + [1529014834] = 'sc1_15_ladder_04', + [-432864195] = 'sc1_15_looroof', + [1657608955] = 'sc1_15_mort_fnc', + [1424587352] = 'sc1_15_sc1_17_rails00', + [1731993341] = 'sc1_15_sc1_17_rails01', + [1903637363] = 'sc1_15_sc1_17_rails02', + [1952192943] = 'sc1_15_sfence', + [1700639989] = 'sc1_15_stairs_00', + [-1639635261] = 'sc1_15_stairs_04', + [-992925208] = 'sc1_15_theatre_det', + [-859810169] = 'sc1_15sc1_15_build2_det', + [1806651451] = 'sc1_17_apt01_det01', + [1572713560] = 'sc1_17_apt01_det02', + [1341364420] = 'sc1_17_apt01_det03', + [1420108395] = 'sc1_17_apt01_det04', + [96225286] = 'sc1_17_apt01', + [744766308] = 'sc1_17_apt02_det01', + [-239221232] = 'sc1_17_apt02_det02', + [96202252] = 'sc1_17_apt02_det03', + [-700674290] = 'sc1_17_apt02_det04', + [60707767] = 'sc1_17_apt02_rl01', + [895629122] = 'sc1_17_apt02_rl02', + [507382010] = 'sc1_17_apt02_rl03', + [1342237823] = 'sc1_17_apt02_rl04', + [1550886409] = 'sc1_17_apt02_step1', + [1293354838] = 'sc1_17_apt02_step2', + [746296708] = 'sc1_17_apt02', + [925883134] = 'sc1_17_apt02fizwal_lod', + [746637933] = 'sc1_17_apt02fizwal', + [-926827715] = 'sc1_17_apt03_det01', + [461004973] = 'sc1_17_apt03_det02', + [302796241] = 'sc1_17_apt03_det03', + [-1005158] = 'sc1_17_apt03_det04', + [1506897967] = 'sc1_17_apt03', + [199813350] = 'sc1_17_detail01', + [496340035] = 'sc1_17_detail02', + [1068748927] = 'sc1_17_detail03', + [1355641522] = 'sc1_17_detail04', + [1677629716] = 'sc1_17_detail05', + [1965112153] = 'sc1_17_detail06', + [-2024153142] = 'sc1_17_detail07', + [-2022252540] = 'sc1_17_detail08', + [-1715960701] = 'sc1_17_detail09', + [-1224163257] = 'sc1_17_detail10', + [1464615600] = 'sc1_17_fence_met_01', + [-644561089] = 'sc1_17_fence_met_02', + [-339285085] = 'sc1_17_fence_met_03', + [-1141437436] = 'sc1_17_fence_met_04', + [-827182726] = 'sc1_17_fence_met_05', + [-1357942219] = 'sc1_17_fence_met_06', + [-2100487759] = 'sc1_17_fence_met_07', + [-1813267474] = 'sc1_17_fence_met_08', + [-444276965] = 'sc1_17_fence_met_09', + [-1506482640] = 'sc1_17_fence_met_11', + [-235405903] = 'sc1_17_fence_met_13', + [2098661713] = 'sc1_17_fence_met2_00', + [1937274392] = 'sc1_17_fence_met2_02', + [1715887028] = 'sc1_17_fence_met2_03', + [953319629] = 'sc1_17_fence_met2_05', + [511724581] = 'sc1_17_fence_met2_07', + [34607941] = 'sc1_17_fence_met2_08', + [-195201056] = 'sc1_17_fence_met2_09', + [417382622] = 'sc1_17_fence_met2_10', + [917830790] = 'sc1_17_fence_met2_11', + [1148819475] = 'sc1_17_fence_met2_12', + [1395045741] = 'sc1_17_fence_met2_13', + [1876422351] = 'sc1_17_fence_met2_14', + [1599358076] = 'sc1_17_ground', + [1810096381] = 'sc1_17_hedges_a_tp1', + [-42630114] = 'sc1_17_hedges_a_tp2', + [-58684192] = 'sc1_17_hedges_a', + [-1767369967] = 'sc1_17_hedges_b_tp', + [240103550] = 'sc1_17_hedges_b', + [947142807] = 'sc1_17_hedges_tp', + [-1934552907] = 'sc1_17_poolshadow', + [1477841903] = 'sc1_17_railing01', + [-2103809801] = 'sc1_17_railing02', + [-844422082] = 'sc1_17_steps01', + [-910910383] = 'sc1_17_steps02', + [-1573614200] = 'sc1_18_bd1_rail01', + [275638765] = 'sc1_18_bd1_rail02', + [-45562973] = 'sc1_18_bd1_rail03', + [-2762967] = 'sc1_18_build1_det', + [1021858630] = 'sc1_18_build1', + [354509525] = 'sc1_18_det_a', + [133384313] = 'sc1_18_det_b', + [-112481494] = 'sc1_18_det_c', + [1921523109] = 'sc1_18_det_d', + [-530089630] = 'sc1_18_det_e', + [-1454298866] = 'sc1_18_det', + [239415193] = 'sc1_18_ground', + [2015540815] = 'sc1_18_ladder_01', + [1857829747] = 'sc1_18_taco', + [-1464715819] = 'sc1_19_carpk', + [1601040707] = 'sc1_19_city_hall', + [1512077674] = 'sc1_19_courts_de-fzz_lod', + [-995438067] = 'sc1_19_courts', + [1129892776] = 'sc1_19_cp_fence_00', + [95244370] = 'sc1_19_cp_fence_01', + [-510752747] = 'sc1_19_cp_fence_02', + [-1409639298] = 'sc1_19_cp_fence_03', + [-1792007130] = 'sc1_19_cp_fence_04_lod', + [-2067116522] = 'sc1_19_cp_fence_05', + [-1884462116] = 'sc1_19_cp_fence_06', + [1501198199] = 'sc1_19_cp_fence_07', + [674665712] = 'sc1_19_cp_fence_08', + [1883428045] = 'sc1_19_crprk_det', + [-298928063] = 'sc1_19_crprk_lights', + [-648051180] = 'sc1_19_de-fiz_hidden', + [-2089271614] = 'sc1_19_detail_1', + [-1775803360] = 'sc1_19_detail_2', + [688753146] = 'sc1_19_detail_3', + [-1468462909] = 'sc1_19_detail_4', + [-1169314708] = 'sc1_19_detail_5', + [-99901242] = 'sc1_19_fence_seg_end', + [921765662] = 'sc1_19_fence_seg1', + [-784421947] = 'sc1_19_fencebits_01', + [-1812188867] = 'sc1_19_fencebits_02', + [-2070048128] = 'sc1_19_fencebits_03', + [661641254] = 'sc1_19_fencebits_04', + [439762355] = 'sc1_19_fencebits_05', + [-1118600209] = 'sc1_19_fencebits_06', + [765584522] = 'sc1_19_fencebits_07', + [-1183777746] = 'sc1_19_fencebits_08', + [1203148987] = 'sc1_19_fencebits_09', + [1218577430] = 'sc1_19_ground_dtl', + [-1087732761] = 'sc1_19_ground', + [-1336019943] = 'sc1_19_imp_fence__01', + [-1401763881] = 'sc1_19_imp_fence_02', + [-1645368619] = 'sc1_19_imp_fence_03', + [-1053918694] = 'sc1_19_ladder_01', + [-431133555] = 'sc1_19_library', + [1397286283] = 'sc1_19_props_sheriff_heli_shdw', + [-2040691719] = 'sc1_19_sec_fence', + [-2081194519] = 'sc1_19_sheriff_bars', + [-1760209647] = 'sc1_19_sheriff', + [1330012794] = 'sc1_19_stairdetails_01', + [505380909] = 'sc1_19_stairdetails_02', + [811148448] = 'sc1_19_stairdetails_03', + [-2008263559] = 'sc1_19_stairdetails_04', + [1823513922] = 'sc1_19_stairdetails_06', + [1047478464] = 'sc1_19_stairdetails_07', + [-1050687825] = 'sc1_19_stairdetails_08', + [-762189549] = 'sc1_19_stairdetails_09', + [1476984762] = 'sc1_20_barrier_01', + [489294333] = 'sc1_20_barrier_02', + [861812325] = 'sc1_20_barrier_03', + [413040874] = 'sc1_20_barrier_04', + [783527188] = 'sc1_20_barrier_05', + [-133120049] = 'sc1_20_barrier_06', + [-1531301003] = 'sc1_20_building', + [2098172315] = 'sc1_20_frame_fiz_01', + [-1898105546] = 'sc1_20_frame_fiz_02', + [1489443396] = 'sc1_20_gantry_02', + [-691889963] = 'sc1_20_gantry', + [1178281232] = 'sc1_20_gd02', + [1630427894] = 'sc1_20_gd03', + [-1081189850] = 'sc1_20_glue_01', + [1909669553] = 'sc1_20_glue_02', + [-1662413603] = 'sc1_20_glue_03', + [-1173439480] = 'sc1_20_ground', + [-1287405988] = 'sc1_20_ladder_03', + [-957225544] = 'sc1_20_ladder_04', + [1158042714] = 'sc1_20_metalwork_2a', + [-215338849] = 'sc1_20_metalwork_2b', + [140598041] = 'sc1_20_metalwork_2c', + [-1222494052] = 'sc1_20_metalwork_2d', + [-861641824] = 'sc1_20_metalwork_2e', + [-1701019149] = 'sc1_20_metalwork', + [766377489] = 'sc1_20_wires_heavy_00', + [-68740476] = 'sc1_20_wires_heavy_01', + [1244706582] = 'sc1_20_wires_heavy_02', + [410440611] = 'sc1_20_wires_heavy_03', + [792232226] = 'sc1_20_wires_heavy_04', + [1154395214] = 'sc1_20_wires_heavy_05', + [2003672566] = 'sc1_20_wires_heavy_050', + [1573346879] = 'sc1_20_wires_heavy_06', + [1632658769] = 'sc1_20_wires_heavy_07', + [2023625716] = 'sc1_20_wires_heavy_08', + [-1915732392] = 'sc1_20_wires_heavy_09', + [-126839049] = 'sc1_20_wires_heavy_10', + [103232100] = 'sc1_20_wires_heavy_11', + [1558044624] = 'sc1_20_wires_heavy_12', + [1789754223] = 'sc1_20_wires_heavy_13', + [1555619714] = 'sc1_20_wires_heavy_14', + [1787067161] = 'sc1_20_wires_heavy_15', + [-1590335358] = 'sc1_20_wires_heavy_16', + [788104196] = 'sc1_20_wires_heavy_17', + [-2050903653] = 'sc1_20_wires_heavy_18', + [-1780362789] = 'sc1_20_wires_heavy_19', + [-1211263854] = 'sc1_20_wires_heavy_20', + [-348652698] = 'sc1_20_wires_heavy_21', + [628420575] = 'sc1_20_wires_heavy_22', + [-960286083] = 'sc1_20_wires_heavy_23', + [34187529] = 'sc1_20_wires_heavy_24', + [-195621468] = 'sc1_20_wires_heavy_25', + [1570168866] = 'sc1_20_wires_heavy_26', + [1340949711] = 'sc1_20_wires_heavy_27', + [1705177142] = 'sc1_20_wires_heavy_28', + [1496667995] = 'sc1_20_wires_heavy_29', + [1194276475] = 'sc1_20_wires_heavy_30', + [1499486941] = 'sc1_20_wires_heavy_31', + [1789001056] = 'sc1_20_wires_heavy_32', + [-56155796] = 'sc1_20_wires_heavy_33', + [2143463333] = 'sc1_20_wires_heavy_34', + [-1839608621] = 'sc1_20_wires_heavy_35', + [-1555075394] = 'sc1_20_wires_heavy_36', + [897618718] = 'sc1_20_wires_heavy_37', + [-647636258] = 'sc1_20_wires_heavy_38', + [-349733279] = 'sc1_20_wires_heavy_39', + [-610345412] = 'sc1_20_wires_heavy_40', + [-883081799] = 'sc1_20_wires_heavy_41', + [-1201530941] = 'sc1_20_wires_heavy_42', + [641495926] = 'sc1_20_wires_heavy_43', + [-690793383] = 'sc1_20_wires_heavy_44', + [-451874604] = 'sc1_20_wires_heavy_45', + [2074418686] = 'sc1_20_wires_heavy_46', + [-1947746685] = 'sc1_20_wires_heavy_47', + [162216456] = 'sc1_20_wires_heavy_48', + [276187038] = 'sc1_20_wires_heavy_49', + [-1839488610] = 'sc1_21_details_00', + [-28542590] = 'sc1_21_details_01', + [-869919434] = 'sc1_21_details_02', + [-623398247] = 'sc1_21_details_03', + [-1196921285] = 'sc1_21_details_04', + [895903669] = 'sc1_21_details_05', + [53183296] = 'sc1_21_details_06', + [-446755403] = 'sc1_21_fencing_01', + [1740350778] = 'sc1_21_gas_railings', + [-1724148895] = 'sc1_21_gas', + [1869551763] = 'sc1_21_ground01', + [-1673366983] = 'sc1_21_ground02', + [-1810855192] = 'sc1_21_ladder_01', + [1912164995] = 'sc1_21_res_det01', + [1673115140] = 'sc1_21_res_det02', + [-1770382456] = 'sc1_21_res_det03', + [-2062452557] = 'sc1_21_res_det04', + [150438021] = 'sc1_21_res_det05', + [-225677733] = 'sc1_21_res01_railings', + [706597296] = 'sc1_21_res01', + [1122796353] = 'sc1_21_res02', + [1921009925] = 'sc1_21_roundred_railings', + [-630552158] = 'sc1_21_roundred', + [-683932959] = 'sc1_21_shop01', + [1028705967] = 'sc1_21_w_fnc', + [-1315194081] = 'sc1_22_fizzblocker_1', + [1527948176] = 'sc1_22_fizzblocker_1b', + [-1028629176] = 'sc1_22_fizzblocker_4', + [264304488] = 'sc1_22_fizzblocker_7', + [-1185855576] = 'sc1_22_fizzblocker_7b', + [-34122795] = 'sc1_22_fizzblocker_8', + [-2118888777] = 'sc1_22_fizzpipes', + [-207156362] = 'sc1_22_grounda_dcl', + [1411881003] = 'sc1_22_grounda', + [-364424650] = 'sc1_22_groundb_dcl', + [-730457918] = 'sc1_22_groundb', + [-678413229] = 'sc1_22_ladder_002', + [-869090438] = 'sc1_22_ladder_01', + [1351369763] = 'sc1_22_ladder_03', + [-2109181789] = 'sc1_22_mall_04bb', + [-1663863779] = 'sc1_22_mall_dec', + [1352847015] = 'sc1_22_mall_railings_01', + [2055840372] = 'sc1_22_mall_railings_02', + [-1471380813] = 'sc1_22_park_sld_01', + [-561115048] = 'sc1_23_antenna', + [-1750074354] = 'sc1_23_bb_frame', + [-1663565911] = 'sc1_23_chicken', + [-1052450924] = 'sc1_23_detail_00', + [208303582] = 'sc1_23_detail_01', + [-592931237] = 'sc1_23_detail_02', + [-1262631238] = 'sc1_23_detail_03', + [-270058228] = 'sc1_23_detail_04', + [-1725493363] = 'sc1_23_detail_05', + [-957551848] = 'sc1_23_detail_06', + [1980439285] = 'sc1_23_fizzygrill', + [1279568528] = 'sc1_23_garage', + [1563039106] = 'sc1_23_ground01', + [-1865224404] = 'sc1_23_ladder_01', + [1519420072] = 'sc1_23_ladder_02', + [1162893352] = 'sc1_23_ladder_03', + [572756431] = 'sc1_23_ladder_05', + [759667063] = 'sc1_23_rails_det', + [-1121790995] = 'sc1_23_res_det', + [688150710] = 'sc1_23_res', + [-689872355] = 'sc1_23_roofpoles', + [-2078834524] = 'sc1_23_shadowprox', + [-1294061372] = 'sc1_23_shop01', + [1453383568] = 'sc1_23_shop02_grate', + [1526726917] = 'sc1_23_shop02', + [-1841405354] = 'sc1_23_stairrail', + [1329166332] = 'sc1_23_tram', + [484858405] = 'sc1_23_tramfence_00', + [258653998] = 'sc1_23_tramfence_01', + [-1254671091] = 'sc1_23_woodfizz', + [1040650991] = 'sc1_23_yorails', + [-2137350583] = 'sc1_24_bd07_d01', + [1729162030] = 'sc1_24_bd07_d02', + [-386039419] = 'sc1_24_build05', + [328849085] = 'sc1_24_build07', + [-970405224] = 'sc1_24_det01', + [-707237385] = 'sc1_24_det02', + [-1350787776] = 'sc1_24_det03', + [1251494847] = 'sc1_24_det04_b', + [-1182420654] = 'sc1_24_det04', + [52413573] = 'sc1_24_det05', + [1911296340] = 'sc1_24_fence', + [-1573138049] = 'sc1_24_garage', + [-400780004] = 'sc1_24_ground', + [-414442120] = 'sc1_24_ladder_002', + [538545748] = 'sc1_24_ladder_01', + [-1078140701] = 'sc1_24_ladder', + [240590085] = 'sc1_24_pipe01', + [-116526477] = 'sc1_24_pipe02', + [-1089371757] = 'sc1_24_railfizz1', + [-179048937] = 'sc1_24_railfizz2', + [-230949915] = 'sc1_24_res_det01', + [-1623960133] = 'sc1_24_res_det02', + [-1930579666] = 'sc1_24_res_det03', + [1172284179] = 'sc1_24_res_det04', + [999132783] = 'sc1_24_res_det05', + [50385563] = 'sc1_24_res1', + [-2042169511] = 'sc1_24_res1b', + [-1818082376] = 'sc1_25_detail_01', + [-292587119] = 'sc1_25_detail_03', + [-1143270363] = 'sc1_25_detail_04', + [-434542431] = 'sc1_25_detail_05', + [-681129156] = 'sc1_25_detail_06', + [160477071] = 'sc1_25_detail_07', + [1121259583] = 'sc1_25_detail_b', + [891682632] = 'sc1_25_ground', + [1381522885] = 'sc1_25_rail01', + [1076803954] = 'sc1_25_rail02', + [756323134] = 'sc1_25_rail03', + [-198853803] = 'sc1_25_res01_det01', + [-436723974] = 'sc1_25_res01_det02', + [111239244] = 'sc1_25_res01_det03', + [-122502033] = 'sc1_25_res01_det04', + [-1948894842] = 'sc1_25_res01', + [-49973211] = 'sc1_25_shops_01', + [-758832219] = 'sc1_25_shops_02', + [1476357864] = 'sc1_27_cutscene', + [-1492384396] = 'sc1_27_detail_01', + [-892876617] = 'sc1_27_detail_01b', + [-269871313] = 'sc1_27_detail_02', + [1911493531] = 'sc1_27_detail_02b', + [1672509214] = 'sc1_27_detail_02c', + [1582424835] = 'sc1_27_fencing', + [-559117176] = 'sc1_27_gate_dnt_ex', + [-520572768] = 'sc1_27_ground', + [2018471343] = 'sc1_27_res01_det01', + [1505046651] = 'sc1_27_res01_det02', + [38470052] = 'sc1_27_res01_det03', + [384183002] = 'sc1_27_res01_det04', + [816307805] = 'sc1_27_res01_det05', + [-1175940848] = 'sc1_27_res01', + [-196704821] = 'sc1_27_res02', + [-2025984766] = 'sc1_27_shp', + [1755573221] = 'sc1_28_b03_shutr', + [-1437502437] = 'sc1_28_bd01b_d01', + [-1678132920] = 'sc1_28_build01', + [750461473] = 'sc1_28_build01b', + [-1332714891] = 'sc1_28_build03', + [-86673666] = 'sc1_28_build04', + [-389609384] = 'sc1_28_detail01', + [-1321002659] = 'sc1_28_detail02', + [540014377] = 'sc1_28_detail03', + [-977878460] = 'sc1_28_detail04', + [-998916158] = 'sc1_28_detail05', + [1816760171] = 'sc1_28_detail06', + [-686529281] = 'sc1_28_detail07', + [-1664126858] = 'sc1_28_detail08', + [-713984975] = 'sc1_28_fizzsteps', + [-1163304578] = 'sc1_28_ground', + [-1269481001] = 'sc1_28_ladder_002', + [2035290977] = 'sc1_28_ladder_01', + [2115057825] = 'sc1_28_ladder01', + [541595206] = 'sc1_28_rail01', + [-2030672991] = 'sc1_28_rail02', + [2071415971] = 'sc1_28_rail03', + [-1052747720] = 'sc1_28_rail04', + [1476494776] = 'sc1_28_rail05', + [-110966664] = 'sc1_28_rail06', + [-1339935240] = 'sc1_28_rail07', + [1533188285] = 'sc1_28_res01_det01', + [-1863154728] = 'sc1_28_res01_det03', + [-30330797] = 'sc1_28_res01', + [1808985961] = 'sc1_29_corg00', + [1452852469] = 'sc1_29_corg01', + [1791978878] = 'sc1_29_corg02', + [-776322172] = 'sc1_29_detail01', + [1148568392] = 'sc1_29_detail01b', + [-87019522] = 'sc1_29_detail01c', + [-529800985] = 'sc1_29_detail02', + [164875329] = 'sc1_29_detail02b', + [-588141704] = 'sc1_29_fizzpanels1', + [-776956682] = 'sc1_29_fizzpanels2', + [2024122806] = 'sc1_29_fuckingfizz', + [-1432676209] = 'sc1_29_grnd01', + [-170643728] = 'sc1_29_grnd02', + [1286545699] = 'sc1_29_grndhge1', + [1951523886] = 'sc1_29_res01_det01', + [-691295972] = 'sc1_29_res01_det02', + [-921301583] = 'sc1_29_res01_det03', + [-477348115] = 'sc1_29_res01_det03b', + [-837413887] = 'sc1_29_res01_det03c', + [-228630461] = 'sc1_29_res01_det04', + [-457915154] = 'sc1_29_res01_det05', + [534985546] = 'sc1_29_res01_det06', + [505122398] = 'sc1_29_res01', + [1423950477] = 'sc1_29_res01b', + [1932721971] = 'sc1_29_res01c', + [741550733] = 'sc1_29_res02', + [-89322167] = 'sc1_29_res02b', + [671518649] = 'sc1_29_shop_d', + [1941696375] = 'sc1_29_shop', + [-685097871] = 'sc1_29_shopsign', + [-1750894360] = 'sc1_30_armco', + [2142208886] = 'sc1_30_billboard', + [-358090189] = 'sc1_30_building_4', + [560068546] = 'sc1_30_cablemesh119332_hvstd', + [-651888659] = 'sc1_30_cablemesh119347_hvstd', + [1626310892] = 'sc1_30_cablemesh119378_hvstd', + [-19546827] = 'sc1_30_cablemesh119393_hvstd', + [-1550937586] = 'sc1_30_cablemesh119408_hvstd', + [1852714974] = 'sc1_30_cablemesh119423_hvstd', + [-996262164] = 'sc1_30_church_railings', + [-715223056] = 'sc1_30_church_railings2', + [1005417810] = 'sc1_30_church', + [963398157] = 'sc1_30_detail_1', + [1212573633] = 'sc1_30_detail_2', + [-705166554] = 'sc1_30_detail_3', + [998243147] = 'sc1_30_fence_00', + [172497116] = 'sc1_30_fence_01', + [1622263214] = 'sc1_30_fence_02', + [-560840335] = 'sc1_30_fence_03', + [-181899619] = 'sc1_30_fence_04', + [-851487345] = 'sc1_30_fence_2_00', + [-816355229] = 'sc1_30_ground1', + [-987933713] = 'sc1_30_ground2', + [-2061594840] = 'sc1_30_motel_fiz00', + [-1809830617] = 'sc1_30_motel_fiz01', + [-1234734667] = 'sc1_30_motel_fiz02', + [-1496591746] = 'sc1_30_motel_fiz03', + [1492760283] = 'sc1_30_motel_fiz04', + [1293328149] = 'sc1_30_motel_fiz05', + [1867375491] = 'sc1_30_motel_fiz06', + [1629767472] = 'sc1_30_motel_fiz07', + [296593476] = 'sc1_30_motel_fiz08', + [573786451] = 'sc1_30_motel_fiz09', + [1298675238] = 'sc1_30_res_det01', + [-1452216778] = 'sc1_30_res_det02', + [1932952002] = 'sc1_30_res_det03', + [1402601811] = 'sc1_30_res', + [1469303074] = 'sc1_31_det01', + [1350462585] = 'sc1_31_det01b', + [1049413782] = 'sc1_31_det01c', + [-2117886703] = 'sc1_31_det02', + [2032039989] = 'sc1_31_det02b', + [5796857] = 'sc1_31_ground01', + [168298332] = 'sc1_31_ground02', + [113007112] = 'sc1_31_ladder_01', + [1121275766] = 'sc1_31_metalgrates', + [-868164819] = 'sc1_31_res01_det_2', + [-2084005917] = 'sc1_31_res01_det', + [-987289038] = 'sc1_31_res01', + [1252435012] = 'sc1_31_res02_det_2', + [739428050] = 'sc1_31_res02_det', + [-1277950068] = 'sc1_31_res02', + [-2103235124] = 'sc1_31_shops_det', + [-2004085437] = 'sc1_31_shops01', + [-756236269] = 'sc1_32_alley_ladder', + [2051182732] = 'sc1_32_decal_06', + [951589876] = 'sc1_32_decal_06b', + [-331107399] = 'sc1_32_facdetail_00', + [-571926780] = 'sc1_32_facdetail_01', + [-464935991] = 'sc1_32_facdetail_02', + [-703658156] = 'sc1_32_facdetail_03', + [89974255] = 'sc1_32_facdetail_04', + [-107557277] = 'sc1_32_facdetail_05', + [-1463374652] = 'sc1_32_facdetail_06', + [-888671930] = 'sc1_32_facdetail_07', + [-1102882883] = 'sc1_32_facdetail_08', + [1853405225] = 'sc1_32_facdetail_09', + [1588238173] = 'sc1_32_facdetail_10', + [1826960338] = 'sc1_32_facdetail_11', + [-2111873466] = 'sc1_32_facdetail_12', + [1944109513] = 'sc1_32_facdetail_13', + [1233808661] = 'sc1_32_facdetail_14', + [374408867] = 'sc1_32_facdetail_15', + [327719179] = 'sc1_32_fence_01', + [-1393538088] = 'sc1_32_fence_02', + [-1632522405] = 'sc1_32_fence_03', + [-934280553] = 'sc1_32_fence_04', + [-1174116864] = 'sc1_32_fence_05', + [1944902094] = 'sc1_32_fence_06', + [1214677698] = 'sc1_32_fence_07', + [587056306] = 'sc1_32_g6_b', + [513260518] = 'sc1_32_g6_c', + [1326894715] = 'sc1_32_ground02', + [-1759971218] = 'sc1_32_ground06_o', + [-579074582] = 'sc1_32_ground06_o2', + [-1269222491] = 'sc1_32_ground06_o3', + [22983432] = 'sc1_32_ground06', + [2041225557] = 'sc1_32_incin_01', + [1886464739] = 'sc1_32_incin_pipes1', + [-1363927323] = 'sc1_32_ladder_01', + [-149776910] = 'sc1_32_ladder_01b', + [-1028364426] = 'sc1_32_ladder_x', + [-1259516952] = 'sc1_32_ladder_y', + [-1421352541] = 'sc1_32_pipes_00', + [-1645918498] = 'sc1_32_pipes_01', + [174464990] = 'sc1_32_pipes_02', + [158341923] = 'sc1_32_prox', + [-1510323592] = 'sc1_32_stairs', + [-324874259] = 'sc1_32_wall04', + [737979244] = 'sc1_33_alley_d', + [1296706256] = 'sc1_33_alley_d2', + [-1466573775] = 'sc1_33_apt01', + [-1110374749] = 'sc1_33_apt02', + [-265655467] = 'sc1_33_apt03', + [98321667] = 'sc1_33_aptdet02', + [-2055355320] = 'sc1_33_aptdet03', + [2143860958] = 'sc1_33_aptdet04', + [1924406965] = 'sc1_33_aptdet05', + [-583863375] = 'sc1_33_aptdet06', + [1551266362] = 'sc1_33_aptdet07', + [1319949991] = 'sc1_33_aptdet08', + [644007759] = 'sc1_33_build05', + [1798527575] = 'sc1_33_decal_010', + [1633826629] = 'sc1_33_fizzers_00', + [-548949230] = 'sc1_33_fizzers_01', + [-720003410] = 'sc1_33_fizzers_02', + [47413801] = 'sc1_33_fizzers_03', + [-426098249] = 'sc1_33_fizzers_04', + [828068842] = 'sc1_33_glue_1', + [284485242] = 'sc1_33_ground004', + [2050336927] = 'sc1_33_ground03', + [-1997765914] = 'sc1_33_hedge01', + [-790719795] = 'sc1_33_hedge02', + [-1207509295] = 'sc1_33_tower_fence00', + [-592009168] = 'sc1_33_tower_fence01', + [-864254020] = 'sc1_33_tower_fence02', + [-2126220983] = 'sc1_33_tower_fence03', + [1594174667] = 'sc1_33_tower_fence04', + [-1547323825] = 'sc1_33_tower_fence05', + [-1843981582] = 'sc1_33_tower_fence06', + [-1577930019] = 'sc1_33_tower_fence07', + [-1322757816] = 'sc1_33_tower_fence08', + [1796228373] = 'sc1_33_tower_fence09', + [-1088885727] = 'sc1_33_tower_fence10', + [-2084997797] = 'sc1_33_tower_fence11', + [1383043784] = 'sc1_33_tower_fence12', + [-1471922572] = 'sc1_33_tower_fence13', + [-623228365] = 'sc1_33_tower_fence14_l1', + [1990548275] = 'sc1_33_tower_fence14', + [-1458851040] = 'sc1_33_tower01', + [-1151969355] = 'sc1_33_tower02', + [-1186697918] = 'sc1_33_wash_lines00', + [-1113229816] = 'sc1_33_wash_lines01', + [-1944022273] = 'sc1_33_wash_lines02', + [-1571111053] = 'sc1_33_wash_lines03', + [-263857336] = 'sc1_33_wash_lines04', + [8158133] = 'sc1_33_wash_lines05', + [-1029046255] = 'sc1_33_wash_lines06', + [-655872883] = 'sc1_33_wash_lines07', + [657541406] = 'sc1_33_wash_lines08', + [1583658872] = 'sc1_33_wash_lines09', + [15320836] = 'sc1_33_watts_d', + [1402614089] = 'sc1_34_bunting', + [-299668850] = 'sc1_34_detail', + [-795868222] = 'sc1_34_grnd_decal01', + [-261636299] = 'sc1_34_grnd01', + [-371140139] = 'sc1_34_ladder_02', + [-602522048] = 'sc1_34_ladder_03', + [-1453921124] = 'sc1_34_mos', + [320930416] = 'sc1_emissive_11_car', + [1006881214] = 'sc1_emissive_11_eme', + [1196810338] = 'sc1_emissive_11_emf', + [1159845417] = 'sc1_emissive_11_n1', + [1898982909] = 'sc1_emissive_11_n2', + [972668877] = 'sc1_emissive_247_em_dum', + [-876390356] = 'sc1_emissive_29_emaa', + [562889662] = 'sc1_emissive_29_emab', + [862496629] = 'sc1_emissive_29_emac', + [990006659] = 'sc1_emissive_build04_em1', + [1699622123] = 'sc1_emissive_build07_em1', + [1286110770] = 'sc1_emissive_ltd', + [-460721795] = 'sc1_emissive_sc1_00e001', + [1587056293] = 'sc1_emissive_sc1_01a', + [1221092097] = 'sc1_emissive_sc1_01b', + [1420426748] = 'sc1_emissive_sc1_02a', + [515805734] = 'sc1_emissive_sc1_02b', + [-986063082] = 'sc1_emissive_sc1_02c', + [-738493287] = 'sc1_emissive_sc1_02d', + [-1648029651] = 'sc1_emissive_sc1_02e', + [1389842717] = 'sc1_emissive_sc1_03_b', + [479814818] = 'sc1_emissive_sc1_03_c', + [-156034858] = 'sc1_emissive_sc1_03_d', + [-423766382] = 'sc1_emissive_sc1_04_neon_night', + [302935603] = 'sc1_emissive_sc1_04a', + [-1556639625] = 'sc1_emissive_sc1_04b', + [-689604654] = 'sc1_emissive_sc1_04c', + [-940811808] = 'sc1_emissive_sc1_04d', + [1536294176] = 'sc1_emissive_sc1_05', + [-2048372276] = 'sc1_emissive_sc1_06', + [-740626079] = 'sc1_emissive_sc1_07a', + [1398763624] = 'sc1_emissive_sc1_07b', + [258827480] = 'sc1_emissive_sc1_08', + [-1365269181] = 'sc1_emissive_sc1_10_2', + [-1986372811] = 'sc1_emissive_sc1_10_3', + [-1692729802] = 'sc1_emissive_sc1_10_4', + [1408451482] = 'sc1_emissive_sc1_10a', + [-1655565493] = 'sc1_emissive_sc1_11_em', + [822109656] = 'sc1_emissive_sc1_11_ema', + [36833340] = 'sc1_emissive_sc1_11_emb', + [-2154465] = 'sc1_emissive_sc1_11_emb1', + [342207651] = 'sc1_emissive_sc1_11_emc', + [-401714187] = 'sc1_emissive_sc1_11_emd', + [-1015056529] = 'sc1_emissive_sc1_12_1', + [-180364557] = 'sc1_emissive_sc1_12_2', + [-2001436198] = 'sc1_emissive_sc1_12_4', + [355521790] = 'sc1_emissive_sc1_13a', + [169653301] = 'sc1_emissive_sc1_13ab', + [-219967388] = 'sc1_emissive_sc1_13c', + [550166982] = 'sc1_emissive_sc1_14a', + [238664868] = 'sc1_emissive_sc1_14b', + [1180642262] = 'sc1_emissive_sc1_15a', + [1390036172] = 'sc1_emissive_sc1_15b', + [2082870575] = 'sc1_emissive_sc1_17a', + [-1369212503] = 'sc1_emissive_sc1_17b', + [-1615274924] = 'sc1_emissive_sc1_17c', + [747151406] = 'sc1_emissive_sc1_18', + [-217402622] = 'sc1_emissive_sc1_18b_lod', + [-1576975407] = 'sc1_emissive_sc1_18b', + [305571190] = 'sc1_emissive_sc1_19a', + [602261716] = 'sc1_emissive_sc1_19b', + [-742512526] = 'sc1_emissive_sc1_19c', + [-729353908] = 'sc1_emissive_sc1_20', + [-1502950427] = 'sc1_emissive_sc1_21_em', + [41730646] = 'sc1_emissive_sc1_21_emb', + [1183861376] = 'sc1_emissive_sc1_21_emc', + [2020290101] = 'sc1_emissive_sc1_21_emd', + [-884775119] = 'sc1_emissive_sc1_23_1', + [-1192115570] = 'sc1_emissive_sc1_23_2', + [966607847] = 'sc1_emissive_sc1_23_3', + [795094901] = 'sc1_emissive_sc1_23_4', + [1687827391] = 'sc1_emissive_sc1_24a', + [182827643] = 'sc1_emissive_sc1_24ab', + [-1172119861] = 'sc1_emissive_sc1_24b', + [969170452] = 'sc1_emissive_sc1_24c', + [-1921743801] = 'sc1_emissive_sc1_25a', + [154500039] = 'sc1_emissive_sc1_25b', + [-228231610] = 'sc1_emissive_sc1_27_1', + [-853267516] = 'sc1_emissive_sc1_27_2', + [-1141929637] = 'sc1_emissive_sc1_27_3', + [290602286] = 'sc1_emissive_sc1_28_1', + [1605786101] = 'sc1_emissive_sc1_28_2', + [636713891] = 'sc1_emissive_sc1_28_2b', + [751301657] = 'sc1_emissive_sc1_28_3', + [1165475543] = 'sc1_emissive_sc1_29_emc', + [-679525422] = 'sc1_emissive_sc1_30_1', + [-1390153960] = 'sc1_emissive_sc1_30_2', + [-1616658941] = 'sc1_emissive_sc1_31_1', + [-1980656993] = 'sc1_emissive_sc1_31_2', + [2082993932] = 'sc1_emissive_sc1_31_3', + [1258067308] = 'sc1_emissive_sc1_32a', + [1706871532] = 'sc1_emissive_sc1_32b', + [690573766] = 'sc1_emissive_sc1_32c', + [1741475920] = 'sc1_emissive_sc1_33a', + [1585888708] = 'sc1_emissive_sc1_33b', + [2016833827] = 'sc1_emissive_sc1_33d', + [-1469539800] = 'sc1_emissive_sc1_34', + [-1786615116] = 'sc1_emissive_shop', + [-1371552351] = 'sc1_emissive_stripsgn_em1', + [-177400686] = 'sc1_emissive_theatre', + [-1953789186] = 'sc1_lod_emi_a_slod3', + [-687397906] = 'sc1_lod_emi_b_slod3', + [1519332188] = 'sc1_lod_emi_c_slod3', + [2078822704] = 'sc1_lod_emissive', + [-1374583281] = 'sc1_lod_slod4', + [-289861172] = 'sc1_props_containers_slod', + [1639813380] = 'sc1_props_flyers00', + [1946236299] = 'sc1_props_flyers01', + [369523099] = 'sc1_props_flyers02', + [-408642344] = 'sc1_props_flyers03', + [-193284476] = 'sc1_props_flyers04', + [-1010707181] = 'sc1_props_flyers05', + [1088671561] = 'sc1_props_flyers06', + [1246552603] = 'sc1_props_flyers07', + [460194910] = 'sc1_props_flyers08', + [113761054] = 'sc1_props_flyers09', + [319649529] = 'sc1_props_flyers10', + [547426844] = 'sc1_props_flyers11', + [1049579000] = 'sc1_props_flyers12', + [1276504325] = 'sc1_props_flyers13', + [1668552625] = 'sc1_props_flyers14', + [1899082540] = 'sc1_props_flyers15', + [-1914442608] = 'sc1_props_flyers16', + [-1684240379] = 'sc1_props_flyers17', + [444237247] = 'sc1_props_flyers18', + [922992337] = 'sc1_props_flyers19', + [1280699685] = 'sc1_props_flyers20', + [-938515310] = 'sc1_props_flyers22', + [-1780449227] = 'sc1_props_flyers23', + [-1399149143] = 'sc1_props_flyers24', + [-49295726] = 'sc1_props_flyers25', + [2060798491] = 'sc1_props_flyers26', + [-1849985049] = 'sc1_props_flyers27', + [1600688962] = 'sc1_props_flyers28', + [1947450520] = 'sc1_props_flyers29', + [-1445582084] = 'sc1_props_flyers30', + [-1260109544] = 'sc1_props_flyers31', + [-969153593] = 'sc1_props_flyers32', + [1468171858] = 'sc1_props_flyers33', + [-471621866] = 'sc1_props_flyers34', + [-325209974] = 'sc1_props_flyers35', + [-27306995] = 'sc1_props_flyers36', + [-1722840593] = 'sc1_props_flyers37', + [352026945] = 'sc1_props_flyers38', + [633938652] = 'sc1_props_flyers39', + [1650792111] = 'sc1_props_flyers40', + [1420950345] = 'sc1_props_flyers41', + [-706970208] = 'sc1_props_flyers42', + [-1487789940] = 'sc1_props_flyers43', + [-1706785167] = 'sc1_props_flyers44', + [-1948161625] = 'sc1_props_flyers45', + [276525789] = 'sc1_props_flyers46', + [40359606] = 'sc1_props_flyers47', + [-250727421] = 'sc1_props_flyers48', + [-421322835] = 'sc1_props_flyers49', + [1313042319] = 'sc1_props_flyers50', + [1854976045] = 'sc1_props_flyers51', + [1623266446] = 'sc1_props_flyers52', + [-541158777] = 'sc1_props_flyers53', + [-1582973973] = 'sc1_props_sc1_00c_props_decal', + [-907651195] = 'sc1_rd_23_wires', + [1382448327] = 'sc1_rd_24_wires', + [-1155917316] = 'sc1_rd_bld_sc_rd_tun_j1', + [-1438202729] = 'sc1_rd_cable_tram_00f', + [-2034762378] = 'sc1_rd_cable_tram_00h', + [124659242] = 'sc1_rd_cablemesh13074_thvy', + [-2024719331] = 'sc1_rd_cablemesh13461_tstd', + [-710889558] = 'sc1_rd_cablemesh13729_thvy', + [-1170398382] = 'sc1_rd_cablemesh186898_hvhvy', + [4791730] = 'sc1_rd_cablemesh35055_tstd', + [-1067197583] = 'sc1_rd_cablemesh35056_tstd', + [-196689588] = 'sc1_rd_clbanner_slod', + [339556162] = 'sc1_rd_cloth_01', + [19960105] = 'sc1_rd_cloth_02', + [-547140213] = 'sc1_rd_cloth_03', + [792747274] = 'sc1_rd_cloth_slod', + [-793387658] = 'sc1_rd_decals05', + [-1267171767] = 'sc1_rd_duct_taping', + [-1528829341] = 'sc1_rd_fence_00', + [-1969244701] = 'sc1_rd_fence_01', + [-715568283] = 'sc1_rd_fence_02', + [-1172892447] = 'sc1_rd_fence_03', + [-260308566] = 'sc1_rd_fence_04', + [-432739044] = 'sc1_rd_fence_05', + [-1896497505] = 'sc1_rd_fence_06', + [2091653644] = 'sc1_rd_fence_07', + [-1418037336] = 'sc1_rd_fence_08', + [-1724787945] = 'sc1_rd_fence_09', + [18554804] = 'sc1_rd_fence_10', + [247839497] = 'sc1_rd_fence_11', + [-1445859093] = 'sc1_rd_fence_12', + [325292681] = 'sc1_rd_gnd03', + [1596652604] = 'sc1_rd_graf_sc_tun_01', + [-1636194635] = 'sc1_rd_ground06_oint1', + [2132535290] = 'sc1_rd_ground06_oint2', + [-1973250977] = 'sc1_rd_inttun1extras', + [340689452] = 'sc1_rd_inttun1extrasb', + [-1690709935] = 'sc1_rd_inttun1ol', + [400113178] = 'sc1_rd_inttun1shell', + [123586542] = 'sc1_rd_inttun2arail', + [-1529264588] = 'sc1_rd_inttun2b_lod', + [788340028] = 'sc1_rd_inttun2bol', + [-744268850] = 'sc1_rd_inttun2bolglue', + [-547539026] = 'sc1_rd_inttun2bpipes', + [-1757425482] = 'sc1_rd_inttun2brail', + [1738158820] = 'sc1_rd_inttun2bshell', + [-12587536] = 'sc1_rd_inttun2lod', + [1605627744] = 'sc1_rd_inttun2ol', + [30964981] = 'sc1_rd_inttun2olglue', + [-972730899] = 'sc1_rd_inttun2pipes', + [1982268393] = 'sc1_rd_inttun2pipesend', + [-628904079] = 'sc1_rd_inttun2rail', + [364766464] = 'sc1_rd_inttun2shell', + [-1492972462] = 'sc1_rd_inttun3arail001', + [-622657671] = 'sc1_rd_inttun3bol', + [948572700] = 'sc1_rd_inttun3bolglue', + [-1270839018] = 'sc1_rd_inttun3bpipes', + [1839042638] = 'sc1_rd_inttun3brail', + [1730418232] = 'sc1_rd_inttun3bshell', + [214110228] = 'sc1_rd_inttun3lod', + [1828936086] = 'sc1_rd_inttun3ol', + [87733152] = 'sc1_rd_inttun3olglue', + [-2050186419] = 'sc1_rd_inttun3pipes', + [-1710298840] = 'sc1_rd_inttun3rail', + [-1269264880] = 'sc1_rd_inttun3shell', + [1183749472] = 'sc1_rd_inttunnel1_wire_mesh', + [-1638626877] = 'sc1_rd_inttunnel2_wire_mesh', + [-516826443] = 'sc1_rd_inttunnel3_wire_mesh', + [2031741510] = 'sc1_rd_inttunnel4_wire_mesh', + [2108847222] = 'sc1_rd_inttunnel4_wire_mesh001', + [-1540980448] = 'sc1_rd_inttunnel5_wire_mesh', + [1978321816] = 'sc1_rd_inttunnel5_wire_mesh001', + [270916864] = 'sc1_rd_inttunpipes', + [56968927] = 'sc1_rd_inttunshortdecal', + [-704145719] = 'sc1_rd_inttunshortextras', + [428095711] = 'sc1_rd_inttunshortol', + [-254539233] = 'sc1_rd_inttunshortreflect', + [537042739] = 'sc1_rd_inttunshortshell', + [1944169716] = 'sc1_rd_inttunstdecalext', + [737484915] = 'sc1_rd_props_combo01_01_lod', + [609287115] = 'sc1_rd_props_combo02_01_lod', + [1691380261] = 'sc1_rd_r1_01_o', + [267408586] = 'sc1_rd_r1_01', + [-1331367534] = 'sc1_rd_r1_02_o', + [498856033] = 'sc1_rd_r1_02', + [-617610920] = 'sc1_rd_r1_03_o', + [-1281942491] = 'sc1_rd_r1_03', + [558823178] = 'sc1_rd_r1_04_o', + [-1041647414] = 'sc1_rd_r1_04', + [2137223847] = 'sc1_rd_r1_04x', + [920815182] = 'sc1_rd_r1_05_o', + [-76174367] = 'sc1_rd_r1_05', + [710041848] = 'sc1_rd_r1_06_o', + [1224427243] = 'sc1_rd_r1_06', + [272455024] = 'sc1_rd_r1_07', + [2099166560] = 'sc1_rd_r1_08_o', + [510456271] = 'sc1_rd_r1_08', + [-555154252] = 'sc1_rd_r1_09_o', + [1114978783] = 'sc1_rd_r1_09', + [1787354811] = 'sc1_rd_r1_10_o', + [-2103043850] = 'sc1_rd_r2_01_o', + [-216163357] = 'sc1_rd_r2_01', + [597142992] = 'sc1_rd_r2_02_o', + [43727582] = 'sc1_rd_r2_02', + [-1736877573] = 'sc1_rd_r2_03_o', + [1424056169] = 'sc1_rd_r2_03', + [-287853905] = 'sc1_rd_r2_04_o', + [1611101621] = 'sc1_rd_r2_04', + [96807427] = 'sc1_rd_r2_05_o', + [811308638] = 'sc1_rd_r2_05', + [616400952] = 'sc1_rd_r2_06_o', + [969189680] = 'sc1_rd_r2_06', + [-1028014729] = 'sc1_rd_r2_07_o', + [-1940992457] = 'sc1_rd_r2_07', + [1901367034] = 'sc1_rd_r2_08_o', + [-1759452197] = 'sc1_rd_r2_08', + [-2040920650] = 'sc1_rd_r2_09_o', + [1758922568] = 'sc1_rd_r2_09', + [-582891155] = 'sc1_rd_r2_10_o', + [1550151049] = 'sc1_rd_r2_10', + [-2123433062] = 'sc1_rd_r2_11_o', + [656343805] = 'sc1_rd_r2_11', + [680048968] = 'sc1_rd_r2_12_o', + [939238582] = 'sc1_rd_r2_12', + [-460201925] = 'sc1_rd_r3_01_o', + [-458535692] = 'sc1_rd_r3_01', + [303609619] = 'sc1_rd_r3_02_o', + [-699453380] = 'sc1_rd_r3_02', + [1796120956] = 'sc1_rd_r3_02x', + [939879711] = 'sc1_rd_r3_03_o', + [-932080511] = 'sc1_rd_r3_03', + [655445077] = 'sc1_rd_r3_04_o', + [-1162053353] = 'sc1_rd_r3_04', + [-1137369398] = 'sc1_rd_r3_05_o', + [-1393173110] = 'sc1_rd_r3_05', + [1528547206] = 'sc1_rd_r3_06_o', + [-2002217748] = 'sc1_rd_r3_06', + [790740230] = 'sc1_rd_r3_08_o', + [1831198183] = 'sc1_rd_r3_08', + [711312641] = 'sc1_rd_r3_09_o', + [-1771818909] = 'sc1_rd_r3_09', + [1684737554] = 'sc1_rd_r3_10_o', + [1249189342] = 'sc1_rd_r3_10', + [1746109717] = 'sc1_rd_r3_11_o', + [1479981409] = 'sc1_rd_r3_11', + [-1603229506] = 'sc1_rd_r3_12_o', + [-1625143497] = 'sc1_rd_r3_12', + [-1441004878] = 'sc1_rd_r3_13_o', + [-1394810196] = 'sc1_rd_r3_13', + [559453306] = 'sc1_rd_r3_14_o', + [-208605161] = 'sc1_rd_r3_14', + [2017884916] = 'sc1_rd_r3_14x', + [-57554625] = 'sc1_rd_r3_gantry', + [-643456782] = 'sc1_rd_r3_gantrybits', + [723021238] = 'sc1_rd_r3_t_01', + [-1190458975] = 'sc1_rd_r3_t_02', + [368449137] = 'sc1_rd_r4_01_o', + [979051556] = 'sc1_rd_r4_01', + [-1691087190] = 'sc1_rd_r4_01x', + [-1337207104] = 'sc1_rd_r4_02_o', + [741902303] = 'sc1_rd_r4_02', + [406068875] = 'sc1_rd_r4_04_o', + [64763675] = 'sc1_rd_r4_04', + [61066704] = 'sc1_rd_r4_05_o', + [-242642314] = 'sc1_rd_r4_05', + [320561828] = 'sc1_rd_r4_06_o', + [-408650068] = 'sc1_rd_r4_06', + [223380804] = 'sc1_rd_r4_07_o', + [-713631151] = 'sc1_rd_r4_07', + [-855045118] = 'sc1_rd_r4_08_o', + [-1154964043] = 'sc1_rd_r4_08', + [397448305] = 'sc1_rd_r4_09_o', + [-1461583576] = 'sc1_rd_r4_09', + [-570094733] = 'sc1_rd_r4_09x', + [-1932743090] = 'sc1_rd_r4_10_o', + [1236809410] = 'sc1_rd_r4_10', + [1919430988] = 'sc1_rd_r4_11_o', + [580315264] = 'sc1_rd_r4_11', + [-1420977287] = 'sc1_rd_r4_12_o', + [-180089381] = 'sc1_rd_r4_12', + [-873616963] = 'sc1_rd_r4_t_02_d', + [1277274691] = 'sc1_rd_r4_t_02_o', + [100397473] = 'sc1_rd_r4_t_02_ov', + [-965929826] = 'sc1_rd_r4_t_02_ovint', + [-60025749] = 'sc1_rd_r4_t_02', + [-1027938953] = 'sc1_rd_r4_t_02int', + [-1718858071] = 'sc1_rd_r4_t_03', + [1467732640] = 'sc1_rd_rnd_tun01_reflect', + [-2061895302] = 'sc1_rd_rnd_tun01_reflect2', + [1791935716] = 'sc1_rd_rnd_tun01_reflect3', + [-394837969] = 'sc1_rd_rnd_tun01_reflect4', + [-636705958] = 'sc1_rd_rnd_tun01_reflect5', + [-807694600] = 'sc1_rd_rnd_tun01_reflect6', + [536008503] = 'sc1_rd_rnd_tun01_shadow', + [213079642] = 'sc1_rd_rnd_tun02_reflect', + [1860845702] = 'sc1_rd_rnd_tun02_shadow', + [1694551345] = 'sc1_rd_rnd_tun03_shadow', + [2014636606] = 'sc1_rd_tram_dt_wires', + [-118442785] = 'sc1_rd_tram_tun_slack', + [-1726155330] = 'sc1_rd_tram_ufib', + [-820003155] = 'sc1_rd_trcks_01', + [-1066184778] = 'sc1_rd_tun_ent_01', + [-793342661] = 'sc1_rd_tun_ent_01bit', + [-17016648] = 'sc1_rd_tun_fake_grill', + [-1076693489] = 'sc1_rd_tun_grill', + [1776821065] = 'sc1_rd_tun_rain001', + [-12798148] = 'sc1_rd_tun_rim_01', + [309682561] = 'sc1_rd_tunnel_detailend', + [-68290180] = 'sc1_rd_tunnel_wire_mesh', + [-849448192] = 'sc1_rd_tunnel2bend_lod', + [448553870] = 'sc1_rd_tunnel2bend', + [-2105632478] = 'sc1_rd_tunnel3bend_lod', + [997092118] = 'sc1_rd_tunnel3bend', + [-1155759671] = 'sc1_rd_tunrof', + [-1494625377] = 'sc1_rd_wall_light_013', + [-1865341074] = 'sc1_rd_wall_light_014', + [-2122643262] = 'sc1_rd_wall_light_015', + [-1610201648] = 'sc1_rd_wall_light_016', + [1417653956] = 'sc1_rd_wall_light_017', + [2128151414] = 'sc1_rd_wall_light_018', + [-1335892349] = 'sc1_rd_wall_light_019', + [748118040] = 'sc1_rd_wall_light_020', + [-1092352845] = 'sc1_rd_wall_light_021', + [-1469425728] = 'sc1_rd_wall_light_022', + [-1167492162] = 'sc1_rd_wall_light_023', + [-202543419] = 'sc1_rd_wall_light_024', + [-542438881] = 'sc1_rd_wire_01', + [240215915] = 'sc1_rd_wire_02', + [585446316] = 'sc1_rd_wire_021', + [152001767] = 'sc1_rd_wire_03', + [-1190380318] = 'sc1_rd_wire_04', + [-1496606623] = 'sc1_rd_wire_05', + [-1018670758] = 'sc1_rd_wire_07', + [-81378755] = 'sc1_rd_wire_10', + [-1444503617] = 'sc1_rd_wire_11', + [-676103336] = 'sc1_rd_wire_12', + [-965093147] = 'sc1_rd_wire_13', + [-1517021422] = 'sc1_rd_wire_15', + [-739380283] = 'sc1_rd_wire_16', + [-1053766069] = 'sc1_rd_wire_17', + [1841899401] = 'sc1_rd_wire_18', + [1535542020] = 'sc1_rd_wire_19', + [1512413883] = 'sc1_rd_wire_19b', + [-1884888664] = 'sc1_rd_wire_20', + [1311301293] = 'sc1_rd_wire_22', + [-934037770] = 'sc1_rd_wirehangers', + [-1529064319] = 'sc1_rd_wirehangertun', + [-1932536822] = 'sc1_rd_wirehangertun001', + [1017230255] = 'sc1_rd_wirehangertun002', + [1770261875] = 'sc1_rd_wirehangertun003', + [-1757550362] = 'sc1_rd_wirehangertun004', + [-1007074724] = 'sc1_rd_wirehangertun005', + [1939284377] = 'sc1_rd_wirehangertun006', + [-1065632927] = 'sc1_rd_wirehangertun007', + [-700127501] = 'sc1_rd_wirehangertun008', + [481227718] = 'sc1_rd_wirehangertun009', + [-1162825533] = 'sc1_rd_wirehangertun010', + [171593685] = 'sc1_rd_wirehangertun011', + [313745607] = 'sc1_rd_wirehangertun012', + [-461863854] = 'sc1_rd_wirehangertun013', + [-11617794] = 'sc1_rd_wirehangertun014', + [1262834170] = 'sc1_rd_wirehangertun015', + [1561392529] = 'sc1_rd_wirehangertun016', + [759830020] = 'sc1_rd_wirehangertun017', + [-2013082764] = 'sc1_rd_wirehangertun018', + [-1771214775] = 'sc1_rd_wirehangertun019', + [-96292582] = 'sc1_rd_wirehangertun020', + [-260596348] = 'sc1_rd_wirehangertun021', + [-1255452397] = 'schafter2', + [-1485523546] = 'schafter3', + [1489967196] = 'schafter4', + [-888242983] = 'schafter5', + [1922255844] = 'schafter6', + [-746882698] = 'schwarzer', + [-186537451] = 'scorcher', + [-1700801569] = 'scrap', + [575185516] = 'sd_palm10_low_uv', + [-1030275036] = 'seashark', + [-616331036] = 'seashark2', + [-311022263] = 'seashark3', + [1221512915] = 'seminole', + [1349725314] = 'sentinel', + [873639469] = 'sentinel2', + [1337041428] = 'serrano', + [-1757836725] = 'seven70', + [-1214505995] = 'shamal', + [819197656] = 'sheava', + [-1683328900] = 'sheriff', + [1922257928] = 'sheriff2', + [-405626514] = 'shotaro', + [1044954915] = 'skylift', + [729783779] = 'slamvan', + [833469436] = 'slamvan2', + [1119641113] = 'slamvan3', + [1057201338] = 'slod_human', + [-2056455422] = 'slod_large_quadped', + [762327283] = 'slod_small_quadped', + [-490686991] = 'sm_01_decals_buld01', + [-821129587] = 'sm_01_decals_buld02', + [223267736] = 'sm_01_decals', + [-871814109] = 'sm_01_decals1', + [514904437] = 'sm_01_decals2', + [-1614916722] = 'sm_01_decals3', + [-1316423901] = 'sm_01_decals4', + [1249434910] = 'sm_01_dirtovrly02', + [1992501973] = 'sm_01_ground_decal', + [-536470299] = 'sm_01_ground_decal001', + [1332417643] = 'sm_01_ground_decal2', + [2103308368] = 'sm_01_ground_decal3', + [-1404350930] = 'sm_01_ground_decal4', + [1519004329] = 'sm_01_ground_decal5', + [-1998682283] = 'sm_01_ground_decal6', + [1190085389] = 'sm_01_ground', + [1024731250] = 'sm_01_ground2', + [-2055872850] = 'sm_01_pip', + [-686675450] = 'sm_01_pip01', + [-975435878] = 'sm_01_pip02', + [2140060588] = 'sm_01_sm01_water', + [-171625316] = 'sm_01_tower_base', + [1146726909] = 'sm_01_tower1', + [1753346637] = 'sm_01_tower2', + [-1184602452] = 'sm_01_towers_dtl', + [-1611109860] = 'sm_01_towers_g_00', + [1858406326] = 'sm_01_towers_g_01', + [1135096185] = 'sm_01_towers_g_02', + [-1841246547] = 'sm_01_towers_g_03', + [-294156515] = 'sm_01_towers_g_04', + [-56351882] = 'sm_01_towers_g_05', + [306859714] = 'sm_01_towers_g_06', + [538962541] = 'sm_01_towers_g_07', + [-1248586421] = 'sm_01_towers_g_08', + [-1008553496] = 'sm_01_towers_g_09', + [-1956397109] = 'sm_01_towers_g_10', + [2033261414] = 'sm_01_towers_g_11', + [-1646828366] = 'sm_01_towers_g_12', + [-1951547297] = 'sm_01_towers_g_13', + [1412747626] = 'sm_01_towers_g_14', + [838569208] = 'sm_01_towers_g_15', + [-319872714] = 'sm_01_towers_rails00', + [44321952] = 'sm_01_towers_rails01', + [216686892] = 'sm_01_towers_rails02', + [-1616443721] = 'sm_01_towers_rails03', + [-1175438519] = 'sm_01_towers_rails04', + [-984395249] = 'sm_01_towers_rails05', + [-678103406] = 'sm_01_towers_rails06', + [1722520769] = 'sm_01_towers_rails07', + [-2130392717] = 'sm_01_towers_rails08', + [930862374] = 'sm_06_apartment01', + [700561842] = 'sm_06_apartment02', + [308336644] = 'sm_06_apartment2_o_001', + [958276994] = 'sm_06_apartment2_o_002', + [162296619] = 'sm_06_apartment2_o_g1', + [637885677] = 'sm_06_apartment2_o', + [74708245] = 'sm_06_apt_detail', + [1374785282] = 'sm_06_plant', + [1487538709] = 'sm_06_terrain', + [-790038218] = 'sm_06_terrain2', + [1330317885] = 'sm_07_bgrime_right', + [1292105138] = 'sm_07_bgrime_right2', + [-192901599] = 'sm_07_bhdge1', + [-1088085149] = 'sm_07_bhdge2', + [1039533797] = 'sm_07_building_left', + [400687066] = 'sm_07_building_lleft', + [1427757193] = 'sm_07_building_right', + [3178148] = 'sm_07_dec_hdge1', + [628642017] = 'sm_07_decals_mid_01a', + [-1248730086] = 'sm_07_decals_mid_2a001', + [-2130865445] = 'sm_07_decals_mid', + [1723311725] = 'sm_07_decals_mid1_2', + [-1470681049] = 'sm_07_terrain_left', + [1758084880] = 'sm_07_terrain_right', + [642052187] = 'sm_07_water_mesh_01', + [-907757720] = 'sm_07_water_mesh_02', + [-1492274951] = 'sm_09_buildnew', + [445362912] = 'sm_09_new03', + [-1360494032] = 'sm_09det_3', + [-577915979] = 'sm_09det_3fizz', + [574735845] = 'sm_09dirt', + [-1989518467] = 'sm_09dirt2', + [1857627675] = 'sm_09dirt3', + [1574667360] = 'sm_09dirt4', + [631785200] = 'sm_09hedgedec1', + [1587394774] = 'sm_09hedgedec2', + [1762672752] = 'sm_09mesh077', + [1581140650] = 'sm_10_bld1_dtl', + [-1313950115] = 'sm_10_bld1_railing001', + [-2128816842] = 'sm_10_bld1_railing002', + [-1104261284] = 'sm_10_bld1_railing003', + [-1617030596] = 'sm_10_bld1_railing004', + [-84413387] = 'sm_10_bld1', + [-2012318369] = 'sm_10_bld3_awning', + [711767328] = 'sm_10_bld3_dtl', + [409579288] = 'sm_10_bld3', + [-640924082] = 'sm_10_bld4_dtl', + [112266151] = 'sm_10_bld4', + [1533244568] = 'sm_10_cloth_rail', + [1156995908] = 'sm_10_detail_gate_small', + [-803905399] = 'sm_10_detail_ladder2', + [-1068437747] = 'sm_10_detail', + [1302021739] = 'sm_10_flatdecals', + [1122480347] = 'sm_10_gate_big', + [1954940682] = 'sm_10_grnd_dtl', + [-112667632] = 'sm_10_ground_railing', + [259339841] = 'sm_10_ladder1', + [530538968] = 'sm_10_lads1', + [302433959] = 'sm_10_lads2', + [1506747786] = 'sm_10_lascuadras_em_lod', + [1965416925] = 'sm_10_lascuadras_em', + [-1206132845] = 'sm_10_railing005', + [-1512293612] = 'sm_10_railing006', + [-744581480] = 'sm_10_railing007', + [-2041387672] = 'sm_10_sm10_new00', + [-518122231] = 'sm_10_sm10_new14', + [1712141675] = 'sm_11_bld1_dtl', + [686128170] = 'sm_11_bld1', + [-1196766785] = 'sm_11_bld2_dtl', + [-1880033579] = 'sm_11_bld2_rdet', + [724795594] = 'sm_11_bld2', + [-1759567827] = 'sm_11_bld3_dtl', + [-1921126539] = 'sm_11_bld3_dtlhed1', + [-714247722] = 'sm_11_bld3_ladz1', + [1635118414] = 'sm_11_bld3', + [368593994] = 'sm_11_bld3fizzfnce', + [-1607592289] = 'sm_11_bld4_det2', + [54170866] = 'sm_11_bld4_dtl', + [1354189777] = 'sm_11_bld4', + [-1839273906] = 'sm_11_bld4shdb1', + [1686362762] = 'sm_11_fmdl1', + [-380232121] = 'sm_11_grnd_dtl', + [863015953] = 'sm_11_grnd', + [837751201] = 'sm_12_bld_ladfiz', + [1147870520] = 'sm_12_bld_railing', + [-1153489592] = 'sm_12_bld', + [382940248] = 'sm_12_glue', + [162256486] = 'sm_12_gluehg1', + [402551563] = 'sm_12_gluehg2', + [-1453526036] = 'sm_12_grnd', + [1192921020] = 'sm_12_sm1_12_em', + [1956818049] = 'sm_13_bld1_dtl', + [-1033912541] = 'sm_13_bld1_windowframe', + [-1344106117] = 'sm_13_bld1', + [-1477218063] = 'sm_13_bld2_dtl', + [-472870922] = 'sm_13_bld2_dtl2', + [-458258] = 'sm_13_bld2_dtlhed1', + [-241736405] = 'sm_13_bld2_dtlhed2', + [755928017] = 'sm_13_bld2', + [301264831] = 'sm_13_hedgemod1', + [1483941575] = 'sm_13_newgrd_railing', + [-2139060822] = 'sm_13_newgrd', + [-1864248382] = 'sm_13_shadmesh1', + [-928957557] = 'sm_13_sm13_emmisivesign', + [-1631171168] = 'sm_14_bld1_dtl', + [1515714686] = 'sm_14_bld1_railing', + [1702461449] = 'sm_14_bld1_railing2', + [-1188502804] = 'sm_14_bld1', + [-1886132542] = 'sm_14_bld2_dtl', + [-1155989432] = 'sm_14_bld2_railing', + [-160801422] = 'sm_14_bld2', + [796298215] = 'sm_14_bld2fizzb1', + [330666416] = 'sm_14_fzzpipes1', + [-1710380545] = 'sm_14_grnd_dtl', + [-1585920121] = 'sm_14_grnd_dtl2', + [1329963810] = 'sm_14_grnd_dtl3', + [296094188] = 'sm_14_grnd_railing', + [1303716584] = 'sm_14_ground', + [-512415329] = 'sm_14_ground2', + [1536367999] = 'sm_14_mp_door_l', + [-849772278] = 'sm_14_mp_door_r', + [849075497] = 'sm_14_propertyfudger', + [-290217201] = 'sm_15_bld1_dtl', + [-1593931531] = 'sm_15_bld1_dtl2', + [273049475] = 'sm_15_bld1_dtl3', + [96410448] = 'sm_15_bld1_wallov', + [-1291573162] = 'sm_15_bld1', + [1506980188] = 'sm_15_bld1wobjects', + [-144748500] = 'sm_15_bld2_dtl', + [1153039600] = 'sm_15_bld2_railing', + [-1454500630] = 'sm_15_bld2', + [1470897157] = 'sm_15_bldgraf1', + [-1804662358] = 'sm_15_delp_stepshadblk', + [68712455] = 'sm_15_delperro_extras', + [-192167886] = 'sm_15_delperro_rim', + [-246265323] = 'sm_15_delperro_shell', + [285671071] = 'sm_15_grnd_decal', + [-251897624] = 'sm_15_grnd', + [-1694474225] = 'sm_15_grnd2_rail', + [-1213163682] = 'sm_15_grnd2', + [1570056720] = 'sm_15_metro_top', + [-1935230139] = 'sm_15_props_heli_slod', + [1090848396] = 'sm_16_allefireerails', + [-1539809421] = 'sm_16_alleyg002', + [-2010570298] = 'sm_16_alleystuff1', + [17950260] = 'sm_16_bildfiz1', + [661818286] = 'sm_16_glue_weed', + [-175655969] = 'sm_16_glue_weed2', + [-1346164653] = 'sm_16_glue_weed3', + [-1575449346] = 'sm_16_glue_weed4', + [-1406682575] = 'sm_16_grndetail1', + [-1191823951] = 'sm_16_ground', + [1964016422] = 'sm_16_motel_decal', + [-1609306558] = 'sm_16_mtl_fzm1', + [688894113] = 'sm_16_mtl_water', + [1627005467] = 'sm_16_mtl', + [2061937748] = 'sm_16_mtlrl', + [414241539] = 'sm_16_mtlwalldet', + [133804145] = 'sm_16_sm16_alfizzlad1', + [-114831466] = 'sm_16_sm16_alfizzlad1f', + [117506320] = 'sm_16_sm16_cablesnw1', + [833028433] = 'sm_16_sm16_smov1', + [591619210] = 'sm_16_sm16_smov2', + [1943307695] = 'sm_16_sm16_smov3', + [-1351758511] = 'sm_16_smbuild1', + [-461495527] = 'sm_16_smbuild1rl', + [-1640092942] = 'sm_16_smbuild2', + [-1849252499] = 'sm_16_smbuildsign', + [1487617474] = 'sm_16_tmp2_decal', + [-705932074] = 'sm_16_tmp2_railings', + [2116667909] = 'sm_16_tmp2', + [-714265724] = 'sm_16_tmp2rl', + [1159218182] = 'sm_16_tmp2walldet', + [-1243780692] = 'sm_16_tmp3_decal', + [-862919878] = 'sm_17_building1', + [-34124441] = 'sm_17_building2_ladder', + [-1094236249] = 'sm_17_building2', + [1880861265] = 'sm_17_building3', + [1661261026] = 'sm_17_buildingrl1', + [1767367048] = 'sm_17_buildingrl2', + [2065204493] = 'sm_17_buildingrl3', + [918562874] = 'sm_17_cable_telephone_std', + [-1254189408] = 'sm_17_details_fizz', + [1979163640] = 'sm_17_details', + [168028974] = 'sm_17_ground', + [472815843] = 'sm_17_ground2', + [-647589601] = 'sm_17_ov', + [754465499] = 'sm_17_ov2', + [522034982] = 'sm_17_ov3', + [-1386876719] = 'sm_17_pavil2', + [84957418] = 'sm_17_vegbed1', + [-214747856] = 'sm_17_vegbed2', + [428540383] = 'sm_17_vegbed3', + [164586088] = 'sm_17_vegbed4', + [-1358385912] = 'sm_17_vegbed5', + [2034771316] = 'sm_17_weed_glue', + [-1476159850] = 'sm_17_weed_glue2', + [-1230097429] = 'sm_17_weed_glue3', + [-220025773] = 'sm_17_weed_glue4', + [-13072319] = 'sm_18_b6_fm1', + [-677448979] = 'sm_18_build3_railing', + [644773145] = 'sm_18_build3_stairs', + [2073827549] = 'sm_18_build3', + [1000015058] = 'sm_18_build4_railing', + [1107775202] = 'sm_18_build4_railing2', + [1356055373] = 'sm_18_build4', + [-823535552] = 'sm_18_build5_detail', + [441270398] = 'sm_18_build5_ladder', + [2062569408] = 'sm_18_build5_ladder3', + [1567397049] = 'sm_18_build5_ladder5', + [328141622] = 'sm_18_build6_h', + [883034858] = 'sm_18_build6', + [1842069902] = 'sm_18_build7_decals', + [577670680] = 'sm_18_build7_fire_exit', + [-2128779480] = 'sm_18_build7_h', + [-1264350461] = 'sm_18_build7', + [-935206575] = 'sm_18_build7fm1', + [-1968870622] = 'sm_18_build7rflad', + [-1363460684] = 'sm_18_gate', + [947861998] = 'sm_18_glue_05', + [1958920574] = 'sm_18_glue_build1', + [855915978] = 'sm_18_glue_build2', + [1119582876] = 'sm_18_glue_build2fz1', + [524949078] = 'sm_18_glue_build3', + [975753656] = 'sm_18_glue_build6_2', + [53495407] = 'sm_18_ground', + [-303415282] = 'sm_18_ground2', + [-20152436] = 'sm_18_j', + [-1797918500] = 'sm_18_jfm1', + [-2039315551] = 'sm_18_newbld', + [-616328463] = 'sm_18_newbldfm1', + [-693726791] = 'sm_18_sm19_gdec3_lod', + [576305764] = 'sm_18_sm19_gdec3', + [-420608994] = 'sm_18_smad3_ladder', + [-1499198024] = 'sm_18_smad3_ladder2', + [-796202999] = 'sm_18_smad3', + [175434710] = 'sm_18_smad3fm1', + [57298379] = 'sm_18_smad9', + [530430168] = 'sm_18_w_build1_railings', + [-372204934] = 'sm_18_w_build1_railings2', + [1534650823] = 'sm_18_w_build2_railing2', + [751701106] = 'sm_18_w_build2_railing3', + [-794091179] = 'sm_18_w_build2_railings1', + [-1226749127] = 'sm_18_w_build2', + [-1649683811] = 'sm_18_wires1', + [-1813922039] = 'sm_18_wires2', + [-1181520632] = 'sm_18_wm_build6_2', + [-6918809] = 'sm_18build6_2shad', + [1716108536] = 'sm_19_addons', + [-2076061455] = 'sm_19_ald2_lad1', + [-1706033907] = 'sm_19_ald2_lad2', + [683121114] = 'sm_19_ald2_lad3', + [955136583] = 'sm_19_ald2_lad4', + [394974603] = 'sm_19_ald3_ladder', + [-1879563174] = 'sm_19_b1_rfdec1', + [-1162905144] = 'sm_19_b1_rfdec2', + [1010040015] = 'sm_19_b1_rfdec3', + [-1615923136] = 'sm_19_build008', + [-2084253155] = 'sm_19_build1_ladder', + [1028262070] = 'sm_19_build1_railing1', + [301428545] = 'sm_19_build1_rfdet', + [-1534905851] = 'sm_19_build4_balcony', + [-831956449] = 'sm_19_build4', + [-1957967549] = 'sm_19_build4fzzf3', + [491976689] = 'sm_19_build5', + [-257887431] = 'sm_19_build8_railing', + [1030116715] = 'sm_19_cablemesh31659_tstd', + [2000317926] = 'sm_19_cablemesh31660_tstd', + [-474693354] = 'sm_19_cablemesh31661_tstd', + [-1115547274] = 'sm_19_cablemesh31662_tstd', + [-1991286156] = 'sm_19_cablemesh31663_tstd', + [1197272630] = 'sm_19_cablemesh31664_tstd', + [1838507040] = 'sm_19_cablemesh31665_tstd', + [816671336] = 'sm_19_cablemesh31666_tstd', + [-474681266] = 'sm_19_cablemesh31667_tstd', + [1495909425] = 'sm_19_cablemesh31668_tstd', + [-145942681] = 'sm_19_cablemesh31669_tstd', + [944926320] = 'sm_19_cablemesh31670_tstd', + [-275838537] = 'sm_19_cablemesh31671_tstd', + [-1655364075] = 'sm_19_cablemesh39684_hvstd', + [549908841] = 'sm_19_cablemesh39695_hvstd', + [1910856084] = 'sm_19_cablemesh39706_hvhvy', + [-1181427442] = 'sm_19_cablemesh39717_hvstd', + [-1251314853] = 'sm_19_cablemesh39728_hvstd', + [-439339029] = 'sm_19_cablemesh39739_hvstd', + [641536944] = 'sm_19_cablemesh39750_hvstd', + [-421584810] = 'sm_19_cablemesh39761_hvstd', + [-1624805909] = 'sm_19_cablemesh39772_hvstd', + [-1344438771] = 'sm_19_cablemesh39783_hvstd', + [-449692774] = 'sm_19_cablemesh39794_hvstd', + [-1829776751] = 'sm_19_cablemesh39805_hvstd', + [71459147] = 'sm_19_cablemesh39959_hvstd', + [142428547] = 'sm_19_cablemesh39970_hvstd', + [-631548402] = 'sm_19_cablemesh39981_hvstd', + [-2055472964] = 'sm_19_cablemesh39992_hvstd', + [-156146124] = 'sm_19_cablemesh40003_hvstd', + [1999913067] = 'sm_19_cablemesh40014_hvstd', + [-2097578027] = 'sm_19_cablemesh42146_hvstd', + [-1086292911] = 'sm_19_cablemesh42157_hvstd', + [-1258278208] = 'sm_19_cablemesh42168_hvstd', + [-1506868825] = 'sm_19_cablemesh42179_hvstd', + [220363661] = 'sm_19_cablemesh42190_hvstd', + [-300584259] = 'sm_19_cablemesh42201_hvstd', + [-195676990] = 'sm_19_cablemesh42212_hvstd', + [1448724980] = 'sm_19_cablemesh42223_hvstd', + [-1278189782] = 'sm_19_cablemesh42234_hvstd', + [-1795888214] = 'sm_19_cablemesh42245_hvstd', + [439839557] = 'sm_19_cablemesh42256_hvstd', + [-1193797255] = 'sm_19_column_ornament', + [1266222694] = 'sm_19_doorcanopy_iref', + [-155206048] = 'sm_19_dummykneel_iref', + [1925982851] = 'sm_19_dummystand_iref', + [-1528271844] = 'sm_19_gdec2', + [1021759610] = 'sm_19_glue_weed', + [-1668233845] = 'sm_19_glue_weed2', + [-1907709697] = 'sm_19_glue_weed3', + [-2122117264] = 'sm_19_glue_weed4', + [-1176382356] = 'sm_19_ground1', + [-1477431159] = 'sm_19_ground2', + [1249334196] = 'sm_19_hedges_dtl', + [822482824] = 'sm_19_hedges', + [310885634] = 'sm_19_ornatebalcony_iq', + [-1837128215] = 'sm_19_parking_ov', + [-402425482] = 'sm_19_parking', + [-2143043464] = 'sm_19_sm19_ald1', + [-1837931305] = 'sm_19_sm19_ald2', + [-1529247309] = 'sm_19_sm19_ald3', + [979272561] = 'sm_19_sm19_build1', + [161192901] = 'sm_19_sm19_gdec1', + [598593870] = 'sm_19_windowcanopy_iref', + [-918470817] = 'sm_19planteriref1', + [-1602960329] = 'sm_20_bld1_dtl', + [-1230083624] = 'sm_20_bld1a_dtl', + [1541513272] = 'sm_20_bridge_fence01a', + [1832141533] = 'sm_20_bridge_fence01b', + [2147313775] = 'sm_20_bridge_fence01c', + [396990409] = 'sm_20_bridge_fence01d', + [299935348] = 'sm_20_bridge_fence02', + [-1044163522] = 'sm_20_bridge_fence02a', + [1073074337] = 'sm_20_bridge_fence02b', + [1371239468] = 'sm_20_bridge_fence02c', + [-536427839] = 'sm_20_bridge_fence03', + [-635010140] = 'sm_20_bridge_fence03a', + [-813928880] = 'sm_20_bridge_fence03b', + [-1112814929] = 'sm_20_bridge_fence03c', + [867816410] = 'sm_20_bridge', + [118584094] = 'sm_20_buildin_railing01', + [-170667869] = 'sm_20_buildin_railing02', + [801227902] = 'sm_20_buildin_railing03', + [1485300651] = 'sm_20_building', + [-2068772294] = 'sm_20_entsign', + [1097791782] = 'sm_20_fizz', + [-617008090] = 'sm_20_grnd2_dtl', + [192092472] = 'sm_20_grnd2', + [1000187100] = 'sm_20_grnd2a_dtl', + [1277796719] = 'sm_20_grnd2b_dtl', + [-2016897655] = 'sm_20_grnd3_dtl', + [499301847] = 'sm_20_grnd3', + [-93364281] = 'sm_20_grnd4_dtl', + [157193483] = 'sm_20_grnd4', + [-2130195232] = 'sm_20_ground1', + [-1870127130] = 'sm_20_hedge_dcl', + [1498456566] = 'sm_20_railing1', + [957413904] = 'sm_20_slight_iref_01', + [-1097169631] = 'sm_20_slight_iref_02', + [-474008154] = 'sm_20_sm20_barrier2', + [-712959702] = 'sm_20_sm20_barrier3', + [-928874647] = 'sm_20_sm20_barrier4', + [-973775492] = 'sm_20_sm20_barrierends', + [1888656663] = 'sm_20_sm20_barrierends2', + [-564844861] = 'sm_20_sm20_road', + [275282348] = 'sm_20_sm20_road2', + [-1635674680] = 'sm_20_sm20_road3', + [-1410125653] = 'sm_20_sm20_road4', + [907741444] = 'sm_20_sm20_roadov', + [-240220191] = 'sm_20_sm20_roadov2', + [185383581] = 'sm_20_sm20_roadov3', + [1749773175] = 'sm_20_sm20_tunnel1', + [-1355581106] = 'sm_20_sm20_tunnel2', + [-1666886606] = 'sm_20_sm20_tunnel3', + [22617492] = 'sm_20_sm20_tunnel4', + [778039869] = 'sm_20_sm20_tunnel4ends', + [-651778886] = 'sm_20_sm20_tunnelshell', + [-320583386] = 'sm_20_sm20_tunnelshell2', + [1830805] = 'sm_20_sm20_tunnelshell3', + [-492391257] = 'sm_20_sm20_tunnelshell4', + [284439818] = 'sm_20_tun1_reflect', + [339858791] = 'sm_20_tun2_reflect', + [211599300] = 'sm_20_tun3_reflect', + [954504406] = 'sm_20_tun4_reflect', + [1136936174] = 'sm_20_tunnel_p1', + [790277724] = 'sm_20_tunnel_railing2', + [491588289] = 'sm_20_tunnel_railing3', + [213215634] = 'sm_20_tunnel_railing4', + [-481810072] = 'sm_20_tunnel_slod_a', + [1176530711] = 'sm_20_tunnel_slod_f', + [1250221429] = 'sm_20_tunnel1blight', + [1651719894] = 'sm_20_tunnel1blight001', + [1883691645] = 'sm_20_tunnel1blight002', + [-1510193689] = 'sm_20_tunnel1blight003', + [-1279991464] = 'sm_20_tunnel1blight004', + [173346491] = 'sm_20_tunnel1blight005', + [1015903019] = 'sm_20_tunnel1blight006', + [2134014036] = 'sm_20_tunnel1blight007', + [421571666] = 'sm_20_tunnel1blight008', + [-327724284] = 'sm_20_tunnel1blight009', + [1988388356] = 'sm_20_tunnel1blight010', + [-1127124323] = 'sm_20_tunnel1blight011', + [1275990296] = 'sm_20_tunnel1blight012', + [275945950] = 'sm_20_tunnel1blight013', + [497857618] = 'sm_20_tunnel1blight014', + [1671413815] = 'sm_20_tunnel1blight015', + [-2090795079] = 'sm_20_tunnel1blight016', + [-679893011] = 'sm_20_tunnel1blight017', + [-457751960] = 'sm_20_tunnel1blight018', + [1931152593] = 'sm_20_tunnel1slight', + [873354528] = 'sm_20_tunnel1slight001', + [1636053003] = 'sm_20_tunnel1slight002', + [408526263] = 'sm_20_tunnel1slight003', + [1174305024] = 'sm_20_tunnel1slight004', + [-1469956670] = 'sm_20_tunnel1slight005', + [-1968307622] = 'sm_20_tunnel1slight006', + [2133158733] = 'sm_20_tunnel1slight007', + [1826113203] = 'sm_20_tunnel1slight008', + [-1317744661] = 'sm_20_tunnel1slight009', + [1163852077] = 'sm_20_tunnel1slight010', + [-26481852] = 'sm_20_tunnel1slight011', + [280006609] = 'sm_20_tunnel1slight012', + [1933792501] = 'sm_20_tunnel1slight013', + [2121689947] = 'sm_20_tunnel1slight014', + [1469029774] = 'sm_20_tunnel1slight015', + [1626976354] = 'sm_20_tunnel1slight016', + [-1944418653] = 'sm_20_tunnel1slight017', + [-1218323151] = 'sm_20_tunnel1slight018', + [1878707816] = 'sm_20_tunnel1slight019', + [1229552986] = 'sm_20_tunnel1slight020', + [1871137237] = 'sm_20_tunnel1slight021', + [500016739] = 'sm_20_tunnel1slight022', + [1675670152] = 'sm_20_tunnel1slight023', + [-2110591188] = 'sm_20_tunnel1slight024', + [1750743935] = 'sm_20_tunnel1slight025', + [1386418193] = 'sm_20_tunnel1slight026', + [-918028971] = 'sm_20_tunnel1slight027', + [-1220519610] = 'sm_20_tunnel1slight028', + [-1653791328] = 'sm_20_tunnel1slight029', + [593146525] = 'sm_20_tunnel1slight030', + [1497898615] = 'sm_20_tunnel1slight031', + [-1997144622] = 'sm_20_tunnel1slight032', + [1590438275] = 'sm_20_tunnel1slight033', + [1283589359] = 'sm_20_tunnel1slight034', + [-1038061530] = 'sm_20_tunnel1slight035', + [-1310109768] = 'sm_20_tunnel1slight036', + [-1480869027] = 'sm_20_tunnel1slight037', + [-1786931487] = 'sm_20_tunnel1slight038', + [-1767201589] = 'sm_20_tunnelsshadow1_slod', + [-1622820968] = 'sm_20_tunnelsshadow1', + [-105943958] = 'sm_20_tunnelsshadow2', + [-403388171] = 'sm_20_tunnelsshadow3', + [-1395278589] = 'sm_20_tunnelsshadow4_slod', + [-701323919] = 'sm_20_tunnelsshadow4', + [-613578063] = 'sm_21_build02_b_wire', + [-2052194255] = 'sm_21_build02_dtl', + [324848477] = 'sm_21_build02_dtl2', + [-1196419571] = 'sm_21_build02_dtl3', + [457680554] = 'sm_21_build02_ladder1', + [-1661257] = 'sm_21_build02', + [-1591592905] = 'sm_21_build03_b_wire', + [287164709] = 'sm_21_build03', + [677424286] = 'sm_21_dtl_01', + [1636802291] = 'sm_21_dtl_02', + [43268798] = 'sm_21_dtl', + [-751977770] = 'sm_21_dtl03', + [-1031990253] = 'sm_21_ground2_2', + [-226546807] = 'sm_21_ground2', + [1375642932] = 'sm_21_railing1', + [138056109] = 'sm_21_railing2', + [1103089243] = 'sm_21_uvanim', + [609814088] = 'sm_22_alpha_01x', + [-703152450] = 'sm_22_alpha_02', + [716729376] = 'sm_22_alpha_1001', + [-970775325] = 'sm_22_alpha', + [58722909] = 'sm_22_bld69_fence', + [-1667547961] = 'sm_22_box_003', + [-1077089985] = 'sm_22_box_01', + [1387695896] = 'sm_22_box_02', + [-1367775397] = 'sm_22_build_01_railing', + [1156480248] = 'sm_22_build_01', + [-421360249] = 'sm_22_build_67_nw', + [987981474] = 'sm_22_build_67', + [-1497112590] = 'sm_22_build_railing', + [-1498089899] = 'sm_22_build_railing1', + [239861010] = 'sm_22_build0x', + [-1776887296] = 'sm_22_build13_railing', + [1658388474] = 'sm_22_build13_topcone', + [-1711041105] = 'sm_22_build13', + [-1221364567] = 'sm_22_building_69_nw', + [1544399491] = 'sm_22_building_69_railing', + [-1457973941] = 'sm_22_building_69', + [-1817057176] = 'sm_22_building_bulbs', + [-160683799] = 'sm_22_bulbs_01_irsrefm', + [-1605597990] = 'sm_22_bulbs_08', + [310313467] = 'sm_22_cableforbulbs', + [2069732710] = 'sm_22_cablemesh212741_thvy', + [1236780306] = 'sm_22_cables_01', + [1429953832] = 'sm_22_coffee_cup_trailer', + [104043923] = 'sm_22_detsjm', + [700069859] = 'sm_22_entsign2_slod', + [-619570934] = 'sm_22_entsign2', + [-149539834] = 'sm_22_extras_01', + [1773443377] = 'sm_22_extras_03', + [1559127234] = 'sm_22_extras_069', + [2079276454] = 'sm_22_extras_08', + [2064918595] = 'sm_22_ferris_motor_irm', + [2013150397] = 'sm_22_ferris_supp', + [1607797324] = 'sm_22_irefmaster_01', + [-965486712] = 'sm_22_irefmaster_02', + [592646473] = 'sm_22_irefmaster_03', + [936000055] = 'sm_22_irefmaster_04', + [-1931582366] = 'sm_22_irefmaster_06', + [-501059040] = 'sm_22_ladder', + [-110202040] = 'sm_22_master_railing2', + [-1981098189] = 'sm_22_office_alpha_lod', + [1772320718] = 'sm_22_office_alpha', + [1454701673] = 'sm_22_office_antena', + [-1171044979] = 'sm_22_office_det', + [379855493] = 'sm_22_office_det001', + [758608782] = 'sm_22_office_lattice', + [1010580992] = 'sm_22_office', + [989032027] = 'sm_22_oot_alpha_n', + [-932057965] = 'sm_22_oot_alpha', + [2123354192] = 'sm_22_orn_01_night', + [-892102866] = 'sm_22_orn_02_night', + [1293652938] = 'sm_22_orn_03_night', + [1241621140] = 'sm_22_orn_04_night', + [884582834] = 'sm_22_pier_alpha_01', + [525053746] = 'sm_22_pier_nrails100', + [-1683445782] = 'sm_22_pier_nrails101', + [-1261905366] = 'sm_22_pier_nrails102', + [1536287100] = 'sm_22_pier_nrails102a', + [-1720190181] = 'sm_22_pier_railing', + [-146397616] = 'sm_22_pier_railing06', + [1695285842] = 'sm_22_pier_railing07', + [984108055] = 'sm_22_pier_railing2', + [686598304] = 'sm_22_pier_railing3', + [356680012] = 'sm_22_pier_railing4', + [-2120041979] = 'sm_22_pier_section_006', + [-1917871110] = 'sm_22_pier', + [1299462321] = 'sm_22_piernewsteps', + [573017481] = 'sm_22_piersurf_3', + [-1810687794] = 'sm_22_piersurf', + [-1705656149] = 'sm_22_piersurf2', + [-461984434] = 'sm_22_pleas_pier_fr', + [-1337850579] = 'sm_22_pleas_pier_sgn', + [2000965656] = 'sm_22_pp_sign', + [870157253] = 'sm_22_pp_tied', + [-1296999164] = 'sm_22_railing03', + [-1956676994] = 'sm_22_railing1', + [-1483600087] = 'sm_22_rc_canopy', + [-254430631] = 'sm_22_rc_railing', + [1202083777] = 'sm_22_rccpyshad', + [-1049331294] = 'sm_22_rcoaster_neon', + [1781890739] = 'sm_22_rcoaster_railings', + [-1355901367] = 'sm_22_rcoaster1a', + [-155736826] = 'sm_22_rcoaster1b', + [1675001750] = 'sm_22_rcoaster1c', + [371385308] = 'sm_22_rcoaster1d', + [-1587086666] = 'sm_22_rcoaster1f', + [1460823566] = 'sm_22_rcoaster1g', + [-1641375979] = 'sm_22_sm1_22_glue_0', + [140901141] = 'sm_22_sm1_22_glue_01', + [2015331827] = 'sm_22_sm1_22_glue_01a', + [-626843760] = 'sm_22_sm1_22_glue_02', + [65434138] = 'sm_22_sm1_22_glue_03', + [586794380] = 'sm_22_sm1_22_weed_02', + [1563145342] = 'sm_22_splats_01', + [-327064148] = 'sm_22_splats', + [1044605135] = 'sm_22_splats02', + [1144671393] = 'sm_22_splats1_2', + [1441820685] = 'sm_22_splats1_3', + [2047279980] = 'sm_22_splats1', + [-1372900328] = 'sm_22_stend', + [-765294459] = 'sm_22_stend01', + [-400182261] = 'sm_22_stend02', + [-165818373] = 'sm_22_stend03', + [787739750] = 'sm_22_structend_a', + [265468452] = 'sm_22_structendsm', + [-151177216] = 'sm_22_structendsm01', + [1171772852] = 'sm_22_structendsm02', + [-54148207] = 'sm_22_structendsm03', + [-359751901] = 'sm_22_structendsm04', + [1278304887] = 'sm_22_structendsm05', + [2070317877] = 'sm_23_bld', + [1577761086] = 'sm_23_grnd_builing_dtl', + [522037299] = 'sm_23_grnd_dtl_1', + [768591255] = 'sm_23_grnd_dtl_2', + [-1845785115] = 'sm_23_grnd_dtl_3', + [-1622333304] = 'sm_23_grnd_dtl_4', + [-1400487174] = 'sm_23_grnd_dtl_5', + [-1645920457] = 'sm_23_grnd_dtl', + [-1050418571] = 'sm_23_grnd1', + [62894459] = 'sm_23_grnd2_dtl', + [-74590520] = 'sm_23_grnd2', + [-1985289795] = 'sm_24__awning_002', + [178825545] = 'sm_24__awning_02', + [-1187823988] = 'sm_24_b1_dd_hedge2', + [-680660773] = 'sm_24_b1_ddwg_rail_1', + [-1391210823] = 'sm_24_b1_ddwg', + [1132621253] = 'sm_24_b1_rail_01', + [703046528] = 'sm_24_b1', + [1357841456] = 'sm_24_b2_ddwg_rails', + [-1505800095] = 'sm_24_b2_ddwg_small_r', + [1680594007] = 'sm_24_b2_ddwg', + [452386911] = 'sm_24_b2_rail_01', + [-817041840] = 'sm_24_b2', + [-976822227] = 'sm_24_b3_ddwg', + [1539609483] = 'sm_24_b3_rail_003', + [1871821609] = 'sm_24_b3_rail_004', + [-1174397613] = 'sm_24_b3_rail_01', + [1311458739] = 'sm_24_b3_rail_02', + [1213479429] = 'sm_24_b3_rail_03', + [-218165412] = 'sm_24_b3_rail_04', + [1136924869] = 'sm_24_b3_rails00', + [-658750793] = 'sm_24_b3_rails01', + [-360913352] = 'sm_24_b3_rails02', + [402075375] = 'sm_24_b3_stair_rail', + [-1091678829] = 'sm_24_b3', + [851725936] = 'sm_24_b4_dd_hedge', + [-457734280] = 'sm_24_b4_ddwg_r_01', + [-217635817] = 'sm_24_b4_ddwg_r_02', + [21807266] = 'sm_24_b4_ddwg_r_03', + [847192822] = 'sm_24_b4_ddwg_r_04', + [-2049188165] = 'sm_24_b4_ddwg_wires_01', + [-1471143005] = 'sm_24_b4_ddwg_wires_02', + [-1708816562] = 'sm_24_b4_ddwg_wires_03', + [-2077822119] = 'sm_24_b4_ddwg_wires', + [-1754747307] = 'sm_24_b4_ddwg', + [797218039] = 'sm_24_b4_rail_001', + [1637021971] = 'sm_24_b4_rail_002', + [-1948594782] = 'sm_24_b4_rail_003', + [-1921891364] = 'sm_24_b4_top_rail_002', + [-1009216359] = 'sm_24_b4_top_rail', + [-1667269257] = 'sm_24_b4_wire_02', + [-1465900809] = 'sm_24_b4', + [1495213017] = 'sm_24_gr01_rail', + [-791255862] = 'sm_24_gr01_rail02', + [1047461002] = 'sm_24_gr01', + [1870031033] = 'sm_24_gr03_dcl', + [945320025] = 'sm_24_gr03', + [787796914] = 'sm_24_irefgatea_01', + [-865315025] = 'sm_24_irefgateb_01', + [169308524] = 'sm_24_irefgatec_01', + [865836354] = 'sm_25_land01', + [1825761687] = 'sm_25_land02_ov1', + [-1515463864] = 'sm_25_land02_ov2', + [1091647533] = 'sm_25_land02', + [1711513863] = 'sm_25_wall01', + [-1510298083] = 'sm_25_wall01a', + [1480918410] = 'sm_25_wall02', + [-1597070171] = 'sm_25_wall02a', + [-793348501] = 'sm_25_wall03', + [2145607507] = 'sm_25_wall03a', + [1601519056] = 'sm_25_weeds', + [-570614247] = 'sm_26_bld_hidet', + [-1986535309] = 'sm_26_bld_railing_2c', + [960007174] = 'sm_26_bld_window_01', + [-24618024] = 'sm_26_bld', + [1519123745] = 'sm_26_bldrail', + [-243973540] = 'sm_26_bldrail2', + [1690999775] = 'sm_26_building_railing', + [616542661] = 'sm_26_building_railing01', + [507913422] = 'sm_26_building_railing02', + [1904565981] = 'sm_26_carpark', + [1292450893] = 'sm_26_decals_001', + [-800909349] = 'sm_26_decals_02', + [385230148] = 'sm_26_decals_03', + [868376284] = 'sm_26_decals_04', + [1041821445] = 'sm_26_decals', + [-1560643858] = 'sm_26_fwayopas3', + [-702017096] = 'sm_26_gas', + [-346684547] = 'sm_26_gasdecal', + [-143620092] = 'sm_26_glassrailings01', + [1709204706] = 'sm_26_glassrailings02', + [869806587] = 'sm_26_grounds', + [103999369] = 'sm_26_h_bar', + [-446315167] = 'sm_26_land01', + [-1625278249] = 'sm_26_land02', + [-1966665691] = 'sm_26_land03', + [-1368107137] = 'sm_26_land05', + [-688230919] = 'sm_26_lnddcal02_01', + [-382430611] = 'sm_26_lnddcal02_02', + [-76138768] = 'sm_26_lnddcal02_03', + [496444655] = 'sm_26_lnddcal02', + [1578841491] = 'sm_26_op3_fence01', + [-2120745844] = 'sm_26_op3_fence03', + [187726708] = 'sm_26_pwall', + [2057243973] = 'sm_26_pwall0000', + [452294618] = 'sm_26_pwall001', + [1766758981] = 'sm_26_pwall04', + [-1279348936] = 'sm_26_pwall05', + [-1670086492] = 'sm_26_pwall06', + [-511098249] = 'sm_26_pwall06a', + [-667650013] = 'sm_26_pwall07', + [-1866588882] = 'sm_26_pwall07a', + [-939138078] = 'sm_26_sm26_pool', + [-533534029] = 'sm_26_steps01_of', + [-709124335] = 'sm_26_steps01', + [269482554] = 'sm_27_2_ddwg_hedge02', + [-263170186] = 'sm_27_2_ddwg', + [1141047673] = 'sm_27_2_ddwr_rail_09', + [-757490555] = 'sm_27_2_ddwr', + [1379312669] = 'sm_27_4_ddwg', + [1620083039] = 'sm_27_5_ddwg_hedge01', + [360566340] = 'sm_27_5_ddwg', + [-1734223340] = 'sm_27_5_ddwr_01', + [-2088916418] = 'sm_27_5_ddwr', + [-1463145077] = 'sm_27_5_ddwr4_01', + [192443110] = 'sm_27_5_ddwr4_03', + [-707088786] = 'sm_27_5_ddwr5_02', + [-1758777072] = 'sm_27_5_ddwr5_05', + [-1494429325] = 'sm_27_5_ddwr5_13', + [419108905] = 'sm_27_build1_dtl_railing1', + [-1749642110] = 'sm_27_build1_dtl', + [-882328099] = 'sm_27_build1_railing_001', + [-609329560] = 'sm_27_build1_railing_002', + [1768788426] = 'sm_27_build1_railing', + [1772125361] = 'sm_27_build1_railing1', + [-1583059780] = 'sm_27_build1_railing2', + [793511945] = 'sm_27_build1_railing3', + [1000101024] = 'sm_27_build1', + [501569786] = 'sm_27_build2_rail_001_lod', + [-233745980] = 'sm_27_build2_rail_002_lod', + [572436936] = 'sm_27_build2_rail_005', + [-1118509472] = 'sm_27_build2_rail_stair', + [1622939716] = 'sm_27_build2_window_rail', + [501165076] = 'sm_27_build2_window', + [1239085341] = 'sm_27_build2', + [608286979] = 'sm_27_build3_004', + [-1812896704] = 'sm_27_build3_dtl', + [1781613157] = 'sm_27_build3_rail_002', + [-1078939479] = 'sm_27_build3_rails_001', + [-44320268] = 'sm_27_build3_rails_03', + [51635096] = 'sm_27_build3', + [-1694675769] = 'sm_27_build4_top_02', + [-2002081758] = 'sm_27_build4_top_03', + [-528197672] = 'sm_27_build4_top_06', + [-194886091] = 'sm_27_build4', + [-407294749] = 'sm_27_build5', + [1780594044] = 'sm_27_cp02_decal', + [538425931] = 'sm_27_detail_001', + [-1512913473] = 'sm_27_detail_002', + [-1282645710] = 'sm_27_detail_003', + [1484827420] = 'sm_27_detail_005', + [-1763197522] = 'sm_27_gate003_ne_custom001', + [1838197169] = 'sm_27_gateb_002', + [888986772] = 'sm_27_gateb_01', + [1559244] = 'sm_27_gatec_002', + [-316847744] = 'sm_27_groundb', + [1246062234] = 'sm_27_groundc_02', + [1528934537] = 'sm_27_groundc_gates_01', + [-756148958] = 'sm_27_groundc', + [1263090369] = 'sm_27_shrinksofa', + [1462914127] = 'sm_boat_bckdet1', + [-1383696138] = 'sm_boat_bckdet2', + [-502512154] = 'sm_boat_bckdet2a', + [2092701538] = 'sm_boat_bckdet3', + [-1016199418] = 'sm_boat_bckdet3a', + [62460645] = 'sm_boat_clutter001', + [1709829989] = 'sm_boat_clutter1', + [1381517382] = 'sm_boat_clutter2', + [1678437291] = 'sm_boat_clutter3', + [720599421] = 'sm_boat_clutter7', + [30091053] = 'sm_boat_clutter8', + [1407739869] = 'sm_boat_deck_detail', + [-981218795] = 'sm_boat_deck_rails', + [-1935173146] = 'sm_boat_deck_rails01', + [-1644610423] = 'sm_boat_deck_rails02', + [2064886860] = 'sm_boat_emissive_lod', + [343161602] = 'sm_boat_front_rails', + [1667665771] = 'sm_boat_hoists', + [390174753] = 'sm_boat_hoists2', + [-1252245183] = 'sm_boat_holds', + [-442075417] = 'sm_boat_holds2', + [-1285909936] = 'sm_boat_holds3', + [-1887498556] = 'sm_boat_hull_dirt', + [-1594046591] = 'sm_boat_hull_dirt2', + [-892789092] = 'sm_boat_hull', + [183168021] = 'sm_boat_lounge_plants', + [-482046838] = 'sm_boat_lounge_seats', + [2136198367] = 'sm_boat_main_cabin', + [1964501153] = 'sm_boat_main_telecom_pole1', + [-923234219] = 'sm_boat_main_telecom_poles', + [2131846142] = 'sm_boat_main_telecom', + [-709088705] = 'sm_boat_poles', + [-1838360539] = 'sm_boat_pool_rails_01', + [-1679275850] = 'sm_boat_pool_rails', + [-1044722502] = 'sm_boat_pool_rails02', + [1806374769] = 'sm_boat_rear_ladders', + [-583124630] = 'sm_boat_rings_of_life', + [779648633] = 'sm_boat_side_windows', + [-1298203218] = 'sm_boat_slod1', + [1725624309] = 'sm_boat_top_stairs', + [-1781534035] = 'sm_boat_towbars', + [-1047091432] = 'sm_boat_towbars2', + [-221144759] = 'sm_emissive_bld1_em', + [729811152] = 'sm_emissive_bld2_em', + [1790499833] = 'sm_emissive_build7_em', + [301012316] = 'sm_emissive_em_nw1', + [-337917650] = 'sm_emissive_em_nw2', + [812012102] = 'sm_emissive_em_nw3', + [192249758] = 'sm_emissive_em1', + [20409766] = 'sm_emissive_em2b', + [2034700625] = 'sm_emissive_emb1', + [1475137181] = 'sm_emissive_emb2', + [-1949026725] = 'sm_emissive_emb3', + [363101632] = 'sm_emissive_emissive_b', + [-560525402] = 'sm_emissive_emissive_c', + [-951070880] = 'sm_emissive_emissive', + [-1702906852] = 'sm_emissive_emissive2z', + [-1235919674] = 'sm_emissive_night', + [1155977889] = 'sm_emissive_sm_01', + [-1704821353] = 'sm_emissive_sm_06', + [1131668777] = 'sm_emissive_sm_07a', + [-492788856] = 'sm_emissive_sm_07b', + [-194754801] = 'sm_emissive_sm_07c', + [490969293] = 'sm_emissive_sm_07d', + [-1156104444] = 'sm_emissive_sm_09', + [-1150735716] = 'sm_emissive_sm_12', + [-863772149] = 'sm_emissive_sm_13_emb', + [1481204810] = 'sm_emissive_sm_13', + [647725295] = 'sm_emissive_sm_14', + [1874301734] = 'sm_emissive_sm_15', + [488205799] = 'sm_emissive_sm_17', + [-885340399] = 'sm_emissive_sm_18_a', + [-1426528969] = 'sm_emissive_sm_18_z2', + [-357660398] = 'sm_emissive_sm_18', + [-121650928] = 'sm_emissive_sm_20', + [-188450308] = 'sm_emissive_sm_21_a', + [214296860] = 'sm_emissive_sm_21', + [-1681892869] = 'sm_emissive_sm_22_ema', + [-1385824954] = 'sm_emissive_sm_22_emb', + [-1822144185] = 'sm_emissive_sm_22_emc', + [815837397] = 'sm_emissive_sm_23', + [1205460807] = 'sm_emissive_sm_24', + [1781244906] = 'sm_emissive_sm_26', + [1845124360] = 'sm_emissive_sm_27_a', + [-2107832883] = 'sm_emissive_sm_27_c', + [959050600] = 'sm_emissive_sm_27_d', + [1951443972] = 'sm_emissive_sm_a_17', + [-1196056862] = 'sm_emissive_sm_b_17', + [-2088621552] = 'sm_emissive_sm_b_27', + [-1084876826] = 'sm_emissive_sm_e_27', + [530606431] = 'sm_emissive_sm_em24_nw3', + [1053090072] = 'sm_emissive_sm_em24nw1', + [344362140] = 'sm_emissive_sm_em24nw2', + [468308552] = 'sm_emissive_wm_bild62_em', + [7188113] = 'sm_lod_emissive_5_19_slod', + [493026780] = 'sm_lod_emissive', + [-413517493] = 'sm_lod_slod3', + [-635134240] = 'sm_lod_slod4', + [-268741574] = 'sm_lod_sm_emissive_slod', + [-1553764902] = 'sm_props_prop_billboard_rprox', + [-1256061543] = 'sm_rd_01_r1a_ovly', + [-765749105] = 'sm_rd_01_r1a_wires', + [1316522703] = 'sm_rd_01_r1a', + [-461926922] = 'sm_rd_01_r1b_ovly', + [1769021199] = 'sm_rd_01_r1b_wires', + [-1569508669] = 'sm_rd_01_r1b', + [-1299283147] = 'sm_rd_01_r1c_ovly', + [332657377] = 'sm_rd_01_r1c_wires', + [1908166998] = 'sm_rd_01_r1c', + [-1015803771] = 'sm_rd_01_r1d_ovly', + [-953156548] = 'sm_rd_01_r1d', + [486486907] = 'sm_rd_01_r1e_ovly', + [-1787946823] = 'sm_rd_01_r1e', + [26209594] = 'sm_rd_01_r1f_ovly', + [-916946799] = 'sm_rd_01_r1f', + [-1747835346] = 'sm_rd_01_r1g_ovly', + [-1197252829] = 'sm_rd_01_r1g', + [2103136022] = 'sm_rd_01_r1h_ovly', + [-299677146] = 'sm_rd_01_r1h', + [123007247] = 'sm_rd_01_r1i_ovly', + [-54696102] = 'sm_rd_01_r1i', + [427745667] = 'sm_rd_01_r2a_ovly', + [-266285191] = 'sm_rd_01_r2a', + [1570369674] = 'sm_rd_01_r2b_ovly', + [-1252599326] = 'sm_rd_01_r2b', + [-364322289] = 'sm_rd_01_r2c_ovly', + [-1019087432] = 'sm_rd_01_r2c', + [1183255256] = 'sm_rd_01_r2d_ovly', + [451028219] = 'sm_rd_01_r2d', + [523347467] = 'sm_rd_01_r2e_ovly', + [686473484] = 'sm_rd_01_r2e', + [1539004010] = 'sm_rd_01_r2f_ovly', + [410126201] = 'sm_rd_01_r2f_wires', + [-27497488] = 'sm_rd_01_r2f', + [1509290267] = 'sm_rd_01_r2g_ovly', + [219285851] = 'sm_rd_01_r2g', + [1998964509] = 'sm_rd_01_r2h_ovly', + [1675736821] = 'sm_rd_01_r2h', + [-1845514624] = 'sm_rd_01_r2i_ovly', + [1906332274] = 'sm_rd_01_r2i', + [-1189542368] = 'sm_rd_01_r3a_ovly', + [1736239043] = 'sm_rd_01_r3a', + [-823556599] = 'sm_rd_01_r3b_ovly', + [-1374489362] = 'sm_rd_01_r3b', + [165101103] = 'sm_rd_01_r3c_ovly', + [1002999899] = 'sm_rd_01_r3c', + [-830176742] = 'sm_rd_01_r3d_ovly', + [-1838793323] = 'sm_rd_01_r3d', + [1925432931] = 'sm_rd_01_r3e_ovly', + [-1605117584] = 'sm_rd_01_r3e', + [924287638] = 'sm_rd_01_r3f_ovly', + [-216400125] = 'sm_rd_01_r3f', + [1280667701] = 'sm_rd_01_r4a_ovly', + [227554627] = 'sm_rd_01_r4a', + [-616057295] = 'sm_rd_01_r4b_ovly', + [946703101] = 'sm_rd_01_r4b', + [1309004936] = 'sm_rd_01_r4c_ovly', + [1777626634] = 'sm_rd_01_r4c', + [1349872815] = 'sm_rd_01_r4d_ovly', + [-1770338538] = 'sm_rd_01_r4d', + [-38421647] = 'sm_rd_01_r4e_ovly', + [1221700549] = 'sm_rd_01_r4e', + [-1253342689] = 'sm_rd_01_r4f_ovly', + [-1844003250] = 'sm_rd_01_r4f', + [-1114953147] = 'sm_rd_01_r4g_ovly', + [-1537809714] = 'sm_rd_01_r4g', + [-1704007840] = 'sm_rd_01_r4h_ovly', + [-275875516] = 'sm_rd_01_r4h', + [743478836] = 'sovereign', + [-1980482350] = 'sp1_01_cnt_sign', + [896396699] = 'sp1_01_debries_001', + [51775724] = 'sp1_01_debries_002', + [616161945] = 'sp1_01_details_01', + [576576993] = 'sp1_01_details_02', + [278870628] = 'sp1_01_details_03', + [369739109] = 'sp1_01_details_0j', + [272469416] = 'sp1_01_grde001', + [1040214317] = 'sp1_01_grde002', + [81524453] = 'sp1_01_grde003', + [1412331192] = 'sp1_01_jumptest_fizzhd', + [-289249109] = 'sp1_01_jumptest', + [-1930921615] = 'sp1_03__hd_fizzing_044', + [-1867874411] = 'sp1_03__hd_fizzing_053', + [1688341506] = 'sp1_03__hd_fizzing_0675', + [-1257765257] = 'sp1_03_bbuild_01_d', + [392373231] = 'sp1_03_bbuild_01', + [59283756] = 'sp1_03_bbuild_05_d', + [2130939928] = 'sp1_03_bbuild_05_o', + [1550265850] = 'sp1_03_bbuild_05', + [306827323] = 'sp1_03_build_001_d', + [1978499018] = 'sp1_03_build_001', + [396444463] = 'sp1_03_build_003', + [-1846163322] = 'sp1_03_build_010_d', + [1320399451] = 'sp1_03_build_010', + [2112918316] = 'sp1_03_build_69_details', + [1257126093] = 'sp1_03_build_69_o', + [1844662192] = 'sp1_03_build_69', + [-2020206640] = 'sp1_03_build_69a_o', + [1103126256] = 'sp1_03_cablemesh37326_tstd', + [161581647] = 'sp1_03_carwreck_01', + [2074930788] = 'sp1_03_carwreck_02', + [645284856] = 'sp1_03_carwreck_03', + [404858703] = 'sp1_03_carwreck_04', + [-526532] = 'sp1_03_carwreck_05', + [-1900505921] = 'sp1_03_carwreck_06', + [-529844189] = 'sp1_03_carwreck_07', + [-217850540] = 'sp1_03_carwreck_08', + [1313556003] = 'sp1_03_carwreck_slod', + [1997114228] = 'sp1_03_grnd_d', + [-357304705] = 'sp1_03_grnd01_d', + [-250212429] = 'sp1_03_ground_detail_01', + [-1357420178] = 'sp1_03_ground_detail', + [-789380911] = 'sp1_03_ground', + [-638571933] = 'sp1_03_hd_fence_01', + [-1627280765] = 'sp1_03_hd_fence_mesh_01', + [-1865675240] = 'sp1_03_hd_fence_mesh_02', + [-1502758569] = 'sp1_03_hd_fence_mesh_03', + [-1741284120] = 'sp1_03_hd_fence_mesh_04', + [1240236114] = 'sp1_03_hd_fence_mesh_05', + [2103994185] = 'sp1_03_hd_fence_mesh_06', + [-175441841] = 'sp1_03_hd_fizzing_01', + [-464792111] = 'sp1_03_hd_fizzing_02', + [303411556] = 'sp1_03_hd_fizzing_03', + [-1210319630] = 'sp1_03_hd_fizzing_04', + [-1517135777] = 'sp1_03_hd_fizzing_05', + [-1026878764] = 'sp1_03_hd_fizzing_07', + [1888513628] = 'sp1_03_hd_fizzing_08', + [-633600292] = 'sp1_03_ladder_01', + [132375083] = 'sp1_03_ladder_02', + [-21901369] = 'sp1_03_ladder_03', + [739027580] = 'sp1_03_ladder_04', + [643833635] = 'sp1_03_ladder_05', + [1418787716] = 'sp1_03_ladder_06', + [959817899] = 'sp1_03_object002', + [717528589] = 'sp1_03_road_o', + [844879939] = 'sp1_03_road_o3', + [-840129747] = 'sp1_03_shed_002_d', + [2016038755] = 'sp1_03_shed_002', + [4677527] = 'sp1_03_shed_008', + [970829994] = 'sp1_03_shed_010_d', + [-204825554] = 'sp1_03_sign', + [-623382305] = 'sp1_03_sign02', + [1151786152] = 'sp1_03_wall_01_o', + [-430549251] = 'sp1_03_wall_02_o', + [-1780843846] = 'sp1_03_winnoshadow', + [1022460823] = 'sp1_04_details_01', + [-1352636301] = 'sp1_04_details_02', + [-1601910084] = 'sp1_04_details_03', + [-1471019060] = 'sp1_04_ground', + [298645552] = 'sp1_04_ground01', + [-172083141] = 'sp1_05_build_01_c', + [748743525] = 'sp1_05_build_01_detail', + [865981490] = 'sp1_05_build_01_o_d', + [1957103851] = 'sp1_05_build_01', + [1448075052] = 'sp1_05_build_02_o_d', + [1715825704] = 'sp1_05_build_02', + [49824893] = 'sp1_05_build_02pipe', + [626187085] = 'sp1_05_cablemesh_tstd', + [1303926367] = 'sp1_05_det_', + [349755010] = 'sp1_05_det_01', + [-262238834] = 'sp1_05_det_02', + [-31381229] = 'sp1_05_det_03', + [-874920827] = 'sp1_05_det_04', + [-488692045] = 'sp1_05_fences_hd', + [-1329078151] = 'sp1_05_ground_dec01', + [320218392] = 'sp1_05_ground_dec02', + [266215080] = 'sp1_05_ground_dec03', + [-192076107] = 'sp1_05_ground', + [30663009] = 'sp1_05_pipes_hd_01', + [-294864237] = 'sp1_05_pipes_hd_02', + [-919121175] = 'sp1_06_ground_detail_01', + [1667922346] = 'sp1_06_ground', + [203985582] = 'sp1_06_ground02_detail_02', + [-335423559] = 'sp1_07_details_01', + [-124817196] = 'sp1_07_details_02', + [1434593976] = 'sp1_07_details_03', + [-2092333855] = 'sp1_07_details_03a', + [-1062008738] = 'sp1_07_gndstones', + [-1037961488] = 'sp1_07_grnd01', + [1216250795] = 'sp1_07_grnd06', + [1157018036] = 'sp1_07_grnd07xxx', + [-1471268258] = 'sp1_10__fake_int', + [-1393274362] = 'sp1_10_brand_01_wip_dontdelq', + [859153911] = 'sp1_10_details2', + [1089093984] = 'sp1_10_details3', + [1451256972] = 'sp1_10_details4', + [-4178167] = 'sp1_10_details5', + [-378662299] = 'sp1_10_details6', + [625609228] = 'sp1_10_details7', + [1248668236] = 'sp1_10_fake_interior_lod', + [1167231321] = 'sp1_10_fake_interior_slod', + [-1231039704] = 'sp1_10_fences_hd_01', + [1753790203] = 'sp1_10_fences_hd_02', + [2087771855] = 'sp1_10_fences_hd_03', + [239600255] = 'sp1_10_fences_hd_04', + [1460868116] = 'sp1_10_fences_hd_05', + [-1967621282] = 'sp1_10_fences_hd_06', + [-684030287] = 'sp1_10_fizza_01', + [1063991623] = 'sp1_10_fpoles01', + [1437296071] = 'sp1_10_fpoles02', + [-751836962] = 'sp1_10_fpoles03', + [-896872556] = 'sp1_10_fpoles04', + [2018028305] = 'sp1_10_fpoles05', + [1846449821] = 'sp1_10_fpoles06', + [646121431] = 'sp1_10_fpoles07', + [933374485] = 'sp1_10_fpoles08', + [-1991225984] = 'sp1_10_fpoles09', + [318853584] = 'sp1_10_fpoles10', + [-1009765533] = 'sp1_10_fpoles11', + [-1315107075] = 'sp1_10_fpoles12', + [-576384219] = 'sp1_10_ground_1', + [-279988614] = 'sp1_10_ground_2', + [-1909662728] = 'sp1_10_hedge01', + [2146385789] = 'sp1_10_hedge02', + [-1334992775] = 'sp1_10_hedge03', + [1430851769] = 'sp1_10_int', + [221673344] = 'sp1_10_mainwall_1', + [-1899183420] = 'sp1_10_props_interior_slod', + [452884211] = 'sp1_10_roof01', + [-932069920] = 'sp1_10_roofbars', + [864093339] = 'sp1_10_roofshadow', + [817111148] = 'sp1_10_sidebars_hd', + [-1449594966] = 'sp1_10_sign_bars_hd', + [-491177724] = 'sp1_10_wind01', + [-730620807] = 'sp1_10_wind02', + [946758765] = 'sp1_10_wind03', + [707774448] = 'sp1_10_wind04', + [-1356012400] = 'sp1_11_01_detail_01', + [275404410] = 'sp1_11_01_detail', + [2065813614] = 'sp1_11_01', + [-1992692578] = 'sp1_11_02', + [-461075416] = 'sp1_11_03_detail', + [1477970523] = 'sp1_11_03', + [440976732] = 'sp1_11_04_det', + [1104877596] = 'sp1_11_04_detail', + [-813767421] = 'sp1_11_04_detail02', + [-1968778096] = 'sp1_11_04_detail02b', + [-14273463] = 'sp1_11_04_detaila', + [1723672485] = 'sp1_11_04', + [2034646738] = 'sp1_11_railings', + [-551206808] = 'sp1_12_a_build08graf', + [2125673261] = 'sp1_12_b00', + [-909129351] = 'sp1_12_b01', + [6370975] = 'sp1_12_b02', + [1268239631] = 'sp1_12_b03', + [-857559116] = 'sp1_12_billboard_hd_01', + [-116783106] = 'sp1_12_billboard_hd_02', + [709388922] = 'sp1_12_billboard_hd_03', + [1952808627] = 'sp1_12_billboard_hd_04', + [-1977517011] = 'sp1_12_bridge_03', + [-2031134611] = 'sp1_12_bridge_03fc2_lod', + [-1288872892] = 'sp1_12_bridge_03fc3', + [-1711060759] = 'sp1_12_bridge_03fc3a', + [-255527289] = 'sp1_12_bridge_03fc3b', + [-1098837504] = 'sp1_12_bridge_03fc3c', + [2028722626] = 'sp1_12_bridge_04', + [-99737415] = 'sp1_12_bridge_1', + [1919252664] = 'sp1_12_bridge_1fc', + [-1386559208] = 'sp1_12_bridge_1fcb', + [-247656681] = 'sp1_12_bridge_2', + [-1800984982] = 'sp1_12_bridge_fc1', + [1521627777] = 'sp1_12_bridge_fc2', + [2029154049] = 'sp1_12_bridge_fc3', + [-1325834482] = 'sp1_12_bridge_fc4', + [-549635179] = 'sp1_12_bridge_fc5', + [-2113437397] = 'sp1_12_bridge_fc6', + [-1077805921] = 'sp1_12_bridge_fc7', + [1327936860] = 'sp1_12_cablemesh_01', + [-1770929171] = 'sp1_12_cablemesh_02', + [1337940827] = 'sp1_12_decals00', + [1629748772] = 'sp1_12_decals01', + [-397767565] = 'sp1_12_decals02', + [-39405781] = 'sp1_12_decals03', + [1184123133] = 'sp1_12_decals04', + [1538683713] = 'sp1_12_decals05', + [-488636010] = 'sp1_12_decals06', + [-1891116445] = 'sp1_12_decals08', + [-1587773812] = 'sp1_12_decals09', + [-1490318506] = 'sp1_12_decals10', + [-648384589] = 'sp1_12_decals11', + [1088601794] = 'sp1_12_decals12', + [590840684] = 'sp1_12_decals13', + [503806220] = 'sp1_12_decals14', + [273800609] = 'sp1_12_decals15', + [-1104172831] = 'sp1_12_detail_01', + [-516948407] = 'sp1_12_detail_01a', + [-478612621] = 'sp1_12_detail_02', + [-1228560299] = 'sp1_12_detail_02a', + [-641867779] = 'sp1_12_detail_03', + [778999449] = 'sp1_12_detail_03a', + [114014744] = 'sp1_12_detail_04', + [-315390232] = 'sp1_12_detail_05', + [433479725] = 'sp1_12_detail_06', + [-1649121089] = 'sp1_12_detail_06a', + [277433747] = 'sp1_12_detail_07', + [29601728] = 'sp1_12_detail_07a', + [-94428841] = 'sp1_12_detail_08', + [1872231654] = 'sp1_12_detail_08a', + [-273019891] = 'sp1_12_detail_09', + [-158065879] = 'sp1_12_detail_10', + [-917192533] = 'sp1_12_detail_11', + [1406153706] = 'sp1_12_drain_cover', + [528845980] = 'sp1_12_fc7_lod', + [1415690315] = 'sp1_12_glue_007a', + [1599394013] = 'sp1_12_graph', + [-240111796] = 'sp1_12_graph001', + [1132385000] = 'sp1_12_graph002', + [1467808484] = 'sp1_12_graph003', + [692461175] = 'sp1_12_graph004', + [956808698] = 'sp1_12_graph005', + [-1966710406] = 'sp1_12_graph006', + [1590167934] = 'sp1_12_graph007', + [1883221101] = 'sp1_12_graph008', + [-2015529547] = 'sp1_12_graph008a', + [-1366342170] = 'sp1_12_railing01', + [-1100356197] = 'sp1_12_railing02', + [-1483813328] = 'sp1_12_rd_01', + [-1995009728] = 'sp1_12_rd_02', + [-903559602] = 'sp1_12_riv_01', + [-290680991] = 'sp1_12_riv_03', + [-1467618230] = 'sp1_12_riv_04_d', + [1598255253] = 'sp1_12_riv_04', + [1417501449] = 'sp1_12_riv_05', + [-2081932846] = 'sp1_12_riv_06', + [1974377823] = 'sp1_12_riv_07', + [-833797854] = 'sp1_12_riv_07graf', + [403563051] = 'sp1_12_riv_08', + [-1201935805] = 'sp1_12_riv_08g', + [172705446] = 'sp1_12_riv_09', + [1309166911] = 'sp1_12_riv_10', + [1589702320] = 'sp1_12_riv_11', + [-1143441452] = 'sp1_12_river_end_1', + [-1448422535] = 'sp1_12_river_end_2', + [-4614628] = 'sp1_12_shadowb01', + [1865807127] = 'sp1_12_shadowb02', + [1280094021] = 'sp1_12_shadowb03', + [906986187] = 'sp1_12_shadowb04', + [-1497242578] = 'sp1_12_shadowb05', + [2097746109] = 'sp1_12_shadowb08', + [-1968859282] = 'sp1_12_sp1_rd_shadow_prox', + [-1012131300] = 'sp1_emissive_sp1_03a', + [-698957967] = 'sp1_emissive_sp1_03b', + [-1457888011] = 'sp1_emissive_sp1_03c', + [-1767129064] = 'sp1_emissive_sp1_03d', + [-1922650738] = 'sp1_emissive_sp1_03e', + [2066811171] = 'sp1_emissive_sp1_03f', + [-2076436231] = 'sp1_emissive_sp1_05a', + [-1779319708] = 'sp1_emissive_sp1_05b', + [1095954632] = 'sp1_lod_em', + [334848724] = 'sp1_lod_slod4', + [-1366432263] = 'sp1_lod_sp1_10_particle_null', + [1433497939] = 'sp1_props_flyers_020', + [534709807] = 'sp1_props_flyers_022', + [2070034192] = 'sp1_props_flyers_053', + [210196868] = 'sp1_props_flyers_054', + [-52905433] = 'sp1_props_flyers_055', + [-402485125] = 'sp1_props_flyers_056', + [1156598357] = 'sp1_props_flyers_059', + [506265027] = 'sp1_props_flyers_062', + [141742671] = 'sp1_props_flyers_063', + [1773540568] = 'sp1_props_flyers_064', + [721968862] = 'sp1_rd_00_d', + [1270332868] = 'sp1_rd_01_d', + [1429897999] = 'sp1_rd_01', + [1739401204] = 'sp1_rd_02', + [1591695087] = 'sp1_rd_028', + [-547891226] = 'sp1_rd_029', + [-2025533390] = 'sp1_rd_03_d', + [571914694] = 'sp1_rd_03_shadprx', + [-2133042606] = 'sp1_rd_03', + [-806865509] = 'sp1_rd_030', + [1329706060] = 'sp1_rd_031', + [-682389557] = 'sp1_rd_04_d', + [387811122] = 'sp1_rd_04', + [1760924780] = 'sp1_rd_05_d', + [527208646] = 'sp1_rd_06_d', + [584882842] = 'sp1_rd_06a', + [823637776] = 'sp1_rd_06b', + [2137576373] = 'sp1_rd_06c', + [2073902221] = 'sp1_rd_07_d', + [1555075671] = 'sp1_rd_07', + [1549058693] = 'sp1_rd_08_d', + [-573434724] = 'sp1_rd_08', + [-1708359422] = 'sp1_rd_09_d', + [1343289624] = 'sp1_rd_09', + [448818011] = 'sp1_rd_10_d', + [-1262698790] = 'sp1_rd_10', + [-1299957865] = 'sp1_rd_11_d', + [43834013] = 'sp1_rd_11', + [-1146937529] = 'sp1_rd_12_d', + [105374195] = 'sp1_rd_12', + [-2131793053] = 'sp1_rd_13_d', + [-612463519] = 'sp1_rd_13', + [664905876] = 'sp1_rd_14_d', + [1981661601] = 'sp1_rd_14', + [-1419077405] = 'sp1_rd_15_d', + [-1956844513] = 'sp1_rd_15', + [-1191744669] = 'sp1_rd_16_d', + [1835301423] = 'sp1_rd_17_d', + [1797663666] = 'sp1_rd_17', + [1959780514] = 'sp1_rd_18_d', + [1085069012] = 'sp1_rd_18', + [-1553491356] = 'sp1_rd_19_d', + [1307603291] = 'sp1_rd_19', + [1448810562] = 'sp1_rd_20_d', + [1588794304] = 'sp1_rd_20', + [816657794] = 'sp1_rd_21_d', + [-738329004] = 'sp1_rd_21', + [-20899850] = 'sp1_rd_22_d', + [-1053206325] = 'sp1_rd_22', + [1187563459] = 'sp1_rd_23_d', + [-1736964279] = 'sp1_rd_23', + [965768865] = 'sp1_rd_24_d', + [2084036814] = 'sp1_rd_24a', + [312806826] = 'sp1_rd_24b', + [402822573] = 'sp1_rd_25_d', + [1748149931] = 'sp1_rd_25', + [-602550984] = 'sp1_rd_26_d', + [1425473588] = 'sp1_rd_26', + [-1550085805] = 'sp1_rd_27_d', + [-877793888] = 'sp1_rd_27', + [-1508152312] = 'sp1_rd_28_d', + [-1147446384] = 'sp1_rd_armco', + [-1135087813] = 'sp1_rd_blockades', + [-1302603504] = 'sp1_rd_props_combo01_dslod', + [-2027445393] = 'sp1_rd_props_combo02_dslod', + [742143715] = 'sp1_rd_props_combo03_dslod', + [-682530277] = 'sp1_rd_props_combo04_dslod', + [-1477151821] = 'sp1_rd_props_combo05_dslod', + [-461473856] = 'sp1_rd_rail1', + [-768093389] = 'sp1_rd_rail2', + [1454633990] = 'sp1_rd_wires', + [76730524] = 'sp1_rd_wires2', + [1886268224] = 'specter', + [1074745671] = 'specter2', + [231083307] = 'speeder', + [437538602] = 'speeder2', + [-810318068] = 'speedo', + [728614474] = 'speedo2', + [674110876] = 'spiritsrow', + [400514754] = 'squalo', + [-1969678975] = 'ss1_01_c_waterd', + [-1413417189] = 'ss1_01_column_iref', + [1820076484] = 'ss1_01_dtd01', + [2094189169] = 'ss1_01_dtd02', + [-1821022473] = 'ss1_01_dtd02b', + [-451457211] = 'ss1_01_dtd02bivy', + [1077825861] = 'ss1_01_dtd03', + [1085046626] = 'ss1_01_dtl04', + [-828760800] = 'ss1_01_fizza_00', + [-1020197302] = 'ss1_01_fizza_01', + [-1322098099] = 'ss1_01_fizza_02', + [-1660732945] = 'ss1_01_fizza_03', + [-1968827083] = 'ss1_01_fizza_04', + [2020307136] = 'ss1_01_fizza_05', + [1716079740] = 'ss1_01_fizza_06', + [1436003097] = 'ss1_01_fizza_07', + [1204129653] = 'ss1_01_fizza_08', + [515055691] = 'ss1_01_flower_1', + [-1708517573] = 'ss1_01_flower_3', + [-297123381] = 'ss1_01_fronthedges', + [-774485830] = 'ss1_01_ladder01', + [-2145934018] = 'ss1_01_ladder02', + [-921225436] = 'ss1_01_ladder03', + [-1159652680] = 'ss1_01_ladder04', + [-575578024] = 'ss1_01_ladder05', + [-816331867] = 'ss1_01_ladder06', + [1490146991] = 'ss1_01_ladder07', + [-39868533] = 'ss1_01_logo01', + [-868105012] = 'ss1_01_logo02', + [1062929008] = 'ss1_01_lowpdtd00', + [1906763527] = 'ss1_01_lowpdtd01', + [618679675] = 'ss1_01_lowpdtd02', + [1429155352] = 'ss1_01_lowpdtd03', + [15612611] = 'ss1_01_mansion', + [1155146323] = 'ss1_01_park_decal', + [-842967124] = 'ss1_01_park', + [-2139978508] = 'ss1_01_raildtd01', + [-1363517053] = 'ss1_01_raildtd02', + [-470234113] = 'ss1_01_raildtd03', + [-1955735898] = 'ss1_01_shadowproxy', + [-919802388] = 'ss1_01_ss1_emissive_ss1_01', + [137063414] = 'ss1_01_stairs01', + [1456684485] = 'ss1_01_stairsbase01', + [1402537249] = 'ss1_01_terrain_dtl01', + [1907480515] = 'ss1_01_terrain_dtl01b', + [-2062587899] = 'ss1_01_terrain_dtl02', + [1345457371] = 'ss1_01_terrain', + [-417452013] = 'ss1_01_terrainnoshad', + [1401152204] = 'ss1_02_building00_dtl_1', + [21773918] = 'ss1_02_building00_dtl_2', + [1317947300] = 'ss1_02_building00_dtl', + [-1087287778] = 'ss1_02_building00', + [-724395030] = 'ss1_02_building01_dtl', + [-279744443] = 'ss1_02_building01_dtl2', + [-1426709080] = 'ss1_02_building01', + [-1543537378] = 'ss1_02_building03_dtl_1', + [1958430556] = 'ss1_02_building03_dtl', + [-2058855863] = 'ss1_02_building03', + [-1780886489] = 'ss1_02_decal', + [104890951] = 'ss1_02_decal2', + [-1393569881] = 'ss1_02_decal3', + [-1161270440] = 'ss1_02_decal4', + [1333040302] = 'ss1_02_decal5', + [-1732998491] = 'ss1_02_grd01', + [1602125812] = 'ss1_02_hedge_dcl', + [-1441045355] = 'ss1_02_hedge_dcl2', + [1919516466] = 'ss1_02_pool_water', + [-500045280] = 'ss1_02_ss1_emissive_ss1_02', + [-1920008361] = 'ss1_02_ss1_emissive_ss1_02b', + [1925852729] = 'ss1_03_dec_tnt', + [1555690038] = 'ss1_03_fs_logo', + [1700779227] = 'ss1_03_ivy_a', + [-2145923898] = 'ss1_03_ladder_01', + [-1762816313] = 'ss1_03_north_dtl', + [-1607807933] = 'ss1_03_north_dtl2', + [955451469] = 'ss1_03_north', + [1419796952] = 'ss1_03_railing01', + [-471728019] = 'ss1_03_railing02', + [-164322030] = 'ss1_03_railing03', + [290839380] = 'ss1_03_railing04', + [584547927] = 'ss1_03_railing05', + [-1414229997] = 'ss1_03_railing06', + [-1082574948] = 'ss1_03_railing07', + [-628986450] = 'ss1_03_railing08', + [1681424668] = 'ss1_03_railing09', + [1832948800] = 'ss1_03_railing10', + [2014816750] = 'ss1_03_railing11', + [-2057517960] = 'ss1_03_railing12', + [799349002] = 'ss1_03_railing13', + [1104723313] = 'ss1_03_railing14', + [1277874709] = 'ss1_03_railing15', + [1592096650] = 'ss1_03_railing16', + [-384463908] = 'ss1_03_railing17', + [-141088545] = 'ss1_03_railing18', + [157076586] = 'ss1_03_railing19', + [-1323327047] = 'ss1_03_railing20', + [-1505326073] = 'ss1_03_railing21', + [-1802770286] = 'ss1_03_railing22', + [2045096774] = 'ss1_03_railing23', + [1868013098] = 'ss1_03_railing24', + [1567160909] = 'ss1_03_railing25', + [1121174819] = 'ss1_03_railing26', + [1022507360] = 'ss1_03_railing27', + [658607615] = 'ss1_03_railing28', + [348514568] = 'ss1_03_railing29', + [1203223235] = 'ss1_03_railing30', + [1819692869] = 'ss1_03_roof_fizz_01', + [1075521186] = 'ss1_03_south_dtl', + [296970172] = 'ss1_03_south_dtl2', + [-1438790954] = 'ss1_03_south', + [314386334] = 'ss1_03_southe_col', + [281453505] = 'ss1_03_southe_detail', + [604171909] = 'ss1_03_southe_detail2', + [-1409315301] = 'ss1_03_southe', + [623563406] = 'ss1_03_terrain_dtl', + [-1246316451] = 'ss1_03_terrain', + [-992154463] = 'ss1_04_apart_01', + [2109290753] = 'ss1_04_apart_02_dtl01', + [-1820760959] = 'ss1_04_apart_02_dtl02', + [1667181023] = 'ss1_04_apart_06', + [466749814] = 'ss1_04_apt02_01_dtl', + [-1533194113] = 'ss1_04_apt02_01_dtl2', + [1466108594] = 'ss1_04_apt02_01', + [-170017976] = 'ss1_04_aptrailing1', + [-167191886] = 'ss1_04_aptrailing10', + [72439855] = 'ss1_04_aptrailing2', + [452887949] = 'ss1_04_aptrailing3', + [723232199] = 'ss1_04_aptrailing4', + [945373250] = 'ss1_04_aptrailing5', + [1319529692] = 'ss1_04_aptrailing6', + [1675466570] = 'ss1_04_aptrailing7', + [1949382641] = 'ss1_04_aptrailing8', + [-2123181452] = 'ss1_04_aptrailing9', + [-1034572158] = 'ss1_04_cable', + [-527678138] = 'ss1_04_glueweed', + [-1075284838] = 'ss1_04_glueweed2', + [-40964122] = 'ss1_04_glueweed3', + [-1630719388] = 'ss1_04_glueweed4', + [-317401090] = 'ss1_04_grddecals', + [136974040] = 'ss1_04_greenbar_001', + [1229426962] = 'ss1_04_greenbar_002', + [348123055] = 'ss1_04_greenrail_002', + [-353898698] = 'ss1_04_greenrail01', + [-1208701519] = 'ss1_04_hdg_top', + [248660029] = 'ss1_04_hdg', + [-1141209275] = 'ss1_04_hedgeivywall', + [-2137161087] = 'ss1_04_hedgeivywall2', + [-1425005495] = 'ss1_04_ladder01', + [-1159412750] = 'ss1_04_ladder02', + [-392028304] = 'ss1_04_ladder03', + [-160843009] = 'ss1_04_ladder04', + [279855155] = 'ss1_04_newivy01', + [-1092714562] = 'ss1_04_newrailing001', + [-943388183] = 'ss1_04_sht01_dtl2', + [-1899782901] = 'ss1_04_sht01_dtl2b', + [1859148382] = 'ss1_04_sht01', + [-1581764331] = 'ss1_04_shtrail01', + [1944474994] = 'ss1_04_shtrail02', + [-2076379617] = 'ss1_04_shtrail03', + [1324649359] = 'ss1_04_shtrail04', + [1623076642] = 'ss1_04_shtrail05', + [693944420] = 'ss1_04_shtrail06', + [901186973] = 'ss1_04_terrain01', + [1729980521] = 'ss1_04_terrain02', + [-416487290] = 'ss1_04_terrain03', + [-629715173] = 'ss1_04_terrain04', + [-1941276258] = 'ss1_05_apart01_jan', + [72950441] = 'ss1_05_bigapt02_dtl2', + [-893962709] = 'ss1_05_bigapt02_dtl2b', + [-461280833] = 'ss1_05_bigapt02_dtl2c', + [-1347482922] = 'ss1_05_bigapt02', + [-570202543] = 'ss1_05_build1_dtl', + [1856064297] = 'ss1_05_build3_b', + [832041070] = 'ss1_05_build3_dtl', + [-1825736558] = 'ss1_05_build3_dtlnew', + [-1447282578] = 'ss1_05_build5', + [940052003] = 'ss1_05_buildn_emit', + [-744961946] = 'ss1_05_buildnew_a', + [1230711645] = 'ss1_05_emissive_hd', + [1694854589] = 'ss1_05_emissive_slod', + [706155772] = 'ss1_05_gr_n', + [-1405432277] = 'ss1_05_gr', + [872749416] = 'ss1_05_gr2', + [1349305817] = 'ss1_05_grbc1', + [1579835732] = 'ss1_05_grbc2', + [-978914387] = 'ss1_05_grounda001_dtl', + [-1482085974] = 'ss1_05_grounda001_dtlb', + [-1653729996] = 'ss1_05_grounda001_dtlc', + [-30256148] = 'ss1_05_groundb_dtl', + [286180407] = 'ss1_05_groundb_dtl2', + [1599004858] = 'ss1_05_groundb_dtlb', + [1301196711] = 'ss1_05_groundb', + [1748992601] = 'ss1_05_hedge_rnd_a_m_decl006', + [496319053] = 'ss1_05_hedge_sqr_a_l_decm001', + [-1285349879] = 'ss1_05_ladder01', + [385738049] = 'ss1_05_ladder02', + [-863578633] = 'ss1_05_pool', + [421424729] = 'ss1_05_shopframe01', + [-1780286097] = 'ss1_05_shw', + [-756717576] = 'ss1_05_units', + [-344539447] = 'ss1_05_wires', + [423159696] = 'ss1_05_xxx', + [118508278] = 'ss1_06_banner', + [-1102142546] = 'ss1_06_d1', + [505265099] = 'ss1_06_d1b_2', + [-1676073142] = 'ss1_06_d1b', + [1246324607] = 'ss1_06_d1b001', + [758591526] = 'ss1_06_d1bb_2', + [-1186449106] = 'ss1_06_d1bb', + [293481756] = 'ss1_06_d2_2', + [-1342109933] = 'ss1_06_d2', + [1630392559] = 'ss1_06_d2b_2', + [305042635] = 'ss1_06_d2b', + [-1726232002] = 'ss1_06_d2b001', + [1750414869] = 'ss1_06_glass', + [-172758616] = 'ss1_06_ground', + [-1068789358] = 'ss1_06_groundb', + [-1307183833] = 'ss1_06_groundc', + [-1545676615] = 'ss1_06_groundd', + [985238221] = 'ss1_06_hdg_top', + [833433536] = 'ss1_06_hdg', + [-478642697] = 'ss1_06_hdg01_top', + [-587229387] = 'ss1_06_hdg01', + [637612818] = 'ss1_06_hdg02_top', + [-1017846816] = 'ss1_06_hdg02', + [-1078972206] = 'ss1_06_hdgnew_d', + [-605572715] = 'ss1_06_hdgnew', + [-1393226214] = 'ss1_06_ladder01', + [1960111416] = 'ss1_06_monkey', + [928480197] = 'ss1_06_north', + [-1080925435] = 'ss1_06_number01', + [-1847949418] = 'ss1_06_number02', + [373832953] = 'ss1_06_number02b', + [1718857929] = 'ss1_06_number03', + [-1920841762] = 'ss1_06_railing01', + [-1692540139] = 'ss1_06_railing02', + [2028248739] = 'ss1_06_railing03', + [-2065058131] = 'ss1_06_railing04', + [1387582024] = 'ss1_06_railing05', + [1644589291] = 'ss1_06_railing06', + [1075129609] = 'ss1_06_railing07', + [196592719] = 'ss1_06_railing08', + [436297954] = 'ss1_06_railing09', + [1960123488] = 'ss1_06_railing10', + [-1618579006] = 'ss1_06_railing11', + [-1140479296] = 'ss1_06_railing12', + [-1378021777] = 'ss1_06_railing13', + [-663526501] = 'ss1_06_railing14', + [-933346447] = 'ss1_06_railing15', + [71809863] = 'ss1_06_railing16', + [-157278216] = 'ss1_06_railing17', + [-1525475962] = 'ss1_06_seblg', + [12023110] = 'ss1_06_shw', + [452899949] = 'ss1_06_shw2', + [184371264] = 'ss1_06_sign', + [-1776294713] = 'ss1_06_sign01', + [-2082979784] = 'ss1_06_sign02', + [-1519828029] = 'ss1_06_ss_06_cp00_2', + [556932233] = 'ss1_06_ss_06_cp00', + [873509627] = 'ss1_06_swblg', + [-283072059] = 'ss1_06_towels', + [-620695079] = 'ss1_06_woodb', + [-566572923] = 'ss1_06b_aptgrnd', + [387347948] = 'ss1_06b_bdd', + [1155915766] = 'ss1_06b_bdd2', + [-1335731209] = 'ss1_06b_card', + [-897203232] = 'ss1_06b_club_dtl001', + [-1336619218] = 'ss1_06b_club_grnd', + [156210570] = 'ss1_06b_club1', + [1174528774] = 'ss1_06b_club1lad', + [282156055] = 'ss1_06b_d', + [1463155419] = 'ss1_06b_d1', + [-668828494] = 'ss1_06b_d2', + [-798021120] = 'ss1_06b_d2b', + [1659436552] = 'ss1_06b_hdg_top', + [1667584854] = 'ss1_06b_hdg_top01', + [1958802957] = 'ss1_06b_hdg_top02', + [-2014897063] = 'ss1_06b_hdg_top03', + [-1722958042] = 'ss1_06b_hdg_top04', + [-2121670004] = 'ss1_06b_hdg', + [-1714224279] = 'ss1_06b_hdg01', + [49710949] = 'ss1_06b_ivy_top', + [848154567] = 'ss1_06b_ivy02', + [764087883] = 'ss1_06b_ivywall01', + [1967096107] = 'ss1_06b_new01', + [1680465632] = 'ss1_06b_new04', + [-1975932717] = 'ss1_06b_newivy', + [-1629332993] = 'ss1_06b_newrail001', + [1954887339] = 'ss1_06b_pool', + [1443083033] = 'ss1_06b_r_2', + [903652897] = 'ss1_06b_r', + [-728277230] = 'ss1_06b_rail', + [-628744539] = 'ss1_06b_rail2', + [1482065203] = 'ss1_06b_snw', + [-857049812] = 'ss1_06b_snw2', + [1857307530] = 'ss1_07_apts_d', + [2060975401] = 'ss1_07_apts_d2', + [-675128553] = 'ss1_07_apts_rail1', + [-1997587086] = 'ss1_07_apts_rail2', + [1475712388] = 'ss1_07_apts', + [-521428309] = 'ss1_07_bck_fizz1_lod', + [-524774748] = 'ss1_07_bdyshpd', + [1885153129] = 'ss1_07_bdyshpd001', + [1756043269] = 'ss1_07_bdyshpd002', + [967439545] = 'ss1_07_bdyshpgd', + [-1322757967] = 'ss1_07_bdyshpstr', + [-1742272871] = 'ss1_07_cp_d', + [1911689828] = 'ss1_07_cp_dirt_2', + [752485526] = 'ss1_07_cp_dirt', + [480648872] = 'ss1_07_cp_dirt2', + [-376228998] = 'ss1_07_cp', + [1948689492] = 'ss1_07_crnrbldg', + [1287780767] = 'ss1_07_crnrbldgd', + [-1048219105] = 'ss1_07_crnrbldgd2', + [-583292529] = 'ss1_07_crnrbldgd3', + [-79149611] = 'ss1_07_crnrbldggnd', + [-516701073] = 'ss1_07_crnrbldggnd02', + [2132675970] = 'ss1_07_crnrbldgrailing1', + [1138857734] = 'ss1_07_crnrbldgrailing2', + [1875557367] = 'ss1_07_grndrailings1', + [651274782] = 'ss1_07_grndrailings2', + [421269171] = 'ss1_07_grndrailings3', + [1130324793] = 'ss1_07_grndrailings4', + [839172228] = 'ss1_07_grndrailings5', + [-1696889334] = 'ss1_07_hedge_d1', + [-2054005896] = 'ss1_07_hedge_d2', + [823450986] = 'ss1_07_hotelrailing1', + [995291622] = 'ss1_07_hotelrailing2', + [1390518563] = 'ss1_07_hotelrailing3', + [-1515469130] = 'ss1_07_hotelrailing4', + [-1871900222] = 'ss1_07_pool_01', + [-1035174531] = 'ss1_07_rail', + [44221186] = 'ss1_07_raila', + [295723261] = 'ss1_07_railb', + [-480410504] = 'ss1_07_railc', + [977900690] = 'ss1_07_sgar_rail_lod', + [348958955] = 'ss1_07_sgar_rail', + [-801427182] = 'ss1_07_sgar', + [2090512008] = 'ss1_07_shotel', + [1744963315] = 'ss1_07_sstbck_fizz01', + [-1111734132] = 'ss1_07_sstbck', + [-1255104445] = 'ss1_07_sstgnd', + [-409552964] = 'ss1_07_ssttwr_d', + [674399058] = 'ss1_07_ssttwr', + [103905016] = 'ss1_07_stairsrailing1', + [-1602180196] = 'ss1_07_stairsrailing2', + [-1851060751] = 'ss1_07_stairsrailing3', + [-1586958675] = 'ss1_07_stdrdd', + [-1998897412] = 'ss1_07_stdrdd2', + [63833635] = 'ss1_07_stdrdground', + [-1738702190] = 'ss1_07_twrrailings1', + [-1136567040] = 'ss1_07_vpr_xd', + [-2142713524] = 'ss1_07_vpr_xd2', + [-95686898] = 'ss1_07_vpr', + [1478904787] = 'ss1_08_apart', + [2042170471] = 'ss1_08_build6', + [-1342514898] = 'ss1_08_corner_em', + [1716062292] = 'ss1_08_corner', + [-652119717] = 'ss1_08_dtl01', + [-133058741] = 'ss1_08_dtl02', + [1675569826] = 'ss1_08_ground_h', + [724236877] = 'ss1_08_ladder01', + [-56550086] = 'ss1_08_ladder02', + [392516282] = 'ss1_08_ladder03', + [691598945] = 'ss1_08_ladder04', + [-67462171] = 'ss1_08_ladder05', + [229982042] = 'ss1_08_ladder06', + [-628196184] = 'ss1_08_ls_sign', + [-50427461] = 'ss1_08_railing01', + [-269881458] = 'ss1_08_railing02', + [-668155884] = 'ss1_08_railing03', + [-880073007] = 'ss1_08_railing04', + [-1243939983] = 'ss1_08_railing05', + [-1530898116] = 'ss1_08_railing06', + [-1771193193] = 'ss1_08_railing07', + [-2093509077] = 'ss1_08_railing08', + [1929508284] = 'ss1_08_railing09', + [229221505] = 'ss1_08_railing10', + [-75562964] = 'ss1_08_railing11', + [2065563496] = 'ss1_08_railing12', + [1705759876] = 'ss1_08_railing13', + [1453667959] = 'ss1_08_railing14', + [1161204634] = 'ss1_08_railing15', + [-1595585798] = 'ss1_08_railing16', + [1855012212] = 'ss1_08_sign01', + [685243265] = 'ss1_09_decal_dt2', + [-69361267] = 'ss1_09_decal_dt3', + [-305724064] = 'ss1_09_decal_dt4', + [1374441649] = 'ss1_09_fence3_dt', + [-1145492766] = 'ss1_09_fence3_dtrails', + [2044196043] = 'ss1_09_flat_bd_01', + [-963265655] = 'ss1_09_gls_bd_03', + [761649887] = 'ss1_09_grd_bd_04', + [-1756692556] = 'ss1_09_hedge_sqr_b_sm_decl001', + [1694792544] = 'ss1_09_int_bd_05', + [1367999366] = 'ss1_09_int2_bd_06', + [-1416710281] = 'ss1_09_lightcasing01', + [-1791456565] = 'ss1_09_lightcasing02', + [1899287637] = 'ss1_09_office_bd_02', + [-1639868882] = 'ss1_09_office_bd_02a', + [-1584097999] = 'ss1_09_office_bd_cloth03', + [-421266630] = 'ss1_09_office_bd_clotha', + [-652583001] = 'ss1_09_office_bd_clothb', + [-2088659862] = 'ss1_09_railing01', + [-647905235] = 'ss1_09_railing04', + [-249303119] = 'ss1_09_railing05', + [1855285910] = 'ss1_09_railing06', + [1417950836] = 'ss1_09_railing07', + [607475155] = 'ss1_09_railing08', + [1468350422] = 'ss1_09_railing10', + [1639076912] = 'ss1_09_railing11', + [-2019265798] = 'ss1_10_bld_dt01', + [1562753294] = 'ss1_10_bld_trim01', + [1257739442] = 'ss1_10_bld_trim02', + [210369767] = 'ss1_10_bld', + [341303678] = 'ss1_10_decals01', + [-1799331259] = 'ss1_10_decals02', + [865509363] = 'ss1_10_decals03', + [123852215] = 'ss1_10_grd', + [377613226] = 'ss1_10_railing01', + [-1967807737] = 'ss1_10_ss1_emissive_ss1_10', + [812397104] = 'ss1_11_clth_09a', + [-52147427] = 'ss1_11_clth_09c', + [-1312049931] = 'ss1_11_clth_09d', + [-1952814969] = 'ss1_11_clth_09e', + [2112015640] = 'ss1_11_clth_09f', + [1747231132] = 'ss1_11_clth_09g', + [-189678912] = 'ss1_11_clth_09h', + [-428335539] = 'ss1_11_clth_09i', + [-1024174266] = 'ss1_11_clth_09k', + [464329140] = 'ss1_11_clth_ss1_11_', + [-509355386] = 'ss1_11_clth_ss1_11_01', + [659187150] = 'ss1_11_clth_ss1_11_02', + [420170064] = 'ss1_11_clth_ss1_11_05', + [35101549] = 'ss1_11_clth_ss1_11_06', + [149931113] = 'ss1_11_detail01', + [651180941] = 'ss1_11_detail01b', + [1135098329] = 'ss1_11_detail02', + [355604273] = 'ss1_11_detail02b', + [-1691916070] = 'ss1_11_detail03', + [419420234] = 'ss1_11_emt_sign', + [1143381927] = 'ss1_11_flagstand', + [1590383694] = 'ss1_11_flats', + [-1398218166] = 'ss1_11_flatsgrd01', + [1302453174] = 'ss1_11_hedge_d', + [274567004] = 'ss1_11_land01', + [-449267437] = 'ss1_11_land02', + [-335886697] = 'ss1_11_land03', + [-1301155600] = 'ss1_11_meddoordtl', + [-786039918] = 'ss1_11_medictower', + [-1155909594] = 'ss1_11_newrail01', + [-1385915205] = 'ss1_11_newrail02', + [1067997622] = 'ss1_11_propertyfudger', + [2068808878] = 'ss1_11_railing01', + [1837984042] = 'ss1_11_railing02', + [-1914590786] = 'ss1_11_railing03', + [2019044912] = 'ss1_11_roofdecal001', + [-99544750] = 'ss1_11_shop01', + [951440198] = 'ss1_11_striplight008', + [-1209161735] = 'ss1_11_teqframe', + [-321950420] = 'ss1_11_tequilala', + [790699174] = 'ss1_12_bb1', + [965423482] = 'ss1_12_bb2', + [-1927517446] = 'ss1_12_bld3c', + [772190525] = 'ss1_12_bld4', + [-1170355803] = 'ss1_12_bld5', + [29552793] = 'ss1_12_grnd', + [2141487445] = 'ss1_12_grnd2', + [1469491637] = 'ss1_12_ivy01', + [707438599] = 'ss1_12_night_slod', + [-447870829] = 'ss1_12_night', + [209081272] = 'ss1_12_night2', + [785101165] = 'ss1_12_nightcom', + [220699494] = 'ss1_12_ovly01', + [519126777] = 'ss1_12_ovly02', + [1238221703] = 'ss1_12_railing01', + [908827715] = 'ss1_12_railing02', + [611252422] = 'ss1_12_railing03', + [313513288] = 'ss1_12_railing04', + [45757789] = 'ss1_12_railing05', + [-846742418] = 'ss1_12_uvanim01', + [1738536960] = 'ss1_13_barbedwire01', + [1682497610] = 'ss1_13_billboard_start', + [-1754168649] = 'ss1_13_build01', + [1946429257] = 'ss1_13_build02a', + [-219301458] = 'ss1_13_build03', + [-559812365] = 'ss1_13_buildrailing001', + [-1261200041] = 'ss1_13_buildrailing002', + [1402834636] = 'ss1_13_dec01a', + [1633692241] = 'ss1_13_dec01b', + [-1912374756] = 'ss1_13_dec02', + [-496261526] = 'ss1_13_dec02a', + [-809959163] = 'ss1_13_dec02b', + [-1054448672] = 'ss1_13_dec02c', + [-2143363437] = 'ss1_13_dec03', + [-105655262] = 'ss1_13_dec03b', + [-1434373353] = 'ss1_13_dec04', + [438822592] = 'ss1_13_flower_1', + [-601728044] = 'ss1_13_grd01noshad', + [896107841] = 'ss1_13_grd01shad', + [1451365344] = 'ss1_13_grd02noshad', + [-359979191] = 'ss1_13_grd02shad', + [-309550683] = 'ss1_13_grd03_sp_lod', + [-2081248133] = 'ss1_13_grd03_sp', + [1907726874] = 'ss1_13_grd03noshad', + [1477196103] = 'ss1_13_grd03shad', + [-1030417639] = 'ss1_13_ivy_b_base', + [1364224631] = 'ss1_13_ivy_b_base001', + [-1017440100] = 'ss1_13_ivy_b_dec', + [-982317508] = 'ss1_13_ivy_b_dec002', + [1580084506] = 'ss1_13_night01_slod', + [-1719298554] = 'ss1_13_night01', + [-1448828274] = 'ss1_13_railing01', + [1378087818] = 'ss1_13_railing02', + [1205985030] = 'ss1_13_railing03', + [2125778095] = 'ss1_13_railing04', + [1819420714] = 'ss1_13_railing05', + [144466044] = 'ss1_13_railing06', + [-11121168] = 'ss1_13_railing07', + [901331637] = 'ss1_13_railing08', + [461112891] = 'ss1_13_railing09', + [1318349791] = 'ss1_13_railing10', + [1967306959] = 'ss1_13_railing11', + [800534053] = 'ss1_13_railing12', + [1032571342] = 'ss1_13_railing13', + [180184114] = 'ss1_13_railing14', + [103116397] = 'ss1_13_rooftopdtl01', + [-647483573] = 'ss1_13_walkway01', + [-1362250531] = 'ss1_13_woodbeams01', + [-230031517] = 'ss1_13_woodrail01', + [-1288994521] = 'ss1_13_woodrail02', + [-990567238] = 'ss1_13_woodrail03', + [1168483861] = 'ss1_13_woodrail04', + [245222185] = 'ss1_14_billboard', + [1845194391] = 'ss1_14_bkdtd01', + [-679653473] = 'ss1_14_chat_cottage', + [1966367649] = 'ss1_14_chat_detail', + [-1598668276] = 'ss1_14_chateau_ivy', + [710210299] = 'ss1_14_chateau', + [979320000] = 'ss1_14_decal_removed_opt', + [-969697814] = 'ss1_14_dtl01', + [1005845080] = 'ss1_14_dtl01b', + [-591540891] = 'ss1_14_dtl01b2', + [868544783] = 'ss1_14_dtl02', + [1874354372] = 'ss1_14_dtl02b', + [1009173975] = 'ss1_14_garage_01', + [301564130] = 'ss1_14_garagedecals', + [-681044525] = 'ss1_14_ground', + [-148632159] = 'ss1_14_ground2', + [-1199791607] = 'ss1_14_hotel01_emissive', + [-2007002664] = 'ss1_14_ivy001', + [-1710934749] = 'ss1_14_ivy002', + [1383524332] = 'ss1_14_ivy2', + [1076970337] = 'ss1_14_ivy3', + [2055452677] = 'ss1_14_ivy4', + [1204291451] = 'ss1_14_pool_water', + [1045778643] = 'ss1_14_railing01', + [-322523721] = 'ss1_14_railing02', + [587176488] = 'ss1_14_railing03', + [1363736250] = 'ss1_14_railing04', + [-1993677183] = 'ss1_14_railing05', + [2005484350] = 'ss1_14_railing06', + [1841770426] = 'ss1_14_railing07', + [1538165641] = 'ss1_14_railing08', + [-799902513] = 'ss1_14_railing09', + [-1244479228] = 'ss1_14_railing10', + [-956931253] = 'ss1_14_railing11', + [-1720711105] = 'ss1_14_railing12', + [33101497] = 'ss1_14_redflowers', + [-2118918312] = 'ss1_14_stairs01', + [-1235367757] = 'ss1_14_stairs02', + [1680483397] = 'ss1_14_stairs03', + [-1729589815] = 'ss1_14_stairs04', + [-915575086] = 'ss1_14_stairs05', + [-13936051] = 'ss1_14_stairs06', + [-1376143381] = 'ss1_14_stairs07', + [-1888523714] = 'ss1_14_stripwater', + [446428276] = 'ss1_14_tophedgedtl', + [-617087940] = 'ss1_14_wallivy01', + [1372923653] = 'ss1_emissive_bt1_01', + [1555700852] = 'ss1_emissive_bt1_01b', + [-1963919135] = 'ss1_emissive_bt1_01c', + [1166020187] = 'ss1_emissive_bt1_02', + [1256650610] = 'ss1_emissive_bt1_02b', + [959206397] = 'ss1_emissive_bt1_02c', + [1943137022] = 'ss1_emissive_bt1_03', + [-2023058897] = 'ss1_emissive_bt1_05', + [955013433] = 'ss1_emissive_bt1_05b', + [1259994516] = 'ss1_emissive_bt1_05c', + [1293339916] = 'ss1_emissive_club', + [2008946871] = 'ss1_emissive_ss1_01', + [-2017544008] = 'ss1_emissive_ss1_02', + [976910415] = 'ss1_emissive_ss1_02b', + [1682091983] = 'ss1_emissive_ss1_03_2', + [1855505531] = 'ss1_emissive_ss1_03_3', + [-1060214555] = 'ss1_emissive_ss1_03_4', + [1393233248] = 'ss1_emissive_ss1_03_5', + [-1928740018] = 'ss1_emissive_ss1_03', + [1378763536] = 'ss1_emissive_ss1_04_2', + [1753509820] = 'ss1_emissive_ss1_04_3', + [-1589517998] = 'ss1_emissive_ss1_04_4', + [-1624676467] = 'ss1_emissive_ss1_04', + [-331365984] = 'ss1_emissive_ss1_05_a', + [-1885042581] = 'ss1_emissive_ss1_05_c', + [-1553846298] = 'ss1_emissive_ss1_05_d', + [-1845523171] = 'ss1_emissive_ss1_05_e', + [-1270820449] = 'ss1_emissive_ss1_05_f', + [-997100992] = 'ss1_emissive_ss1_05_g', + [-552424648] = 'ss1_emissive_ss1_06_2', + [-910131052] = 'ss1_emissive_ss1_06_3', + [1080371718] = 'ss1_emissive_ss1_06', + [-816822283] = 'ss1_emissive_ss1_06b_3', + [-940689103] = 'ss1_emissive_ss1_06b_4', + [-704781600] = 'ss1_emissive_ss1_06b2b_2', + [2056718584] = 'ss1_emissive_ss1_06b2b', + [1386466947] = 'ss1_emissive_ss1_07', + [112170738] = 'ss1_emissive_ss1_07b', + [726294567] = 'ss1_emissive_ss1_07c', + [-315878491] = 'ss1_emissive_ss1_08_2', + [1594586978] = 'ss1_emissive_ss1_08_3', + [-200863417] = 'ss1_emissive_ss1_08', + [-1509569972] = 'ss1_emissive_ss1_09a', + [-1665353798] = 'ss1_emissive_ss1_09b', + [-75488915] = 'ss1_emissive_ss1_10', + [559804073] = 'ss1_emissive_ss1_11_a', + [254495300] = 'ss1_emissive_ss1_11_b', + [1290486854] = 'ss1_emissive_ss1_11', + [-457441002] = 'ss1_emissive_ss1_11b', + [1559094347] = 'ss1_emissive_ss1_12', + [-1192351221] = 'ss1_emissive_ss1_12b', + [1214626619] = 'ss1_emissive_ss1_13', + [-453706056] = 'ss1_emissive_ss1_13b', + [-1296033201] = 'ss1_emissive_ss1_13c', + [-787949568] = 'ss1_emissive_ss1_14a', + [-543034062] = 'ss1_emissive_ss1_14b', + [557307319] = 'ss1_lod_emissive_05', + [-1110058314] = 'ss1_lod_emissive_slod3', + [1038936830] = 'ss1_lod_emissive', + [2007050028] = 'ss1_lod_slod3', + [-1780655002] = 'ss1_props_bug1480687_slod', + [1633166599] = 'ss1_props_bug1513403_slod', + [-1640273836] = 'ss1_props_cablemesh63', + [1652262705] = 'ss1_props_cablemesh63217', + [928902614] = 'ss1_props_cablemesh6334', + [2095548941] = 'ss1_props_cablemesh63621', + [-1410063030] = 'ss1_props_cablemesh641', + [1463686267] = 'ss1_props_cablemesh947927', + [43804629] = 'ss1_props_cablemesh947938', + [-855441989] = 'ss1_props_cablemesh947946', + [1864583097] = 'ss1_props_cablemesh947955', + [-1853036408] = 'ss1_props_cablemesh9479554', + [-1940859617] = 'ss1_props_cablemesh9479767', + [-1584286919] = 'ss1_props_cablemesh947978', + [78130487] = 'ss1_props_cablemesh94799', + [1182593489] = 'ss1_props_cablemesh947994', + [-1593736670] = 'ss1_props_cablemesh9480', + [1806008239] = 'ss1_props_cablemesh94801', + [-92136086] = 'ss1_props_cablemesh94802', + [-2050051847] = 'ss1_props_cablemesh94803a', + [-1837919433] = 'ss1_rd1_00', + [-1393997790] = 'ss1_rd1_02', + [-1247225431] = 'ss1_rd1_03', + [-1958705959] = 'ss1_rd1_04', + [-663347389] = 'ss1_rd1_05', + [-961250368] = 'ss1_rd1_06', + [-289125409] = 'ss1_rd1_07', + [-469092757] = 'ss1_rd1_08', + [169935508] = 'ss1_rd1_09', + [1609977121] = 'ss1_rd1_10', + [-152765696] = 'ss1_rd1_11', + [-929620379] = 'ss1_rd1_12', + [-914284487] = 'ss1_rd1_13', + [-1683340148] = 'ss1_rd1_14', + [470598995] = 'ss1_rd1_15', + [769845503] = 'ss1_rd1_16', + [310030895] = 'ss1_rd1_17', + [-503197382] = 'ss1_rd1_18', + [-1907152414] = 'ss1_rd1_19', + [817229101] = 'ss1_rd1_20', + [520636882] = 'ss1_rd1_21', + [319369684] = 'ss1_rd1_22', + [2041413403] = 'ss1_rd1_24', + [1743903652] = 'ss1_rd1_25', + [-546026801] = 'ss1_rd1_26', + [-248844740] = 'ss1_rd1_27', + [2077754264] = 'ss1_rd1_28', + [-1919441129] = 'ss1_rd1_29', + [1231266324] = 'ss1_rd1_30', + [1540507377] = 'ss1_rd1_31', + [-1272547428] = 'ss1_rd1_32', + [-848319954] = 'ss1_rd1_33', + [-1770406845] = 'ss1_rd1_34', + [-1597255449] = 'ss1_rd1_35', + [134324053] = 'ss1_rd1_36', + [-1917257703] = 'ss1_rd1_37_ovly', + [380845240] = 'ss1_rd1_37', + [-353409747] = 'ss1_rd1_39', + [-1987665603] = 'ss1_rd1_40', + [1211230595] = 'ss1_rd1_40b', + [-1177812545] = 'ss1_rd1_42', + [-403415537] = 'ss1_rd1_43', + [791962165] = 'ss1_rd1_hedge001', + [1560133063] = 'ss1_rd1_hedge002', + [817718595] = 'ss1_rd1_hedge003', + [511885518] = 'ss1_rd1_hedge004', + [340241496] = 'ss1_rd1_hedge005', + [101060565] = 'ss1_rd1_hedge006', + [-105253059] = 'ss1_rd1_hedge007', + [-405056640] = 'ss1_rd1_hedge008', + [-584171994] = 'ss1_rd1_hedge009', + [-505821651] = 'ss1_rd1_hedge010', + [893152497] = 'ss1_rd1_hedge011', + [106204962] = 'ss1_rd1_hedge012', + [-916384456] = 'ss1_rd1_hedge013', + [1346425877] = 'ss1_rd1_median1', + [-954957053] = 'ss1_rd1_median1decals', + [-305131723] = 'ss1_rd1_median2', + [1564774471] = 'ss1_rd1_median2decals', + [395207345] = 'ss1_rd1_median3', + [-2073374120] = 'ss1_rd1_median3decals', + [-542497523] = 'ss1_rd1_ovly01', + [-840203888] = 'ss1_rd1_ovly02', + [55372882] = 'ss1_rd1_ovly03', + [-241481489] = 'ss1_rd1_ovly04', + [360812703] = 'ss1_rd1_ovly05', + [666055938] = 'ss1_rd1_ovly06', + [965105832] = 'ss1_rd1_ovly07', + [1263860805] = 'ss1_rd1_ovly08', + [1326646209] = 'ss1_rd1_ovly09', + [1414105230] = 'ss1_rd1_ovly10', + [1259992631] = 'ss1_rd1_ovly11', + [963269336] = 'ss1_rd1_ovly12', + [647310638] = 'ss1_rd1_ovly13', + [350259653] = 'ss1_rd1_ovly14', + [-880314612] = 'ss1_rd1_ovly15', + [-581002566] = 'ss1_rd1_ovly16', + [-268058616] = 'ss1_rd1_ovly17', + [30892971] = 'ss1_rd1_ovly18', + [-2094930366] = 'ss1_rd1_ovly19', + [2071845494] = 'ss1_rd1_ovly20', + [-76522919] = 'ss1_rd1_ovly21', + [230031076] = 'ss1_rd1_ovly22', + [-671837342] = 'ss1_rd1_ovly23', + [-364693505] = 'ss1_rd1_ovly24', + [-1290876537] = 'ss1_rd1_ovly25', + [-989827734] = 'ss1_rd1_ovly26', + [-1901526852] = 'ss1_rd1_ovly27', + [-1605131247] = 'ss1_rd1_ovly28', + [569321294] = 'ss1_rd1_ovly29', + [-1259581270] = 'ss1_rd1_ovly32', + [-936184009] = 'ss1_rd1_ovly33', + [1516706721] = 'ss1_rd1_ovly34', + [-1706091672] = 'ss1_rd1_ovly35', + [-1411629438] = 'ss1_rd1_ovly36', + [-1390591740] = 'ss1_rd1_ovly37', + [-1082595909] = 'ss1_rd1_ovly38', + [1065444818] = 'ss1_rd1_ovly39', + [151911364] = 'ss1_rd1_ovly40', + [1365228070] = 'ss1_rd1_props_busroof01', + [-1552621441] = 'ss1_rd1_props_cbl_x_', + [192100189] = 'ss1_rd1_props_cbl_x_01', + [422105800] = 'ss1_rd1_props_cbl_x_02', + [-435262316] = 'ss1_rd1_props_cbl_x_03', + [-203618255] = 'ss1_rd1_props_cbl_x_04', + [1449282758] = 'ss1_rd1_props_cbl_x_05', + [1143515219] = 'ss1_rd1_props_cbl_x_06', + [2076645263] = 'ss1_rd1_props_cbl_x_07', + [1773433706] = 'ss1_rd1_props_cbl_x_08', + [212384084] = 'ss1_rd1_props_cbl_x_09', + [142520912] = 'ss1_rd1_props_cbl_x_10', + [-1014188431] = 'ss1_rd1_props_cbl_x_100', + [545779814] = 'ss1_rd1_props_cbl_x_101', + [840471427] = 'ss1_rd1_props_cbl_x_102', + [87243197] = 'ss1_rd1_props_cbl_x_103', + [381213896] = 'ss1_rd1_props_cbl_x_104', + [1874988757] = 'ss1_rd1_props_cbl_x_105', + [2033459641] = 'ss1_rd1_props_cbl_x_106', + [1146042352] = 'ss1_rd1_props_cbl_x_107', + [1577085778] = 'ss1_rd1_props_cbl_x_108', + [-1443495104] = 'ss1_rd1_props_cbl_x_109', + [-968675878] = 'ss1_rd1_props_cbl_x_11', + [1572040184] = 'ss1_rd1_props_cbl_x_110', + [536474258] = 'ss1_rd1_props_cbl_x_111', + [304961273] = 'ss1_rd1_props_cbl_x_112', + [95895053] = 'ss1_rd1_props_cbl_x_113', + [-259910749] = 'ss1_rd1_props_cbl_x_114', + [-633182428] = 'ss1_rd1_props_cbl_x_115', + [-926170057] = 'ss1_rd1_props_cbl_x_116', + [1194475870] = 'ss1_rd1_props_cbl_x_117', + [1540582048] = 'ss1_rd1_props_cbl_x_118', + [1973362231] = 'ss1_rd1_props_cbl_x_119', + [-736835203] = 'ss1_rd1_props_cbl_x_12', + [1890128643] = 'ss1_rd1_props_cbl_x_120', + [682885914] = 'ss1_rd1_props_cbl_x_121', + [981116583] = 'ss1_rd1_props_cbl_x_122', + [208358037] = 'ss1_rd1_props_cbl_x_123', + [396714249] = 'ss1_rd1_props_cbl_x_124', + [-274296564] = 'ss1_rd1_props_cbl_x_125', + [22623345] = 'ss1_rd1_props_cbl_x_126', + [-751445973] = 'ss1_rd1_props_cbl_x_127', + [-445416282] = 'ss1_rd1_props_cbl_x_128', + [-1233609039] = 'ss1_rd1_props_cbl_x_129', + [202783195] = 'ss1_rd1_props_cbl_x_13', + [235519794] = 'ss1_rd1_props_cbl_x_130', + [-619456185] = 'ss1_rd1_props_cbl_x_131', + [-376637895] = 'ss1_rd1_props_cbl_x_132', + [-983716389] = 'ss1_rd1_props_cbl_x_133', + [-1825584776] = 'ss1_rd1_props_cbl_x_134', + [503635384] = 'ss1_rd1_props_cbl_x_14', + [863734041] = 'ss1_rd1_props_cbl_x_140', + [-1434814671] = 'ss1_rd1_props_cbl_x_141', + [2025034660] = 'ss1_rd1_props_cbl_x_142', + [-2062177176] = 'ss1_rd1_props_cbl_x_143', + [1397213389] = 'ss1_rd1_props_cbl_x_144', + [1636099399] = 'ss1_rd1_props_cbl_x_145', + [801767890] = 'ss1_rd1_props_cbl_x_146', + [481418146] = 'ss1_rd1_props_cbl_x_147', + [709883614] = 'ss1_rd1_props_cbl_x_148', + [396185965] = 'ss1_rd1_props_cbl_x_149', + [-801029582] = 'ss1_rd1_props_cbl_x_15', + [519749440] = 'ss1_rd1_props_cbl_x_150', + [-700142123] = 'ss1_rd1_props_cbl_x_153', + [-1078492997] = 'ss1_rd1_props_cbl_x_154', + [-1316428706] = 'ss1_rd1_props_cbl_x_155', + [-1418405834] = 'ss1_rd1_props_cbl_x_156', + [-1092518133] = 'ss1_rd1_props_cbl_x_157', + [-1464970587] = 'ss1_rd1_props_cbl_x_158', + [-1703692752] = 'ss1_rd1_props_cbl_x_159', + [-489232547] = 'ss1_rd1_props_cbl_x_16', + [1293327139] = 'ss1_rd1_props_cbl_x_160', + [543932738] = 'ss1_rd1_props_cbl_x_161', + [314451431] = 'ss1_rd1_props_cbl_x_162', + [-46662949] = 'ss1_rd1_props_cbl_x_163', + [-276996250] = 'ss1_rd1_props_cbl_x_164', + [-645254272] = 'ss1_rd1_props_cbl_x_165', + [-942108643] = 'ss1_rd1_props_cbl_x_166', + [-1173293938] = 'ss1_rd1_props_cbl_x_167', + [-1534998160] = 'ss1_rd1_props_cbl_x_168', + [-1231327841] = 'ss1_rd1_props_cbl_x_169', + [-1256420375] = 'ss1_rd1_props_cbl_x_17', + [-418295158] = 'ss1_rd1_props_cbl_x_170', + [-43024570] = 'ss1_rd1_props_cbl_x_171', + [-878404687] = 'ss1_rd1_props_cbl_x_172', + [503201891] = 'ss1_rd1_props_cbl_x_173', + [870149153] = 'ss1_rd1_props_cbl_x_174', + [54954740] = 'ss1_rd1_props_cbl_x_175', + [411612536] = 'ss1_rd1_props_cbl_x_176', + [128783301] = 'ss1_rd1_props_cbl_x_177', + [487734927] = 'ss1_rd1_props_cbl_x_178', + [1883366637] = 'ss1_rd1_props_cbl_x_179', + [-955961414] = 'ss1_rd1_props_cbl_x_18', + [584894656] = 'ss1_rd1_props_cbl_x_180', + [667996844] = 'ss1_rd1_props_cbl_x_181', + [1517271017] = 'ss1_rd1_props_cbl_x_182', + [1228805510] = 'ss1_rd1_props_cbl_x_183', + [2105835026] = 'ss1_rd1_props_cbl_x_184', + [1585725458] = 'ss1_rd1_props_cbl_x_185', + [-1841354873] = 'ss1_rd1_props_cbl_x_186', + [-2090333735] = 'ss1_rd1_props_cbl_x_187', + [-1255543460] = 'ss1_rd1_props_cbl_x_188', + [2127593646] = 'ss1_rd1_props_cbl_x_189', + [-1719544660] = 'ss1_rd1_props_cbl_x_19', + [2119238491] = 'ss1_rd1_props_cbl_x_190', + [-290233314] = 'ss1_rd1_props_cbl_x_191', + [-380675754] = 'ss1_rd1_props_cbl_x_192', + [-716885694] = 'ss1_rd1_props_cbl_x_193', + [-947218995] = 'ss1_rd1_props_cbl_x_194', + [1571937709] = 'ss1_rd1_props_cbl_x_20', + [1195290827] = 'ss1_rd1_props_cbl_x_21', + [419419214] = 'ss1_rd1_props_cbl_x_22', + [1805875604] = 'ss1_rd1_props_cbl_x_23', + [1029283073] = 'ss1_rd1_props_cbl_x_24', + [4661981] = 'ss1_rd1_props_cbl_x_25', + [-340264513] = 'ss1_rd1_props_cbl_x_26', + [610134794] = 'ss1_rd1_props_cbl_x_27', + [-162525457] = 'ss1_rd1_props_cbl_x_28', + [-1164863641] = 'ss1_rd1_props_cbl_x_29', + [-1781676412] = 'ss1_rd1_props_cbl_x_30', + [1865447754] = 'ss1_rd1_props_cbl_x_31', + [1095736713] = 'ss1_rd1_props_cbl_x_32', + [-627781607] = 'ss1_rd1_props_cbl_x_33', + [-321686378] = 'ss1_rd1_props_cbl_x_34', + [-1444286788] = 'ss1_rd1_props_cbl_x_35', + [-1941720208] = 'ss1_rd1_props_cbl_x_36', + [-1257143025] = 'ss1_rd1_props_cbl_x_37', + [-943543695] = 'ss1_rd1_props_cbl_x_38', + [372295768] = 'ss1_rd1_props_cbl_x_41', + [677866693] = 'ss1_rd1_props_cbl_x_42', + [-1296203405] = 'ss1_rd1_props_cbl_x_43', + [-993319538] = 'ss1_rd1_props_cbl_x_44', + [60498729] = 'ss1_rd1_props_cbl_x_45', + [1440040860] = 'ss1_rd1_props_cbl_x_46', + [507566196] = 'ss1_rd1_props_cbl_x_47', + [813923577] = 'ss1_rd1_props_cbl_x_48', + [1216687356] = 'ss1_rd1_props_cbl_x_49', + [-1136945753] = 'ss1_rd1_props_cbl_x_50', + [-1566842272] = 'ss1_rd1_props_cbl_x_51', + [-1595810068] = 'ss1_rd1_props_cbl_x_52', + [-724744506] = 'ss1_rd1_props_cbl_x_53', + [45687453] = 'ss1_rd1_props_cbl_x_54', + [-1192587519] = 'ss1_rd1_props_cbl_x_55', + [-408589194] = 'ss1_rd1_props_cbl_x_56', + [463393896] = 'ss1_rd1_props_cbl_x_57', + [1236316299] = 'ss1_rd1_props_cbl_x_58', + [400695] = 'ss1_rd1_props_cbl_x_59', + [1223176182] = 'ss1_rd1_props_cbl_x_60', + [-1487770427] = 'ss1_rd1_props_cbl_x_61', + [-1731473480] = 'ss1_rd1_props_cbl_x_62', + [-1964002304] = 'ss1_rd1_props_cbl_x_63', + [2100664460] = 'ss1_rd1_props_cbl_x_64', + [-5759625] = 'ss1_rd1_props_cbl_x_65', + [-773930523] = 'ss1_rd1_props_cbl_x_66', + [-994629738] = 'ss1_rd1_props_cbl_x_67', + [-1241970150] = 'ss1_rd1_props_cbl_x_68', + [735966686] = 'ss1_rd1_props_cbl_x_69', + [452152401] = 'ss1_rd1_props_cbl_x_70', + [197963268] = 'ss1_rd1_props_cbl_x_71', + [-97121577] = 'ss1_rd1_props_cbl_x_72', + [2109346269] = 'ss1_rd1_props_cbl_x_73', + [-208142949] = 'ss1_rd1_props_cbl_x_74', + [-521840586] = 'ss1_rd1_props_cbl_x_75', + [-1216674462] = 'ss1_rd1_props_cbl_x_76', + [1051104187] = 'ss1_rd1_props_cbl_x_79', + [-1055155797] = 'ss1_rd1_props_cbl_x_80', + [-1774566427] = 'ss1_rd1_props_cbl_x_83', + [-1972884415] = 'ss1_rd1_props_cbl_x_84', + [-288164603] = 'ss1_rd1_props_cbl_x_85', + [-1986188649] = 'ss1_rd1_props_cbl_x_86', + [-1689137664] = 'ss1_rd1_props_cbl_x_87', + [-1509432468] = 'ss1_rd1_props_cbl_x_88', + [-181632236] = 'ss1_rd1_props_cbl_x_94', + [1682170177] = 'ss1_rd1_props_cbl_x_95', + [1495452415] = 'ss1_rd1_props_cbl_x_96', + [-830556743] = 'ss1_rd1_props_cbl_x_97', + [-1133571686] = 'ss1_rd1_props_cbl_x_98', + [833747998] = 'ss1_rd1_props_cbl_x_99', + [-1260892981] = 'ss1_rd1_props_hv00', + [-1029379996] = 'ss1_rd1_props_hv01', + [-1891991152] = 'ss1_rd1_props_hv02', + [-1385251336] = 'ss1_rd1_props_hv03', + [402043401] = 'ss1_rd1_ssrd_fur00', + [-474396273] = 'ss1_rd1_ssrd_fur01', + [-243112671] = 'ss1_rd1_ssrd_fur02', + [1868488920] = 'ss1_rd1_ssrd_fur03', + [1563475068] = 'ss1_rd1_ssrd_fur04', + [752802777] = 'ss1_rd1_ssrd_fur05', + [978187959] = 'ss1_rd1_ssrd_fur06', + [-1208323570] = 'ss1_rd1_ssrd_fur07', + [-2082076186] = 'ss1_rd1_ssrd_fur08', + [-1858591606] = 'ss1_rd1_ssrd_fur09', + [-542785400] = 'ss1_rd1_ssrd_fur10', + [1823660704] = 'ss1_rd1_ssrd_fur11', + [1531754452] = 'ss1_rd1_ssrd_fur12', + [1217532511] = 'ss1_rd1_ssrd_fur13', + [651218653] = 'ss1_rd1_ssrd_fur14', + [-1547810634] = 'ss1_rd1_ssrd_fur15', + [-1847319294] = 'ss1_rd1_ssrd_fur16', + [-1897652478] = 'ss1_rd1_ssrd_fur17', + [2101246903] = 'ss1_rd1_ssrd_fur18', + [-91589043] = 'ss1_rd1_ssrd_fur19', + [1840600785] = 'ss1_rd1_ssrd_fur20', + [-1570095046] = 'ss1_rd1_ssrd_fur21', + [1509121284] = 'ss1_rd1_xfur00', + [1202305137] = 'ss1_rd1_xfur01', + [1704129599] = 'ss1_rd1_xfur02', + [1405898930] = 'ss1_rd1_xfur03', + [180010644] = 'ss1_rd1_xfur04', + [-134407911] = 'ss1_rd1_xfur05', + [524642217] = 'ss1_rd1_xfur06', + [209895972] = 'ss1_rd1_xfur07', + [-1075762974] = 'ss1_rd1_xfur08', + [-1322808465] = 'ss1_rd1_xfur09', + [-1851372691] = 'ss1_rd1_xfur10', + [2131961415] = 'ss1_rd1_xfur11', + [906695736] = 'ss1_rd1_xfur12', + [-1549930660] = 'ss1_rd1_xfur13', + [1923400478] = 'stalion', + [-401643538] = 'stalion2', + [-1477580979] = 'stanier', + [-403758991] = 'stickons', + [1545842587] = 'stinger', + [-2098947590] = 'stingergt', + [1747439474] = 'stockade', + [-214455498] = 'stockade3', + [1723137093] = 'stratum', + [-1961627517] = 'stretch', + [-2122757008] = 'stunt', + [1706375705] = 'sub_01_shb', + [-1797633475] = 'sub_04_sb', + [417531182] = 'sub_6_add_002', + [1196089853] = 'sub_6_add_003', + [-391470130] = 'sub_6_add_004', + [-1243942856] = 'sub_6_add_01', + [-853989986] = 'sub1_add_002', + [50729335] = 'sub1_add_003', + [951352531] = 'sub1_add_004', + [1852205114] = 'sub1_add_005', + [1609878359] = 'sub1_add_006', + [1308600173] = 'sub1_add_007', + [1002504944] = 'sub1_add_008', + [1155736732] = 'sub1_add_01', + [-153407593] = 'sub2_brandadd_002', + [51955730] = 'sub2_brandadd_003', + [298181996] = 'sub2_brandadd_004', + [-1850645179] = 'sub2_brandadd_005', + [-1102856599] = 'sub2_brandadd_006', + [-863151364] = 'sub2_brandadd_007', + [-625445038] = 'sub2_brandadd_008', + [1427270664] = 'sub2_brandadd_009', + [-1329991983] = 'sub2_brandadd_01', + [-758781827] = 'sub2_brandadd_010', + [-1049049629] = 'sub2_brandadd_011', + [-280845962] = 'sub2_brandadd_012', + [1210651510] = 'sub2ceiling_bits1', + [1357043772] = 'sub2walktext1', + [-2130566113] = 'sub3_reflectonly', + [-1591921606] = 'sub3_sb', + [1629821265] = 'sub3doors', + [-1384399218] = 'sub3wall_pans', + [-1995425518] = 'sub4_adds_002', + [-1689068137] = 'sub4_adds_003', + [-1649614261] = 'sub4_adds_004', + [805668606] = 'sub4_adds_005', + [1110223692] = 'sub4_adds_006', + [-25932406] = 'sub4_adds_01', + [-377486242] = 'sub4ceiling_bits1', + [1772374739] = 'sub4ceiling_bitsblergh', + [519120503] = 'sub5_signage1', + [625214924] = 'sub5ad_decals1', + [-1702662071] = 'sub5ad_decals2', + [-748344549] = 'sub5ceiling_bits1', + [-978219084] = 'sub5ceiling_bits2', + [586083911] = 'sub5doors1', + [-335062999] = 'sub5mirror_flr1', + [-35128342] = 'sub5mirror_flr2', + [-740277011] = 'sub5overlay1', + [1619287607] = 'sub5overlay2', + [81953595] = 'sub5panels1', + [794991514] = 'sub5pipes1', + [1630830397] = 'sub5pipes2', + [1676941747] = 'sub5wallbits1', + [-1424840709] = 'sub5wallbits2', + [771711535] = 'submersible', + [-1066334226] = 'submersible2', + [2012211539] = 'subway1_ceilingbits1', + [1750878764] = 'subway1_ceilingbits2', + [-1665420704] = 'subway1_mirror2', + [1983101791] = 'subway2_brandingtext002', + [-2022023700] = 'subway2_brandingtext003', + [-1748697471] = 'subway2_brandingtext004', + [-1696135995] = 'subway2_brandingtext005', + [516086926] = 'subway2_brandingtext1', + [-185755532] = 'subway2_dirt1', + [-1719442365] = 'subway2_panels1', + [1248083080] = 'subway2mirroflr1', + [-631246063] = 'subway2mirroflrlow', + [250304836] = 'subway3_mir', + [1995637998] = 'subway4logo1', + [866435659] = 'subway4mirrorflr1', + [-735084042] = 'subway4text2', + [970598228] = 'sultan', + [-295689028] = 'sultanrs', + [-282946103] = 'suntrap', + [1123216662] = 'superd', + [710198397] = 'supervolito', + [-1671539132] = 'supervolito2', + [384071873] = 'surano', + [699456151] = 'surfer', + [-1311240698] = 'surfer2', + [-1894894188] = 'surge', + [-657696971] = 'suway3pipes', + [-339587598] = 'swift', + [1075432268] = 'swift2', + [1663218586] = 't20', + [1951180813] = 'taco', + [-1008861746] = 'tailgater', + [972671128] = 'tampa', + [-1071380347] = 'tampa2', + [-730904777] = 'tanker', + [1956216962] = 'tanker2', + [586013744] = 'tankercar', + [-956048545] = 'taxi', + [-2096818938] = 'technical', + [1180875963] = 'technical2', + [272929391] = 'tempesta', + [314192305] = 'test_prop_gravestones_01a', + [-1573887677] = 'test_prop_gravestones_02a', + [-1829121346] = 'test_prop_gravestones_04a', + [865506001] = 'test_prop_gravestones_05a', + [838307155] = 'test_prop_gravestones_07a', + [-373490769] = 'test_prop_gravestones_08a', + [-1507101831] = 'test_prop_gravestones_09a', + [-132218202] = 'test_prop_gravetomb_01a', + [1294871464] = 'test_prop_gravetomb_02a', + [1827343468] = 'test_tree_cedar_trunk_001', + [1239708330] = 'test_tree_forest_trunk_01', + [-284640012] = 'test_tree_forest_trunk_04', + [-1608076682] = 'test_tree_forest_trunk_base_01', + [-359103520] = 'test_tree_forest_trunk_fall_01', + [1836027715] = 'thrust', + [48339065] = 'tiptruck', + [-947761570] = 'tiptruck2', + [1981688531] = 'titan', + [-1064362163] = 'to_be_swapped', + [464687292] = 'tornado', + [1531094468] = 'tornado2', + [1762279763] = 'tornado3', + [-2033222435] = 'tornado4', + [-1797613329] = 'tornado5', + [-1558399629] = 'tornado6', + [1070967343] = 'toro', + [908897389] = 'toro2', + [1941029835] = 'tourbus', + [-1323100960] = 'towtruck', + [-442313018] = 'towtruck2', + [2078290630] = 'tr2', + [1784254509] = 'tr3', + [2091594960] = 'tr4', + [1641462412] = 'tractor', + [-2076478498] = 'tractor2', + [1445631933] = 'tractor3', + [2016027501] = 'trailerlogs', + [-877478386] = 'trailers', + [-1579533167] = 'trailers2', + [-2058878099] = 'trailers3', + [712162987] = 'trailersmall', + [1917016601] = 'trash', + [-1255698084] = 'trash2', + [-1352468814] = 'trflat', + [1127861609] = 'tribike', + [-1233807380] = 'tribike2', + [-400295096] = 'tribike3', + [101905590] = 'trophytruck', + [-663299102] = 'trophytruck2', + [290013743] = 'tropic', + [1448677353] = 'tropic2', + [1887331236] = 'tropos', + [-2100640717] = 'tug', + [-982130927] = 'turismo2', + [408192225] = 'turismor', + [-1770643266] = 'tvtrailer', + [2067820283] = 'tyrus', + [773063444] = 'u_f_m_corpse_01', + [-671910391] = 'u_f_m_drowned_01', + [1095737979] = 'u_f_m_miranda', + [-1576494617] = 'u_f_m_promourn_01', + [894928436] = 'u_f_o_moviestar', + [-988619485] = 'u_f_o_prolhost_01', + [-96953009] = 'u_f_y_bikerchic', + [-1230338610] = 'u_f_y_comjane', + [-1670377315] = 'u_f_y_corpse_01', + [228356856] = 'u_f_y_corpse_02', + [-1768198658] = 'u_f_y_hotposh_01', + [-254493138] = 'u_f_y_jewelass_01', + [1573528872] = 'u_f_y_mistress', + [602513566] = 'u_f_y_poppymich', + [-756833660] = 'u_f_y_princess', + [1535236204] = 'u_f_y_spyactress', + [-252946718] = 'u_m_m_aldinapoli', + [-1022961931] = 'u_m_m_bankman', + [1984382277] = 'u_m_m_bikehire_01', + [1646160893] = 'u_m_m_doa_01', + [712602007] = 'u_m_m_edtoh', + [874722259] = 'u_m_m_fibarchitect', + [728636342] = 'u_m_m_filmdirector', + [1169888870] = 'u_m_m_glenstank_01', + [-1001079621] = 'u_m_m_griff_01', + [-835930287] = 'u_m_m_jesus_01', + [-1395868234] = 'u_m_m_jewelsec_01', + [-422822692] = 'u_m_m_jewelthief', + [479578891] = 'u_m_m_markfost', + [-2114499097] = 'u_m_m_partytarget', + [1888624839] = 'u_m_m_prolsec_01', + [-829029621] = 'u_m_m_promourn_01', + [1624626906] = 'u_m_m_rivalpap', + [-1408326184] = 'u_m_m_spyactor', + [1813637474] = 'u_m_m_streetart_01', + [-1871275377] = 'u_m_m_willyfist', + [732742363] = 'u_m_o_filmnoir', + [1189322339] = 'u_m_o_finguru_01', + [-1709285806] = 'u_m_o_taphillbilly', + [1787764635] = 'u_m_o_tramp_01', + [-257153498] = 'u_m_y_abner', + [-815646164] = 'u_m_y_antonb', + [-636391810] = 'u_m_y_babyd', + [1380197501] = 'u_m_y_baygor', + [-1954728090] = 'u_m_y_burgerdrug_01', + [610290475] = 'u_m_y_chip', + [755956971] = 'u_m_y_cyclist_01', + [-2051422616] = 'u_m_y_fibmugger_01', + [-961242577] = 'u_m_y_guido_01', + [-1289578670] = 'u_m_y_gunvend_01', + [-264140789] = 'u_m_y_hippie_01', + [880829941] = 'u_m_y_imporage', + [2109968527] = 'u_m_y_justin', + [-927261102] = 'u_m_y_mani', + [1191548746] = 'u_m_y_militarybum', + [1346941736] = 'u_m_y_paparazzi', + [921110016] = 'u_m_y_party_01', + [-598109171] = 'u_m_y_pogo_01', + [2073775040] = 'u_m_y_prisoner_01', + [-2057423197] = 'u_m_y_proldriver_01', + [1011059922] = 'u_m_y_rsranger_01', + [1794381917] = 'u_m_y_sbike', + [-1852518909] = 'u_m_y_staggrm_01', + [-1800524916] = 'u_m_y_tattoo_01', + [-1404353274] = 'u_m_y_zombie_01', + [-1049233832] = 'urbandryfrnds_01', + [1982224326] = 'urbandrygrass_01', + [-1800661581] = 'urbangrnfrnds_01', + [671173206] = 'urbangrngrass_01', + [978689073] = 'urbanweeds01_l1', + [-525811767] = 'urbanweeds01', + [1830533141] = 'urbanweeds02_l1', + [100436592] = 'urbanweeds02', + [516990260] = 'utillitruck', + [887537515] = 'utillitruck2', + [2132890591] = 'utillitruck3', + [267118375] = 'v_1_coils01', + [1904847445] = 'v_1_coils02', + [-2085138768] = 'v_1_coils03', + [-1110424863] = 'v_1_coils04', + [-802822260] = 'v_1_coils05', + [838708030] = 'v_1_coils06', + [1535062819] = 'v_1_dec_02', + [-1234102084] = 'v_1_door01', + [-439715986] = 'v_1_door02', + [-756756061] = 'v_1_door03', + [886298911] = 'v_1_duct02', + [-1216490109] = 'v_1_fd_crest', + [-233563916] = 'v_1_fdsm01', + [186775436] = 'v_1_floor_spec', + [660022125] = 'v_1_main_deta', + [1677813156] = 'v_1_mountedshelf', + [1193576947] = 'v_1_rails01', + [-1461136400] = 'v_1_shell', + [153866875] = 'v_1_vacuum003', + [459896566] = 'v_1_vacuum004', + [144494953] = 'v_1_vacuum005', + [442135780] = 'v_1_vacuum006', + [-910308975] = 'v_1_vacuum01', + [503673375] = 'v_1_vacuum02', + [1423740420] = 'v_10_baninbetbits', + [-879871650] = 'v_10_banker_tables', + [651174116] = 'v_10_bankinbetweendirt', + [843317783] = 'v_10_bankovers', + [-1770878898] = 'v_10_bckbnkdirt', + [-671130313] = 'v_10_boozeprices', + [1917754936] = 'v_10_fleecalogo', + [-1044313957] = 'v_10_fleecalogo2', + [455109350] = 'v_10_gan_bank_reflect', + [-2094984685] = 'v_10_gen_bankcounter', + [-1621826475] = 'v_10_gen_bnkvaultdetail', + [-1266843692] = 'v_10_gen_country_bank', + [1563151887] = 'v_10_gen_liq_reflect', + [-89876203] = 'v_10_genbank_bits', + [1388521522] = 'v_10_genbank_leaflets', + [-513071989] = 'v_10_genbank_rubbermat', + [1237458198] = 'v_10_genbankcounter', + [869129040] = 'v_10_genbanklights_01', + [567224483] = 'v_10_genbanktrim', + [-716670247] = 'v_10_gendepo_box01_lid', + [1074372334] = 'v_10_gendepo_box01', + [1269359289] = 'v_10_liqourceilingsigns', + [1958517737] = 'v_10_liquor_backdirt', + [1025903659] = 'v_10_liquor_counter', + [-1722415101] = 'v_10_liquoradposts', + [-833856236] = 'v_10_liquorbacktrim', + [542020340] = 'v_10_liquorbits1', + [-1258479447] = 'v_10_liquorboard', + [1187816397] = 'v_10_liquorboxads', + [-575635765] = 'v_10_liquorcellarbits', + [-2081756346] = 'v_10_liquordirt', + [-1918850677] = 'v_10_liquorestorebits', + [1205623233] = 'v_10_liquorfagdisplay', + [520784046] = 'v_10_liquorfloorshelves', + [2129237178] = 'v_10_liquornotes', + [-601400119] = 'v_10_liquorporn', + [1585020000] = 'v_10_liquorstore', + [137684010] = 'v_10_liquorstorebeerstacks', + [726170109] = 'v_10_liqurmat', + [-540146049] = 'v_10_liqyeltrim', + [-1269442274] = 'v_10_lquorbeerstackshope', + [-534967432] = 'v_10_price_note', + [-338036873] = 'v_10_shop_bits', + [-1114380139] = 'v_10_timshit', + [585210042] = 'v_10_weeroombits', + [-1493049169] = 'v_11__abbconang1', + [-451223344] = 'v_11__abbmetdoors', + [280632055] = 'v_11__abbprodover', + [767119671] = 'v_11_ab_dirty', + [-639732560] = 'v_11_ab_pipes', + [1531872957] = 'v_11_ab_pipes001', + [-643038350] = 'v_11_ab_pipes002', + [-944185456] = 'v_11_ab_pipes003', + [1912267577] = 'v_11_ab_pipesfrnt', + [-566720429] = 'v_11_abalphook001', + [177525359] = 'v_11_abarmsupp', + [-406215282] = 'v_11_abattoir_reflection', + [1761914052] = 'v_11_abattoirshadprox', + [-85281472] = 'v_11_abattoirshell', + [-1544503507] = 'v_11_abattoirsubshell', + [82581555] = 'v_11_abattoirsubshell2', + [1346383582] = 'v_11_abattoirsubshell3', + [1501446490] = 'v_11_abattoirsubshell4', + [-574814449] = 'v_11_abattpens', + [1240568781] = 'v_11_abb_repipes', + [1933472203] = 'v_11_abbabits01', + [-85417069] = 'v_11_abbbetlights_day', + [-1017245907] = 'v_11_abbbetlights', + [1415800086] = 'v_11_abbbigconv1', + [-2141005548] = 'v_11_abbcattlehooist', + [-1080754292] = 'v_11_abbconduit', + [1546871972] = 'v_11_abbcoofence', + [-572268449] = 'v_11_abbcorrishad', + [101345245] = 'v_11_abbcorrsigns', + [-2016322935] = 'v_11_abbdangles', + [-45142426] = 'v_11_abbdoorstop', + [-805278313] = 'v_11_abbebtsigns', + [1490872358] = 'v_11_abbendsigns', + [1862024117] = 'v_11_abbexitoverlays', + [2078282668] = 'v_11_abbgate', + [2001011031] = 'v_11_abbhosethings', + [-1231457128] = 'v_11_abbinbeplat', + [-1325025053] = 'v_11_abbleeddrains', + [-1098394514] = 'v_11_abbmain1_stuts', + [1049702801] = 'v_11_abbmain2_dirt', + [-1837757798] = 'v_11_abbmain2_rails', + [493418656] = 'v_11_abbmain3_rails', + [-599168321] = 'v_11_abbmain3bits', + [-2069070624] = 'v_11_abbmainbit1pipes', + [870104350] = 'v_11_abbmeatchunks001', + [-596490586] = 'v_11_abbmnrmshad1', + [-366222823] = 'v_11_abbmnrmshad2', + [-671302213] = 'v_11_abbmnrmshad3', + [-1965677972] = 'v_11_abbnardirt', + [-913280628] = 'v_11_abbnearenddirt', + [-1427719489] = 'v_11_abboffovers', + [-115336001] = 'v_11_abbpordshadroom', + [-1697520387] = 'v_11_abbprodbig', + [979580520] = 'v_11_abbproddirt', + [-648263873] = 'v_11_abbprodlit', + [-1698817363] = 'v_11_abbprodplats2', + [394198343] = 'v_11_abbrack1', + [556601507] = 'v_11_abbrack2', + [-599161123] = 'v_11_abbrack3', + [110812031] = 'v_11_abbrack4', + [-193895672] = 'v_11_abbreargirds', + [651695598] = 'v_11_abbrodovers', + [623744713] = 'v_11_abbrolldorrswitch', + [-1418214751] = 'v_11_abbrolldors', + [1641910444] = 'v_11_abbseams1', + [-1572048740] = 'v_11_abbslaugbld', + [-733369186] = 'v_11_abbslaugdirt', + [-226352795] = 'v_11_abbslaughtdrains', + [423817432] = 'v_11_abbslaughtshad', + [152936678] = 'v_11_abbslaughtshad2', + [-1434151603] = 'v_11_abbslausigns', + [1351995295] = 'v_11_abbtops1', + [145014714] = 'v_11_abbtops2', + [-161277129] = 'v_11_abbtops3', + [929885194] = 'v_11_abbwins', + [-613294944] = 'v_11_abcattlegirds', + [357378553] = 'v_11_abcattlights', + [-865503302] = 'v_11_abcattlightsent', + [-1061519961] = 'v_11_abcoolershad', + [1740457115] = 'v_11_abinbetbeams', + [1172916701] = 'v_11_abmatinbet', + [-1900921204] = 'v_11_abmeatbandsaw', + [229669362] = 'v_11_aboffal', + [1071960393] = 'v_11_aboffplatfrm', + [-1203746455] = 'v_11_abplastipsprod', + [-729416481] = 'v_11_abplatmovecop1', + [-301002890] = 'v_11_abplatmoveinbet', + [-929945934] = 'v_11_abplatstatic', + [1506184467] = 'v_11_abprodbeams', + [-1988111383] = 'v_11_abseamsmain', + [-826900717] = 'v_11_abskinpull', + [392875289] = 'v_11_abslaughmats', + [-1060638272] = 'v_11_abslauplat', + [-1550682552] = 'v_11_abslughtbeams', + [-95266536] = 'v_11_abstrthooks', + [-5511026] = 'v_11_backrails', + [-192419657] = 'v_11_beefheaddropper', + [-392304518] = 'v_11_beefheaddroppermn', + [-819191876] = 'v_11_beefsigns', + [1665092468] = 'v_11_bleederstep', + [105571099] = 'v_11_blufrocksign', + [1079267610] = 'v_11_cooheidrack', + [2027255383] = 'v_11_cooheidrack001', + [1648020429] = 'v_11_coolblood001', + [-1011515909] = 'v_11_cooler_drs', + [1495352095] = 'v_11_coolerrack001', + [557069257] = 'v_11_coolgirdsvest', + [1791410739] = 'v_11_crseloadpmp1', + [-2141236564] = 'v_11_de-hidebeam', + [-1586047796] = 'v_11_endoffbits', + [1494494523] = 'v_11_hangslughshp', + [-1058902402] = 'v_11_headlopperplatform', + [1267938596] = 'v_11_jointracksect', + [-586535839] = 'v_11_leccybox', + [-926092390] = 'v_11_mainarms', + [-93037475] = 'v_11_mainbitrolldoor', + [2143361941] = 'v_11_mainbitrolldoor2', + [-1191215209] = 'v_11_maindrainover', + [-137085273] = 'v_11_manrmsupps', + [254531170] = 'v_11_meatinbetween', + [-1570093010] = 'v_11_meatmain', + [-921230640] = 'v_11_metplate', + [-402804050] = 'v_11_midoffbuckets', + [-56477256] = 'v_11_midrackingsection', + [1863956114] = 'v_11_mincertrolley', + [-2028606052] = 'v_11_prod_wheel_hooks', + [251007878] = 'v_11_prodflrmeat', + [-1122711766] = 'v_11_producemeat', + [-496971233] = 'v_11_rack_signs', + [779624722] = 'v_11_rack_signsblu', + [1375669295] = 'v_11_sheephumperlight', + [1817496410] = 'v_11_slaughtbox', + [1763789051] = 'v_11_stungun', + [564071872] = 'v_11_stungun001', + [2089858855] = 'v_11_wincharm', + [1412155506] = 'v_13_rec_chop_card', + [1371304953] = 'v_13_rec_chop_deta', + [611408871] = 'v_13_rec_chop_exlamp', + [-1215996827] = 'v_13_rec_chop_over', + [-2028883436] = 'v_13_rec_chop_refl', + [-2035847296] = 'v_13_rec_chop_shad', + [1730005798] = 'v_13_rec_cor1_deta', + [1504074188] = 'v_13_rec_cor1_over', + [-1226871722] = 'v_13_rec_cor1_refl', + [-300590450] = 'v_13_rec_door_deta', + [1111826835] = 'v_13_rec_door_over', + [-95027348] = 'v_13_rec_door_refl', + [-1924138198] = 'v_13_rec_exit_deta', + [-991183763] = 'v_13_rec_exit_over', + [11080595] = 'v_13_rec_exit_refl', + [1893877901] = 'v_13_rec_main_card', + [-1262238500] = 'v_13_rec_main_deta', + [-2146857748] = 'v_13_rec_main_lamp', + [1641002849] = 'v_13_rec_main_over', + [-1365079015] = 'v_13_rec_main_refl', + [-1302538923] = 'v_13_rec_main_shre', + [-480517504] = 'v_13_rec_off1_det2', + [-386535944] = 'v_13_rec_off1_deta', + [1702571542] = 'v_13_rec_off1_exlamp', + [-844999375] = 'v_13_rec_off1_over', + [-1470219067] = 'v_13_rec_off1_refl', + [1003750006] = 'v_13_rec_off1_shad', + [-2076197480] = 'v_13_rec_rear_deta', + [44952174] = 'v_13_rec_rear_over', + [-2040402295] = 'v_13_rec_rear_refl', + [-1375163780] = 'v_13_rec_she2_deta', + [1908716755] = 'v_13_rec_she2_over', + [-991070626] = 'v_13_rec_shei_deta', + [1129019053] = 'v_13_rec_shei_over', + [-531467176] = 'v_13_rec_shei_refl', + [-2050752077] = 'v_13_rec_sta1_deta', + [1440241177] = 'v_13_rec_sta1_over', + [1164321932] = 'v_13_rec_sta1_refl', + [-635435070] = 'v_13_rec_sta2_deta', + [-1906576005] = 'v_13_rec_sta2_over', + [1787900739] = 'v_13_rec_sta2_refl', + [-1619230853] = 'v_13_rec_sta2_shad', + [1634746050] = 'v_13_rec_wind_card', + [-1705910049] = 'v_13_rec_wind_deta', + [2120893302] = 'v_13_rec_wind_deta001', + [-1101801906] = 'v_13_rec_wind_exlamp', + [-620592483] = 'v_13_rec_wind_over', + [266750052] = 'v_13_rec_wind_shad', + [-407044356] = 'v_13_shell', + [492598206] = 'v_13_windowshadows1', + [-1358883063] = 'v_13_windowshadows2', + [-999865899] = 'v_13_windowshadows4', + [-847916050] = 'v_13_windowshadows5', + [508667353] = 'v_15__exterior_building', + [93402095] = 'v_15__exterior_frame', + [1166038987] = 'v_15_cars_shell', + [-1889000560] = 'v_15_gar_over_decal', + [-1418283506] = 'v_15_gar_over_normal', + [-1963439895] = 'v_15_garg_delta_ceiling', + [1698778120] = 'v_15_garg_delta_doordown', + [50309508] = 'v_15_garg_delta_doorup', + [1291125826] = 'v_15_garg_delta', + [-828676403] = 'v_15_garg_mesh_carlift', + [-196818787] = 'v_15_garg_mesh_rack01', + [262096269] = 'v_15_garg_mesh_rack2', + [993323452] = 'v_15_garg_mesh_shelf', + [-1268764657] = 'v_15_ofa_over_decal', + [-248726601] = 'v_15_ofa_over_normal', + [-1654267836] = 'v_15_ofa_over_shadow', + [2142096866] = 'v_15_ofb_over_decal', + [802130009] = 'v_15_ofb_over_normal', + [949858571] = 'v_15_offa_delta_glass', + [-1397574122] = 'v_15_offa_delta2', + [-1749406954] = 'v_15_offa_props', + [1320563827] = 'v_15_offb_delta_ceiling', + [-1074174275] = 'v_15_offb_delta_glass', + [1723723422] = 'v_15_offb_delta_props', + [480897073] = 'v_15_offb_delta', + [-1956973268] = 'v_15_offb_glass', + [1053246885] = 'v_15_offb_mesh_frames', + [27594084] = 'v_15_shrm_cables', + [-1012925063] = 'v_15_shrm_delta_ceiling', + [856965582] = 'v_15_shrm_delta_ceiling2', + [631355880] = 'v_15_shrm_delta_photos', + [-410120742] = 'v_15_shrm_delta_props', + [1610353134] = 'v_15_shrm_delta', + [-1899336793] = 'v_15_shrm_frames', + [-1654110746] = 'v_15_shrm_glass1', + [-1406016647] = 'v_15_shrm_glass2', + [1738629305] = 'v_15_shrm_mesh_coffeetable', + [1636667330] = 'v_15_shrm_mesh_desk', + [2027537347] = 'v_15_shrm_mesh_woodboard', + [1041275574] = 'v_15_shrm_neonsign_iref001', + [-1547325868] = 'v_15_shrm_neonsign_prx', + [-1022769224] = 'v_15_shrm_neonsign', + [1574605286] = 'v_15_shrm_promotional', + [-1845634532] = 'v_15_shrm_shelfprops', + [-1944492269] = 'v_15_shrm_window_unbroken', + [2127106692] = 'v_15_srm_over_decal', + [-1040080247] = 'v_15_srm_over_normal', + [1503110007] = 'v_15_srm_over_shadow', + [-463099505] = 'v_15_window_broken', + [-1204911835] = 'v_16_ap_hi_pants1', + [-1437801122] = 'v_16_ap_hi_pants2', + [-1694021933] = 'v_16_ap_hi_pants3', + [-22344159] = 'v_16_ap_hi_pants4', + [-520891725] = 'v_16_ap_hi_pants5', + [-746965056] = 'v_16_ap_hi_pants6', + [296488363] = 'v_16_ap_mid_pants1', + [1064233264] = 'v_16_ap_mid_pants2', + [906876526] = 'v_16_ap_mid_pants3', + [-439175687] = 'v_16_ap_mid_pants4', + [-627531899] = 'v_16_ap_mid_pants5', + [-2144208857] = 'v_16_barglow', + [-1245042072] = 'v_16_barglow001', + [-1639175907] = 'v_16_barglownight', + [592132096] = 'v_16_basketball', + [1753105766] = 'v_16_bathemon', + [1769990479] = 'v_16_bathmirror', + [1495774418] = 'v_16_bathstuff', + [1694551716] = 'v_16_bdr_mesh_bed', + [562784610] = 'v_16_bdrm_mesh_bath', + [554957387] = 'v_16_bdrm_paintings002', + [1635608336] = 'v_16_bed_mesh_blinds', + [-2038405478] = 'v_16_bed_mesh_delta', + [541212613] = 'v_16_bed_mesh_windows', + [-1655739971] = 'v_16_bedrmemon', + [1644861560] = 'v_16_bookend', + [-696587396] = 'v_16_dnr_a', + [176673685] = 'v_16_dnr_c', + [396344497] = 'v_16_dt', + [402779496] = 'v_16_fh_sidebrdlngb_rsref001', + [437506665] = 'v_16_frankcable', + [2012970818] = 'v_16_frankcurtain1', + [-645958848] = 'v_16_frankstuff_noshad', + [1395271370] = 'v_16_frankstuff', + [-548588043] = 'v_16_frankstuff003', + [-111777273] = 'v_16_frankstuff004', + [-401125507] = 'v_16_goldrecords', + [-855487398] = 'v_16_hi_apt_planningrmstf', + [1710746303] = 'v_16_hi_apt_s_books', + [2122176276] = 'v_16_hi_studdorrtrim', + [-1938917263] = 'v_16_hifi', + [795926619] = 'v_16_high_bath_delta', + [-61937122] = 'v_16_high_bath_mesh_mirror', + [1519962981] = 'v_16_high_bath_mesh_mirror001', + [28388079] = 'v_16_high_bath_over_normals', + [-2102769187] = 'v_16_high_bath_over_shadow', + [1282505899] = 'v_16_high_bed_mesh_lights', + [1848187037] = 'v_16_high_bed_mesh_unit', + [-1810487791] = 'v_16_high_bed_over_dirt', + [-1825762094] = 'v_16_high_bed_over_normal', + [-1637177333] = 'v_16_high_bed_over_shadow', + [-1725072230] = 'v_16_high_hal_mesh_plant', + [-2087534553] = 'v_16_high_hall_mesh_delta', + [-206202603] = 'v_16_high_hall_over_dirt', + [1501428630] = 'v_16_high_hall_over_normal', + [-998893158] = 'v_16_high_hall_over_shadow', + [1939050630] = 'v_16_high_kit_mesh_unit', + [-804437949] = 'v_16_high_ktn_mesh_delta', + [-703501524] = 'v_16_high_ktn_mesh_fire', + [1205639727] = 'v_16_high_ktn_mesh_windows', + [-328622740] = 'v_16_high_ktn_over_decal', + [764891703] = 'v_16_high_ktn_over_dirt', + [-415048780] = 'v_16_high_ktn_over_shadow', + [32267209] = 'v_16_high_ktn_over_shadows', + [1659989247] = 'v_16_high_lng_armchairs', + [-259264457] = 'v_16_high_lng_details', + [-1672731594] = 'v_16_high_lng_mesh_delta', + [-1993946058] = 'v_16_high_lng_mesh_plant', + [-1671259133] = 'v_16_high_lng_mesh_shelf', + [-1561464270] = 'v_16_high_lng_mesh_tvunit', + [-338992837] = 'v_16_high_lng_over_dirt', + [-1565038939] = 'v_16_high_lng_over_shadow', + [737627589] = 'v_16_high_lng_over_shadow2', + [-1875612265] = 'v_16_high_plan_mesh_delta', + [-1552478834] = 'v_16_high_plan_over_normal', + [246334229] = 'v_16_high_pln_m_map', + [-1915596431] = 'v_16_high_pln_mesh_lights', + [2109668307] = 'v_16_high_pln_over_shadow', + [124185503] = 'v_16_high_stp_mesh_unit', + [1686839869] = 'v_16_high_ward_over_decal', + [-684611335] = 'v_16_high_ward_over_normal', + [-1085127369] = 'v_16_high_ward_over_shadow', + [1505165660] = 'v_16_highstudwalldirt', + [-1657151895] = 'v_16_hiigh_ktn_over_normal', + [1580467277] = 'v_16_knt_c', + [-1792937432] = 'v_16_knt_f', + [-1925494464] = 'v_16_knt_mesh_stuff', + [-71964169] = 'v_16_lgb_mesh_lngprop', + [-372623874] = 'v_16_lgb_rock001', + [-1085847436] = 'v_16_livstuff003', + [965848181] = 'v_16_livstuff00k2', + [-1736550082] = 'v_16_lnb_mesh_coffee', + [-1956178182] = 'v_16_lnb_mesh_tablecenter001', + [-303021494] = 'v_16_lng_mesh_blinds', + [1657526695] = 'v_16_lng_mesh_delta', + [1436338573] = 'v_16_lng_mesh_stairglass', + [2007313326] = 'v_16_lng_mesh_stairglassb', + [1541620211] = 'v_16_lng_mesh_windows', + [-964847400] = 'v_16_lng_over_normal', + [868153000] = 'v_16_lngas_mesh_delta003', + [1182412177] = 'v_16_lo_shower', + [71215499] = 'v_16_low_bath_mesh_window', + [473108619] = 'v_16_low_bath_over_decal', + [-227255578] = 'v_16_low_bed_over_decal', + [805567639] = 'v_16_low_bed_over_normal', + [1431259987] = 'v_16_low_bed_over_shadow', + [480572754] = 'v_16_low_ktn_mesh_sideboard', + [-1803582127] = 'v_16_low_ktn_mesh_units', + [-699070147] = 'v_16_low_ktn_over_decal', + [-1999869780] = 'v_16_low_lng_mesh_armchair', + [-1498699789] = 'v_16_low_lng_mesh_coffeetable', + [-1414703914] = 'v_16_low_lng_mesh_fireplace', + [1767073950] = 'v_16_low_lng_mesh_plant', + [203302981] = 'v_16_low_lng_mesh_rugs', + [-862607347] = 'v_16_low_lng_mesh_sidetable', + [1573106874] = 'v_16_low_lng_mesh_sofa1', + [1883953608] = 'v_16_low_lng_mesh_sofa2', + [797777955] = 'v_16_low_lng_mesh_tv', + [1299566561] = 'v_16_low_lng_over_decal', + [-89008152] = 'v_16_low_lng_over_normal', + [-1148626287] = 'v_16_low_lng_over_shadow', + [1669110046] = 'v_16_low_mesh_lng_shelf', + [185958074] = 'v_16_mags', + [977523419] = 'v_16_mesh_delta', + [-1928851610] = 'v_16_mesh_shell', + [-1641773035] = 'v_16_mid_bath_mesh_delta', + [-686357611] = 'v_16_mid_bath_mesh_mirror', + [-1081334902] = 'v_16_mid_bed_bed', + [-41870171] = 'v_16_mid_bed_delta', + [-1933699208] = 'v_16_mid_bed_over_decal', + [423058140] = 'v_16_mid_hall_mesh_delta', + [-596208123] = 'v_16_mid_shell', + [-1562340743] = 'v_16_midapartdeta', + [1029035082] = 'v_16_midapt_cabinet', + [-640008227] = 'v_16_midapt_curts', + [-794678716] = 'v_16_midapt_deca', + [-319314280] = 'v_16_molding01', + [-757685759] = 'v_16_mp_sofa', + [1861434686] = 'v_16_mpmidapart00', + [2021740634] = 'v_16_mpmidapart01', + [-1413634140] = 'v_16_mpmidapart018', + [-1477562573] = 'v_16_mpmidapart03', + [627911247] = 'v_16_mpmidapart07', + [1121969460] = 'v_16_mpmidapart09', + [-1528124860] = 'v_16_mpmidapart13', + [2098322103] = 'v_16_mpmidapart17', + [162412429] = 'v_16_rpt_mesh_pictures', + [1218832826] = 'v_16_rpt_mesh_pictures003', + [-920153100] = 'v_16_shadowobject69', + [1747663014] = 'v_16_shadsy', + [109151345] = 'v_16_skateboard', + [473873172] = 'v_16_strsdet01', + [-1635956176] = 'v_16_studapart00', + [1933754349] = 'v_16_studframe', + [-1348140380] = 'v_16_studio_loshell', + [1500871631] = 'v_16_studio_pants1', + [-415131799] = 'v_16_studio_pants2', + [994590581] = 'v_16_studio_pants3', + [-1328852098] = 'v_16_studio_skirt', + [-1121708665] = 'v_16_studio_slip1', + [419629772] = 'v_16_studposters', + [1819360788] = 'v_16_studunits', + [1145706899] = 'v_16_study_rug', + [1236742542] = 'v_16_study_sofa', + [905287380] = 'v_16_treeglow', + [-1207622214] = 'v_16_treeglow001', + [-1462354034] = 'v_16_v_1_studapart02', + [-613043635] = 'v_16_v_sofa', + [-1861375461] = 'v_16_vint1_multilow02', + [-1845709974] = 'v_16_wardrobe', + [776084867] = 'v_19_bar_speccy', + [-2102113266] = 'v_19_bubbles', + [-338399248] = 'v_19_changeshadsmain', + [-172320734] = 'v_19_corridor_bits', + [815748996] = 'v_19_curts', + [370752112] = 'v_19_dirtframes_ent', + [1157232371] = 'v_19_dtrpsbitsmore', + [-1763494267] = 'v_19_ducts', + [67728679] = 'v_19_fishy_coral', + [-2064947552] = 'v_19_fishy_coral2', + [-881679119] = 'v_19_jakemenneon', + [-2108686054] = 'v_19_jetceilights', + [1755459821] = 'v_19_jetchangebits', + [1738241483] = 'v_19_jetchangerail', + [1023206247] = 'v_19_jetchnceistuff', + [56468989] = 'v_19_jetchngwrkcrd', + [462094182] = 'v_19_jetdado', + [-1407643777] = 'v_19_jetdncflrlights', + [-13703456] = 'v_19_jetstripceilpan', + [-1681510881] = 'v_19_jetstripceilpan2', + [-1890809400] = 'v_19_jetstrpstge', + [-1655216281] = 'v_19_maindressingstuff', + [1326367471] = 'v_19_office_trim', + [690135591] = 'v_19_payboothtrim', + [-1880181855] = 'v_19_premium2', + [-1897452100] = 'v_19_priv_bits', + [279777689] = 'v_19_priv_shads', + [-203731504] = 'v_19_stp3fistank', + [-181061911] = 'v_19_stplightspriv', + [1142677988] = 'v_19_stpprvrmpics', + [-530412110] = 'v_19_stri3litstps', + [1796505475] = 'v_19_strip_off_overs', + [781409003] = 'v_19_strip_stickers', + [-1140460783] = 'v_19_strip3pole', + [-101568154] = 'v_19_stripbootbits', + [2051732798] = 'v_19_stripbooths', + [-1374940188] = 'v_19_stripchangemirror', + [1496392170] = 'v_19_stripduct', + [-753381166] = 'v_19_stripduct2', + [-17721616] = 'v_19_strp_offbits', + [-887543880] = 'v_19_strp_rig', + [1444970912] = 'v_19_strp3mirrors', + [1935720206] = 'v_19_strpbar', + [-327460995] = 'v_19_strpbarrier', + [-1301822742] = 'v_19_strpchngover1', + [1799992495] = 'v_19_strpchngover2', + [-100902308] = 'v_19_strpdjbarr', + [-2138963736] = 'v_19_strpdrfrm1', + [-1844403195] = 'v_19_strpdrfrm2', + [1483845832] = 'v_19_strpdrfrm3', + [1843649452] = 'v_19_strpdrfrm4', + [933097249] = 'v_19_strpdrfrm5', + [1230574231] = 'v_19_strpdrfrm6', + [1438323505] = 'v_19_strpentlites', + [458056322] = 'v_19_strpfrntpl', + [-1156043042] = 'v_19_strpmncled', + [1234437091] = 'v_19_strpprivlits', + [-1137133608] = 'v_19_strprvrmgdbits', + [-373068607] = 'v_19_strpshell', + [1930101236] = 'v_19_strpshellref', + [-1746529895] = 'v_19_strpstglt', + [-320646842] = 'v_19_strpstgtrm', + [1458015340] = 'v_19_strpstrplit', + [302914944] = 'v_19_trev_stuff', + [-827514192] = 'v_19_trev_stuff1', + [952274871] = 'v_19_vabbarcables', + [1043570931] = 'v_19_vanbckofftrim', + [1605871746] = 'v_19_vanchngfacings', + [-604879834] = 'v_19_vanchngfcngfrst', + [1899078779] = 'v_19_vangroundover', + [-1705603715] = 'v_19_vanilla_sign_neon', + [200278506] = 'v_19_vanillasigneon', + [825282534] = 'v_19_vanillasigneon2', + [567582665] = 'v_19_vanlobsigns', + [77529160] = 'v_19_vanmenuplain', + [851007821] = 'v_19_vannuisigns', + [357208908] = 'v_19_vanshadmainrm', + [880393118] = 'v_19_vanstageshads', + [-529553211] = 'v_19_vanuniwllart', + [-1056047558] = 'v_19_vanunofflights', + [-627030076] = 'v_19_weebitstuff', + [140900193] = 'v_2_ala_mesh_delta', + [-1085509635] = 'v_2_alb_mesh_delta', + [-1124145780] = 'v_2_atl_mirror_mesh2', + [1000881750] = 'v_2_atla_over_decal', + [-646714696] = 'v_2_atla_over_normal', + [521470300] = 'v_2_atla_over_shadow', + [-1279459204] = 'v_2_atlb_over_decal', + [-551982738] = 'v_2_atlb_over_normal', + [1743516980] = 'v_2_atlb_over_shadow', + [-306030378] = 'v_2_ats_mirror_mesh', + [744323826] = 'v_2_ats_over_decal', + [529623221] = 'v_2_ats_over_normals', + [1936337860] = 'v_2_ats_over_shadow', + [46317015] = 'v_2_atsm_mesh_bottles', + [-2093891663] = 'v_2_atsm_mesh_delta', + [1610934588] = 'v_2_atsm_mesh_frames', + [-665565030] = 'v_2_atsm_mesh_reflect', + [622634633] = 'v_2_atsm_mesh_units', + [178556803] = 'v_2_bckstrs_pipes', + [1063132354] = 'v_2_bckstrs_railing', + [2095966182] = 'v_2_bds_mesh_bodydrawers', + [-1074980705] = 'v_2_bds_mesh_ceiling', + [975372137] = 'v_2_bds_mesh_frame', + [-709060764] = 'v_2_bds_mesh_lift', + [-1934217292] = 'v_2_bds_mesh_skirting', + [1430603214] = 'v_2_bds_mirror_mesh', + [1239275842] = 'v_2_bds_over_decal', + [-1548998472] = 'v_2_bds_over_normal', + [-780120463] = 'v_2_bds_over_shadow', + [1211383689] = 'v_2_biosign', + [-1256201790] = 'v_2_bsnt_shell', + [-185759913] = 'v_2_cdb_mesh_06', + [-742378842] = 'v_2_cdb_mesh_delta', + [-774703634] = 'v_2_cdb_mesh_door', + [-822034429] = 'v_2_cdb_mesh_smalldoor', + [157011038] = 'v_2_cdb_over_normal', + [-1778356134] = 'v_2_cdbt_mesh_liftlights', + [-75886800] = 'v_2_cdt_mesh_05', + [529323861] = 'v_2_cdt_mesh_07', + [1651012524] = 'v_2_cdt_mesh_delta', + [1592452521] = 'v_2_cdt_mesh_smalldoor', + [-599048534] = 'v_2_cdt_over_normal', + [-1684154620] = 'v_2_cor1_mesh_delta1', + [-1987300639] = 'v_2_cor1_mesh_delta2', + [1390608156] = 'v_2_glow_reflect', + [1556386640] = 'v_2_glow_reflect001', + [1402248558] = 'v_2_lighttrigger002', + [658288232] = 'v_2_lighttrigger1', + [2001442678] = 'v_2_mst_mesh_04', + [-1611110193] = 'v_2_mst_mesh_06', + [1007821060] = 'v_2_mst_mesh_08', + [1572609243] = 'v_2_mst_mesh_banister', + [366979122] = 'v_2_mst_mesh_delta', + [2036891287] = 'v_2_mst_mesh_exterior', + [1297537153] = 'v_2_mst_mesh_wire', + [-1697249867] = 'v_2_mst_over_dirt', + [-31073789] = 'v_2_mst_over_normal', + [127890401] = 'v_2_rc1_over_normal', + [1346419557] = 'v_2_rc2_over_normal', + [-466390241] = 'v_2_rct_mesh_04', + [2131405007] = 'v_2_rct_mesh_05', + [-703340310] = 'v_2_reccorr2stuff', + [-490052033] = 'v_2_rep_over_normal', + [810180977] = 'v_2_room2_reflect', + [1521682972] = 'v_2_shadowmap1', + [1792846447] = 'v_2_shadowmap2', + [-1121792262] = 'v_2_shadowmap3', + [1536082536] = 'v_2_strs_shell', + [-1000919610] = 'v_2_tomd_mesh_ceiling', + [-1856339267] = 'v_2_tomd_mesh_delta', + [953583686] = 'v_2_tomd_mesh_desk', + [-1962795178] = 'v_2_tomd_mesh_frames', + [-1917067297] = 'v_2_top_xrays', + [-1091091869] = 'v_2_tort_mesh_delta', + [1148800279] = 'v_2_tort_mesh_files', + [-1651496338] = 'v_2_tort_mesh_frames', + [-1668246780] = 'v_2_tort_mesh_props', + [703977413] = 'v_2_tplt_mesh_ceiling', + [1036437107] = 'v_2_tplt_mesh_delta', + [-1389778883] = 'v_2_tplt_mesh_frames', + [-1404669114] = 'v_2_tplt_mesh_kitchen', + [-920793138] = 'v_2_tpo_mesh_22', + [-1752011580] = 'v_2_tpo_mesh_28', + [2082748376] = 'v_2_tpo_mesh_41', + [-1386571196] = 'v_2_tpo_mesh_42', + [-300940315] = 'v_2_tpo_over_decal', + [1995840442] = 'v_2_tpo_over_normal', + [-361238537] = 'v_2_tpoff_shell', + [-563475542] = 'v_20_arm_dec', + [-1877045865] = 'v_20_arm_det01', + [1098896962] = 'v_20_armoury_gate', + [42114039] = 'v_20_br_det', + [2124444362] = 'v_20_copfile01', + [-1410478748] = 'v_20_copfile02', + [-913439184] = 'v_20_evidence01', + [1694435465] = 'v_20_frontdesk', + [466761642] = 'v_20_lspd_sign', + [468097357] = 'v_20_notbrd002', + [-2104596837] = 'v_20_notbrd003', + [2090228395] = 'v_20_notbrd004', + [1848622558] = 'v_20_notbrd005', + [1474859344] = 'v_20_notbrd006', + [311390209] = 'v_20_notbrd01', + [1989340262] = 'v_20_ornaeagle', + [1206211935] = 'v_20_ph_arm_cab01', + [-1822326102] = 'v_20_ph_cells_dec', + [1028299119] = 'v_20_ph_flag01', + [1331379600] = 'v_20_ph_flag02', + [412405764] = 'v_20_ph_flag03', + [-1934365233] = 'v_20_ph_in_outbrd', + [1555226669] = 'v_20_ph_in_outbrd002', + [876583346] = 'v_20_ph_lobby_desk', + [999250531] = 'v_20_ph_lobby_det01', + [672544373] = 'v_20_ph_lobby_lights', + [405855372] = 'v_20_ph_lobby_planter003', + [1850199601] = 'v_20_ph_lobby_planter01', + [1560357796] = 'v_20_ph_lobby_planter02', + [-1652030500] = 'v_20_ph_lockers_det01', + [-1256685581] = 'v_20_ph_musdesk', + [-916246589] = 'v_20_ph_muster_det01', + [-186146868] = 'v_20_ph_office_det01', + [128828748] = 'v_20_ph_office_det02', + [104176290] = 'v_20_ph_office_flag01', + [-739854491] = 'v_20_ph_signs01', + [2111410153] = 'v_20_ph_stair_dec', + [374120856] = 'v_20_ph_stair_dec001', + [-1398672861] = 'v_20_ph_stairdets', + [412821588] = 'v_20_ph_stairdets001', + [139659155] = 'v_20_ph_stairs03', + [-1230144054] = 'v_20_ph_stairwell_det01', + [-997713537] = 'v_20_ph_stairwell_det02', + [-1441797169] = 'v_20_phcorrdirt', + [-1261016667] = 'v_20_phlobbylightsem', + [1890838064] = 'v_20_phlobdirt', + [-321655962] = 'v_20_phsm02', + [-447334415] = 'v_20_policehubshell', + [79051028] = 'v_20_rubbermat', + [360511623] = 'v_20_sm01', + [1781977939] = 'v_20_stairwell_det01', + [859980781] = 'v_20_wall_light003', + [-1990168528] = 'v_20_wall_light004', + [1609178436] = 'v_20_wall_light005', + [-1408780930] = 'v_20_wall_light006', + [2051396091] = 'v_20_wall_light007', + [-1203089917] = 'v_20_wall_light008', + [1599995977] = 'v_20_wall_light01', + [-1375572224] = 'v_20_wep_lo', + [2098308325] = 'v_21_dummybox', + [-2130895084] = 'v_22_ao_room', + [-1432249240] = 'v_22_bullets', + [1755624762] = 'v_22_cables1', + [978147468] = 'v_22_cables2', + [-1343448250] = 'v_22_g2_shell', + [2103117968] = 'v_22_g2_vents', + [1874496076] = 'v_22_glass01', + [-1685528088] = 'v_22_glass02', + [-783790750] = 'v_22_glass03', + [2129668279] = 'v_22_glass04', + [884053051] = 'v_22_glass05', + [1682142046] = 'v_22_glass06', + [-1713709428] = 'v_22_glass07', + [1201191433] = 'v_22_glass08', + [569503416] = 'v_22_glass09', + [-79818067] = 'v_22_glass10', + [-244056295] = 'v_22_glass11', + [-542352502] = 'v_22_glass12', + [-2112322594] = 'v_22_gunsneon', + [-1882883884] = 'v_22_handguns', + [601807338] = 'v_22_merch01', + [1377272428] = 'v_22_merchglass003', + [1139861023] = 'v_22_merchglass004', + [1580604025] = 'v_22_merchglass005', + [-1827077066] = 'v_22_merchglass009', + [1285617263] = 'v_22_merchglass010', + [525573077] = 'v_22_merchglass011', + [1135617594] = 'v_22_merchglass1', + [-2001457087] = 'v_22_merchglass2', + [1730407713] = 'v_22_merchglass3', + [521264382] = 'v_22_merchglass4', + [212416557] = 'v_22_merchglass5', + [845972403] = 'v_22_merchglass6', + [808353591] = 'v_22_merchglass7', + [-1326153535] = 'v_22_merchglass8', + [-2071430002] = 'v_22_overlays', + [1215025646] = 'v_22_reflectproxy', + [368785959] = 'v_22_shadowmap', + [1073959231] = 'v_22_shelves', + [1296095006] = 'v_22_shopdirt', + [-1869488274] = 'v_22_shopposters', + [890769226] = 'v_22_shopshadow', + [457682390] = 'v_22_shopskirt', + [818809605] = 'v_22_walledges', + [-203737641] = 'v_22_wallguns', + [1105658306] = 'v_22_wallhooks', + [-2098905626] = 'v_23_ao_front', + [-2124634454] = 'v_23_ao_office', + [-1862572832] = 'v_23_ao', + [1724540583] = 'v_23_blends', + [2050081388] = 'v_23_detail', + [-75354233] = 'v_23_doors', + [-737130623] = 'v_23_emissives_front', + [1619314] = 'v_23_emissives', + [407933146] = 'v_23_frames', + [1132467105] = 'v_23_front_blends', + [1866258050] = 'v_23_front_detail', + [-143694130] = 'v_23_front_reflect', + [363964476] = 'v_23_j2_dc', + [1244863018] = 'v_23_lamps_fr', + [1512262106] = 'v_23_lamps', + [1118204532] = 'v_23_lamps2', + [-1565586770] = 'v_23_lod', + [926996797] = 'v_23_mirrorfloor', + [1375273861] = 'v_23_office_detail', + [1172635501] = 'v_23_pointsale01', + [565674966] = 'v_23_reflect_ext', + [-662678390] = 'v_23_reflect', + [655913209] = 'v_23_shell', + [-991820653] = 'v_24_bdr_mesh_bed_stuff', + [-1453011168] = 'v_24_bdr_mesh_bed', + [-1990202314] = 'v_24_bdr_mesh_delta', + [1214027725] = 'v_24_bdr_mesh_lamp', + [-1987020847] = 'v_24_bdr_mesh_lstshirt', + [1309527245] = 'v_24_bdr_mesh_windows_closed', + [211714468] = 'v_24_bdr_mesh_windows_open', + [804934733] = 'v_24_bdr_over_decal', + [685482669] = 'v_24_bdr_over_dirt', + [700872958] = 'v_24_bdr_over_emmisve', + [1605603164] = 'v_24_bdr_over_normal', + [-807542223] = 'v_24_bdr_over_shadow_boxes', + [510349115] = 'v_24_bdr_over_shadow_frank', + [-1042523960] = 'v_24_bdr_over_shadow', + [389359159] = 'v_24_bdrm_mesh_arta', + [710359790] = 'v_24_bdrm_mesh_bath', + [1891340530] = 'v_24_bdrm_mesh_bathprops', + [1664661158] = 'v_24_bdrm_mesh_bookcase', + [-1385073382] = 'v_24_bdrm_mesh_bookcasestuff', + [-2079067810] = 'v_24_bdrm_mesh_boxes', + [1773202095] = 'v_24_bdrm_mesh_closetdoors', + [1442523633] = 'v_24_bdrm_mesh_dresser', + [1394045836] = 'v_24_bdrm_mesh_mags', + [2135986081] = 'v_24_bdrm_mesh_mirror', + [416521724] = 'v_24_bdrm_mesh_picframes', + [1132898368] = 'v_24_bdrm_mesh_rugs', + [414680819] = 'v_24_bdrm_mesh_wallshirts', + [1245901170] = 'v_24_bedroomshell', + [1036514555] = 'v_24_details1', + [-851635225] = 'v_24_details2', + [734684986] = 'v_24_hal_mesh_delta', + [1444561315] = 'v_24_hal_mesh_props', + [-2107663832] = 'v_24_hal_over_decal', + [371116454] = 'v_24_hal_over_normal', + [393572465] = 'v_24_hal_over_shadow', + [601619015] = 'v_24_hangingclothes', + [-1879297800] = 'v_24_hangingclothes1', + [-1550318509] = 'v_24_knt_mesh_blinds', + [784152068] = 'v_24_knt_mesh_boxes', + [-2010287522] = 'v_24_knt_mesh_center', + [1451083444] = 'v_24_knt_mesh_delta', + [1033830821] = 'v_24_knt_mesh_flyer', + [-88857806] = 'v_24_knt_mesh_mags', + [-24273391] = 'v_24_knt_mesh_stuff', + [-822216982] = 'v_24_knt_mesh_units', + [-1993195884] = 'v_24_knt_mesh_windowsa', + [1533928200] = 'v_24_knt_mesh_windowsb', + [1293089609] = 'v_24_knt_over_decal', + [698665844] = 'v_24_knt_over_normal', + [26233750] = 'v_24_knt_over_shadow_boxes', + [1226041042] = 'v_24_knt_over_shadow', + [-1486546317] = 'v_24_knt_over_shelf', + [-582701829] = 'v_24_ktn_over_dirt', + [-379551260] = 'v_24_lga_mesh_delta', + [-1175478477] = 'v_24_lga_over_dirt', + [-1199983396] = 'v_24_lga_over_normal', + [2007651917] = 'v_24_lga_over_shadow', + [-939409227] = 'v_24_lgb_mesh_bottomdelta', + [531302143] = 'v_24_lgb_mesh_fire', + [108228295] = 'v_24_lgb_mesh_lngprop', + [58568078] = 'v_24_lgb_mesh_sideboard_em', + [-490529352] = 'v_24_lgb_mesh_sideboard', + [-2136166337] = 'v_24_lgb_mesh_sideprops', + [67581076] = 'v_24_lgb_mesh_sofa', + [-1258076755] = 'v_24_lgb_mesh_topdelta', + [2103993255] = 'v_24_lgb_over_dirt', + [1535242412] = 'v_24_llga_mesh_coffeetable', + [1624607763] = 'v_24_llga_mesh_props', + [-1221118907] = 'v_24_lna_mesh_windows', + [-248880225] = 'v_24_lnb_coffeestuff', + [-581669317] = 'v_24_lnb_mesh_artwork', + [1787746539] = 'v_24_lnb_mesh_books', + [-1251571207] = 'v_24_lnb_mesh_cddecks', + [585653348] = 'v_24_lnb_mesh_coffee', + [-1098491414] = 'v_24_lnb_mesh_djdecks', + [-1932905251] = 'v_24_lnb_mesh_dvds', + [-976235947] = 'v_24_lnb_mesh_fireglass', + [1896912733] = 'v_24_lnb_mesh_goldrecords', + [-147708120] = 'v_24_lnb_mesh_lightceiling', + [-562814293] = 'v_24_lnb_mesh_records', + [1322047205] = 'v_24_lnb_mesh_sideboard', + [-1895450375] = 'v_24_lnb_mesh_smallvase', + [-159116438] = 'v_24_lnb_mesh_tablecenter', + [1355205957] = 'v_24_lnb_mesh_windows', + [28403032] = 'v_24_lnb_over_disk_shadow', + [805086757] = 'v_24_lnb_over_shadow_boxes', + [-1965865732] = 'v_24_lnb_over_shadow', + [-389837123] = 'v_24_lng_over_decal', + [-825798087] = 'v_24_lng_over_normal', + [-383689547] = 'v_24_lngb_mesh_boxes', + [-859107878] = 'v_24_lngb_mesh_chopbed', + [-1527398160] = 'v_24_lngb_mesh_mags', + [239452158] = 'v_24_postertubes', + [-373355783] = 'v_24_rct_lamptablestuff', + [234859136] = 'v_24_rct_mesh_boxes', + [1867937132] = 'v_24_rct_mesh_lamptable', + [-113662910] = 'v_24_rct_over_decal', + [-973548806] = 'v_24_rec_mesh_palnt', + [598400030] = 'v_24_rpt_mesh_delta', + [1139773131] = 'v_24_rpt_mesh_pictures', + [-208547167] = 'v_24_rpt_over_normal', + [1035232215] = 'v_24_rpt_over_shadow_boxes', + [-707583489] = 'v_24_rpt_over_shadow', + [-1020520447] = 'v_24_shell', + [-650425777] = 'v_24_shlfstudy', + [-992262514] = 'v_24_shlfstudybooks', + [1909119672] = 'v_24_shlfstudypics', + [1967886586] = 'v_24_sta_mesh_delta', + [1935912868] = 'v_24_sta_mesh_glass', + [172493042] = 'v_24_sta_mesh_plant', + [-796985819] = 'v_24_sta_mesh_props', + [-1040640701] = 'v_24_sta_over_normal', + [721141620] = 'v_24_sta_over_shadow', + [-1049793093] = 'v_24_sta_painting', + [1327282592] = 'v_24_storageboxs', + [1781419470] = 'v_24_tablebooks', + [-1832124717] = 'v_24_wdr_mesh_delta', + [726462463] = 'v_24_wdr_mesh_rugs', + [212348610] = 'v_24_wdr_mesh_windows', + [1239025526] = 'v_24_wdr_over_decal', + [511688836] = 'v_24_wdr_over_dirt', + [-1963942288] = 'v_24_wdr_over_normal', + [-1155571204] = 'v_24_wrd_mesh_boxes', + [846465355] = 'v_24_wrd_mesh_tux', + [-102685204] = 'v_24_wrd_mesh_wardrobe', + [1564163252] = 'v_25_class', + [18170909] = 'v_25_classlights', + [17772065] = 'v_25_controldesk', + [1380337534] = 'v_25_controlequip', + [-209410441] = 'v_25_controlsm', + [1739383993] = 'v_25_drframes', + [-1037454721] = 'v_25_elevator01', + [-1843146108] = 'v_25_elevstuff', + [-54985807] = 'v_25_elvsigns', + [2135871526] = 'v_25_hallstuff', + [-492507806] = 'v_25_levnumbers', + [1606277980] = 'v_25_lights', + [269655474] = 'v_25_lowershad', + [-1656796257] = 'v_25_obsvclutter', + [588246212] = 'v_25_obsvdesks', + [-327988289] = 'v_25_obsvlights', + [1468041919] = 'v_25_obsvsm', + [511332709] = 'v_25_reflect', + [-1001224229] = 'v_25_security', + [202947026] = 'v_25_servdesk', + [1593467078] = 'v_25_servers', + [-1300361013] = 'v_25_servershad', + [1889975915] = 'v_25_servleds', + [-465343651] = 'v_25_servlights', + [258494309] = 'v_25_stair01', + [1637479371] = 'v_25_stair02', + [1908708384] = 'v_25_stair03', + [1152530940] = 'v_25_stair04', + [1448729931] = 'v_25_stair05', + [-1323265301] = 'v_25_stair06', + [9501481] = 'v_25_stairlights', + [-482132128] = 'v_25_stairshd', + [2070880347] = 'v_25_towelod', + [546033372] = 'v_25_towerdetail', + [-796342916] = 'v_25_towerglass', + [-1337636393] = 'v_25_towershell', + [-118671513] = 'v_25_upperhallsm', + [-506765268] = 'v_26_bed', + [-1202347598] = 'v_26_bedtidy', + [-2117952008] = 'v_26_bedtrash', + [1870293098] = 'v_26_beerbox', + [1840741883] = 'v_26_beerboxtidy', + [1037932615] = 'v_26_cablestidy', + [-1812827506] = 'v_26_cablesuntidy', + [-1194799815] = 'v_26_cablesuntidy001', + [-1981025060] = 'v_26_calcabletidy', + [1709725248] = 'v_26_calcableuntidy', + [-487873922] = 'v_26_calcableuntidy001', + [1540570583] = 'v_26_cophelmet1', + [-1327241225] = 'v_26_cophelmet2', + [-1567241381] = 'v_26_cophelmet3', + [758584474] = 'v_26_couch', + [11454104] = 'v_26_couchtidy', + [-1075847792] = 'v_26_couchtrash', + [-854193425] = 'v_26_cupboards', + [1899775714] = 'v_26_cupboards001', + [-297201651] = 'v_26_cupboardstidy', + [-835344549] = 'v_26_cupboardtidy', + [-1635614244] = 'v_26_cupboardtrash', + [8573371] = 'v_26_cupbrdstrash', + [-913488004] = 'v_26_ducttape', + [-924198322] = 'v_26_ducttapetidy', + [-2076086656] = 'v_26_ducttapetrash', + [-668465980] = 'v_26_glass005', + [-1629023681] = 'v_26_glass006', + [-1258930595] = 'v_26_glass007', + [-1145254934] = 'v_26_glass008', + [-2000907963] = 'v_26_glass1', + [-1699269318] = 'v_26_glass2', + [1699727980] = 'v_26_glass3', + [2004446911] = 'v_26_glass4', + [-593345329] = 'v_26_glasstidy004', + [-1040083789] = 'v_26_glasstidy1', + [1986854279] = 'v_26_glasstidy2', + [-1846692728] = 'v_26_glasstidy4', + [-1458842090] = 'v_26_halloverlay', + [2013947472] = 'v_26_halloverlaytidy', + [1934612623] = 'v_26_hallovertrash', + [372022075] = 'v_26_kitchen', + [1521016027] = 'v_26_kitchendirt', + [-493485163] = 'v_26_kitchendirttrash', + [-318319411] = 'v_26_kitchentidy', + [546751371] = 'v_26_kitchentrash', + [1769101064] = 'v_26_lamp002', + [-966408441] = 'v_26_lamp1', + [-2133554814] = 'v_26_lamp1trash', + [1472529137] = 'v_26_m_blanket1', + [-1912115339] = 'v_26_m_blanket2', + [-719618660] = 'v_26_m_blanket3', + [-839843582] = 'v_26_michaelsuit1', + [-20716889] = 'v_26_michaelsuit2', + [-904038065] = 'v_26_michaelsuit3', + [47125023] = 'v_26_mirror', + [-1694780931] = 'v_26_mirror002', + [560616265] = 'v_26_mirrortrash', + [-1576934409] = 'v_26_overlays', + [542297926] = 'v_26_overlaystidy', + [-1666506794] = 'v_26_overlaytrash', + [867390936] = 'v_26_reflectdirty', + [1026631985] = 'v_26_reflecttidy', + [1690922153] = 'v_26_reflecttrashed', + [-1104612259] = 'v_26_shadowmap', + [1088018973] = 'v_26_shadowtidy', + [584651306] = 'v_26_shadowtrash', + [-1580452763] = 'v_26_toilet', + [-329833299] = 'v_26_toiletlight', + [-193476971] = 'v_26_toiletlighttidy', + [1288996541] = 'v_26_toiletlighttrash', + [-785913333] = 'v_26_toilettdirt', + [-1817935674] = 'v_26_toilettdirttrash', + [-1439437256] = 'v_26_toilettidy', + [-1783090544] = 'v_26_toilettrash', + [-739040335] = 'v_26_trailerint', + [1750601708] = 'v_26_trailerinttidy', + [808205375] = 'v_26_trailertrashint', + [1004991743] = 'v_26_walllampson', + [1332341881] = 'v_26_walllampson001', + [-1798927883] = 'v_26_walllamptrashon', + [-1542956570] = 'v_26_wardrobe', + [-1700517986] = 'v_26_wardrobetidy', + [783579691] = 'v_26_wardrobetrash', + [-1318376588] = 'v_26_windframes', + [1489342121] = 'v_26_windframestrash', + [-1972733118] = 'v_26_windowday', + [691348495] = 'v_26_windowday001', + [756507526] = 'v_26_windowdaytrash', + [1605750980] = 'v_26_winframetidy', + [-1801952018] = 'v_27_boxpile1', + [-1261922187] = 'v_27_epsilonism_ao', + [1909763355] = 'v_27_epsilonism_dt', + [1411318270] = 'v_27_epsilonism_extras', + [-1422648916] = 'v_27_epsilonism_ol', + [1543636467] = 'v_27_epsilonism_reflect', + [481153748] = 'v_27_epsilonism_shell', + [1994422648] = 'v_27_epsilonism_stuff', + [332890911] = 'v_28_alrm_case002', + [639182754] = 'v_28_alrm_case003', + [2119555098] = 'v_28_alrm_case004', + [-1868268361] = 'v_28_alrm_case005', + [1564022241] = 'v_28_alrm_case006', + [-1235040205] = 'v_28_alrm_case007', + [-944936248] = 'v_28_alrm_case008', + [-1830878932] = 'v_28_alrm_case009', + [536123101] = 'v_28_alrm_case010', + [1494681889] = 'v_28_alrm_case011', + [1800711580] = 'v_28_alrm_case012', + [-1228520310] = 'v_28_alrm_case013', + [-930322410] = 'v_28_alrm_case014', + [-1578362154] = 'v_28_alrm_case015', + [-1272004773] = 'v_28_alrm_case016', + [-504288583] = 'v_28_an1_deca', + [-1302875366] = 'v_28_an1_deta', + [-91625412] = 'v_28_an1_dirt', + [-2131285395] = 'v_28_an1_over', + [665460296] = 'v_28_an1_refl', + [-889348411] = 'v_28_an1_shut', + [-425807828] = 'v_28_an2_deca', + [1783640636] = 'v_28_an2_deta', + [362267165] = 'v_28_an2_dirt', + [1297881980] = 'v_28_an2_refl', + [69949604] = 'v_28_an2_shut', + [1194273342] = 'v_28_backlab_deta', + [1694543848] = 'v_28_backlab_refl', + [-200730299] = 'v_28_blab_dirt', + [34154482] = 'v_28_blab_over', + [804918584] = 'v_28_coldr_deta', + [-1434323558] = 'v_28_coldr_dirt', + [-488407274] = 'v_28_coldr_glass1', + [-2077507176] = 'v_28_coldr_glass2', + [1977558271] = 'v_28_coldr_glass3', + [-98685561] = 'v_28_coldr_glass4', + [1767896228] = 'v_28_coldr_over', + [1868477278] = 'v_28_coldr_refl', + [340001409] = 'v_28_corr_deta', + [-962636934] = 'v_28_corr_dirt', + [-608743099] = 'v_28_corr_over', + [-597522645] = 'v_28_corr_refl', + [-514027226] = 'v_28_gua2_deta', + [-832341701] = 'v_28_gua2_dirt', + [827829926] = 'v_28_gua2_over', + [-965968944] = 'v_28_gua2_refl', + [-714592523] = 'v_28_guard1_deta', + [300413684] = 'v_28_guard1_dirt', + [-1296722956] = 'v_28_guard1_over', + [-157081729] = 'v_28_guard1_refl', + [327282338] = 'v_28_ha1_cover', + [572465687] = 'v_28_ha1_cover001', + [-2020977827] = 'v_28_ha1_deca', + [1285606275] = 'v_28_ha1_deta', + [-1086997870] = 'v_28_ha1_dirt', + [-100593278] = 'v_28_ha1_refl', + [-1470028723] = 'v_28_ha1_step', + [211609731] = 'v_28_ha2_deca', + [-1813155210] = 'v_28_ha2_deta', + [-543607668] = 'v_28_ha2_dirt', + [406125197] = 'v_28_ha2_refl', + [260450705] = 'v_28_ha2_ste1', + [10324924] = 'v_28_ha2_ste2', + [-272141034] = 'v_28_hazmat1_deta', + [559721213] = 'v_28_hazmat1_dirt', + [-987066264] = 'v_28_hazmat1_over', + [-1588074584] = 'v_28_hazmat1_refl', + [-521344584] = 'v_28_hazmat2_deta', + [-1176914998] = 'v_28_hazmat2_dirt', + [696079846] = 'v_28_hazmat2_over', + [680555297] = 'v_28_hazmat2_refl', + [-2088621436] = 'v_28_lab_end', + [-1302533415] = 'v_28_lab_gar_dcl_01', + [1028035968] = 'v_28_lab_poen_deta', + [-1111357348] = 'v_28_lab_poen_pipe', + [319419628] = 'v_28_lab_pool_deta', + [-1415744276] = 'v_28_lab_pool_ladd', + [-638975089] = 'v_28_lab_pool_wat1', + [-1384013695] = 'v_28_lab_pool', + [-1404084774] = 'v_28_lab_poolshell', + [-1964189383] = 'v_28_lab_shell1', + [181491968] = 'v_28_lab_shell2', + [77809468] = 'v_28_lab_trellis', + [-1962787629] = 'v_28_lab1_deta', + [-190848797] = 'v_28_lab1_dirt', + [-232027236] = 'v_28_lab1_glas', + [1603279933] = 'v_28_lab1_glass', + [-949321871] = 'v_28_lab1_over', + [564741461] = 'v_28_lab1_refl', + [1162521091] = 'v_28_lab2_deta', + [-757587924] = 'v_28_lab2_dirt', + [-689312037] = 'v_28_lab2_over', + [521205889] = 'v_28_lab2_refl', + [16013419] = 'v_28_loa_deta', + [-2005236848] = 'v_28_loa_deta2', + [-2086014198] = 'v_28_loa_dirt', + [-265195438] = 'v_28_loa_lamp', + [-1230616791] = 'v_28_loa_over', + [241954321] = 'v_28_loa_refl', + [-689267634] = 'v_28_monkeyt_deta', + [-858316370] = 'v_28_monkeyt_dirt', + [1124455535] = 'v_28_monkeyt_over', + [-861973630] = 'v_28_monkeyt_refl', + [-460342601] = 'v_28_pool_deca', + [796422397] = 'v_28_pool_dirt', + [-2027003491] = 'v_28_pr1_deca', + [1269601626] = 'v_28_pr1_deta', + [260842506] = 'v_28_pr1_dirt', + [164977034] = 'v_28_pr1_refl', + [-284315258] = 'v_28_pr2_deca', + [1367672895] = 'v_28_pr2_deta', + [977503839] = 'v_28_pr2_dirt', + [-1852856656] = 'v_28_pr2_refl', + [-452874694] = 'v_28_pra_deca', + [-136297901] = 'v_28_pra_deta', + [1305628999] = 'v_28_pra_dirt', + [-75452171] = 'v_28_pra_refl', + [300580010] = 'v_28_prh_deca', + [-134886226] = 'v_28_prh_deta', + [-1037992190] = 'v_28_prh_dirt', + [457061302] = 'v_28_prh_refl', + [-180738643] = 'v_28_prh_shut', + [882433006] = 'v_28_prh_strs', + [1097610739] = 'v_28_steps_2', + [488548103] = 'v_28_wascor_deta', + [560768807] = 'v_28_wascor_dirt', + [-940725559] = 'v_28_wascor_over', + [-1569357934] = 'v_28_wasele_deta', + [1867271850] = 'v_28_wasele_dirt', + [813359581] = 'v_28_wasele_refl', + [1040040142] = 'v_28_waste_deta', + [-468647901] = 'v_28_waste_dirt', + [695541702] = 'v_28_waste_over', + [-313084079] = 'v_28_waste_refl', + [-1183091144] = 'v_28_wastecor_refl', + [-1081348873] = 'v_29_arc_furnace_doors', + [-1667463119] = 'v_29_arcfurnace', + [-933537414] = 'v_29_arcfurnpipes', + [-492337262] = 'v_29_arcfurnplat', + [1124788726] = 'v_29_arcfurnplat001', + [-1782346946] = 'v_29_arfurnplat', + [-2097535211] = 'v_29_bigcontainer', + [2059898358] = 'v_29_bigendblocks', + [-2057633615] = 'v_29_bigwallsheet1', + [-830609035] = 'v_29_chalk_dcals', + [1595352207] = 'v_29_contmetcabs', + [-1592889616] = 'v_29_controlbits', + [685990166] = 'v_29_controom', + [-798081435] = 'v_29_crucibles', + [665817703] = 'v_29_doors002', + [1854399689] = 'v_29_dustsheet02', + [1379473356] = 'v_29_emwindows', + [1500346689] = 'v_29_fllorplates', + [711050622] = 'v_29_foucontopertor', + [903896472] = 'v_29_founbenches', + [-1720388292] = 'v_29_founcastplat003', + [-183929767] = 'v_29_founcontconsol', + [-1867289395] = 'v_29_found_blobs', + [-977313178] = 'v_29_found_contr_dr', + [-264732331] = 'v_29_found_dustpiles', + [-2046902820] = 'v_29_found_glue', + [1603404705] = 'v_29_found_ref_prox', + [1906302965] = 'v_29_found_safety', + [-282740942] = 'v_29_foundarches001', + [-546012987] = 'v_29_foundbackdirt', + [2037471314] = 'v_29_foundbucket', + [1389963181] = 'v_29_foundcontdirt', + [1768048980] = 'v_29_foundcontrolcables', + [-52041177] = 'v_29_foundcontrolpornetc', + [-79248749] = 'v_29_foundentsigns', + [-2121990711] = 'v_29_foundentsigns2', + [744831916] = 'v_29_foundentsignsmainrm', + [344780549] = 'v_29_foundfurn_steps', + [-390176336] = 'v_29_foundlightcovers', + [2143713901] = 'v_29_foundlightcovers2', + [-1564403087] = 'v_29_foundmachbits', + [1991987322] = 'v_29_foundmachdirt', + [-908241497] = 'v_29_foundmachgirds', + [-918305686] = 'v_29_foundmachleccy', + [-1564084549] = 'v_29_foundmachwall', + [1062119872] = 'v_29_foundpipes', + [-301785619] = 'v_29_foundpipesupps', + [1158380907] = 'v_29_foundry_stairs', + [-1921514612] = 'v_29_foundrybackent', + [216154794] = 'v_29_foundryfloorbits', + [196231839] = 'v_29_foundryshell', + [670814657] = 'v_29_foundshieldpans', + [930629662] = 'v_29_foundslag001', + [2114708923] = 'v_29_foundsmllrmlocks', + [935314090] = 'v_29_foundtallcasts', + [-1664309252] = 'v_29_foundtoprmgirs', + [-1107271703] = 'v_29_foundtopstairs', + [-791424195] = 'v_29_founligths001', + [-1301345160] = 'v_29_founmaingant', + [-1837276152] = 'v_29_founmetplates', + [-344938666] = 'v_29_founsmllelec', + [-1742995145] = 'v_29_founsmllrmdirt', + [695041733] = 'v_29_founsmlrrmbench', + [-262559910] = 'v_29_fouondmachbitsmore', + [-1187661967] = 'v_29_funrplatshads', + [-71390663] = 'v_29_furnace_cables', + [-1822626051] = 'v_29_furnaceslag', + [-1529564943] = 'v_29_gantry_crucibles', + [-662296789] = 'v_29_gantrybarriers', + [-889624009] = 'v_29_girderwear', + [1914295006] = 'v_29_glue_crnr_in004', + [1582559974] = 'v_29_highbits', + [2125976000] = 'v_29_hut_cover', + [-1977524103] = 'v_29_ladder', + [-1640506572] = 'v_29_mainsupportgiders', + [811690915] = 'v_29_millrollback', + [2085043658] = 'v_29_millrollbody', + [-1681320469] = 'v_29_molten_metal', + [-895178168] = 'v_29_more_metalbits', + [-1172848632] = 'v_29_morecasts', + [-395568870] = 'v_29_nearcover', + [-824933463] = 'v_29_pithighbit', + [848101617] = 'v_29_rails', + [1960159698] = 'v_29_rollergantry', + [845799425] = 'v_29_sideroom', + [779210579] = 'v_29_sidestairs', + [1503124072] = 'v_29_smallcasts', + [-300214313] = 'v_29_smallcastsmore001', + [-417219359] = 'v_29_tanksteps', + [70885467] = 'v_29_underfunrcover', + [-1492990560] = 'v_29_vfx_ripple_mesh_skin', + [427313124] = 'v_3_jrm_over_decal', + [916940396] = 'v_3_jrm_over_normal', + [-502341461] = 'v_3_jrm_over_shadow', + [1393877739] = 'v_3_knt_mesh_delta', + [-1034951235] = 'v_3_knt_mesh_units', + [-706949898] = 'v_3_ktn_mesh_windows', + [1612988969] = 'v_3_lng_mesh_coats', + [-1173988616] = 'v_3_lng_mesh_delta', + [1954210094] = 'v_3_lng_mesh_magazines', + [-1102952484] = 'v_3_lng_mesh_timed', + [-1990154022] = 'v_3_lng_mesh_timed2', + [-1565816879] = 'v_3_lng_mesh_walldelta', + [-780138613] = 'v_3_lng_mesh_windows', + [-1260370912] = 'v_3_main_mesh_blinds', + [502293730] = 'v_3_main_mesh_chair', + [-170356467] = 'v_3_main_mesh_fdframe', + [1151598458] = 'v_3_main_mesh_fridge', + [-959592644] = 'v_3_shell', + [1234388009] = 'v_31_andyblend5', + [941924684] = 'v_31_andyblend6', + [595976997] = 'v_31_cablemesh5785278_hvstd', + [-1271100996] = 'v_31_cablemesh5785279_hvstd', + [-868003203] = 'v_31_cablemesh5785280_hvstd', + [749206077] = 'v_31_cablemesh5785282_hvstd', + [-437253630] = 'v_31_cablemesh5785283_hvstd', + [-1480879683] = 'v_31_cablemesh5785284_hvstd', + [-753485989] = 'v_31_cablemesh5785285_hvstd', + [-2055829619] = 'v_31_cablemesh5785286_hvstd', + [1811945054] = 'v_31_cablemesh5785287_hvstd', + [-1675132279] = 'v_31_cablemesh5785290_hvstd', + [-2140922932] = 'v_31_crappy_ramp', + [-425959820] = 'v_31_elec_supports', + [611945820] = 'v_31_electricityyparetn', + [-446120734] = 'v_31_emmisve_ext', + [870200611] = 'v_31_emrglightnew011', + [210618883] = 'v_31_faked_water', + [1234993118] = 'v_31_flow_fork_ah1', + [-957046808] = 'v_31_flow1_0069', + [1745115545] = 'v_31_flow1_0079', + [-1254267479] = 'v_31_low_tun_extem', + [1633664682] = 'v_31_lowerwater', + [219466248] = 'v_31_metro_30_cables003', + [-277485022] = 'v_31_newtun_mech_05c', + [281113821] = 'v_31_newtun_sh', + [-329826232] = 'v_31_newtun01ol', + [-1037963740] = 'v_31_newtun01water', + [-375385747] = 'v_31_newtun01waterb', + [1486215202] = 'v_31_newtun1reflect', + [-62974975] = 'v_31_newtun2_mech_05a', + [-719832311] = 'v_31_newtun2mech_05b', + [2106261611] = 'v_31_newtun2ol', + [-1914736329] = 'v_31_newtun2reflect001', + [-665470289] = 'v_31_newtun2sh', + [2063511553] = 'v_31_newtun2water', + [246036232] = 'v_31_newtun3ol', + [1646453100] = 'v_31_newtun3sh', + [-475589349] = 'v_31_newtun4_lod', + [1870570389] = 'v_31_newtun4b_lod', + [80863164] = 'v_31_newtun4b_slod', + [-926404390] = 'v_31_newtun9_slod', + [-1819466372] = 'v_31_newtun9lod', + [-836688414] = 'v_31_station_curtains', + [-1931704889] = 'v_31_tun_06_reflect', + [-1215413074] = 'v_31_tun_06_refwater', + [-745034820] = 'v_31_tun_07_reflect', + [-1829502865] = 'v_31_tun_lod', + [-1837018283] = 'v_31_tun_slod', + [1604343045] = 'v_31_tun_swap_lod', + [137638566] = 'v_31_tun_swap_slod', + [907122881] = 'v_31_tun01_lod', + [-1666288450] = 'v_31_tun01_slod', + [-77632756] = 'v_31_tun05_reflect', + [-2075493503] = 'v_31_tun05', + [2013763245] = 'v_31_tun05b', + [-1087953689] = 'v_31_tun05f', + [-1993561717] = 'v_31_tun05gravelol', + [320662412] = 'v_31_tun05-overlay', + [1896377258] = 'v_31_tun05shadprox', + [-567646228] = 'v_31_tun05stationsign', + [-686976062] = 'v_31_tun06_floorol', + [-68527136] = 'v_31_tun06_olay', + [1432788410] = 'v_31_tun06', + [-1710302865] = 'v_31_tun06b', + [-1750053561] = 'v_31_tun06pipes', + [1367414746] = 'v_31_tun06scrapes', + [-1899923256] = 'v_31_tun07_olay', + [1475584724] = 'v_31_tun07', + [-275019753] = 'v_31_tun07b', + [424660899] = 'v_31_tun07b001', + [-1638352705] = 'v_31_tun07bgate', + [-964232399] = 'v_31_tun08_olay', + [-1228545929] = 'v_31_tun08', + [637728693] = 'v_31_tun08reflect', + [-1988950574] = 'v_31_tun09', + [-2068173882] = 'v_31_tun09b', + [861536970] = 'v_31_tun09bol', + [-1289237161] = 'v_31_tun09junk005', + [-1665195842] = 'v_31_tun09junk009', + [734245792] = 'v_31_tun09junk009a', + [1654593396] = 'v_31_tun09junk2', + [-419720215] = 'v_31_tun09reflect', + [-1958366748] = 'v_31_tun10_gridnew', + [-1202313901] = 'v_31_tun10_olay', + [-173271594] = 'v_31_tun10_olaynew', + [-2039085289] = 'v_31_tun10new', + [-4064799] = 'v_31_tune06_newols', + [-571185952] = 'v_31_tune06_newols001', + [308090142] = 'v_31_walltext001', + [-1780868074] = 'v_31_walltext002', + [-1520321755] = 'v_31_walltext003', + [-941653984] = 'v_31_walltext005', + [1782006993] = 'v_31_walltext006', + [2016141498] = 'v_31_walltext007', + [-1665816111] = 'v_31_walltext009', + [806374692] = 'v_31_walltext010', + [591442821] = 'v_31_walltext012', + [-176138239] = 'v_31_walltext013', + [1992546954] = 'v_31_walltext014', + [-1995800809] = 'v_31_walltext015', + [1245315447] = 'v_31_walltext016', + [1552131594] = 'v_31_walltext017', + [-1842704041] = 'v_31_walltext018', + [-1536936502] = 'v_31_walltext019', + [685064142] = 'v_31_walltext020', + [389094534] = 'v_31_walltext021', + [2028920832] = 'v_31_walltext022', + [1823885199] = 'v_31_walltext023', + [1584147195] = 'v_31_walltext024', + [1344704112] = 'v_31_walltext025', + [-1235690797] = 'v_31_walltext026', + [-1474740652] = 'v_31_walltext027', + [-1746690583] = 'v_31_walltext028', + [86017921] = 'v_31_walltext031', + [926395044] = 'v_31a_cablemesh5777513_thvy', + [1194913501] = 'v_31a_cablemesh5777640_thvy', + [-1185852742] = 'v_31a_cablemesh5777641_thvy', + [-291748668] = 'v_31a_cablemesh5777642_thvy', + [-1343376167] = 'v_31a_cablemesh5777643_thvy', + [1611178223] = 'v_31a_cablemesh5777644_thvy', + [657869656] = 'v_31a_cablemesh5777645_thvy', + [1817108743] = 'v_31a_cablemesh5777646_thvy', + [264665862] = 'v_31a_cablemesh5777647_thvy', + [-1873966622] = 'v_31a_cablemesh5777648_thvy', + [-2088061485] = 'v_31a_cablemesh5777663_thvy', + [-552805389] = 'v_31a_cablemesh5777678_thvy', + [-2140745166] = 'v_31a_cablemesh5777693_thvy', + [619662689] = 'v_31a_cablemesh5777750_thvy', + [923751592] = 'v_31a_cablemesh5777751_thvy', + [-727671172] = 'v_31a_cablemesh5777752_thvy', + [1365713058] = 'v_31a_cablemesh5777753_thvy', + [-2123871722] = 'v_31a_ducttape', + [-145238022] = 'v_31a_emrglight005', + [1103817947] = 'v_31a_emrglight007', + [-821650364] = 'v_31a_emrglightnew', + [1342497894] = 'v_31a_highvizjackets', + [-1337478021] = 'v_31a_highvizjackets001', + [1142807123] = 'v_31a_jh_steps', + [1728975675] = 'v_31a_jh_tun_plastic', + [1005618224] = 'v_31a_jh_tunn_01a', + [607572965] = 'v_31a_jh_tunn_02a', + [-647020973] = 'v_31a_jh_tunn_02b', + [-944989490] = 'v_31a_jh_tunn_02c', + [1883007971] = 'v_31a_jh_tunn_02x', + [-1044651449] = 'v_31a_jh_tunn_03aextra', + [-108474430] = 'v_31a_jh_tunn_03b', + [58188704] = 'v_31a_jh_tunn_03c', + [-1895171382] = 'v_31a_jh_tunn_03d', + [1619205565] = 'v_31a_jh_tunn_03e', + [1774006321] = 'v_31a_jh_tunn_03f', + [1006458034] = 'v_31a_jh_tunn_03g', + [-1141713765] = 'v_31a_jh_tunn_03h', + [-599574780] = 'v_31a_jh_tunn_03wood', + [1676007256] = 'v_31a_jh_tunn_04b_ducktape', + [-1404226508] = 'v_31a_jh_tunn_04b', + [322961952] = 'v_31a_jh_tunn_04d', + [701902668] = 'v_31a_jh_tunn_04e', + [-254526143] = 'v_31a_jh_tunn_04f', + [1795680809] = 'v_31a_jh_tunnground', + [-1131010595] = 'v_31a_newtun4shpile008', + [5881234] = 'v_31a_ootside_bit', + [152249940] = 'v_31a_reflectionbox', + [698624196] = 'v_31a_reflectionbox2', + [-933422270] = 'v_31a_reftun2', + [1219213886] = 'v_31a_start_tun_cable_bits', + [1085109131] = 'v_31a_start_tun_cable_bits2', + [423544064] = 'v_31a_start_tun_roombits1', + [-857049291] = 'v_31a_tun_01_shadowbox', + [802441001] = 'v_31a_tun_03frame', + [1432689644] = 'v_31a_tun_05fakelod', + [78367476] = 'v_31a_tun_puds', + [-795124420] = 'v_31a_tun_tarp_tower', + [-1228183513] = 'v_31a_tun_tarp', + [-898703047] = 'v_31a_tun01_ovly', + [1126566546] = 'v_31a_tun01_shpile', + [-1687713124] = 'v_31a_tun01_shpile2', + [-186791536] = 'v_31a_tun01', + [-1202557391] = 'v_31a_tun01bitsnew', + [-706105139] = 'v_31a_tun01bitsnew2', + [1040445526] = 'v_31a_tun01rocks', + [1278842581] = 'v_31a_tun01rocks2', + [1615460244] = 'v_31a_tun02_fakelod', + [110914829] = 'v_31a_tun02', + [739412168] = 'v_31a_tun02bits_dirtol', + [-847009626] = 'v_31a_tun02bits', + [1088879344] = 'v_31a_tun02rocks', + [1347721388] = 'v_31a_tun03_over2a', + [-1088653766] = 'v_31a_tun03_over2b', + [-1396518521] = 'v_31a_tun03_over2c', + [-1684885721] = 'v_31a_tun03_over2d', + [-1990456646] = 'v_31a_tun03_over2e', + [-798293845] = 'v_31a_tun03', + [-1169679489] = 'v_31a_tun03i', + [-1125048111] = 'v_31a_tun03j', + [363024948] = 'v_31a_tun03k', + [678819801] = 'v_31a_tun03l', + [-126740526] = 'v_31a_tun03m', + [161495598] = 'v_31a_tun03n', + [1138044567] = 'v_31a_tun03o', + [1695314181] = 'v_31a_tun03p', + [-684724948] = 'v_31a_tun04_olay', + [1255559870] = 'v_31a_tunn_02_ovlay', + [489286680] = 'v_31a_tunnelsheeting', + [-1927051973] = 'v_31a_tunnerl_diger', + [-1963645811] = 'v_31a_tunreflect', + [1904327311] = 'v_31a_tunroof_01', + [-246631913] = 'v_31a_tunspoxyshadow', + [-1305687387] = 'v_31a_tunswap_dirt', + [1027317983] = 'v_31a_tunswap_fakelod', + [1847946085] = 'v_31a_tunswap_girders', + [-1237471119] = 'v_31a_tunswap_ground', + [-806208216] = 'v_31a_tunswap_plastic', + [-2125221273] = 'v_31a_tunswap_platforms', + [1748792359] = 'v_31a_tunswap_puds', + [1216627055] = 'v_31a_tunswap_reflection', + [-696679295] = 'v_31a_tunswap_rocks', + [-116732144] = 'v_31a_tunswap_shad_proxy', + [-1425130734] = 'v_31a_tunswap_sheet', + [1324002801] = 'v_31a_tunswap_steps', + [-1213969775] = 'v_31a_tunswap_tarp', + [-1677377795] = 'v_31a_tunswap_tower', + [1129520978] = 'v_31a_tunswapbitofcrap', + [-359378585] = 'v_31a_tunswapbits', + [-1710468359] = 'v_31a_tunswaphit1', + [2115345573] = 'v_31a_tunswaplight1', + [1758687777] = 'v_31a_tunswaplight2', + [461721008] = 'v_31a_tunswapover1', + [-2094144548] = 'v_31a_tunswaptunroof', + [750404304] = 'v_31a_tunswapwalls', + [-495936384] = 'v_31a_tunswapwallthing', + [400569107] = 'v_31a_tuntobankol', + [1844303495] = 'v_31a_v_tunnels_01b', + [1656358496] = 'v_31a_walltext029', + [2108226521] = 'v_31b_andyblend2', + [1657718309] = 'v_31b_andyblend3', + [187078358] = 'v_31b_andyblend4', + [2027262804] = 'v_31b_jh_tunn_03aextra001', + [-1726277386] = 'v_31b_newtun3reflect', + [-441614056] = 'v_31b_newtun3shadowbox', + [-81634067] = 'v_31b_newtun4ol', + [-1196417417] = 'v_31b_newtun4olblnd', + [-620830723] = 'v_31b_newtun4reflect', + [-696018832] = 'v_31b_newtun4sh', + [499306796] = 'v_31b_newtun4shadowbox', + [-1148363654] = 'v_31b_newtun4shadowbox2', + [1364058142] = 'v_31b_newtun4shpile002', + [-911028182] = 'v_31b_newtun4shpile010', + [863825650] = 'v_31b_newtun4water', + [251145666] = 'v_31b_newtun5_shadowbox', + [2117954539] = 'v_31b_newtun5ol', + [-141344393] = 'v_31b_newtun5water', + [-1234875603] = 'v_31b_newtun6ol', + [-1647798784] = 'v_31b_newtun6sh', + [-622256408] = 'v_31b_newtun7ol', + [348535805] = 'v_31b_newtun7sh', + [-739197086] = 'v_31b_newtun8ol', + [-1451349104] = 'v_31b_newtun8refectbox', + [-709736427] = 'v_31b_newtun8sh', + [-2141150521] = 'v_31b_newtun9ol', + [-916052313] = 'v_31b_newtun9ol2', + [1316733902] = 'v_31b_newtun9sh', + [2138038403] = 'v_31b_sewerpipes', + [-1878483906] = 'v_33_cur_of1_blin', + [1944903413] = 'v_33_cur_of1_deta', + [1232352172] = 'v_33_cur_of2_blin', + [43217600] = 'v_33_cur_of2_ceil', + [-1404247306] = 'v_33_cur_of2_deta', + [1217365661] = 'v_33_cur_of3_blin', + [-722659768] = 'v_33_cur_of3_blin001', + [-1888311637] = 'v_33_cur_of3_ceil', + [-2072905430] = 'v_33_cur_of3_ceil001', + [1395535837] = 'v_33_cur_of3_deta', + [-1413207708] = 'v_33_cur_of3_deta001', + [733027250] = 'v_33_cur_shell', + [-100627722] = 'v_33_shadowbox', + [1870493881] = 'v_33_sm_ao_det', + [1489897722] = 'v_33_v_int_33_refonly', + [-336059269] = 'v_34_5', + [-134017662] = 'v_34_boxes', + [350106806] = 'v_34_boxes02', + [1729419554] = 'v_34_boxes03', + [-1093965078] = 'v_34_cable1', + [-1541261928] = 'v_34_cable2', + [935746782] = 'v_34_cable3', + [-593983653] = 'v_34_cb_reflect1', + [-814977745] = 'v_34_cb_reflect2', + [355367046] = 'v_34_cb_reflect3', + [116448267] = 'v_34_cb_reflect4', + [-868879094] = 'v_34_cb_shell1', + [-1165930079] = 'v_34_cb_shell2', + [-266093339] = 'v_34_cb_shell3', + [-715815095] = 'v_34_cb_shell4', + [1355788686] = 'v_34_cb_windows', + [-1843958127] = 'v_34_chckmachine', + [611954595] = 'v_34_chickcrates', + [370504501] = 'v_34_chickcrates2', + [-1268011033] = 'v_34_chickcratesb', + [-1377434900] = 'v_34_chknrack', + [2041665236] = 'v_34_containers', + [-2122600826] = 'v_34_corrcratesa', + [-818099709] = 'v_34_corrcratesb', + [-648317467] = 'v_34_corrdirt', + [1127044713] = 'v_34_corrdirt2', + [-53851640] = 'v_34_corrdirt4', + [-688882107] = 'v_34_corrdirtb', + [526552031] = 'v_34_corrvents', + [1222486858] = 'v_34_curtain01', + [1045075492] = 'v_34_curtain02', + [971282651] = 'v_34_delcorrjunk', + [1698258907] = 'v_34_delivery', + [1899259584] = 'v_34_deloffice001', + [1179332853] = 'v_34_dirtchill', + [1609010421] = 'v_34_drains', + [1815859587] = 'v_34_drains001', + [345312178] = 'v_34_emwidw', + [-2100292605] = 'v_34_entcrates', + [1952075703] = 'v_34_entdirt', + [1128796870] = 'v_34_entoverlay', + [-1526669481] = 'v_34_entpipes', + [526504143] = 'v_34_entshutter', + [-1569454457] = 'v_34_entvents', + [904735481] = 'v_34_hallmarks', + [1323110819] = 'v_34_hallmarksb', + [1805556643] = 'v_34_hallsigns', + [1793420626] = 'v_34_hallsigns2', + [-1677819945] = 'v_34_hose', + [-1014725838] = 'v_34_killrmcable1', + [1996665213] = 'v_34_killvents', + [-580400921] = 'v_34_lights01', + [834728125] = 'v_34_lockers', + [1181523520] = 'v_34_machine', + [1722921291] = 'v_34_meatglue', + [988193807] = 'v_34_offdirt', + [638936736] = 'v_34_officepipe', + [-266803324] = 'v_34_offoverlay', + [79133458] = 'v_34_overlays01', + [-1054929925] = 'v_34_partwall', + [-1259062831] = 'v_34_procdirt', + [85660929] = 'v_34_procequip', + [390964251] = 'v_34_proclights', + [64880921] = 'v_34_proclights01', + [-42406962] = 'v_34_proclights2', + [-201016788] = 'v_34_procstains', + [-971982902] = 'v_34_puddle', + [-386546255] = 'v_34_racks', + [1105696349] = 'v_34_racksb', + [1547553545] = 'v_34_racksc', + [-1541553586] = 'v_34_shrinkwrap2', + [2064881867] = 'v_34_slurry', + [-1086917516] = 'v_34_slurrywrap', + [-1061513633] = 'v_34_sm_chill', + [-1079242033] = 'v_34_sm_corr', + [454654597] = 'v_34_sm_corrb', + [49159047] = 'v_34_sm_deloff', + [870965650] = 'v_34_sm_ent', + [1376531074] = 'v_34_sm_kill', + [114641207] = 'v_34_sm_proc', + [2137425070] = 'v_34_sm_staff2', + [-684169776] = 'v_34_sm_ware1', + [906155794] = 'v_34_sm_ware1corr', + [1910348568] = 'v_34_sm_ware2', + [532041100] = 'v_34_staffwin', + [1457321583] = 'v_34_trolley05', + [1173377165] = 'v_34_vents2', + [-960408559] = 'v_34_walkway', + [990536898] = 'v_34_ware2crcks', + [1371399402] = 'v_34_ware2dirt', + [226144306] = 'v_34_ware2dirt2', + [2104599488] = 'v_34_ware2ovrly', + [827812566] = 'v_34_ware2vents', + [-2090151957] = 'v_34_ware2vents2', + [1936994302] = 'v_34_ware2vents3', + [-65548815] = 'v_34_waredamp', + [159039109] = 'v_34_waredirt', + [-423903506] = 'v_34_warehouse', + [-782498605] = 'v_34_warejunk', + [304314844] = 'v_34_wareover2', + [2136972049] = 'v_34_wareracks', + [1685654510] = 'v_34_waresuprt', + [-1477356272] = 'v_34_warevents', + [57764508] = 'v_34_wcorrdirt', + [-1560208531] = 'v_34_wcorrtyremks', + [-317778730] = 'v_34_wtyremks', + [-432318791] = 'v_35_agency_bluprint', + [2054353648] = 'v_35_armour', + [1344012317] = 'v_35_beams', + [39992491] = 'v_35_beamsempty', + [53720513] = 'v_35_blinds', + [1407231314] = 'v_35_blindsempty', + [1177748597] = 'v_35_board', + [1564474285] = 'v_35_box3empty', + [1346424911] = 'v_35_boxes', + [875000281] = 'v_35_boxes2', + [818827766] = 'v_35_boxspare', + [2081567852] = 'v_35_bs_bluprint', + [-1681298403] = 'v_35_cables', + [1292382900] = 'v_35_cables1', + [2008920293] = 'v_35_cables1empty', + [1134108630] = 'v_35_cables2', + [115378433] = 'v_35_cables2empty', + [-1502157424] = 'v_35_cables3', + [2120373256] = 'v_35_cables3empty', + [-1758574849] = 'v_35_cables4', + [-365088063] = 'v_35_cables4empty', + [-2085380086] = 'v_35_cables5', + [221096895] = 'v_35_cables6empty', + [-1676567698] = 'v_35_cablesempty', + [869600225] = 'v_35_doorempty', + [-1968957326] = 'v_35_emwin2', + [-331903238] = 'v_35_emwin2empty', + [-1446670439] = 'v_35_emwindent', + [-893457939] = 'v_35_emwindent001', + [1992725793] = 'v_35_emwindows', + [-1937624480] = 'v_35_emwinempty', + [1082615517] = 'v_35_fanbase', + [-1564578152] = 'v_35_fire_app', + [1008683327] = 'v_35_firehelmet', + [-2016980865] = 'v_35_gasmasks', + [-1205262635] = 'v_35_hiest_overall1', + [-1807105147] = 'v_35_hiestmask1', + [1731354785] = 'v_35_janitor', + [-1245218309] = 'v_35_litter', + [-827962246] = 'v_35_litter2', + [1104845953] = 'v_35_litterempty', + [1596843080] = 'v_35_lockdoor', + [1696959431] = 'v_35_newspapempty', + [736907095] = 'v_35_nightlightempty', + [-2118734600] = 'v_35_nightlights', + [-1725581572] = 'v_35_offbeamempty', + [1566918163] = 'v_35_office', + [-1700655893] = 'v_35_officebeams', + [-1889600842] = 'v_35_officeempty', + [931708537] = 'v_35_officelights', + [653259312] = 'v_35_officeshad', + [1616216478] = 'v_35_officeshadempty', + [503030053] = 'v_35_offlightempty', + [608179789] = 'v_35_rails', + [718989698] = 'v_35_railsempty', + [533237447] = 'v_35_reflect', + [498059132] = 'v_35_reflectempty', + [-1899157110] = 'v_35_sewing', + [1824210529] = 'v_35_sewing02', + [-1539641374] = 'v_35_sewing2empty', + [1193579876] = 'v_35_sewingempty', + [-1735377767] = 'v_35_shadowempty', + [-401596125] = 'v_35_stairs', + [1219869716] = 'v_35_stairsempty', + [1366692745] = 'v_35_storeempty', + [592700040] = 'v_35_storelights', + [-399741885] = 'v_35_sweat_empty', + [1498332426] = 'v_35_sweatshad1', + [2140834213] = 'v_35_sweatshad2', + [-1259801535] = 'v_35_sweatshad3', + [-587217810] = 'v_35_sweatshad4', + [1535109211] = 'v_35_sweatshell', + [1379451860] = 'v_35_swtshdwempty1', + [1676568383] = 'v_35_swtshdwempty2', + [2108398265] = 'v_35_swtshdwempty3', + [-1988447657] = 'v_35_swtshdwempty4', + [1666030335] = 'v_35_tempwall001', + [72977709] = 'v_35_tempwallempty', + [-839330247] = 'v_35_vents02', + [-255680381] = 'v_35_vents2empty', + [1399817496] = 'v_35_wall', + [-1978605261] = 'v_35_wallempty', + [-1711202555] = 'v_35_window_02', + [1773352356] = 'v_35_window01', + [924034901] = 'v_35_windowempty', + [1017294077] = 'v_35_windows', + [-200817160] = 'v_35_windstoreempty', + [801958102] = 'v_35_winoffempty', + [-144091702] = 'v_36_5', + [922594982] = 'v_36_art', + [-735595080] = 'v_36_cables1', + [-313006056] = 'v_36_cables2', + [-1225504011] = 'v_36_deskstuff', + [-1005703424] = 'v_36_dirtovlay', + [948582456] = 'v_36_flames', + [-1467736451] = 'v_36_flames2', + [-1700711508] = 'v_36_lights', + [1631764222] = 'v_36_neon003', + [-64274816] = 'v_36_neon2', + [-1500476110] = 'v_36_normalonly', + [1132989909] = 'v_36_normalonly2', + [279323304] = 'v_36_pipes', + [143701709] = 'v_36_reflect', + [-825823660] = 'v_36_shadowmap', + [1003655617] = 'v_36_shell', + [-674933860] = 'v_36_shelves', + [1709730606] = 'v_36_storestuff', + [762762514] = 'v_36_tatseat', + [1350761835] = 'v_37_hd_ao', + [-929816221] = 'v_37_hd_blends', + [-306939003] = 'v_37_hd_detail', + [438794269] = 'v_37_hd_detail2', + [-1586029164] = 'v_37_hd_furn', + [-1884088763] = 'v_37_hd_furndr', + [1979260483] = 'v_37_hd_mirror', + [1249767051] = 'v_37_hd_reflect', + [-1759149974] = 'v_37_hd_shell_main_refl', + [-538534518] = 'v_37_hd_shell_wal1_refl', + [-2012040656] = 'v_37_hd_shell_wal2_refl', + [-1173734113] = 'v_37_hd_shell', + [-1285341603] = 'v_38_barb_plant003', + [482157667] = 'v_38_barb_plant02', + [1959780881] = 'v_38_barbers_det', + [174452674] = 'v_38_barbers_shell', + [-1452891075] = 'v_38_barbpole01', + [-465332278] = 'v_38_cabinet01', + [-49034902] = 'v_38_cabinet02', + [521424757] = 'v_38_fan', + [1887843457] = 'v_38_fan01', + [-1576443601] = 'v_38_lights', + [1828744934] = 'v_38_mirror', + [474909440] = 'v_38_pictures', + [-2117807240] = 'v_38_pictures3', + [1674458821] = 'v_38_reflect', + [713194973] = 'v_38_shadowmap', + [156917919] = 'v_38_shelves', + [1374490841] = 'v_38_sink', + [-31778210] = 'v_38_window01', + [1778806458] = 'v_39_beams', + [-1410116789] = 'v_39_beams2', + [1637203601] = 'v_39_beams3', + [511490507] = 'v_39_beerboxes02', + [855663314] = 'v_39_beerboxes04', + [270015746] = 'v_39_beerboxes05', + [-101125948] = 'v_39_beerboxes08', + [976607369] = 'v_39_beerbrokenshelves08', + [408367526] = 'v_39_brokewall', + [136656517] = 'v_39_bulb_on_1', + [-101770727] = 'v_39_bulb_on_2', + [-347682182] = 'v_39_cable1yellow', + [-798250268] = 'v_39_cable2white', + [-1127075135] = 'v_39_cable3white', + [1212602949] = 'v_39_cablelamp', + [1813480256] = 'v_39_cablesfan', + [-1224888874] = 'v_39_cablesshop', + [272588959] = 'v_39_decaldirt1', + [-25281251] = 'v_39_decaldirt2', + [-1512633392] = 'v_39_decaldirt3', + [-1843338140] = 'v_39_decaldirt4', + [-2060170269] = 'v_39_halllampon', + [1345485654] = 'v_39_meth_lab', + [2143080783] = 'v_39_methcooker', + [-1356649983] = 'v_39_methducttape', + [899246841] = 'v_39_methlab_8', + [1794807326] = 'v_39_methlab_stair', + [1572606725] = 'v_39_ovrly5', + [1109643893] = 'v_39_pills', + [-1741954096] = 'v_39_pipes', + [-766100472] = 'v_39_posters', + [1637047757] = 'v_39_reflect_proxy', + [-520592709] = 'v_39_shad_uppback', + [-676063048] = 'v_39_shadmeth', + [-1257355426] = 'v_39_shadow_liquor', + [1815754047] = 'v_39_shadow_store', + [-1566208717] = 'v_39_shadplan', + [-2008302522] = 'v_39_shopdirt', + [758430064] = 'v_39_shopovrlys', + [1774095544] = 'v_39_shops5kirt', + [-2136444176] = 'v_39_spdecaaldirt', + [1897235116] = 'v_39_tears2', + [-2100812271] = 'v_39_tears3', + [-1835350602] = 'v_39_tears4', + [-1403782872] = 'v_39_tears5', + [62270247] = 'v_39_tearshall', + [-1668341863] = 'v_39_ventilation', + [-1784830875] = 'v_39_winframe', + [-98737209] = 'v_40_ceilinglights2', + [291872894] = 'v_40_corri001', + [45093818] = 'v_40_debris1', + [-1186594589] = 'v_40_debris2', + [-887905154] = 'v_40_debris3', + [791112872] = 'v_40_debris4', + [962167052] = 'v_40_debris5', + [336311921] = 'v_40_debris6', + [507955943] = 'v_40_debris7', + [1393603702] = 'v_40_debris8', + [518270419] = 'v_40_details004', + [-1215871715] = 'v_40_details004b', + [229280608] = 'v_40_details005', + [-1015980332] = 'v_40_details1', + [-354932931] = 'v_40_details1b', + [1418690838] = 'v_40_details2', + [-1630628465] = 'v_40_details3', + [-1385794092] = 'v_40_doorfr2', + [-1630447446] = 'v_40_doorfr3', + [166085559] = 'v_40_exitpillar2', + [-628711122] = 'v_40_firehose003', + [-1407925173] = 'v_40_firehose004', + [-1290299295] = 'v_40_firehose2', + [1450377097] = 'v_40_firestand', + [1703995662] = 'v_40_firestand001', + [160903452] = 'v_40_firestand002', + [-676147884] = 'v_40_firestand003', + [787938267] = 'v_40_firestand004', + [1489196476] = 'v_40_frame011', + [828868353] = 'v_40_frame012', + [1606509492] = 'v_40_frame013', + [-1250899357] = 'v_40_gridlights004', + [-2067145343] = 'v_40_gridlights1', + [-1299465980] = 'v_40_gridlights2', + [-1599302330] = 'v_40_gridlights3', + [-1161498737] = 'v_40_hospbumpers2', + [1325808595] = 'v_40_hospital_reflect', + [-1195059330] = 'v_40_hospital', + [-144818466] = 'v_40_hospital1shad', + [367028484] = 'v_40_hospital1shadb', + [1256210974] = 'v_40_hospital2shad', + [-1300091485] = 'v_40_hospital3shad', + [-1625975696] = 'v_40_hospitaldoors_fixed', + [-1428592125] = 'v_40_hospitalgarden', + [1938031722] = 'v_40_hospitalglass', + [1573403136] = 'v_40_hospitalglass003', + [-614867307] = 'v_40_hospitalglass2', + [-698606340] = 'v_40_hospitallod', + [-741357050] = 'v_40_hospitalpipes', + [-243110379] = 'v_40_hospitalshop', + [-1766220898] = 'v_40_hospitalsidedoors', + [-763183189] = 'v_40_hospseating005', + [542890844] = 'v_40_hospseating006', + [-1801993274] = 'v_40_hospseating007', + [1175365301] = 'v_40_hospseating008', + [1674787101] = 'v_40_hospseating1', + [1768637517] = 'v_40_hospseating2', + [2017780224] = 'v_40_hospseating3', + [-1912205946] = 'v_40_hospseating4', + [30863020] = 'v_40_lift', + [-1166172347] = 'v_40_lights2', + [-856243145] = 'v_40_lights3', + [618420815] = 'v_40_nhospsign015', + [-1727836487] = 'v_40_oldlights', + [434859764] = 'v_40_receptiondesk', + [1673570373] = 'v_40_receptiondesk2', + [623532546] = 'v_40_roomlights', + [-1948983387] = 'v_40_shopdesk1', + [239175797] = 'v_40_sidedoor', + [1103496429] = 'v_40_sidedr', + [-918255056] = 'v_40_sign015', + [-553863776] = 'v_40_sign016', + [-1490860634] = 'v_40_sign017', + [-1050314198] = 'v_40_sign018', + [1405689583] = 'v_40_sign019', + [-2081096142] = 'v_40_sign020', + [247665616] = 'v_40_sign021', + [546944893] = 'v_40_sign022', + [1000172932] = 'v_40_sign024', + [-977567298] = 'v_40_sign025', + [-1955083072] = 'v_40_v_int40_hosp_plants', + [-599122783] = 'v_40_v_int40_hosp_plants001', + [292325101] = 'v_40_v_int40_hosp_plants002', + [1977208774] = 'v_40_v_int40_hosp_plants004', + [596618035] = 'v_40_v_int40_hosp_plants005', + [1569169186] = 'v_40_v_int40_hosp_plants006', + [1826369957] = 'v_40_wallbit', + [1234993198] = 'v_40_wood', + [-940975603] = 'v_40overlay1', + [-186427643] = 'v_40overlay1b', + [2006694270] = 'v_40overlay2', + [-1905072340] = 'v_40overlay3', + [-1424855637] = 'v_40overlayrubble', + [-1306655153] = 'v_41_back_counter', + [1352348618] = 'v_41_bank4_proxy_det', + [98437368] = 'v_41_bank4_proxy_shell', + [-391291028] = 'v_41_bank4_shell', + [-857440036] = 'v_41_barrier', + [2105736410] = 'v_41_blaine_crest', + [1263450081] = 'v_41_cables', + [1313993890] = 'v_41_depodet01', + [-1149567563] = 'v_41_desk01', + [925839403] = 'v_41_detail02', + [297578599] = 'v_41_details', + [-490764252] = 'v_41_dirt_deposit', + [1391719252] = 'v_41_flag', + [-766812634] = 'v_41_keypad', + [-917254625] = 'v_41_leaflets', + [-225366444] = 'v_41_lights_01', + [-2037885372] = 'v_41_lights_02', + [1560893688] = 'v_41_lit_on', + [-1278659804] = 'v_41_lits_ona', + [-232740135] = 'v_41_overlays', + [-3104258] = 'v_41_planter004', + [-184906670] = 'v_41_planter005', + [-2066204010] = 'v_41_planter01', + [1161498025] = 'v_41_rubbermat', + [1635583631] = 'v_41_seats01', + [1476488591] = 'v_41_tables', + [-999038839] = 'v_41_vault_det', + [-438006612] = 'v_41_vaultdecal', + [-826232170] = 'v_41_vlt_desk', + [1255657581] = 'v_41_wallmountedshelf', + [591472838] = 'v_44_1_daught_cdoor', + [2087636702] = 'v_44_1_daught_cdoor2', + [-172113756] = 'v_44_1_daught_deta_ns', + [1355069479] = 'v_44_1_daught_deta', + [1540871336] = 'v_44_1_daught_geoml', + [-326164580] = 'v_44_1_daught_item', + [306643908] = 'v_44_1_daught_mirr', + [-2118087677] = 'v_44_1_daught_moved', + [-493464269] = 'v_44_1_hall_deca', + [379398760] = 'v_44_1_hall_deta', + [576819059] = 'v_44_1_hall_emis', + [1132977151] = 'v_44_1_hall2_deca', + [1889072789] = 'v_44_1_hall2_deta', + [-1795840269] = 'v_44_1_hall2_emis', + [463048617] = 'v_44_1_mast_wadeca', + [-282904342] = 'v_44_1_mast_washel_m', + [915170437] = 'v_44_1_mast_washel', + [-773551152] = 'v_44_1_master_chan', + [-406929574] = 'v_44_1_master_deca', + [-2030436657] = 'v_44_1_master_deta', + [-1622728272] = 'v_44_1_master_mirdecal', + [968954052] = 'v_44_1_master_mirr', + [587774879] = 'v_44_1_master_pics1', + [1740260617] = 'v_44_1_master_pics2', + [1194059832] = 'v_44_1_master_refl', + [-1441849776] = 'v_44_1_master_wait', + [2130628696] = 'v_44_1_master_ward', + [626896929] = 'v_44_1_master_wcha', + [1054259336] = 'v_44_1_master_wrefl', + [-377462278] = 'v_44_1_son_deca', + [-2021571148] = 'v_44_1_son_deta', + [-1320728955] = 'v_44_1_son_item', + [985964044] = 'v_44_1_son_swap', + [1102246587] = 'v_44_1_wc_deca', + [1767658141] = 'v_44_1_wc_deta', + [1810052538] = 'v_44_1_wc_mirr', + [1002783348] = 'v_44_1_wc_wall', + [-603630987] = 'v_44_cablemesh1486013_tstd', + [1941070416] = 'v_44_d_chand', + [1607341789] = 'v_44_d_emis', + [1480808153] = 'v_44_d_items_over', + [-2101628217] = 'v_44_dine_deca', + [1271607691] = 'v_44_dine_deta', + [226695967] = 'v_44_fakewindow007', + [-1288601804] = 'v_44_fakewindow1', + [-1789181048] = 'v_44_fakewindow2', + [-2033342867] = 'v_44_fakewindow3', + [2039385071] = 'v_44_fakewindow4', + [-599895731] = 'v_44_fakewindow5', + [-855854390] = 'v_44_fakewindow6', + [-86571393] = 'v_44_g_cor_blen', + [-328127049] = 'v_44_g_cor_deta', + [859338990] = 'v_44_g_fron_deca', + [143641345] = 'v_44_g_fron_deta', + [-1389695856] = 'v_44_g_fron_refl', + [-1798546221] = 'v_44_g_gara_deca', + [-24207526] = 'v_44_g_gara_deta', + [2093200767] = 'v_44_g_gara_ref', + [957428350] = 'v_44_g_gara_shad', + [-1226797095] = 'v_44_g_hall_deca', + [376085519] = 'v_44_g_hall_detail', + [779624795] = 'v_44_g_hall_emis', + [1185186973] = 'v_44_g_hall_stairs', + [-1092137679] = 'v_44_g_kitche_deca', + [-784892147] = 'v_44_g_kitche_deca1', + [-1213368531] = 'v_44_g_kitche_deta', + [1322076740] = 'v_44_g_kitche_refl', + [-787792751] = 'v_44_g_kitche_shad', + [407181954] = 'v_44_g_scubagear', + [-368474459] = 'v_44_garage_shell', + [2050258850] = 'v_44_int_v_bit', + [-1685707747] = 'v_44_kitc_chand', + [309845291] = 'v_44_kitch_moved', + [-1636347576] = 'v_44_kitche_cables', + [-245883976] = 'v_44_kitche_units', + [1655360555] = 'v_44_lounge_deca', + [948173474] = 'v_44_lounge_decal', + [-811780342] = 'v_44_lounge_deta', + [-656201850] = 'v_44_lounge_items', + [1428487575] = 'v_44_lounge_movebot', + [-133604724] = 'v_44_lounge_movepic', + [-948332355] = 'v_44_lounge_photos', + [62722912] = 'v_44_lounge_refl', + [1963262044] = 'v_44_m_clothes', + [-819268198] = 'v_44_m_daught_over', + [-825301026] = 'v_44_m_premier', + [-1762306153] = 'v_44_m_spyglasses', + [310112611] = 'v_44_master_movebot', + [-972728387] = 'v_44_planeticket', + [331763873] = 'v_44_s_posters', + [575284108] = 'v_44_shell_dt', + [221861893] = 'v_44_shell_refl', + [2101193759] = 'v_44_shell', + [-906623003] = 'v_44_shell2_mb_ward_refl', + [-1969983968] = 'v_44_shell2_mb_wind_refl', + [1030930191] = 'v_44_shell2_refl', + [328315379] = 'v_44_shell2', + [-215599798] = 'v_44_son_clutter', + [1858462547] = 'v_45_cables', + [-337385721] = 'v_45_cables2', + [-567985218] = 'v_45_cablesshutter', + [-875734576] = 'v_45_carlift', + [581450015] = 'v_45_carparts', + [-1574975172] = 'v_45_clutter02', + [-1547808736] = 'v_45_dirtfloor', + [1968716971] = 'v_45_dirtovlay', + [159043014] = 'v_45_dirtovlay2', + [1949872034] = 'v_45_ladder', + [-2010128249] = 'v_45_ligts', + [1087962509] = 'v_45_overlay', + [-691390650] = 'v_45_overlay2', + [-262648040] = 'v_45_pipes', + [-1571990056] = 'v_45_racks', + [-1041624609] = 'v_45_reflect', + [-1326433966] = 'v_45_shadows', + [616403178] = 'v_45_shell', + [2096178034] = 'v_45_shelves', + [2054055976] = 'v_45_spraybth', + [-1380038604] = 'v_45_support', + [1855035654] = 'v_45_webs', + [-1238385403] = 'v_45_windows', + [797162962] = 'v_45_windows2', + [144907061] = 'v_45_workbench', + [161675002] = 'v_46_beams', + [2047257786] = 'v_46_beams2', + [-1935124951] = 'v_46_cardoors', + [504243844] = 'v_46_carlift', + [-250917280] = 'v_46_carlift2', + [1968759822] = 'v_46_carmd3office', + [1623115860] = 'v_46_carmd3spray', + [-1243922919] = 'v_46_carmd3stuff', + [-1021052552] = 'v_46_carmd3vents', + [144752720] = 'v_46_carmod3', + [539250710] = 'v_46_carmod3refproxy', + [886650836] = 'v_46_cm_junk', + [1774210307] = 'v_46_cm_lighting', + [-389374738] = 'v_46_cm_reflectprxy', + [1501102292] = 'v_46_cm_tyres', + [-939297918] = 'v_46_cm3dirtfloor', + [-1334322288] = 'v_46_cm3dirtfloor2', + [-1292686600] = 'v_46_cm3dirtovly', + [852661480] = 'v_46_cm3dirtovly002', + [27791528] = 'v_46_cm3dirtovly2', + [-1278768011] = 'v_46_cm3emissive', + [-1790813968] = 'v_46_cm3emissive2', + [-1493631907] = 'v_46_cm3emissive3', + [-1456647356] = 'v_46_cm3overlay', + [-926618996] = 'v_46_cm3overlay2', + [1520078393] = 'v_46_cm3overlay3', + [-636449752] = 'v_46_decal_dirt', + [1267537954] = 'v_46_elecboxes', + [882072327] = 'v_46_elecboxes2', + [-527410317] = 'v_46_frontshut', + [-108329913] = 'v_46_mainshell', + [830844734] = 'v_46_overlays', + [-1369033087] = 'v_46_overlays2', + [-2010430874] = 'v_46_paintovly', + [-600751457] = 'v_46_prepstat', + [-2019109317] = 'v_46_primedcar', + [-1264805106] = 'v_46_shadmap', + [429348217] = 'v_46_shutters', + [1512665831] = 'v_46_spraybth', + [-2042124743] = 'v_46_workbench', + [-1531225547] = 'v_47_celights01', + [1852665242] = 'v_47_celights02', + [1468476797] = 'v_47_dec004', + [1640382971] = 'v_47_dec005', + [811437701] = 'v_47_dec01', + [1670247653] = 'v_47_dec02', + [1439160665] = 'v_47_dec03', + [-733190093] = 'v_47_dust_sheets', + [-1345348454] = 'v_47_dust_sheets001', + [1924923844] = 'v_47_dustsheet02', + [744458711] = 'v_47_frontdesk', + [1083112893] = 'v_47_frontdesk001', + [-1960598019] = 'v_47_glass', + [-773060862] = 'v_47_glass001', + [-531979329] = 'v_47_glass002', + [-2045579439] = 'v_47_glass003', + [1407453940] = 'v_47_glass004', + [-257961210] = 'v_47_map003', + [-26677608] = 'v_47_map004', + [722885611] = 'v_47_map01', + [1019412292] = 'v_47_map02', + [-1190483873] = 'v_47_overlay002', + [-1752420463] = 'v_47_overlay01', + [-801202192] = 'v_47_refit_shell', + [2077033144] = 'v_47_seats', + [877791843] = 'v_47_seats001', + [441894259] = 'v_47_shelves002', + [1077333982] = 'v_47_shelves01', + [-842919620] = 'v_47_sheriff_shell', + [-1482994655] = 'v_47_sheriff2_ext', + [1355736537] = 'v_47_sheriff2_shell', + [-396400031] = 'v_47_sheriffdet002', + [-577415987] = 'v_47_sheriffdet003', + [-884292749] = 'v_47_sheriffdet01', + [-607415060] = 'v_47_shrfemsv01', + [654479483] = 'v_47_stairs', + [97826250] = 'v_47_striplights', + [2128294516] = 'v_47_striplights001', + [665442498] = 'v_47_trash01', + [770696526] = 'v_47_trash02', + [-1879404595] = 'v_48_bas_elev', + [-83132045] = 'v_48_corr_light001', + [817753303] = 'v_48_corr_light002', + [1719654490] = 'v_48_corr_light003', + [233318188] = 'v_48_corr_light004', + [1133843077] = 'v_48_corr_light005', + [2038660705] = 'v_48_corr_light006', + [1564145712] = 'v_48_dirt_dec_crdr', + [1276713199] = 'v_48_elev_sec006', + [-1056424463] = 'v_48_elev_shell', + [-1767538381] = 'v_48_emerg_light_a', + [-1462098532] = 'v_48_emerg_light_b', + [1331535383] = 'v_48_fib_embb099', + [-898425895] = 'v_48_fibas_door', + [203165608] = 'v_48_fibas_pipes', + [-307754612] = 'v_48_fibas_vents', + [-590224292] = 'v_48_fibas_vents2', + [1125088331] = 'v_48_glass_top', + [1721189644] = 'v_48_glass', + [-1599821315] = 'v_48_gnd_shell', + [139806946] = 'v_48_halldirt', + [-903175384] = 'v_48_ivy01', + [1878781640] = 'v_48_ivy02', + [1565346155] = 'v_48_ivy03', + [-1534666783] = 'v_48_ivy04', + [-1082929938] = 'v_48_lob_crest', + [1757350943] = 'v_48_lob_det', + [864543808] = 'v_48_lobplants', + [-1750450153] = 'v_48_plantsentrance01', + [395940899] = 'v_48_pot_plant02', + [2059137229] = 'v_48_recp_det', + [-1585333391] = 'v_48_recp_planter', + [-2029972300] = 'v_48_recp_seats', + [-630932061] = 'v_48_refl_prxy', + [-2115103997] = 'v_48_stair_shell001', + [807634909] = 'v_48_stairs03', + [1306566297] = 'v_48_turnstyle005', + [-696214800] = 'v_48_wall_det01', + [-1155319973] = 'v_49_cables1', + [-861513119] = 'v_49_cables2', + [-596903444] = 'v_49_cables3', + [51222312] = 'v_49_motelduct005', + [-335052794] = 'v_49_motelmp_bed', + [-215145766] = 'v_49_motelmp_clothes', + [-1940280087] = 'v_49_motelmp_curtains', + [-1017054453] = 'v_49_motelmp_glass', + [-482074621] = 'v_49_motelmp_lshell', + [1876289231] = 'v_49_motelmp_mirror', + [261852243] = 'v_49_motelmp_reflect', + [-425183348] = 'v_49_motelmp_stuff', + [1096169341] = 'v_49_neonsign', + [-592386971] = 'v_49_shadowmap', + [-1798473163] = 'v_49_tat2chair', + [-1265420167] = 'v_49_tat2dirt', + [-1609186127] = 'v_49_tat2emissives', + [-1880537367] = 'v_49_tat2lighting', + [1135844065] = 'v_49_tat2pipes', + [1081670085] = 'v_49_tat2reflect', + [-1311365508] = 'v_49_tat2shell', + [-1242630427] = 'v_49_tat2stuff', + [-192715916] = 'v_49_tat2windows', + [-332995421] = 'v_5_b_arch', + [150237004] = 'v_5_b_atm1', + [-239124254] = 'v_5_b_atm2', + [-16252138] = 'v_5_b_cornice1', + [290105243] = 'v_5_b_cornice2', + [1479521636] = 'v_5_b_cornice5', + [568670825] = 'v_5_b_counter1', + [559893900] = 'v_5_b_lamps', + [1225548151] = 'v_5_bank_mirrorfloor', + [464077820] = 'v_5_bank_shell', + [-576553415] = 'v_5_bankarches', + [-979737978] = 'v_5_basmntovrly', + [-1304090349] = 'v_5_bbalistrade1', + [-671320959] = 'v_5_bbalistrade2', + [-767354546] = 'v_5_bbanister03', + [-1285519105] = 'v_5_bbanister1', + [1062493828] = 'v_5_bcashfurnish', + [1267148488] = 'v_5_bdivide', + [243651649] = 'v_5_bdoorframe1', + [741969832] = 'v_5_bdoorframe3', + [1205946103] = 'v_5_bdoorframe5', + [1006317363] = 'v_5_bdoorframe6', + [-1667633037] = 'v_5_bdoorframe7', + [-825470550] = 'v_5_bentornlamp', + [-1259359995] = 'v_5_bfurniture', + [1038676414] = 'v_5_bfurniture02', + [796153045] = 'v_5_bfurniture03', + [596404134] = 'v_5_borntelamp', + [-1232158736] = 'v_5_borntelamp2', + [-1076309372] = 'v_5_borntelamp3', + [-775784873] = 'v_5_borntelamp4', + [1714465921] = 'v_5_brailing', + [-573183536] = 'v_5_broundtable', + [705148627] = 'v_5_bsafebars', + [-1623607826] = 'v_5_bsafeframe', + [510288199] = 'v_5_bsecurity', + [1659123672] = 'v_5_bskirt', + [-1589164314] = 'v_5_bstairs2', + [1121726475] = 'v_5_btable1', + [957947013] = 'v_5_btable2', + [1884138103] = 'v_5_btables002', + [-1336818575] = 'v_5_btellerglass', + [-1276906522] = 'v_5_dadorail', + [-444869506] = 'v_5_decalshadows1', + [423208588] = 'v_5_decalshadows10', + [937195842] = 'v_5_decalshadows2', + [-909304543] = 'v_5_decalshadows3', + [-24607077] = 'v_5_decalshadows4', + [707845611] = 'v_5_decalshadows5', + [1662242736] = 'v_5_decalshadows6', + [1842668850] = 'v_5_decalshadows7', + [1169036517] = 'v_5_decalshadows8', + [1332750441] = 'v_5_decalshadows9', + [1306192136] = 'v_5_depo_box01_lid', + [583968031] = 'v_5_depo_box01', + [1584275927] = 'v_5_lift01', + [-2054523572] = 'v_5_mirror_reflect', + [-1061354586] = 'v_5_normovly', + [1241038820] = 'v_5_offwind', + [-734508660] = 'v_5_paintings', + [-78459657] = 'v_5_reflectproxy', + [-1967811035] = 'v_5_safetable', + [-970006642] = 'v_5_safetable001', + [-428924892] = 'v_5_shadowblocker', + [807488662] = 'v_5_stairovrly', + [-245703102] = 'v_5_vaultdetail', + [229871327] = 'v_5_vaultoverlays001', + [331104727] = 'v_5_vlt_desk', + [-1422138404] = 'v_5_wall_shadow', + [-1668043190] = 'v_5_windemovly008', + [-1308402120] = 'v_5_windemovly10', + [965111188] = 'v_5_windemovly3', + [551926871] = 'v_5_windemovly4', + [184586381] = 'v_5_windemovly5', + [1950868250] = 'v_5_windemovly6', + [1720534949] = 'v_5_windemovly7', + [131612235] = 'v_5_windemovlyent', + [-442839627] = 'v_50_chairend', + [748053245] = 'v_50_chairend001', + [37490249] = 'v_50_chairend002', + [234563015] = 'v_50_chairend003', + [1673941344] = 'v_50_chairend004', + [1902800040] = 'v_50_chairend005', + [1623542674] = 'v_50_chairend006', + [1854564124] = 'v_50_chairend007', + [89855163] = 'v_50_chairend008', + [-1013968366] = 'v_50_chairend011', + [-811948057] = 'v_50_chairend034', + [-1278900604] = 'v_50_chairend133', + [-1584602605] = 'v_50_chairend134', + [52789412] = 'v_50_chairs', + [1080203179] = 'v_50_chairs1', + [-1948995954] = 'v_50_chairs3', + [1925446765] = 'v_50_chairs4', + [1377221395] = 'v_50_chairs6', + [1575484037] = 'v_50_chairsingle', + [-645600804] = 'v_50_chairsingle002', + [-941767026] = 'v_50_chairsingle003', + [2019961352] = 'v_50_chairsingle020', + [1677918530] = 'v_50_chairsingle021', + [-1714590506] = 'v_50_chairsingle022', + [-2020685735] = 'v_50_chairsingle023', + [-753697626] = 'v_50_chairsingle12', + [642687771] = 'v_50_chairsingle18', + [950618064] = 'v_50_chairsingle19', + [-938495990] = 'v_50_chairsingle2', + [567758572] = 'v_50_curtains', + [2121235493] = 'v_50_floornwalls', + [1895042181] = 'v_50_rails00', + [2126882856] = 'v_50_rails01', + [-807941553] = 'v_50_rails02', + [-1236887763] = 'v_50_rails03', + [-906248553] = 'v_50_rails04', + [635181763] = 'v_50_speakrsdetails', + [1663940642] = 'v_51_bench', + [-1290059459] = 'v_51_benches', + [204112359] = 'v_51_briefsbox', + [2099753992] = 'v_51_cable', + [-1429935299] = 'v_51_cable2', + [-661698863] = 'v_51_cable3', + [1100241117] = 'v_51_clothes04', + [-1373719477] = 'v_51_clothing01', + [-1057433089] = 'v_51_clothing02', + [-791184964] = 'v_51_clothing03', + [1652366601] = 'v_51_clothing04', + [1967473305] = 'v_51_clothing05', + [-2029853164] = 'v_51_clothing06', + [-1360285111] = 'v_51_clothing07', + [-1591142716] = 'v_51_clothing08', + [-637210838] = 'v_51_counter', + [195744431] = 'v_51_decdirt', + [1546504755] = 'v_51_det_back', + [862861026] = 'v_51_ducttapeshad', + [-67044927] = 'v_51_lights010', + [-1289736192] = 'v_51_main_det', + [613850081] = 'v_51_main_ovl', + [-2071896745] = 'v_51_masks', + [-1908825210] = 'v_51_masks01', + [-90870231] = 'v_51_mirror', + [-1557617926] = 'v_51_mirror2', + [-1213527926] = 'v_51_posters', + [1619425394] = 'v_51_reflectproxy', + [1614554863] = 'v_51_rubbermat', + [-186245286] = 'v_51_rugs', + [338235866] = 'v_51_store_ovl', + [1541563655] = 'v_51_v_clotheslo', + [-2146544219] = 'v_51_v_shadowmap', + [1860724536] = 'v_51_v_shadowmap2', + [939895995] = 'v_51_windows01', + [672795876] = 'v_51_windows02', + [1440278625] = 'v_51_windows03', + [2099984133] = 'v_51_windows04', + [1793888904] = 'v_51_windows05', + [-2113852240] = 'v_52_cables01', + [-2023648125] = 'v_52_cablesupporta', + [-1835160837] = 'v_52_cablesupportb', + [578757984] = 'v_52_cashcount', + [1348852804] = 'v_52_clothing01', + [296638023] = 'v_52_clothing013', + [1545597880] = 'v_52_clothing02', + [-1975726143] = 'v_52_clothing04', + [-1821646305] = 'v_52_clothing05', + [-548668966] = 'v_52_clothing07', + [-1415736706] = 'v_52_clothing08', + [-1167118303] = 'v_52_clothing09', + [-260924745] = 'v_52_clothing12', + [855097084] = 'v_52_decdirtovlys', + [-1933391437] = 'v_52_det003', + [-1725491743] = 'v_52_detail4', + [-591429182] = 'v_52_disp_table01', + [1278230682] = 'v_52_displayfront', + [320079566] = 'v_52_normalonly', + [-61764086] = 'v_52_pendant_light2', + [2037680218] = 'v_52_pendant_lights', + [1229958970] = 'v_52_puffa', + [-1470670240] = 'v_52_reflectproxy', + [-1930847818] = 'v_52_rug01', + [420374239] = 'v_52_shadowmap', + [-1293181688] = 'v_52_shell', + [795391854] = 'v_52_shirts', + [1955171849] = 'v_52_shoeboxes', + [-607033815] = 'v_52_shoeboxes2', + [1106271416] = 'v_52_trouserdisp', + [673203112] = 'v_52_varsity', + [-167679890] = 'v_52_vent_det01', + [-1782577244] = 'v_52_window01', + [-1014373577] = 'v_52_window02', + [-1912178643] = 'v_52_window03', + [1606196122] = 'v_52_window04', + [-1433456314] = 'v_52_window05', + [2089178413] = 'v_52_window06', + [1234630782] = 'v_53_cglassshalves', + [428773553] = 'v_53_changecurts', + [1058088968] = 'v_53_chromestuff', + [-61865970] = 'v_53_clothesbits', + [-991699164] = 'v_53_clotheshilights', + [1762381766] = 'v_53_counterdressing', + [1091855058] = 'v_53_dirt', + [348545346] = 'v_53_displaycases', + [-938724910] = 'v_53_displayitems', + [-752656833] = 'v_53_displayitems01', + [1689333893] = 'v_53_donotexport_01', + [760358374] = 'v_53_hishop_pipes', + [1795136864] = 'v_53_lightpanels', + [613736590] = 'v_53_maindisplay', + [-1989843992] = 'v_53_menmags', + [-2058352756] = 'v_53_menmags01', + [-313469562] = 'v_53_pantsshelf', + [-1014126908] = 'v_53_picture', + [-797093184] = 'v_53_screens', + [-1280786523] = 'v_53_set_table', + [542384633] = 'v_53_shadflorr_roof', + [1203040103] = 'v_53_shadwalls', + [1205023129] = 'v_53_shoes', + [1715900321] = 'v_53_shop_doorframe', + [568988812] = 'v_53_shop_glass', + [-1846527381] = 'v_53_shop_refl', + [1612802001] = 'v_53_shop_shell', + [-1840542560] = 'v_53_shop_till', + [1324266705] = 'v_53_shop_vents', + [-918002092] = 'v_53_shop_windowframes', + [1942963397] = 'v_53_store_trim', + [175871830] = 'v_53_stripchangemirror', + [-541424662] = 'v_53_till', + [-793402124] = 'v_53_window_access', + [-1199017200] = 'v_53_window_access1', + [-1040632658] = 'v_53_windowdisplays', + [-619597835] = 'v_53_windowplinth', + [1393727645] = 'v_54_bkr_mesh_delta_em', + [-1010565372] = 'v_54_bkr_mesh_delta', + [547257518] = 'v_54_bkr_mesh_emissive', + [844983191] = 'v_54_bkr_mesh_homebrew', + [882198628] = 'v_54_bkr_mesh_seat', + [1655365292] = 'v_54_bkr_mesh_toyplastic', + [-783882036] = 'v_54_bkr_over_decal', + [1810516697] = 'v_54_bkr_over_normal', + [1526384847] = 'v_54_bkr_over_shadow', + [868217097] = 'v_54_bkr_time_windows', + [1544154729] = 'v_54_exterior_mesh', + [-1990590029] = 'v_54_hall_cctv', + [875997874] = 'v_54_hall_mesh_berometer', + [747266584] = 'v_54_hall_mesh_cage', + [113366963] = 'v_54_hall_mesh_delta_em', + [649878197] = 'v_54_hall_mesh_delta', + [482974471] = 'v_54_hall_mesh_frames', + [310848981] = 'v_54_hall_mesh_pile_a', + [451284019] = 'v_54_hall_mesh_storage', + [-516997872] = 'v_54_hall_over_decal', + [-1431458925] = 'v_54_hall_over_normal', + [938207746] = 'v_54_hall_over_pile_a', + [-1383360591] = 'v_54_lng_boxes_a', + [1441916477] = 'v_54_lng_cctv', + [-1073846645] = 'v_54_lng_curtains', + [-971142445] = 'v_54_lng_delta2', + [-1197906604] = 'v_54_lng_mesh_bigscreen', + [1658335751] = 'v_54_lng_mesh_compmonitor', + [1593119775] = 'v_54_lng_mesh_light', + [-1731917071] = 'v_54_lng_mesh_maindesk', + [-1091774632] = 'v_54_lng_mesh_rugs', + [-1097284880] = 'v_54_lng_mesh_smalldeskobjects', + [617533868] = 'v_54_lng_mirror_emissives', + [-871897574] = 'v_54_lng_posters', + [723823723] = 'v_54_lng_projector', + [355290615] = 'v_54_lng_serverrack', + [-957469236] = 'v_54_lng_shelfa', + [-270781819] = 'v_54_lng_smalldesk', + [-1942848427] = 'v_54_lng_time_lights', + [-824466368] = 'v_54_lng_time_windows', + [-299568820] = 'v_54_mnr_over_decal', + [-1958168300] = 'v_54_mnr_over_normal', + [-1669688922] = 'v_54_mnr_over_shadow', + [1370729474] = 'v_54_pinboard', + [-56595934] = 'v_54_shell_doorframe', + [1997308323] = 'v_54_shell_main', + [-937170007] = 'v_55__exterior_', + [467259943] = 'v_55_rollerdoor', + [199611853] = 'v_55_shell', + [-438552394] = 'v_55_tor_mesh_airvents', + [2080022438] = 'v_55_tor_mesh_backoffice', + [-2065388425] = 'v_55_tor_mesh_forklift', + [816010501] = 'v_55_tor_mesh_groupa', + [2013029274] = 'v_55_tor_mesh_groupb', + [1296371244] = 'v_55_tor_mesh_groupc', + [-1818551593] = 'v_55_tor_mesh_groupd', + [-1563051700] = 'v_55_tor_mesh_groupe', + [-1420264535] = 'v_55_tor_mesh_highwindow', + [1834851376] = 'v_55_tor_mesh_lights', + [-1516231238] = 'v_55_tor_mesh_lowwall', + [-1120250614] = 'v_55_tor_mesh_pipes', + [-674036594] = 'v_55_tor_mesh_sidewindows', + [-543597348] = 'v_55_tor_mesh_sidewindowsd', + [-1380332413] = 'v_55_tor_mesh_stiars', + [2019373034] = 'v_55_tor_mesh_structurebottom', + [-401760368] = 'v_55_tor_mesh_structuretop', + [1792141583] = 'v_55_tor_mesh_worklight', + [-765302674] = 'v_55_tor_over_decal_dirt', + [-1626568503] = 'v_55_tor_over_decal_puddles', + [-2033448783] = 'v_55_tor_over_decal', + [-101437541] = 'v_56_ao_corridor_room', + [-1814866825] = 'v_56_ao_dining_room', + [1722796206] = 'v_56_ao_living_room', + [-130533721] = 'v_56_cor_deta', + [921044480] = 'v_56_cor_over', + [-725622647] = 'v_56_dining_deta', + [511723134] = 'v_56_dining_dyn', + [-1991200076] = 'v_56_dining_over', + [1321266039] = 'v_56_fighorse_scale', + [1404935669] = 'v_56_living_deta', + [938452204] = 'v_56_living_over', + [-313356836] = 'v_56_ranch_shell', + [1786780726] = 'v_57_auntframe', + [-1716648575] = 'v_57_auntlemon', + [-1026666068] = 'v_57_auntmirror', + [-1128902437] = 'v_57_auntshad001', + [17059832] = 'v_57_auntstuff', + [768722703] = 'v_57_auntstuff2', + [-172106873] = 'v_57_bathdirt', + [234625768] = 'v_57_bathemon', + [2143564554] = 'v_57_bathmirror', + [1302461076] = 'v_57_bathshad001', + [1122713396] = 'v_57_bathstuff', + [1755250899] = 'v_57_bedrmemon', + [2053712194] = 'v_57_coffeetable', + [1335915655] = 'v_57_dineshad', + [1626082749] = 'v_57_diningdecals', + [-1349269588] = 'v_57_diningframe', + [278875485] = 'v_57_diningplant', + [824205059] = 'v_57_diningstuff', + [-1475877830] = 'v_57_diningstuffon', + [1997940750] = 'v_57_dinnormal', + [336922355] = 'v_57_ducttape', + [993991117] = 'v_57_f_bandana', + [1317732296] = 'v_57_frankcable', + [-521696977] = 'v_57_frankcable2', + [-1047999365] = 'v_57_frankclothes', + [-949580402] = 'v_57_frankcurtain1', + [1456493344] = 'v_57_frankdirt', + [-1262086425] = 'v_57_frankleftstuff', + [917787635] = 'v_57_franklin_int', + [1131923037] = 'v_57_frankposters', + [1050404882] = 'v_57_frankshad', + [15558695] = 'v_57_frankstuff', + [-755500851] = 'v_57_frankstuff003', + [2121384427] = 'v_57_frankunits', + [1729372483] = 'v_57_frkbedframe', + [631698887] = 'v_57_frnthallemon', + [511833782] = 'v_57_frntshad', + [-2133057089] = 'v_57_hallcable', + [-1252219291] = 'v_57_hallemon', + [-854015857] = 'v_57_hallnormal', + [-512432942] = 'v_57_hallshas', + [-1516616312] = 'v_57_hallstuff', + [-1109968007] = 'v_57_kitchdirt', + [-2081417855] = 'v_57_kitchdirt2', + [226079076] = 'v_57_kitchframe', + [-1226018182] = 'v_57_kitchglass1', + [-1835849272] = 'v_57_kitchglass2', + [-1154762088] = 'v_57_kitchlighton', + [-1948971639] = 'v_57_kitchnormal', + [1290774842] = 'v_57_kitchshad001', + [-244921195] = 'v_57_kitchstuff', + [-1274061000] = 'v_57_lamp2outeron', + [98229261] = 'v_57_lampinneron', + [-449524544] = 'v_57_lampouteron', + [-1351323615] = 'v_57_livcables', + [-981866147] = 'v_57_livingframe', + [1627895450] = 'v_57_livnormal', + [-483156427] = 'v_57_livshad001', + [1036901082] = 'v_57_livstuff', + [-531136083] = 'v_57_livstuff003', + [1358524949] = 'v_57_livstuff2', + [1505019131] = 'v_57_mirrorfloor', + [-1684666572] = 'v_57_mirrorproxy', + [208296774] = 'v_57_mirrorproxy1', + [574195428] = 'v_57_mirrorproxy2', + [1341743715] = 'v_57_mirrorproxy3', + [1069990398] = 'v_57_mirrorproxy4', + [-527835487] = 'v_57_netcurt1', + [-228486646] = 'v_57_plant', + [1160153780] = 'v_57_porchnormal', + [-1555343081] = 'v_57_porchstuff', + [-802202493] = 'v_57_reflect', + [91528563] = 'v_57_sideshad', + [2114993182] = 'v_57_vestframe', + [-1476548081] = 'v_57_wallcreases', + [-334330329] = 'v_58_alienhead', + [1935736836] = 'v_58_ao', + [162747879] = 'v_58_corridor', + [-1897666914] = 'v_58_drinks', + [2060799353] = 'v_58_head', + [-1832590572] = 'v_58_headdress', + [-1698452865] = 'v_58_monstrmask1', + [606606492] = 'v_58_rugs', + [-210002985] = 'v_58_sarcophagus', + [859648077] = 'v_58_sol_boa', + [-1801807238] = 'v_58_soloff_emis', + [-1317386185] = 'v_58_soloff_furn', + [-1892473334] = 'v_58_soloff_gchair', + [757888276] = 'v_58_soloff_gchair2', + [-391161235] = 'v_58_soloff_geomns', + [1589728160] = 'v_58_soloff_offchair', + [-184343296] = 'v_58_soloff_shdblk', + [-1677365426] = 'v_58_soloff_shell', + [2020363656] = 'v_58_sols_reflect', + [-1777267057] = 'v_59_dirtfloor', + [1420518451] = 'v_59_dockcontshell', + [-878933222] = 'v_59_doorframes', + [1807657625] = 'v_59_filing', + [1279897669] = 'v_59_innerframes', + [1157040670] = 'v_59_machines', + [314714432] = 'v_59_pipes', + [-604410777] = 'v_59_pipes2', + [-699562939] = 'v_59_reflectproxy', + [43994448] = 'v_59_shadowmap', + [-66099491] = 'v_59_signoverlay2', + [123647280] = 'v_59_stains', + [1418164877] = 'v_59_supportbeams', + [403426656] = 'v_59_supportbeams2', + [1870962410] = 'v_59_tz', + [1080704612] = 'v_60_ap1_01_b_bloodsplat', + [22929548] = 'v_60_changepipe', + [-238747509] = 'v_60_corrpipes', + [-748871949] = 'v_60_crane', + [1541097548] = 'v_60_dirt1_change', + [885772014] = 'v_60_dirt1_store', + [-1819929403] = 'v_60_dirt3_hanger', + [-530533053] = 'v_60_ducttapegeo', + [-138182218] = 'v_60_electric_corr', + [1973108594] = 'v_60_glue1_change', + [1394080893] = 'v_60_glue1_corr', + [926968246] = 'v_60_glue1_hanger', + [1083401690] = 'v_60_glue1_store', + [-1208661201] = 'v_60_hangerint', + [253291221] = 'v_60_hngrovrnrmls', + [-422750350] = 'v_60_markings_d', + [1696383932] = 'v_60_markings', + [11901895] = 'v_60_markings2', + [1899019663] = 'v_60_newsigns', + [-116438425] = 'v_60_pipes', + [-1225273881] = 'v_60_pipesb', + [-1604588562] = 'v_60_rails', + [346779164] = 'v_60_relfection', + [-623780476] = 'v_60_relfectioncorr', + [-1715890600] = 'v_60_shadowmap', + [489650067] = 'v_60_shadowmap2', + [929475585] = 'v_60_shadowmap3', + [1108984179] = 'v_60_shadowmap4', + [-1568777802] = 'v_60_storepipe', + [1990091017] = 'v_60_supporta', + [-155328186] = 'v_60_supportb', + [591084100] = 'v_60_supportc', + [302913514] = 'v_60_supportd', + [2137713363] = 'v_61__exterior_', + [1518818332] = 'v_61_bath_over_dec', + [1611662162] = 'v_61_bd1_binbag', + [-1166568140] = 'v_61_bd1_mesh_curtains', + [1844071059] = 'v_61_bd1_mesh_delta', + [1446483275] = 'v_61_bd1_mesh_door', + [757482499] = 'v_61_bd1_mesh_doorswap', + [-1945474350] = 'v_61_bd1_mesh_makeup', + [-785310295] = 'v_61_bd1_mesh_mess', + [-1189355780] = 'v_61_bd1_mesh_pillows', + [388525717] = 'v_61_bd1_mesh_props', + [480122796] = 'v_61_bd1_mesh_rosevase', + [1357463931] = 'v_61_bd1_mesh_sheet', + [2091093913] = 'v_61_bd1_mesh_shoes', + [1418207156] = 'v_61_bd1_over_decal', + [477986972] = 'v_61_bd1_over_normal', + [-1031117413] = 'v_61_bd1_over_shadow_ore', + [-884387580] = 'v_61_bd2_mesh_bed', + [280400238] = 'v_61_bd2_mesh_cupboard', + [142111978] = 'v_61_bd2_mesh_curtains', + [1084998743] = 'v_61_bd2_mesh_darts', + [1594467047] = 'v_61_bd2_mesh_delta', + [-2012977052] = 'v_61_bd2_mesh_drawers_mess', + [1613082326] = 'v_61_bd2_mesh_drawers', + [2113742765] = 'v_61_bd2_mesh_roadsign', + [-609171427] = 'v_61_bd2_mesh_yogamat', + [-775441932] = 'v_61_bd2_over_shadow_clean', + [-708580523] = 'v_61_bd2_over_shadow', + [543486909] = 'v_61_bed_over_decal_scuz1', + [311626964] = 'v_61_bed1_mesh_bottles', + [709687847] = 'v_61_bed1_mesh_clothes', + [-1876221326] = 'v_61_bed1_mesh_clothesmess', + [-673381106] = 'v_61_bed1_mesh_drugstuff', + [-1438519050] = 'v_61_bed2_mesh_drugstuff001', + [1953039805] = 'v_61_bed2_mesh_lampshade', + [1639198297] = 'v_61_bed2_over_normal', + [482561674] = 'v_61_bed2_over_rips', + [-523070522] = 'v_61_bed2_over_shadows', + [-1802169420] = 'v_61_bth_mesh_bath', + [-2037286465] = 'v_61_bth_mesh_delta', + [408918587] = 'v_61_bth_mesh_mess_a', + [505652675] = 'v_61_bth_mesh_mess_b', + [-1293473665] = 'v_61_bth_mesh_mirror', + [-196728696] = 'v_61_bth_mesh_sexdoll', + [-1285212360] = 'v_61_bth_mesh_sink', + [-1616004246] = 'v_61_bth_mesh_toilet_clean', + [392210681] = 'v_61_bth_mesh_toilet_messy', + [1647749396] = 'v_61_bth_mesh_toilet', + [79400054] = 'v_61_bth_mesh_toiletroll', + [-1807122051] = 'v_61_bth_mesh_window', + [929898051] = 'v_61_bth_over_decal', + [-1013907700] = 'v_61_bth_over_shadow', + [-1295567323] = 'v_61_fdr_over_decal', + [1131513391] = 'v_61_fnt_mesh_delta', + [-1731738398] = 'v_61_fnt_mesh_hooks', + [84893414] = 'v_61_fnt_mesh_props', + [-385929439] = 'v_61_fnt_mesh_shitmarks', + [822527010] = 'v_61_fnt_over_normal', + [94775874] = 'v_61_hal_over_decal_shit', + [1805804919] = 'v_61_hall_mesh_frames', + [-767474291] = 'v_61_hall_mesh_sideboard', + [-2036582846] = 'v_61_hall_mesh_sidesmess', + [-773484123] = 'v_61_hall_mesh_sidestuff', + [138914562] = 'v_61_hall_mesh_starfish', + [250391664] = 'v_61_hall_over_decal_scuz', + [648532195] = 'v_61_hlw_mesh_cdoor', + [-313230689] = 'v_61_hlw_mesh_delta', + [-632791604] = 'v_61_hlw_mesh_doorbroken', + [-1580814337] = 'v_61_hlw_over_decal_mural', + [538034586] = 'v_61_hlw_over_decal_muraldirty', + [-77613157] = 'v_61_hlw_over_decal', + [-2022419703] = 'v_61_hlw_over_normals', + [-1171601244] = 'v_61_kit_over_dec_cruma', + [-2003081850] = 'v_61_kit_over_dec_crumb', + [1449230611] = 'v_61_kit_over_dec_crumc', + [-1457944455] = 'v_61_kit_over_decal_scuz', + [1793827806] = 'v_61_kitc_mesh_board_a', + [-979021128] = 'v_61_kitc_mesh_lights', + [-667469076] = 'v_61_kitch_pizza', + [1761880785] = 'v_61_kitn_mesh_plate', + [17626776] = 'v_61_ktcn_mesh_dildo', + [1038671690] = 'v_61_ktcn_mesh_mess_01', + [1200485012] = 'v_61_ktcn_mesh_mess_02', + [427562609] = 'v_61_ktcn_mesh_mess_03', + [1669529259] = 'v_61_ktm_mesh_delta', + [1718739564] = 'v_61_ktn_mesh_delta', + [-1005744552] = 'v_61_ktn_mesh_fridge', + [47125216] = 'v_61_ktn_mesh_lights', + [-1546387271] = 'v_61_ktn_mesh_windows', + [-402152235] = 'v_61_ktn_over_decal', + [-1602246812] = 'v_61_ktn_over_normal', + [1928457055] = 'v_61_lgn_mesh_wickerbasket', + [-525918638] = 'v_61_lng_cancrsh1', + [565763468] = 'v_61_lng_cigends', + [741170851] = 'v_61_lng_cigends2', + [-694793497] = 'v_61_lng_mesh_bottles', + [-474405135] = 'v_61_lng_mesh_case', + [1608089824] = 'v_61_lng_mesh_coffeetable', + [-1359821566] = 'v_61_lng_mesh_comptable', + [-358619935] = 'v_61_lng_mesh_curtains', + [2022476080] = 'v_61_lng_mesh_delta', + [1436570020] = 'v_61_lng_mesh_drugs', + [845861283] = 'v_61_lng_mesh_fireplace', + [973967084] = 'v_61_lng_mesh_mags', + [-2035397478] = 'v_61_lng_mesh_pics', + [-415366012] = 'v_61_lng_mesh_picsmess', + [-1103260977] = 'v_61_lng_mesh_pizza', + [-1311752277] = 'v_61_lng_mesh_props', + [851896128] = 'v_61_lng_mesh_shell_scuzz', + [1993156416] = 'v_61_lng_mesh_sidetable', + [-562165268] = 'v_61_lng_mesh_smalltable', + [-563027917] = 'v_61_lng_mesh_table_scuz', + [443123335] = 'v_61_lng_mesh_unita_swap', + [1425243253] = 'v_61_lng_mesh_unita', + [-792234981] = 'v_61_lng_mesh_unitb', + [-691128751] = 'v_61_lng_mesh_unitc_items', + [-345724583] = 'v_61_lng_mesh_unitc', + [-174390940] = 'v_61_lng_mesh_windows', + [-1950819172] = 'v_61_lng_mesh_windows2', + [2024022522] = 'v_61_lng_over_dec_crum', + [-514649822] = 'v_61_lng_over_dec_crum1', + [-1949530359] = 'v_61_lng_over_decal_scuz', + [-447285510] = 'v_61_lng_over_decal_shit', + [41633680] = 'v_61_lng_over_decal_wademess', + [1491173446] = 'v_61_lng_over_decal', + [-1825560575] = 'v_61_lng_over_normal', + [230146376] = 'v_61_lng_over_shadow', + [-885413296] = 'v_61_lng_pizza', + [568906741] = 'v_61_lng_poster1', + [71571628] = 'v_61_lng_poster2', + [-1886482875] = 'v_61_lng_rugdirt', + [-392813023] = 'v_61_pizzaedge', + [-1156091599] = 'v_61_shell_doorframes', + [-415221242] = 'v_61_shell_fdframe', + [943580310] = 'v_61_shell_walls', + [442843202] = 'v_61_shell_windowback', + [1316615271] = 'v_62_ao_stad_001', + [296864375] = 'v_62_aud_det01', + [1273510187] = 'v_62_aud_door004', + [67745321] = 'v_62_aud_ovly', + [-2100164160] = 'v_62_audit_dec01', + [-214374299] = 'v_62_bannersx', + [-2006769879] = 'v_62_barrier01', + [-1859571531] = 'v_62_barrier02', + [1275340396] = 'v_62_barrier03', + [-1078176467] = 'v_62_blinds', + [375968979] = 'v_62_board01', + [-2028972481] = 'v_62_boom_mic', + [86389170] = 'v_62_bs_kiosk002', + [383309079] = 'v_62_bs_kiosk003', + [1636365449] = 'v_62_cables', + [-170778524] = 'v_62_ceiling_rig', + [412779247] = 'v_62_corrscratches002', + [-905516592] = 'v_62_corrscratches01', + [1573967657] = 'v_62_corrspec002', + [1096097330] = 'v_62_corrspec004', + [-1775527310] = 'v_62_corrspec01', + [610547425] = 'v_62_corrspec03', + [1074372275] = 'v_62_curtains', + [-1821887956] = 'v_62_ecolacup002', + [1083411584] = 'v_62_ecolacup003', + [-1717169126] = 'v_62_ecolacup01', + [-776297357] = 'v_62_fos_props01', + [1816484234] = 'v_62_fos_props03', + [337840709] = 'v_62_frame_det01', + [1483640526] = 'v_62_lightdummy002', + [-1696430965] = 'v_62_lightdummy01', + [-130828658] = 'v_62_lob_det', + [-1513771567] = 'v_62_lob_det02', + [-1668320611] = 'v_62_lobby_ovly', + [-1730040033] = 'v_62_lobby_wall', + [-1461960051] = 'v_62_lobmat', + [-70375665] = 'v_62_maze_dec003', + [-394362768] = 'v_62_maze_dec004', + [-853719333] = 'v_62_maze_dec01', + [-59431538] = 'v_62_maze_dec02', + [-830212929] = 'v_62_scratch01', + [-694204463] = 'v_62_shutter002', + [332504287] = 'v_62_shutter01', + [-482525154] = 'v_62_signs01', + [-636801606] = 'v_62_signs02', + [1008879036] = 'v_62_sm_c02', + [2144300491] = 'v_62_spec_ov01', + [-1903587729] = 'v_62_spec_ov13', + [-167756611] = 'v_62_stadium_shell', + [1700257755] = 'v_62_stadium_shellprx', + [141116573] = 'v_62_stage_dec01', + [424339040] = 'v_62_stage_dec02', + [-1093524855] = 'v_62_stairs01', + [-757314915] = 'v_62_stairs02', + [-178241029] = 'v_62_studio_light01', + [-1343670514] = 'v_62_studio_light02', + [-507771034] = 'v_62_studio_lights', + [-2051655046] = 'v_62_table', + [-687011446] = 'v_62_tunnel_damage01', + [-389501695] = 'v_62_tunnel_damage02', + [-609187467] = 'v_62_tunnel_det01', + [-371546679] = 'v_62_tunnel_det02', + [34362924] = 'v_62_tunnel_det03', + [-1129461643] = 'v_62_tunnel_ovly01', + [333543131] = 'v_62_tunnel_ovly02', + [1604186712] = 'v_62_tunnel_paint01', + [1955470396] = 'v_62_tunnel_paint02', + [-352817734] = 'v_62_tv_ovl', + [-32351998] = 'v_63_bars009', + [-925177116] = 'v_63_bars014', + [501421295] = 'v_63_bars018', + [-799443287] = 'v_63_bars022', + [-71578263] = 'v_63_bars023', + [-1379126897] = 'v_63_bars024', + [-656406606] = 'v_63_bars025', + [-420240423] = 'v_63_bars028', + [1374321097] = 'v_63_bars029', + [1336797184] = 'v_63_bars030', + [129816607] = 'v_63_bars031', + [-290937353] = 'v_63_bars032', + [579578279] = 'v_63_bsmt_lights', + [-1237445525] = 'v_63_det_005', + [615608656] = 'v_63_det_006', + [327700222] = 'v_63_det_007', + [19769929] = 'v_63_det_008', + [-1966209641] = 'v_63_det_03', + [800018263] = 'v_63_det_04', + [470132740] = 'v_63_det_05', + [1820676427] = 'v_63_dets02', + [-1936537841] = 'v_63_dirt_dec_vault', + [1475748566] = 'v_63_dirt_dec_vault01', + [947020711] = 'v_63_dirt_dec_vault02', + [901668415] = 'v_63_dirt_dec_vault03', + [1688353802] = 'v_63_dirt_dec_vault04', + [-1052006961] = 'v_63_elev_buttons', + [1280591239] = 'v_63_elev_buttons001', + [-206164994] = 'v_63_elev_det', + [-1860420486] = 'v_63_elev_det02', + [-1496094744] = 'v_63_elev_det03', + [-1768929438] = 'v_63_elev_det04', + [222649067] = 'v_63_elevbutt01', + [1165466614] = 'v_63_elevint01', + [-510986720] = 'v_63_emissives', + [1828673205] = 'v_63_fire', + [327215460] = 'v_63_n_onl_dec_vault', + [1409895293] = 'v_63_notbrd003', + [1098655323] = 'v_63_notbrd004', + [799113894] = 'v_63_notbrd005', + [-1298162326] = 'v_63_ovlcp01', + [1721369952] = 'v_63_ovlcp02', + [718722504] = 'v_63_pipes', + [55631883] = 'v_63_pipes2', + [-54682094] = 'v_63_plas_boxgt201', + [-401137081] = 'v_63_v_finalebank_proxy_hole', + [-1542325746] = 'v_63_v_finalebank_proxy', + [-1168311964] = 'v_63_v_finalebank_shell', + [-1546809441] = 'v_63_vault_det01', + [971312910] = 'v_63_vault_overl', + [2008737160] = 'v_63_vaultdec03', + [-1440730503] = 'v_63_vents', + [-905922171] = 'v_63_vents2', + [-844087068] = 'v_63_vents4', + [133926142] = 'v_63_wall_light_em', + [-179089390] = 'v_63_wall_light_em001', + [-1484180361] = 'v_63_wall_light_em002', + [317197115] = 'v_63_wall_light_em003', + [1158803342] = 'v_63_wall_light_em004', + [778617404] = 'v_63_wall_light_em005', + [-526473559] = 'v_63_wall_light_em006', + [1716728336] = 'v_63_wall_light_em007', + [1486460573] = 'v_63_wall_light_em008', + [-2013104786] = 'v_63_wall_light_em009', + [-1582291163] = 'v_63_wall_light_em010', + [1123379637] = 'v_63_wall_light_em011', + [-1040871051] = 'v_64_back_deta', + [362512880] = 'v_64_back_flyer', + [-897073688] = 'v_64_back_l_deta', + [396181365] = 'v_64_back_l_flyer', + [881593055] = 'v_64_back_l_over', + [-630136076] = 'v_64_back_l_refl', + [362620988] = 'v_64_back_over', + [-265786372] = 'v_64_back_refl', + [-1111819979] = 'v_64_back_stairs', + [-1995736244] = 'v_64_base2_deta', + [1965346367] = 'v_64_base2_over', + [1158231478] = 'v_64_base2_refl', + [2077775356] = 'v_64_cloak_deta', + [249654236] = 'v_64_cloak_over', + [1213205340] = 'v_64_dance_bar', + [265554496] = 'v_64_dance_deta', + [-1682380775] = 'v_64_dance_drum', + [2094147647] = 'v_64_dance_flyer', + [-1319134399] = 'v_64_dance_over', + [-1672696468] = 'v_64_dance_ref', + [1753268521] = 'v_64_dance_rig', + [-1459007240] = 'v_64_dance_stairs', + [1790340857] = 'v_64_entry_deta', + [356143279] = 'v_64_entry_emis001', + [-418630121] = 'v_64_entry_over', + [-1508178334] = 'v_64_entrytr_deta', + [-1457843431] = 'v_64_entrytr_over', + [989866288] = 'v_64_entrytr_refl', + [-1133260720] = 'v_64_rear_deta', + [-1719399901] = 'v_64_rear_over', + [-1005992669] = 'v_64_reartr_deta', + [-935540960] = 'v_64_reartr_over', + [-1553842646] = 'v_64_reartr_stairs', + [2029333079] = 'v_64_shell', + [-604512702] = 'v_64_side_deta', + [1858822750] = 'v_64_side_detadr', + [1620177711] = 'v_64_side_flyer', + [-1362876738] = 'v_64_side_over', + [1783784115] = 'v_64_side_refl', + [1959836458] = 'v_64_side_stairs', + [-949263939] = 'v_64_side_u_deta', + [1254732642] = 'v_64_side_u_flyer', + [-349687166] = 'v_64_side_u_over', + [1587890072] = 'v_64_side_u_refl', + [-1347831398] = 'v_64_upper_bar', + [-168315732] = 'v_64_upper_deta', + [-1547353029] = 'v_64_upper_flyer', + [61694115] = 'v_64_upper_over', + [-2081592958] = 'v_64_upper_refl', + [-1573343654] = 'v_65_cablemesh1486013_tstd', + [1447348511] = 'v_65_main_build1', + [1744661648] = 'v_65_main_build2', + [-1394411942] = 'v_65_main_build3', + [-2036028962] = 'v_65_main_build4', + [-1694018909] = 'v_65_main_build6', + [1206889573] = 'v_65_main_build7', + [291380295] = 'v_65_main_deta', + [-1741014901] = 'v_65_main_ext1', + [-1440949168] = 'v_65_main_ext2', + [-190746276] = 'v_65_main_ext3', + [-571010530] = 'v_65_main_over', + [97270453] = 'v_65_main_refl', + [-1046047214] = 'v_65_p_artrugs', + [-860220667] = 'v_65_p_blinds_ns', + [-2140538308] = 'v_65_p_desk_bake', + [1670131521] = 'v_65_p_shelves_bake', + [-1762390686] = 'v_65_shell', + [-1121859249] = 'v_66_backrmskirt', + [1286172969] = 'v_66_backrmstuff', + [-1705427376] = 'v_66_counter', + [158760308] = 'v_66_duct', + [-2013261546] = 'v_66_fridge', + [-1658891553] = 'v_66_glass1', + [-412850320] = 'v_66_glass2', + [-2120246304] = 'v_66_glass3', + [1506633185] = 'v_66_lamps', + [-1652393826] = 'v_66_mirrofloor', + [-1808352745] = 'v_66_posters', + [1569171817] = 'v_66_posters2', + [-1819431675] = 'v_66_reflection', + [-385641770] = 'v_66_shadowmap', + [716390133] = 'v_66_shadowmap2', + [-946738703] = 'v_66_shelves', + [-848486726] = 'v_66_shop711', + [-53547394] = 'v_66_shopdirt', + [1527689689] = 'v_66_shopstains', + [2119031845] = 'v_66_storedirt', + [696804822] = 'v_68_backrmskirt', + [-385799356] = 'v_68_backrmstuff', + [-504687826] = 'v_68_broeknvend', + [-1083926933] = 'v_68_counter', + [1400075259] = 'v_68_donuts', + [-2085977051] = 'v_68_ducttape', + [2010838017] = 'v_68_fridgedrinks', + [-1791897623] = 'v_68_fridgefood', + [1027723385] = 'v_68_gassrefproxy', + [-1365022591] = 'v_68_gasstationshell', + [-1689708552] = 'v_68_glass1', + [-1455246357] = 'v_68_glass2', + [-1097015649] = 'v_68_glass3', + [-1678900961] = 'v_68_glasschillers', + [799007674] = 'v_68_glasschillers2', + [1769278674] = 'v_68_mags', + [1902010896] = 'v_68_posters', + [-1068706101] = 'v_68_shadowmap', + [-1862717525] = 'v_68_shadowmap2', + [2130217894] = 'v_68_shadowmap3', + [-491485450] = 'v_68_shopdirt', + [1684699707] = 'v_68_shopsigns', + [1636817760] = 'v_68_shopstains', + [1450801857] = 'v_68_storedirt', + [-198986535] = 'v_68_toiletdirt', + [133200702] = 'v_68_toiletstuff', + [1171575240] = 'v_7_beams', + [2069008529] = 'v_7_bulletdam01', + [-1731675408] = 'v_7_cable3', + [1068402877] = 'v_7_cable4', + [-1318786008] = 'v_7_cable5', + [-35862351] = 'v_7_cables1', + [-1834412393] = 'v_7_gc_reflectproxy', + [-167539068] = 'v_7_gc_shell', + [1846059007] = 'v_7_gcboard', + [-869663036] = 'v_7_gcpartwall', + [1205850919] = 'v_7_glass01', + [1510373236] = 'v_7_glass02', + [844572694] = 'v_7_glass03', + [100421457] = 'v_7_glass04', + [-1232555929] = 'v_7_glass05', + [-2003381116] = 'v_7_glass06', + [1676118822] = 'v_7_glass07', + [1983983577] = 'v_7_glass08', + [1066058349] = 'v_7_glass09', + [920733431] = 'v_7_glass10', + [-74559406] = 'v_7_glass11', + [-615706672] = 'v_7_glass12', + [-1865614683] = 'v_7_glass13', + [2131679017] = 'v_7_glass14', + [649701032] = 'v_7_glass15', + [343409189] = 'v_7_glass16', + [1454048910] = 'v_7_glass17', + [-1182058141] = 'v_7_glassdoor', + [-1713405868] = 'v_7_handguns', + [-1526049538] = 'v_7_lockers', + [-104416514] = 'v_7_merch01', + [1714950253] = 'v_7_merchandise', + [1127140548] = 'v_7_merchglass003', + [129914336] = 'v_7_merchglass004', + [286091390] = 'v_7_merchglass005', + [1778850420] = 'v_7_merchglass009', + [-1453811774] = 'v_7_merchglass010', + [-1181370308] = 'v_7_merchglass011', + [884392695] = 'v_7_merchglass1', + [1179149850] = 'v_7_merchglass2', + [419498892] = 'v_7_merchglass3', + [717991713] = 'v_7_merchglass4', + [-1927744582] = 'v_7_merchglass5', + [507680271] = 'v_7_merchglass6', + [1887189633] = 'v_7_merchglass7', + [2146294116] = 'v_7_merchglass8', + [1540570471] = 'v_7_officepost', + [1357979372] = 'v_7_officeshad', + [596691194] = 'v_7_officestuff', + [-282474754] = 'v_7_officestuff2', + [688047337] = 'v_7_overlay03', + [-170681545] = 'v_7_overlays', + [-1109002635] = 'v_7_overlays01', + [-1529134718] = 'v_7_rangecntr', + [-1945028331] = 'v_7_rangeedges', + [1983494371] = 'v_7_rangeglass', + [837474767] = 'v_7_rangemisc', + [-579452485] = 'v_7_rangeovrlys', + [1009302317] = 'v_7_rangeposters', + [-391435111] = 'v_7_recposters', + [-511139199] = 'v_7_rectables', + [-1198271514] = 'v_7_shadowclub', + [469309921] = 'v_7_shadowrange', + [813500390] = 'v_7_shadowshop', + [-2146349092] = 'v_7_shirts', + [700263533] = 'v_7_shopposters', + [-73349500] = 'v_7_shopshadow', + [-1322514994] = 'v_7_shopshelves', + [196322455] = 'v_7_shopskirt', + [-1932986419] = 'v_7_skirting', + [-857493718] = 'v_7_vents01', + [400606559] = 'v_7_vents02', + [669214052] = 'v_7_vents03', + [-447236122] = 'v_7_walledges', + [1031636239] = 'v_7_wallguns', + [662464486] = 'v_7_wallhooks', + [-1314178390] = 'v_71_beams01', + [-521891431] = 'v_71_carlift', + [1560349784] = 'v_71_carmd3spray', + [-1589828150] = 'v_71_decal_paint_n', + [69187665] = 'v_71_dirt_dec', + [2135992073] = 'v_71_guarddirtup', + [92761237] = 'v_71_guardstairs', + [2123915948] = 'v_71_guardstairstuff', + [-700098701] = 'v_71_guardstairsup', + [1871721373] = 'v_71_guardtower', + [-1875509047] = 'v_71_lock_comp', + [-79707896] = 'v_71_lockdirt01', + [-1382898257] = 'v_71_lockdirt02', + [1127751220] = 'v_71_lockfrtbeams', + [-1573511568] = 'v_71_lockgrills', + [-1468571900] = 'v_71_lockligh', + [-443873633] = 'v_71_locklockers', + [1873693694] = 'v_71_lockmndrns', + [405206741] = 'v_71_lockoffstuff', + [-217647409] = 'v_71_lockolldoor', + [-1699073988] = 'v_71_lockpipes', + [1078645590] = 'v_71_lockshell', + [1494728072] = 'v_71_lockshelves', + [-917876829] = 'v_71_lockstairs', + [-1078431401] = 'v_71_locktank', + [-1862441111] = 'v_71_lockvent', + [-1402853171] = 'v_71_tyreshelves', + [-1773734955] = 'v_71_veh_bar', + [-1042438513] = 'v_72_beams', + [631756383] = 'v_72_bike_mount002', + [870413010] = 'v_72_bike_mount003', + [1617644513] = 'v_72_bike_mount007', + [1010434943] = 'v_72_bike_mount009', + [-1083795589] = 'v_72_bike_mount01', + [1179162876] = 'v_72_bike_mount010', + [2014215303] = 'v_72_bike_mount011', + [1652052315] = 'v_72_bike_mount012', + [1251357038] = 'v_72_bulb_01', + [-1979972938] = 'v_72_carpet01', + [-1605554344] = 'v_72_carpet02', + [393566972] = 'v_72_ceilingdet', + [1526327075] = 'v_72_ceilinglights', + [-1062684391] = 'v_72_ceilinglights02', + [-1389784549] = 'v_72_ceilinglights03', + [1614884226] = 'v_72_elevator_panel', + [-1927359385] = 'v_72_elevator', + [1731217220] = 'v_72_emis_only_l', + [-1166918348] = 'v_72_emis_only_l001', + [1296717382] = 'v_72_emis_wall_l', + [-1200487128] = 'v_72_fakemissive_lo', + [1877747249] = 'v_72_gar_lo_sm', + [-2002316500] = 'v_72_garagel_shell_proxy', + [-502148694] = 'v_72_garagel_shell', + [-126789604] = 'v_72_garagem_decals', + [-529641437] = 'v_72_garagem_shell', + [1019630128] = 'v_72_garagem_sm', + [649440480] = 'v_72_garagem_sp_decals', + [1610500342] = 'v_72_garagem_sp_shell', + [1600503033] = 'v_72_garagem_sp_sm', + [1989812853] = 'v_72_garagepartition', + [-1007835625] = 'v_72_garages_decals', + [838453451] = 'v_72_garages_shell', + [-1260551682] = 'v_72_gardoor_sm', + [677353233] = 'v_72_gardoor_sm001', + [-1370357915] = 'v_72_garlcables01', + [1161065173] = 'v_72_led_floor', + [-1510396146] = 'v_72_led_floor001', + [1964525307] = 'v_72_med_det01', + [-586705192] = 'v_72_med_det02', + [208918524] = 'v_72_mirrorl', + [-1978707147] = 'v_72_mirrorm', + [-1146899342] = 'v_72_mpgjackframe', + [-539021124] = 'v_72_railsdoor', + [-1023121315] = 'v_72_railsdoor001', + [-511329949] = 'v_72_rollerdoor', + [1815138967] = 'v_72_shelves', + [454642439] = 'v_72_sp_med_det', + [548352309] = 'v_72_sp_reflection', + [1834352910] = 'v_72_sp_units', + [-851350442] = 'v_72_unitlarge', + [-1890869168] = 'v_72_units', + [2107652258] = 'v_72_units02', + [-1845111656] = 'v_72_wall_cabling003', + [494860478] = 'v_72_wall_cabling01', + [706885131] = 'v_72_wall_lights004', + [2039075421] = 'v_72_wall_lights02', + [432879160] = 'v_72_walldetail003', + [1815473263] = 'v_72_walldetaiprx', + [-995805586] = 'v_73_4_fib_reflect00', + [-1295084863] = 'v_73_4_fib_reflect01', + [-1762206962] = 'v_73_4_fib_reflect03', + [1419925094] = 'v_73_4_fib_reflect04', + [968794271] = 'v_73_4_fib_reflect09', + [1787378147] = 'v_73_5_bathroom_dcl', + [1555418027] = 'v_73_5_bathroom_dcl001', + [-41632130] = 'v_73_ao_5_a', + [-340321565] = 'v_73_ao_5_b', + [-1565259554] = 'v_73_ao_5_c', + [-937733204] = 'v_73_ao_5_d', + [2134852085] = 'v_73_ao_5_e', + [-1267880879] = 'v_73_ao_5_f', + [128078505] = 'v_73_ao_5_g', + [1039974237] = 'v_73_ao_5_h', + [2004000418] = 'v_73_ap_bano_dspwall_ab003', + [2067870369] = 'v_73_ap_bano_dspwall_ab99', + [-788445315] = 'v_73_cur_ao_test', + [-378906067] = 'v_73_cur_el2_deta', + [390035211] = 'v_73_cur_el2_over', + [903673433] = 'v_73_cur_ele_deta', + [-293896050] = 'v_73_cur_ele_elev', + [-33503993] = 'v_73_cur_ele_elev001', + [1280373903] = 'v_73_cur_ele_over', + [-284246939] = 'v_73_cur_of1_blin', + [836742689] = 'v_73_cur_of1_deta', + [-616290578] = 'v_73_cur_of2_blin', + [1644469761] = 'v_73_cur_of2_deta', + [-1495020726] = 'v_73_cur_of3_blin', + [-948561344] = 'v_73_cur_of3_deta', + [426674675] = 'v_73_cur_off2rm_ao', + [-1245854209] = 'v_73_cur_off2rm_de', + [164246450] = 'v_73_cur_over1', + [470374448] = 'v_73_cur_over2', + [-468686785] = 'v_73_cur_over3', + [-1308981838] = 'v_73_cur_reflect', + [-215813027] = 'v_73_cur_sec_desk', + [-763119381] = 'v_73_cur_sec_deta', + [-1264500011] = 'v_73_cur_sec_over', + [-658180548] = 'v_73_cur_sec_stat', + [-1079398042] = 'v_73_cur_shell', + [-1816319918] = 'v_73_elev_det', + [-262653530] = 'v_73_elev_plat', + [150910092] = 'v_73_elev_sec1', + [943100735] = 'v_73_elev_sec2', + [1248868274] = 'v_73_elev_sec3', + [465623636] = 'v_73_elev_sec4', + [771981017] = 'v_73_elev_sec5', + [-338480199] = 'v_73_elev_shell_refl', + [594166609] = 'v_73_fib_5_glow_019', + [-1100122083] = 'v_73_fib_5_glow_020', + [-1865245464] = 'v_73_fib_5_glow_021', + [1410737008] = 'v_73_fib_5_glow_022', + [-1504098315] = 'v_73_fib_5_glow_023', + [1947427690] = 'v_73_fib_5_glow_024', + [1179486175] = 'v_73_fib_5_glow_025', + [392964637] = 'v_73_fib_5_glow_026', + [-456245978] = 'v_73_fib_5_glow_098', + [1411918413] = 'v_73_glass_5_deta', + [753274590] = 'v_73_glass_5_deta004', + [-1637092888] = 'v_73_glass_5_deta005', + [1045507968] = 'v_73_glass_5_deta020', + [1201357332] = 'v_73_glass_5_deta021', + [1508828859] = 'v_73_glass_5_deta022', + [-67393130] = 'v_73_glass_5_deta1', + [-305328839] = 'v_73_glass_5_deta2', + [-603035204] = 'v_73_glass_5_deta3', + [-1154510081] = 'v_73_jan_cm1_deta', + [-744883223] = 'v_73_jan_cm1_leds', + [819319148] = 'v_73_jan_cm1_over', + [-1687972932] = 'v_73_jan_cm2_deta', + [2019406852] = 'v_73_jan_cm2_over', + [-412585552] = 'v_73_jan_cm3_deta', + [-1219723325] = 'v_73_jan_cm3_over', + [1038996406] = 'v_73_jan_dirt_test', + [1284045783] = 'v_73_jan_ele_deta', + [2117464664] = 'v_73_jan_ele_leds', + [404119667] = 'v_73_jan_ele_over', + [545243013] = 'v_73_jan_of1_deta', + [1835858909] = 'v_73_jan_of1_deta2', + [95766186] = 'v_73_jan_of2_ceil', + [359884573] = 'v_73_jan_of2_deta', + [1266889792] = 'v_73_jan_of2_over', + [991435746] = 'v_73_jan_of3_ceil', + [-2033305107] = 'v_73_jan_of3_deta', + [146157144] = 'v_73_jan_of3_over', + [10231019] = 'v_73_jan_over1', + [1968454945] = 'v_73_jan_sec_desk', + [1879437527] = 'v_73_jan_shell', + [-176386948] = 'v_73_jan_wcm_deta', + [2097822927] = 'v_73_jan_wcm_over', + [608903112] = 'v_73_off_st1_deta', + [-574294045] = 'v_73_off_st1_over', + [-131256877] = 'v_73_off_st1_ref', + [1105887107] = 'v_73_off_st1_step', + [269196309] = 'v_73_off_st2_deta', + [1838084084] = 'v_73_off_st2_over', + [-1188039900] = 'v_73_off_st2_ref', + [281701921] = 'v_73_off_st2_step', + [-287820007] = 'v_73_p_ap_banosink_aa001', + [902603284] = 'v_73_p_ap_banostall_az', + [-224715101] = 'v_73_p_ap_banourinal_aa003', + [-2127684732] = 'v_73_recp_seats001', + [-1535657705] = 'v_73_screen_a', + [1383634298] = 'v_73_servdesk001', + [1646402317] = 'v_73_servers001', + [1047031888] = 'v_73_servlights001', + [-1060859629] = 'v_73_sign_006', + [-351635619] = 'v_73_sign_5', + [1467655535] = 'v_73_stair_shell_refl', + [-1994902426] = 'v_73_stair_shell', + [-1565466349] = 'v_73_stair_shell001', + [870447913] = 'v_73_v_fib_flag_a', + [-828978194] = 'v_73_v_fib_flag_a001', + [-255061924] = 'v_73_v_fib_flag_a002', + [-1442315567] = 'v_73_v_fib_flag_a003', + [103948234] = 'v_73_v_fib_flag_b', + [-646586352] = 'v_73_vfx_curve_dummy', + [1381190415] = 'v_73_vfx_curve_dummy001', + [-1525944185] = 'v_73_vfx_curve_dummy002', + [919901202] = 'v_73_vfx_curve_dummy003', + [1833271547] = 'v_73_vfx_curve_dummy004', + [2129863766] = 'v_73_vfx_curve_dummy005', + [1474834590] = 'v_73_vfx_mesh_dummy_00', + [2000842578] = 'v_73_vfx_mesh_dummy_01', + [-2078471929] = 'v_73_vfx_mesh_dummy_02', + [-1846139719] = 'v_73_vfx_mesh_dummy_03', + [874998041] = 'v_73_vfx_mesh_dummy_04', + [2092628631] = 'v_73screen_b', + [1502987458] = 'v_74_3_emerg_008', + [-2067326176] = 'v_74_3_emerg_009', + [1641533286] = 'v_74_3_emerg_010', + [-524590811] = 'v_74_3_emerg_1', + [-2146787379] = 'v_74_3_emerg_2', + [1774482233] = 'v_74_3_emerg_3', + [1534776998] = 'v_74_3_emerg_4', + [-987485697] = 'v_74_3_emerg_6', + [-1226994318] = 'v_74_3_emerg_7', + [1708749829] = 'v_74_3_stairlights', + [-837077522] = 'v_74_4_emerg_10', + [1492389816] = 'v_74_4_emerg_2', + [-1968213202] = 'v_74_4_emerg_3', + [881149651] = 'v_74_4_emerg_4', + [1713613335] = 'v_74_4_emerg_5', + [770750890] = 'v_74_4_emerg_6', + [83906129] = 'v_74_4_emerg', + [-28676123] = 'v_74_ao_5_h001', + [-4400490] = 'v_74_atr_cor1_d_ns', + [-970303265] = 'v_74_atr_cor1_deta', + [1433507804] = 'v_74_atr_hall_d_ns', + [-1387347065] = 'v_74_atr_hall_d_ns001', + [-1623447710] = 'v_74_atr_hall_d_ns002', + [-1963402901] = 'v_74_atr_hall_deta', + [-846776398] = 'v_74_atr_hall_deta001', + [375966068] = 'v_74_atr_hall_deta002', + [672296135] = 'v_74_atr_hall_deta003', + [-230686429] = 'v_74_atr_hall_deta004', + [72138416] = 'v_74_atr_hall_lamp', + [-952714359] = 'v_74_atr_hall_lamp001', + [-1315991493] = 'v_74_atr_hall_lamp002', + [1157183403] = 'v_74_atr_hall_m_refl', + [932094059] = 'v_74_atr_off1_d_ns', + [1935229804] = 'v_74_atr_off1_deta', + [203764315] = 'v_74_atr_off2_d_ns', + [799848112] = 'v_74_atr_off2_deta', + [-320162783] = 'v_74_atr_off3_d_ns', + [607941655] = 'v_74_atr_off3_deta', + [1926454755] = 'v_74_atr_spn1detail', + [1027173695] = 'v_74_atr_spn2detail', + [-2138307609] = 'v_74_atr_spn3detail', + [1923052747] = 'v_74_atr_stai_d_ns', + [-701670182] = 'v_74_atr_stai_deta', + [1713196070] = 'v_74_atrium_shell', + [-1220458629] = 'v_74_ceilin2', + [213269092] = 'v_74_cfemlight_rsref002', + [399265936] = 'v_74_cfemlight_rsref003', + [689042203] = 'v_74_cfemlight_rsref004', + [1144072537] = 'v_74_cfemlight_rsref005', + [1383351775] = 'v_74_cfemlight_rsref006', + [1622532706] = 'v_74_cfemlight_rsref007', + [2129796826] = 'v_74_cfemlight_rsref008', + [-193836163] = 'v_74_cfemlight_rsref019', + [1646864405] = 'v_74_cfemlight_rsref020', + [-876446906] = 'v_74_cfemlight_rsref021', + [1868448383] = 'v_74_cfemlight_rsref023', + [-1660510769] = 'v_74_cfemlight_rsref024', + [-11246999] = 'v_74_cfemlight_rsref025', + [753581469] = 'v_74_cfemlight_rsref026', + [-488986250] = 'v_74_cfemlight_rsref027', + [-795114248] = 'v_74_cfemlight_rsref028', + [911855739] = 'v_74_cfemlight_rsref029', + [-580428081] = 'v_74_cfemlight_rsref030', + [-200078290] = 'v_74_cfemlight_rsref031', + [1898558128] = 'v_74_collapsedfl3', + [-1315250049] = 'v_74_fib_embb', + [1954574771] = 'v_74_fib_embb001', + [857075423] = 'v_74_fib_embb002', + [550455890] = 'v_74_fib_embb003', + [-857628044] = 'v_74_fib_embb004', + [-1012690952] = 'v_74_fib_embb005', + [-100107071] = 'v_74_fib_embb006', + [-405415844] = 'v_74_fib_embb007', + [-358818322] = 'v_74_fib_embb009', + [-663114548] = 'v_74_fib_embb010', + [722096620] = 'v_74_fib_embb011', + [1035269953] = 'v_74_fib_embb012', + [242194615] = 'v_74_fib_embb013', + [1953981633] = 'v_74_fib_embb014', + [-1858232755] = 'v_74_fib_embb019', + [1537356871] = 'v_74_fib_embb022', + [1240174810] = 'v_74_fib_embb023', + [1534145513] = 'v_74_fib_embb024', + [2026008203] = 'v_74_fib_embb025', + [1743178964] = 'v_74_fib_embb026', + [-1784829887] = 'v_74_fib_embb027', + [-2110094981] = 'v_74_fib_embb028', + [-1075053347] = 'v_74_fib_embb029', + [-42175347] = 'v_74_fib_embb030', + [-348729342] = 'v_74_fib_embb031', + [-500122122] = 'v_74_fib_embb032', + [-803726907] = 'v_74_fib_embb033', + [624018423] = 'v_74_fib_embb034', + [-1308875538] = 'v_74_fircub_glsshards007', + [-1535964708] = 'v_74_fircub_glsshards008', + [-1774621335] = 'v_74_fircub_glsshards009', + [1614797137] = 'v_74_glass_a_deta003', + [-1498520019] = 'v_74_glass_a_deta004', + [886768264] = 'v_74_glass_a_deta005', + [654567130] = 'v_74_glass_a_deta007', + [1844507827] = 'v_74_glass_a_deta008', + [193408993] = 'v_74_glass_a_deta009', + [571495322] = 'v_74_glass_a_deta010', + [392773196] = 'v_74_glass_a_deta011', + [70687585] = 'v_74_hobar_debris005', + [-1100640184] = 'v_74_hobar_debris006', + [-1674687526] = 'v_74_hobar_debris007', + [-1380585751] = 'v_74_hobar_debris008', + [2013234045] = 'v_74_hobar_debris009', + [-2073356108] = 'v_74_hobar_debris010', + [1925969266] = 'v_74_hobar_debris011', + [876968042] = 'v_74_hobar_debris012', + [581457200] = 'v_74_hobar_debris013', + [1506165611] = 'v_74_hobar_debris014', + [1176378395] = 'v_74_hobar_debris015', + [-313529732] = 'v_74_hobar_debris016', + [-590263937] = 'v_74_hobar_debris017', + [295482137] = 'v_74_hobar_debris018', + [-10842475] = 'v_74_hobar_debris019', + [1874488371] = 'v_74_hobar_debris020', + [-469543741] = 'v_74_hobar_debris023', + [913242525] = 'v_74_hobar_debris024', + [-1102477100] = 'v_74_hobar_debris026', + [-738937814] = 'v_74_hobar_debris027', + [-509161586] = 'v_74_hobar_debris028', + [255789505] = 'v_74_it1_ceil3', + [558931040] = 'v_74_it1_ceiling_smoke_02_skin', + [1918241244] = 'v_74_it1_ceiling_smoke_03_skin', + [436653268] = 'v_74_it1_ceiling_smoke_04_skin', + [-1149064556] = 'v_74_it1_ceiling_smoke_05_skin', + [-2104923921] = 'v_74_it1_ceiling_smoke_06_skin', + [247004622] = 'v_74_it1_ceiling_smoke_07_skin', + [-1121371947] = 'v_74_it1_ceiling_smoke_08_skin', + [-1304690428] = 'v_74_it1_ceiling_smoke_09_skin', + [453384592] = 'v_74_it1_ceiling_smoke_13_skin', + [-807016241] = 'v_74_it1_cor1_ceil', + [1980787518] = 'v_74_it1_cor1_deca', + [-359270708] = 'v_74_it1_cor1_deta', + [894678636] = 'v_74_it1_cor2_ceil', + [-1888552578] = 'v_74_it1_cor2_deca', + [855415438] = 'v_74_it1_cor2_deta', + [-172462078] = 'v_74_it1_elev_deca', + [445927041] = 'v_74_it1_elev_deta', + [438094821] = 'v_74_it1_off1_debr', + [1137459700] = 'v_74_it1_off1_deta', + [-908389537] = 'v_74_it1_off1_deta001', + [979951701] = 'v_74_it1_off2_debr', + [-1848374314] = 'v_74_it1_off2_deca', + [1523282522] = 'v_74_it1_off2_deta', + [672163319] = 'v_74_it1_off3_ceil', + [614134920] = 'v_74_it1_off3_debr', + [436952141] = 'v_74_it1_off3_deca', + [-1640306306] = 'v_74_it1_off3_deta', + [636055956] = 'v_74_it1_post_ceil', + [-599387647] = 'v_74_it1_post_deca', + [-1941965478] = 'v_74_it1_post_deta', + [-1527646813] = 'v_74_it1_shell', + [-428506518] = 'v_74_it1_stai_deca', + [204038321] = 'v_74_it1_stai_deta', + [1952093334] = 'v_74_it1_tiles2', + [1391123545] = 'v_74_it1_void_deca', + [699343434] = 'v_74_it1_void_deta', + [2136178439] = 'v_74_it2_ceiling_smoke_00_skin', + [1363265337] = 'v_74_it2_ceiling_smoke_01_skin', + [-484697001] = 'v_74_it2_ceiling_smoke_03_skin', + [144675916] = 'v_74_it2_ceiling_smoke_04_skin', + [-1637440482] = 'v_74_it2_ceiling_smoke_06_skin', + [-459530925] = 'v_74_it2_ceiling_smoke_07_skin', + [-978852523] = 'v_74_it2_ceiling_smoke_08_skin', + [-1079402025] = 'v_74_it2_ceiling_smoke_09_skin', + [-1381138567] = 'v_74_it2_ceiling_smoke_10_skin', + [600717772] = 'v_74_it2_ceiling_smoke_11_skin', + [192663080] = 'v_74_it2_ceiling_smoke_12_skin', + [-118524833] = 'v_74_it2_ceiling_smoke_14_skin', + [1354683804] = 'v_74_it2_ceiling_smoke_15_skin', + [746431764] = 'v_74_it2_ceiling_smoke_16_skin', + [1253359691] = 'v_74_it2_ceiling_smoke_17_skin', + [-525699171] = 'v_74_it2_cor1_deta', + [1976551902] = 'v_74_it2_cor1_dirt', + [-1310503960] = 'v_74_it2_cor2_ceil', + [1864055513] = 'v_74_it2_cor2_debr', + [819185279] = 'v_74_it2_cor2_deca', + [-71443553] = 'v_74_it2_cor2_deta', + [1899419710] = 'v_74_it2_cor3_ceil', + [845243175] = 'v_74_it2_cor3_deca', + [1385075231] = 'v_74_it2_cor3_deta', + [1331747749] = 'v_74_it2_elev_deta', + [1354753730] = 'v_74_it2_elev_dirt', + [1620421988] = 'v_74_it2_open_ceil', + [-1086016681] = 'v_74_it2_open_deta', + [1258903189] = 'v_74_it2_open_dirt', + [271701384] = 'v_74_it2_post_deca2', + [-913384692] = 'v_74_it2_post_deta', + [1607428021] = 'v_74_it2_ser1_ceil', + [-620944365] = 'v_74_it2_ser1_debr', + [1303322837] = 'v_74_it2_ser1_deca', + [-513939424] = 'v_74_it2_ser1_deta', + [1735139406] = 'v_74_it2_ser2_ceil', + [-1432490315] = 'v_74_it2_ser2_deca', + [-1876285846] = 'v_74_it2_ser2_deta', + [-975112667] = 'v_74_it2_shell', + [-274030287] = 'v_74_it2_stai_deca', + [-1527341270] = 'v_74_it2_stai_deta', + [-2711174] = 'v_74_it3_ceil2', + [2078087577] = 'v_74_it3_ceilc', + [876153426] = 'v_74_it3_ceild', + [-1952654962] = 'v_74_it3_ceiling_smoke_01_skin', + [1010168760] = 'v_74_it3_ceiling_smoke_03_skin', + [442634172] = 'v_74_it3_ceiling_smoke_04_skin', + [-1404539635] = 'v_74_it3_co1_deta', + [-79076147] = 'v_74_it3_cor1_mnds', + [524344359] = 'v_74_it3_cor2_deta', + [-451210038] = 'v_74_it3_cor3_debr', + [-2108833056] = 'v_74_it3_debf', + [1340311373] = 'v_74_it3_hall_mnds', + [1048633232] = 'v_74_it3_offi_deta', + [-521505033] = 'v_74_it3_offi_mnds', + [1934002579] = 'v_74_it3_ope_deta', + [2106080626] = 'v_74_it3_open_mnds', + [-879785158] = 'v_74_it3_ser2_debr', + [-1656125546] = 'v_74_it3_shell', + [1239446966] = 'v_74_it3_sta_deta', + [-1946306294] = 'v_74_jan_over002', + [2042860694] = 'v_74_jan_over003', + [826655824] = 'v_74_of_litter_d_h011', + [1860353937] = 'v_74_of_litter_d_h013', + [2091146004] = 'v_74_of_litter_d_h014', + [-1933575349] = 'v_74_of_litter_d_h015', + [-1702226209] = 'v_74_of_litter_d_h016', + [-1473465820] = 'v_74_of_litter_d_h017', + [-1276393054] = 'v_74_of_litter_d_h018', + [1793275814] = 'v_74_of_litter_d_h019', + [1356726316] = 'v_74_of_litter_d_h020', + [1699096816] = 'v_74_of_litter_d_h021', + [1583435673] = 'v_74_ofc_debrizz001', + [-1921634882] = 'v_74_ofc_debrizz002', + [2046822098] = 'v_74_ofc_debrizz003', + [-2035703767] = 'v_74_ofc_debrizz004', + [-2055692857] = 'v_74_ofc_debrizz005', + [-1594665796] = 'v_74_ofc_debrizz007', + [-337089883] = 'v_74_ofc_debrizz009', + [-1801437846] = 'v_74_ofc_debrizz010', + [-670219193] = 'v_74_ofc_debrizz012', + [-357013091] = 'v_74_ofc_debrizz013', + [306042921] = 'v_74_recp_seats002', + [-15147771] = 'v_74_servdesk002', + [1639613915] = 'v_74_servers002', + [1932213632] = 'v_74_servlights002', + [145744045] = 'v_74_stair4', + [1200774769] = 'v_74_stair5', + [-450161828] = 'v_74_str2_deta', + [-856029940] = 'v_74_v_14_hobar_debris021', + [434523886] = 'v_74_v_14_it3_cor1_mnds', + [2096596365] = 'v_74_v_fib_flag_a004', + [-297768931] = 'v_74_v_fib_flag_a007', + [343208307] = 'v_74_v_fib02_it1_004', + [168549537] = 'v_74_v_fib02_it1_005', + [-286874025] = 'v_74_v_fib02_it1_006', + [-559479336] = 'v_74_v_fib02_it1_007', + [1641286752] = 'v_74_v_fib02_it1_008', + [-801216205] = 'v_74_v_fib02_it1_009', + [-319610500] = 'v_74_v_fib02_it1_010', + [42028184] = 'v_74_v_fib02_it1_011', + [-706238105] = 'v_74_v_fib02_it1_03', + [-785374613] = 'v_74_v_fib02_it1_off1', + [-1101071159] = 'v_74_v_fib02_it1_off2', + [1866419263] = 'v_74_v_fib02_it2_cor004', + [-1585794887] = 'v_74_v_fib02_it2_cor005', + [-1802037518] = 'v_74_v_fib02_it2_cor006', + [-959349914] = 'v_74_v_fib02_it2_cor007', + [-637951562] = 'v_74_v_fib02_it2_cor008', + [-901512629] = 'v_74_v_fib02_it2_cor009', + [-172646588] = 'v_74_v_fib02_it2_cor01', + [-426857340] = 'v_74_v_fib02_it2_cor2', + [-254492400] = 'v_74_v_fib02_it2_cor3', + [-1311229926] = 'v_74_v_fib02_it2_elev', + [862763930] = 'v_74_v_fib02_it2_elev001', + [-596449452] = 'v_74_v_fib02_it2_ser004', + [-892976133] = 'v_74_v_fib02_it2_ser005', + [283332656] = 'v_74_v_fib02_it2_ser006', + [-1652245186] = 'v_74_v_fib02_it2_ser1', + [1807341993] = 'v_74_v_fib02_it2_ser2', + [-71974434] = 'v_74_v_fib03_it3_cor002', + [-800776470] = 'v_74_v_fib03_it3_cor1', + [1628129934] = 'v_74_v_fib03_it3_open', + [1402570167] = 'v_74_v_fib2_3b_cvr', + [-1460456] = 'v_74_vfx_3a_it3_01', + [87009109] = 'v_74_vfx_3b_it3_01', + [-805904811] = 'v_74_vfx_it3_002', + [296182197] = 'v_74_vfx_it3_003', + [592250112] = 'v_74_vfx_it3_004', + [-182212434] = 'v_74_vfx_it3_005', + [115493931] = 'v_74_vfx_it3_006', + [1886166846] = 'v_74_vfx_it3_007', + [2133277875] = 'v_74_vfx_it3_008', + [871015995] = 'v_74_vfx_it3_009', + [-43338284] = 'v_74_vfx_it3_010', + [-735740138] = 'v_74_vfx_it3_02', + [493674486] = 'v_74_vfx_it3_3a_003', + [-236894077] = 'v_74_vfx_it3_3b_004', + [-1407676816] = 'v_74_vfx_it3_3b_02', + [-150029990] = 'v_74_vfx_it3_cor', + [-801721575] = 'v_74_vfx_it3_cor001', + [-811026538] = 'v_74_vfx_it3_open_cav', + [-643395920] = 'v_74_vfx_mesh_fire_00', + [-471489746] = 'v_74_vfx_mesh_fire_01', + [-1295400713] = 'v_74_vfx_mesh_fire_03', + [-804062327] = 'v_74_vfx_mesh_fire_04', + [-1579868402] = 'v_74_vfx_mesh_fire_05', + [-1416154478] = 'v_74_vfx_mesh_fire_06', + [1912848236] = 'v_74_vfx_mesh_fire_07', + [-1449766324] = 'v_8_basedecaldirt', + [112105254] = 'v_8_baseoverla', + [-308082399] = 'v_8_baseoverlay', + [-1765689724] = 'v_8_baseoverlay2', + [-1070171527] = 'v_8_bath', + [-1494090690] = 'v_8_bath2', + [-1351770600] = 'v_8_bathrm3', + [1858160751] = 'v_8_bed1bulbon', + [-1592353768] = 'v_8_bed1decaldirt', + [-1523831552] = 'v_8_bed1ovrly', + [1209533339] = 'v_8_bed1stuff', + [-481995801] = 'v_8_bed2decaldirt', + [2006935161] = 'v_8_bed2ovlys', + [1584344391] = 'v_8_bed3decaldirt', + [-73828711] = 'v_8_bed3ovrly', + [1781265675] = 'v_8_bed3stuff', + [-505037174] = 'v_8_bed4bulbon', + [-496938732] = 'v_8_bedrm4stuff', + [-195617289] = 'v_8_diningdecdirt', + [-1405347162] = 'v_8_diningovlys', + [626033468] = 'v_8_diningtable', + [-1153707826] = 'v_8_ducttape', + [1038902519] = 'v_8_farmshad01', + [730775612] = 'v_8_farmshad02', + [724942730] = 'v_8_farmshad03', + [418585349] = 'v_8_farmshad04', + [-503894774] = 'v_8_farmshad05', + [-810121079] = 'v_8_farmshad06', + [1042376029] = 'v_8_farmshad07', + [742637986] = 'v_8_farmshad08', + [-1399242165] = 'v_8_farmshad09', + [-2130450523] = 'v_8_farmshad10', + [305924631] = 'v_8_farmshad11', + [-875070133] = 'v_8_farmshad13', + [-1776217633] = 'v_8_farmshad14', + [1357776762] = 'v_8_farmshad15', + [-917047234] = 'v_8_farmshad18', + [-2074022317] = 'v_8_farmshad19', + [-1818751447] = 'v_8_farmshad20', + [1278738286] = 'v_8_farmshad21', + [977886097] = 'v_8_farmshad22', + [-623141705] = 'v_8_farmshad24', + [262211133] = 'v_8_farmshad25', + [-1596081609] = 'v_8_footprints', + [-1197937052] = 'v_8_framebath', + [903672708] = 'v_8_framebd1', + [-262444930] = 'v_8_framebd2', + [-2111173603] = 'v_8_framebd3', + [-882958714] = 'v_8_framebd4', + [775961249] = 'v_8_framedin', + [-966719233] = 'v_8_framefrnt', + [-1730620429] = 'v_8_framehl2', + [-1304131782] = 'v_8_framehl4', + [-1068489903] = 'v_8_framehl5', + [-687157050] = 'v_8_framehl6', + [428210684] = 'v_8_framehll3', + [1489050939] = 'v_8_framektc', + [-1363020239] = 'v_8_framel1', + [1619163072] = 'v_8_frameliv', + [854914327] = 'v_8_framesp1', + [1091801428] = 'v_8_framesp2', + [753035554] = 'v_8_framesp3', + [-1127016482] = 'v_8_framestd', + [1788102369] = 'v_8_frameut001', + [-913789873] = 'v_8_frntoverlay', + [-1030742145] = 'v_8_frontdecdirt', + [763398823] = 'v_8_furnace', + [224768101] = 'v_8_hall1decdirt', + [2119919721] = 'v_8_hall1overlay', + [-355074033] = 'v_8_hall1stuff', + [1971784041] = 'v_8_hall2decdirt', + [356356877] = 'v_8_hall2overlay', + [1143172152] = 'v_8_hall3decdirt', + [1198567255] = 'v_8_hall3ovlys', + [-859953965] = 'v_8_hall4decdirt', + [-1488758724] = 'v_8_hall4ovrly', + [1063446599] = 'v_8_hall5overlay', + [-1433367164] = 'v_8_hall6decdirt', + [1002656301] = 'v_8_hall6ovlys', + [-322669942] = 'v_8_kitchdecdirt', + [-1845989005] = 'v_8_kitchen', + [-261815629] = 'v_8_kitcovlys', + [-1001763002] = 'v_8_laundecdirt', + [1010093037] = 'v_8_laundryovlys', + [1126324564] = 'v_8_livingdecdirt', + [-605584005] = 'v_8_livoverlays', + [-63432508] = 'v_8_livstuff', + [-1748326900] = 'v_8_reflection_proxy', + [547077442] = 'v_8_shell', + [-1009182706] = 'v_8_sp1decdirt', + [1050397005] = 'v_8_sp1ovrly', + [902955625] = 'v_8_sp2decdirt', + [-219469537] = 'v_8_spare1stuff', + [-1839822371] = 'v_8_stairs', + [-654816497] = 'v_8_stairs2', + [47109626] = 'v_8_stairspart2', + [-239397785] = 'v_8_studdecdirt', + [-86257984] = 'v_8_studovly', + [-815783301] = 'v_8_studybulbon', + [1435949624] = 'v_8_studyclothtop', + [-435639469] = 'v_8_studystuff', + [1915163564] = 'v_8_utilstuff', + [1824281378] = 'v_9_blinds002', + [1347918425] = 'v_9_blinds004', + [905930153] = 'v_9_blinds007', + [1653109144] = 'v_9_br_det', + [1242710385] = 'v_9_carpet_det', + [951918727] = 'v_9_couch003', + [1653599270] = 'v_9_couch02', + [-914247533] = 'v_9_dec_wb01', + [-870767782] = 'v_9_deskrings01', + [-2096431678] = 'v_9_det01', + [1028941356] = 'v_9_dirtdec01', + [-417416770] = 'v_9_dirtdec02', + [-676324639] = 'v_9_dirtdec03', + [-913938443] = 'v_9_ext_shell', + [-301659328] = 'v_9_extwinframes', + [1109524138] = 'v_9_f1_det002', + [-418627741] = 'v_9_f1_det01', + [-178922506] = 'v_9_f1_det02', + [-1178464525] = 'v_9_f1_light01', + [-1469007904] = 'v_9_fb_lights', + [-1556044777] = 'v_9_fb_ntic_brd', + [1166625237] = 'v_9_fb_ntic_brd001', + [1319480832] = 'v_9_fbsigns', + [-1997908054] = 'v_9_frame_det', + [-104088172] = 'v_9_g_det01', + [-1008658871] = 'v_9_glass_balcony001', + [-2055520832] = 'v_9_glasslamps', + [182460801] = 'v_9_hall_det01', + [812477603] = 'v_9_hall_det02', + [-1446540736] = 'v_9_hoop', + [-1658998531] = 'v_9_it_cabinet', + [1082533673] = 'v_9_it_cabinet001', + [2003410943] = 'v_9_kitchen_unit', + [752145473] = 'v_9_kitchen_unit2', + [-821297121] = 'v_9_li_tv_uv002', + [-861570222] = 'v_9_li_tv_uv004', + [404853321] = 'v_9_li_tv_uv006', + [-246594399] = 'v_9_li_tv_uv008', + [-1769752812] = 'v_9_li_tv_uv01', + [-509843224] = 'v_9_lobby_ceilinglight', + [-1901479655] = 'v_9_lobby_det01', + [-1055825743] = 'v_9_mainshadow', + [-2002355258] = 'v_9_normal_edge', + [-843882009] = 'v_9_office_det01', + [1563947046] = 'v_9_officedesk_fb01', + [480666475] = 'v_9_partitions02', + [-1304457569] = 'v_9_partitions03', + [-1079105156] = 'v_9_partitions04', + [122828983] = 'v_9_partitions05', + [1624729934] = 'v_9_projbracket', + [1549132979] = 'v_9_room011_refl', + [-1605085282] = 'v_9_server_leds', + [-2131488672] = 'v_9_signs002', + [-1448883297] = 'v_9_signs01', + [-1425413137] = 'v_9_steps', + [-2032955781] = 'v_9_v_faceoffice_shell', + [1085594742] = 'v_9_windecals', + [1671194729] = 'v_9_windows003', + [-526665419] = 'v_9_windows02', + [535835408] = 'v_club_barchair', + [-1468103661] = 'v_club_brablk', + [1521641592] = 'v_club_brablu', + [2029058712] = 'v_club_bragld', + [-29915038] = 'v_club_brapnk', + [-1537172744] = 'v_club_brush', + [-257235018] = 'v_club_ch_armchair', + [1318669658] = 'v_club_ch_briefchair', + [1129845377] = 'v_club_comb', + [-387730627] = 'v_club_dress1', + [867556671] = 'v_club_officechair', + [-2053774724] = 'v_club_officeset', + [-1661146321] = 'v_club_officesofa', + [-1125563188] = 'v_club_rack', + [697460999] = 'v_club_roc_cab1', + [-1075407439] = 'v_club_roc_cab2', + [-854249458] = 'v_club_roc_cab3', + [501737806] = 'v_club_roc_cabamp', + [-858212500] = 'v_club_roc_ctable', + [1424367756] = 'v_club_roc_eq1', + [1205569143] = 'v_club_roc_eq2', + [134974407] = 'v_club_roc_gstand', + [-1989696578] = 'v_club_roc_jacket1', + [1593134810] = 'v_club_roc_jacket2', + [973300966] = 'v_club_roc_lampoff', + [2027232150] = 'v_club_roc_mic', + [395681893] = 'v_club_roc_micstd', + [1479009069] = 'v_club_roc_mixer1', + [727091595] = 'v_club_roc_mixer2', + [-1085925524] = 'v_club_roc_monitor', + [123050854] = 'v_club_roc_mscreen', + [662526436] = 'v_club_roc_spot_b', + [1120702594] = 'v_club_roc_spot_g', + [1124581492] = 'v_club_roc_spot_off', + [840068882] = 'v_club_roc_spot_r', + [1313056628] = 'v_club_roc_spot_w', + [-2100948868] = 'v_club_roc_spot_y', + [382878399] = 'v_club_roc_zstand', + [-1973732036] = 'v_club_shoerack', + [1720837684] = 'v_club_silkrobe', + [-471190329] = 'v_club_skirtflare', + [-713757097] = 'v_club_skirtplt', + [1081491135] = 'v_club_slip', + [603897027] = 'v_club_stagechair', + [-122889212] = 'v_club_vu_bear', + [-317333309] = 'v_club_vu_boa', + [276226460] = 'v_club_vu_chngestool', + [1035787954] = 'v_club_vu_deckcase', + [1609525816] = 'v_club_vu_djbag', + [1180584106] = 'v_club_vu_djunit', + [-477112371] = 'v_club_vu_drawer', + [545167695] = 'v_club_vu_drawopen', + [517505175] = 'v_club_vu_table', + [161705229] = 'v_club_vuarmchair', + [1154536488] = 'v_club_vubrushpot', + [1282454220] = 'v_club_vuhairdryer', + [-1512875508] = 'v_club_vumakeupbrsh', + [1312997887] = 'v_club_vusnaketank', + [-329576248] = 'v_club_vutongs', + [360211997] = 'v_club_vuvanity', + [-107363589] = 'v_club_vuvanityboxop', + [-1474093273] = 'v_corp_banktrolley', + [-1072695459] = 'v_corp_bk_balustrade', + [918182878] = 'v_corp_bk_bust', + [559624133] = 'v_corp_bk_chair1', + [-274707376] = 'v_corp_bk_chair2', + [589738836] = 'v_corp_bk_chair3', + [1705517141] = 'v_corp_bk_filecab', + [1218671664] = 'v_corp_bk_filedraw', + [-842122186] = 'v_corp_bk_flag', + [-1891087379] = 'v_corp_bk_lamp1', + [-1057214632] = 'v_corp_bk_lamp2', + [2093003735] = 'v_corp_bk_lflts', + [-1438074360] = 'v_corp_bk_lfltstand', + [-1003586646] = 'v_corp_bk_pens', + [-1508270899] = 'v_corp_bk_rolladex', + [-1633805850] = 'v_corp_bk_secpanel', + [-1660261403] = 'v_corp_bombbin', + [675346369] = 'v_corp_bombhum', + [1846870313] = 'v_corp_bombplant', + [-2043453131] = 'v_corp_boxpapr1fd', + [-1894048659] = 'v_corp_boxpaprfd', + [1151238667] = 'v_corp_cabshelves01', + [695193399] = 'v_corp_cashpack', + [-2018598162] = 'v_corp_cashtrolley_2', + [-1645229742] = 'v_corp_cashtrolley', + [-501934650] = 'v_corp_cd_chair', + [-1574910470] = 'v_corp_cd_desklamp', + [-2054772838] = 'v_corp_cd_heater', + [1387880424] = 'v_corp_cd_intercom', + [1648266874] = 'v_corp_cd_pen', + [1894883523] = 'v_corp_cd_poncho', + [1677810564] = 'v_corp_cd_recseat', + [1609962109] = 'v_corp_cd_rectable', + [164297906] = 'v_corp_cd_wellies', + [-816093398] = 'v_corp_conftable', + [52605645] = 'v_corp_conftable2', + [-24204895] = 'v_corp_conftable3', + [-797848220] = 'v_corp_conftable4', + [-1780742350] = 'v_corp_cubiclefd', + [1725389147] = 'v_corp_deskdraw', + [-625147711] = 'v_corp_deskdrawdark01', + [615241095] = 'v_corp_deskdrawfd', + [-921053992] = 'v_corp_deskseta', + [-441381366] = 'v_corp_desksetb', + [-299507209] = 'v_corp_divide', + [-896397685] = 'v_corp_facebeanbag', + [-1175296758] = 'v_corp_facebeanbagb', + [-1481654139] = 'v_corp_facebeanbagc', + [-1515799437] = 'v_corp_facebeanbagd', + [1995042965] = 'v_corp_filecabdark01', + [-452932411] = 'v_corp_filecabdark02', + [342797216] = 'v_corp_filecabdark03', + [-1043920195] = 'v_corp_filecablow', + [-1576753431] = 'v_corp_filecabtall_01', + [-10023923] = 'v_corp_filecabtall', + [-287662406] = 'v_corp_hicksdoor', + [-2100188619] = 'v_corp_humidifier', + [444105316] = 'v_corp_lazychair', + [2140222155] = 'v_corp_lazychairfd', + [-418015275] = 'v_corp_lidesk01', + [2033813396] = 'v_corp_lngestool', + [-407563484] = 'v_corp_lngestoolfd', + [727437176] = 'v_corp_lowcabdark01', + [-414969862] = 'v_corp_maindesk', + [2047138003] = 'v_corp_maindeskfd', + [-109356459] = 'v_corp_offchair', + [1701829586] = 'v_corp_offchairfd', + [-1176082628] = 'v_corp_officedesk_5', + [1661599225] = 'v_corp_officedesk', + [-1862159210] = 'v_corp_officedesk003', + [970622537] = 'v_corp_officedesk004', + [-1864410231] = 'v_corp_officedesk1', + [-2098479198] = 'v_corp_officedesk2', + [-231178430] = 'v_corp_offshelf', + [122818624] = 'v_corp_offshelfclo', + [-544247459] = 'v_corp_offshelfdark', + [966106463] = 'v_corp_partitionfd', + [-1248717809] = 'v_corp_plants', + [-984397960] = 'v_corp_post_open', + [665940918] = 'v_corp_postbox', + [1109776775] = 'v_corp_postboxa', + [-101592915] = 'v_corp_potplant1', + [-645754929] = 'v_corp_potplant2', + [1190106820] = 'v_corp_servercln', + [332534418] = 'v_corp_servercln2', + [1024779176] = 'v_corp_servers1', + [786122549] = 'v_corp_servers2', + [1553455189] = 'v_corp_servrlowfd', + [973693654] = 'v_corp_servrtwrfd', + [1264966695] = 'v_corp_sidechair', + [-2086985229] = 'v_corp_sidechairfd', + [-2129865943] = 'v_corp_sidetable', + [-1667927856] = 'v_corp_sidetblefd', + [197536407] = 'v_corp_srvrrackfd', + [-1173060514] = 'v_corp_srvrtwrsfd', + [-1265231433] = 'v_corp_tallcabdark01', + [-711288318] = 'v_corp_trolley_fd', + [1463259268] = 'v_hair_d_bcream', + [1947776397] = 'v_hair_d_gel', + [299625631] = 'v_hair_d_shave', + [-2102534045] = 'v_haird_mousse', + [-397082484] = 'v_ilev_247_offdorr', + [997554217] = 'v_ilev_247door_r', + [1196685123] = 'v_ilev_247door', + [-2075659719] = 'v_ilev_a_tissue', + [1755793225] = 'v_ilev_abbmaindoor', + [239858268] = 'v_ilev_abbmaindoor2', + [575179269] = 'v_ilev_abmincer', + [679478775] = 'v_ilev_acet_projector', + [749848321] = 'v_ilev_arm_secdoor', + [-1666470363] = 'v_ilev_bank4door01', + [-353187150] = 'v_ilev_bank4door02', + [560831900] = 'v_ilev_bank4doorcls01', + [612934610] = 'v_ilev_bank4doorcls02', + [2009021085] = 'v_ilev_bk_closedsign', + [1956494919] = 'v_ilev_bk_door', + [964838196] = 'v_ilev_bk_door2', + [-1246222793] = 'v_ilev_bk_gate', + [1289409051] = 'v_ilev_bk_gate2', + [845734064] = 'v_ilev_bk_gatedam', + [1655182495] = 'v_ilev_bk_safegate', + [961976194] = 'v_ilev_bk_vaultdoor', + [-421709054] = 'v_ilev_bl_door_l', + [1282049587] = 'v_ilev_bl_door_r', + [1878909644] = 'v_ilev_bl_doorel_l', + [1709395619] = 'v_ilev_bl_doorel_r', + [19193616] = 'v_ilev_bl_doorpool', + [-1572101598] = 'v_ilev_bl_doorsl_l', + [161378502] = 'v_ilev_bl_doorsl_r', + [1094128201] = 'v_ilev_bl_elevdis1', + [1381807252] = 'v_ilev_bl_elevdis2', + [1688983858] = 'v_ilev_bl_elevdis3', + [1737076325] = 'v_ilev_bl_shutter1', + [-1081024910] = 'v_ilev_bl_shutter2', + [555704593] = 'v_ilev_blnds_clsd', + [859494299] = 'v_ilev_blnds_opn', + [-1268580434] = 'v_ilev_body_parts', + [-1844444717] = 'v_ilev_bs_door', + [-822900180] = 'v_ilev_carmod3door', + [-1236638811] = 'v_ilev_carmod3lamp', + [1372198431] = 'v_ilev_carmodlamps', + [-1184592117] = 'v_ilev_cbankcountdoor01', + [-1185205679] = 'v_ilev_cbankvauldoor01', + [1622278560] = 'v_ilev_cbankvaulgate01', + [1309269072] = 'v_ilev_cbankvaulgate02', + [1438783233] = 'v_ilev_cd_door', + [-551608542] = 'v_ilev_cd_door2', + [-311575617] = 'v_ilev_cd_door3', + [1853921277] = 'v_ilev_cd_dust', + [-519068795] = 'v_ilev_cd_entrydoor', + [-243154771] = 'v_ilev_cd_lampal_off', + [227078272] = 'v_ilev_cd_lampal', + [-1789571019] = 'v_ilev_cd_secdoor', + [-1716946115] = 'v_ilev_cd_secdoor2', + [1572003612] = 'v_ilev_cd_sprklr_on', + [-1803024667] = 'v_ilev_cd_sprklr_on2', + [-1861912328] = 'v_ilev_cd_sprklr', + [-952356348] = 'v_ilev_cf_officedoor', + [-1922281023] = 'v_ilev_ch_glassdoor', + [-784954167] = 'v_ilev_chair02_ped', + [-991376275] = 'v_ilev_chopshopswitch', + [741798665] = 'v_ilev_ciawin_solid', + [1358323305] = 'v_ilev_cin_screen', + [399820605] = 'v_ilev_clothhiendlights', + [-1849026432] = 'v_ilev_clothhiendlightsb', + [1780022985] = 'v_ilev_clothmiddoor', + [-710818483] = 'v_ilev_cm_door1', + [374758529] = 'v_ilev_cor_darkdoor', + [1415151278] = 'v_ilev_cor_doorglassa', + [580361003] = 'v_ilev_cor_doorglassb', + [14722111] = 'v_ilev_cor_doorlift01', + [-283574096] = 'v_ilev_cor_doorlift02', + [-770740285] = 'v_ilev_cor_firedoor', + [1653893025] = 'v_ilev_cor_firedoorwide', + [1859711902] = 'v_ilev_cor_offdoora', + [-640990823] = 'v_ilev_cor_windowsmash', + [927372848] = 'v_ilev_cor_windowsolid', + [-664582244] = 'v_ilev_cs_door', + [-1148826190] = 'v_ilev_cs_door01_r', + [868499217] = 'v_ilev_cs_door01', + [2059227086] = 'v_ilev_csr_door_l', + [1417577297] = 'v_ilev_csr_door_r', + [1693207013] = 'v_ilev_csr_garagedoor', + [1173751299] = 'v_ilev_csr_lod_boarded', + [1494855021] = 'v_ilev_csr_lod_broken', + [69012397] = 'v_ilev_csr_lod_normal', + [-1207991715] = 'v_ilev_ct_door01', + [-2083448347] = 'v_ilev_ct_door02', + [-1726331785] = 'v_ilev_ct_door03', + [1248599813] = 'v_ilev_ct_doorl', + [-1421582160] = 'v_ilev_ct_doorr', + [-1037226769] = 'v_ilev_depboxdoor01', + [-1270804459] = 'v_ilev_depo_box01_lid', + [-2037039530] = 'v_ilev_depo_box01', + [-543490328] = 'v_ilev_dev_door', + [-1474383439] = 'v_ilev_dev_windowdoor', + [-2069558801] = 'v_ilev_deviantfrontdoor', + [-1881825907] = 'v_ilev_door_orange', + [-495720969] = 'v_ilev_door_orangesolid', + [-1230442770] = 'v_ilev_epsstoredoor', + [1441141378] = 'v_ilev_exball_blue', + [-1984407546] = 'v_ilev_exball_grey', + [-1091549377] = 'v_ilev_fa_backdoor', + [1770281453] = 'v_ilev_fa_dinedoor', + [520341586] = 'v_ilev_fa_frontdoor', + [-610054759] = 'v_ilev_fa_roomdoor', + [2000998394] = 'v_ilev_fa_slidedoor', + [-431157263] = 'v_ilev_fa_warddoorl', + [56642071] = 'v_ilev_fa_warddoorr', + [-1679881977] = 'v_ilev_fb_door01', + [-1045015371] = 'v_ilev_fb_door02', + [1104171198] = 'v_ilev_fb_doorshortl', + [-1425071302] = 'v_ilev_fb_doorshortr', + [969847031] = 'v_ilev_fb_sl_door01', + [-458248282] = 'v_ilev_fbisecgate', + [1980513646] = 'v_ilev_fh_bedrmdoor', + [-1289815393] = 'v_ilev_fh_dineeamesa', + [-359451089] = 'v_ilev_fh_door01', + [-64988855] = 'v_ilev_fh_door02', + [1194028902] = 'v_ilev_fh_door03', + [479144380] = 'v_ilev_fh_door4', + [781635019] = 'v_ilev_fh_door5', + [1413743677] = 'v_ilev_fh_frntdoor', + [308207762] = 'v_ilev_fh_frontdoor', + [-1190156817] = 'v_ilev_fh_kitchenstool', + [-717890986] = 'v_ilev_fh_lampa_on', + [-1154592059] = 'v_ilev_fh_slidingdoor', + [-1068825540] = 'v_ilev_fib_atrcol', + [1254084949] = 'v_ilev_fib_atrgl1', + [1538387665] = 'v_ilev_fib_atrgl1s', + [1656258886] = 'v_ilev_fib_atrgl2', + [-1656457639] = 'v_ilev_fib_atrgl2s', + [1961371045] = 'v_ilev_fib_atrgl3', + [1635515553] = 'v_ilev_fib_atrgl3s', + [-1590795772] = 'v_ilev_fib_atrglswap', + [1511828512] = 'v_ilev_fib_btrmdr', + [2037845975] = 'v_ilev_fib_debris', + [995767216] = 'v_ilev_fib_door_ld', + [-853859998] = 'v_ilev_fib_door_maint', + [1709345781] = 'v_ilev_fib_door1_s', + [-2051651622] = 'v_ilev_fib_door1', + [-1821777087] = 'v_ilev_fib_door2', + [-538477509] = 'v_ilev_fib_door3', + [-1083130717] = 'v_ilev_fib_doorbrn', + [-1225363909] = 'v_ilev_fib_doore_l', + [1219957182] = 'v_ilev_fib_doore_r', + [-1094413626] = 'v_ilev_fib_frame', + [-1198372198] = 'v_ilev_fib_frame02', + [-1422151699] = 'v_ilev_fib_frame03', + [-662750590] = 'v_ilev_fib_postbox_door', + [171927851] = 'v_ilev_fib_sprklr_off', + [-307685876] = 'v_ilev_fib_sprklr_on', + [1441541494] = 'v_ilev_fib_sprklr', + [-90456267] = 'v_ilev_fibl_door01', + [-1517873911] = 'v_ilev_fibl_door02', + [-1932297301] = 'v_ilev_fin_vaultdoor', + [783120868] = 'v_ilev_finale_shut01', + [-726591477] = 'v_ilev_finelevdoor01', + [-1011692606] = 'v_ilev_fingate', + [-721126326] = 'v_ilev_fos_desk', + [1524959858] = 'v_ilev_fos_mic', + [1298168968] = 'v_ilev_fos_tvstage', + [1787909913] = 'v_ilev_found_crane_pulley', + [-1639085878] = 'v_ilev_found_cranebucket', + [-1966155284] = 'v_ilev_found_gird_crane', + [-1795554008] = 'v_ilev_frnkwarddr1', + [-953390708] = 'v_ilev_frnkwarddr2', + [1936747465] = 'v_ilev_gangsafe', + [-1972117760] = 'v_ilev_gangsafedial', + [-1375589668] = 'v_ilev_gangsafedoor', + [-1240156945] = 'v_ilev_garageliftdoor', + [2065277225] = 'v_ilev_gasdoor_r', + [-868672903] = 'v_ilev_gasdoor', + [-131754413] = 'v_ilev_gb_teldr', + [-1591004109] = 'v_ilev_gb_vaubar', + [2121050683] = 'v_ilev_gb_vauldr', + [452874391] = 'v_ilev_gc_door01', + [825720073] = 'v_ilev_gc_door02', + [-8873588] = 'v_ilev_gc_door03', + [97297972] = 'v_ilev_gc_door04', + [2043652349] = 'v_ilev_gc_grenades', + [448769273] = 'v_ilev_gc_handguns', + [424713737] = 'v_ilev_gc_weapons', + [1669201391] = 'v_ilev_gcshape_assmg_25', + [-1916693643] = 'v_ilev_gcshape_assmg_50', + [426526770] = 'v_ilev_gcshape_asssmg_25', + [-2090592684] = 'v_ilev_gcshape_asssmg_50', + [-219416200] = 'v_ilev_gcshape_asssnip_25', + [210647776] = 'v_ilev_gcshape_asssnip_50', + [-1206288668] = 'v_ilev_gcshape_bull_25', + [-1722377621] = 'v_ilev_gcshape_bull_50', + [-550608984] = 'v_ilev_gcshape_hvyrif_25', + [994808393] = 'v_ilev_gcshape_hvyrif_50', + [1462802950] = 'v_ilev_gcshape_pistol50_25', + [1103063944] = 'v_ilev_gcshape_pistol50_50', + [1796822553] = 'v_ilev_gcshape_progar_25', + [-1559411953] = 'v_ilev_gcshape_progar_50', + [-1152174184] = 'v_ilev_genbankdoor1', + [73386408] = 'v_ilev_genbankdoor2', + [-129553421] = 'v_ilev_gendoor01', + [1242124150] = 'v_ilev_gendoor02', + [-1984061587] = 'v_ilev_go_window', + [-1231329491] = 'v_ilev_gold', + [-1033001619] = 'v_ilev_gtdoor', + [-340230128] = 'v_ilev_gtdoor02', + [1373634352] = 'v_ilev_gunhook', + [-1422136292] = 'v_ilev_gunsign_assmg', + [-612732598] = 'v_ilev_gunsign_asssmg', + [-1806594651] = 'v_ilev_gunsign_asssniper', + [-75356570] = 'v_ilev_gunsign_bull', + [72096805] = 'v_ilev_gunsign_hvyrif', + [-1891639499] = 'v_ilev_gunsign_pistol50', + [1783415536] = 'v_ilev_gunsign_progar', + [-1291993936] = 'v_ilev_hd_chair', + [-1663512092] = 'v_ilev_hd_door_l', + [145369505] = 'v_ilev_hd_door_r', + [1436076651] = 'v_ilev_housedoor1', + [1335309163] = 'v_ilev_j2_door', + [486670049] = 'v_ilev_janitor_frontdoor', + [-377849416] = 'v_ilev_leath_chr', + [-1844609989] = 'v_ilev_lest_bigscreen', + [1145337974] = 'v_ilev_lester_doorfront', + [-1647153464] = 'v_ilev_lester_doorveranda', + [-182643788] = 'v_ilev_liconftable_sml', + [836744388] = 'v_ilev_light_wardrobe_face', + [190770132] = 'v_ilev_lostdoor', + [747286790] = 'v_ilev_losttoiletdoor', + [451260528] = 'v_ilev_m_dinechair', + [-1326319394] = 'v_ilev_m_pitcher', + [-1877459292] = 'v_ilev_m_sofa', + [2146145503] = 'v_ilev_m_sofacushion', + [-353164031] = 'v_ilev_mchalkbrd_1', + [-590870357] = 'v_ilev_mchalkbrd_2', + [-290739082] = 'v_ilev_mchalkbrd_3', + [-739019002] = 'v_ilev_mchalkbrd_4', + [-976397638] = 'v_ilev_mchalkbrd_5', + [509373999] = 'v_ilev_melt_set01', + [-352193203] = 'v_ilev_methdoorbust', + [-995467546] = 'v_ilev_methdoorscuff', + [-1815392278] = 'v_ilev_methtraildoor', + [-1212951353] = 'v_ilev_ml_door1', + [2088680867] = 'v_ilev_mldoor02', + [-1563640173] = 'v_ilev_mm_door', + [1204471037] = 'v_ilev_mm_doordaughter', + [159994461] = 'v_ilev_mm_doorm_l', + [-1686014385] = 'v_ilev_mm_doorm_r', + [-794543736] = 'v_ilev_mm_doorson', + [-384976104] = 'v_ilev_mm_doorw', + [-1932159029] = 'v_ilev_mm_faucet', + [-1444496707] = 'v_ilev_mm_fridge_l', + [-659810237] = 'v_ilev_mm_fridge_r', + [-310148339] = 'v_ilev_mm_fridgeint', + [1923965997] = 'v_ilev_mm_scre_off', + [-1624781226] = 'v_ilev_mm_screen', + [-1645730886] = 'v_ilev_mm_screen2_vl', + [305134324] = 'v_ilev_mm_screen2', + [1019527301] = 'v_ilev_mm_windowwc', + [-1663022887] = 'v_ilev_moteldoorcso', + [1175177969] = 'v_ilev_mp_bedsidebook', + [574422567] = 'v_ilev_mp_high_frontdoor', + [1558432213] = 'v_ilev_mp_low_frontdoor', + [-320948292] = 'v_ilev_mp_mid_frontdoor', + [-1354005816] = 'v_ilev_mr_rasberryclean', + [1334355753] = 'v_ilev_out_serv_sign', + [98421364] = 'v_ilev_p_easychair', + [-1461986002] = 'v_ilev_ph_bench', + [631614199] = 'v_ilev_ph_cellgate', + [871712474] = 'v_ilev_ph_cellgate02', + [320433149] = 'v_ilev_ph_door002', + [-1215222675] = 'v_ilev_ph_door01', + [1804615079] = 'v_ilev_ph_doorframe', + [-522504255] = 'v_ilev_ph_gendoor', + [-1320876379] = 'v_ilev_ph_gendoor002', + [-543497392] = 'v_ilev_ph_gendoor003', + [1557126584] = 'v_ilev_ph_gendoor004', + [185711165] = 'v_ilev_ph_gendoor005', + [-131296141] = 'v_ilev_ph_gendoor006', + [458025182] = 'v_ilev_phroofdoor', + [1378348636] = 'v_ilev_po_door', + [-696000204] = 'v_ilev_prop_74_emr_3b_02', + [-771420653] = 'v_ilev_prop_74_emr_3b', + [1175183140] = 'v_ilev_prop_fib_glass', + [-1032171637] = 'v_ilev_ra_door1_l', + [-52575179] = 'v_ilev_ra_door1_r', + [736699661] = 'v_ilev_ra_door2', + [-228773386] = 'v_ilev_ra_door3', + [1504256620] = 'v_ilev_ra_door4l', + [262671971] = 'v_ilev_ra_door4r', + [174080689] = 'v_ilev_ra_doorsafe', + [812467272] = 'v_ilev_rc_door1_st', + [362975687] = 'v_ilev_rc_door1', + [-2023754432] = 'v_ilev_rc_door2', + [1099436502] = 'v_ilev_rc_door3_l', + [-1627599682] = 'v_ilev_rc_door3_r', + [-1586611409] = 'v_ilev_rc_doorel_l', + [-199073634] = 'v_ilev_rc_doorel_r', + [-604127842] = 'v_ilev_rc_win_col', + [202981272] = 'v_ilev_roc_door1_l', + [1117236368] = 'v_ilev_roc_door1_r', + [-626684119] = 'v_ilev_roc_door2', + [1289778077] = 'v_ilev_roc_door3', + [993120320] = 'v_ilev_roc_door4', + [757543979] = 'v_ilev_roc_door5', + [1083279016] = 'v_ilev_serv_door01', + [-1501157055] = 'v_ilev_shrf2door', + [-1765048490] = 'v_ilev_shrfdoor', + [-2030220382] = 'v_ilev_sol_off_door01', + [-1872657177] = 'v_ilev_sol_windl', + [-966365012] = 'v_ilev_sol_windr', + [1544229216] = 'v_ilev_spraydoor', + [1388116908] = 'v_ilev_ss_door01', + [551491569] = 'v_ilev_ss_door02', + [933053701] = 'v_ilev_ss_door03', + [1173348778] = 'v_ilev_ss_door04', + [-658747851] = 'v_ilev_ss_door5_l', + [1335311341] = 'v_ilev_ss_door5_r', + [-681066206] = 'v_ilev_ss_door7', + [245182344] = 'v_ilev_ss_door8', + [1804626822] = 'v_ilev_ss_doorext', + [865041037] = 'v_ilev_stad_fdoor', + [-1775213343] = 'v_ilev_staffdoor', + [426403179] = 'v_ilev_store_door', + [543652229] = 'v_ilev_ta_door', + [1243635233] = 'v_ilev_ta_door2', + [1334823285] = 'v_ilev_ta_tatgun', + [464151082] = 'v_ilev_tort_door', + [-1062023761] = 'v_ilev_tort_stool', + [-1977105237] = 'v_ilev_tow_doorlifta', + [-522980862] = 'v_ilev_tow_doorliftb', + [-1128607325] = 'v_ilev_trev_door', + [1575804630] = 'v_ilev_trev_doorbath', + [-607040053] = 'v_ilev_trev_doorfront', + [-1920325949] = 'v_ilev_trev_patiodoor', + [581339868] = 'v_ilev_trev_pictureframe', + [-116675177] = 'v_ilev_trev_pictureframebroken', + [-1849799179] = 'v_ilev_trev_planningboard', + [132154435] = 'v_ilev_trevtraildr', + [2094167240] = 'v_ilev_tt_plate01', + [-208371500] = 'v_ilev_uvcheetah', + [815982790] = 'v_ilev_uventity', + [-2144749081] = 'v_ilev_uvjb700', + [-721082096] = 'v_ilev_uvline', + [-525982534] = 'v_ilev_uvmonroe', + [-398664307] = 'v_ilev_uvsquiggle', + [1465930007] = 'v_ilev_uvtext', + [-1913152057] = 'v_ilev_uvztype', + [-267021114] = 'v_ilev_vag_door', + [-122922994] = 'v_ilev_vagostoiletdoor', + [-1915240321] = 'v_ilev_winblnd_clsd', + [-1182144056] = 'v_ilev_winblnd_opn', + [2051806701] = 'v_ind_bin_01', + [-980590507] = 'v_ind_cf_bollard', + [503355010] = 'v_ind_cf_boxes', + [514967915] = 'v_ind_cf_broom', + [-922074785] = 'v_ind_cf_bugzap', + [1959542339] = 'v_ind_cf_chckbox1', + [1811655854] = 'v_ind_cf_chckbox2', + [-1244905398] = 'v_ind_cf_chckbox3', + [-832246005] = 'v_ind_cf_crate', + [-1243861868] = 'v_ind_cf_crate1', + [-304079717] = 'v_ind_cf_crate2', + [1350712180] = 'v_ind_cf_paltruck', + [328474980] = 'v_ind_cf_shelf', + [-2076979604] = 'v_ind_cf_shelf2', + [1864918670] = 'v_ind_cf_wheat', + [-716849897] = 'v_ind_cf_wheat2', + [1951313592] = 'v_ind_cfbin', + [-1321159957] = 'v_ind_cfbox', + [456071379] = 'v_ind_cfbox2', + [-700527926] = 'v_ind_cfbucket', + [261213595] = 'v_ind_cfcovercrate', + [-1809990107] = 'v_ind_cfcrate3', + [2070448269] = 'v_ind_cfcup', + [907513479] = 'v_ind_cfemlight', + [1715270075] = 'v_ind_cfkeyboard', + [-2113917266] = 'v_ind_cfknife', + [723528502] = 'v_ind_cflight', + [234058572] = 'v_ind_cflight02', + [1720887188] = 'v_ind_cfmouse', + [-792596291] = 'v_ind_cfpaste', + [1999508550] = 'v_ind_cfscoop', + [1448872192] = 'v_ind_cftable', + [903690172] = 'v_ind_cftray', + [92879096] = 'v_ind_cftub', + [-517775183] = 'v_ind_cfwaste', + [-1950371385] = 'v_ind_chickensx3', + [1288862485] = 'v_ind_cm_aircomp', + [-142948810] = 'v_ind_cm_crowbar', + [1241686973] = 'v_ind_cm_electricbox', + [-871511300] = 'v_ind_cm_fan', + [1171045694] = 'v_ind_cm_grinder', + [-724745797] = 'v_ind_cm_heatlamp', + [545744994] = 'v_ind_cm_hosereel', + [774227908] = 'v_ind_cm_ladder', + [1190015357] = 'v_ind_cm_light_off', + [-1417176582] = 'v_ind_cm_light_on', + [1971972932] = 'v_ind_cm_paintbckt01', + [1005516815] = 'v_ind_cm_paintbckt02', + [1312005272] = 'v_ind_cm_paintbckt03', + [459355892] = 'v_ind_cm_paintbckt04', + [-117444046] = 'v_ind_cm_paintbckt06', + [1412351218] = 'v_ind_cm_panelstd', + [-1787453881] = 'v_ind_cm_sprgun', + [1274229080] = 'v_ind_cm_tyre01', + [1640324348] = 'v_ind_cm_tyre02', + [1271673102] = 'v_ind_cm_tyre03', + [1637506218] = 'v_ind_cm_tyre04', + [1868560437] = 'v_ind_cm_tyre05', + [-147453981] = 'v_ind_cm_tyre06', + [118105995] = 'v_ind_cm_tyre07', + [325304382] = 'v_ind_cm_tyre08', + [121493747] = 'v_ind_cs_axe', + [-1585712516] = 'v_ind_cs_blowtorch', + [-1371480476] = 'v_ind_cs_box01', + [-1134789989] = 'v_ind_cs_box02', + [11680152] = 'v_ind_cs_bucket', + [1721142557] = 'v_ind_cs_chemcan', + [1309720974] = 'v_ind_cs_drill', + [-2088599787] = 'v_ind_cs_gascanister', + [173895646] = 'v_ind_cs_hammer', + [820267179] = 'v_ind_cs_hifi', + [-137816056] = 'v_ind_cs_hubcap', + [-288941741] = 'v_ind_cs_jerrycan01', + [-1075580285] = 'v_ind_cs_mallet', + [-95119868] = 'v_ind_cs_oiltin', + [-1985227443] = 'v_ind_cs_pliers', + [-617072343] = 'v_ind_cs_powersaw', + [1379428518] = 'v_ind_cs_screwdrivr1', + [618499569] = 'v_ind_cs_screwdrivr2', + [916763007] = 'v_ind_cs_screwdrivr3', + [-2001282532] = 'v_ind_cs_spanner01', + [-1738376845] = 'v_ind_cs_spanner02', + [1380609336] = 'v_ind_cs_spanner03', + [-603684694] = 'v_ind_cs_spanner04', + [672287294] = 'v_ind_cs_striplight', + [1871266393] = 'v_ind_cs_toolbox2', + [-2124552702] = 'v_ind_cs_toolbox3', + [-738161850] = 'v_ind_cs_toolbox4', + [662269471] = 'v_ind_cs_tray04', + [1596752624] = 'v_ind_cs_wrench', + [-149613816] = 'v_ind_dc_desk03', + [1045800235] = 'v_ind_dc_filecab01', + [-1887723793] = 'v_ind_dc_table', + [-1425928564] = 'v_ind_fatbox', + [1639970925] = 'v_ind_meat_comm', + [389157600] = 'v_ind_meatbench', + [225569900] = 'v_ind_meatbox', + [2142821084] = 'v_ind_meatboxsml_02', + [-1588475636] = 'v_ind_meatboxsml', + [842487169] = 'v_ind_meatbutton', + [-1890319650] = 'v_ind_meatclner', + [1124240679] = 'v_ind_meatcoatblu', + [-892259203] = 'v_ind_meatcoatwhte', + [2079652499] = 'v_ind_meatcpboard', + [-346996726] = 'v_ind_meatdesk', + [-1058869339] = 'v_ind_meatdogpack', + [-1612153297] = 'v_ind_meatexit', + [-2097289821] = 'v_ind_meathatblu', + [324572995] = 'v_ind_meathatwht', + [-452842237] = 'v_ind_meatpacks_03', + [379464063] = 'v_ind_meatpacks', + [-2091843498] = 'v_ind_meattherm', + [-1999230727] = 'v_ind_meatwash', + [646223233] = 'v_ind_meatwellie', + [350580121] = 'v_ind_plazbags', + [1229810073] = 'v_ind_rc_balec1', + [918176883] = 'v_ind_rc_balec2', + [635675334] = 'v_ind_rc_balec3', + [-1293123399] = 'v_ind_rc_balep1', + [682060845] = 'v_ind_rc_balep2', + [390842742] = 'v_ind_rc_balep3', + [-1161562200] = 'v_ind_rc_bench', + [-827869555] = 'v_ind_rc_brush', + [60431986] = 'v_ind_rc_cage', + [1149958256] = 'v_ind_rc_dustmask', + [-1231743205] = 'v_ind_rc_fans', + [1488902800] = 'v_ind_rc_hanger', + [-447995148] = 'v_ind_rc_locker', + [-1674688407] = 'v_ind_rc_lockeropn', + [-30995600] = 'v_ind_rc_lowtable', + [75747589] = 'v_ind_rc_overalldrp', + [-791425184] = 'v_ind_rc_overallfld', + [-615829401] = 'v_ind_rc_plaztray', + [-1112949593] = 'v_ind_rc_rubbish', + [-2070991045] = 'v_ind_rc_rubbish2', + [898538019] = 'v_ind_rc_rubbishppr', + [1462472410] = 'v_ind_rc_shovel', + [1753713494] = 'v_ind_rc_towel', + [1695407879] = 'v_ind_rc_workbag', + [590855381] = 'v_ind_sinkequip', + [-1674556377] = 'v_ind_sinkhand', + [-1719363059] = 'v_ind_ss_box01', + [146536570] = 'v_ind_ss_box02', + [-84779801] = 'v_ind_ss_box03', + [9168982] = 'v_ind_ss_box04', + [215586331] = 'v_ind_ss_chair01', + [-416920619] = 'v_ind_ss_chair2', + [-1318225618] = 'v_ind_ss_chair3_cso', + [-1101218487] = 'v_ind_ss_clothrack', + [1871921918] = 'v_ind_ss_deskfan', + [-662693816] = 'v_ind_ss_deskfan2', + [-679606598] = 'v_ind_ss_laptop', + [-260999819] = 'v_ind_tor_bulkheadlight', + [502084445] = 'v_ind_tor_clockincard', + [2136062268] = 'v_ind_tor_smallhoist01', + [-576960708] = 'v_ind_v_recycle_lamp1', + [-389409078] = 'v_int_32_bugzap', + [1400906837] = 'v_int_m3_decal', + [-874755633] = 'v_int_m3_decal001', + [-652319661] = 'v_int_m3_decal002', + [-281014134] = 'v_int_m3_decal003', + [-24301788] = 'v_int_m3_decal004', + [-198075783] = 'v_int_m3_decal005', + [46118805] = 'v_int_m3_decal006', + [45186737] = 'v_int_m6_decal', + [484466561] = 'v_int_m6_decal001', + [103952933] = 'v_int_m6_decal002', + [-127101286] = 'v_int_m6_decal003', + [-23846155] = 'v_int_m6_decal004', + [-261847402] = 'v_int_m6_decal005', + [972822972] = 'v_int_m6_decal006', + [-475325641] = 'v_int_metro_mir', + [-1195344211] = 'v_lirg_frankaunt_ward_face', + [1791760567] = 'v_lirg_frankaunt_ward_main', + [-985309905] = 'v_lirg_frankhill_ward_face', + [-958557065] = 'v_lirg_frankhill_ward_main', + [-410192220] = 'v_lirg_gunlight', + [1458246144] = 'v_lirg_michael_ward_default', + [-693502639] = 'v_lirg_michael_ward_face', + [-80426688] = 'v_lirg_michael_ward_main', + [1109580392] = 'v_lirg_mphigh_ward_face', + [-1931328178] = 'v_lirg_mphigh_ward_main', + [1428755495] = 'v_lirg_shop_high', + [1017145447] = 'v_lirg_shop_low', + [1431484746] = 'v_lirg_shop_mid', + [712238579] = 'v_lirg_trevapt_ward_face', + [-2097065849] = 'v_lirg_trevapt_ward_main', + [-917545000] = 'v_lirg_trevstrip_ward_face', + [402487526] = 'v_lirg_trevstrip_ward_main', + [-808157183] = 'v_lirg_trevtrail_ward_face', + [229550667] = 'v_lirg_trevtrail_ward_main', + [-624092254] = 'v_med_apecrate', + [-1166401535] = 'v_med_apecratelrg', + [-1397853612] = 'v_med_barrel', + [-644915300] = 'v_med_beaker', + [1631638868] = 'v_med_bed1', + [2117668672] = 'v_med_bed2', + [-1405657799] = 'v_med_bedtable', + [2017762556] = 'v_med_bench1', + [-1087788335] = 'v_med_bench2', + [756754339] = 'v_med_benchcentr', + [-1278278442] = 'v_med_benchset1', + [1728397219] = 'v_med_bigtable', + [1291456491] = 'v_med_bin', + [1366557924] = 'v_med_bl_fan_base', + [333086378] = 'v_med_bottles1', + [-576515524] = 'v_med_bottles2', + [-246597232] = 'v_med_bottles3', + [-136021091] = 'v_med_centrifuge1', + [-912154856] = 'v_med_centrifuge2', + [282049592] = 'v_med_cooler', + [-980405469] = 'v_med_cor_alarmlight', + [1615299850] = 'v_med_cor_autopsytbl', + [389765485] = 'v_med_cor_ceilingmonitor', + [-926951449] = 'v_med_cor_cembin', + [-1963803813] = 'v_med_cor_cemtrolly', + [-1601873219] = 'v_med_cor_cemtrolly2', + [1541924614] = 'v_med_cor_chemical', + [-1283117809] = 'v_med_cor_divider', + [1280262670] = 'v_med_cor_dividerframe', + [2111759378] = 'v_med_cor_downlight', + [-1182962909] = 'v_med_cor_emblmtable', + [-972854506] = 'v_med_cor_fileboxa', + [591282751] = 'v_med_cor_filingcab', + [1716227680] = 'v_med_cor_flatscreentv', + [811434201] = 'v_med_cor_hose', + [943356154] = 'v_med_cor_largecupboard', + [1910757705] = 'v_med_cor_lightbox', + [-1398008772] = 'v_med_cor_mask', + [-791486929] = 'v_med_cor_masks', + [2143838161] = 'v_med_cor_medhose', + [-992710074] = 'v_med_cor_medstool', + [795095898] = 'v_med_cor_minifridge', + [226389500] = 'v_med_cor_neckrest', + [-1432298883] = 'v_med_cor_offglass', + [-1183731840] = 'v_med_cor_offglasssm', + [-253978396] = 'v_med_cor_offglasstopw', + [-980357554] = 'v_med_cor_papertowels', + [-74423442] = 'v_med_cor_photocopy', + [-1581981380] = 'v_med_cor_pinboard', + [993510245] = 'v_med_cor_reception_glass', + [2127663343] = 'v_med_cor_shelfrack', + [-1792422095] = 'v_med_cor_stepladder', + [-1481915741] = 'v_med_cor_tvstand', + [-843908794] = 'v_med_cor_unita', + [1536155685] = 'v_med_cor_walllight', + [1363784497] = 'v_med_cor_wallunita', + [1618170244] = 'v_med_cor_wallunitb', + [2030380378] = 'v_med_cor_wheelbench', + [753248111] = 'v_med_cor_whiteboard', + [1579586191] = 'v_med_cor_winftop', + [984424205] = 'v_med_cor_winfwide', + [378644224] = 'v_med_corlowfilecab', + [-1035084591] = 'v_med_crutch01', + [149873283] = 'v_med_curtains', + [1067386341] = 'v_med_curtains1', + [-1335531664] = 'v_med_curtains2', + [-1446946264] = 'v_med_curtains3', + [1915724430] = 'v_med_curtainsnewcloth1', + [1677854259] = 'v_med_curtainsnewcloth2', + [-1091386327] = 'v_med_emptybed', + [-841445009] = 'v_med_examlight_static', + [-197371371] = 'v_med_examlight', + [-936477296] = 'v_med_fabricchair1', + [851362411] = 'v_med_flask', + [346710503] = 'v_med_fumesink', + [-715395941] = 'v_med_gastank', + [828604385] = 'v_med_hazmatscan', + [-1594158571] = 'v_med_hospheadwall1', + [-128924068] = 'v_med_hospseating1', + [-1475893813] = 'v_med_hospseating2', + [-306007744] = 'v_med_hospseating3', + [-475292398] = 'v_med_hospseating4', + [-609817558] = 'v_med_hosptable', + [-1505864138] = 'v_med_hosptableglass', + [-1177455368] = 'v_med_lab_elecbox1', + [-947646371] = 'v_med_lab_elecbox2', + [-1918067545] = 'v_med_lab_elecbox3', + [-1794475037] = 'v_med_lab_filtera', + [-2041061762] = 'v_med_lab_filterb', + [1020863041] = 'v_med_lab_fridge', + [1265651373] = 'v_med_lab_optable', + [-25633340] = 'v_med_lab_wallcab', + [-454893864] = 'v_med_lab_whboard1', + [-420289800] = 'v_med_lab_whboard2', + [1643325771] = 'v_med_latexgloveboxblue', + [-1958247401] = 'v_med_latexgloveboxgreen', + [-1497857609] = 'v_med_latexgloveboxred', + [-1222449348] = 'v_med_lrgisolator', + [-963487759] = 'v_med_mattress', + [-1978149371] = 'v_med_medwastebin', + [-1317361805] = 'v_med_metalfume', + [813074696] = 'v_med_microscope', + [92887898] = 'v_med_oscillator1', + [465602504] = 'v_med_oscillator2', + [705176663] = 'v_med_oscillator3', + [944095442] = 'v_med_oscillator4', + [986810493] = 'v_med_p_coffeetable', + [-1728099828] = 'v_med_p_desk', + [-1254619912] = 'v_med_p_deskchair', + [-802034762] = 'v_med_p_easychair', + [917451449] = 'v_med_p_ext_plant', + [768819051] = 'v_med_p_fanlight', + [-1350228215] = 'v_med_p_figfish', + [-1860662917] = 'v_med_p_floorlamp', + [1207079890] = 'v_med_p_lamp_on', + [1062276366] = 'v_med_p_notebook', + [-1359959481] = 'v_med_p_phrenhead', + [743808545] = 'v_med_p_planter', + [290907630] = 'v_med_p_sideboard', + [-345387217] = 'v_med_p_sidetable', + [-1788378994] = 'v_med_p_sofa', + [456839722] = 'v_med_p_tidybox', + [2139601616] = 'v_med_p_vaseround', + [-1762358844] = 'v_med_p_vasetall', + [-587414879] = 'v_med_p_wallhead', + [259988008] = 'v_med_pillow', + [-172171507] = 'v_med_smokealarm', + [-1029667826] = 'v_med_soapdisp', + [166629214] = 'v_med_soapdispencer', + [-1700923416] = 'v_med_storage', + [388753871] = 'v_med_testtubes', + [79058805] = 'v_med_testuberack', + [-1218668262] = 'v_med_trolley', + [1439968368] = 'v_med_trolley2', + [-1911932785] = 'v_med_vats', + [-984671127] = 'v_med_vcor_winfnarrow', + [-1573870288] = 'v_med_wallpicture1', + [-1805219428] = 'v_med_wallpicture2', + [-1432029772] = 'v_med_whickchair2', + [-1657573824] = 'v_med_whickchair2bit', + [-1786424499] = 'v_med_whickerchair1', + [1869654794] = 'v_med_xray', + [1802131904] = 'v_metro_steps005seoul', + [380414644] = 'v_metro_steps006seoul', + [1044906875] = 'v_metro_steps007seoul', + [-93961724] = 'v_metro_steps3seoul', + [-1134964555] = 'v_metro2_ao', + [-1851638121] = 'v_metro3_ao', + [-856051509] = 'v_metro4_ao', + [625585855] = 'v_metro6_ao', + [-1186975865] = 'v_proc2_temp', + [540021153] = 'v_prop_floatcandle', + [-1095443412] = 'v_res_binder', + [900650591] = 'v_res_bowl_dec', + [-1221122355] = 'v_res_cabinet', + [-654508181] = 'v_res_cakedome', + [641508] = 'v_res_cctv', + [-941766439] = 'v_res_cd', + [-1681354036] = 'v_res_cdstorage', + [-730024798] = 'v_res_cherubvase', + [-552231252] = 'v_res_d_armchair', + [-1459966494] = 'v_res_d_bed', + [1544669620] = 'v_res_d_closetdoorl', + [-1177942745] = 'v_res_d_closetdoorr', + [-1310947507] = 'v_res_d_coffeetable', + [-463441113] = 'v_res_d_dildo_a', + [-731262150] = 'v_res_d_dildo_b', + [-1980613044] = 'v_res_d_dildo_c', + [2009373169] = 'v_res_d_dildo_d', + [-1921596075] = 'v_res_d_dildo_e', + [1333481871] = 'v_res_d_dildo_f', + [-144591170] = 'v_res_d_dressdummy', + [722857897] = 'v_res_d_dressingtable', + [-1987538561] = 'v_res_d_highchair', + [-1692648419] = 'v_res_d_lampa', + [1553232197] = 'v_res_d_lube', + [465332832] = 'v_res_d_paddedwall', + [-1023402492] = 'v_res_d_ramskull', + [-1871589878] = 'v_res_d_roundtable', + [-1905971121] = 'v_res_d_sideunit', + [-660421502] = 'v_res_d_smallsidetable', + [-598219252] = 'v_res_d_sofa', + [862082396] = 'v_res_d_whips', + [1285646130] = 'v_res_d_zimmerframe', + [-128014284] = 'v_res_desklamp', + [-1981136783] = 'v_res_desktidy', + [-713205494] = 'v_res_exoticvase', + [-1290286289] = 'v_res_fa_basket', + [1233387166] = 'v_res_fa_book02', + [865260220] = 'v_res_fa_book03', + [-439830743] = 'v_res_fa_book04', + [2065988552] = 'v_res_fa_boot01l', + [-1309218480] = 'v_res_fa_boot01r', + [-325297300] = 'v_res_fa_bread03', + [434827368] = 'v_res_fa_butknife', + [1160787715] = 'v_res_fa_candle02', + [-1264675346] = 'v_res_fa_candle03', + [-1915729838] = 'v_res_fa_candle04', + [210172640] = 'v_res_fa_cap01', + [-717511315] = 'v_res_fa_cereal01', + [-763944988] = 'v_res_fa_cereal02', + [438342263] = 'v_res_fa_chair01', + [685944827] = 'v_res_fa_chair02', + [782213229] = 'v_res_fa_chopbrd', + [642527033] = 'v_res_fa_crystal01', + [-2051379688] = 'v_res_fa_crystal02', + [1410173631] = 'v_res_fa_crystal03', + [684271492] = 'v_res_fa_fan', + [-1968674263] = 'v_res_fa_grater', + [-1150219047] = 'v_res_fa_idol02', + [272198484] = 'v_res_fa_lamp1on', + [2002578023] = 'v_res_fa_lamp2off', + [688475446] = 'v_res_fa_mag_motor', + [1404473282] = 'v_res_fa_mag_rumor', + [-1884999004] = 'v_res_fa_magtidy', + [-202575753] = 'v_res_fa_phone', + [-755359081] = 'v_res_fa_plant01', + [-815336865] = 'v_res_fa_potcof', + [-1359533616] = 'v_res_fa_potnoodle', + [-2068112130] = 'v_res_fa_potsug', + [-1411221263] = 'v_res_fa_pottea', + [1695345049] = 'v_res_fa_pyramid', + [1257238301] = 'v_res_fa_radioalrm', + [-1073715810] = 'v_res_fa_shoebox1', + [-1448658708] = 'v_res_fa_shoebox2', + [-72000249] = 'v_res_fa_shoebox3', + [101151147] = 'v_res_fa_shoebox4', + [1726659245] = 'v_res_fa_smokealarm', + [-915298033] = 'v_res_fa_sponge01', + [-2137717159] = 'v_res_fa_stones01', + [491441454] = 'v_res_fa_tintomsoup', + [1033236166] = 'v_res_fa_trainer01l', + [-1394619048] = 'v_res_fa_trainer01r', + [-923531556] = 'v_res_fa_trainer02l', + [1673510001] = 'v_res_fa_trainer02r', + [-1062243669] = 'v_res_fa_trainer03l', + [1443994993] = 'v_res_fa_trainer03r', + [10548213] = 'v_res_fa_trainer04l', + [1914623727] = 'v_res_fa_trainer04r', + [-1572239056] = 'v_res_fa_umbrella', + [-1911936130] = 'v_res_fa_washlq', + [1938168396] = 'v_res_fa_yogamat002', + [-1077568635] = 'v_res_fa_yogamat1', + [-2042781782] = 'v_res_fashmag1', + [2003032008] = 'v_res_fashmagopen', + [1117944066] = 'v_res_fh_aftershavebox', + [-1061363766] = 'v_res_fh_barcchair', + [-1989035681] = 'v_res_fh_bedsideclock', + [1427480666] = 'v_res_fh_benchlong', + [-2009287960] = 'v_res_fh_benchshort', + [567797420] = 'v_res_fh_coftablea', + [1453641789] = 'v_res_fh_coftableb', + [-563800903] = 'v_res_fh_coftbldisp', + [1519332782] = 'v_res_fh_crateclosed', + [-238480731] = 'v_res_fh_crateopen', + [-603563862] = 'v_res_fh_dineeamesa', + [174634350] = 'v_res_fh_dineeamesb', + [-125562459] = 'v_res_fh_dineeamesc', + [1821191822] = 'v_res_fh_diningtable', + [-1394425261] = 'v_res_fh_easychair', + [1376856765] = 'v_res_fh_floorlamp', + [-1632952975] = 'v_res_fh_flowersa', + [-298634306] = 'v_res_fh_fruitbowl', + [-1753930779] = 'v_res_fh_guitaramp', + [-1972746906] = 'v_res_fh_kitnstool', + [139155200] = 'v_res_fh_lampa_on', + [698127650] = 'v_res_fh_laundrybasket', + [771696538] = 'v_res_fh_pouf', + [-391156104] = 'v_res_fh_sculptmod', + [2011957697] = 'v_res_fh_sidebrddine', + [-781151385] = 'v_res_fh_sidebrdlng', + [-1826629702] = 'v_res_fh_sidebrdlngb', + [-108069875] = 'v_res_fh_singleseat', + [1506827733] = 'v_res_fh_sofa', + [-1468666842] = 'v_res_fh_speaker', + [-364924791] = 'v_res_fh_speakerdock', + [683474771] = 'v_res_fh_tableplace', + [-1982055048] = 'v_res_fh_towelstack', + [1545607805] = 'v_res_fh_towerfan', + [1209872975] = 'v_res_filebox01', + [1521413924] = 'v_res_foodjara', + [1290916778] = 'v_res_foodjarb', + [-149575693] = 'v_res_foodjarc', + [-35465629] = 'v_res_fridgemoda', + [1821439213] = 'v_res_fridgemodsml', + [1204431867] = 'v_res_glasspot', + [-2092020213] = 'v_res_harddrive', + [-928152827] = 'v_res_int_oven', + [1172780765] = 'v_res_investbook01', + [622622020] = 'v_res_investbook08', + [920122288] = 'v_res_ipoddock', + [588223318] = 'v_res_ivy', + [2014682882] = 'v_res_j_coffeetable', + [1411387896] = 'v_res_j_dinechair', + [-1950956966] = 'v_res_j_lowtable', + [-259631153] = 'v_res_j_magrack', + [97410561] = 'v_res_j_phone', + [-999197614] = 'v_res_j_radio', + [-1241891484] = 'v_res_j_sofa', + [-5124212] = 'v_res_j_stool', + [776023625] = 'v_res_j_tablelamp1', + [554636261] = 'v_res_j_tablelamp2', + [-1280437652] = 'v_res_j_tvstand', + [38932324] = 'v_res_jarmchair', + [-1283319196] = 'v_res_jcushiona', + [-160587718] = 'v_res_jcushionb', + [-941046991] = 'v_res_jcushionc', + [457140701] = 'v_res_jcushiond', + [-664481362] = 'v_res_jewelbox', + [-230630025] = 'v_res_keyboard', + [-471547794] = 'v_res_lest_bigscreen', + [-935087560] = 'v_res_lest_monitor', + [-1635359653] = 'v_res_lestersbed', + [-1251662965] = 'v_res_m_armchair', + [1725227610] = 'v_res_m_armoire', + [200192944] = 'v_res_m_armoirmove', + [-503867265] = 'v_res_m_bananaplant', + [199039671] = 'v_res_m_candle', + [-1694321525] = 'v_res_m_candlelrg', + [-774078432] = 'v_res_m_console', + [-474978775] = 'v_res_m_dinechair', + [1139201896] = 'v_res_m_dinetble_replace', + [289502488] = 'v_res_m_dinetble', + [1642602358] = 'v_res_m_fame_flyer', + [1370916260] = 'v_res_m_fameshame', + [1924767361] = 'v_res_m_h_console', + [-569719089] = 'v_res_m_h_sofa_sml', + [1181479993] = 'v_res_m_h_sofa', + [-1244325767] = 'v_res_m_horsefig', + [-894529758] = 'v_res_m_kscales', + [-2004817750] = 'v_res_m_lampstand', + [465376360] = 'v_res_m_lampstand2', + [1739427303] = 'v_res_m_lamptbl_off', + [-565701580] = 'v_res_m_lamptbl', + [969852049] = 'v_res_m_palmplant1', + [-1578969039] = 'v_res_m_palmstairs', + [-107327626] = 'v_res_m_pot1', + [-1464134536] = 'v_res_m_sidetable', + [-1570167268] = 'v_res_m_sinkunit', + [2071456372] = 'v_res_m_spanishbox', + [1066412934] = 'v_res_m_stool_replaced', + [956042042] = 'v_res_m_stool', + [1256172027] = 'v_res_m_urn', + [-249576072] = 'v_res_m_vasedead', + [-1374484340] = 'v_res_m_vasefresh', + [124842687] = 'v_res_m_wbowl_move', + [149803107] = 'v_res_m_wctoiletroll', + [275099168] = 'v_res_m_woodbowl', + [-580498226] = 'v_res_mbaccessory', + [1928959797] = 'v_res_mbath', + [-1357209146] = 'v_res_mbathpot', + [-1858630061] = 'v_res_mbbed_mess', + [-1896966819] = 'v_res_mbbed', + [-1482550767] = 'v_res_mbbedtable', + [970451370] = 'v_res_mbbin', + [-1590845185] = 'v_res_mbbrshholder', + [1918586980] = 'v_res_mbchair', + [1526034278] = 'v_res_mbdresser', + [1941462136] = 'v_res_mbidet', + [426327676] = 'v_res_mbottoman', + [438382675] = 'v_res_mbowl', + [-178641885] = 'v_res_mbowlornate', + [-924139659] = 'v_res_mbronzvase', + [-1518061350] = 'v_res_mbshower', + [1926087217] = 'v_res_mbsink', + [-1019149089] = 'v_res_mbtaps', + [-270634238] = 'v_res_mbtowel', + [724700469] = 'v_res_mbtowelfld', + [803991844] = 'v_res_mchalkbrd', + [477649989] = 'v_res_mchopboard', + [-988058582] = 'v_res_mcofcup', + [-905474743] = 'v_res_mcofcupdirt', + [-335877674] = 'v_res_mconsolemod', + [-1388515078] = 'v_res_mconsolemove', + [301913331] = 'v_res_mconsoletrad', + [-1003293747] = 'v_res_mcupboard', + [902446603] = 'v_res_mdbed', + [-363371364] = 'v_res_mdbedlamp_off', + [-1669114072] = 'v_res_mdbedlamp', + [-673335576] = 'v_res_mdbedtable', + [1838109023] = 'v_res_mdchest_moved', + [-599924401] = 'v_res_mdchest', + [-2067386219] = 'v_res_mddesk', + [2104268547] = 'v_res_mddresser_off', + [-276852211] = 'v_res_mddresser', + [827254092] = 'v_res_mexball', + [355465634] = 'v_res_mflowers', + [1763868376] = 'v_res_mknifeblock', + [1710689847] = 'v_res_mkniferack', + [-1627103037] = 'v_res_mlaundry', + [2079380440] = 'v_res_mm_audio', + [-79268159] = 'v_res_mmug', + [197124182] = 'v_res_monitor', + [829413118] = 'v_res_monitorsquare', + [-1634294596] = 'v_res_monitorstand', + [1989658880] = 'v_res_monitorwidelarge', + [405594841] = 'v_res_mountedprojector', + [-286280212] = 'v_res_mousemat', + [-2066605738] = 'v_res_mp_ashtraya', + [-1685436730] = 'v_res_mp_ashtrayb', + [-568894163] = 'v_res_mp_sofa', + [184722020] = 'v_res_mp_stripchair', + [-1760059760] = 'v_res_mplanttongue', + [-1675493326] = 'v_res_mplatelrg', + [1205594576] = 'v_res_mplatesml', + [47092382] = 'v_res_mplinth', + [-807401144] = 'v_res_mpotpouri', + [1147540973] = 'v_res_msidetblemod', + [-980185685] = 'v_res_msonbed_s', + [-493628998] = 'v_res_msonbed', + [863314394] = 'v_res_msoncabinet', + [-1233105549] = 'v_res_mtblelampmod', + [-1985926838] = 'v_res_mtoilet', + [1236657579] = 'v_res_mutensils', + [1855795498] = 'v_res_mvasechinese', + [291642981] = 'v_res_officeboxfile01', + [49373240] = 'v_res_ovenhobmod', + [-1883980157] = 'v_res_paperfolders', + [-1627996171] = 'v_res_pcheadset', + [1989916391] = 'v_res_pcspeaker', + [590001451] = 'v_res_pctower', + [-963015449] = 'v_res_pcwoofer', + [1515457234] = 'v_res_pestle', + [-697269431] = 'v_res_picture_frame', + [-597517382] = 'v_res_plate_dec', + [1810328078] = 'v_res_printer', + [471448225] = 'v_res_r_bathjar', + [452707940] = 'v_res_r_bathpot', + [-2011944650] = 'v_res_r_bublbath', + [199425447] = 'v_res_r_coffpot', + [2120480918] = 'v_res_r_cottonbuds', + [-2138009162] = 'v_res_r_figauth1', + [1991671298] = 'v_res_r_figauth2', + [363356512] = 'v_res_r_figcat', + [-1364498188] = 'v_res_r_figclown', + [158467772] = 'v_res_r_figdancer', + [34093998] = 'v_res_r_figfemale', + [1761605047] = 'v_res_r_figflamenco', + [219619900] = 'v_res_r_figgirl', + [-760975398] = 'v_res_r_figgirlclown', + [1729671130] = 'v_res_r_fighorse', + [-879871564] = 'v_res_r_fighorsestnd', + [-1169324212] = 'v_res_r_figoblisk', + [-73027135] = 'v_res_r_figpillar', + [-581141528] = 'v_res_r_lotion', + [1554640836] = 'v_res_r_milkjug', + [1491977948] = 'v_res_r_pepppot', + [1957983047] = 'v_res_r_perfume', + [916514878] = 'v_res_r_silvrtray', + [-1020142872] = 'v_res_r_sofa', + [169396189] = 'v_res_r_sugarbowl', + [-1394451687] = 'v_res_r_teapot', + [341562675] = 'v_res_rosevase', + [-53332211] = 'v_res_rosevasedead', + [-1246711311] = 'v_res_rubberplant', + [1540891715] = 'v_res_sculpt_dec', + [597596136] = 'v_res_sculpt_decb', + [102620391] = 'v_res_sculpt_decd', + [-195413664] = 'v_res_sculpt_dece', + [-461858403] = 'v_res_sculpt_decf', + [1801244118] = 'v_res_skateboard', + [-1540767983] = 'v_res_sketchpad', + [-1803429498] = 'v_res_smallplasticbox', + [-422412851] = 'v_res_son_desk', + [-847239755] = 'v_res_son_unitgone', + [803221323] = 'v_res_study_chair', + [1375359648] = 'v_res_tabloidsa', + [270388964] = 'v_res_tabloidsb', + [498625049] = 'v_res_tabloidsc', + [99079546] = 'v_res_tissues', + [-926117806] = 'v_res_tre_alarmbox', + [532565818] = 'v_res_tre_banana', + [-494592546] = 'v_res_tre_basketmess', + [-582379536] = 'v_res_tre_bed1_messy', + [-408601900] = 'v_res_tre_bed1', + [-1889727927] = 'v_res_tre_bed2', + [1555579420] = 'v_res_tre_bedsidetable', + [1107796358] = 'v_res_tre_bedsidetableb', + [-1627863502] = 'v_res_tre_bin', + [1789936288] = 'v_res_tre_chair', + [1088184978] = 'v_res_tre_cuprack', + [-1617971041] = 'v_res_tre_cushiona', + [-1849549564] = 'v_res_tre_cushionb', + [-1259248798] = 'v_res_tre_cushionc', + [-1490106403] = 'v_res_tre_cushiond', + [122067173] = 'v_res_tre_cushnscuzb', + [-875322884] = 'v_res_tre_cushnscuzd', + [-1630442476] = 'v_res_tre_dvdplayer', + [99427111] = 'v_res_tre_flatbasket', + [1475873532] = 'v_res_tre_fridge', + [430942112] = 'v_res_tre_fruitbowl', + [-1003273441] = 'v_res_tre_laundrybasket', + [866683635] = 'v_res_tre_lightfan', + [818840219] = 'v_res_tre_mixer', + [810899590] = 'v_res_tre_officechair', + [-829287376] = 'v_res_tre_pineapple', + [-1078596843] = 'v_res_tre_plant', + [-1052198219] = 'v_res_tre_plugsocket', + [-2036081975] = 'v_res_tre_remote', + [-1914871455] = 'v_res_tre_sideboard', + [222361162] = 'v_res_tre_smallbookshelf', + [-257045961] = 'v_res_tre_sofa_mess_a', + [-9508935] = 'v_res_tre_sofa_mess_b', + [-1927183588] = 'v_res_tre_sofa_mess_c', + [2109741755] = 'v_res_tre_sofa_s', + [-941390908] = 'v_res_tre_sofa', + [1560277278] = 'v_res_tre_stool_leather', + [891849380] = 'v_res_tre_stool_scuz', + [937222680] = 'v_res_tre_stool', + [-1705306415] = 'v_res_tre_storagebox', + [-2047530477] = 'v_res_tre_storageunit', + [1207428357] = 'v_res_tre_table001', + [-2019599437] = 'v_res_tre_table2', + [-1424253055] = 'v_res_tre_talllamp', + [-1176250575] = 'v_res_tre_tree', + [-535055114] = 'v_res_tre_tvstand_tall', + [1417093281] = 'v_res_tre_tvstand', + [914205402] = 'v_res_tre_wardrobe', + [64076466] = 'v_res_tre_washbasket', + [580175976] = 'v_res_tre_wdunitscuz', + [340510501] = 'v_res_tre_weight', + [1133154116] = 'v_res_tre_woodunit', + [-1200941518] = 'v_res_trev_framechair', + [-431168006] = 'v_res_tt_basket', + [-1557777900] = 'v_res_tt_bed', + [-1015731625] = 'v_res_tt_bedpillow', + [1771687453] = 'v_res_tt_bowl', + [1231872793] = 'v_res_tt_bowlpile01', + [928300777] = 'v_res_tt_bowlpile02', + [1892179553] = 'v_res_tt_can02', + [-1826381033] = 'v_res_tt_can03', + [-1595864669] = 'v_res_tt_cancrsh01', + [-1296847544] = 'v_res_tt_cancrsh02', + [-260968027] = 'v_res_tt_cbbox', + [2141353157] = 'v_res_tt_cereal02', + [714696561] = 'v_res_tt_cigs01', + [-85890288] = 'v_res_tt_doughnuts', + [-535483992] = 'v_res_tt_flusher', + [1610244484] = 'v_res_tt_fridge', + [1684327795] = 'v_res_tt_fridgedoor', + [-1158929576] = 'v_res_tt_lighter', + [-261501551] = 'v_res_tt_litter1', + [-104865731] = 'v_res_tt_litter2', + [-690644375] = 'v_res_tt_litter3', + [546339338] = 'v_res_tt_looroll', + [-2025086469] = 'v_res_tt_mug01', + [-2037843699] = 'v_res_tt_mug2', + [1787587532] = 'v_res_tt_pharm1', + [1547095841] = 'v_res_tt_pharm2', + [1174512311] = 'v_res_tt_pharm3', + [1120955680] = 'v_res_tt_pizzaplate', + [1675275778] = 'v_res_tt_plate01', + [470212711] = 'v_res_tt_platepile', + [1988741053] = 'v_res_tt_plunger', + [419020243] = 'v_res_tt_porndvd01', + [1319414056] = 'v_res_tt_porndvd02', + [1013548210] = 'v_res_tt_porndvd03', + [1860168086] = 'v_res_tt_porndvd04', + [1258923146] = 'v_res_tt_pornmag01', + [492521774] = 'v_res_tt_pornmag02', + [797240705] = 'v_res_tt_pornmag03', + [32477783] = 'v_res_tt_pornmag04', + [-1825282106] = 'v_res_tt_pot01', + [-1952098136] = 'v_res_tt_pot02', + [2127609599] = 'v_res_tt_pot03', + [1442760350] = 'v_res_tt_sofa', + [-1143663273] = 'v_res_tt_tissues', + [-251880369] = 'v_res_tt_tvremote', + [1740269944] = 'v_res_vacuum', + [-1787736766] = 'v_res_vhsplayer', + [-2021787175] = 'v_res_videotape', + [483687262] = 'v_res_wall_cornertop', + [1485704474] = 'v_ret_247_bread1', + [1248070522] = 'v_ret_247_cereal1', + [-756341118] = 'v_ret_247_choptom', + [-1406045366] = 'v_ret_247_cigs', + [1421582485] = 'v_ret_247_donuts', + [-1543048205] = 'v_ret_247_eggs', + [-102104160] = 'v_ret_247_flour', + [-802238381] = 'v_ret_247_fruit', + [1074210201] = 'v_ret_247_ketchup1', + [1367230591] = 'v_ret_247_ketchup2', + [-1816283392] = 'v_ret_247_lottery', + [-38797076] = 'v_ret_247_lotterysign', + [1166604921] = 'v_ret_247_mustard', + [-960314813] = 'v_ret_247_noodle1', + [1912608951] = 'v_ret_247_noodle2', + [-2075542198] = 'v_ret_247_noodle3', + [-3198220] = 'v_ret_247_pharmbetta', + [93702692] = 'v_ret_247_pharmbox', + [1972721385] = 'v_ret_247_pharmdeo', + [-689452453] = 'v_ret_247_pharmstuff', + [1541274880] = 'v_ret_247_popbot4', + [-1982036471] = 'v_ret_247_popcan2', + [2045891592] = 'v_ret_247_soappowder2', + [663958207] = 'v_ret_247_sweetcount', + [-934709748] = 'v_ret_247_swtcorn2', + [-735029261] = 'v_ret_247_tomsoup1', + [-472680173] = 'v_ret_247_tuna', + [1264979146] = 'v_ret_247_vegsoup1', + [-679139144] = 'v_ret_247_win1', + [-844425980] = 'v_ret_247_win2', + [-519357464] = 'v_ret_247_win3', + [-54719154] = 'v_ret_247shelves01', + [-220235377] = 'v_ret_247shelves02', + [-532065181] = 'v_ret_247shelves03', + [643522702] = 'v_ret_247shelves04', + [1437777724] = 'v_ret_247shelves05', + [163066920] = 'v_ret_baglrg', + [-1516329901] = 'v_ret_bagsml', + [1546309912] = 'v_ret_box', + [1630899471] = 'v_ret_chair_white', + [-523951410] = 'v_ret_chair', + [1081399034] = 'v_ret_csr_bin', + [-690015628] = 'v_ret_csr_signa', + [315927134] = 'v_ret_csr_signb', + [943912250] = 'v_ret_csr_signc', + [-458616549] = 'v_ret_csr_signceiling', + [1846468817] = 'v_ret_csr_signd', + [-1800416249] = 'v_ret_csr_signtri', + [-941548444] = 'v_ret_csr_signtrismall', + [-1498039054] = 'v_ret_csr_table', + [-472365306] = 'v_ret_csr_tyresale', + [1124868331] = 'v_ret_fh_ashtray', + [1562910207] = 'v_ret_fh_bsbag', + [-1539862408] = 'v_ret_fh_bscup', + [607684038] = 'v_ret_fh_chair01', + [467290531] = 'v_ret_fh_coolbox', + [-540782362] = 'v_ret_fh_dinetable', + [1842258647] = 'v_ret_fh_displayc', + [-251167274] = 'v_ret_fh_doorframe', + [582134182] = 'v_ret_fh_doorfrmwide', + [-49220232] = 'v_ret_fh_dryer', + [971278178] = 'v_ret_fh_emptybot1', + [1208099741] = 'v_ret_fh_emptybot2', + [979029460] = 'v_ret_fh_fanltoff', + [2049937797] = 'v_ret_fh_fanltonbas', + [1824325367] = 'v_ret_fh_fry02', + [1757489840] = 'v_ret_fh_ironbrd', + [635240170] = 'v_ret_fh_kitchtable', + [265277000] = 'v_ret_fh_noodle', + [-451608514] = 'v_ret_fh_pizza01', + [323771564] = 'v_ret_fh_pizza02', + [-1016583293] = 'v_ret_fh_plate1', + [-248609009] = 'v_ret_fh_plate2', + [501964936] = 'v_ret_fh_plate3', + [1960709756] = 'v_ret_fh_plate4', + [1264228222] = 'v_ret_fh_pot01', + [-328869490] = 'v_ret_fh_pot02', + [-1261376923] = 'v_ret_fh_pot05', + [-869419016] = 'v_ret_fh_radiator', + [-1300099069] = 'v_ret_fh_shelf_01', + [-763801615] = 'v_ret_fh_shelf_02', + [-1181704684] = 'v_ret_fh_shelf_03', + [-406357375] = 'v_ret_fh_shelf_04', + [93827692] = 'v_ret_fh_walllightoff', + [2109783333] = 'v_ret_fh_walllighton', + [-704001348] = 'v_ret_fh_washmach', + [1437373576] = 'v_ret_fh_wickbskt', + [-247908770] = 'v_ret_fhglassairfrm', + [965837842] = 'v_ret_fhglassfrm', + [247384786] = 'v_ret_fhglassfrmsml', + [-739392318] = 'v_ret_flowers', + [2067313593] = 'v_ret_gassweetcount', + [756199591] = 'v_ret_gassweets', + [-1401697187] = 'v_ret_gc_ammo1', + [-278834633] = 'v_ret_gc_ammo2', + [27391672] = 'v_ret_gc_ammo3', + [-1706907653] = 'v_ret_gc_ammo4', + [1936480843] = 'v_ret_gc_ammo5', + [1442357096] = 'v_ret_gc_ammo8', + [352721947] = 'v_ret_gc_ammostack', + [1746762665] = 'v_ret_gc_bag01', + [-324631375] = 'v_ret_gc_bag02', + [-44941044] = 'v_ret_gc_bin', + [-1233342136] = 'v_ret_gc_boot04', + [-120328656] = 'v_ret_gc_bootdisp', + [684330213] = 'v_ret_gc_box1', + [866394777] = 'v_ret_gc_box2', + [-284652484] = 'v_ret_gc_bullet', + [1948561556] = 'v_ret_gc_calc', + [-297318917] = 'v_ret_gc_cashreg', + [-1971298567] = 'v_ret_gc_chair01', + [2040839490] = 'v_ret_gc_chair02', + [-881696544] = 'v_ret_gc_chair03', + [-1809234775] = 'v_ret_gc_clock', + [-1399490990] = 'v_ret_gc_cup', + [879885426] = 'v_ret_gc_ear01', + [-1298564933] = 'v_ret_gc_ear02', + [-2000607989] = 'v_ret_gc_ear03', + [491620376] = 'v_ret_gc_fan', + [-286479541] = 'v_ret_gc_fax', + [1617449286] = 'v_ret_gc_folder1', + [801042424] = 'v_ret_gc_folder2', + [-868490170] = 'v_ret_gc_gasmask', + [1179681321] = 'v_ret_gc_knifehold1', + [2084498973] = 'v_ret_gc_knifehold2', + [-1380074092] = 'v_ret_gc_lamp', + [1165564444] = 'v_ret_gc_mags', + [954470407] = 'v_ret_gc_mug01', + [723612802] = 'v_ret_gc_mug02', + [459560200] = 'v_ret_gc_mug03', + [-1409359059] = 'v_ret_gc_mugdisplay', + [1822183470] = 'v_ret_gc_pen1', + [589479224] = 'v_ret_gc_pen2', + [1146022803] = 'v_ret_gc_phone', + [-1144115258] = 'v_ret_gc_plant1', + [-345370326] = 'v_ret_gc_print', + [-141540058] = 'v_ret_gc_scissors', + [-1543210774] = 'v_ret_gc_shred', + [2057065924] = 'v_ret_gc_sprinkler', + [-1434375213] = 'v_ret_gc_staple', + [-1130190827] = 'v_ret_gc_trays', + [1714070505] = 'v_ret_gc_tshirt1', + [143386837] = 'v_ret_gc_tshirt5', + [-1486270996] = 'v_ret_gc_tv', + [-89356134] = 'v_ret_gc_vent', + [1987036371] = 'v_ret_gs_glass01', + [1687757094] = 'v_ret_gs_glass02', + [-72283947] = 'v_ret_hd_hooks_', + [1393739570] = 'v_ret_hd_prod1_', + [473126416] = 'v_ret_hd_prod2_', + [953926948] = 'v_ret_hd_prod3_', + [177399675] = 'v_ret_hd_prod4_', + [2013184257] = 'v_ret_hd_prod5_', + [524258940] = 'v_ret_hd_prod6_', + [263499151] = 'v_ret_hd_unit1_', + [2011035956] = 'v_ret_hd_unit2_', + [1866313229] = 'v_ret_j_flowerdisp_white', + [681277650] = 'v_ret_j_flowerdisp', + [-388378644] = 'v_ret_mirror', + [2085590335] = 'v_ret_ml_6bottles', + [-53650680] = 'v_ret_ml_beeram', + [-942878619] = 'v_ret_ml_beerbar', + [-1699929937] = 'v_ret_ml_beerben1', + [-329235432] = 'v_ret_ml_beerben2', + [-259124142] = 'v_ret_ml_beerbla1', + [583563462] = 'v_ret_ml_beerbla2', + [1793329478] = 'v_ret_ml_beerdus', + [898161667] = 'v_ret_ml_beerjak1', + [1186365022] = 'v_ret_ml_beerjak2', + [-1902841705] = 'v_ret_ml_beerlog1', + [1623856386] = 'v_ret_ml_beerlog2', + [1550641188] = 'v_ret_ml_beerpat1', + [1862110545] = 'v_ret_ml_beerpat2', + [1661171057] = 'v_ret_ml_beerpis1', + [2085005315] = 'v_ret_ml_beerpis2', + [-1914723336] = 'v_ret_ml_beerpride', + [-807039024] = 'v_ret_ml_chips1', + [-1730534982] = 'v_ret_ml_chips2', + [-1418934561] = 'v_ret_ml_chips3', + [-1839065906] = 'v_ret_ml_chips4', + [990852227] = 'v_ret_ml_cigs', + [-1240914379] = 'v_ret_ml_cigs2', + [-1479865927] = 'v_ret_ml_cigs3', + [-271115824] = 'v_ret_ml_cigs4', + [563739989] = 'v_ret_ml_cigs5', + [1263489215] = 'v_ret_ml_cigs6', + [1262567554] = 'v_ret_ml_fridge', + [-347947133] = 'v_ret_ml_fridge02_dr', + [-1538231930] = 'v_ret_ml_fridge02', + [-1105610407] = 'v_ret_ml_liqshelfa', + [1761775400] = 'v_ret_ml_liqshelfb', + [1238061242] = 'v_ret_ml_liqshelfc', + [-2065152269] = 'v_ret_ml_liqshelfd', + [-1766954369] = 'v_ret_ml_liqshelfe', + [-1197050094] = 'v_ret_ml_meth', + [1437558005] = 'v_ret_ml_methcigs', + [-1317590321] = 'v_ret_ml_methsweets', + [1244929250] = 'v_ret_ml_papers', + [-2055836816] = 'v_ret_ml_partframe1', + [-1294088642] = 'v_ret_ml_partframe2', + [-1591991621] = 'v_ret_ml_partframe3', + [-1431957069] = 'v_ret_ml_scale', + [1158946078] = 'v_ret_ml_shelfrk', + [1228376703] = 'v_ret_ml_sweet1', + [-1875208060] = 'v_ret_ml_sweet2', + [-1575601093] = 'v_ret_ml_sweet3', + [-319761937] = 'v_ret_ml_sweet4', + [-21793420] = 'v_ret_ml_sweet5', + [-920516014] = 'v_ret_ml_sweet6', + [-619729363] = 'v_ret_ml_sweet7', + [633750425] = 'v_ret_ml_sweet8', + [927393434] = 'v_ret_ml_sweet9', + [-2081577774] = 'v_ret_ml_sweetego', + [-724492621] = 'v_ret_ml_tablea', + [-999719436] = 'v_ret_ml_tableb', + [-2002254222] = 'v_ret_ml_tablec', + [1349488192] = 'v_ret_ml_win2', + [-1271966270] = 'v_ret_ml_win3', + [-1041960659] = 'v_ret_ml_win4', + [-1750426439] = 'v_ret_ml_win5', + [14751329] = 'v_ret_neon_baracho', + [514028339] = 'v_ret_neon_blarneys', + [-1925068611] = 'v_ret_neon_logger', + [212422933] = 'v_ret_ps_bag_01', + [-88789715] = 'v_ret_ps_bag_02', + [924866179] = 'v_ret_ps_box_01', + [-1819668623] = 'v_ret_ps_box_02', + [-65937277] = 'v_ret_ps_box_03', + [961655955] = 'v_ret_ps_carrier01', + [1661995023] = 'v_ret_ps_carrier02', + [1546354612] = 'v_ret_ps_chair', + [2046793812] = 'v_ret_ps_cologne_01', + [-199083070] = 'v_ret_ps_cologne', + [797424111] = 'v_ret_ps_flowers_01', + [-830867507] = 'v_ret_ps_flowers_02', + [463961750] = 'v_ret_ps_pot', + [2065593157] = 'v_ret_ps_shades01', + [1298569174] = 'v_ret_ps_shades02', + [-453266295] = 'v_ret_ps_shoe_01', + [-721387032] = 'v_ret_ps_ties_01', + [139323522] = 'v_ret_ps_ties_02', + [-154417794] = 'v_ret_ps_ties_03', + [-1345210485] = 'v_ret_ps_ties_04', + [-704932256] = 'v_ret_ps_tissue', + [1267833770] = 'v_ret_ps_toiletbag', + [1356866689] = 'v_ret_ps_toiletry_01', + [1050705922] = 'v_ret_ps_toiletry_02', + [657097993] = 'v_ret_ta_book1', + [-1585219143] = 'v_ret_ta_book2', + [553121952] = 'v_ret_ta_book3', + [321871119] = 'v_ret_ta_book4', + [15349949] = 'v_ret_ta_box', + [2144745138] = 'v_ret_ta_camera', + [-2140074399] = 'v_ret_ta_firstaid', + [1077574385] = 'v_ret_ta_gloves', + [-1486084727] = 'v_ret_ta_hero', + [-742386476] = 'v_ret_ta_ink03', + [-511987637] = 'v_ret_ta_ink04', + [-1188601953] = 'v_ret_ta_ink05', + [-502099890] = 'v_ret_ta_jelly', + [427392416] = 'v_ret_ta_mag1', + [48189548] = 'v_ret_ta_mag2', + [281867950] = 'v_ret_ta_mug', + [-667536719] = 'v_ret_ta_paproll', + [1971657777] = 'v_ret_ta_paproll2', + [-1196859886] = 'v_ret_ta_pot1', + [-417580297] = 'v_ret_ta_pot2', + [-1399339549] = 'v_ret_ta_pot3', + [-1862016482] = 'v_ret_ta_power', + [-968466081] = 'v_ret_ta_skull', + [-1920429619] = 'v_ret_ta_spray', + [1798189768] = 'v_ret_ta_stool', + [-1425009325] = 'v_ret_tablesml', + [367798813] = 'v_ret_tat2stuff_01', + [674352808] = 'v_ret_tat2stuff_02', + [848225122] = 'v_ret_tat2stuff_03', + [1151436679] = 'v_ret_tat2stuff_04', + [1331928335] = 'v_ret_tat2stuff_05', + [1494593651] = 'v_ret_tat2stuff_06', + [1806194072] = 'v_ret_tat2stuff_07', + [-1805606583] = 'v_ret_tatstuff01', + [-1977709371] = 'v_ret_tatstuff02', + [-1020100884] = 'v_ret_tatstuff03', + [-1326130575] = 'v_ret_tatstuff04', + [1309582442] = 'v_ret_tissue', + [1139436570] = 'v_ret_washpow1', + [799622040] = 'v_ret_washpow2', + [136597148] = 'v_ret_wind2', + [365314198] = 'v_ret_window', + [-1499125472] = 'v_ret_windowair', + [1335382252] = 'v_ret_windowsmall', + [-1468326899] = 'v_ret_windowutil', + [-589046858] = 'v_serv_1socket', + [-132789682] = 'v_serv_2socket', + [1644278705] = 'v_serv_abox_02', + [-2031321722] = 'v_serv_abox_04', + [-721895765] = 'v_serv_abox_1', + [-124033353] = 'v_serv_abox_g1', + [-790849738] = 'v_serv_abox_g3', + [492575597] = 'v_serv_aboxes_02', + [-387521298] = 'v_serv_bktmop_h', + [1543408104] = 'v_serv_bs_barbchair', + [-465246693] = 'v_serv_bs_barbchair2', + [434950506] = 'v_serv_bs_barbchair3', + [-177141645] = 'v_serv_bs_barbchair5', + [1720432065] = 'v_serv_bs_cliipbit1', + [1994282598] = 'v_serv_bs_cliipbit2', + [-920585494] = 'v_serv_bs_cliipbit3', + [-372354415] = 'v_serv_bs_clippers', + [1165195353] = 'v_serv_bs_clutter', + [1507202536] = 'v_serv_bs_comb', + [-1133354853] = 'v_serv_bs_cond', + [202070568] = 'v_serv_bs_foam1', + [-1515174995] = 'v_serv_bs_foamx3', + [12751331] = 'v_serv_bs_gel', + [-1023683840] = 'v_serv_bs_gelx3', + [-1656576146] = 'v_serv_bs_hairdryer', + [580223600] = 'v_serv_bs_looroll', + [-799414023] = 'v_serv_bs_mug', + [2005313754] = 'v_serv_bs_razor', + [1900909486] = 'v_serv_bs_scissors', + [795984016] = 'v_serv_bs_shampoo', + [286298615] = 'v_serv_bs_shvbrush', + [-688012791] = 'v_serv_bs_spray', + [2018317371] = 'v_serv_cln_prod_04', + [1561943508] = 'v_serv_cln_prod_06', + [1903701366] = 'v_serv_crdbox_2', + [-736560690] = 'v_serv_ct_binoculars', + [508864775] = 'v_serv_ct_chair01', + [-171943901] = 'v_serv_ct_chair02', + [-294576776] = 'v_serv_ct_lamp', + [-1763055830] = 'v_serv_ct_light', + [-1742955463] = 'v_serv_ct_monitor01', + [1659646421] = 'v_serv_ct_monitor02', + [-1266592510] = 'v_serv_ct_monitor03', + [-781152544] = 'v_serv_ct_monitor04', + [-500649904] = 'v_serv_ct_monitor05', + [-310622473] = 'v_serv_ct_monitor06', + [-8033527] = 'v_serv_ct_monitor07', + [-271744229] = 'v_serv_ct_striplight', + [-1798470109] = 'v_serv_cupboard_01', + [-1731941480] = 'v_serv_emrglgt_off', + [-79978204] = 'v_serv_firbel', + [1964400974] = 'v_serv_firealarm', + [-1530258765] = 'v_serv_flurlgt_01', + [1193759130] = 'v_serv_gt_glass1', + [2087304222] = 'v_serv_gt_glass2', + [-600415835] = 'v_serv_hndtrk_n2_aa_h', + [-1293487551] = 'v_serv_lgtemg', + [103179737] = 'v_serv_metro_advertmid', + [581889677] = 'v_serv_metro_advertstand1', + [275794448] = 'v_serv_metro_advertstand2', + [-10278922] = 'v_serv_metro_advertstand3', + [1385526236] = 'v_serv_metro_ceilingspeaker', + [-2139330164] = 'v_serv_metro_ceilingvent', + [1430895338] = 'v_serv_metro_elecpole_singlel', + [675274951] = 'v_serv_metro_elecpole_singler', + [-2009950230] = 'v_serv_metro_floorbin', + [-106487292] = 'v_serv_metro_infoscreen1', + [-448693971] = 'v_serv_metro_infoscreen3', + [1131390643] = 'v_serv_metro_metaljunk1', + [797015791] = 'v_serv_metro_metaljunk2', + [1745383396] = 'v_serv_metro_metaljunk3', + [925058130] = 'v_serv_metro_paybooth', + [1368830751] = 'v_serv_metro_signals1', + [440714328] = 'v_serv_metro_signals2', + [-867376114] = 'v_serv_metro_signconnect', + [2120265392] = 'v_serv_metro_signlossantos', + [622888377] = 'v_serv_metro_signmap', + [417944961] = 'v_serv_metro_signroutes', + [-871236969] = 'v_serv_metro_signtravel', + [285787722] = 'v_serv_metro_stationfence', + [2069444788] = 'v_serv_metro_stationfence2', + [-601985968] = 'v_serv_metro_stationgate', + [-535349246] = 'v_serv_metro_statseat1', + [-807594098] = 'v_serv_metro_statseat2', + [1945191539] = 'v_serv_metro_tubelight', + [495380854] = 'v_serv_metro_tubelight2', + [-942910394] = 'v_serv_metro_tunnellight1', + [-1551758414] = 'v_serv_metro_tunnellight2', + [682422711] = 'v_serv_metro_wallbin', + [-1556823922] = 'v_serv_metro_walllightcage', + [213350007] = 'v_serv_metroelecpolecurve', + [1653623132] = 'v_serv_metroelecpolenarrow', + [-269112841] = 'v_serv_metroelecpolestation', + [-368490772] = 'v_serv_plas_boxg4', + [-851111464] = 'v_serv_plas_boxgt2', + [713133406] = 'v_serv_plastic_box_lid', + [-421145003] = 'v_serv_plastic_box', + [-528401166] = 'v_serv_radio', + [-937756226] = 'v_serv_securitycam_03', + [-765880741] = 'v_serv_securitycam_1a', + [-177480482] = 'v_serv_switch_2', + [-455361602] = 'v_serv_switch_3', + [751349707] = 'v_serv_tc_bin1_', + [274859350] = 'v_serv_tc_bin2_', + [-1149940374] = 'v_serv_tc_bin3_', + [2067417152] = 'v_serv_tu_iron_', + [1359592635] = 'v_serv_tu_iron2_', + [259322409] = 'v_serv_tu_light1_', + [-1210399798] = 'v_serv_tu_light2_', + [-590146742] = 'v_serv_tu_light3_', + [1889796391] = 'v_serv_tu_statio1_', + [483613343] = 'v_serv_tu_statio2_', + [-1814837934] = 'v_serv_tu_statio3_', + [232962702] = 'v_serv_tu_statio4_', + [1802557189] = 'v_serv_tu_statio5_', + [838183020] = 'v_serv_tu_stay_', + [-332131798] = 'v_serv_tu_stay2_', + [368482553] = 'v_serv_tu_trak1_', + [1206778303] = 'v_serv_tu_trak2_', + [-1173362295] = 'v_serv_tvrack', + [-1188733122] = 'v_serv_waste_bin1', + [741933698] = 'v_serv_wetfloorsn', + [465467525] = 'v_tre_sofa_mess_a_s', + [-1726933877] = 'v_tre_sofa_mess_b_s', + [417935208] = 'v_tre_sofa_mess_c_s', + [338562499] = 'vacca', + [-140902153] = 'vader', + [-1600252419] = 'valkyrie', + [1543134283] = 'valkyrie2', + [827690619] = 'vb_01_bld_fr1', + [1779972143] = 'vb_01_bld', + [1245927740] = 'vb_01_fence_fizz_01', + [-286678390] = 'vb_01_fence_fizz_02', + [-442593292] = 'vb_01_fence_fizz_03', + [468914354] = 'vb_01_grnd_dtl', + [-1290616747] = 'vb_01_grnd_dtl2', + [1697883280] = 'vb_01_grnd_dtl3', + [662168984] = 'vb_01_grnd_fr00', + [-1251376771] = 'vb_01_grnd_fr01', + [-886788877] = 'vb_01_grnd_fr02', + [-1338960124] = 'vb_01_grnd', + [-545203247] = 'vb_01_pool2', + [-1879517034] = 'vb_01_shadow_casting', + [-714773355] = 'vb_02_b1_fr1', + [-5062353] = 'vb_02_b1_fr2', + [-1088700446] = 'vb_02_b1_fr4', + [1222089812] = 'vb_02_b2_fr3', + [585490198] = 'vb_02_bld1', + [-1025048823] = 'vb_02_bld2_d3', + [-2060443320] = 'vb_02_bld2_dtl', + [880182535] = 'vb_02_bld2_dtl001', + [-1531098482] = 'vb_02_bld2_rail', + [1849425772] = 'vb_02_bld2_rail1', + [211530370] = 'vb_02_bld2', + [653166672] = 'vb_02_grnd_dtl', + [2142301960] = 'vb_02_grnd_dtl004', + [384517307] = 'vb_02_grnd_dtl2', + [707357495] = 'vb_02_grnd_dtl3', + [-477994733] = 'vb_02_grnd', + [2061852045] = 'vb_02_hedges_dcl', + [-1437137033] = 'vb_02_pool_water', + [-248286905] = 'vb_02_props_p_lod', + [1504880644] = 'vb_03_b1_ra01_02', + [-1950644989] = 'vb_03_b1_ra01', + [1982453091] = 'vb_03_b1_ra02_01', + [1685271030] = 'vb_03_b1_ra02_02', + [-1062606238] = 'vb_03_b1_ra02_03', + [-1360541986] = 'vb_03_b1_ra02_04', + [-1658510503] = 'vb_03_b1_ra02_05', + [-1174576762] = 'vb_03_b1_ra02', + [154346263] = 'vb_03_b1_ra03_02', + [974774717] = 'vb_03_b1_ra03', + [-328567085] = 'vb_03_bld1_cblel', + [-321206068] = 'vb_03_bld1', + [1380691615] = 'vb_03_bld2_det', + [1015856421] = 'vb_03_bld2_e_slod', + [662793062] = 'vb_03_bld2_e', + [-1228920779] = 'vb_03_bld2_rail', + [1472338846] = 'vb_03_bld2_railb', + [-1630262847] = 'vb_03_bld2_railc', + [1933955749] = 'vb_03_bld2_raild', + [1520804952] = 'vb_03_bld2', + [980787464] = 'vb_03_cablemesh10745_hvstd', + [-1448905384] = 'vb_03_cablemesh10746_hvstd', + [977417908] = 'vb_03_cablemesh10747_hvstd', + [1257373829] = 'vb_03_cablemesh10748_hvstd', + [-369140251] = 'vb_03_cablemesh10749_hvstd', + [354556983] = 'vb_03_cablemesh10750_hvstd', + [-999941695] = 'vb_03_cablemesh10751_hvstd', + [1752922836] = 'vb_03_cablemesh10752_hvstd', + [-658042084] = 'vb_03_cablemesh10753_hvstd', + [572854564] = 'vb_03_cablemesh10754_hvstd', + [1015227332] = 'vb_03_detail', + [-496107355] = 'vb_03_dtl_01', + [1228492330] = 'vb_03_dtl_03', + [1449126007] = 'vb_03_dtl_04', + [748524787] = 'vb_03_dtl_05', + [1036728142] = 'vb_03_dtl_06', + [-1874404284] = 'vb_03_dtl_07', + [-1586921847] = 'vb_03_dtl_08', + [1875090238] = 'vb_03_dtl_09', + [-1741377952] = 'vb_03_dtl_10', + [1845365405] = 'vb_03_grnd', + [1793883621] = 'vb_04__ladder_002', + [1464293019] = 'vb_04__ladder_003', + [218710560] = 'vb_04__ladder_004', + [1953962305] = 'vb_04__ladder_01_lod003', + [419801285] = 'vb_04__ladder_01', + [-978764754] = 'vb_04_bld1', + [436962975] = 'vb_04_fence_01', + [-1730542538] = 'vb_04_fence_02', + [-1367134328] = 'vb_04_fence_03', + [2107329981] = 'vb_04_fence_04', + [-1955862178] = 'vb_04_fence_05', + [-976888303] = 'vb_04_fence_06', + [-746817154] = 'vb_04_fence_07', + [-1705965784] = 'vb_04_fence_08', + [-1476484477] = 'vb_04_fence_09', + [412747108] = 'vb_04_fence_10', + [759967432] = 'vb_04_fence_11', + [2080263211] = 'vb_04_fence_12', + [-1901366907] = 'vb_04_fence_13', + [329874303] = 'vb_04_fence_14', + [-470377446] = 'vb_04_fence_15', + [476273964] = 'vb_04_grnd_dtl_01', + [707131569] = 'vb_04_grnd_dtl_02', + [1895204437] = 'vb_04_grnd_dtl_03', + [-1789964387] = 'vb_04_grnd', + [-1591590134] = 'vb_04_grnd001', + [-1303834894] = 'vb_04_grndmore', + [-1867086951] = 'vb_04_hedge_decal', + [-1973606837] = 'vb_04_prop_fnclink_03c', + [866877360] = 'vb_04_stairs', + [1922672533] = 'vb_05_a_fr00', + [1547270869] = 'vb_05_a_fr01', + [-504920541] = 'vb_05_a_fr02', + [-870753657] = 'vb_05_a_fr03', + [-8076963] = 'vb_05_a_fr04', + [202343424] = 'vb_05_b1', + [1444627003] = 'vb_05_b1b1_fr', + [57726970] = 'vb_05_b1b1', + [1894009534] = 'vb_05_b1b2_fr', + [1510310921] = 'vb_05_b1b2_fr1det', + [-248827025] = 'vb_05_b1b2', + [-1636230026] = 'vb_05_b1rail', + [978477189] = 'vb_05_b2', + [1121414737] = 'vb_05_b2b1_fr1', + [-845642795] = 'vb_05_b2b1_fr2', + [-1872086104] = 'vb_05_b2b1', + [24792681] = 'vb_05_b2b3_fr', + [-1410207049] = 'vb_05_b2b3', + [1904463595] = 'vb_05_b3', + [1890015736] = 'vb_05_b3b1_b', + [-466862473] = 'vb_05_b3b1_fr', + [-1190034417] = 'vb_05_b3b1', + [-1248347386] = 'vb_05_b3b2_fr', + [-1412011627] = 'vb_05_b3b2', + [-360769074] = 'vb_05_b3rail_lod', + [1890907335] = 'vb_05_b3rail', + [515811678] = 'vb_05_b4', + [1427969566] = 'vb_05_b5', + [970204957] = 'vb_05_bandaid_1', + [-405939508] = 'vb_05_cablem7_thvy', + [-1156857093] = 'vb_05_cornerfence', + [822165070] = 'vb_05_db_apart_10', + [565719972] = 'vb_05_detail1', + [-1015362999] = 'vb_05_detail10', + [1334882479] = 'vb_05_detail10a', + [-413376404] = 'vb_05_detail10b', + [-551464970] = 'vb_05_detail10c', + [-122243900] = 'vb_05_detail12', + [366393052] = 'vb_05_detail12a', + [-1931369324] = 'vb_05_detail12b', + [-1970561048] = 'vb_05_detail12c', + [1400793686] = 'vb_05_detail1a', + [264769476] = 'vb_05_detail2', + [-621344755] = 'vb_05_detail2a', + [224390366] = 'vb_05_detail2b', + [133292534] = 'vb_05_detail2c', + [-96778615] = 'vb_05_detail2d', + [721397789] = 'vb_05_detail2e', + [1105687554] = 'vb_05_detail3', + [1625687909] = 'vb_05_detail3a', + [-878191305] = 'vb_05_detail3b', + [-591364248] = 'vb_05_detail3c', + [-1491987444] = 'vb_05_detail3d', + [811913469] = 'vb_05_detail4', + [-1242485198] = 'vb_05_detail4a', + [-1541502323] = 'vb_05_detail4b', + [-669126005] = 'vb_05_detail4c', + [-949989104] = 'vb_05_detail4d', + [1256162798] = 'vb_05_detail5', + [488099282] = 'vb_05_detail5a', + [718170431] = 'vb_05_detail5b', + [26613455] = 'vb_05_detail5c', + [255832610] = 'vb_05_detail5d', + [949936493] = 'vb_05_detail6', + [-2036903887] = 'vb_05_detail6a_gut', + [-2063886360] = 'vb_05_detail6a', + [-1924552968] = 'vb_05_detail6b_gut', + [-1227818094] = 'vb_05_detail6b', + [1870745393] = 'vb_05_detail7', + [-316183710] = 'vb_05_detail7a', + [-75888633] = 'vb_05_detail7b', + [-928865703] = 'vb_05_detail7c', + [1183695780] = 'vb_05_f', + [-414725179] = 'vb_05_fl', + [778000883] = 'vb_05_fp', + [-1401630550] = 'vb_05_glue', + [294382305] = 'vb_05_grnd1', + [-1019424579] = 'vb_05_grnd11', + [-1980531] = 'vb_05_grnd2', + [2000435093] = 'vb_05_grnd22', + [-331866054] = 'vb_05_grnd3', + [-1323033496] = 'vb_05_grnd33', + [1788091636] = 'vb_05_grnd4', + [-659130057] = 'vb_05_grnd5', + [-957852261] = 'vb_05_grnd6', + [2102959976] = 'vb_05_h559_fr1', + [-1415349251] = 'vb_05_h559_fr2', + [-1125166459] = 'vb_05_house555', + [1940504619] = 'vb_05_house559', + [-366224094] = 'vb_05_hr01a_fr', + [47586211] = 'vb_05_hr01a', + [178311261] = 'vb_05_hr01b_fr', + [857013280] = 'vb_05_hr01b', + [2018604876] = 'vb_05_ivy_core', + [-37732158] = 'vb_05_ivy_corelod', + [922338040] = 'vb_05_props_p_lod', + [-1773334580] = 'vb_05_s_ma_fr', + [-1034565809] = 'vb_05_shared_moderna', + [-1615151057] = 'vb_05_va02_fr', + [-925911876] = 'vb_05_va02_fr1', + [1642096351] = 'vb_05_va02_fr2', + [1027087759] = 'vb_05_va02_fr3', + [-294202148] = 'vb_05_va1_fr1', + [8911102] = 'vb_05_va1_fr2', + [-1842504629] = 'vb_05_va1_fr3', + [-1526349317] = 'vb_05_va1_fr4', + [719375795] = 'vb_05_va1_fr5', + [-1685146932] = 'vb_05_va3_fr', + [-865681191] = 'vb_05_va3_fr001', + [1107317333] = 'vb_05_va3_fr001b', + [-223867557] = 'vb_05_va3_fr002', + [1626106382] = 'vb_05_va3_fr003', + [-63237490] = 'vb_05_va6_fr1', + [729411851] = 'vb_05_va6_fr2', + [-1164606698] = 'vb_05_va7_fr1', + [-320641103] = 'vb_05_va7_fr2', + [-1655120133] = 'vb_05_vb_16build02', + [1923848854] = 'vb_05_villa01_intref', + [963610040] = 'vb_05_villa02_intref', + [-1219608972] = 'vb_05_villa03_intref', + [1225984714] = 'vb_05_villa04_intref', + [-854916158] = 'vb_05_villa06', + [-562649447] = 'vb_05_villa07', + [-385575574] = 'vb_05_villa08_fr', + [809585197] = 'vb_05_villa08', + [-798377127] = 'vb_07_alley_proxy_dnd', + [-574661906] = 'vb_07_alley003', + [-1017922180] = 'vb_07_fence_01', + [290035413] = 'vb_07_grd_fr1', + [-2088666301] = 'vb_07_grd_fr2', + [-2020258588] = 'vb_07_grd_proxy_do_not_delete', + [-1210640054] = 'vb_07_grd', + [761264897] = 'vb_07_ivy', + [-1113201221] = 'vb_07_s1_lad', + [396930892] = 'vb_07_st1_fr', + [816295479] = 'vb_07_st2_fr', + [-867874239] = 'vb_07_stores_detail_01', + [-560206098] = 'vb_07_stores_detail_02', + [-393215286] = 'vb_07_stores_detail_03', + [-94656927] = 'vb_07_stores_detail_04', + [-1748868816] = 'vb_07_stores_detail_05', + [-1437727161] = 'vb_07_stores_detail_06', + [-751478763] = 'vb_07_stores_detail_07', + [-433717770] = 'vb_07_stores_detail_08', + [1600843902] = 'vb_07_stores_detail_09', + [-1243372206] = 'vb_07_stores_detail_10', + [195760735] = 'vb_07_stores_detail_10b', + [1239534936] = 'vb_07_stores_detail_11', + [-1087797515] = 'vb_07_stores_proxy_dnd', + [-147349584] = 'vb_07_stores1_detail', + [92991865] = 'vb_07_stores1', + [694344568] = 'vb_07_structures01_proxy_dnd', + [-1822570991] = 'vb_07_structures01', + [592560246] = 'vb_07_structures02_proxy_dnd', + [-1480790317] = 'vb_07_structures02', + [1140407207] = 'vb_08_b2_fr1', + [892444184] = 'vb_08_b2_fr2', + [-1044241548] = 'vb_08_bld1_dtl', + [-770269811] = 'vb_08_bld1', + [621478513] = 'vb_08_bld2_dtl', + [1011249643] = 'vb_08_bld2', + [653813816] = 'vb_08_detail_fade1', + [-1548931225] = 'vb_08_fence_01', + [1442681865] = 'vb_08_fence_02', + [-1000804162] = 'vb_08_fence_03', + [-331300719] = 'vb_08_fence_04', + [-627139251] = 'vb_08_fence_05', + [-1863022090] = 'vb_08_fence_06', + [-11508048] = 'vb_08_fence_07', + [-539219920] = 'vb_08_fence_08', + [-843512854] = 'vb_08_fence_09', + [160595660] = 'vb_08_fence_10', + [-655843975] = 'vb_08_fence_11', + [-1043241360] = 'vb_08_g_fr01', + [691984440] = 'vb_08_grand_dtl4', + [-1771289466] = 'vb_08_grnd_dtl1', + [-784025022] = 'vb_08_grnd_dtl2', + [-1013244177] = 'vb_08_grnd_dtl3', + [-1989468939] = 'vb_08_grnd', + [-1937430268] = 'vb_08_trailer3_detailfade', + [-229599834] = 'vb_08_trellis_01', + [-1464480946] = 'vb_08_vb08_rf_fr1', + [673908596] = 'vb_08_water', + [2079441447] = 'vb_09__ladder_002', + [849424259] = 'vb_09__ladder_003', + [1154348881] = 'vb_09__ladder_01', + [-643288414] = 'vb_09_bld01_dtl', + [594894925] = 'vb_09_bld02_dtl', + [-778183467] = 'vb_09_build_em_lod', + [1704134999] = 'vb_09_build_em', + [-1862019966] = 'vb_09_build01', + [-1094471675] = 'vb_09_build02', + [1235864975] = 'vb_09_fence', + [-264400355] = 'vb_09_fr', + [-1932385565] = 'vb_09_ground', + [-2102241192] = 'vb_09_hedges_dcl', + [-1371668286] = 'vb_10_build1', + [-612541632] = 'vb_10_build2', + [1995586312] = 'vb_10_detail1', + [-1142438658] = 'vb_10_detail2', + [-1286622258] = 'vb_10_detail4', + [-2062231719] = 'vb_10_detail5', + [216477516] = 'vb_10_fr00', + [-158727534] = 'vb_10_fr01', + [731941643] = 'vb_10_ground', + [-1881905268] = 'vb_10_hedge_dcl', + [-1807389329] = 'vb_10_props_combo_dslod', + [-1700306637] = 'vb_17__ladder_01', + [405329189] = 'vb_17_b1', + [-1981630301] = 'vb_17_b2', + [828991333] = 'vb_17_dc01', + [184556179] = 'vb_17_dc02', + [435468412] = 'vb_17_dc03', + [1738757080] = 'vb_17_dc04', + [-390736385] = 'vb_17_dc05', + [-1024161155] = 'vb_17_dc06', + [-737727326] = 'vb_17_dc07', + [508674358] = 'vb_17_dc08', + [-1414865942] = 'vb_17_dc09', + [26839342] = 'vb_17_dc10', + [280733554] = 'vb_17_dc11', + [-55494766] = 'vb_17_fizz_fence_01', + [630688094] = 'vb_17_fizz_fence_02', + [375253739] = 'vb_17_fizz_fence_03', + [-467846430] = 'vb_17_grnd', + [1773722434] = 'vb_17_rail_01', + [1475590072] = 'vb_17_rail_02', + [214475107] = 'vb_17_rail_03', + [2071559875] = 'vb_17_rail_04', + [-54820523] = 'vb_17_rail_05', + [1796890129] = 'vb_17_rail_06', + [252642249] = 'vb_17_rail_07_l1', + [540428362] = 'vb_17_rail_07', + [246359356] = 'vb_17_rail_08', + [-1214122209] = 'vb_17_rail_09', + [65015986] = 'vb_17_rail_11', + [590303056] = 'vb_17_rail_12', + [1769233369] = 'vb_17_rail_13', + [1992455797] = 'vb_17_rail_14', + [-1643335346] = 'vb_17_stores_wdetail_01', + [-1145115470] = 'vb_17_stores_wdetail_02', + [-1070282282] = 'vb_17_stores', + [1310161941] = 'vb_18_bld1', + [225393115] = 'vb_18_bld6_detail01', + [-1274503153] = 'vb_18_bld6_fnc', + [-146583954] = 'vb_18_bld6', + [-397858998] = 'vb_18_detail', + [-1238737815] = 'vb_18_detail2', + [-908491829] = 'vb_18_detail3', + [-1620207921] = 'vb_18_fr1', + [-435051498] = 'vb_18_fr2', + [-120075870] = 'vb_18_fr3', + [-1160092042] = 'vb_18_ground', + [-2044786472] = 'vb_18_props_combo_dslod', + [-1813684830] = 'vb_19_bld1', + [675317334] = 'vb_19_bld2', + [-651752947] = 'vb_19_fr1', + [1158078919] = 'vb_19_fr2', + [1698770001] = 'vb_19_fr3_008', + [976141565] = 'vb_19_fr3_010', + [522747658] = 'vb_19_fr3_1', + [-415438218] = 'vb_19_fr3_10', + [-712521972] = 'vb_19_fr3_11', + [-2083675239] = 'vb_19_fr3_12', + [225696673] = 'vb_19_fr3_2', + [-2140552837] = 'vb_19_fr3_3', + [1998237405] = 'vb_19_fr3_4', + [1676413056] = 'vb_19_fr3_5', + [1236390940] = 'vb_19_fr3_6', + [-919121131] = 'vb_19_fr3_7', + [-1143064477] = 'vb_19_fr3_8', + [-1397515762] = 'vb_19_fr3_9', + [-183654188] = 'vb_19_ground_dtl', + [1893865261] = 'vb_19_ground_dtl2', + [2134160338] = 'vb_19_ground_dtl3', + [697148193] = 'vb_19_ground', + [1423351787] = 'vb_19_ladders_02', + [1644968534] = 'vb_19_ladders_03', + [-1748851262] = 'vb_19_ladders_04', + [-784728900] = 'vb_19_ladders', + [-2003673842] = 'vb_19_ladders01', + [-2108073141] = 'vb_19_maskshopint', + [730043649] = 'vb_19_masksshop', + [955028591] = 'vb_19_nw_masks', + [-454850497] = 'vb_19_nw_masks003', + [-895053803] = 'vb_19_nw_masks01', + [-13045791] = 'vb_19_ter', + [361071602] = 'vb_20_bld1', + [-2027886809] = 'vb_20_bld2', + [-1946780369] = 'vb_20_bld3_dtl', + [1069045847] = 'vb_20_bld3', + [421640171] = 'vb_20_details', + [-854624641] = 'vb_20_details2', + [2140265349] = 'vb_20_details3', + [-1320173824] = 'vb_20_details4', + [1876314111] = 'vb_20_fizza_01', + [1982822636] = 'vb_20_fizza_02_lod', + [-1660835267] = 'vb_20_fizza_10', + [1998759973] = 'vb_20_fr01', + [1703761524] = 'vb_20_ground', + [793667605] = 'vb_20_hdg', + [950818955] = 'vb_20_vb_20_lod', + [1573289357] = 'vb_20_vb_20a_lod', + [-630472294] = 'vb_20_vb_20b_lod', + [1441529528] = 'vb_21_build1_cloth2_lod', + [1497909187] = 'vb_21_build1', + [2078670404] = 'vb_21_build2_cloth1_lod', + [-1727109690] = 'vb_21_build2_cloth3_lod', + [131212504] = 'vb_21_build2', + [1648888174] = 'vb_21_detail_002', + [-1827738885] = 'vb_21_detail_003', + [-1422833778] = 'vb_21_detail', + [-2037496430] = 'vb_21_fr1', + [1415672833] = 'vb_21_hedge_dcl', + [1103990866] = 'vb_21_nw_dcls', + [-1005186882] = 'vb_22__ladder_002', + [-845076539] = 'vb_22__ladder_01', + [457326070] = 'vb_22_b1_fr1', + [-433008819] = 'vb_22_b1', + [-1842764428] = 'vb_22_b2_fr1', + [-2131950853] = 'vb_22_b2_fr2', + [-1403266140] = 'vb_22_b2', + [-691916688] = 'vb_22_b3', + [-1770644778] = 'vb_22_dc01', + [-1448066742] = 'vb_22_dc02', + [-604822065] = 'vb_22_dc03', + [-852752319] = 'vb_22_dc04', + [-66689547] = 'vb_22_dc05', + [-313833345] = 'vb_22_dc06', + [527903962] = 'vb_22_dc07', + [313856854] = 'vb_22_dc08', + [1155266467] = 'vb_22_dc09', + [-585123398] = 'vb_22_terrain', + [1083342028] = 'vb_23_bld1', + [247568683] = 'vb_23_bld2', + [274228054] = 'vb_23_decal_01', + [-485619518] = 'vb_23_decal_02', + [820749436] = 'vb_23_decal_03', + [-597226087] = 'vb_23_detail_01', + [586299284] = 'vb_23_detail_01pip', + [-1575282430] = 'vb_23_detail_02', + [-853581034] = 'vb_23_detail_02pip', + [-1148169052] = 'vb_23_grnd', + [-1687312623] = 'vb_23_hedge_decal', + [1590604376] = 'vb_24_ao_fadeout_bugfix', + [1220709834] = 'vb_24_bld1', + [1853794624] = 'vb_24_bld2_bb', + [1907653369] = 'vb_24_bld2_detail', + [855099259] = 'vb_24_bld2_emit', + [-1706371020] = 'vb_24_bld2_fenc_01', + [-970124654] = 'vb_24_bld2_fenc_02_lod', + [1908705064] = 'vb_24_bld2_fenc_02', + [-813698125] = 'vb_24_bld2_text', + [1916068014] = 'vb_24_bld2', + [-1672754341] = 'vb_24_detail', + [-1422587634] = 'vb_24_detail1', + [-1845045586] = 'vb_24_detail2', + [-1614712285] = 'vb_24_detail3', + [-1988533070] = 'vb_24_grille', + [914242378] = 'vb_24_ground', + [-1709773087] = 'vb_24_l_pls', + [2135605708] = 'vb_24_ld_lod', + [-831821402] = 'vb_24_ld', + [-1393512573] = 'vb_24_lddrs', + [954754411] = 'vb_24_pst', + [-1691530067] = 'vb_24_rls', + [-2022991477] = 'vb_25_dc1', + [-1188397816] = 'vb_25_dc2', + [1173788318] = 'vb_25_dc5', + [1604897282] = 'vb_25_dc6', + [260221367] = 'vb_25_dc7', + [-396730925] = 'vb_25_det', + [1291545698] = 'vb_25_f_detail', + [-1566524593] = 'vb_25_f', + [-1631703672] = 'vb_25_hdg', + [-942522836] = 'vb_25_mall', + [1178477429] = 'vb_25_mallfnce1', + [-1632623456] = 'vb_25_mallground', + [1863689878] = 'vb_25_rails_hd', + [-728277721] = 'vb_25_rails_hd01', + [97730466] = 'vb_25_rails_hd02', + [-266857428] = 'vb_25_rails_hd03', + [557774457] = 'vb_25_rails_hd04', + [262624074] = 'vb_25_rails_hd05', + [-1688279229] = 'vb_25_rails_hd06', + [-1914975171] = 'vb_25_rails_hd07', + [2129210968] = 'vb_25_rails_hd08', + [1830718147] = 'vb_25_rails_hd09', + [2038791551] = 'vb_25_rails2_hd', + [1329856758] = 'vb_25_rails2_hd01', + [1337185835] = 'vb_25_rest_details', + [547278822] = 'vb_25_rest', + [-1819861621] = 'vb_25_restground', + [-926316654] = 'vb_25_shd_box', + [-175546077] = 'vb_25_w', + [483570312] = 'vb_26_build3_d_fizz', + [1227524948] = 'vb_26_build3', + [507539729] = 'vb_26_detail', + [-1190685700] = 'vb_26_detail1', + [-984961918] = 'vb_26_detail2', + [-730182943] = 'vb_26_detail3', + [915977709] = 'vb_26_lll', + [1278859458] = 'vb_26_r_hd', + [209438882] = 'vb_27__ladder_002', + [1897642643] = 'vb_27__ladder_01', + [316948397] = 'vb_27_buildings', + [-998922014] = 'vb_27_buildingsa', + [927460] = 'vb_27_detail', + [-55619850] = 'vb_27_detaildente', + [-378635960] = 'vb_27_ground', + [6480179] = 'vb_27_rails', + [-450385700] = 'vb_27_rails01', + [-2030134476] = 'vb_28__decal004', + [726518452] = 'vb_28_build1', + [-662952686] = 'vb_28_build2', + [367903966] = 'vb_28_detail_02', + [368996790] = 'vb_28_detail', + [1937581456] = 'vb_28_detail3', + [-182277923] = 'vb_28_detail4', + [477362047] = 'vb_28_detail5', + [716215288] = 'vb_28_detail6', + [1388867617] = 'vb_28_graflodnew', + [-2054860616] = 'vb_28_ladder01', + [1961308028] = 'vb_28_ladder02', + [901242548] = 'vb_28_railsb_01', + [2095705371] = 'vb_28_railsb_02', + [1183350873] = 'vb_28_railsb_03', + [-975536385] = 'vb_28_railsb_04', + [-1885924743] = 'vb_28_railsb_05', + [-460918731] = 'vb_28_railsb', + [-739483493] = 'vb_29_grille_b', + [-130280507] = 'vb_29_grille_b01', + [123253246] = 'vb_29_grille_b02', + [-653339285] = 'vb_29_grille_b03', + [1153316390] = 'vb_29_grille', + [-159659315] = 'vb_29_grille01', + [80602993] = 'vb_29_grille02', + [-753925130] = 'vb_29_grille03', + [1395753999] = 'vb_29_grille04', + [1942200391] = 'vb_29_ground_dcl', + [226508873] = 'vb_29_ground_dcl2', + [-319815895] = 'vb_29_ground_dcl3', + [-1155458164] = 'vb_29_ground_dcl4', + [-2008304158] = 'vb_29_ground_dcl5', + [-343843751] = 'vb_29_ground', + [-1799881709] = 'vb_29_market_det', + [-1394849469] = 'vb_29_market_det001', + [-2006417316] = 'vb_29_market_det003', + [371366902] = 'vb_29_market_det004', + [105905233] = 'vb_29_market_det005', + [-481905089] = 'vb_29_market_det007', + [-855143999] = 'vb_29_market_det008', + [1191200539] = 'vb_29_market_shuttersa_lod', + [686908348] = 'vb_29_market_shuttersa', + [-1917718486] = 'vb_29_market_shuttersb_lod', + [446416657] = 'vb_29_market_shuttersb', + [1220837556] = 'vb_29_marketwalls', + [1429854673] = 'vb_29_marketwalls2', + [963998493] = 'vb_29_masts', + [-1137836482] = 'vb_29_shuttersopena_lod', + [-1343156802] = 'vb_29_shuttersopena', + [1765984474] = 'vb_29_shuttersopenb_lod', + [-510234360] = 'vb_29_shuttersopenb', + [-605615401] = 'vb_29_stall_01', + [-1393258810] = 'vb_29_stall_01b', + [223145378] = 'vb_29_stall_02', + [-1035519285] = 'vb_29_stall_02a', + [-823732897] = 'vb_29_w_brr_det', + [-16594229] = 'vb_29_w_brr', + [698160363] = 'vb_30__ladder_002', + [445085376] = 'vb_30__ladder_003', + [1568464718] = 'vb_30_bld1_woodstruc_lod', + [-166029102] = 'vb_30_bld1_woodstruc', + [1176586107] = 'vb_30_bld1', + [-2117451445] = 'vb_30_bld1a', + [-224943092] = 'vb_30_bld2c', + [-2022516370] = 'vb_30_bld2test', + [498095064] = 'vb_30_decal1', + [203534523] = 'vb_30_decal2', + [-980442224] = 'vb_30_decal3', + [-1217984705] = 'vb_30_decal4', + [-384996725] = 'vb_30_decal5', + [371075145] = 'vb_30_detail1', + [76809525] = 'vb_30_detail2', + [1538195681] = 'vb_30_detail3_stairs', + [-70814820] = 'vb_30_detail3', + [-402502638] = 'vb_30_detail4', + [-1492817272] = 'vb_30_floyd_emissive', + [-644321229] = 'vb_30_floyd_emissive2', + [1285182522] = 'vb_30_floyd_emissivemurder_01', + [421763414] = 'vb_30_ground', + [1415974920] = 'vb_30_hedges_dcl', + [725741943] = 'vb_30_ladder_05', + [1832690753] = 'vb_30_ladder', + [-1859494018] = 'vb_30_mission_afterdeath_ipl', + [1156857486] = 'vb_30_mission_afterdeath_ipl2', + [-1860937765] = 'vb_30_raildetail', + [1230296866] = 'vb_30_rails', + [-1381449219] = 'vb_30_shd', + [-623442521] = 'vb_30_shutters_slod', + [500487298] = 'vb_30_shutters', + [806473936] = 'vb_30_windows', + [-1015811998] = 'vb_31_build1', + [-1246669603] = 'vb_31_build2', + [693999615] = 'vb_31_dcl', + [108205748] = 'vb_31_dcl2', + [297151802] = 'vb_31_dcl3', + [2069211346] = 'vb_31_dtl', + [619380024] = 'vb_31_ground', + [986790280] = 'vb_31_hedge_rnd_b_mm003', + [691410514] = 'vb_31_hedge_rnd_b_mm004', + [157158237] = 'vb_31_rails', + [-514543928] = 'vb_31_railsb_lod', + [-1959459549] = 'vb_31_railsb', + [-984099672] = 'vb_31_railsb02', + [1916939902] = 'vb_31_railsb03', + [-1189667444] = 'vb_31_railsb04_lod', + [1634831581] = 'vb_31_railsb04', + [-2050426297] = 'vb_31_railse', + [-408629410] = 'vb_31_railse01', + [482720159] = 'vb_31_railse02', + [167744531] = 'vb_31_railse03', + [1126401626] = 'vb_31_railse04', + [828236495] = 'vb_31_railse05', + [1776288018] = 'vb_32_build1', + [877794811] = 'vb_32_build2', + [1300318297] = 'vb_32_build3', + [699576008] = 'vb_32_decal1', + [1290073388] = 'vb_32_decal2', + [-209730973] = 'vb_32_decal3', + [731384362] = 'vb_32_detail1', + [1514104696] = 'vb_32_detail2', + [1238222485] = 'vb_32_detail3', + [-787430555] = 'vb_32_ground', + [-907987458] = 'vb_32_hedge_ov', + [-766576041] = 'vb_32_rails01', + [-14268105] = 'vb_32_rails01a', + [290909592] = 'vb_32_rails01b', + [-194006070] = 'vb_32_rails01c', + [-1539760596] = 'vb_32_rails02', + [1330148440] = 'vb_32_rails03', + [-1259086908] = 'vb_32_railsb', + [1720207380] = 'vb_32_railsb01', + [-1026230394] = 'vb_32_railsc', + [1373537296] = 'vb_32_railsc01', + [1020549628] = 'vb_32_railsc02', + [2043143533] = 'vb_32_railsd', + [-753353059] = 'vb_32_railsd01', + [-617046319] = 'vb_33_bld1_balcony2', + [-1207233238] = 'vb_33_bld1', + [-466073153] = 'vb_33_bld2_balcony_2', + [1047137685] = 'vb_33_bld2_balcony', + [480873070] = 'vb_33_bld2_balcony6', + [-1872110520] = 'vb_33_bld2_fence', + [417818214] = 'vb_33_bld2_fizz_detail', + [-67372130] = 'vb_33_bld2_railing_4', + [-849264682] = 'vb_33_bld2', + [-512946892] = 'vb_33_detail_fence_01', + [1010657627] = 'vb_33_detail007', + [-1983180453] = 'vb_33_detail1', + [-527778087] = 'vb_33_detail2', + [-1373382132] = 'vb_33_detail3', + [-512737116] = 'vb_33_detail4', + [-805233210] = 'vb_33_detail5', + [83068842] = 'vb_33_detail6', + [-985962163] = 'vb_33_fakeshops', + [-543880134] = 'vb_33_fakeshops2', + [-347058985] = 'vb_33_garage_stuff', + [-782958903] = 'vb_33_garageint', + [418703304] = 'vb_33_grnd', + [-524556645] = 'vb_33_pagoda_1', + [-1299871185] = 'vb_33_pagoda_2', + [676885979] = 'vb_33_pagoda_3', + [-455333049] = 'vb_33_props_dsscfed', + [-1693269610] = 'vb_33_props_dsscfst', + [1628737836] = 'vb_33_props_fprop_lod', + [1504925282] = 'vb_33_shutters_slod', + [1765930131] = 'vb_33_shutters', + [1179287369] = 'vb_33_wrails', + [230799171] = 'vb_33detailint', + [1675780056] = 'vb_34_bayb_emis', + [-771245810] = 'vb_34_baybuild_antenna', + [-1077658260] = 'vb_34_baybuild', + [-494077656] = 'vb_34_beach_blend', + [134613817] = 'vb_34_beach_blend2', + [1807129895] = 'vb_34_beachn_01_wet', + [1440389790] = 'vb_34_beachn_01', + [1634606817] = 'vb_34_beachn_02_shark_lod', + [1125056677] = 'vb_34_beachn_02_shark', + [1039960437] = 'vb_34_beachn_02_wet', + [-1010633103] = 'vb_34_beachn_03', + [1017661174] = 'vb_34_beachn_7', + [-2037354014] = 'vb_34_beachs_01_wet', + [117628996] = 'vb_34_beachs_01', + [-1191893634] = 'vb_34_beachs_02_wet', + [-184894412] = 'vb_34_beachs_02', + [-56706985] = 'vb_34_beachs_05_det', + [575300362] = 'vb_34_beachs_05a', + [387468454] = 'vb_34_beachs_05b', + [-1753787452] = 'vb_34_bike', + [-931004185] = 'vb_34_bluegymfence_01', + [-941686863] = 'vb_34_bluegymfence_02', + [-1249027314] = 'vb_34_bluegymfence_03', + [-1553254710] = 'vb_34_bluegymfence_04', + [-1859218863] = 'vb_34_bluegymfence_05', + [218532347] = 'vb_34_bluegymfence_06', + [-87726723] = 'vb_34_bluegymfence_07', + [-562963152] = 'vb_34_cablemesh51277_tstd', + [-2064810363] = 'vb_34_cablemesh51278_tstd', + [454883103] = 'vb_34_cablemesh51279_tstd', + [1973069482] = 'vb_34_detail_00', + [1073713430] = 'vb_34_detail_00b', + [1321752834] = 'vb_34_detail_03', + [711168057] = 'vb_34_detail_05', + [131123988] = 'vb_34_detail_07', + [1408218042] = 'vb_34_detail_07b', + [-478281105] = 'vb_34_detail_09', + [74892608] = 'vb_34_detail_16', + [314466767] = 'vb_34_detail_17', + [-727489114] = 'vb_34_detail_18', + [-1177834293] = 'vb_34_detail_21', + [356480566] = 'vb_34_graff_boat_l1', + [-1243007113] = 'vb_34_graff_boat_l2', + [985678499] = 'vb_34_graff_boat', + [1942495553] = 'vb_34_graff_wall', + [-421484305] = 'vb_34_handgraf_01', + [-1262838282] = 'vb_34_hut_01', + [-495814299] = 'vb_34_hut_02', + [-921352533] = 'vb_34_hut_03', + [1994728012] = 'vb_34_hut_04', + [-1739720892] = 'vb_34_lg_hut01_closed', + [1329356640] = 'vb_34_lg_hut01_open', + [-1594474697] = 'vb_34_lg_hut02_closed', + [1896665674] = 'vb_34_lg_hut02_open', + [1586227284] = 'vb_34_lg_hut03_closed', + [1092547932] = 'vb_34_lg_hut03_open', + [-577769493] = 'vb_34_lg_hut04_closed', + [1749932667] = 'vb_34_lg_hut04_open', + [1281192411] = 'vb_34_lghut_closed', + [1335722716] = 'vb_34_lghut_closed001', + [1708699474] = 'vb_34_lghut_closed002', + [-446550421] = 'vb_34_lghut_closed003', + [51319887] = 'vb_34_musclebeach', + [346962445] = 'vb_34_new_rails', + [-1706090523] = 'vb_34_new_rails01', + [-1553845749] = 'vb_34_new_rails02', + [-170502418] = 'vb_34_new_rails03', + [2143283911] = 'vb_34_new_rails04', + [-1315147254] = 'vb_34_park', + [48343216] = 'vb_34_parkn', + [-83021047] = 'vb_34_policestation', + [1962187757] = 'vb_34_props_combo01_01_lod', + [253803366] = 'vb_34_props_combo01_02_lod', + [491266392] = 'vb_34_props_combo01_03_lod', + [-1147009310] = 'vb_34_props_combo01_04_lod', + [1139442670] = 'vb_34_props_towels1', + [1847711836] = 'vb_34_props_towels2', + [-1674890130] = 'vb_34_props_towels3', + [-1834704459] = 'vb_34_props_towels4', + [1743473731] = 'vb_34_props_towels5', + [-1584702371] = 'vb_34_railing_01_lod', + [1625930192] = 'vb_34_railing_01', + [634381831] = 'vb_34_railing_0122', + [1924488551] = 'vb_34_railing_02', + [-1894256295] = 'vb_34_railing_022', + [-2095645142] = 'vb_34_railing_03', + [-1251722603] = 'vb_34_railing_032', + [313892201] = 'vb_34_railing_04', + [-1992957039] = 'vb_34_railing_042', + [664192811] = 'vb_34_railing_05', + [-1618637692] = 'vb_34_railing_052', + [959179349] = 'vb_34_railing_06', + [-1920112144] = 'vb_34_railing_062', + [-902656928] = 'vb_34_railing_07', + [-592268960] = 'vb_34_railing_08', + [-274901195] = 'vb_34_railing_09', + [378054127] = 'vb_34_railing_10', + [87753556] = 'vb_34_railing_11', + [-1094355354] = 'vb_34_railing_15', + [-1333831206] = 'vb_34_railing_16', + [2118333617] = 'vb_34_reccentre2', + [-2023115498] = 'vb_34_sculpture', + [-1903172253] = 'vb_34_seawall_nw_det', + [-1465244627] = 'vb_34_seawall_nw_det01', + [-1763475296] = 'vb_34_seawall_nw_det02', + [-1945736474] = 'vb_34_seawall_nw_det03', + [2068367723] = 'vb_34_seawall_nw_det04', + [1605145119] = 'vb_34_seawall_nw_det05', + [2120994717] = 'vb_34_seawall_nw_det06', + [1122818228] = 'vb_34_seawall_nw_det07', + [1912420032] = 'vb_34_seawall_nw_det08', + [393413057] = 'vb_34_seawall_nw_det09', + [-197346147] = 'vb_34_seawall_nw_det10', + [12768681] = 'vb_34_seawall_nw_det11', + [304871547] = 'vb_34_seawall_nw_det12', + [-1694135764] = 'vb_34_seawall_nw_det13', + [-1365790384] = 'vb_34_seawall_nw_det14', + [-1716975745] = 'vb_34_seawall_nw_det15', + [-1422120283] = 'vb_34_seawall_nw_det16', + [1945648158] = 'vb_34_seawall_nw_det17', + [-943135810] = 'vb_34_seawall_nw_det18', + [-1842644860] = 'vb_34_seawall_nw_det19', + [-3222343] = 'vb_34_seawall_nw_det20', + [-1145811839] = 'vb_34_seawall_nw_det21', + [-1627581677] = 'vb_34_seawall_nw_det22', + [1485702710] = 'vb_34_seawall_nw_det23', + [1792027322] = 'vb_34_seawall_nw_det24', + [1462698852] = 'vb_34_seawall_nw_det25', + [1710334185] = 'vb_34_seawall_nw_det26', + [2139706392] = 'vb_34_seawall_nw_det27', + [-1840809580] = 'vb_34_seawall_nw_det28', + [497782898] = 'vb_34_seawall_nw_det29', + [-63060517] = 'vb_34_seawall_nw_det30', + [1413150164] = 'vb_34_seawall_nw_det31', + [571085171] = 'vb_34_seawall_nw_det32', + [1590921977] = 'vb_34_seawall_nw_det33', + [1627164503] = 'vb_34_seawall_nw_det35', + [1835345960] = 'vb_34_seawall_nw_det36', + [2082948524] = 'vb_34_seawall_nw_det37', + [-1470564660] = 'vb_34_seawall1', + [-1412880917] = 'vb_34_seawall2_tintz', + [-824522565] = 'vb_34_seawall3_tintz', + [-571219455] = 'vb_34_seawall4', + [-782055201] = 'vb_34_seawall5', + [1179240502] = 'vb_34_skate', + [-1876015950] = 'vb_34_swl', + [1810134478] = 'vb_34_tennis_grnd', + [1493689358] = 'vb_34_tenniscourt_a', + [852826025] = 'vb_34_tenniscourt_b', + [1090106354] = 'vb_34_tenniscourt_c', + [-1199072819] = 'vb_34_tenniscourt', + [-1818719589] = 'vb_34_tennisfencehd_', + [497243824] = 'vb_34_tennisfencehd_01', + [-885181979] = 'vb_34_tennisfencehd_02', + [605905824] = 'vb_34_tennisfencehd_03', + [435375948] = 'vb_34_tennisfencehd_04', + [278510745] = 'vb_34_tennisfencehd_05', + [-26798028] = 'vb_34_tennisfencehd_06', + [1799156190] = 'vb_34_tennisfencehd_07', + [1634655810] = 'vb_34_tennisfencehd_08', + [-1772632037] = 'vb_34_tennisfencehd_09', + [190103807] = 'vb_34_tennisfencehd_10', + [1419236228] = 'vb_34_tennisfencehd_11', + [175390526] = 'vb_34_tennisfencehd_12', + [810420977] = 'vb_34_tennisfencehd_13', + [1711306325] = 'vb_34_tennisfencehd_14', + [-1950268966] = 'vb_34_tennisfencehd_15', + [1100590472] = 'vb_34_tennisfencehd_16', + [-1542753750] = 'vb_34_tennisfencehd_17', + [1927090126] = 'vb_34_tennisfencehd_18', + [1199061249] = 'vb_34_tennisfencehd_19', + [334746461] = 'vb_34_tennisfencehd_20', + [90420797] = 'vb_34_tennisfencehd_21', + [-207285568] = 'vb_34_tennisfencehd_22', + [720503129] = 'vb_34_tennisfencehd_23', + [1630301645] = 'vb_34_tennisfencehd_24', + [-1768007500] = 'vb_34_tennisfencehd_25', + [1038001970] = 'vb_34_tennisfencehd_26', + [-542184752] = 'vb_34_tennisfencehd_27', + [-1482528526] = 'vb_34_toiletblock01', + [990056373] = 'vb_34_toiletblock02', + [-631423056] = 'vb_34_volleyballnet_01', + [1939108384] = 'vb_34_volleyballnet_02', + [1171625635] = 'vb_34_volleyballnet_03', + [512529719] = 'vb_34_wall_ovl01', + [1772497769] = 'vb_34_wall_ovl02', + [-1799769996] = 'vb_34_weeds_new006', + [-1157559396] = 'vb_34_wires', + [411342724] = 'vb_35_beacha', + [-527456357] = 'vb_35_beachb', + [171440875] = 'vb_35_beachc', + [1132129648] = 'vb_35_beachd', + [-843382286] = 'vb_35_beache', + [-722792382] = 'vb_35_beachg', + [1168533171] = 'vb_35_dcl_01', + [1897971111] = 'vb_35_dcl_02', + [1592400186] = 'vb_35_dcl_03', + [-1885603171] = 'vb_35_dcl_04', + [-797645710] = 'vb_35_foam1', + [-1575745615] = 'vb_35_foam2', + [518611179] = 'vb_35_hut05', + [304531302] = 'vb_35_hut06', + [1557428299] = 'vb_35_jetski', + [933726718] = 'vb_35_lg_hut05_closed', + [218336653] = 'vb_35_lg_hut05_open', + [-1158849747] = 'vb_35_lg_hut06_closed', + [2023420286] = 'vb_35_lg_hut06_open', + [-2188084] = 'vb_35_lg_sign', + [299554667] = 'vb_35_lg_vlly_00_lod', + [-1691387505] = 'vb_35_lg_vlly_00', + [-1951540596] = 'vb_35_lg_vlly_01', + [-1110655271] = 'vb_35_lg_vlly_02', + [-334540075] = 'vb_35_lghut05_closed', + [383261832] = 'vb_35_lghut06_closed', + [335636133] = 'vb_35_lguard', + [137542048] = 'vb_35_lifegaurddoor2', + [-551457139] = 'vb_35_lifeguard_antena', + [-905969728] = 'vb_35_lifeguard_railing01', + [-624258128] = 'vb_35_lifeguard', + [-803120864] = 'vb_35_mtl_br', + [411397412] = 'vb_35_props_combo04_05_lod', + [2030632545] = 'vb_35_props_combo04_34_lod', + [-1747163815] = 'vb_35_props_combo04_36_lod', + [-543482228] = 'vb_35_props_combo04_dslod', + [1544898114] = 'vb_35_props_combo05_19_lod', + [-1659329529] = 'vb_35_props_combo05_dslod', + [-2122117578] = 'vb_35_props_combo06_20_lod', + [-1971340415] = 'vb_35_props_combo06_dslod', + [170444242] = 'vb_35_props_combo09_30_lod', + [-1270999760] = 'vb_35_props_combo09_31_lod', + [-1047033047] = 'vb_35_props_combo09_35_lod', + [-582446187] = 'vb_35_props_combo09_36_lod', + [238100768] = 'vb_35_props_combo09_dslod', + [-533669413] = 'vb_35_props_combo12_dslod', + [-1241540736] = 'vb_35_props_combo13_dslod', + [-1015804641] = 'vb_35_props_l_007', + [399911702] = 'vb_35_props_slod_5', + [387819475] = 'vb_35_props_towels1', + [1122369375] = 'vb_35_props_towels2', + [824138706] = 'vb_35_props_towels3', + [-962251365] = 'vb_35_river_lod', + [1042437076] = 'vb_35_river', + [-1326873946] = 'vb_35_river001_lod', + [-1499325076] = 'vb_35_rocks', + [-446260595] = 'vb_35_struct1', + [-1278920889] = 'vb_35_struct2', + [-1040002110] = 'vb_35_struct3', + [399247919] = 'vb_35b_coral_fan_flat_004', + [1242794663] = 'vb_35b_coral_fan_flat_1', + [1433182553] = 'vb_35b_coral_fan_flat_2', + [1892575110] = 'vb_35b_coral_fan_p_l', + [-1573017714] = 'vb_35b_coral_fan_p_l003', + [605074982] = 'vb_35b_coral_fan_p_l2', + [1431522707] = 'vb_35b_coraltb001', + [1756136581] = 'vb_35b_coralvs2', + [1411076322] = 'vb_35b_deb_1', + [-1646173075] = 'vb_35b_deb_2', + [967220217] = 'vb_35b_deb_3', + [-693381655] = 'vb_35b_deb_4', + [-422808022] = 'vb_35b_deb_5', + [1426064700] = 'vb_35b_seabed_d_00', + [-1965514630] = 'vb_35b_seaweed_long_l', + [-1045098954] = 'vb_35b_seaweed_long_m', + [323056791] = 'vb_35b_seaweed_long_m001', + [1396669792] = 'vb_35b_uw_01', + [-947506898] = 'vb_35b_uw_018_lod', + [752265985] = 'vb_35b_uw_01b', + [-704675098] = 'vb_35b_uw_02', + [-404805979] = 'vb_35b_uw_03', + [1413021495] = 'vb_35b_uw_04', + [1115773896] = 'vb_35b_uw_05', + [-397301858] = 'vb_35b_uw_06', + [-702217403] = 'vb_35b_uw_07', + [2067811653] = 'vb_35b_uw_08', + [1771481586] = 'vb_35b_uw_09', + [1980248670] = 'vb_35b_uw_09b', + [-2019794287] = 'vb_35b_uw_10', + [1498777092] = 'vb_35b_uw_11', + [-477685143] = 'vb_35b_uw_12', + [-171655452] = 'vb_35b_uw_13', + [-1073523870] = 'vb_35b_uw_14', + [-766904337] = 'vb_35b_uw_15', + [554407357] = 'vb_35b_uw_16', + [784675120] = 'vb_35b_uw_17', + [-1664490879] = 'vb_35b_uw_d_00', + [1828343272] = 'vb_35b_uw_d_00b', + [-1903213044] = 'vb_35b_uw_d_01', + [1172518057] = 'vb_35b_uw_d_02', + [941693221] = 'vb_35b_uw_d_03', + [-2118046620] = 'vb_35b_uw_d_04', + [-445451322] = 'vb_35b_uw_d_05', + [-1628510529] = 'vb_35b_uw_d_06', + [-1868510685] = 'vb_35b_uw_d_07', + [-1202021994] = 'vb_35b_uw_d_08', + [708312403] = 'vb_35b_uw_d_09', + [1780022576] = 'vb_35b_uw_d_0e', + [116242139] = 'vb_35b_uw_d_0g', + [2113414098] = 'vb_35b_uw_d_10', + [-1589253523] = 'vb_35b_uw_d_12', + [821791194] = 'vb_35b_uw_d_13', + [-771779149] = 'vb_35b_uwn_1', + [254559407] = 'vb_35b_uwn_10', + [-722513866] = 'vb_35b_uwn_11', + [-898286782] = 'vb_35b_uwn_12', + [-1080430364] = 'vb_35b_uwn_2', + [2086431342] = 'vb_35b_uwn_3', + [-1735777591] = 'vb_35b_uwn_5', + [-1897853065] = 'vb_35b_uwn_6', + [716326679] = 'vb_35b_uwn_7', + [417899396] = 'vb_35b_uwn_8', + [1600434303] = 'vb_35b_uwn_9', + [-1689260142] = 'vb_36_beach1', + [-550706942] = 'vb_36_beach370', + [-1275229532] = 'vb_36_beach371', + [1680675137] = 'vb_36_beach66', + [-1538686587] = 'vb_36_beach7', + [-507635076] = 'vb_36_beachtnt_', + [1317949218] = 'vb_36_beachtnt_01', + [2135928996] = 'vb_36_beachtnt_02', + [984519424] = 'vb_36_cablemesh1919_hvlit', + [967892453] = 'vb_36_cablemesh1920_hvlit', + [-1294903545] = 'vb_36_cablemesh1921_hvlit', + [-1168130073] = 'vb_36_cablemesh1922_hvlit', + [-223828673] = 'vb_36_cablemesh1923_hvlit', + [873743667] = 'vb_36_cablemesh1924_hvlit', + [-616407177] = 'vb_36_cablemesh1925_hvlit', + [-1368873548] = 'vb_36_cablemesh1926_hvlit', + [-599975178] = 'vb_36_cablemesh1927_hvlit', + [-411090962] = 'vb_36_cablemesh1928_hvlit', + [1438976692] = 'vb_36_cablemesh1929_hvlit', + [-481041458] = 'vb_36_cablemesh1930_hvlit', + [-1976628811] = 'vb_36_cablemesh1931_hvlit', + [-1938730330] = 'vb_36_cablemesh1932_hvlit', + [-221898475] = 'vb_36_foam1', + [-932264857] = 'vb_36_foam2', + [-584454691] = 'vb_36_foam3', + [-1428747976] = 'vb_36_foam4', + [831991386] = 'vb_36_hut07', + [1588348930] = 'vb_36_hut08_wood', + [2097792318] = 'vb_36_hut08', + [544133172] = 'vb_36_hut09_wood', + [-1942658155] = 'vb_36_hut09', + [1292407173] = 'vb_36_hut22_wood', + [-437040787] = 'vb_36_lg_hut07_closed', + [-1267393844] = 'vb_36_lg_hut07_open', + [-1202234959] = 'vb_36_lg_hut08_closed', + [1408664349] = 'vb_36_lg_hut08_open', + [-1482631983] = 'vb_36_lg_hut09_closed', + [-1742042320] = 'vb_36_lg_hut09_open', + [1053234744] = 'vb_36_lghut07_closed', + [-778582946] = 'vb_36_lghut08_closed', + [-1434493297] = 'vb_36_lghut08_closed001', + [219051282] = 'vb_36_props_combo_slod', + [-1818391751] = 'vb_36_props_towels1', + [-1508528087] = 'vb_36_props_towels2', + [-1355267474] = 'vb_36_props_towels3', + [-1047927023] = 'vb_36_props_towels4', + [1823620451] = 'vb_36_props_towels5', + [1973677719] = 'vb_36_sculpture', + [-1658628900] = 'vb_36_seawall002', + [424563517] = 'vb_36_shadow01', + [704640160] = 'vb_36_shadow02', + [1137977424] = 'vb_36_shadow03', + [2125392605] = 'vb_38_build_04_pole_01', + [-856420055] = 'vb_38_build01_ov01', + [-1949331743] = 'vb_38_build01_ov02', + [-107353484] = 'vb_38_build01_ov03', + [-1471264802] = 'vb_38_build01_ov04', + [-1777556645] = 'vb_38_build01_ov05', + [-617183227] = 'vb_38_build01_rails', + [-1328616636] = 'vb_38_build01_trelis_01', + [1125421009] = 'vb_38_build01_trelis_02', + [-1822740387] = 'vb_38_build01_trelis_03', + [-1516710696] = 'vb_38_build01_trelis_04', + [-95125934] = 'vb_38_build01_trelis_05', + [440824601] = 'vb_38_build01', + [-1577603060] = 'vb_38_build02_ov', + [806067875] = 'vb_38_build02', + [1044986654] = 'vb_38_build03', + [-435472582] = 'vb_38_build04_pole02', + [1259733354] = 'vb_38_build04_pole04', + [535407350] = 'vb_38_build04_pole05', + [1133987258] = 'vb_38_build04', + [1372447271] = 'vb_38_build05', + [-635955440] = 'vb_38_builddepot06', + [-2110297101] = 'vb_38_buildingfence_01', + [1938607774] = 'vb_38_buildingfence_02', + [-1703175037] = 'vb_38_buildingfence_03', + [71200775] = 'vb_38_buildingfence_04', + [-1089903202] = 'vb_38_buildingfence_05', + [-1462748884] = 'vb_38_buildingfence_06', + [-791344843] = 'vb_38_buildingfence_07', + [1032053393] = 'vb_38_buildingfence_08', + [-145697236] = 'vb_38_buildingfence_09', + [815286230] = 'vb_38_buildingfence_10', + [266077718] = 'vb_38_buildingfence_11', + [2106220913] = 'vb_38_buildingfence_12', + [1281818411] = 'vb_38_buildingfence_13', + [966089096] = 'vb_38_buildingfence_14', + [26611900] = 'vb_38_cablemesh15862_hvlit', + [-606707019] = 'vb_38_cablemesh15863_hvlit', + [562363704] = 'vb_38_cablemesh15864_hvlit', + [1703986118] = 'vb_38_cablemesh15865_hvlit', + [2077693916] = 'vb_38_cablemesh15866_hvlit', + [1658175980] = 'vb_38_cablemesh15867_hvlit', + [-1103894505] = 'vb_38_cablemesh15868_hvlit', + [1763946764] = 'vb_38_cablemesh15869_hvlit', + [-1536508591] = 'vb_38_cablemesh15870_hvlit', + [-1685285458] = 'vb_38_cablemesh15871_hvlit', + [-1909163740] = 'vb_38_cablemesh15872_hvlit', + [-2041196498] = 'vb_38_cablemesh15873_hvlit', + [-756990232] = 'vb_38_cablemesh15874_hvlit', + [-904300209] = 'vb_38_cablemesh15875_hvlit', + [-1081110950] = 'vb_38_cablemesh15876_hvlit', + [-601550592] = 'vb_38_cablemesh15877_hvlit', + [-1912368431] = 'vb_38_cablemesh15878_hvlit', + [-2105879785] = 'vb_38_cablemesh15879_hvlit', + [-662630438] = 'vb_38_cablemesh15880_hvlit', + [1705367745] = 'vb_38_cablemesh15881_hvlit', + [291617781] = 'vb_38_cablemesh15882_hvlit', + [-1900057834] = 'vb_38_cablemesh15883_hvlit', + [-89490024] = 'vb_38_cablemesh15884_hvlit', + [-540318623] = 'vb_38_cablemesh15885_hvlit', + [1725181522] = 'vb_38_cablemesh15886_hvlit', + [-528141758] = 'vb_38_cablemesh15887_hvlit', + [-1515288948] = 'vb_38_cablemesh15888_hvlit', + [-330790718] = 'vb_38_cablemesh15889_hvlit', + [999458370] = 'vb_38_cablemesh15890_hvlit', + [-1555723380] = 'vb_38_cablemesh15891_hvlit', + [1060093438] = 'vb_38_cablemesh15892_hvlit', + [-1371868569] = 'vb_38_cablemesh15893_hvlit', + [-1396139068] = 'vb_38_cablemesh15894_hvlit', + [1664587376] = 'vb_38_cablemesh15895_hvlit', + [1713217483] = 'vb_38_cablemesh15896_hvlit', + [-325374596] = 'vb_38_cablemesh15897_hvlit', + [1708357010] = 'vb_38_fence_01', + [-929678590] = 'vb_38_fence_02', + [-1158963283] = 'vb_38_fence_03', + [187514927] = 'vb_38_fence_04', + [-42228532] = 'vb_38_fence_05', + [-2141934956] = 'vb_38_fence_06', + [1946587640] = 'vb_38_fence_07', + [-429656419] = 'vb_38_fence_08', + [-663954769] = 'vb_38_fence_09', + [-265222981] = 'vb_38_fence_10', + [460348217] = 'vb_38_fence_11', + [-862831234] = 'vb_38_fence_12', + [-1228140046] = 'vb_38_fence_13', + [860031718] = 'vb_38_fence_14', + [1653205363] = 'vb_38_fence_15', + [1332659005] = 'vb_38_fence_16', + [15705656] = 'vb_38_fence_17', + [208911668] = 'vb_38_fence_18', + [1518786897] = 'vb_38_fence_19', + [1844182787] = 'vb_38_fence_20', + [1336525439] = 'vb_38_fence_21', + [-1203170372] = 'vb_38_fence_22', + [1905822092] = 'vb_38_fence_30', + [-420449222] = 'vb_38_fence_31', + [-1924382477] = 'vb_38_fence_32', + [-2071056521] = 'vb_38_fence_33', + [1284587390] = 'vb_38_fence_34', + [986422259] = 'vb_38_fence_35', + [2040794951] = 'vb_38_fence_40', + [-1758098801] = 'vb_38_fence', + [-857168071] = 'vb_38_fenceb_01', + [-1617671027] = 'vb_38_fenceb_02', + [-140739424] = 'vb_38_fenceb_03', + [-983656411] = 'vb_38_fenceb_04', + [355186622] = 'vb_38_fenceb_05', + [-496381381] = 'vb_38_fenceb_06', + [1395078076] = 'vb_38_fenceb_07', + [682024632] = 'vb_38_fenceb_08', + [1587268261] = 'vb_38_fenceb_09', + [-1950102807] = 'vb_38_glue_01', + [1658281580] = 'vb_38_grnd_dtl1', + [1836348326] = 'vb_38_grnd_dtl2', + [926517041] = 'vb_38_grnd_dtl3', + [1342159037] = 'vb_38_grnd_dtl4', + [-1716597734] = 'vb_38_grnd_dtl5', + [-1465102511] = 'vb_38_ground_01', + [405372060] = 'vb_38_ground_01a_ov', + [-938316374] = 'vb_38_ground_01b_ov', + [867999480] = 'vb_38_ground_02_proxy', + [-1286249309] = 'vb_38_ground_02', + [-148282432] = 'vb_38_ground_02a_ov', + [-318140587] = 'vb_38_ground_02b_ov', + [-2072082698] = 'vb_38_ground_03', + [-1831853159] = 'vb_38_ground_04', + [2109798779] = 'vb_38_ground_05', + [1468444392] = 'vb_38_hedge_detail', + [-2029457557] = 'vb_38_hedge_detail00', + [-943427359] = 'vb_38_hedge_detail01', + [-1183132594] = 'vb_38_hedge_detail02', + [1010817494] = 'vb_38_hedge_detail03', + [-975527171] = 'vb_38_marinearch', + [922675461] = 'vb_38_redfence_00', + [95782515] = 'vb_38_redfence_01', + [1519562796] = 'vb_38_redfence_02', + [-1189253824] = 'vb_38_redfence_03', + [2114057994] = 'vb_38_redfence_04', + [1279464333] = 'vb_38_redfence_05', + [-2031318809] = 'vb_38_redfence_06', + [-1198822364] = 'vb_38_redfence_07', + [-1438265447] = 'vb_38_redfence_08', + [1275925289] = 'vb_38_redfence_09', + [159091403] = 'vb_38_redfence_10', + [457780838] = 'vb_38_redfence_11', + [1711064012] = 'vb_38_redfence_12', + [2009032529] = 'vb_38_redfence_13', + [-914158889] = 'vb_38_redfence_14', + [-709012461] = 'vb_38_stairs_01', + [-65789756] = 'vb_38_stairs_02', + [-226423394] = 'vb_38_stairs_03', + [718208569] = 'vb_38_stairs_04', + [633296752] = 'vb_38_vb_pagoda_01', + [390737070] = 'vb_39_grndeast_d', + [468021411] = 'vb_39_grndeast_d1', + [-914994234] = 'vb_39_grndeast_d3', + [-488641412] = 'vb_39_grndwest_d', + [52676351] = 'vb_39_grndwest_d1', + [-254205334] = 'vb_39_grndwest_d2', + [458326900] = 'vb_39_grndwest', + [793088101] = 'vb_39_groundrailing_01', + [601258355] = 'vb_39_groundrailing_02', + [345234158] = 'vb_39_groundrailing_03', + [-964063399] = 'vb_39_hedge_detail', + [-577099598] = 'vb_39_hedge_detail02', + [-783441118] = 'vb_39_rail', + [1282521861] = 'vb_39_towera_d_2', + [-1532896088] = 'vb_39_towera_d', + [-227292631] = 'vb_39_towera_stairs', + [555658096] = 'vb_39_towera_stairs001', + [-1992398823] = 'vb_39_towera', + [-419758698] = 'vb_39_towerb_d_2', + [819046032] = 'vb_39_towerb_d', + [1459684255] = 'vb_39_towerb', + [1519274027] = 'vb_39_vb1_39_tower_extras', + [-846760272] = 'vb_43_apt_fizstep', + [-147938059] = 'vb_43_apt_ground', + [-1491766424] = 'vb_43_apt02dec', + [-1569107741] = 'vb_43_apt2_build', + [-482750024] = 'vb_43_build05', + [-1090436693] = 'vb_43_decal_01', + [-764647295] = 'vb_43_decal_02', + [-1464396521] = 'vb_43_decal_03', + [-1209552008] = 'vb_43_decal_04', + [-1942397924] = 'vb_43_decal_05', + [-406226215] = 'vb_43_dockdetails01', + [1848870879] = 'vb_43_dockdetails02', + [-2022852013] = 'vb_43_dockdetails03', + [-1965637339] = 'vb_43_dockdetails04', + [-106323690] = 'vb_43_door_l_mp', + [-2042007659] = 'vb_43_door_r_mp', + [632070069] = 'vb_43_glue_kerb', + [1191449150] = 'vb_43_ground', + [-852590940] = 'vb_43_ground1', + [1190359596] = 'vb_43_ground2', + [-270205105] = 'vb_43_groundwall', + [1579249850] = 'vb_43_railing_01', + [875830496] = 'vb_43_railing_02', + [-90363473] = 'vb_43_railing_03', + [1356977723] = 'vb_43_railing_04', + [386917012] = 'vb_43_railing_05', + [-312438986] = 'vb_43_railing_06', + [-1282172003] = 'vb_43_railing_07', + [-1040304014] = 'vb_43_railing_08', + [-801614618] = 'vb_43_railing_09', + [1649178032] = 'vb_43_railing_10', + [454059829] = 'vb_43_railing_11', + [750553745] = 'vb_43_railing_12', + [95140972] = 'vb_43_railing_13', + [155370394] = 'vb_43_railing_14', + [-503909117] = 'vb_43_railing_15', + [-205973369] = 'vb_43_railing_16', + [-1398535586] = 'vb_43_railing_17', + [-798273044] = 'vb_43_railing_18', + [651295648] = 'vb_43_railing_19_lod', + [-2002042263] = 'vb_43_railing_19', + [1900877009] = 'vb_43_railing_20', + [1555557287] = 'vb_43_railing_21', + [1259358296] = 'vb_43_railing_22', + [943858364] = 'vb_43_railing_23', + [710641391] = 'vb_43_railing_24', + [-237529628] = 'vb_43_railing_25', + [604437058] = 'vb_43_railing_26', + [-852767603] = 'vb_43_railing_27', + [-8113859] = 'vb_43_railing_28', + [-1429338158] = 'vb_43_railing_29', + [462479499] = 'vb_44_apt', + [-851472461] = 'vb_44_buildingdecal', + [-1915688958] = 'vb_44_center_stairs', + [789243287] = 'vb_44_center', + [-1758103691] = 'vb_44_detail1a', + [-927098428] = 'vb_44_detail1a1', + [695376881] = 'vb_44_detail1b', + [661316453] = 'vb_44_detail1b1', + [-158334544] = 'vb_44_detail1b2', + [-456005667] = 'vb_44_detail2_01', + [256064703] = 'vb_44_detail2_02', + [427839801] = 'vb_44_detail2_03', + [674721447] = 'vb_44_detail2_04', + [904530452] = 'vb_44_detail2_05', + [-65046773] = 'vb_44_detailfizz_01', + [-362556524] = 'vb_44_detailfizz_02', + [2088608129] = 'vb_44_grnd', + [-314781992] = 'vb_44_hedge_detail01', + [-1752292484] = 'vb_44_hedge_detail02', + [-794749535] = 'vb_44_hedge_detail03', + [-162558721] = 'vb_44_lot', + [320886480] = 'vb_44_lothedgeshadprox', + [1699700913] = 'vb_44_lotshadowproxy', + [-362521847] = 'vb_44_pagoda', + [1073991978] = 'vb_44_railingbuilding_00', + [-112278591] = 'vb_44_railingbuilding_01', + [2077333820] = 'vb_44_railingbuilding_010', + [964891812] = 'vb_44_railingbuilding_011', + [660762723] = 'vb_44_railingbuilding_012', + [1358906268] = 'vb_44_railingbuilding_013', + [1186737942] = 'vb_44_railingbuilding_014', + [-68347527] = 'vb_44_railingbuilding_015', + [-760953111] = 'vb_44_railingbuilding_016', + [389140482] = 'vb_44_railingbuilding_017', + [233880960] = 'vb_44_railingbuilding_018', + [-960778485] = 'vb_44_railingbuilding_019', + [182413026] = 'vb_44_railingbuilding_02', + [1976122560] = 'vb_44_railingbuilding_03', + [2013479220] = 'vb_44_railingbuilding_04', + [1391752971] = 'vb_44_railingbuilding_05', + [1669175337] = 'vb_44_railingbuilding_06', + [-1360744714] = 'vb_44_railingbuilding_07', + [-787680442] = 'vb_44_railingbuilding_08', + [-1946719972] = 'vb_44_railingbuilding_09', + [1796044429] = 'vb_44_rest_alpha', + [-596596159] = 'vb_44_rest', + [1250725043] = 'vb_44_thedgeshadprox_lod', + [-1816716493] = 'vb_44_water', + [784929245] = 'vb_44a_lot', + [-1618612972] = 'vb_44a_lothedgeshadprox1', + [-1811651925] = 'vb_44a_thedgeshadprox1_lod', + [-678614652] = 'vb_ca_bridg011_lod_m', + [-259639828] = 'vb_ca_bridg021_lod_m', + [1942933419] = 'vb_ca_bridge1_rail', + [-1519500588] = 'vb_ca_bridge1', + [-599462944] = 'vb_ca_bridge2_rail', + [-1220942229] = 'vb_ca_bridge2', + [-528601731] = 'vb_ca_bridge3_rails', + [-19073616] = 'vb_ca_bridge3', + [1949390678] = 'vb_ca_cablemesh92545_hvstd', + [290846337] = 'vb_ca_cablemesh92546_hvstd', + [-1119771078] = 'vb_ca_cablemesh92708_hvstd', + [1532997583] = 'vb_ca_dec22', + [-1301472316] = 'vb_ca_dec224', + [-1002782881] = 'vb_ca_dec225', + [-1337446756] = 'vb_ca_dec3', + [-1146141334] = 'vb_ca_dec4', + [-1817807531] = 'vb_ca_dec5', + [-459800347] = 'vb_ca_jetty_l_prox18', + [-1133678513] = 'vb_ca_jetty1', + [1320228056] = 'vb_ca_jetty2', + [1761233258] = 'vb_ca_jetty3', + [-388544218] = 'vb_ca_jetty4', + [-89527093] = 'vb_ca_jetty5', + [-556347543] = 'vb_ca_p1', + [943915564] = 'vb_ca_p5', + [660234335] = 'vb_ca_p6', + [488393699] = 'vb_ca_p7', + [196913444] = 'vb_ca_p8', + [654357556] = 'vb_ca_pipe011', + [854117380] = 'vb_ca_pipe012', + [1093363849] = 'vb_ca_pipe013', + [-812808881] = 'vb_ca_pipe014', + [-574152254] = 'vb_ca_pipe015', + [1131244477] = 'vb_ca_pipe020', + [2081680201] = 'vb_ca_pipeend', + [-892972145] = 'vb_ca_pipeend001', + [-687838205] = 'vb_ca_pipeend002', + [2003381474] = 'vb_ca_pipeend003', + [-2060924831] = 'vb_ca_pipeend004', + [-1812535811] = 'vb_ca_pipeend005', + [-1582464662] = 'vb_ca_pipeend006', + [1287974019] = 'vb_ca_pipemiddle', + [-2133446282] = 'vb_ca_pipemiddle001', + [-1827416591] = 'vb_ca_pipemiddle002', + [-803778565] = 'vb_ca_pipemiddle003', + [-514624909] = 'vb_ca_pipemiddle004', + [-1407449083] = 'vb_ca_pipemiddle005', + [-1101091702] = 'vb_ca_pipemiddle006', + [386850285] = 'vb_ca_pipemiddle007', + [-1590661370] = 'vb_ca_pipemiddle011', + [-1887777893] = 'vb_ca_pipemiddle012', + [-2035533314] = 'vb_ca_pipemiddle013', + [1793917568] = 'vb_ca_pipemiddle014', + [-769371923] = 'vb_ca_pipemiddle015', + [140033369] = 'vb_ca_pipemiddle016', + [2113464185] = 'vb_ca_pipeprocessbuild', + [-1600053422] = 'vb_ca_pipestart', + [-1669978571] = 'vb_ca_pipestart001', + [1796883326] = 'vb_ca_pipestart002', + [-940835552] = 'vb_ca_pipestart003', + [-479218645] = 'vb_ca_pipestart005', + [-1308634808] = 'vb_ca_pipestart006', + [-135111376] = 'vb_ca_pipestart007', + [102889871] = 'vb_ca_pipestart008', + [327685211] = 'vb_ca_pipestart009', + [-756994814] = 'vb_ca_sml_opt_hdge1', + [-1014460847] = 'vb_ca_sml_opt_hdge2', + [-297081899] = 'vb_ca_sml_opt_hdge3', + [-537573590] = 'vb_ca_sml_opt_hdge4', + [201105208] = 'vb_ca_sml_opt_hdge5', + [-1854648446] = 'vb_ca_spiralstairs', + [423875847] = 'vb_ca_tunnel_01_detail', + [-1938614564] = 'vb_ca_tunnel_01_lightdummy', + [-187752110] = 'vb_ca_tunnel_01', + [1451199368] = 'vb_ca_tunnel_01blocker', + [-1723138247] = 'vb_ca_tunnel_01blocker001', + [-1013944988] = 'vb_ca_tunnel_01ol', + [-1443207909] = 'vb_ca_tunnel_02_lightdummy', + [-418544177] = 'vb_ca_tunnel_02', + [500495752] = 'vb_ca_tunnel_02blocker', + [-1710750533] = 'vb_ca_tunnel_02ol', + [1763552164] = 'vb_ca_tunnel_03_lightdummy', + [1359239611] = 'vb_ca_tunnel_03', + [352642066] = 'vb_ca_tunnel_03blocker', + [-1310053038] = 'vb_ca_tunnel_03ol', + [-1826201264] = 'vb_ca_tunnel_04_lightdummy', + [1646525446] = 'vb_ca_tunnel_04', + [-2002376653] = 'vb_ca_tunnel_04blocker', + [-106024700] = 'vb_ca_tunnel_04ol', + [541609354] = 'vb_ca_tunnel_05_b_dummy', + [1964705187] = 'vb_ca_tunnel_05_lightdummy', + [1408589737] = 'vb_ca_tunnel_05', + [-466933998] = 'vb_ca_tunnel_05blocker', + [-354354184] = 'vb_ca_tunnel_05ol', + [1035940669] = 'vb_ca_tunnel_06', + [-2138730419] = 'vb_ca_tunnel_dtl1', + [1302965010] = 'vb_ca_tunnel_dtl2', + [1669453506] = 'vb_ca_tunnel_dtl3', + [1055788443] = 'vb_ca_tunnel_dtl5', + [76552416] = 'vb_ca_tunnel_dtl6', + [448152876] = 'vb_ca_tunnel_dtl7', + [-774330346] = 'vb_ca_tunnel_end', + [-1424226342] = 'vb_ca_tunnel_slod', + [-738164532] = 'vb_ca_tunnel2_dtl', + [246457011] = 'vb_ca_tunnel2_dtl00', + [737336631] = 'vb_ca_tunnel2_dtl01', + [975993258] = 'vb_ca_tunnel2_dtl02', + [360001604] = 'vb_ca_tunnel2_dtl03', + [1806425264] = 'vb_ca_tunnel2_dtl04', + [621793145] = 'vb_ca_tunnel2_dtl05', + [859663316] = 'vb_ca_tunnel2_dtl06', + [1322033906] = 'vb_ca_tunnel2_dtl07', + [1205388816] = 'vb_ca_tunwater1', + [-207020622] = 'vb_ca_tunwater2', + [1285836707] = 'vb_ca_tunwater3', + [-1720839974] = 'vb_ca_tunwater3b', + [1450337087] = 'vb_ca_tunwater4', + [791778494] = 'vb_ca_tunwater5', + [-1474874227] = 'vb_ca_vb_hedgeshortlng_iref015', + [-109684918] = 'vb_ca_vb_hedgeshortlng_iref016', + [371921351] = 'vb_ca_vb_hedgeshortlng_iref026', + [726416393] = 'vb_ca_vb_hedgeshortlng_iref027', + [1441178847] = 'vb_ca_vb_hedgeshortlng', + [777684607] = 'vb_ca_vb_hedgeshortlng009', + [1982176836] = 'vb_ca_vb_hedgeshortlng010', + [-787157859] = 'vb_ca_vb_hedgeshortsht', + [-65057561] = 'vb_ca_vb_hedgeshortsht001', + [-218383712] = 'vb_ca_vb_hedgeshortsht002', + [-644249636] = 'vb_ca_vb_hedgeshortsht003', + [-999137906] = 'vb_ca_vb_hedgeshortsht004', + [1962622629] = 'vb_ca_vb_hedgeshortsht005', + [-1610640215] = 'vb_ca_vb_hedgeshortsht006', + [1828647717] = 'vb_ca_vb_hedgetalllng', + [-1894315091] = 'vb_ca_vb_hedgetallmed', + [-1405365794] = 'vb_ca_vb_hedgetallsml', + [-1513494044] = 'vb_ca_vb_hedgetallsml001', + [-1194881049] = 'vb_ca_vb_hedgetallsml002', + [-1208327270] = 'vb_ca_water1_lod', + [-741177925] = 'vb_ca_water1', + [-1938252802] = 'vb_ca_water3_lod', + [-1222849456] = 'vb_ca_water3', + [-1331577780] = 'vb_ca_water5_lod', + [-1961036763] = 'vb_ca_water6', + [837959581] = 'vb_emissive_build01_em', + [-661945058] = 'vb_emissive_build02_em', + [-818851182] = 'vb_emissive_build03_em', + [-2037208317] = 'vb_emissive_build04_em', + [-1455581833] = 'vb_emissive_emis_01', + [-1044016373] = 'vb_emissive_nw', + [-709417857] = 'vb_emissive_nwem', + [-1562585241] = 'vb_emissive_vb_01', + [-1416173349] = 'vb_emissive_vb_02', + [756428713] = 'vb_emissive_vb_03_01', + [380830435] = 'vb_emissive_vb_03_02', + [1779107469] = 'vb_emissive_vb_04_01', + [-1188322079] = 'vb_emissive_vb_04_02', + [-1524600570] = 'vb_emissive_vb_05_ema', + [929437075] = 'vb_emissive_vb_05_emb', + [-1992700693] = 'vb_emissive_vb_05_emb02', + [1950130925] = 'vb_emissive_vb_05_emb03', + [-701508832] = 'vb_emissive_vb_05_emc', + [-529781365] = 'vb_emissive_vb_05_emc2_', + [1257266645] = 'vb_emissive_vb_05_emc2_1', + [-389679028] = 'vb_emissive_vb_05_emd', + [341605225] = 'vb_emissive_vb_05_eme_01', + [-645528131] = 'vb_emissive_vb_05_eme_02', + [-418406192] = 'vb_emissive_vb_05_eme_03', + [-1121170166] = 'vb_emissive_vb_05_eme_04', + [-881661545] = 'vb_emissive_vb_05_eme_05', + [-1332562985] = 'vb_emissive_vb_05_eme_06', + [-2052170221] = 'vb_emissive_vb_05_eme_07', + [-1999477669] = 'vb_emissive_vb_05_eme_08', + [1173523733] = 'vb_emissive_vb_07_01', + [279781995] = 'vb_emissive_vb_07_02', + [333592948] = 'vb_emissive_vb_07', + [625204279] = 'vb_emissive_vb_08', + [123633258] = 'vb_emissive_vb_09_01', + [-251571792] = 'vb_emissive_vb_09_02', + [1990975747] = 'vb_emissive_vb_10_a', + [-101095524] = 'vb_emissive_vb_10_b', + [-1126549149] = 'vb_emissive_vb_17_b1', + [-146985432] = 'vb_emissive_vb_17_b2', + [1116772264] = 'vb_emissive_vb_17', + [1893430333] = 'vb_emissive_vb_18', + [2059675846] = 'vb_emissive_vb_21', + [488534831] = 'vb_emissive_vb_22_b1', + [239064434] = 'vb_emissive_vb_22_b2', + [-1001260] = 'vb_emissive_vb_22_b3', + [1754829694] = 'vb_emissive_vb_23_ema', + [-1653146310] = 'vb_emissive_vb_23_emb', + [1041903475] = 'vb_emissive_vb_24', + [1592881441] = 'vb_emissive_vb_25', + [1368774250] = 'vb_emissive_vb_26', + [-725951310] = 'vb_emissive_vb_27', + [-152887034] = 'vb_emissive_vb_28', + [267219560] = 'vb_emissive_vb_30_a', + [-1019684620] = 'vb_emissive_vb_30_b', + [-181879585] = 'vb_emissive_vb_30_c', + [1313337116] = 'vb_emissive_vb_30_d', + [1653560506] = 'vb_emissive_vb_31_a', + [1304374042] = 'vb_emissive_vb_31_b', + [-1633160851] = 'vb_emissive_vb_32', + [-324786261] = 'vb_emissive_vb_33_a', + [-542962263] = 'vb_emissive_vb_33_b', + [1366710027] = 'vb_emissive_vb_34', + [147768765] = 'vb_emissive_vb_38', + [-587813801] = 'vb_emissive_vb19_hd', + [1186977191] = 'vb_emissive_vb39emb001', + [1891289425] = 'vb_emissive_vbemissivea001', + [1909145084] = 'vb_lod_01_02_07_proxy', + [2084992038] = 'vb_lod_17_022_proxy', + [-1022871334] = 'vb_lod_emissive_5_proxy', + [274849181] = 'vb_lod_emissive_6_20_proxy', + [1310156197] = 'vb_lod_emissive_6_proxy', + [525356059] = 'vb_lod_emissive', + [-105476612] = 'vb_lod_rv_slod4', + [1972856407] = 'vb_lod_slod4', + [-286943698] = 'vb_rd_bdg_st01_d001', + [-48224673] = 'vb_rd_brdge_jl01', + [878588585] = 'vb_rd_brdge2_slod1', + [985323559] = 'vb_rd_bridge_01', + [1881162477] = 'vb_rd_bridge_02', + [-1568462918] = 'vb_rd_bridge_03', + [680742604] = 'vb_rd_bridgeshadowproxy_lod', + [-1488177337] = 'vb_rd_bridgeshadowproxy', + [-914615701] = 'vb_rd_cablemesh12647_thvy', + [-603107488] = 'vb_rd_cables_000', + [-976018684] = 'vb_rd_cables_001', + [-1142681818] = 'vb_rd_cables_002', + [-679492003] = 'vb_rd_cables_004', + [-1876183142] = 'vb_rd_cables_005', + [-2099864336] = 'vb_rd_cables_006', + [949717115] = 'vb_rd_cables_007', + [-1622911541] = 'vb_rd_cables_008', + [1538182817] = 'vb_rd_cables_009', + [394448450] = 'vb_rd_cables_010', + [578249771] = 'vb_rd_cables_011', + [816119918] = 'vb_rd_cables_012', + [1323252962] = 'vb_rd_cables_013', + [1579801463] = 'vb_rd_cables_014', + [1819080701] = 'vb_rd_cables_015', + [2042270360] = 'vb_rd_cables_016', + [-1716530558] = 'vb_rd_cables_018', + [-1253176898] = 'vb_rd_cables_019', + [588801077] = 'vb_rd_cables_020', + [-184940527] = 'vb_rd_cables_021', + [63514031] = 'vb_rd_cables_022', + [292995338] = 'vb_rd_cables_023', + [1063853270] = 'vb_rd_cables_024', + [1279473290] = 'vb_rd_cables_025', + [1525994477] = 'vb_rd_cables_026', + [1741155731] = 'vb_rd_cables_027', + [1986956000] = 'vb_rd_cables_028', + [-2015547971] = 'vb_rd_cables_029', + [-749880695] = 'vb_rd_cables_030', + [-1952535792] = 'vb_rd_cables_031', + [2036106892] = 'vb_rd_cables_032', + [-574468238] = 'vb_rd_cables_033', + [192752359] = 'vb_rd_cables_034', + [-1067543381] = 'vb_rd_cables_035', + [-299864018] = 'vb_rd_cables_036', + [-1843447831] = 'vb_rd_cables_037', + [1609061244] = 'vb_rd_cables_038', + [-1400705872] = 'vb_rd_cables_039', + [2110381320] = 'vb_rd_decal', + [-201572780] = 'vb_rd_details01', + [-499737911] = 'vb_rd_details02', + [1492355237] = 'vb_rd_details03', + [-1095807592] = 'vb_rd_dl', + [693281942] = 'vb_rd_hedge_01', + [1974484268] = 'vb_rd_hedge_02', + [-2091263873] = 'vb_rd_hedge_03', + [989743045] = 'vb_rd_hedge_04', + [46857864] = 'vb_rd_nbdg_02', + [1232060002] = 'vb_rd_nbg_det1', + [851611912] = 'vb_rd_nbg_det2', + [518613454] = 'vb_rd_nbg_det3', + [-1921576115] = 'vb_rd_nbg', + [-661053542] = 'vb_rd_road_r1a_o', + [1340520156] = 'vb_rd_road_r1a', + [-521641962] = 'vb_rd_road_r1b_o', + [-495854616] = 'vb_rd_road_r1b', + [973621969] = 'vb_rd_road_r1c_o', + [-742048113] = 'vb_rd_road_r1c', + [-445805730] = 'vb_rd_road_r1d_o', + [2106495523] = 'vb_rd_road_r1d', + [-54429926] = 'vb_rd_road_r1e_o', + [-280627824] = 'vb_rd_road_r1e', + [1981351165] = 'vb_rd_road_r1f_o', + [421218622] = 'vb_rd_road_r1f', + [-1783423929] = 'vb_rd_road_r2a_o', + [1189259920] = 'vb_rd_road_r2a', + [1520331576] = 'vb_rd_road_r2b_o', + [-237305726] = 'vb_rd_road_r2b', + [1559014003] = 'vb_rd_road_r2c_o', + [598074391] = 'vb_rd_road_r2c', + [716859847] = 'vb_rd_road_r2d_o', + [-589113718] = 'vb_rd_road_r2d', + [1733980315] = 'vb_rd_road_r2e_o', + [253836046] = 'vb_rd_road_r2e', + [1598151614] = 'vb_rd_road_r2f', + [-555351450] = 'vb_rd_road_r2g_o', + [-1930414310] = 'vb_rd_road_r2g', + [665885327] = 'vb_rd_road_r2h_o', + [866518151] = 'vb_rd_road_r2h', + [1453811527] = 'vb_rd_road_r2i_o', + [1635508274] = 'vb_rd_road_r2i', + [695192530] = 'vb_rd_road_r2j_o', + [369248576] = 'vb_rd_road_r2j', + [1138533620] = 'vb_rd_road_r2k', + [-1381127315] = 'vb_rd_road_r3a_o', + [1333378334] = 'vb_rd_road_r3a', + [-1582601118] = 'vb_rd_road_r3b_o', + [71050916] = 'vb_rd_road_r3b', + [-629595299] = 'vb_rd_road_r3c_o', + [806345635] = 'vb_rd_road_r3d_o', + [-388010013] = 'vb_rd_road_r3d', + [530457829] = 'vb_rd_road_r4a_o', + [-528391037] = 'vb_rd_road_r4a', + [-1758381041] = 'vb_rd_road_r4b_o', + [1228387826] = 'vb_rd_road_r4b', + [330451030] = 'vb_rd_road_r4c_o', + [384946535] = 'vb_rd_road_r4c', + [1649879789] = 'vb_rd_road_r4d_o', + [763657868] = 'vb_rd_road_r4d', + [-1855528934] = 'vb_rd_road_r4e_o', + [-63267847] = 'vb_rd_road_r4e', + [858096760] = 'vb_rd_road_r4f_o', + [2083003346] = 'vb_rd_road_r4f', + [658266741] = 'vb_rd_road_r4g_o', + [1316405360] = 'vb_rd_road_r4g', + [-1942042396] = 'vb_rd_road_r5a_o', + [220282670] = 'vb_rd_road_r5a', + [-2007209143] = 'vb_rd_road_r5b_o', + [1066837028] = 'vb_rd_road_r5b', + [1496611624] = 'vb_rd_road_r5c_o', + [-1908489869] = 'vb_rd_road_r5c', + [-1688180053] = 'vb_rd_road_r5d_o', + [1461769016] = 'vb_rd_road_r5d', + [-2085225675] = 'vb_rd_road_r5e_o', + [838240484] = 'vb_rd_road_r5e', + [-889530652] = 'vb_rd_road_r5f_o', + [-1987954694] = 'vb_rd_road_r5f', + [453586390] = 'vb_rd_road_r5g_o', + [-684436643] = 'vb_rd_road_r5g', + [-794604666] = 'vb_rd_road_r5h_o', + [-1393164575] = 'vb_rd_road_r5h', + [2061376178] = 'vb_rd_road_r5i', + [1061565765] = 'vb_rd_road_r6a_o', + [-1869413312] = 'vb_rd_road_r6a', + [1513806846] = 'vb_rd_road_r6b_o', + [503717676] = 'vb_rd_road_r6b', + [-692785448] = 'vb_rd_stp_01_d', + [1091678328] = 'vb_rd_stp_d', + [1203483876] = 'vb_rd_stp2_d', + [-48830244] = 'vb_rv__decal001', + [574763822] = 'vb_rv__decal002', + [-647224953] = 'vb_rv__decal003', + [-290829309] = 'vb_rv__decal004', + [695464094] = 'vb_rv_013', + [-1923314847] = 'vb_rv_013b', + [1925666355] = 'vb_rv_013c', + [168767965] = 'vb_rv_014', + [-987124960] = 'vb_rv_1_007', + [-1148535178] = 'vb_rv_1_1', + [-977218846] = 'vb_rv_1_2', + [1181570121] = 'vb_rv_1_3', + [-499282965] = 'vb_rv_1_4', + [-214159896] = 'vb_rv_1_5', + [-50445972] = 'vb_rv_1_6', + [-1570516282] = 'vb_rv_1_6b00', + [-1960172461] = 'vb_rv_1_6b01', + [1796668273] = 'vb_rv_airportrocks3', + [-1371335627] = 'vb_rv_b00', + [463924975] = 'vb_rv_b03', + [-408123653] = 'vb_rv_b04', + [-184999532] = 'vb_rv_b05', + [1120845118] = 'vb_rv_b06', + [1350457501] = 'vb_rv_b07', + [-1677234254] = 'vb_rv_b08', + [700582693] = 'vb_rv_b09', + [-897097251] = 'vb_rv_b10', + [-1094628783] = 'vb_rv_b11', + [-1380210618] = 'vb_rv_b12', + [-1869862975] = 'vb_rv_b12b', + [-1630485430] = 'vb_rv_b12c', + [-1610740533] = 'vb_rv_b13', + [-1981751151] = 'vb_rv_b14', + [1955378665] = 'vb_rv_b16', + [834516690] = 'vb_rv_bt1', + [-1725323228] = 'vb_rv_clutter_00', + [1316768783] = 'vb_rv_clutter_020', + [1605299828] = 'vb_rv_clutter_021', + [1841793697] = 'vb_rv_clutter_022', + [-817967730] = 'vb_rv_clutter_027', + [-594450381] = 'vb_rv_clutter_028', + [-1820352976] = 'vb_rv_clutter_12', + [327556671] = 'vb_rv_clutter_19', + [1919459016] = 'vb_rv_dc_00', + [-2145371593] = 'vb_rv_dc_01', + [-765600059] = 'vb_rv_dc_02', + [1691026337] = 'vb_rv_dc_03', + [-1358391269] = 'vb_rv_dc_04', + [-514753364] = 'vb_rv_dc_05', + [156585139] = 'vb_rv_dc_06', + [-1123273694] = 'vb_rv_dc_07', + [-422443091] = 'vb_rv_dc_08', + [412183339] = 'vb_rv_dc_09', + [-844900247] = 'vb_rv_dc_10', + [442860035] = 'vb_rv_end00', + [1482030563] = 'vb_rv_end01', + [1176721790] = 'vb_rv_end02', + [274558435] = 'vb_rv_end03', + [-38090594] = 'vb_rv_end04', + [737420564] = 'vb_rv_end05', + [439779737] = 'vb_rv_end06', + [-1703149022] = 'vb_rv_end07', + [-658669916] = 'vb_rv_end08', + [-975513377] = 'vb_rv_end09', + [2012560953] = 'vb_rv_end10', + [-2101390387] = 'vb_rv_end11', + [-1803946174] = 'vb_rv_end12', + [710845185] = 'vb_rv_end13', + [956252226] = 'vb_rv_end14', + [1264444671] = 'vb_rv_end15', + [1972779375] = 'vb_rv_end16', + [-137708074] = 'vb_rv_end17', + [27644300] = 'vb_rv_end18', + [340817633] = 'vb_rv_end19', + [1064816231] = 'vb_rv_end20', + [1245242345] = 'vb_rv_end21', + [1543145324] = 'vb_rv_end22', + [-112115189] = 'vb_rv_end23', + [195487414] = 'vb_rv_end24', + [650845442] = 'vb_rv_end25', + [823734686] = 'vb_rv_end26', + [-1297632071] = 'vb_rv_end27', + [-839324837] = 'vb_rv_end28', + [-533098532] = 'vb_rv_end29', + [2113562619] = 'vb_rv_end30', + [1797243462] = 'vb_rv_end31', + [-1727259110] = 'vb_rv_end32', + [-1424965097] = 'vb_rv_end33', + [1489902999] = 'vb_rv_end34', + [-1885664468] = 'vb_rv_end35', + [-1119590786] = 'vb_rv_end36', + [611366109] = 'vb_rv_end37', + [305336418] = 'vb_rv_end38', + [-1998717514] = 'vb_rv_end39', + [-1966013764] = 'vb_rv_end40', + [-429278740] = 'vb_rv_end41', + [-1233135079] = 'vb_rv_end42', + [1940673651] = 'vb_rv_end43', + [-2048755489] = 'vb_rv_end44', + [-1063358894] = 'vb_rv_end45', + [-1553124368] = 'vb_rv_end46', + [714392133] = 'vb_rv_end47', + [1019635368] = 'vb_rv_end48', + [1483382256] = 'vb_rv_end49', + [-84044173] = 'vb_rv_end50', + [-665829264] = 'vb_rv_move_00', + [-359209731] = 'vb_rv_move_01', + [2122421373] = 'vb_rv_move_019', + [24486467] = 'vb_rv_move_029', + [993925479] = 'vb_rv_move_030', + [1757508717] = 'vb_rv_move_031', + [300631746] = 'vb_rv_move_032', + [1295367510] = 'vb_rv_move_033', + [-405081434] = 'vb_rv_move_034', + [-1183640105] = 'vb_rv_move_037', + [-1916130463] = 'vb_rv_move_04', + [1297464382] = 'vb_rv_move_040', + [999299251] = 'vb_rv_move_041', + [-427135311] = 'vb_rv_move_045', + [-305922792] = 'vb_rv_move_046', + [-1609314316] = 'vb_rv_move_05', + [-463448720] = 'vb_rv_nw2_00', + [-511979617] = 'vb_rv_nw2_04', + [283160168] = 'vb_rv_nw2_05', + [-15267115] = 'vb_rv_nw2_06', + [608523569] = 'vb_rv_nw2_07', + [1533199753] = 'vb_rv_pipe_040', + [-1481187768] = 'vb_rv_pipe_042', + [-1967635101] = 'vb_rv_pipe_06', + [-681353832] = 'vb_rv_pipe_15', + [423189419] = 'vb_rv_pipe_23', + [-581211188] = 'vb_rv_pipe_38', + [1992045517] = 'vb_rv_port_d_00', + [1820729185] = 'vb_rv_port_d_01', + [-1823478540] = 'vb_rv_port_d_02', + [-2132654055] = 'vb_rv_port_d_03', + [1592853551] = 'vb_rv_port_d_04', + [-831036614] = 'vb_rv_port_d_05', + [-1664942126] = 'vb_rv_port_d_06', + [-1978049921] = 'vb_rv_port_d_07', + [-1475176847] = 'vb_rv_port_d_08', + [374665972] = 'vb_rv_port_d_09', + [-649594961] = 'vb_rv_port_d_10', + [-955100348] = 'vb_rv_port_d_11', + [-903434833] = 'vb_rv_port_d_11b', + [1692176166] = 'vb_rv_port_d_12', + [-828331682] = 'vb_rv_port_d_12b', + [-1596535349] = 'vb_rv_port_d_12c', + [-1253247305] = 'vb_rv_port_d_12d', + [-2140649923] = 'vb_rv_port_d_14', + [-763399856] = 'vb_rv_portb_00', + [-992684549] = 'vb_rv_portb_01', + [1578043481] = 'vb_rv_portb_02', + [1943876597] = 'vb_rv_portb_03', + [1164597008] = 'vb_rv_portb_04', + [1432319738] = 'vb_rv_portb_05', + [694230782] = 'vb_rv_portb_06', + [-73219202] = 'vb_rv_portb_07', + [232613875] = 'vb_rv_portb_08', + [-600603488] = 'vb_rv_portb_09', + [310898164] = 'vb_rv_portb_10', + [-1606579871] = 'vb_rv_portb_11', + [-905323271] = 'vb_rv_portb_13', + [-672499526] = 'vb_rv_portb_14', + [1735235518] = 'vb_rv_portb_15', + [-2089955394] = 'vb_rv_portb_16', + [-1860146397] = 'vb_rv_portb_17', + [520521457] = 'vb_rv_portb_18', + [750002764] = 'vb_rv_portb_19', + [-204589999] = 'vb_rv_portb_20', + [408616298] = 'vb_rv_portb_22', + [-1876631038] = 'vb_rv_post_002', + [337880992] = 'vb_rv_post_1', + [451823973] = 'vb_rv_props_combo01_slod', + [-733528416] = 'vb_rv_props_combo0101_slod', + [-1165968193] = 'vb_rv_props_combo02_slod', + [1958640602] = 'vb_rv_props_combo03_slod', + [-870802367] = 'vb_rv_seabed_69_beach', + [1269934236] = 'vb_rv_seabed_70a_beach', + [593831503] = 'vb_rv_seabed_70b_beach', + [-1858516849] = 'vb_rv_seabed_71a_beach', + [813031911] = 'vb_rv_seabed_71b_beach', + [-1527921954] = 'vb_rv_seabed_b_01', + [257890243] = 'vb_rv_seabed_b_02', + [1592439530] = 'vb_rv_seabed_d1', + [1921491362] = 'vb_rv_seabed_d10', + [1146144053] = 'vb_rv_seabed_d11', + [-1777112903] = 'vb_rv_seabed_d12', + [1741917242] = 'vb_rv_seabed_d13', + [998257556] = 'vb_rv_seabed_d14', + [224876387] = 'vb_rv_seabed_d15', + [1593703055] = 'vb_rv_seabed_d16', + [817896980] = 'vb_rv_seabed_d17', + [-956249449] = 'vb_rv_seabed_d18', + [-655790488] = 'vb_rv_seabed_d19', + [-1792598170] = 'vb_rv_seabed_d2', + [-1584562523] = 'vb_rv_seabed_d20', + [-1960357415] = 'vb_rv_seabed_d21', + [-972339296] = 'vb_rv_seabed_d22', + [1874565890] = 'vb_rv_seabed_d23', + [-1601766272] = 'vb_rv_seabed_d24', + [-1897572035] = 'vb_rv_seabed_d25', + [2084844539] = 'vb_rv_seabed_d26', + [1786351718] = 'vb_rv_seabed_d27', + [1510305662] = 'vb_rv_seabed_d28', + [1208994707] = 'vb_rv_seabed_d29', + [-1017447475] = 'vb_rv_seabed_d3', + [1581676272] = 'vb_rv_seabed_d30', + [1272435219] = 'vb_rv_seabed_d31', + [854597700] = 'vb_rv_seabed_d32', + [694357290] = 'vb_rv_seabed_d33', + [-1686310580] = 'vb_rv_seabed_d34', + [-1857430298] = 'vb_rv_seabed_d35', + [2045718065] = 'vb_rv_seabed_d36', + [1839535517] = 'vb_rv_seabed_d37', + [1182091070] = 'vb_rv_seabed_d38', + [-194501851] = 'vb_rv_seabed_d39', + [-669355390] = 'vb_rv_seabed_d40', + [-1442015641] = 'vb_rv_seabed_d41', + [-1264276585] = 'vb_rv_seabed_d42', + [-2047750606] = 'vb_rv_seabed_d43', + [-1764875596] = 'vb_rv_seabed_d5', + [-1128285523] = 'vb_rv_seabed_d51', + [-1424386207] = 'vb_rv_seabed_d52', + [-1749159766] = 'vb_rv_seabed_d53', + [94620788] = 'vb_rv_seabed_d54', + [-194827789] = 'vb_rv_seabed_d55', + [-501152401] = 'vb_rv_seabed_d56', + [-756586756] = 'vb_rv_seabed_d57', + [1529608039] = 'vb_rv_seabed_d58', + [-981893960] = 'vb_rv_seabed_d63b', + [-1744231976] = 'vb_rv_seabed_d63c', + [1857244993] = 'vb_rv_seabed_d63x', + [2094787474] = 'vb_rv_seabed_d63y', + [-519457808] = 'vb_rv_seabed_d63z', + [-989591546] = 'vb_rv_seabed_d63zy', + [-1337384800] = 'vb_rv_seabed_d66', + [-1645610014] = 'vb_rv_seabed_d67', + [502299629] = 'vb_rv_seabed_d68', + [-1129400257] = 'vb_rv_seabed_d70', + [-800759956] = 'vb_rv_seabed_d71', + [-763337758] = 'vb_rv_seabed_d72', + [-474872251] = 'vb_rv_seabed_d73', + [2034479466] = 'vb_rv_seabed_d74', + [-1982377327] = 'vb_rv_seabed_d75', + [-1666877395] = 'vb_rv_seabed_d76', + [-1352917606] = 'vb_rv_seabed_d77', + [809475939] = 'vb_rv_seabed_d78', + [1056043777] = 'vb_rv_seabed_d8', + [292296694] = 'vb_rv_seabed_d9', + [-1203021894] = 'vb_rv_seabed_new21', + [-242660811] = 'vb_rv_seabed_new25', + [-42444037] = 'vb_rv_seabed_new27_', + [-1911749826] = 'vb_rv_seabed_new27', + [1443137438] = 'vb_rv_seabed_new49', + [983460506] = 'vb_rv_seabed_new56', + [167283023] = 'vb_rv_seabed_new57', + [1886344763] = 'vb_rv_seabed_new58', + [2103581983] = 'vb_rv_seabed_new6', + [-1126076862] = 'vb_rv_seabed_new69', + [-475746561] = 'vb_rv_seabed_new70a_dcl', + [1972209559] = 'vb_rv_seabed_new70a', + [-1647454185] = 'vb_rv_seabed_new70b', + [1579815687] = 'vb_rv_seabed_new71a_dcl', + [-1451202140] = 'vb_rv_seabed_new71a', + [1615021083] = 'vb_rv_seabed_new71b_dcl', + [1340257894] = 'vb_rv_seabed_new71b', + [-782287322] = 'vb_rv_seabed_new72a_dcl', + [-1476629756] = 'vb_rv_seabed_new72a', + [-1722364487] = 'vb_rv_seabed_new72b', + [-636498414] = 'vb_rv_seabed_new73a', + [-389059695] = 'vb_rv_seabed_new73b', + [1980794389] = 'vb_rv_seabed_new73c', + [1281657124] = 'vb_rv_seaweed_01', + [1646769322] = 'vb_rv_seaweed_02', + [-1813278486] = 'vb_rv_uw_dec_00', + [-1527041271] = 'vb_rv_uw_dec_01', + [-1229662596] = 'vb_rv_uw_dec_02', + [-913310670] = 'vb_rv_uw_dec_03', + [1532075959] = 'vb_rv_uw_dec_04', + [1616193982] = 'vb_rv_uw_dec_05', + [1912327435] = 'vb_rv_uw_dec_06', + [351605499] = 'vb_rv_uw_dec_07', + [925783917] = 'vb_rv_uw_dec_09', + [938727916] = 'vb_rv_uw_dec_10', + [-412501799] = 'vb_rv_uw_dec_11', + [-625336454] = 'vb_rv_uw_dec_12', + [-319732760] = 'vb_rv_uw_dec_13', + [-1638259009] = 'vb_rv_uw_dec_14', + [-1814392384] = 'vb_rv_uw_dec_15', + [-980650717] = 'vb_rv_uw_dec_16', + [-1218815809] = 'vb_rv_uw_dec_17', + [1763589192] = 'vb_rv_uw_dec_18', + [1496620149] = 'vb_rv_uw_dec_19', + [-1629117302] = 'vb_rv_uw_dec_20', + [-189214673] = 'vb_rv_uw_dec_21', + [617013633] = 'vb_rv_uw1_03', + [-1231452892] = 'vb_rv_uw1_04', + [21109368] = 'vb_rv_uw1_05', + [334020549] = 'vb_rv_uw1_06', + [-309103849] = 'vb_rv_uw1_07', + [2085621906] = 'vb_rv_uw1_08', + [-705444904] = 'vb_rv_uw1_09', + [-929389182] = 'vb_rv_uw1_10', + [-1786429608] = 'vb_rv_uw1_11', + [-465871677] = 'vb_rv_uw1_12', + [-1323239793] = 'vb_rv_uw1_13', + [2128417288] = 'vb_rv_uw1_14', + [1274653766] = 'vb_rv_uw1_15', + [-1703687883] = 'vb_rv_uw1_16', + [1751344409] = 'vb_rv_uw1_17', + [916816286] = 'vb_rv_uw1_18', + [-1588865379] = 'vb_rv_uw1_19', + [-226592079] = 'vb_rv_uw1_20', + [-1415484168] = 'vb_rv_uw1_21', + [1978859932] = 'vb_rv_uw1_22', + [1357461389] = 'vb_rv_uw1_23', + [-1691694069] = 'vb_rv_uw1_24', + [1953365654] = 'vb_rv_uw1_25', + [1050907394] = 'vb_rv_uw1_26', + [306068024] = 'vb_rv_uw1_27', + [1685151389] = 'vb_rv_uw1_28', + [107227559] = 'vb_rv_vbrv_barge', + [1809962610] = 'vb_rv_wrk1', + [-1673356438] = 'velum', + [1077420264] = 'velum2', + [1102544804] = 'verlierer2', + [1341619767] = 'vestra', + [1284556934] = 'vfx_it1_00', + [1425627487] = 'vfx_it1_01', + [1730346418] = 'vfx_it1_02', + [694846018] = 'vfx_it1_03', + [1000416943] = 'vfx_it1_04', + [71055334] = 'vfx_it1_05', + [493578820] = 'vfx_it1_06', + [-531173360] = 'vfx_it1_07', + [-235695275] = 'vfx_it1_08', + [-1164794744] = 'vfx_it1_09', + [-1246716952] = 'vfx_it1_10', + [-489490900] = 'vfx_it1_11', + [-786935113] = 'vfx_it1_12', + [153699084] = 'vfx_it1_13', + [-18862470] = 'vfx_it1_14', + [867571749] = 'vfx_it1_15', + [461498301] = 'vfx_it1_16', + [1348260210] = 'vfx_it1_17', + [1176354036] = 'vfx_it1_18', + [2130816703] = 'vfx_it1_19', + [264685611] = 'vfx_it1_20', + [-1278754784] = 'vfx_it2_00', + [-1417564268] = 'vfx_it2_01', + [-1744107353] = 'vfx_it2_02', + [-27339435] = 'vfx_it2_03', + [-2108760785] = 'vfx_it2_04', + [1888237994] = 'vfx_it2_05', + [1629461201] = 'vfx_it2_06', + [-950311097] = 'vfx_it2_07', + [1265987453] = 'vfx_it2_08', + [967756784] = 'vfx_it2_09', + [192671283] = 'vfx_it2_10', + [-303451377] = 'vfx_it2_11', + [-830671842] = 'vfx_it2_12', + [-1055008416] = 'vfx_it2_13', + [-1276100859] = 'vfx_it2_14', + [-1799618403] = 'vfx_it2_15', + [361529940] = 'vfx_it2_16', + [-2013862125] = 'vfx_it2_17', + [2043464383] = 'vfx_it2_18', + [1807691428] = 'vfx_it2_19', + [1849656877] = 'vfx_it2_20', + [-596254056] = 'vfx_it2_21', + [-758329530] = 'vfx_it2_22', + [-1057281117] = 'vfx_it2_23', + [1068280060] = 'vfx_it2_24', + [922195858] = 'vfx_it2_25', + [-1547439819] = 'vfx_it2_26', + [-1711940199] = 'vfx_it2_27', + [829066340] = 'vfx_it2_28', + [1001693432] = 'vfx_it2_29', + [-40164382] = 'vfx_it2_30', + [257214293] = 'vfx_it2_31', + [1917160757] = 'vfx_it2_32', + [-2099106194] = 'vfx_it2_33', + [-976899020] = 'vfx_it2_34', + [-531764924] = 'vfx_it2_35', + [769164384] = 'vfx_it2_36', + [1204336704] = 'vfx_it2_37', + [-1821454457] = 'vfx_it2_38', + [-1656757463] = 'vfx_it2_39', + [-1457198910] = 'vfx_it3_00', + [1000246711] = 'vfx_it3_01', + [522605771] = 'vfx_it3_02', + [714828725] = 'vfx_it3_03', + [63479312] = 'vfx_it3_04', + [235319948] = 'vfx_it3_05', + [777679659] = 'vfx_it3_06', + [-1073015154] = 'vfx_it3_07', + [301775472] = 'vfx_it3_08', + [565664229] = 'vfx_it3_09', + [-842648184] = 'vfx_it3_11', + [-2014664350] = 'vfx_it3_12', + [2108724462] = 'vfx_it3_13', + [-1553571751] = 'vfx_it3_14', + [-1694281837] = 'vfx_it3_15', + [-811583244] = 'vfx_it3_16', + [634971492] = 'vfx_it3_17', + [-231899634] = 'vfx_it3_18', + [-527639859] = 'vfx_it3_19', + [-1093593518] = 'vfx_it3_20', + [748450279] = 'vfx_it3_21', + [1515113803] = 'vfx_it3_22', + [1207969966] = 'vfx_it3_23', + [-174685220] = 'vfx_it3_24', + [1677058201] = 'vfx_it3_25', + [1147806074] = 'vfx_it3_26', + [991956710] = 'vfx_it3_27', + [1873868807] = 'vfx_it3_28', + [1451869625] = 'vfx_it3_29', + [-1021931916] = 'vfx_it3_30', + [852815347] = 'vfx_it3_31', + [923137625] = 'vfx_it3_32', + [-983330030] = 'vfx_it3_33', + [-662587058] = 'vfx_it3_34', + [-381723959] = 'vfx_it3_35', + [2081390699] = 'vfx_it3_36', + [-1832210975] = 'vfx_it3_37', + [-1586214092] = 'vfx_it3_38', + [-1237945160] = 'vfx_it3_39', + [-1773620899] = 'vfx_it3_40', + [-418983208] = 'vfx_it3_41', + [-915388655] = 'vfx_rnd_wave_01', + [2007245690] = 'vfx_rnd_wave_02', + [-1387098410] = 'vfx_rnd_wave_03', + [-1489275558] = 'vfx_wall_wave_01', + [949524510] = 'vfx_wall_wave_02', + [1917946759] = 'vfx_wall_wave_03', + [-825837129] = 'vigero', + [-1353081087] = 'vindicator', + [-498054846] = 'virgo', + [-899509638] = 'virgo2', + [16646064] = 'virgo3', + [-1720513558] = 'vodkarow', + [-1845487887] = 'volatus', + [-1622444098] = 'voltic', + [989294410] = 'voltic2', + [2006667053] = 'voodoo', + [523724515] = 'voodoo2', + [-609625092] = 'vortex', + [-259706355] = 'w_am_baseball_hi', + [-383950123] = 'w_am_baseball', + [1807506906] = 'w_am_brfcase', + [-1400434704] = 'w_am_case', + [-1073612701] = 'w_am_digiscanner_hi', + [520317490] = 'w_am_digiscanner', + [-171327159] = 'w_am_fire_exting', + [-1539617090] = 'w_am_flare_hi', + [-1564193152] = 'w_am_flare', + [242383520] = 'w_am_jerrycan', + [-833920933] = 'w_ar_advancedrifle_hi', + [-1573551058] = 'w_ar_advancedrifle_mag1', + [-1865686693] = 'w_ar_advancedrifle_mag2', + [-1707584974] = 'w_ar_advancedrifle', + [1678804838] = 'w_ar_assaultrifle_hi', + [1044133150] = 'w_ar_assaultrifle_mag1', + [-1072154412] = 'w_ar_assaultrifle_mag2', + [273925117] = 'w_ar_assaultrifle', + [-1565195963] = 'w_ar_bullpuprifle_mag1', + [-1258838582] = 'w_ar_bullpuprifle_mag2', + [-1288559573] = 'w_ar_bullpuprifle', + [104716717] = 'w_ar_carbinerifle_hi', + [-1142562815] = 'w_ar_carbinerifle_mag1', + [1370360727] = 'w_ar_carbinerifle_mag2', + [1026431720] = 'w_ar_carbinerifle', + [1652015642] = 'w_ar_musket', + [-1439230643] = 'w_ar_railgun_mag1', + [-1876506235] = 'w_ar_railgun', + [-177292685] = 'w_ar_specialcarbine_mag1', + [-408150290] = 'w_ar_specialcarbine_mag2', + [-1745643757] = 'w_ar_specialcarbine', + [-213027648] = 'w_at_ar_afgrip_hi', + [-549787707] = 'w_at_ar_afgrip', + [2035575766] = 'w_at_ar_flsh_hi', + [-1572366268] = 'w_at_ar_flsh', + [-1166471211] = 'w_at_ar_supp_02_hi', + [-433207992] = 'w_at_ar_supp_02', + [-2012934461] = 'w_at_ar_supp_hi', + [2127522061] = 'w_at_ar_supp', + [-1092366761] = 'w_at_pi_flsh_hi', + [1130912089] = 'w_at_pi_flsh', + [-1333942516] = 'w_at_pi_supp_2', + [224713395] = 'w_at_pi_supp_hi', + [-1025213666] = 'w_at_pi_supp', + [412900178] = 'w_at_railcover_01_hi', + [1508551686] = 'w_at_railcover_01', + [-386727222] = 'w_at_scope_large_hi', + [902783233] = 'w_at_scope_large', + [1234627046] = 'w_at_scope_macro_2', + [1324672924] = 'w_at_scope_macro_hi', + [-1148808407] = 'w_at_scope_macro', + [-725521582] = 'w_at_scope_max_hi', + [514930793] = 'w_at_scope_max', + [-1974675239] = 'w_at_scope_medium_hi', + [-98833] = 'w_at_scope_medium', + [1517447672] = 'w_at_scope_small_2', + [-132507543] = 'w_at_scope_small_hi', + [-1089070097] = 'w_at_scope_small', + [-1376365801] = 'w_at_sr_supp_2', + [-1982547489] = 'w_at_sr_supp_hi', + [985886684] = 'w_at_sr_supp', + [1876445962] = 'w_ex_apmine', + [1090792329] = 'w_ex_birdshat', + [-1809859709] = 'w_ex_grenadefrag_hi', + [290600267] = 'w_ex_grenadefrag', + [1591549914] = 'w_ex_grenadesmoke', + [-1623789737] = 'w_ex_molotov_hi', + [-880609331] = 'w_ex_molotov', + [-329092498] = 'w_ex_pe_hi', + [-1110203649] = 'w_ex_pe', + [1297482736] = 'w_ex_snowball', + [1559922313] = 'w_lr_40mm_pu', + [1948242884] = 'w_lr_40mm', + [439782367] = 'w_lr_firework_rocket', + [491091384] = 'w_lr_firework', + [-600317048] = 'w_lr_grenadelauncher_hi', + [-606683246] = 'w_lr_grenadelauncher', + [-1146260322] = 'w_lr_homing_rocket', + [1901887007] = 'w_lr_homing', + [-58701374] = 'w_lr_rpg_hi', + [-547018963] = 'w_lr_rpg_rocket_pu', + [-1707997257] = 'w_lr_rpg_rocket', + [-218858073] = 'w_lr_rpg', + [32653987] = 'w_me_bat', + [1150762982] = 'w_me_bottle', + [1862268168] = 'w_me_crowbar', + [601713565] = 'w_me_dagger', + [-580196246] = 'w_me_gclub', + [64104227] = 'w_me_hammer', + [1653948529] = 'w_me_hatchet', + [-1982443329] = 'w_me_knife_01', + [-1634978236] = 'w_me_nightstick', + [-703091127] = 'w_mg_combatmg_hi', + [-548430598] = 'w_mg_combatmg_mag1', + [-377179804] = 'w_mg_combatmg_mag2', + [-739394447] = 'w_mg_combatmg', + [-261565305] = 'w_mg_mg_hi', + [342630364] = 'w_mg_mg_mag1', + [1494231331] = 'w_mg_mg_mag2', + [-2056364402] = 'w_mg_mg', + [309921664] = 'w_mg_minigun_hi', + [422658457] = 'w_mg_minigun', + [-1106867781] = 'w_pi_appistol_hi', + [1789204922] = 'w_pi_appistol_mag1', + [-1670447795] = 'w_pi_appistol_mag2', + [905830540] = 'w_pi_appistol', + [554601322] = 'w_pi_combatpistol_hi', + [1099734388] = 'w_pi_combatpistol_mag1', + [1256108056] = 'w_pi_combatpistol_mag2', + [403140669] = 'w_pi_combatpistol', + [576500243] = 'w_pi_flaregun_mag1', + [665801196] = 'w_pi_flaregun_shell', + [1349014803] = 'w_pi_flaregun', + [-642859694] = 'w_pi_heavypistol_mag1', + [-404137529] = 'w_pi_heavypistol_mag2', + [1927398017] = 'w_pi_heavypistol', + [1182503934] = 'w_pi_pistol_hi', + [-1899196150] = 'w_pi_pistol_mag1', + [-1592052313] = 'w_pi_pistol_mag2', + [1467525553] = 'w_pi_pistol', + [-72482195] = 'w_pi_pistol50_hi', + [874805497] = 'w_pi_pistol50_mag1', + [460539799] = 'w_pi_pistol50_mag2', + [-178484015] = 'w_pi_pistol50', + [-902398285] = 'w_pi_sns_pistol_mag1', + [-1202660632] = 'w_pi_sns_pistol_mag2', + [339962010] = 'w_pi_sns_pistol', + [-1207333876] = 'w_pi_stungun_hi', + [1609356763] = 'w_pi_stungun', + [2068113221] = 'w_pi_vintage_pistol_mag1', + [-1786569791] = 'w_pi_vintage_pistol_mag2', + [-1124046276] = 'w_pi_vintage_pistol', + [-2076813088] = 'w_sb_assaultsmg_hi', + [-312532388] = 'w_sb_assaultsmg_mag1', + [-546011513] = 'w_sb_assaultsmg_mag2', + [-473574177] = 'w_sb_assaultsmg', + [-710679252] = 'w_sb_gusenberg_mag1', + [1691386759] = 'w_sb_gusenberg_mag2', + [574348740] = 'w_sb_gusenberg', + [-1801400717] = 'w_sb_microsmg_hi', + [-31119053] = 'w_sb_microsmg_mag1', + [-272135048] = 'w_sb_microsmg_mag2', + [-1056713654] = 'w_sb_microsmg', + [461438061] = 'w_sb_smg_hi', + [-827974527] = 'w_sb_smg_mag1', + [666848946] = 'w_sb_smg_mag2', + [-500057996] = 'w_sb_smg', + [-460448652] = 'w_sg_assaultshotgun_hi', + [-1793660294] = 'w_sg_assaultshotgun_mag1', + [-1411835906] = 'w_sg_assaultshotgun_mag2', + [1255410010] = 'w_sg_assaultshotgun', + [1265592260] = 'w_sg_bullpupshotgun_hi', + [-1598212834] = 'w_sg_bullpupshotgun', + [-1253076872] = 'w_sg_heavyshotgun_mag1', + [-992039018] = 'w_sg_heavyshotgun_mag2', + [-1209868881] = 'w_sg_heavyshotgun', + [607897242] = 'w_sg_pumpshotgun_hi', + [689760839] = 'w_sg_pumpshotgun', + [2075991356] = 'w_sg_sawnoff_hi', + [-675841386] = 'w_sg_sawnoff', + [-250831757] = 'w_sr_heavysniper_hi', + [-850235586] = 'w_sr_heavysniper_mag1', + [-746966080] = 'w_sr_heavysniper', + [-879932022] = 'w_sr_marksmanrifle_mag1', + [-707567082] = 'w_sr_marksmanrifle_mag2', + [-1711248638] = 'w_sr_marksmanrifle', + [-807686903] = 'w_sr_sniperrifle_hi', + [2095405400] = 'w_sr_sniperrifle_mag1', + [346403307] = 'w_sr_sniperrifle', + [1373123368] = 'warrener', + [1777363799] = 'washington', + [-1912017790] = 'wastelander', + [519074619] = 'watercooler_bottle001', + [2010064375] = 'wheel_bkf_01', + [-1401718549] = 'wheel_bkf_01w', + [1702855000] = 'wheel_bkf_02', + [-1487539624] = 'wheel_bkf_02w', + [-601854308] = 'wheel_bkf_03', + [-669986027] = 'wheel_bkf_03w', + [-315191116] = 'wheel_bkf_04', + [2010843439] = 'wheel_bkf_04w', + [1681096384] = 'wheel_bkf_05', + [-57109064] = 'wheel_bkf_05w', + [1373821471] = 'wheel_bkf_06', + [-33155141] = 'wheel_bkf_06w', + [681674653] = 'wheel_bkf_07', + [-20964245] = 'wheel_bkf_07w', + [-1409446333] = 'wheel_bkf_08', + [339098863] = 'wheel_bkf_08w', + [440920790] = 'wheel_bkf_09', + [-665204513] = 'wheel_bkf_09w', + [662111904] = 'wheel_bkf_10', + [-215018164] = 'wheel_bkf_10w', + [-1858086352] = 'wheel_bkf_11', + [-2071513454] = 'wheel_bkf_11w', + [-2108015515] = 'wheel_bkf_12', + [1983389068] = 'wheel_bkf_12w', + [1845695415] = 'wheel_bkf_13', + [-1884467378] = 'wheel_bkf_13w', + [-967233645] = 'wheel_bkr_01', + [-1995101519] = 'wheel_bkr_01w', + [-1272607956] = 'wheel_bkr_02', + [-1143762615] = 'wheel_bkr_02w', + [1996099798] = 'wheel_bkr_03', + [304102017] = 'wheel_bkr_03w', + [-1773121662] = 'wheel_bkr_04', + [-146668055] = 'wheel_bkr_04w', + [1528518937] = 'wheel_bkr_05', + [940573736] = 'wheel_bkr_05w', + [-1992379041] = 'wheel_bkr_06', + [635003091] = 'wheel_bkr_06w', + [425022874] = 'wheel_bkr_07', + [-1155865412] = 'wheel_bkr_07w', + [1189687489] = 'wheel_bkr_08', + [1916162560] = 'wheel_bkr_08w', + [-270597458] = 'wheel_bkr_09', + [1232994128] = 'wheel_bkr_09w', + [-1692805759] = 'wheel_bkr_10', + [272821082] = 'wheel_bkr_10w', + [1353531669] = 'wheel_bkr_11', + [617628616] = 'wheel_bkr_11w', + [1718054025] = 'wheel_bkr_12', + [-567855777] = 'wheel_bkr_12w', + [765098736] = 'wheel_bkr_13', + [104270038] = 'wheel_bkr_13w', + [-668546108] = 'wheel_drft_01', + [633235711] = 'wheel_drft_01w', + [2098664870] = 'wheel_drft_02', + [841713021] = 'wheel_drft_02w', + [-1435307939] = 'wheel_drft_03', + [-1085301121] = 'wheel_drft_03w', + [-1628645039] = 'wheel_drft_04', + [885523522] = 'wheel_drft_04w', + [1131553365] = 'wheel_drft_05', + [-22178126] = 'wheel_drft_05w', + [976490457] = 'wheel_drft_06', + [1170319481] = 'wheel_drft_06w', + [1743579978] = 'wheel_drft_07', + [1104486204] = 'wheel_drft_07w', + [1475038023] = 'wheel_drft_08', + [1715069549] = 'wheel_drft_08w', + [-54881049] = 'wheel_drft_09', + [889814705] = 'wheel_drft_09w', + [1317221055] = 'wheel_drft_10', + [-1984806617] = 'wheel_drft_10w', + [1152720675] = 'wheel_drft_11', + [-1497138071] = 'wheel_drft_11w', + [-1427281002] = 'wheel_drft_12', + [170868663] = 'wheel_drft_12w', + [-1617537816] = 'wheel_drft_13', + [192791412] = 'wheel_drft_13w', + [-1930973301] = 'wheel_drft_14', + [-853457980] = 'wheel_drft_14w', + [2058685222] = 'wheel_drft_15', + [-1145986555] = 'wheel_drft_15w', + [-395123040] = 'wheel_drft_16', + [1313850359] = 'wheel_drft_16w', + [-699841971] = 'wheel_drft_17', + [-590061030] = 'wheel_drft_17w', + [539317760] = 'wheel_drft_18', + [-922962237] = 'wheel_drft_18w', + [-739459692] = 'wheel_drft_19', + [-541891248] = 'wheel_drft_19w', + [-496838304] = 'wheel_drft_20', + [187126008] = 'wheel_drft_20w', + [-2013911928] = 'wheel_drft_21', + [835395423] = 'wheel_drft_21w', + [-983720106] = 'wheel_drft_22', + [-824158629] = 'wheel_drft_22w', + [-209486943] = 'wheel_drft_23', + [1725237094] = 'wheel_drft_23w', + [763522970] = 'wheel_drft_24', + [-34491659] = 'wheel_drft_24w', + [1028912594] = 'wheel_hiend_01', + [-803606181] = 'wheel_hiend_01w', + [752276696] = 'wheel_hiend_02', + [-1541662176] = 'wheel_hiend_02w', + [-1327768352] = 'wheel_hiend_03', + [1791075348] = 'wheel_hiend_03w', + [1394942324] = 'wheel_hiend_04', + [-375741648] = 'wheel_hiend_04w', + [1162839497] = 'wheel_hiend_05', + [1301374840] = 'wheel_hiend_05w', + [1970300426] = 'wheel_hiend_06', + [-219630752] = 'wheel_hiend_06w', + [-102404366] = 'wheel_hiend_07', + [-1416116989] = 'wheel_hiend_07w', + [-1683180926] = 'wheel_hiend_08', + [-1151244814] = 'wheel_hiend_08w', + [-1905584129] = 'wheel_hiend_09', + [248482137] = 'wheel_hiend_09w', + [-1549649255] = 'wheel_hiend_10', + [11518407] = 'wheel_hiend_10w', + [-2001206075] = 'wheel_hiend_11', + [-459765587] = 'wheel_hiend_11w', + [-1205476448] = 'wheel_hiend_12', + [-1900553395] = 'wheel_hiend_12w', + [918184135] = 'wheel_hiend_13', + [469073442] = 'wheel_hiend_13w', + [758402491] = 'wheel_hiend_14', + [-906766136] = 'wheel_hiend_14w', + [1368036971] = 'wheel_hiend_15', + [532185960] = 'wheel_hiend_15w', + [2144629502] = 'wheel_hiend_16', + [1810012791] = 'wheel_hiend_16w', + [-1923969522] = 'wheel_hiend_17', + [685255520] = 'wheel_hiend_17w', + [-1322658372] = 'wheel_hiend_18', + [361498088] = 'wheel_hiend_18w', + [-553668245] = 'wheel_hiend_19', + [-1659922923] = 'wheel_hiend_19w', + [1845153859] = 'wheel_hiend_20', + [-1366314880] = 'wheel_hiend_20w', + [-292611567] = 'wheel_loride_01', + [635554795] = 'wheel_loride_01w', + [-1501361670] = 'wheel_loride_02', + [-1283148862] = 'wheel_loride_02w', + [-904539873] = 'wheel_loride_03', + [794472064] = 'wheel_loride_03w', + [841163064] = 'wheel_loride_04', + [-1708312664] = 'wheel_loride_04w', + [608863623] = 'wheel_loride_05', + [-1700712208] = 'wheel_loride_05w', + [547323441] = 'wheel_loride_06', + [1255904966] = 'wheel_loride_06w', + [54215529] = 'wheel_loride_07', + [-154636275] = 'wheel_loride_07w', + [-1079264193] = 'wheel_loride_08', + [-1442810398] = 'wheel_loride_08w', + [-1578270525] = 'wheel_loride_09', + [19539348] = 'wheel_loride_09w', + [-108351824] = 'wheel_loride_10', + [2008638742] = 'wheel_loride_10w', + [1195231765] = 'wheel_loride_11', + [-2138369183] = 'wheel_loride_11w', + [309747847] = 'wheel_loride_12', + [646987961] = 'wheel_loride_12w', + [-471628958] = 'wheel_loride_13', + [730221501] = 'wheel_loride_13w', + [1077558286] = 'wheel_loride_14', + [-312905608] = 'wheel_loride_14w', + [-1903077189] = 'wheel_loride_15', + [1857284967] = 'wheel_loride_15w', + [2043595418] = 'wheel_musc_01', + [925950032] = 'wheel_musc_01w', + [-1938526235] = 'wheel_musc_02', + [630766624] = 'wheel_musc_02w', + [1665310082] = 'wheel_musc_03', + [-315732324] = 'wheel_musc_03w', + [1737401882] = 'wheel_musc_04', + [1479254821] = 'wheel_musc_04w', + [-1056548596] = 'wheel_musc_05', + [1785219974] = 'wheel_musc_05w', + [-749077069] = 'wheel_musc_06', + [143197825] = 'wheel_musc_06w', + [-1668575209] = 'wheel_musc_07', + [545765878] = 'wheel_musc_07w', + [-1367198716] = 'wheel_musc_08', + [-758997739] = 'wheel_musc_08w', + [-94909534] = 'wheel_musc_09', + [183932169] = 'wheel_musc_09w', + [-1280344842] = 'wheel_musc_10', + [319084271] = 'wheel_musc_10w', + [395723966] = 'wheel_musc_11', + [878453233] = 'wheel_musc_11w', + [-971890245] = 'wheel_musc_12', + [-1354131794] = 'wheel_musc_12w', + [-1145107179] = 'wheel_musc_13', + [-1195565279] = 'wheel_musc_13w', + [-361436544] = 'wheel_musc_14', + [1611623587] = 'wheel_musc_14w', + [174369375] = 'wheel_musc_15', + [-1965368135] = 'wheel_musc_15w', + [18716625] = 'wheel_musc_16', + [1988309738] = 'wheel_musc_16w', + [796423302] = 'wheel_musc_17', + [967459113] = 'wheel_musc_17w', + [-319525289] = 'wheel_musc_20', + [2026525785] = 'wheel_musc_20w', + [-781405373] = 'wheel_off_01', + [-1885774086] = 'wheel_off_01w', + [-422322671] = 'wheel_off_02', + [1224040547] = 'wheel_off_02w', + [132456519] = 'wheel_off_03', + [-884667460] = 'wheel_off_03w', + [513428913] = 'wheel_off_04', + [-379304230] = 'wheel_off_04w', + [-464103126] = 'wheel_off_05', + [-1131481848] = 'wheel_off_05w', + [-91978362] = 'wheel_off_06', + [-1778047275] = 'wheel_off_06w', + [-956883348] = 'wheel_off_07', + [1862129587] = 'wheel_off_07w', + [-718095645] = 'wheel_off_08', + [1380392230] = 'wheel_off_08w', + [-1556982073] = 'wheel_off_09', + [2017399950] = 'wheel_off_09w', + [74356774] = 'wheel_off_10', + [569538807] = 'wheel_off_10w', + [-977075438] = 'wheel_spt_01', + [2050543069] = 'wheel_spt_01w', + [925263319] = 'wheel_spt_02', + [253459228] = 'wheel_spt_02w', + [561265267] = 'wheel_spt_03', + [269712364] = 'wheel_spt_03w', + [283220302] = 'wheel_spt_04', + [-902527693] = 'wheel_spt_04w', + [-2096759399] = 'wheel_spt_05', + [-971998261] = 'wheel_spt_05w', + [1880872901] = 'wheel_spt_06', + [694240727] = 'wheel_spt_06w', + [1586508974] = 'wheel_spt_07', + [1084748612] = 'wheel_spt_07w', + [-1437348712] = 'wheel_spt_08', + [315993004] = 'wheel_spt_08w', + [-1677774865] = 'wheel_spt_09', + [1211766672] = 'wheel_spt_09w', + [414064175] = 'wheel_spt_10', + [-2101896803] = 'wheel_spt_10w', + [682081826] = 'wheel_spt_11', + [600890105] = 'wheel_spt_11w', + [-152642911] = 'wheel_spt_12', + [526766403] = 'wheel_spt_12w', + [86832941] = 'wheel_spt_13', + [-495558931] = 'wheel_spt_13w', + [-746384422] = 'wheel_spt_14', + [2133104491] = 'wheel_spt_14w', + [1073016012] = 'wheel_spt_15', + [-885985989] = 'wheel_spt_15w', + [259656663] = 'wheel_spt_16', + [-351165128] = 'wheel_spt_16w', + [482616939] = 'wheel_spt_17', + [1201889150] = 'wheel_spt_17w', + [-351517956] = 'wheel_spt_18', + [-392945087] = 'wheel_spt_18w', + [-83959071] = 'wheel_spt_19', + [-1148794509] = 'wheel_spt_19w', + [1698805833] = 'wheel_spt_20', + [-328059960] = 'wheel_spt_20w', + [828395659] = 'wheel_spt_21', + [-803184271] = 'wheel_spt_21w', + [1067281669] = 'wheel_spt_22', + [-1477275146] = 'wheel_spt_22w', + [239307346] = 'wheel_spt_23', + [1625097400] = 'wheel_spt_23w', + [478783198] = 'wheel_spt_24', + [-2127706567] = 'wheel_spt_24w', + [754534325] = 'wheel_spt_25', + [-1957318763] = 'wheel_spt_25w', + [1879309698] = 'wheel_suv_01', + [1614380651] = 'wheel_suv_01w', + [1038948693] = 'wheel_suv_02', + [-1718913930] = 'wheel_suv_02w', + [1135617243] = 'wheel_suv_03', + [2039984999] = 'wheel_suv_03w', + [395496609] = 'wheel_suv_04', + [334158079] = 'wheel_suv_04w', + [627075132] = 'wheel_suv_05', + [705201170] = 'wheel_suv_05w', + [-147878949] = 'wheel_suv_06', + [-1655902667] = 'wheel_suv_06w', + [-586000487] = 'wheel_suv_07', + [1087550438] = 'wheel_suv_07w', + [-325126478] = 'wheel_suv_08', + [207507138] = 'wheel_suv_08w', + [-1176956633] = 'wheel_suv_09', + [-1817322421] = 'wheel_suv_09w', + [-587632973] = 'wheel_suv_10', + [-2088916399] = 'wheel_suv_10w', + [-1432253948] = 'wheel_suv_11', + [447273461] = 'wheel_suv_11w', + [-1177278359] = 'wheel_suv_12', + [-2103338871] = 'wheel_suv_12w', + [120046355] = 'wheel_suv_13', + [-192971345] = 'wheel_suv_13w', + [406152494] = 'wheel_suv_14', + [-763282953] = 'wheel_suv_14w', + [-437092183] = 'wheel_suv_15', + [1347073664] = 'wheel_suv_15w', + [85573367] = 'wheel_suv_16', + [812873758] = 'wheel_suv_16w', + [1383127460] = 'wheel_suv_17', + [-649114933] = 'wheel_suv_17w', + [1598747480] = 'wheel_suv_18', + [643458756] = 'wheel_suv_18w', + [1024110296] = 'wheel_suv_19', + [-976378108] = 'wheel_suv_19w', + [1581459400] = 'windsor', + [-1930048799] = 'windsor2', + [-1551002089] = 'winerow', + [-618617997] = 'wolfsbane', + [1203490606] = 'xls', + [-432008408] = 'xls2', + [65402552] = 'youga', + [1026149675] = 'youga2', + [-1403128555] = 'zentorno', + [-1122289213] = 'zion', + [-1193103848] = 'zion2', + [-1009268949] = 'zombiea', + [-570033273] = 'zombieb', + [1919238784] = 'zprop_bin_01a_old', + [758895617] = 'ztype', + [1862763509] = 'PLAYER', + [45677184] = 'CIVMALE', + [1191392768] = 'CIVFEMALE', + [-1533126372] = 'COP', + [-183807561] = 'SECURITY_GUARD', + [-1467815081] = 'PRIVATE_SECURITY', + [-64182425] = 'FIREMAN', + [1126561930] = 'GANG_1', + [299800060] = 'GANG_2', + [-1916596797] = 'GANG_9', + [230631217] = 'GANG_10', + [-1865950624] = 'AMBIENT_GANG_LOST', + [296331235] = 'AMBIENT_GANG_MEXICAN', + [1166638144] = 'AMBIENT_GANG_FAMILY', + [-1033021910] = 'AMBIENT_GANG_BALLAS', + [2037579709] = 'AMBIENT_GANG_MARABUNTE', + [2017343592] = 'AMBIENT_GANG_CULT', + [-1821475077] = 'AMBIENT_GANG_SALVA', + [1782292358] = 'AMBIENT_GANG_WEICHENG', + [-1285976420] = 'AMBIENT_GANG_HILLBILLY', + [-2104069826] = 'DEALER', + [-2065892691] = 'HATES_PLAYER', + [-1072679431] = 'HEN', + [2078959127] = 'WILD_ANIMAL', + [580191176] = 'SHARK', + [-837599880] = 'COUGAR', + [-86095805] = 'NO_RELATIONSHIP', + [-640645303] = 'SPECIAL', + [-2143285144] = 'MISSION2', + [1227432503] = 'MISSION3', + [1531823744] = 'MISSION4', + [654990842] = 'MISSION5', + [959218238] = 'MISSION6', + [38769797] = 'MISSION7', + [348830075] = 'MISSION8', + [-472287501] = 'ARMY', + [1378588234] = 'GUARD_DOG', + [-347613984] = 'AGGRESSIVE_INVESTIGATE', + [-1337836896] = 'MEDIC', + [1157867945] = 'CAT', +} diff --git a/resources/[core]/ui-admin/fxmanifest.lua b/resources/[core]/ui-admin/fxmanifest.lua new file mode 100644 index 0000000..cff7790 --- /dev/null +++ b/resources/[core]/ui-admin/fxmanifest.lua @@ -0,0 +1,36 @@ +fx_version 'cerulean' +game 'gta5' +lua54 'yes' +author 'Kakarot' +description 'Provides a menu for server and player management' +version '1.2.0' + +ui_page 'html/index.html' + +shared_scripts { + '@qb-core/shared/locale.lua', + 'locales/en.lua', + 'locales/*.lua' +} + +client_scripts { + '@menuv/menuv.lua', + 'client/noclip.lua', + 'client/entity_view.lua', + 'client/blipsnames.lua', + 'client/client.lua', + 'client/events.lua', + 'entityhashes/entity.lua', +} + +server_scripts { + '@oxmysql/lib/MySQL.lua', + 'server/server.lua' +} + +files { + 'html/index.html', + 'html/index.js' +} + +dependency 'menuv' diff --git a/resources/[core]/ui-admin/html/index.html b/resources/[core]/ui-admin/html/index.html new file mode 100644 index 0000000..fdfcaae --- /dev/null +++ b/resources/[core]/ui-admin/html/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/[core]/ui-admin/html/index.js b/resources/[core]/ui-admin/html/index.js new file mode 100644 index 0000000..8632add --- /dev/null +++ b/resources/[core]/ui-admin/html/index.js @@ -0,0 +1,12 @@ +const copyToClipboard = (str) => { + const el = document.createElement("textarea"); + el.value = str; + document.body.appendChild(el); + el.select(); + document.execCommand("copy"); + document.body.removeChild(el); +}; + +window.addEventListener("message", (event) => { + copyToClipboard(event.data.string); +}); diff --git a/resources/[core]/ui-admin/locales/ar.lua b/resources/[core]/ui-admin/locales/ar.lua new file mode 100644 index 0000000..ac39432 --- /dev/null +++ b/resources/[core]/ui-admin/locales/ar.lua @@ -0,0 +1,270 @@ +local Translations = { + error = { + blips_deactivated = 'تم اخفاء اماكن اللاعبين', + names_deactivated = 'تم اخفاء اسماء اللاعبين', + changed_perm_failed = 'اختر الصلاحيات', + missing_reason = 'يجب أن تعطي سببا', + invalid_reason_length_ban = 'يجب عليك إعطاء سبب و وقت الباند', + no_store_vehicle_garage = 'لا يمكنك تخزين هذه السيارة في المرآب الخاص بك', + no_vehicle = 'أنت لست في السيارة', + no_weapon = 'ليس لديك سلاح في يديك', + no_free_seats = 'السيارة لا تحتوي على مقاعد خالية', + failed_vehicle_owner = 'هذه السيارة لك بالفعل', + not_online = 'هذا اللاعب غير متصل', + no_receive_report = 'أنت لا تتلقى تقارير', + failed_set_speed = '(`fast` - سريع / `normal` - عادي) أنت لم تحدد السرعة', + failed_set_model = 'لم تقم بتعيين نموذج', + failed_entity_copy = 'لا توجد معلومات كيان مجانية لنسخها إلى الحافظة!', + }, + success = { + blips_activated = 'تم عرض اماكن اللاعبين على الخريطة', + names_activated = 'تم تفعيل اسماء اللاعبين', + coords_copied = 'تم نسخ الإحداثيات', + heading_copied = 'تم نسخ العنوان', + changed_perm = 'تغيرت صلاحياتك', + entered_vehicle = 'دخلت السيارة', + success_vehicle_owner = 'السيارة الآن لك', + receive_reports = 'أنت تتلقى تقارير', + entity_copy = 'تم نسخ معلومات الكيان المجانية إلى الحافظة!', + }, + info = { -- you need font arabic -- + ped_coords = 'ﺕﺎﻴﺛﺍﺪﺣﺇ:', + vehicle_dev_data = 'ﺓﺭﺎﻴﺴﻟﺍ ﺕﺎﻧﺎﻴﺑ', + ent_id = 'ﻑﺮﻌﻤﻟﺍ: ', + net_id = 'ﻱﺪﻳﻻﺍ: ', + net_id_not_registered = 'غير مسجل', + model = 'ﻉﻮﻨﻟﺍ: ', + hash = 'ﺵﺎﻬﻟﺍ: ', + eng_health = 'ﻙﺮﺤﻤﻟﺍ ﺔﺤﺻ: ', + body_health = 'ﻢﺴﺠﻟﺍ ﺔﺤﺻ: ', + go_to = 'الانتفال اليه', + remove = 'حدف', + confirm = 'تأكيد', + reason_title = 'السبب', + length = 'المدة', + options = 'اعدادات', + position = 'المكان', + your_position = 'الى مكانك', + open = 'فتح', + inventories = 'الاختبارات', + reason = 'يجب ان تكتب السبب', + give = 'اعطاء', + id = 'الأيدي:', + player_name = 'اسم اللاعب', + obj = 'Obj', + ammoforthe = '%{weapon} ذخيرة ل +%{value}', + kicked_server = 'لقد تم طردك من الخادم', + check_discord = '🔸 تحقق من الديسكورد لمزيد من المعلومات: ', + banned = 'لقد تم حظرك:', + ban_perm = '\n\nحظرك دائم.\n🔸 تحقق من الديسكورد لمزيد من المعلومات: ', + ban_expires = '\n\nانتهاء الحظر: ', + rank_level = 'مستوى الإذن الخاص بك الآن ', + admin_report = 'ابلاغ - ', + staffchat = 'الإدارة - ', + warning_chat_message = '^7 لقد تم تحذيرك من قبل ', + warning_staff_message = '^7 لقد حذرت ', + no_reason_specified = 'لا يوجد سبب محدد', + server_restart = 'إعادة تشغيل الخادم. لمزيد من المعلومات: ', + object_view_distance = 'مسافة عرض الكيان مضبوطة على:٪ {مسافة} متر', + object_view_info = 'معلومات الكيان', + object_view_title = 'وضع الكيانات الحرة', + object_freeaim_delete = 'حذف الكيان', + object_freeaim_freeze = 'تجميد الكيان', + object_frozen = 'مجمد', + object_unfrozen = 'غير مجمدة', + model_hash = 'نموذج التجزئة:', + obj_name = 'اسم الكائن:', + ent_owner = 'مالك الكيان:', + cur_health = 'الصحة الحالية:', + max_health = 'أقصى صحة:', + armor = 'Armor:', + rel_group = 'مجموعة العلاقات:', + rel_to_player = 'العلاقة باللاعب:', + rel_group_custom = 'علاقة مخصصة', + ign_acceleration = 'تسريع:', + ign_cur_gear = 'العتاد الحالي:', + ign_speed_kph = 'Kph:', + ign_speed_mph = 'ميل في الساعة:', + ign_rpm = 'Rpm:', + dist_to_obj = 'Dist:', + obj_heading = 'العنوان:', + obj_coords = 'مجموعات:', + obj_rot = 'الدوران:', + obj_velocity = 'السرعة:', + obj_unknown = 'غير معروف', + you_have = 'لديك', + freeaim_entity = 'الكيان المجاني', + object_del = 'الكيان محذوف', + object_del_error = 'خطأ في حذف الكيان', + }, + menu = { + admin_menu = 'قائمة الأدمن', + admin_options = 'إعدادات الأدمن', + online_players = 'اللاعبين المتصلين', + manage_server = 'إدارة السرفر', + weather_conditions = 'خيارات الطقس', + dealer_list = 'قائمة التاجر', + ban = 'باند', + kick = 'طرد', + permissions = 'الصلاحيات', + developer_options = 'خيارات للمطور', + vehicle_options = 'اعدادات السيارات', + vehicle_categories = 'فئات السيارات', + vehicle_models = 'نماذج المركبات', + player_management = 'إدارة اللاعب', + server_management = 'إدارة الخادم', + vehicles = 'السيارات', + noclip = 'الطيران', + revive = 'انعاش', + invisible = 'اختفاء', + god = 'غود مود', + names = 'الاسماء', + blips = 'الاماكن', + weather_options = 'خيارات الطقس', + server_time = 'وقت الخادم', + time = 'الوقت', + copy_vector3 = 'vector3 نسخ', + copy_vector4 = 'vector4 نسخ', + display_coords = 'عرض الاحداثيات', + copy_heading = 'Heading نسخ', + vehicle_dev_mode = 'وضع تطوير السيارة', + spawn_vehicle = 'سباون سيارة', + fix_vehicle = 'تصليح السيارة', + buy = 'شراء', + remove_vehicle = 'حدف السيارة', + edit_dealer = 'تعديل البائع ', + dealer_name = 'اسم البائع', + category_name = 'اسم التصانيف', + kill = 'قتل', + freeze = 'تجميد', + spectate = 'مراقبة', + bring = 'سحب', + sit_in_vehicle = 'ضع في السيارة', + open_inv = 'فتح الحقيبة', + give_clothing_menu = 'فتح قائمة الملابس', + entity_view_options = 'وضع طريقة عرض الكيان', + entity_view_distance = 'تعيين مسافة العرض', + entity_view_freeaim = 'وضع الهدف الحر', + entity_view_peds = 'عرض البيديستيريين', + entity_view_vehicles = 'عرض المركبات', + entity_view_objects = 'عرض الكائنات', + entity_view_freeaim_copy = 'نسخ معلومات الكيان المجانية', + }, + desc = { + admin_options_desc = 'خيارات المسؤول', + player_management_desc = 'اعرض قائمة اللاعبين', + server_management_desc = 'خيارات الخادم', + vehicles_desc = 'خيارات السيارة', + dealer_desc = 'قائمة التجار الحاليين', + noclip_desc = 'تمكين / تعطيل الطيران', + revive_desc = 'إحياء نفسك', + invisible_desc = 'تمكين / تعطيل الاختفاء', + god_desc = 'تمكين / تعطيل الغود مود', + names_desc = 'تمكين / تعطيل الأسماء ', + blips_desc = 'تمكين / تعطيل اللاعبين في الخريطة', + weather_desc = 'تغيير الطقس', + developer_desc = 'خيارات التطوير', + vector3_desc = 'vector3 نسخ', + vector4_desc = 'vector4 نسخ', + display_coords_desc = 'إظهار الأحداثيات', + copy_heading_desc = 'Heading نسخ', + vehicle_dev_mode_desc = 'عرض معلومات السيارة', + delete_laser_desc = 'تمكين / تعطيل الليزر', + spawn_vehicle_desc = 'سباون سيارة', + fix_vehicle_desc = 'Fix the vehicle you are in', + buy_desc = 'Buy the vehicle for free', + remove_vehicle_desc = 'أصلح السيارة التي أنت فيها', + dealergoto_desc = 'الانتقال الى البائع', + dealerremove_desc = 'إزالة التاجر', + kick_reason = 'سبب الطرد', + confirm_kick = 'تأكيد الطرد', + ban_reason = 'سبب الباند', + confirm_ban = 'تأكيد الباند', + sit_in_veh_desc = 'اجلس في', + sit_in_veh_desc2 = ' سيارة', + clothing_menu_desc = 'امنح قائمة الملابس لـ ', + entity_view_desc = 'عرض معلومات حول الكيانات', + entity_view_freeaim_desc = 'تمكين / تعطيل معلومات الكيان عبر مجانية', + entity_view_peds_desc = 'تمكين / تعطيل معلومات البدن في العالم', + entity_view_vehicles_desc = 'تمكين / تعطيل معلومات السيارة في العالم', + entity_view_objects_desc = 'تمكين / تعطيل معلومات الكائن في العالم', + entity_view_freeaim_copy_desc = 'نسخ معلومات كيان الهدف المجاني', + }, + time = { + ban_length = 'وقت الباند', + onehour = 'ساعة', + sixhour = '6س', + twelvehour = '12س', + oneday = 'يوم', + threeday = '3ي', + oneweek = 'أسبوع', + onemonth = 'شهر', + threemonth = '3ش', + sixmonth = '6ش', + oneyear = 'سنة', + permanent = 'نهائيا', + self = 'محدد', + changed = '%{time}:00 تغير الوقت إلى', + }, + weather = { + extra_sunny = 'مشمس قوي', + extra_sunny_desc = 'انا اذوب', + clear = 'صافي', + clear_desc = 'يوم مثالي', + neutral = 'طبيعي', + neutral_desc = 'مجرد يوم عادي', + smog = 'ضبابي', + smog_desc = 'آلة الدخان', + foggy = 'ضبابي قوي', + foggy_desc = 'x2 آلة الدخان', + overcast = 'غائم', + overcast_desc = 'لا مشمس جدا', + clouds = 'سحاب', + clouds_desc = 'أين الشمس', + clearing = 'صافية بحدة', + clearing_desc = 'تبدأ الغيوم في الإزالة', + rain = 'ممطر', + rain_desc = 'دعها تمطر', + thunder = 'مرعد', + thunder_desc = 'صوت الرعد', + snow = 'ثلج', + snow_desc = 'هل الجو بارد هنا', + blizzard = 'ثلجي قوي', + blizzed_desc = 'آلة الثلج', + light_snow = 'ثلوج خفيفة', + light_snow_desc = 'بدأت تشعر وكأنها عيد الميلاد', + heavy_snow = 'ثلوج كثيفة', + heavy_snow_desc = 'حرب كرات الثلج', + halloween = 'الهالوين', + halloween_desc = 'ما كان هذا الضجيج', + weather_changed = 'تم التغير الى %{value}', + }, + commands = { + blips_for_player = 'إظهار مكان اللاعبين (المسؤول فقط)', + player_name_overhead = 'إظهار اسماء اللاعبين (المسؤول فقط)', + coords_dev_command = 'تمكين عرض الإحداثيات (المسؤول فقط)', + toogle_noclip = 'تفعيل/الغاء الطيران (المسؤول فقط)', + save_vehicle_garage = 'حفظ السيارة في الغراج لتصبح ملك لك (المسؤول فقط)', + make_announcement = 'نشر إعلان (المسؤول فقط)', + open_admin = 'فتح قائمة المسؤول (المسؤول فقط)', + staffchat_message = 'إرسال رسالة إلى جميع المشرفين (المسؤول فقط)', + nui_focus = 'اعطاء و اخفاء الفوكس (المسؤول فقط)', + warn_a_player = 'تحذير لاعب (المسؤول فقط)', + check_player_warning = 'تحقق من تحذيرات اللاعب (المسؤول فقط)', + delete_player_warning = 'حذف تحذيرات اللاعبين (المسؤول فقط)', + reply_to_report = 'الرد على تقرير (المسؤول فقط)', + change_ped_model = 'تغيير نموذج السكين (المسؤول فقط)', + set_player_foot_speed = 'تعيين سرعة الطياران (المسؤول فقط)', + report_toggle = 'تبديل التقارير الواردة (المسؤول فقط)', + kick_all = 'طرد كل اللاعبين', + ammo_amount_set = 'قم بتعيين الذخيرة (المسؤول فقط)', + } +} + +if GetConvar('qb_locale', 'en') == 'ar' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/da.lua b/resources/[core]/ui-admin/locales/da.lua new file mode 100644 index 0000000..489ae87 --- /dev/null +++ b/resources/[core]/ui-admin/locales/da.lua @@ -0,0 +1,272 @@ +local Translations = { + error = { + blips_deactivated = 'Blips deaktiveret', + names_deactivated = 'Navne deaktiveret', + changed_perm_failed = 'Vælg en gruppe!', + missing_reason = 'Du skal give en grund!', + invalid_reason_length_ban = 'Du skal give en grund og angive en længde for udelukkelsen!', + no_store_vehicle_garage = 'Du kan ikke opbevare dette køretøj i din garage..', + no_vehicle = 'Du er ikke i et køretøj..', + no_weapon = 'Du har ikke et våben i dine hænder..', + no_free_seats = 'Køretøjet har ingen ledige sæder!', + failed_vehicle_owner = 'Dette køretøj er allerede dit..', + not_online = 'Denne spiller er ikke online', + no_receive_report = 'Du modtager ikke rapporter', + failed_set_speed = 'Du har ikke sat en hastighed.. (`fast` for super-run, `normal` for normal)', + failed_set_model = 'Du har ikke sat en model..', + failed_entity_copy = 'Ingen freeaim-enhedsoplysninger at kopiere til udklipsholder!', + }, + success = { + blips_activated = 'Blips aktiveret', + names_activated = 'Navne aktiveret', + coords_copied = 'Koordinater kopieret til udklipsholder!', + heading_copied = 'Heading kopieret til udklipsholder!', + changed_perm = 'Myndighedsgruppe ændret', + entered_vehicle = 'Kom ind i køretøjet', + success_vehicle_owner = 'Køretøjer er nu dit!', + receive_reports = 'Du modtager rapporter', + entity_copy = 'Freeaim-enhedsoplysninger kopieret til udklipsholder!', + }, + info = { + ped_coords = 'Ped Koordinater:', + vehicle_dev_data = 'Køretøj Udvikler Data:', + ent_id = 'Enheds ID:', + net_id = 'Net ID:', + net_id_not_registered = 'Ikke registreret', + model = 'Model', + hash = 'Hash', + eng_health = 'Motor Liv:', + body_health = 'Body Liv:', + go_to = 'Gå Til', + remove = 'Fjern', + confirm = 'Bekræft', + reason_title = 'Grund', + length = 'Længde', + options = 'Indstillinger', + position = 'Position', + your_position = 'til din position', + open = 'Åben', + inventories = 'inventories', + reason = 'du skal give en grund', + give = 'giv', + id = 'ID:', + player_name = 'Spiller Navn', + obj = 'Obj', + ammoforthe = '+%{value} Ammunition for %{weapon}', + kicked_server = 'Du er blevet smidt ud fra serveren', + check_discord = '🔸 Tjek vores Discord for mere information: ', + banned = 'Du er blevet udelukket:', + ban_perm = '\n\nDin udelukkelse er permanent.\n🔸 Tjek vores Discord for mere information: ', + ban_expires = '\n\nUdelukkelse udløber: ', + rank_level = 'Dit tilladelsesniveau er nu ', + admin_report = 'Admin rapport - ', + staffchat = 'STAFFCHAT - ', + warning_chat_message = '^8ADVARSEL ^7 Du er blevet advaret af', + warning_staff_message = '^8ADVARSEL ^7 Du har advaret ', + no_reason_specified = 'Ingen grund angivet', + server_restart = 'Server genstart, tjek vores Discord for mere information: ', + entity_view_distance = 'Enhedsvisningsafstand indstillet til: %{distance} meter', + entity_view_info = 'Enhedsoplysninger', + entity_view_title = 'Entity Freeaim Mode', + entity_freeaim_delete = 'Slet enhed', + entity_freeaim_freeze = 'Frys enhed', + entity_frozen = 'Frosset', + entity_unfrozen = 'Ufrosset', + model_hash = 'Model hash:', + obj_name = 'Objektnavn:', + ent_owner = 'Enhedsejer:', + cur_health = 'Nuværende helbred:', + max_health = 'Maksimal sundhed:', + armour = 'Armor:', + rel_group = 'Relationsgruppe:', + rel_to_player = 'Relation til spiller:', + rel_group_custom = 'Tilpasset forhold', + veh_acceleration = 'Acceleration:', + veh_cur_gear = 'Nuværende gear:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Omdr./min:', + dist_to_obj = 'Dist:', + obj_heading = 'Overskrift:', + obj_coords = 'Koder:', + obj_rot = 'Rotation:', + obj_velocity = 'Hastighed:', + obj_unknown = 'Ukendt', + you_have = 'Du har ', + freeaim_entity = ' freeaim-enheden', + entity_del = 'Enhed slettet', + entity_del_error = 'Fejl ved sletning af enhed', + }, + menu = { + admin_menu = 'Admin Menu', + admin_options = 'Admin Indstillinger', + online_players = 'Online Spillere', + manage_server = 'Administrer Server', + weather_conditions = 'Tilgængelige Vejr Indstillinger', + dealer_list = 'Forhandler Liste', + ban = 'Udeluk', + kick = 'Smid ud', + permissions = 'Tilladelser', + developer_options = 'Udvikler Indstillinger', + vehicle_options = 'Køretøj Indstillinger', + vehicle_categories = 'Køretøj Kategorier', + vehicle_models = 'Køretøj Modeller', + player_management = 'Spiller Styrelse', + server_management = 'Server Styrelse', + vehicles = 'Køretøjer', + noclip = 'NoClip', + revive = 'Genopliv', + invisible = 'Usynlig', + god = 'Godmode', + names = 'Navne', + blips = 'Blips', + weather_options = 'Vejr Indstillinger', + server_time = 'Server Tid', + time = 'Tid', + copy_vector3 = 'Kopier vector3', + copy_vector4 = 'Kopier vector4', + display_coords = 'Vis Koordinater', + copy_heading = 'Kopier Heading', + vehicle_dev_mode = 'Køretøjsudviklingstilstand', + spawn_vehicle = 'Spawn Køretøj', + fix_vehicle = 'Reparer Køretøj', + buy = 'Køb', + remove_vehicle = 'Fjern Køretøj', + edit_dealer = 'Rediger Forhandler ', + dealer_name = 'Forhandler Navn', + category_name = 'Kategori Navn', + kill = 'Dræb', + freeze = 'Frys', + spectate = 'Spectate', + bring = 'Bring', + sit_in_vehicle = 'Sid i køretøj', + open_inv = 'Åben Inventar', + give_clothing_menu = 'Giv Tøj Menu', + hud_dev_mode = 'Udvikler Tilstand (qb-hud)', + entity_view_options = 'Enhedsvisningstilstand', + entity_view_distance = 'Indstil visningsafstand', + entity_view_freeaim = 'Freeaim-tilstand', + entity_view_peds = 'Vis Peds', + entity_view_vehicles = 'Visningskøretøjer', + entity_view_objects = 'Vis objekter', + entity_view_freeaim_copy = 'Kopiér Freeaim-enhedsoplysninger', + }, + desc = { + admin_options_desc = 'Misc. Admin Indstillinger', + player_management_desc = 'Vis Liste Af Spillere', + server_management_desc = 'Misc. Server Indstillinger', + vehicles_desc = 'Køretøjs Indstillinger', + dealer_desc = 'Liste af eksisterende forhandlere', + noclip_desc = 'Aktiver/Deaktiver NoClip', + revive_desc = 'Genopliv Dig Selv', + invisible_desc = 'Aktiver/Deaktiver Usynlighed', + god_desc = 'Aktiver/Deaktiver God Mode', + names_desc = 'Aktiver/Deaktiver Names overhead', + blips_desc = 'Aktiver/Deaktiver Blips for players in maps', + weather_desc = 'Skift Vejret', + developer_desc = 'Misc. Udvikler Indstillinger', + vector3_desc = 'Kopier vector3 Til Udklipsholder', + vector4_desc = 'Kopier vector4 Til Udklipsholder', + display_coords_desc = 'Vis Koordinater På Skærm', + copy_heading_desc = 'Kopier Heading til Udklipsholder', + vehicle_dev_mode_desc = 'Vis Køretøjsinformation', + delete_laser_desc = 'Aktiver/Deaktiver Laser', + spawn_vehicle_desc = 'Spawn et køretøj', + fix_vehicle_desc = 'Reparer køretøjer du er i', + buy_desc = 'Køb køretøjet gratis', + remove_vehicle_desc = 'Fjern nærmeste køretøj', + dealergoto_desc = 'Gå til forhandler', + dealerremove_desc = 'Fjern forhandler', + kick_reason = 'Kick Grund', + confirm_kick = 'Bekræft Kicket', + ban_reason = 'Udelukkelse grund', + confirm_ban = 'Bekræft udelukkelsen', + sit_in_veh_desc = 'Sid i', + sit_in_veh_desc2 = "'s køretøj", + clothing_menu_desc = 'Giv tøj menuen til', + hud_dev_mode_desc = 'Aktiver/Deaktiver Udvikler Tilstand', + entity_view_desc = 'Se oplysninger om enheder', + entity_view_freeaim_desc = 'Aktiver/deaktiver enhedsoplysninger via freeaim', + entity_view_peds_desc = 'Aktiver/deaktiver ped-oplysninger i verden', + entity_view_vehicles_desc = 'Aktiver/deaktiver køretøjsoplysninger i verden', + entity_view_objects_desc = 'Aktiver/deaktiver objektinfo i verden', + entity_view_freeaim_copy_desc = 'Kopierer oplysningerne om Free Aim-enheden til udklipsholder', + }, + time = { + ban_length = 'Udelukkelse Længde', + onehour = '1 Time', + sixhour = '6 Timer', + twelvehour = '12 Timer', + oneday = '1 Dag', + threeday = '3 Dage', + oneweek = '1 Uge', + onemonth = '1 Måned', + threemonth = '3 Måneder', + sixmonth = '6 Måneder', + oneyear = '1 År', + permanent = 'Permanent', + self = 'Self', + changed = 'Tid ændret til %{time} hs 00 min', + }, + weather = { + extra_sunny = 'Ekstra solrig', + extra_sunny_desc = 'Jeg smelter!', + clear = 'Klart', + clear_desc = 'Den perfekte dag!', + neutral = 'Neutral', + neutral_desc = 'Bare en almindelig dag!', + smog = 'Smog', + smog_desc = 'Røg Maskine!', + foggy = 'Tåget', + foggy_desc = 'Røg Maskine x2!', + overcast = 'Overskyet', + overcast_desc = 'Ikke for solrig!', + clouds = 'Skyet', + clouds_desc = 'Hvor er solen?', + clearing = 'Klaring', + clearing_desc = 'Skyer begynder at klare!', + rain = 'Regn', + rain_desc = 'Få det til at regne!', + thunder = 'Torden', + thunder_desc = 'Løb og skjul!', + snow = 'Sne', + snow_desc = 'Er det koldt herude?', + blizzard = 'Snestorm', + blizzed_desc = 'Sne Maskine?', + light_snow = 'Let Sne', + light_snow_desc = 'Begynder at få lyst til jul!', + heavy_snow = 'Tung Sne (JUL)', + heavy_snow_desc = 'Sneboldskamp!', + halloween = 'Halloween', + halloween_desc = 'Hvad var den støj?!', + weather_changed = 'Vejr ændret til: %{value}', + }, + commands = { + blips_for_player = 'Vis Blips For Spillere (Kun Admin)', + player_name_overhead = 'Vis Spiller Navn Over Hovedet (Kun Admin)', + coords_dev_command = 'Aktiver visning af koordinater for udviklingsting (Kun Admin)', + toogle_noclip = 'Noclip til/fra (Kun Admin)', + save_vehicle_garage = 'Gem Køretøj Til Din Garage (Kun Admin)', + make_announcement = 'Lav En Meddelelse (Kun Admin)', + open_admin = 'Åben Admin Menu (Kun Admin)', + staffchat_message = 'Send En Besked Til Alle Staffs (Kun Admin)', + nui_focus = 'Giv En Spiller NUI Focus (Kun Admin)', + warn_a_player = 'Advar En Spiller (Kun Admin)', + check_player_warning = 'Tjek Spiller Advarsler (Kun Admin)', + delete_player_warning = 'Slet Spiller Advarsler (Kun Admin)', + reply_to_report = 'Svar På En Rapport (Kun Admin)', + change_ped_model = 'Skift Ped Model (Kun Admin)', + set_player_foot_speed = 'Skift spillerens fodhastighed (Kun Admin)', + report_toggle = 'Skift Indgående Rapporter til/fra (Kun Admin)', + kick_all = 'Smid Alle Spillere Ud', + ammo_amount_set = 'Indstil dit ammunitionsbeløb (Kun Admin)', + } +} + +if GetConvar('qb_locale', 'en') == 'da' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/de.lua b/resources/[core]/ui-admin/locales/de.lua new file mode 100644 index 0000000..bf622e0 --- /dev/null +++ b/resources/[core]/ui-admin/locales/de.lua @@ -0,0 +1,281 @@ +local Translations = { + error = { + blips_deactivated = 'Blips deaktiviert', + names_deactivated = 'Namen deaktiviert', + changed_perm_failed = 'Wähle eine Gruppe aus!', + missing_reason = 'Du musst einen Grund angeben!', + invalid_reason_length_ban = 'Du musst einen Grund und die Länge des Bans festlegen!', + no_store_vehicle_garage = 'Du kannst dieses Auto nicht in der Garage parken.', + no_vehicle = 'Du bist nicht in einem Fahrzeug.', + no_weapon = 'Du hast keine Waffe in deiner Hand.', + no_free_seats = 'Dieses Fahrzeug hat keinen freien Sitz!', + failed_vehicle_owner = 'Das Fahrzeug gehört bereits dir.', + not_online = 'Dieser Spieler ist nicht online.', + no_receive_report = 'Du erhältst keine Reports.', + failed_set_speed = 'Du hast keine Geschwindigkeit festgelegt.. (`schnell` für Super-Run, `normal` für normal)', + failed_set_model = 'Du hast kein Modell festgelegt.', + failed_entity_copy = 'Keine Freeaim-Entitätsinfo zum Kopieren in die Zwischenablage!', + }, + success = { + blips_activated = 'Blips aktiviert', + names_activated = 'Namen aktiviert', + coords_copied = 'Koordinaten in die Zwischenablage kopiert!', + heading_copied = 'Ausrichtung in die Zwischenablage kopiert!', + changed_perm = 'Gruppenrechte geändert', + entered_vehicle = 'Ins Fahrzeug eingestiegen', + success_vehicle_owner = 'Das Fahrzeug gehört dir jetzt!', + receive_reports = 'Du erhältst Reports', + entity_copy = 'Freeaim-Entitätsinfo in die Zwischenablage kopiert!', + spawn_weapon = 'Du hast eine Waffe gespawnt', + noclip_enabled = 'No-clip aktiviert', + noclip_disabled = 'No-clip deaktiviert', + }, + info = { + ped_coords = 'Ped-Koordinaten:', + vehicle_dev_data = 'Fahrzeug-Entwickler-Daten:', + ent_id = 'Entitäts-ID:', + net_id = 'Netz-ID:', + net_id_not_registered = 'Nicht registriert', + model = 'Modell', + hash = 'Hash', + eng_health = 'Motorzustand:', + body_health = 'Karosseriezustand:', + go_to = 'Gehe zu', + remove = 'Entfernen', + confirm = 'Bestätigen', + reason_title = 'Grund', + length = 'Länge', + options = 'Optionen', + position = 'Position', + your_position = 'zu deiner Position', + open = 'Öffnen', + inventories = 'Inventare', + reason = 'Du musst einen Grund angeben', + give = 'Geben', + id = 'ID:', + player_name = 'Spielername', + obj = 'Objekt', + ammoforthe = '+%{value} Munition für die %{weapon}', + kicked_server = 'Du wurdest vom Server gekickt', + check_discord = '🔸 Prüfe unseren Discord für mehr Informationen: ', + banned = 'Du wurdest gebannt:', + ban_perm = '\n\nDein Ban ist permanent.\n🔸 Prüfe unseren Discord für mehr Informationen: ', + ban_expires = '\n\nDer Ban läuft ab: ', + rank_level = 'Dein Berechtigungslevel ist jetzt ', + admin_report = 'Admin-Bericht - ', + staffchat = 'STAFFCHAT - ', + warning_chat_message = '^8WARNUNG ^7 Du wurdest gewarnt von', + warning_staff_message = '^8WARNUNG ^7 Du hast jemanden gewarnt ', + no_reason_specified = 'Kein Grund angegeben', + server_restart = 'Server-Neustart, prüfe unseren Discord für mehr Informationen: ', + entity_view_distance = 'Sichtweite der Entität auf: %{distance} Meter gesetzt', + entity_view_info = 'Entitätsinformationen', + entity_view_title = 'Freeaim-Modus', + entity_freeaim_delete = 'Entität löschen', + entity_freeaim_freeze = 'Entität einfrieren', + entity_freeaim_coords = 'Vec3 kopieren', + coords_copied = 'Koordinaten kopiert', + entity_frozen = 'Eingefroren', + entity_unfrozen = 'Aufgetaut', + model_hash = 'Modell-Hash:', + obj_name = 'Objektname:', + ent_owner = 'Eigentümer der Entität:', + cur_health = 'Aktuelle Gesundheit:', + max_health = 'Max. Gesundheit:', + armour = 'Rüstung:', + rel_group = 'Beziehungsgruppe:', + rel_to_player = 'Beziehung zum Spieler:', + rel_group_custom = 'Benutzerdefinierte Beziehung', + veh_acceleration = 'Beschleunigung:', + veh_cur_gear = 'Aktueller Gang:', + veh_speed_kph = 'Geschwindigkeit (km/h):', + veh_speed_mph = 'Geschwindigkeit (mph):', + veh_rpm = 'Drehzahl (U/min):', + dist_to_obj = 'Abstand:', + obj_heading = 'Ausrichtung:', + obj_coords = 'Koordinaten:', + obj_rot = 'Rotation:', + obj_velocity = 'Geschwindigkeit:', + obj_unknown = 'Unbekannt', + you_have = 'Du hast ', + freeaim_entity = ' die Freeaim-Entität', + entity_del = 'Entität gelöscht', + entity_del_error = 'Fehler beim Löschen der Entität', + }, + menu = { + admin_menu = 'Admin Menü', + admin_options = 'Admin Optionen', + online_players = 'Online Spieler', + manage_server = 'Server verwalten', + weather_conditions = 'Vorhandene Wetteroptionen', + dealer_list = 'Dealer Liste', + ban = 'Ban', + kick = 'Kick', + permissions = 'Rechte', + developer_options = 'Entwickler Optionen', + vehicle_options = 'Fahrzeug Optionen', + vehicle_categories = 'Fahrzeugkategorien', + vehicle_models = 'Fahrzeugmodelle', + player_management = 'Spieler-Management', + server_management = 'Server-Management', + vehicles = 'Fahrzeuge', + noclip = 'NoClip', + revive = 'Wiederbeleben', + invisible = 'Unsichtbar', + god = 'Godmode', + names = 'Namen', + blips = 'Blips', + weather_options = 'Wetteroptionen', + server_time = 'Serverzeit', + time = 'Zeit', + copy_vector3 = 'Kopiere Vector3', + copy_vector4 = 'Kopiere Vector4', + display_coords = 'Zeige Koordinaten', + copy_heading = 'Kopiere Heading', + vehicle_dev_mode = 'Fahrzeug Dev Modus', + spawn_vehicle = 'Fahrzeug spawnen', + fix_vehicle = 'Fahrzeug reparieren', + buy = 'Kaufen', + remove_vehicle = 'Fahrzeug entfernen', + edit_dealer = 'Dealer bearbeiten', + dealer_name = 'Dealer Name', + category_name = 'Kategoriename', + kill = 'Töten', + freeze = 'Einfrieren', + spectate = 'Beobachten', + bring = 'Herbringen', + sit_in_vehicle = 'Ins Fahrzeug setzen', + open_inv = 'Inventar öffnen', + give_clothing_menu = 'Kleidungsmenü geben', + hud_dev_mode = 'Dev Modus (qb-hud)', + entity_view_options = 'Entitätsansichtsmodus', + entity_view_distance = 'Sichtweite festlegen', + entity_view_freeaim = 'Freeaim-Modus', + entity_view_peds = 'Fußgänger anzeigen', + entity_view_vehicles = 'Fahrzeuge anzeigen', + entity_view_objects = 'Objekte anzeigen', + entity_view_freeaim_copy = 'Freeaim-Entitätsinformationen kopieren', + spawn_weapons = 'Waffen spawnen', + max_mods = 'Maximale Fahrzeug-Mods', + }, + desc = { + admin_options_desc = 'Verschiedene Admin-Optionen', + player_management_desc = 'Siehe Spieler-Optionen', + server_management_desc = 'Verschiedene Server-Optionen', + vehicles_desc = 'Fahrzeug-Optionen', + dealer_desc = 'Liste existierender Dealer', + noclip_desc = 'NoClip an/aus', + revive_desc = 'Belebe dich selbst wieder', + invisible_desc = 'Unsichtbarkeit an/aus', + god_desc = 'God-Mode an/aus', + names_desc = 'Namen über den Köpfen an/aus', + blips_desc = 'Blips für Spieler auf der Karte an/aus', + weather_desc = 'Wetter ändern', + developer_desc = 'Verschiedene Entwickler-Optionen', + vector3_desc = 'Kopiere Vector3 in die Zwischenablage', + vector4_desc = 'Kopiere Vector4 in die Zwischenablage', + display_coords_desc = 'Zeige Koordinaten auf dem Bildschirm', + copy_heading_desc = 'Kopiere Heading in die Zwischenablage', + vehicle_dev_mode_desc = 'Zeige Fahrzeuginformationen', + delete_laser_desc = 'Laser an/aus', + spawn_vehicle_desc = 'Spawne ein Fahrzeug', + fix_vehicle_desc = 'Repariere das Fahrzeug, in dem du sitzt', + buy_desc = 'Kaufe das Fahrzeug kostenlos', + remove_vehicle_desc = 'Entferne das nächste Fahrzeug', + dealergoto_desc = 'Gehe zum Dealer', + dealerremove_desc = 'Entferne den Dealer', + kick_reason = 'Kick-Grund', + confirm_kick = 'Kick bestätigen', + ban_reason = 'Ban-Grund', + confirm_ban = 'Ban bestätigen', + sit_in_veh_desc = 'Setze in', + sit_in_veh_desc2 = "'s Fahrzeug", + clothing_menu_desc = 'Gebe das Kleidungsmenü aus', + hud_dev_mode_desc = 'Entwickler-Modus aktivieren/deaktivieren', + entity_view_desc = 'Informationen über Entitäten anzeigen', + entity_view_freeaim_desc = 'Aktiviere/Deaktiviere Entitätsinformationen über Freeaim', + entity_view_peds_desc = 'Informationen über Fußgänger in der Welt an/aus', + entity_view_vehicles_desc = 'Fahrzeuginformationen in der Welt an/aus', + entity_view_objects_desc = 'Objektinformationen in der Welt an/aus', + entity_view_freeaim_copy_desc = 'Kopiere die Free-Aim-Entitätsinfo in die Zwischenablage', + spawn_weapons_desc = 'Spawne eine beliebige Waffe', + max_mod_desc = 'Maximiere die Mods des aktuellen Fahrzeugs', + }, + time = { + ban_length = 'Ban-Länge', + onehour = '1 Stunde', + sixhour = '6 Stunden', + twelvehour = '12 Stunden', + oneday = '1 Tag', + threeday = '3 Tage', + oneweek = '1 Woche', + onemonth = '1 Monat', + threemonth = '3 Monate', + sixmonth = '6 Monate', + oneyear = '1 Jahr', + permanent = 'Permanent', + self = 'Selbst', + changed = 'Zeit geändert zu %{time} Std 00 Min', + }, + weather = { + extra_sunny = 'Extra sonnig', + extra_sunny_desc = 'Ich schmelze!', + clear = 'Klar', + clear_desc = 'Ein perfekter Tag!', + neutral = 'Neutral', + neutral_desc = 'Nur ein normaler Tag!', + smog = 'Smog', + smog_desc = 'Rauchmaschine!', + foggy = 'Nebel', + foggy_desc = 'Rauchmaschine x2!', + overcast = 'Bedeckt', + overcast_desc = 'Nicht zu sonnig!', + clouds = 'Wolken', + clouds_desc = 'Wo ist die Sonne?', + clearing = 'Aufklarend', + clearing_desc = 'Die Wolken verziehen sich!', + rain = 'Regen', + rain_desc = 'Lass es regnen!', + thunder = 'Gewitter', + thunder_desc = 'Lauf und versteck dich!', + snow = 'Schnee', + snow_desc = 'Ist es kalt hier?', + blizzard = 'Blizzard', + blizzed_desc = 'Schneemaschine?', + light_snow = 'Leichter Schnee', + light_snow_desc = 'Weihnachtsgefühle kommen auf!', + heavy_snow = 'Starker Schneefall (XMAS)', + heavy_snow_desc = 'Schneeballschlacht!', + halloween = 'Halloween', + halloween_desc = 'Was war das für ein Geräusch?!', + weather_changed = 'Wetter gewechselt zu: %{value}', + }, + commands = { + blips_for_player = 'Zeige Blips für Spieler (nur Admin)', + player_name_overhead = 'Zeige Spielernamen über dem Kopf (nur Admin)', + coords_dev_command = 'Aktiviere Koordinatenanzeige für Entwickler (nur Admin)', + toogle_noclip = 'Wechsle in den NoClip-Modus (nur Admin)', + save_vehicle_garage = 'Speichere Fahrzeug in deiner Garage (nur Admin)', + make_announcement = 'Mach eine Ansage (nur Admin)', + open_admin = 'Öffne Admin-Menü (nur Admin)', + staffchat_message = 'Sende Nachricht an alle Staff-Mitglieder (nur Admin)', + nui_focus = 'Gib einem Spieler NUI-Fokus (nur Admin)', + warn_a_player = 'Verwarne einen Spieler (nur Admin)', + check_player_warning = 'Prüfe Spielerwarnungen (nur Admin)', + delete_player_warning = 'Lösche Spielerwarnungen (nur Admin)', + reply_to_report = 'Antworte auf einen Report (nur Admin)', + change_ped_model = 'Ändere Ped-Modell (nur Admin)', + set_player_foot_speed = 'Setze Spielergeschwindigkeit zu Fuß (nur Admin)', + report_toggle = 'Durchsuche eingehende Reports (nur Admin)', + kick_all = 'Kicke alle Spieler', + ammo_amount_set = 'Setze Munitionsstückzahl (nur Admin)', + } +} + +if GetConvar('qb_locale', 'en') == 'de' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/en.lua b/resources/[core]/ui-admin/locales/en.lua new file mode 100644 index 0000000..1ca41e8 --- /dev/null +++ b/resources/[core]/ui-admin/locales/en.lua @@ -0,0 +1,278 @@ +local Translations = { + error = { + blips_deactivated = 'Blips deactivated', + names_deactivated = 'Names deactivated', + changed_perm_failed = 'Choose a group!', + missing_reason = 'You must give a reason!', + invalid_reason_length_ban = 'You must give a Reason and set a Length for the ban!', + no_store_vehicle_garage = 'You cant store this vehicle in your garage..', + no_vehicle = 'You are not in a vehicle..', + no_weapon = 'You dont have a weapon in your hands..', + no_free_seats = 'The vehicle has no free seats!', + failed_vehicle_owner = 'This vehicle is already yours..', + not_online = 'This player is not online', + no_receive_report = 'You are not receiving reports', + failed_set_speed = 'You did not set a speed.. (`fast` for super-run, `normal` for normal)', + failed_set_model = 'You did not set a model..', + failed_entity_copy = 'No freeaim entity info to copy to clipboard!', + }, + success = { + blips_activated = 'Blips activated', + names_activated = 'Names activated', + coords_copied = 'Coordinates copied to clipboard!', + heading_copied = 'Heading copied to clipboard!', + changed_perm = 'Authority group changed', + entered_vehicle = 'Entered vehicle', + success_vehicle_owner = 'The vehicle is now yours!', + receive_reports = 'You are receiving reports', + entity_copy = 'Freeaim entity info copied to clipboard!', + spawn_weapon = 'You have spawned a Weapon ', + noclip_enabled = 'No-clip enabled', + noclip_disabled = 'No-clip disabled', + }, + info = { + ped_coords = 'Ped Coordinates:', + vehicle_dev_data = 'Vehicle Developer Data:', + ent_id = 'Entity ID:', + net_id = 'Net ID:', + net_id_not_registered = 'Not registered', + model = 'Model', + hash = 'Hash', + eng_health = 'Engine Health:', + body_health = 'Body Health:', + go_to = 'Go to', + remove = 'Remove', + confirm = 'Confirm', + reason_title = 'Reason', + length = 'Length', + options = 'Options', + position = 'Position', + your_position = 'to your position', + open = 'Open', + inventories = 'inventories', + reason = 'you need to give a reason', + give = 'give', + id = 'ID:', + player_name = 'Player Name', + obj = 'Obj', + ammoforthe = '+%{value} Ammo for the %{weapon}', + kicked_server = 'You have been kicked from the server', + check_discord = '🔸 Check our Discord for more information: ', + banned = 'You have been banned:', + ban_perm = '\n\nYour ban is permanent.\n🔸 Check our Discord for more information: ', + ban_expires = '\n\nBan expires: ', + rank_level = 'Your Permission Level Is Now ', + admin_report = 'Admin Report - ', + staffchat = 'STAFFCHAT - ', + warning_chat_message = '^8WARNING ^7 You have been warned by', + warning_staff_message = '^8WARNING ^7 You have warned ', + no_reason_specified = 'No reason specified', + server_restart = 'Server restart, check our Discord for more information: ', + entity_view_distance = 'Entity view distance set to: %{distance} meters', + entity_view_info = 'Entity Information', + entity_view_title = 'Freeaim Mode', + entity_freeaim_delete = 'Delete Entity', + entity_freeaim_freeze = 'Freeze Entity', + entity_freeaim_coords = 'Copy Vec3', + coords_copied = 'Copied Coords', + entity_frozen = 'Frozen', + entity_unfrozen = 'Unfrozen', + model_hash = 'Model hash:', + obj_name = 'Object name:', + ent_owner = 'Entity owner:', + cur_health = 'Current Health:', + max_health = 'Max Health:', + armour = 'Armour:', + rel_group = 'Relation Group:', + rel_to_player = 'Relation to Player:', + rel_group_custom = 'Custom Relationship', + veh_acceleration = 'Acceleration:', + veh_cur_gear = 'Current Gear:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Dist:', + obj_heading = 'Heading:', + obj_coords = 'Coords:', + obj_rot = 'Rotation:', + obj_velocity = 'Velocity:', + obj_unknown = 'Unknown', + you_have = 'You have ', + freeaim_entity = ' the freeaim entity', + entity_del = 'Entity deleted', + entity_del_error = 'Error deleting entity', + }, + menu = { + admin_menu = 'Admin Menu', + admin_options = 'Admin Options', + online_players = 'Online Players', + manage_server = 'Manage Server', + weather_conditions = 'Available Weather Options', + dealer_list = 'Dealer List', + ban = 'Ban', + kick = 'Kick', + permissions = 'Permissions', + developer_options = 'Developer Options', + vehicle_options = 'Vehicle Options', + vehicle_categories = 'Vehicle Categories', + vehicle_models = 'Vehicle Models', + player_management = 'Player Management', + server_management = 'Server Management', + vehicles = 'Vehicles', + noclip = 'NoClip', + revive = 'Revive', + invisible = 'Invisible', + god = 'Godmode', + names = 'Names', + blips = 'Blips', + weather_options = 'Weather Options', + server_time = 'Server Time', + time = 'Time', + copy_vector3 = 'Copy vector3', + copy_vector4 = 'Copy vector4', + display_coords = 'Display Coords', + copy_heading = 'Copy Heading', + vehicle_dev_mode = 'Vehicle Dev Mode', + spawn_vehicle = 'Spawn Vehicle', + fix_vehicle = 'Fix Vehicle', + buy = 'Buy', + remove_vehicle = 'Remove Vehicle', + edit_dealer = 'Edit Dealer ', + dealer_name = 'Dealer Name', + category_name = 'Category Name', + kill = 'Kill', + freeze = 'Freeze', + spectate = 'Spectate', + bring = 'Bring', + sit_in_vehicle = 'Sit in vehicle', + open_inv = 'Open Inventory', + give_clothing_menu = 'Give Clothing Menu', + hud_dev_mode = 'Dev Mode (qb-hud)', + entity_view_options = 'Entity View Mode', + entity_view_distance = 'Set View Distance', + entity_view_freeaim = 'Freeaim Mode', + entity_view_peds = 'Display Peds', + entity_view_vehicles = 'Display Vehicles', + entity_view_objects = 'Display Objects', + entity_view_freeaim_copy = 'Copy Freeaim Entity Info', + spawn_weapons = 'Spawn Weapons', + max_mods = 'Max car mods', + }, + desc = { + admin_options_desc = 'Misc. Admin Options', + player_management_desc = 'View List Of Players', + server_management_desc = 'Misc. Server Options', + vehicles_desc = 'Vehicle Options', + dealer_desc = 'List of Existing Dealers', + noclip_desc = 'Enable/Disable NoClip', + revive_desc = 'Revive Yourself', + invisible_desc = 'Enable/Disable Invisibility', + god_desc = 'Enable/Disable God Mode', + names_desc = 'Enable/Disable Names overhead', + blips_desc = 'Enable/Disable Blips for players in maps', + weather_desc = 'Change The Weather', + developer_desc = 'Misc. Dev Options', + vector3_desc = 'Copy vector3 To Clipboard', + vector4_desc = 'Copy vector4 To Clipboard', + display_coords_desc = 'Show Coords On Screen', + copy_heading_desc = 'Copy Heading to Clipboard', + vehicle_dev_mode_desc = 'Display Vehicle Information', + delete_laser_desc = 'Enable/Disable Laser', + spawn_vehicle_desc = 'Spawn a vehicle', + fix_vehicle_desc = 'Fix the vehicle you are in', + buy_desc = 'Buy the vehicle for free', + remove_vehicle_desc = 'Remove closest vehicle', + dealergoto_desc = 'Goto dealer', + dealerremove_desc = 'Remove dealer', + kick_reason = 'Kick reason', + confirm_kick = 'Confirm the kick', + ban_reason = 'Ban reason', + confirm_ban = 'Confirm the ban', + sit_in_veh_desc = 'Sit in', + sit_in_veh_desc2 = "'s vehicle", + clothing_menu_desc = 'Give the Cloth menu to', + hud_dev_mode_desc = 'Enable/Disable Developer Mode', + entity_view_desc = 'View information about entities', + entity_view_freeaim_desc = 'Enable/Disable entity info via freeaim', + entity_view_peds_desc = 'Enable/Disable ped info in the world', + entity_view_vehicles_desc = 'Enable/Disable vehicle info in the world', + entity_view_objects_desc = 'Enable/Disable object info in the world', + entity_view_freeaim_copy_desc = 'Copies the Free Aim entity info to clipboard', + spawn_weapons_desc = 'Spawn Any Weapon.', + max_mod_desc = 'Max mod your current vehicle', + }, + time = { + ban_length = 'Ban Length', + onehour = '1 hour', + sixhour = '6 hours', + twelvehour = '12 hours', + oneday = '1 Day', + threeday = '3 Days', + oneweek = '1 Week', + onemonth = '1 Month', + threemonth = '3 Months', + sixmonth = '6 Months', + oneyear = '1 Year', + permanent = 'Permanent', + self = 'Self', + changed = 'Time changed to %{time} hs 00 min', + }, + weather = { + extra_sunny = 'Extra Sunny', + extra_sunny_desc = "I'm Melting!", + clear = 'Clear', + clear_desc = 'The Perfect Day!', + neutral = 'Neutral', + neutral_desc = 'Just A Regular Day!', + smog = 'Smog', + smog_desc = 'Smoke Machine!', + foggy = 'Foggy', + foggy_desc = 'Smoke Machine x2!', + overcast = 'Overcast', + overcast_desc = 'Not Too Sunny!', + clouds = 'Clouds', + clouds_desc = "Where's The Sun?", + clearing = 'Clearing', + clearing_desc = 'Clouds Start To Clear!', + rain = 'Rain', + rain_desc = 'Make It Rain!', + thunder = 'Thunder', + thunder_desc = 'Run and Hide!', + snow = 'Snow', + snow_desc = 'Is It Cold Out Here?', + blizzard = 'Blizzard', + blizzed_desc = 'Snow Machine?', + light_snow = 'Light Snow', + light_snow_desc = 'Starting To Feel Like Christmas!', + heavy_snow = 'Heavy Snow (XMAS)', + heavy_snow_desc = 'Snowball Fight!', + halloween = 'Halloween', + halloween_desc = 'What Was That Noise?!', + weather_changed = 'Weather Changed To: %{value}', + }, + commands = { + blips_for_player = 'Show blips for players (Admin Only)', + player_name_overhead = 'Show player name overhead (Admin Only)', + coords_dev_command = 'Enable coord display for development stuff (Admin Only)', + toogle_noclip = 'Toggle noclip (Admin Only)', + save_vehicle_garage = 'Save Vehicle To Your Garage (Admin Only)', + make_announcement = 'Make An Announcement (Admin Only)', + open_admin = 'Open Admin Menu (Admin Only)', + staffchat_message = 'Send A Message To All Staff (Admin Only)', + nui_focus = 'Give A Player NUI Focus (Admin Only)', + warn_a_player = 'Warn A Player (Admin Only)', + check_player_warning = 'Check Player Warnings (Admin Only)', + delete_player_warning = 'Delete Players Warnings (Admin Only)', + reply_to_report = 'Reply To A Report (Admin Only)', + change_ped_model = 'Change Ped Model (Admin Only)', + set_player_foot_speed = 'Set Player Foot Speed (Admin Only)', + report_toggle = 'Toggle Incoming Reports (Admin Only)', + kick_all = 'Kick all players', + ammo_amount_set = 'Set Your Ammo Amount (Admin Only)', + } +} + +Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true +}) diff --git a/resources/[core]/ui-admin/locales/es.lua b/resources/[core]/ui-admin/locales/es.lua new file mode 100644 index 0000000..cd55f2e --- /dev/null +++ b/resources/[core]/ui-admin/locales/es.lua @@ -0,0 +1,279 @@ +local Translations = { + error = { + blips_deactivated = 'Blips desactivados', + names_deactivated = 'Nombres desactivados', + changed_perm_failed = 'Elige un grupo!', + missing_reason = '¡Debes proporcionar una razón!', + invalid_reason_length_ban = '¡Debes dar una razón y establecer una duración para el Ban!', + no_store_vehicle_garage = 'No puede guardar este vehículo en su garaje..', + no_vehicle = 'No estás en un vehículo..', + no_weapon = 'No tienes un arma en tus manos..', + no_free_seats = 'The vehicle has no free seats!', + failed_vehicle_owner = 'Este vehículo ya es tuyo..', + not_online = 'Este jugador no está en línea.', + no_receive_report = 'No estás recibiendo reportes', + failed_set_speed = 'No pusiste una velocidad.. (`fast` para super-rapido, `normal` para normal)', + failed_set_model = 'No estableciste un modelo..', + failed_entity_copy = '¡No hay información de entidad de freeaim para copiar al portapapeles!', + }, + success = { + blips_activated = 'Blips activados', + names_activated = 'Nombres activados', + coords_copied = '¡Coordenadas copiadas al portapapeles!', + heading_copied = '¡Encabezado copiado al portapapeles!', + changed_perm = 'Grupo de autoridad cambiado', + entered_vehicle = 'Vehículo ingresado', + success_vehicle_owner = '¡El vehículo ahora es tuyo!', + receive_reports = 'Estás recibiendo reports', + entity_copy = '¡Información de la entidad Freeaim copiada al portapapeles!', + spawn_weapon = 'Has generado un arma ', + noclip_enabled = 'No-clip activado', + noclip_disabled = 'No-clip desactivado', + }, + info = { + ped_coords = 'Coordenadas de Ped:', + vehicle_dev_data = 'Datos del desarrollador del vehículo:', + ent_id = 'ID de la entidad:', + net_id = 'ID Net:', + net_id_not_registered = 'No registrado', + model = 'Modelo: ', + hash = 'Hash', + eng_health = 'Integridad del motor:', + body_health = 'Integridad estrucutural:', + go_to = 'Ir a', + remove = 'Eliminar', + confirm = 'Confirmar', + reason_title = 'Razón', + length = 'Duración', + options = 'Opciones', + position = 'Posición', + your_position = 'a tu posición', + open = 'Abrir', + inventories = 'inventarios', + reason = 'Tienes que dar una razón', + give = 'dar', + id = 'ID:', + player_name = 'Nombre del jugador', + obj = 'Obj', + ammoforthe = '+%{value} Munición para %{weapon}', + kicked_server = 'Te han kickeado del servidor.', + check_discord = '🔸 Revisa nuestro Discord para más información: ', + banned = 'Has sido baneado:', + ban_perm = '\n\nTu banneo es permanente.\n🔸 Revisa nuestro Discord para más información: ', + ban_expires = '\n\n Tu Ban expira en: ', + rank_level = 'Su nivel de permiso es ahora ', + admin_report = 'Reporte de administración - ', + staffchat = 'STAFFCHAT - ', + warning_chat_message = '^8ADVERTENCIA ^7 Has sido advertido por', + warning_staff_message = '^8ADVERTENCIA ^7 Has advertido ', + no_reason_specified = 'Sin motivo especificado', + server_restart = 'Reinicio del servidor, Revisa nuestro Discord para más información: ', + entity_view_distance = 'Distancia de visualización de la entidad establecida en: %{distance} metros', + entity_view_info = 'Información de la entidad', + entity_view_title = 'Modo de puntería libre de la entidad', + entity_freeaim_delete = 'Eliminar entidad', + entity_freeaim_freeze = 'Congelar entidad', + entity_frozen = 'Congelado', + entity_unfrozen = 'Descongelado', + model_hash = 'Modelo hash:', + obj_name = 'Nombre del objeto:', + ent_owner = 'Propietario de la entidad:', + cur_health = 'Salud actual:', + max_health = 'Salud máxima:', + armadura = 'Armadura:', + rel_group = 'Grupo de Relación:', + rel_to_player = 'Relación con el jugador:', + rel_group_custom = 'Relación personalizada', + veh_acceleration = 'Aceleración:', + veh_cur_gear = 'Velocidad actual:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Dist:', + obj_heading = 'Título:', + obj_coords = 'Coordenadas:', + obj_rot = 'Rotación:', + obj_velocity = 'Velocidad:', + obj_unknown = 'Desconocido', + you_have = 'Tienes', + freeaim_entity = 'la entidad freeaim', + entity_del = 'Entidad eliminada', + entity_del_error = 'Error al eliminar la entidad', + }, + menu = { + admin_menu = 'Menú de administración', + admin_options = 'Opciones de administración', + online_players = 'Jugadores en línea', + manage_server = 'Administrar servidor', + weather_conditions = 'Opciones meteorológicas disponibles', + dealer_list = 'Lista de distribuidores', + ban = 'Ban', + kick = 'Kick', + permissions = 'Permisos', + developer_options = 'Opciones de desarrollador', + vehicle_options = 'Opciones de vehículos', + vehicle_categories = 'Categorías de vehículos', + vehicle_models = 'Modelos de vehículos', + player_management = 'Gestión de jugadores', + server_management = 'Administración del servidor', + vehicles = 'Vehículos', + noclip = 'NoClip', + revive = 'Revivir', + invisible = 'Invisible', + god = 'Modo Dios', + names = 'Nombres', + blips = 'Blips', + weather_options = 'Opciones meteorológicas', + server_time = 'Hora del Servidor', + time = 'Hora', + copy_vector3 = 'Copiar vector3', + copy_vector4 = 'Copiar vector4', + display_coords = 'Mostrar coordenadas', + copy_heading = 'Copiar Encabezado', + vehicle_dev_mode = 'Modo de desarrollo de vehículos', + spawn_vehicle = 'Generación de Vehículo', + fix_vehicle = 'Arreglar vehículo', + buy = 'Comprar', + remove_vehicle = 'Eliminar vehículo', + edit_dealer = 'Editar distribuidor ', + dealer_name = 'Nombre del distribuidor', + category_name = 'Nombre de la categoría', + kill = 'Matar', + freeze = 'Congelar', + spectate = 'Espectar', + bring = 'Traer', + sit_in_vehicle = 'Sentar en vehículo', + open_inv = 'Abrir el inventario', + give_clothing_menu = 'Dar menú de ropa', + hud_dev_mode = 'Modo de desarrollo (qb-hud)', + entity_view_options = 'Modo de vista de entidad', + entity_view_distance = 'Establecer distancia de visualización', + entity_view_freeaim = 'Modo de puntería libre', + entity_view_peds = 'Mostrar peds', + entity_view_vehicles = 'Mostrar vehículos', + entity_view_objects = 'Mostrar objetos', + entity_view_freeaim_copy = 'Copiar información de la entidad Freeaim', + spawn_weapons = 'Generar arma', + max_mods = 'Máximas modificaciones de vehículo', + }, + desc = { + admin_options_desc = 'Varias opciones de administración', + player_management_desc = 'Ver lista de jugadores', + server_management_desc = 'Varias opciones del servidor', + vehicles_desc = 'Opciones de vehículos', + dealer_desc = 'Lista de distribuidores existentes', + noclip_desc = 'Habilitar/Deshabilitar NoClip', + revive_desc = 'Revivirte a ti mismo', + invisible_desc = 'Habilitar/Deshabilitar Invisibilidad', + god_desc = 'Habilitar/Deshabilitar Modo Dios', + names_desc = 'Habilitar/Deshabilitar nombres sobre la cabeza', + blips_desc = 'Habilitar/Deshabilitar Blips para jugadores en mapas', + weather_desc = 'Cambiar el clima', + developer_desc = 'Varias opciones de desarrollo', + vector3_desc = 'Copiar vector3 Al portapapeles', + vector4_desc = 'Copiar vector4 Al portapapeles', + display_coords_desc = 'Mostrar coordenadas en pantalla', + copy_heading_desc = 'Copiar encabezado al Portapapeles', + vehicle_dev_mode_desc = 'Mostrar información del vehículo', + delete_laser_desc = 'Habilitar/Deshabilitar Laser', + spawn_vehicle_desc = 'Generar un vehículo', + fix_vehicle_desc = 'Reparar el vehículo en el que se encuentra', + buy_desc = 'Compra el vehículo gratis', + remove_vehicle_desc = 'Eliminar vehículo más cercano', + dealergoto_desc = 'Ir al distribuidor', + dealerremove_desc = 'Eliminar distribuidor', + kick_reason = 'Razón del Kick', + confirm_kick = 'Confirmar el Kick', + ban_reason = 'Razón del Ban', + confirm_ban = 'Confirmar el ban', + sit_in_veh_desc = 'Sentar en', + sit_in_veh_desc2 = "'s vehículo", + clothing_menu_desc = 'Dale el menú de Ropa a', + hud_dev_mode_desc = 'Habilitar/Deshabilitar Modo desarrollador', + entity_view_desc = 'Ver información sobre las entidades', + entity_view_freeaim_desc = 'Habilitar/Deshabilitar la información de la entidad a través de freeaim', + entity_view_peds_desc = 'Habilitar/Deshabilitar información de ped en el mundo', + entity_view_vehicles_desc = 'Habilitar/Deshabilitar información de vehículos en el mundo', + entity_view_objects_desc = 'Habilitar/Deshabilitar la información del objeto en el mundo', + entity_view_freeaim_copy_desc = 'Copia la información de la entidad Free Aim al portapapeles', + spawn_weapons_desc = 'Genera cualquier arma.', + max_mod_desc = 'Modificaciones del vehículo actual al máximo', + }, + time = { + ban_length = 'Duración del Ban', + onehour = '1 hora', + sixhour = '6 horas', + twelvehour = '12 horas', + oneday = '1 Dia', + threeday = '3 Días', + oneweek = '1 Semana', + onemonth = '1 Mes', + threemonth = '3 Meses', + sixmonth = '6 Meses', + oneyear = '1 Año', + permanent = 'Permanente', + self = 'Uno mismo', + changed = 'El tiempo cambió a %{time} hrs 00 min', + }, + weather = { + extra_sunny = 'Extra soleado', + extra_sunny_desc = '¡Me estoy derritiendo!', + clear = 'Claro', + clear_desc = '¡El día perfecto!', + neutral = 'Neutral', + neutral_desc = '¡Solo un día normal!', + smog = 'Niebla', + smog_desc = '¡Maquina de humo!', + foggy = 'Neblinoso', + foggy_desc = '¡Maquina de humo x2!', + overcast = 'Nublado', + overcast_desc = '¡No demasiado soleado!', + clouds = 'Nubes', + clouds_desc = '¿Dónde está el sol?', + clearing = 'Despejado', + clearing_desc = '¡Las nubes comienzan a despejarse!', + rain = 'Lluvia', + rain_desc = '¡Haz que llueva!', + thunder = 'Truenos', + thunder_desc = '¡Corre a esconderte!', + snow = 'Nieve', + snow_desc = '¿Hace frío aquí?', + blizzard = 'Tormenta de nieve', + blizzed_desc = '¿Maquina de nieve?', + light_snow = 'Nieve ligera', + light_snow_desc = '¡Empezando a sentirse como la Navidad!', + heavy_snow = 'Fuertes nevadas (NAVIDAD)', + heavy_snow_desc = '¡Guerra de nieve!', + halloween = 'Halloween', + halloween_desc = '¡¿Que fue ese ruido?!', + weather_changed = 'Clima cambiado a: %{value}', + }, + commands = { + blips_for_player = 'Mostrar blips para los jugadores (solo administrador)', + player_name_overhead = 'Mostrar el nombre del jugador en la parte superior (solo administrador)', + coords_dev_command = 'Habilitar visualización de coordenadas para material de desarrollo (solo administrador)', + toogle_noclip = 'Alternar noclip (solo administrador)', + save_vehicle_garage = 'Guarde el vehículo en su garaje (solo administrador)', + make_announcement = 'Hacer un anuncio (solo administrador)', + open_admin = 'Abrir menú de administración (solo administrador)', + staffchat_message = 'Enviar un mensaje a todo el personal (solo administrador)', + nui_focus = 'Give A Player NUI Focus (solo administrador)', + warn_a_player = 'Advertir a un jugador (solo administrador)', + check_player_warning = 'Comprobar las advertencias del jugador (solo administrador)', + delete_player_warning = 'Eliminar advertencias de los jugadores (solo administrador)', + reply_to_report = 'Responder a un Reporte (solo administrador)', + change_ped_model = 'Cambiar modelo de Ped (solo administrador)', + set_player_foot_speed = 'Establecer la velocidad del pie del jugador (solo administrador)', + report_toggle = 'Alternar reportes entrantes (solo administrador)', + kick_all = 'Kick todos los jugadores', + ammo_amount_set = 'Establezca su cantidad de munición (solo administrador)', + } +} + +if GetConvar('qb_locale', 'en') == 'es' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/fi.lua b/resources/[core]/ui-admin/locales/fi.lua new file mode 100644 index 0000000..fdae401 --- /dev/null +++ b/resources/[core]/ui-admin/locales/fi.lua @@ -0,0 +1,271 @@ +local Translations = { + error = { + blips_deactivated = 'Blipit poistettu käytöstä', + names_deactivated = 'Nimet poistettu käytöstä', + changed_perm_failed = 'Valitse taso!', + missing_reason = 'Sinun täytyy antaa syy!', + invalid_reason_length_ban = 'Sinun täytyy antaa porttikiellon syy sekä pituus!', + no_store_vehicle_garage = 'Et voi tallettaa tätä ajoneuvoa talliisi!', + no_vehicle = 'Et ole ajoneuvossa', + no_weapon = 'Sinulla ei ole asetta kädessä!', + no_free_seats = 'Autossa ei ole vapaita paikkoja!', + failed_vehicle_owner = 'Ajoneuvo on jo omistuksessasi!', + not_online = 'Pelaaja ei ole onlinessa!', + no_receive_report = 'Et saa reporteja', + failed_set_speed = 'Et asettanut nopeutta(`fast` nopea, `normal` normaali)', + failed_set_model = 'Et asettanut mallia', + failed_entity_copy = 'Ei vapaan kohteen tietoja kopioitaviksi leikepöydälle!', + }, + success = { + blips_activated = 'Blipit aktivoitu!', + names_activated = 'Nimet aktivoitu!', + coords_copied = 'Koordinaatit kopioitu liitepöydälle!', + heading_copied = 'Suunta kopioitu liitepöydälle!', + changed_perm = 'Oikeustaso muuttui', + entered_vehicle = 'Menit ajoneuvoon', + success_vehicle_owner = 'Ajoneuvo on nyt omistuksessasi!', + receive_reports = 'Saat reportteja', + entity_copy = 'Freeaim-yksikön tiedot kopioitu leikepöydälle!', + }, + info = { + ped_coords = 'Pedin koordinaatit:', + vehicle_dev_data = 'Ajoneuvon datat:', + ent_id = 'Entity ID:', + net_id = 'Net ID:', + net_id_not_registered = 'Ei rekisteröity', + model = 'Malli', + hash = 'Hash', + eng_health = 'Moottorin taso:', + body_health = 'Korin taso:', + go_to = 'Mene luokse', + remove = 'Poista', + confirm = 'Vahvista', + reason_title = 'Syy', + length = 'Pituus', + options = 'Valinnat', + position = 'Sijainti', + your_position = 'sijaintiisi', + open = 'Avaa', + inventories = 'tavaraluettelot', + reason = 'sinun täytyy antaa syy', + give = 'anna', + id = 'ID:', + player_name = 'Pelaajan nimi', + obj = 'Obj', + ammoforthe = '+%{value} Ammuksia aseeseen %{weapon}', + kicked_server = 'Sinut on potkittu palvelimelta', + check_discord = '🔸 Katso Discordistamme lisätietoja:', + banned = 'Olet saanut porttikiellon palvelimelle:', + ban_perm = '\n\nPorttikieltosi ovat loputtomat.\n🔸 Katso Discordistamme lisätietoja:', + ban_expires = '\n\nPorttikieltosi päättyy', + rank_level = 'Oikeustasosi on nyt', + admin_report = 'Tee report ylläpidolle!', + staffchat = 'Ylläpitochat - ', + warning_chat_message = '^8WARNING ^7 Sinua on varoitettu, varoittaja:', + warning_staff_message = '^8WARNING ^7 Olet varoittanut ', + no_reason_specified = 'Ei syytä annettu', + server_restart = 'Palvelimen uudelleenkäynnistys, katso Discordistamme lisätietoja:', + entity_view_distance = 'Yksiön katseluetäisyys asetettu arvoon: %{distance} metriä', + entity_view_info = 'Yksiön tiedot', + entity_view_title = 'Entity Freeaim-tila', + entity_freeaim_delete = 'Poista kokonaisuus', + entity_freeaim_freeze = 'Jäädytä kokonaisuus', + entity_frozen = 'Jäädytetty', + entity_unfrozen = 'Jäädetty', + model_hash = 'Mallitiiviste:', + obj_name = 'Objektin nimi:', + ent_owner = 'Entiteetin omistaja:', + cur_health = 'Nykyinen kunto:', + max_health = 'Maksimiterveys:', + panssari = 'Haarniska:', + rel_group = 'Suhderyhmä:', + rel_to_player = 'Suhde pelaajaan:', + rel_group_custom = 'Muokattu suhde', + veh_acceleration = 'Kiihtyvyys:', + veh_cur_gear = 'Nykyinen varuste:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Jakaja:', + obj_heading = 'Otsikko:', + obj_coords = 'Coords:', + obj_rot = 'Kierto:', + obj_velocity = 'Nopeus:', + obj_unknown = 'Tuntematon', + you_have = 'Sinulla on ', + freeaim_entity = ' freeaim-kokonaisuus', + entity_del = 'Entiteetti poistettu', + entity_del_error = 'Virhe poistettaessa kokonaisuutta', + }, + menu = { + admin_menu = 'Ylläpitomenu', + admin_options = 'Ylläpitovaihtoehdot', + online_players = 'Pelaajat', + manage_server = 'Hallitse palvelinta', + weather_conditions = 'Käytettävissä olevat säävaihtoehdot', + dealer_list = 'Diilerilista', + ban = 'Anna porttikielto', + kick = 'Potki palvelimelta', + permissions = 'Oikeudet', + developer_options = 'Kehittäjän asetukset', + vehicle_options = 'Ajoneuvon vaihtoehdot', + vehicle_categories = 'Ajoneuvoluokat', + vehicle_models = 'Ajoneuvomallit', + player_management = 'Pelaajien hallinta', + server_management = 'Palvelimen hallinta', + vehicles = 'Ajoneuvot', + noclip = 'NoClip', + revive = 'Elvytä', + invisible = 'Näkymättömyys', + god = 'Kuolemattomuus', + names = 'Nimet', + blips = 'Blipit', + weather_options = 'Säävalinnat', + server_time = 'Palvelimen kellonaika', + time = 'Kellonaika', + copy_vector3 = 'Kopioi vector3', + copy_vector4 = 'Kopioi vector4', + display_coords = 'Näytä koordinaatit', + copy_heading = 'Kopioi suunta', + vehicle_dev_mode = 'Ajoneuvon DEV-mode', + spawn_vehicle = 'Spawnaa ajoneuvo', + fix_vehicle = 'Korjaa ajoneuvo', + buy = 'Osta', + remove_vehicle = 'Poista ajoneuvo', + edit_dealer = 'Muokkaa diileriä', + dealer_name = 'Diilerin nimi', + category_name = 'Kategorian nimi', + kill = 'Tapa', + freeze = 'Jäädytä', + spectate = 'Katso', + bring = 'Tuo', + sit_in_vehicle = 'Laita ajoneuvoon', + open_inv = 'Avaa tavaraluettelo', + give_clothing_menu = 'Avaa vaatemenu', + hud_dev_mode = 'Kehittäjätila (qb-hud)', + entity_view_options = 'Entity View Mode', + entity_view_distance = 'Aseta katseluetäisyys', + entity_view_freeaim = 'Freeaim-tila', + entity_view_peds = 'Näytä pedit', + entity_view_vehicles = 'Näyttöajoneuvot', + entity_view_objects = 'Näytä objektit', + entity_view_freeaim_copy = 'Kopioi Freeaim-yksikön tiedot', + }, + desc = { + admin_options_desc = 'Valinnat ylläpidolle', + player_management_desc = 'Katso listaa pelaajista', + server_management_desc = 'Palvelinvalintoja', + vehicles_desc = 'Valintoja ajoneuvolle', + dealer_desc = 'Lista aktiivisista diilereistä', + noclip_desc = 'NoClip käyttöön/pois käytöstä', + revive_desc = 'Elvytä itsesi', + invisible_desc = 'Ota näkymättömyys käyttöön/pois käytöstä', + god_desc = 'Ota kuolemattomuus käyttöön/pois käytöstä', + names_desc = 'Ota pelaajien päällä olevat nimet käyttöön/pois käytöstä', + blips_desc = 'Ota kartassa näkyvät pelaajien blipit käyttöön/pois käytöstä', + weather_desc = 'Vaihda säätä', + developer_desc = 'Kehittäjän työkaluja', + vector3_desc = 'Kopioi vector3 liitepöydälle', + vector4_desc = 'Kopioi vector4 liitepöydälle', + display_coords_desc = 'Näytä koordinaatit ylänäytössä', + copy_heading_desc = 'Kopioi suunta liitepöydälle', + vehicle_dev_mode_desc = 'Näytä ajoneuvon tiedot', + delete_laser_desc = 'Ota laser käyttöön/pois käytöstä', + spawn_vehicle_desc = 'Spawnaa ajoneuvo', + fix_vehicle_desc = 'Korjaa ajoneuvo jonka kyydissä olet', + buy_desc = 'Lunasta ajoneuvo omistukseesi', + remove_vehicle_desc = 'Poista lähin ajoneuvo', + dealergoto_desc = 'Mene diilerin luokse', + dealerremove_desc = 'Poista diileri', + kick_reason = 'Kickin syy', + confirm_kick = 'Vahvista kickit', + ban_reason = 'Porttikiellon syy', + confirm_ban = 'Vahvista porttikielto', + sit_in_veh_desc = 'Laita pelaaja ajoneuvoon', + sit_in_veh_desc2 = ':n ajoneuvo', + clothing_menu_desc = 'Anna pelaajalle vaatemenu', + entity_view_desc = 'Katso tietoja kokonaisuuksista', + entity_view_freeaim_desc = 'Ota käyttöön/poista käytöstä entiteettitiedot freeaimin kautta', + entity_view_peds_desc = 'Ota käyttöön/poista käytöstä ped-tiedot maailmassa', + entity_view_vehicles_desc = 'Ota käyttöön/poista käytöstä ajoneuvotiedot maailmassa', + entity_view_objects_desc = 'Ota käyttöön/poista käytöstä kohteen tiedot maailmassa', + entity_view_freeaim_copy_desc = 'Kopioi Free Aim -yksikön tiedot leikepöydälle', + }, + time = { + ban_length = 'Porttikiellon pituus', + onehour = '1 tunti', + sixhour = '6 tuntia', + twelvehour = '12 tuntia', + oneday = 'Päivä', + threeday = '3 päivää', + oneweek = '1 viikko', + onemonth = '1 kuukausi', + threemonth = '3 kuukautta', + sixmonth = '6 kuukautta', + oneyear = '1 vuosi', + permanent = 'Loputtomat', + self = 'Oma aika', + changed = 'Aika muutettu %{time} tuntia 00 minuuttia', + }, + weather = { + extra_sunny = 'Aurinkoista', + extra_sunny_desc = 'Aurinkoa, ei muuta!', + clear = 'Pilvetön', + clear_desc = 'Täydellinen päivä!', + neutral = 'Neutraali', + neutral_desc = 'Normaali päivä!', + smog = 'Sumu', + smog_desc = 'Savukone!', + foggy = 'Sumuisempaa', + foggy_desc = 'Savukone x2!', + overcast = 'Puolipilvistä', + overcast_desc = 'Ei kovin aurinkoista :(', + clouds = 'Pilvistä', + clouds_desc = 'Mihin se aurinko hävis?', + clearing = 'Pilvet poistumassa', + clearing_desc = 'Aurinko?', + rain = 'Sade', + rain_desc = 'Vettähän sieltä tulee...', + thunder = 'Ukkonen', + thunder_desc = 'Normaali Juhannuspäivä', + snow = 'Lunta', + snow_desc = 'Onko täällä kylmä?', + blizzard = 'Lumimyrsky', + blizzed_desc = 'Lumikone?', + light_snow = 'Kevyt lumi', + light_snow_desc = 'Täällähän on... joulu?', + heavy_snow = 'Keskitalvi', + heavy_snow_desc = 'Lumipallotaistelu', + halloween = 'Halloween', + halloween_desc = 'Mikä toi ääni oli?!', + weather_changed = 'Sää vaihdettu: %{value}', + }, + commands = { + blips_for_player = 'Näytä pelaajien blipit kartalla', + player_name_overhead = 'Näytä pelaajien nimet päänpäällä', + coords_dev_command = 'Ota käyttöön koordinaatit näytön yläosaan', + toogle_noclip = 'NoClip päälle/pois', + save_vehicle_garage = 'Tallenna ajoneuvo omaan talliisi', + make_announcement = 'Tee ilmoitus', + open_admin = 'Avaa ylläpitomenu', + staffchat_message = 'Lähetä viesti ylläpitochattiin', + nui_focus = 'Anna pelaajalle NUI focus', + warn_a_player = 'Varoita pelaajaa', + check_player_warning = 'Katso pelaajan varoituksia', + delete_player_warning = 'Posta pelaajan varoituksia', + reply_to_report = 'Vastaa reporttiin', + change_ped_model = 'Vaiha PED modelia', + set_player_foot_speed = 'Aseta pelaajan kävelynopeus', + report_toggle = 'Muuta, saatko reportteja', + kick_all = 'Kickaa kaikki pelaajat', + ammo_amount_set = 'Aseta aseesi panosmäärä', + } +} + +if GetConvar('qb_locale', 'en') == 'fi' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/fr.lua b/resources/[core]/ui-admin/locales/fr.lua new file mode 100644 index 0000000..1cc8b1d --- /dev/null +++ b/resources/[core]/ui-admin/locales/fr.lua @@ -0,0 +1,279 @@ +local Translations = { + error = { + blips_deactivated = 'Blips desactivés', + names_deactivated = 'Noms deactivés', + changed_perm_failed = 'Choisissez un groupe!', + missing_reason = 'Vous devez donner une raison!', + invalid_reason_length_ban = 'Vous devez donner une raison et spécifier une durée pour le ban!', + no_store_vehicle_garage = 'Vous ne pouvez pas ranger ce véhicule dans votre garage..', + no_vehicle = "Vous n'êtes pas dans un véhicule..", + no_weapon = "Vous n'avez pas d'arme dans vos mains..", + no_free_seats = "Le véhicule n'a pas de siège disponible!", + failed_vehicle_owner = 'Le véhicule vous appartient déjà..', + not_online = "Ce joueur n'est pas connecté", + no_receive_report = 'Vous ne recevez plus de reports', + failed_set_speed = "Vous n'avez pas spécifié de vitesse.. (`fast` pour super-run, `normal` pour normal)", + failed_set_model = "Vous n'avez pas mis de model..", + failed_entity_copy = "Aucune information d'entité freeaim à copier dans le presse-papier !", + }, + success = { + blips_activated = 'Blips activés', + names_activated = 'Noms activés', + coords_copied = 'Coordonnés copiés!', + heading_copied = 'Cap copiés!', + changed_perm = 'Autorité de groupe modifiée', + entered_vehicle = 'Vous êtes entré dans un véhicule', + success_vehicle_owner = 'Le véhicule vous appartients maintenant!', + receive_reports = 'Vous recevez des reports', + entity_copy = "Informations sur l'entité Freeaim copiées dans le presse-papier !", + spawn_weapon = 'Vous avez fait apparaître une arme ', + noclip_enabled = 'No-clip activé', + noclip_disabled = 'No-clip desactivé', + }, + info = { + ped_coords = 'Coordonnés du ped:', + vehicle_dev_data = 'Données de véhicule pour developpeur :', + ent_id = "ID de l'Entité:", + net_id = 'ID Net:', + net_id_not_registered = 'Non enregistré', + model = 'Model', + hash = 'Hash', + eng_health = 'Santé moteur:', + body_health = 'Santé carrosserie:', + go_to = 'Aller à', + remove = 'Retirer', + confirm = 'Confirmer', + reason_title = 'Raison', + length = 'durée', + options = 'Options', + position = 'Position', + your_position = 'a votre position', + open = 'Ouvrir', + inventories = 'inventaires', + reason = 'Vous devez donner une raison', + give = 'donner', + id = 'ID:', + player_name = 'Nom du joueur', + obj = 'Obj', + ammoforthe = '+%{value} Munitions pour: %{weapon}', + kicked_server = 'Vous avez été Kick du serveur !', + check_discord = "🔸 Allez sur le Discord pour plus d'informations: ", + banned = 'Vous avez été Ban:', + ban_perm = "\n\nVotre Ban est Permanent.\n🔸 Allez sur le Discord pour plus d'informations: ", + ban_expires = '\n\nLe ban expire dans: ', + rank_level = 'Votre nouveau niveau de Permissions est ', + admin_report = 'Report Admin - ', + staffchat = 'Chat Staff - ', + warning_chat_message = '^8WARNING ^7 Vous avez été Warn par', + warning_staff_message = '^8WARNING ^7 Vous avez warn ', + no_reason_specified = 'Pas de raison spécifiée', + server_restart = "Restart serveur, Allez sur le Discord pour plus d'informations: ", + entity_view_distance = "Distance de la vue de l'entité définie sur : %{distance} mètres", + entity_view_info = "Informations sur l'entité", + entity_view_title = "Mode de visée libre d'entité", + entity_freeaim_delete = "Supprimer l'entité", + entity_freeaim_freeze = "Geler l'entité", + entity_frozen = 'Gelé', + entity_unfrozen = 'Dégelé', + model_hash = 'Modèle de hachage :', + obj_name = "Nom de l'objet :", + ent_owner = "Propriétaire de l'entité :", + cur_health = 'Santé actuelle :', + max_health = 'Santé maximale :', + armure = 'Armure :', + rel_group = 'Groupe de relations :', + rel_to_player = 'Relation avec le joueur :', + rel_group_custom = 'Custom Relationship', + veh_acceleration = 'Accélération :', + veh_cur_gear = 'Équipement actuel :', + veh_speed_kph = 'Kph :', + veh_speed_mph = 'Mi/h :', + veh_rpm = 'Régime :', + dist_to_obj = 'Dist :', + obj_heading = 'Titre :', + obj_coords = 'Coords :', + obj_rot = 'Rotation :', + obj_velocity = 'Vitesse :', + obj_unknown = 'Inconnu', + you_have = 'Vous avez', + freeaim_entity = " l'entité freeaim", + entity_del = 'Entité supprimée', + entity_del_error = "Erreur lors de la suppression de l'entité", + }, + menu = { + admin_menu = 'Menu Admin', + admin_options = 'Options Admin', + online_players = 'Joueurs En Ligne', + manage_server = 'Gérer le serveur', + weather_conditions = 'Options météos disponible', + dealer_list = 'Liste de Dealeurs', + ban = 'Ban', + kick = 'Kick', + permissions = 'Permissions', + developer_options = 'Options Developpeurs', + vehicle_options = 'Options Véhicule', + vehicle_categories = 'Categories Véhicule', + vehicle_models = 'Modèles Vehicule', + player_management = 'Gérer des joueurs', + server_management = 'Gérer le serveur', + vehicles = 'Vehicules', + noclip = 'NoClip', + revive = 'Réanimer', + invisible = 'Invisible', + god = 'Godmode', + names = 'Noms', + blips = 'Blips', + weather_options = 'Options météo', + server_time = 'Temps du Serveur', + time = 'temps', + copy_vector3 = 'Copier vector3', + copy_vector4 = 'Copier vector4', + display_coords = 'Afficher Coords', + copy_heading = 'Copier Cap', + vehicle_dev_mode = 'Mode Dev Véhicule', + spawn_vehicle = 'Spawn Véhicule', + fix_vehicle = 'Réparer Véhicule', + buy = 'Acheter', + remove_vehicle = 'Supprimer un Vehicule', + edit_dealer = 'Modifier le Dealeur ', + dealer_name = 'Nom du Dealeur', + category_name = 'Nom de Catégorie', + kill = 'Kill', + freeze = 'Freeze', + spectate = 'Spectate', + bring = 'Ramener', + sit_in_vehicle = "S'asseoir dans le véhicule", + open_inv = "Ouvrir l'inventaire", + give_clothing_menu = 'Donner le menu vêtement', + hud_dev_mode = 'Mode développeur (qb-hud)', + entity_view_options = "Mode d'affichage d'entité", + entity_view_distance = 'Définir la distance de vue', + entity_view_freeaim = 'Mode de visée libre', + entity_view_peds = 'Afficher les Peds', + entity_view_vehicles = 'Afficher les véhicules', + entity_view_objects = 'Afficher les objets', + entity_view_freeaim_copy = "Copier les informations d'entité Freeaim", + spawn_weapons = 'Spawn Armes', + max_mods = 'Max mods véhicule', + }, + desc = { + admin_options_desc = 'Options Admin Divers', + player_management_desc = 'Voir La Liste Des Players', + server_management_desc = 'Divers Options Serveur', + vehicles_desc = 'Options Véhicule', + dealer_desc = 'Liste des Dealeurs Existant', + noclip_desc = 'Activer/Désactiver NoClip', + revive_desc = 'Réanimer Vous', + invisible_desc = 'Activer/Désactiver Invisibilité', + god_desc = 'Activer/Désactiver God Mode', + names_desc = 'Activer/Désactiver Noms', + blips_desc = 'Activer/Désactiver Blips des joueurs sur la carte', + weather_desc = 'Changer la Météo', + developer_desc = 'Options Dev Divers', + vector3_desc = 'Copier vector3', + vector4_desc = 'Copier vector4', + display_coords_desc = 'Afficher les coordonnées', + copy_heading_desc = 'Copier cap', + vehicle_dev_mode_desc = 'Afficher Information Véhicule', + delete_laser_desc = 'Activer/Désactiver Laser', + spawn_vehicle_desc = 'Spawn un vehicule', + fix_vehicle_desc = 'Réparer votre véhicule', + buy_desc = 'Acheter le véhicule gratuitement', + remove_vehicle_desc = 'Supprimer le véhicule le plus proche', + dealergoto_desc = 'Aller au dealeur', + dealerremove_desc = 'Supprimer le dealeur', + kick_reason = 'Raison du kick', + confirm_kick = 'Confirmer le kick', + ban_reason = 'Raison du ban', + confirm_ban = 'Confirmer le ban', + sit_in_veh_desc = "S'asseoir dans le véhicule de", + sit_in_veh_desc2 = '.', + clothing_menu_desc = 'Donner le menu vêtements à', + hud_dev_mode_desc = 'Activer/Désactiver le mode développeur', + entity_view_desc = 'Afficher les informations sur les entités', + entity_view_freeaim_desc = "Activer/Désactiver les informations sur l'entité via freeaim", + entity_view_peds_desc = 'Activer/Désactiver les infos ped dans le monde', + entity_view_vehicles_desc = 'Activer/Désactiver les informations sur les véhicules dans le monde', + entity_view_objects_desc = 'Activer/Désactiver les informations sur les objets dans le monde', + entity_view_freeaim_copy_desc = "Copie les informations de l'entité de visée libre dans le presse-papiers", + spawn_weapons_desc = "Faîtes apparaître n'importe quelle arme.", + max_mod_desc = 'Ajoutez tous les mods disponibles à votre véhicule', + }, + time = { + ban_length = 'Durée du Ban', + onehour = '1 Heure', + sixhour = '6 Heures', + twelvehour = '12 heures', + oneday = '1 Jour', + threeday = '3 Jours', + oneweek = '1 Semaine', + onemonth = '1 Mois', + threemonth = '3 Mois', + sixmonth = '6 Mois', + oneyear = '1 An', + permanent = 'Permanent', + self = 'sois-même', + changed = 'Temps Changé à %{time} hs 00 min', + }, + weather = { + extra_sunny = 'Extra Ensoleillé', + extra_sunny_desc = 'Je fond!', + clear = 'Claire', + clear_desc = 'Le jour parfait!', + neutral = 'Neute', + neutral_desc = 'Just A Regular Day!', + smog = 'Brouillard', + smog_desc = 'Machine à fumé!', + foggy = 'Brumeux', + foggy_desc = 'Machine a fumé x2!', + overcast = 'Ciel Couvert', + overcast_desc = 'pas très ensoleillé!', + clouds = 'Nuageux', + clouds_desc = 'Oû-est le soleil?', + clearing = 'Dégagé', + clearing_desc = "Les nuages s'en vont!", + rain = 'Pluie', + rain_desc = 'Make It Rain!', + thunder = 'Orage', + thunder_desc = 'Courez et Cachez vous!', + snow = 'Neige', + snow_desc = 'Fait-il froid dehors?', + blizzard = 'Blizzard', + blizzed_desc = 'Machine a neige?', + light_snow = 'Neige Légère', + light_snow_desc = 'Ca commence a sentir comme Nôel!', + heavy_snow = 'Neige épaisse (Nôel)', + heavy_snow_desc = 'Combat de boule de neige!', + halloween = 'Halloween', + halloween_desc = "C'était Quoi Ce Bruit ?!", + weather_changed = 'Météo changée à: %{value}', + }, + commands = { + blips_for_player = 'Affiche les blips des joueurs (Admin Only)', + player_name_overhead = 'Affiche le nom des joueurs (Admin Only)', + coords_dev_command = 'Affiche les coordonnées pour le dev (Admin Only)', + toogle_noclip = 'Active le noclip (Admin Only)', + save_vehicle_garage = 'Sauvegarde un véhicule dans votre garage (Admin Only)', + make_announcement = 'Fais une Annonce (Admin Only)', + open_admin = 'Ouvre le menu Admin (Admin Only)', + staffchat_message = 'Envoie un message a tous les staffs (Admin Only)', + nui_focus = 'Donner a un joueur le Focus NUI (Admin Only)', + warn_a_player = 'Warn Un Joueur (Admin Only)', + check_player_warning = "Check Les Warns d'un joueur (Admin Only)", + delete_player_warning = "Supprime les Warns d'un joueur (Admin Only)", + reply_to_report = 'Répond a un report (Admin Only)', + change_ped_model = 'Change le modèle du Ped (Admin Only)', + set_player_foot_speed = 'Défini la vitesse du joueur (Admin Only)', + report_toggle = 'Active les reports (Admin Only)', + kick_all = 'Kick tout les joueurs', + ammo_amount_set = 'Défini vos munitions (Admin Only)', + } +} + +if GetConvar('qb_locale', 'en') == 'fr' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/it.lua b/resources/[core]/ui-admin/locales/it.lua new file mode 100644 index 0000000..ca2fa24 --- /dev/null +++ b/resources/[core]/ui-admin/locales/it.lua @@ -0,0 +1,272 @@ +local Translations = { + error = { + blips_deactivated = 'Blips disattivati', + names_deactivated = 'Nomi disattivati', + changed_perm_failed = 'Scegli un gruppo!', + missing_reason = 'Devi inserire un motivo!', + invalid_reason_length_ban = 'Devi inserire un Motivo e impostare una lunghezza per il ban!', + no_store_vehicle_garage = 'Non puoi depositare questo veicolo nel tuo garage.', + no_vehicle = 'Non sei in un veicolo.', + no_weapon = 'Non hai un\'arma in mano.', + no_free_seats = 'Il veicolo non ha posti liberi!', + failed_vehicle_owner = 'Il veicolo è già tuo.', + not_online = 'Il giocatore non è online', + no_receive_report = 'Non stai ricevendo report', + failed_set_speed = 'Non hai impostato una velocità. (`fast` per super-corsa, `normal` per normale)', + failed_set_model = 'Non hai impostato un modello.', + failed_entity_copy = "Nessuna informazione sull'entità freeaim da copiare negli appunti!", + }, + success = { + blips_activated = 'Blips attivati', + names_activated = 'Nomi attivati', + coords_copied = 'Coordinate copiate negli appunti!', + heading_copied = 'Heading copiato negli appunti!', + changed_perm = 'Gruppo autoritario cambiato', + entered_vehicle = 'Entrato nel veicolo', + success_vehicle_owner = 'Il veicolo è ora tuo!', + receive_reports = 'Stai ricevendo report', + entity_copy = "Informazioni sull'entità Freeaim copiate negli appunti!", + }, + info = { + ped_coords = 'Coordinate Ped:', + vehicle_dev_data = 'Developer Data Veicolo:', + ent_id = 'Entity ID:', + net_id = 'Net ID:', + net_id_not_registered = 'Non registrato', + model = 'Modello', + hash = 'Hash', + eng_health = 'Vita Motore:', + body_health = 'Vita Carrozzeria:', + go_to = 'Vai', + remove = 'Rimuovi', + confirm = 'Conferma', + reason_title = 'Motivo', + length = 'Lunghezza', + options = 'Opzioni', + position = 'Posizione', + your_position = 'alla tua posizione', + open = 'Apri', + inventories = 'inventari', + reason = 'devi dare un motivo', + give = 'give', + id = 'ID:', + player_name = 'Nome giocatore', + obj = 'Obj', + ammoforthe = '+%{value} Munizioni per %{weapon}', + kicked_server = 'Sei stato kickato dal server', + check_discord = '🔸 Controlla il nostro Discord per più informazioni: ', + banned = 'Sei stato bannato:', + ban_perm = '\n\nIl tuo Ban è permanente.\n🔸 Controlla il nostro Discord per più informazioni: ', + ban_expires = '\n\nIl Ban scade: ', + rank_level = 'Il tuo livello di Permessi è ora ', + admin_report = 'Admin Report - ', + staffchat = 'STAFFCHAT - ', + warning_chat_message = '^8WARNING ^7 Sei stato warnato da', + warning_staff_message = '^8WARNING ^7 Hai warnato ', + no_reason_specified = 'Nessun motivo specificato', + server_restart = 'Restart del Server, Controlla il nostro Discord per più informazioni: ', + entity_view_distance = 'Distanza vista entità impostata su: %{distance} metri', + entity_view_info = "Informazioni sull'entità", + entity_view_title = 'Modalità obiettivo libero entità', + entity_freeaim_delete = 'Elimina entità', + entity_freeaim_freeze = 'Blocca entità', + entity_frozen = 'Congelato', + entity_unfrozen = 'Sbloccato', + model_hash = 'Hash modello:', + obj_name = 'Nome oggetto:', + ent_owner = 'Proprietario entità:', + cur_health = 'Stato attuale:', + max_health = 'Salute massima:', + armatura = 'Armatura:', + rel_group = 'Gruppo di relazioni:', + rel_to_player = 'Relazione con il giocatore:', + rel_group_custom = 'Relazione personalizzata', + veh_acceleration = 'Accelerazione:', + veh_cur_gear = 'Ingranaggio attuale:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Dist:', + obj_heading = 'Titolo:', + obj_coords = 'Coordinate:', + obj_rot = 'Rotazione:', + obj_velocity = 'Velocità:', + obj_unknown = 'Sconosciuto', + you_have = 'Hai', + freeaim_entity = "l'entità freeaim", + entity_del = 'Entità eliminata', + entity_del_error = "Errore durante l'eliminazione dell'entità", + }, + menu = { + admin_menu = 'Menu Admin', + admin_options = 'Opzioni Admin', + online_players = 'Giocatori Online', + manage_server = 'Gestione Server', + weather_conditions = 'Opzioni Clima', + dealer_list = 'Lista Rivenditori', + ban = 'Ban', + kick = 'kick', + permissions = 'Permessi', + developer_options = 'Opzioni Developer', + vehicle_options = 'Opzioni Veicolo', + vehicle_categories = 'Categorie Veicoli', + vehicle_models = 'Modelli Veicoli', + player_management = 'Gestione Giocatore', + server_management = 'Gestione Server', + vehicles = 'Veicoli', + noclip = 'NoClip', + revive = 'Rianima', + invisible = 'Invisibile', + god = 'Godmode', + names = 'Nomi', + blips = 'Blip', + weather_options = 'Opzioni Clima', + server_time = 'Tempo Server', + time = 'Tempo', + copy_vector3 = 'Copia vector3', + copy_vector4 = 'Copia vector4', + display_coords = 'Mostra Coords', + copy_heading = 'Copia Heading', + vehicle_dev_mode = 'Modalità Veicolo Dev', + spawn_vehicle = 'Spawna Veicolo', + fix_vehicle = 'Ripara Veicolo', + buy = 'Compra', + remove_vehicle = 'Rimuovi Veicolo', + edit_dealer = 'Modifica Rivenditore', + dealer_name = 'Nome Rivenditore', + category_name = 'Nome Categoria', + kill = 'Kill', + freeze = 'Freeze', + spectate = 'Specta', + bring = 'Bring', + sit_in_vehicle = 'Siedi nel veicolo', + open_inv = 'Apri Inventario', + give_clothing_menu = 'Dai Menu Vestiti', + hud_dev_mode = 'Modalità sviluppatore (qb-hud)', + entity_view_options = 'Modalità di visualizzazione entità', + entity_view_distance = 'Imposta distanza di visualizzazione', + entity_view_freeaim = 'Modalità obiettivo libero', + entity_view_peds = 'Visualizza Peds', + entity_view_vehicles = 'Visualizza veicoli', + entity_view_objects = 'Visualizza oggetti', + entity_view_freeaim_copy = "Copia informazioni sull'entità Freeaim", + }, + desc = { + admin_options_desc = 'Misc. Opzioni Admin', + player_management_desc = 'Vedi Lista Giocatori', + server_management_desc = 'Misc. Opzioni Server', + vehicles_desc = 'Opzioni Veicolo', + dealer_desc = 'Lista di rivenditori esistenti', + noclip_desc = 'Abilita/Disabilita NoClip', + revive_desc = 'Rianima Te Stesso', + invisible_desc = 'Abilita/Disabilita Invisibilità', + god_desc = 'Abilita/Disabilita God Mode', + names_desc = 'Abilita/Disabilita Nomi sopra la testa', + blips_desc = 'Abilita/Disabilita Blips per i giocatori sulla mappa', + weather_desc = 'Cambia il clima', + developer_desc = 'Misc. Opzioni Dev', + vector3_desc = 'Copia vector3 negli appunti', + vector4_desc = 'Copia vector4 negli appunti', + display_coords_desc = 'Mostra Coordinate su schermo', + copy_heading_desc = 'Copia Heading negli appunti', + vehicle_dev_mode_desc = 'Mostra informazioni veicolo', + delete_laser_desc = 'Abilita/Disabilita Laser', + spawn_vehicle_desc = 'Spawna un veicolo', + fix_vehicle_desc = 'Ripara il veicolo in cui sei dentro', + buy_desc = 'Compra il veicolo gratis', + remove_vehicle_desc = 'Rimuovi veicolo vicino', + dealergoto_desc = 'Vai dal rivenditore', + dealerremove_desc = 'Rimuovi rivenditore', + kick_reason = 'Motivo kick', + confirm_kick = 'Conferma il kick', + ban_reason = 'Motivo ban', + confirm_ban = 'Conferma il ban', + sit_in_veh_desc = 'Siediti nel veicolo di ', + sit_in_veh_desc2 = ' se ci sono posti liberi', + clothing_menu_desc = 'Apri il menu dei vestiti a', + hud_dev_mode_desc = 'Abilita/Disabilita modalità sviluppatore', + entity_view_desc = 'Visualizza informazioni sulle entità', + entity_view_freeaim_desc = 'Abilita/Disabilita informazioni entità tramite freeaim', + entity_view_peds_desc = 'Abilita/Disabilita informazioni ped nel mondo', + entity_view_vehicles_desc = 'Abilita/Disabilita informazioni sul veicolo nel mondo', + entity_view_objects_desc = 'Abilita/Disabilita informazioni oggetto nel mondo', + entity_view_freeaim_copy_desc = "Copia le informazioni sull'entità Obiettivo libero negli appunti", + }, + time = { + ban_length = 'Lunghezza ban', + onehour = '1 ora', + sixhour = '6 ore', + twelvehour = '12 ore', + oneday = '1 Giorno', + threeday = '3 Giorni', + oneweek = '1 Settimana', + onemonth = '1 Mese', + threemonth = '3 Mesi', + sixmonth = '6 Mesi', + oneyear = '1 Anno', + permanent = 'Permanente', + self = 'Self', + changed = 'Tempo cambiato a %{time} hs 00 min', + }, + weather = { + extra_sunny = 'Super Soleggiato', + extra_sunny_desc = 'Sto squagliando!', + clear = 'Pulito', + clear_desc = 'Il giorno perfetto!', + neutral = 'Neutrale', + neutral_desc = 'Giusto un giorno normalissimo!', + smog = 'Smog', + smog_desc = 'Macchina di fumo!', + foggy = 'Nebbia', + foggy_desc = 'Smoke Machine x2!', + overcast = 'Qualche Nuvola', + overcast_desc = 'Non troppo soleggiato!', + clouds = 'Nuvoloso', + clouds_desc = 'Dov\'è il sole?', + clearing = 'Schiarire', + clearing_desc = 'Le nuvole cominciano ad andarsene!', + rain = 'Pioggia', + rain_desc = 'Fai piovere!', + thunder = 'Temporale', + thunder_desc = 'Corri e nasconditi!', + snow = 'Neve', + snow_desc = 'Let it snow, let it snow, let it snow', + blizzard = 'Bufera', + blizzed_desc = 'Macchina di neve?', + light_snow = 'Neve leggera', + light_snow_desc = 'Sembra di sentire il Natale!', + heavy_snow = 'Neve Pesante (XMAS)', + heavy_snow_desc = 'Battaglie di palle di neve!', + halloween = 'Halloween', + halloween_desc = 'Cos\'era quel rumore?!', + weather_changed = 'Clima cambiato a: %{value}', + }, + commands = { + blips_for_player = 'Mostra blip per i giocatori (Solo Admin)', + player_name_overhead = 'Mostra nomi sopra la testa (Solo Admin)', + coords_dev_command = 'Abilita le coordinate per cose da dev (Solo Admin)', + toogle_noclip = 'Abilita noclip (Solo Admin)', + save_vehicle_garage = 'Salva veicolo nel tuo garage (Solo Admin)', + make_announcement = 'Fai un annuncio (Solo Admin)', + open_admin = 'Apri menu admin (Solo Admin)', + staffchat_message = 'Manda un messaggio allo staff (Solo Admin)', + nui_focus = 'Dai focus NUI ad un giocatore (Solo Admin)', + warn_a_player = 'Warna un giocatore (Solo Admin)', + check_player_warning = 'Controlla warn di un giocatore (Solo Admin)', + delete_player_warning = 'Elimina warn di un giocatore (Solo Admin)', + reply_to_report = 'Rispondi ad un report (Solo Admin)', + change_ped_model = 'Cambia modello ped (Solo Admin)', + set_player_foot_speed = 'Imposta velocità di camminata (Solo Admin)', + report_toggle = 'Abilia report in arrivo (Solo Admin)', + kick_all = 'Kicka tutti i giocatori (Solo Admin)', + ammo_amount_set = 'Imposta la quantità delle tue munizioni (Solo Admin)', + } +} + +if GetConvar('qb_locale', 'en') == 'it' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/nl.lua b/resources/[core]/ui-admin/locales/nl.lua new file mode 100644 index 0000000..61249ce --- /dev/null +++ b/resources/[core]/ui-admin/locales/nl.lua @@ -0,0 +1,279 @@ +local Translations = { + error = { + blips_deactivated = 'Blips gedeactiveerd', + names_deactivated = 'Namen gedeactiveerd', + changed_perm_failed = 'Kies een groep!', + missing_reason = 'Je moet een reden opgeven!', + invalid_reason_length_ban = 'Je moet een Reden opgeven en Duur van de ban!', + no_store_vehicle_garage = 'Je kan deze voertuig niet stallen in je garage..', + no_vehicle = 'Je zit niet in een voertuig..', + no_weapon = 'Je hebt geen wapen in je handen..', + no_free_seats = 'Voertuig heeft geen vrije zitplaatsen!', + failed_vehicle_owner = 'Dit voertuig is al van jou..', + not_online = 'Deze speler is niet online', + no_receive_report = 'Je ontvangt geen rapporten', + failed_set_speed = 'Je hebt geen snelheid ingesteld.. (`fast` voor super-run, `normal` voor normaal)', + failed_set_model = 'Je hebt geen model ingesteld..', + failed_entity_copy = 'Geen freeaim info te kopiëren naar klembord!', + }, + success = { + blips_activated = 'Blips geactiveerd', + names_activated = 'Namen geactiveerd', + coords_copied = 'Coördinaten gekopieerd naar klembord!', + heading_copied = 'Heading gekopieerd naar klembord!', + changed_perm = 'Autoriteitgroep gewijzigd', + entered_vehicle = 'Voertuig ingegaan', + success_vehicle_owner = 'Het voertuig is nu van jou!', + receive_reports = 'Je ontvangt rapporten', + entity_copy = 'Freeaim entiteit info gekopieerd naar klembord!', + spawn_weapon = 'Je hebt een Wapen gespawned ', + noclip_enabled = 'No-clip geactiveerd', + noclip_disabled = 'No-clip gedeactiveerd', + }, + info = { + ped_coords = 'Ped Coördinaten:', + vehicle_dev_data = 'Gegevens voertuigontwikkelaar:', + ent_id = 'Entiteit ID:', + net_id = 'Net ID:', + net_id_not_registered = 'Niet geregistreerd', + model = 'Model', + hash = 'Hash', + eng_health = 'Motor Gezondheid:', + body_health = 'Chasis Gezondheid:', + go_to = 'Ga naar', + remove = 'Verwijder', + confirm = 'Bevestigen', + reason_title = 'Reden', + length = 'Duur', + options = 'Opties', + position = 'Positie', + your_position = 'naar jouw positie', + open = 'Open', + inventories = 'inventarissen', + reason = 'je moet een reden opgeven', + give = 'geef', + id = 'ID:', + player_name = 'Speler Naam', + obj = 'Obj', + ammoforthe = '+%{value} Munitie voor %{weapon}', + kicked_server = 'Je bent van de server Gekicked', + check_discord = '🔸 Bekijk onze Discord voor meer informatie: ', + banned = 'Je bent verbannen:', + ban_perm = '\n\nJe verbod is permanent.\n🔸 Bekijk onze Discord voor meer informatie: ', + ban_expires = '\n\nBan verloopt: ', + rank_level = 'Jouw toestemmingsniveau is nu ', + admin_report = 'Admin Rapport - ', + staffchat = 'STAFFCHAT - ', + warning_chat_message = '^8WAARSCHUWING ^7 Je bent gewaarschuwd door', + warning_staff_message = '^WAARSCHUWING ^7 Je hebt gewaarschuwd ', + no_reason_specified = 'Geen reden gespecificeerd', + server_restart = 'Server restart, Bekijk onze Discord voor meer informatie: ', + entity_view_distance = 'Entiteitsweergave afstand ingesteld op: %{distance} meters', + entity_view_info = 'Entiteit Informatie', + entity_view_title = 'Entiteit Freeaim Modus', + entity_freeaim_delete = 'Verwijder Entiteit', + entity_freeaim_freeze = 'Bevries Entiteit', + entity_frozen = 'Bevroren', + entity_unfrozen = 'Onbevroren', + model_hash = 'Model hash:', + obj_name = 'Object naam:', + ent_owner = 'Entiteit eigenaar:', + cur_health = 'Huidig Gezondheid:', + max_health = 'Max Gezondheid:', + armour = 'Schild:', + rel_group = 'Relatie Groep:', + rel_to_player = 'Relatie tot Speler:', + rel_group_custom = 'Aangepast Relatie', + veh_acceleration = 'Acceleratie:', + veh_cur_gear = 'Huidig Versnelling:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Afst:', + obj_heading = 'Koers:', + obj_coords = 'Coords:', + obj_rot = 'Rotatie:', + obj_velocity = 'Snelheid:', + obj_unknown = 'Onbekend', + you_have = 'Je hebt ', + freeaim_entity = ' de freeaim entiteit', + entity_del = 'Entiteit verwijders', + entity_del_error = 'Fout bij verwijderen van entiteit', + }, + menu = { + admin_menu = 'Admin Menu', + admin_options = 'Admin Opties', + online_players = 'Online Spelers', + manage_server = 'Beheer Server', + weather_conditions = 'Beschikbare Weeropties', + dealer_list = 'Dealer Lijst', + ban = 'Ban', + kick = 'Kick', + permissions = 'Rechten', + developer_options = 'Developer Opties', + vehicle_options = 'Voertuig Opties', + vehicle_categories = 'Voertuig Categorieën', + vehicle_models = 'Voertuig Modellen', + player_management = 'Speler Beheer', + server_management = 'Server Beheer', + vehicles = 'Voertuigen', + noclip = 'NoClip', + revive = 'Revive', + invisible = 'Onzichtbaar', + god = 'Godmode', + names = 'Namen', + blips = 'Blips', + weather_options = 'Weer Opties', + server_time = 'Server Tijd', + time = 'Tijd', + copy_vector3 = 'Kopieer vector3', + copy_vector4 = 'Kopieer vector4', + display_coords = 'Toon Coördinaten', + copy_heading = 'Kopieer Heading', + vehicle_dev_mode = 'Voertuig Dev Mode', + spawn_vehicle = 'Spawn Voertuig', + fix_vehicle = 'Repareer Voertuig', + buy = 'Koop', + remove_vehicle = 'Verwijder Voertuig', + edit_dealer = 'Bewerk Dealer ', + dealer_name = 'Dealer Naam', + category_name = 'Categore Naam', + kill = 'Vermoord', + freeze = 'Bevries', + spectate = 'Spectate', + bring = 'Breng', + sit_in_vehicle = 'Zit in voertuig', + open_inv = 'Open Inventaris', + give_clothing_menu = 'Geef Kleding Menu', + hud_dev_mode = 'Dev Modus (qb-hud)', + entity_view_options = 'Entiteit Bekijk Modus', + entity_view_distance = 'Zet Bekijk Afstand', + entity_view_freeaim = 'Freeaim Modus', + entity_view_peds = 'Toon Peds', + entity_view_vehicles = 'Toon Voertuigen', + entity_view_objects = 'Toon Objecten', + entity_view_freeaim_copy = 'Kopieer Freeaim Entiteit Info', + spawn_weapons = 'Spawn Wapens', + max_mods = 'Max car mods', + }, + desc = { + admin_options_desc = 'Misc. Admin Opties', + player_management_desc = 'Bekijk de lijst met spelers', + server_management_desc = 'Misc. Server Opties', + vehicles_desc = 'Voertuig Opties', + dealer_desc = 'Lijst van Bestaande Dealers', + noclip_desc = 'NoClip in-/uitschakelen', + revive_desc = 'Revive Jezelf', + invisible_desc = 'Onzichtbaarheid in-/uitschakelen', + god_desc = 'God Mode in-/uitschakelen', + names_desc = 'Namen in-/uitschakelen', + blips_desc = 'Blips voor spelers in-/uitschakelen', + weather_desc = 'Verander het Weer', + developer_desc = 'Misc. Dev Opties', + vector3_desc = 'Kopieer vector3 naar klembord', + vector4_desc = 'Kopieer vector4 naar klembord', + display_coords_desc = 'Toon coördinaten op scherm', + copy_heading_desc = 'Kopieer Koers naar Klembord', + vehicle_dev_mode_desc = 'Toon Voertuig Informatie', + delete_laser_desc = 'Laser in-/uitschakelen', + spawn_vehicle_desc = 'Spawn een Voertuig', + fix_vehicle_desc = 'Repareer het voertuig waarin je zit', + buy_desc = 'Koop het voertuig gratis', + remove_vehicle_desc = 'Verwijder het dichtstbijzijnde voertuig', + dealergoto_desc = 'Ga naar dealer', + dealerremove_desc = 'Verwijder dealer', + kick_reason = 'Kick reden', + confirm_kick = 'Kick bevestigen', + ban_reason = 'Ban reden', + confirm_ban = 'Ban bevestigen', + sit_in_veh_desc = 'Zit in', + sit_in_veh_desc2 = "'s voertuig", + clothing_menu_desc = 'Geef het Kleding-menu aan', + hud_dev_mode_desc = 'Ontwikkelaarsmodus in-/uitschakelen', + entity_view_desc = 'Informatie over entiteiten bekijken', + entity_view_freeaim_desc = 'In-/uitschakelen van entiteitsinfo via freeaim', + entity_view_peds_desc = 'Pedinfo in de wereld in-/uitschakelen', + entity_view_vehicles_desc = 'Voertuiginformatie in de wereld in-/uitschakelen', + entity_view_objects_desc = 'Objectinfo in de wereld in-/uitschakelen', + entity_view_freeaim_copy_desc = 'Kopieert de FreeAim entiteit info naar het klembord', + spawn_weapons_desc = 'Spawn Een Wapen.', + max_mod_desc = 'Max mod jouw huidige voertuig', + }, + time = { + ban_length = 'Ban Duur', + onehour = '1 uur', + sixhour = '6 uren', + twelvehour = '12 uren', + oneday = '1 Dag', + threeday = '3 Dagen', + oneweek = '1 Week', + onemonth = '1 Maand', + threemonth = '3 Maanden', + sixmonth = '6 Maanden', + oneyear = '1 Jaar', + permanent = 'Permanent', + self = 'Zelf', + changed = 'Tijd veranderd naar %{time} hs 00 min', + }, + weather = { + extra_sunny = 'Extra Zonnig', + extra_sunny_desc = 'Ik smelt!', + clear = 'Helder', + clear_desc = 'Perfecte Dag!', + neutral = 'Neutraal', + neutral_desc = 'Een gewone dag!', + smog = 'Rook', + smog_desc = 'Rook Machine!', + foggy = 'Mistig', + foggy_desc = 'Rook Machine x2!', + overcast = 'Bewolkt', + overcast_desc = 'Niet te zonnig!', + clouds = 'Wolken', + clouds_desc = 'Waar is de Zon?', + clearing = 'Opklaren', + clearing_desc = 'De wolken beginnen op te klaren!', + rain = 'Regen', + rain_desc = 'Laat Het Regenen!', + thunder = 'Donder', + thunder_desc = 'Ren en Verstop!', + snow = 'Sneeuw', + snow_desc = 'Is het hier koud?', + blizzard = 'Blizzard', + blizzed_desc = 'Sneeuw Machine?', + light_snow = 'Lichte Sneeuw', + light_snow_desc = 'Het begint als Kerstmis te voelen!', + heavy_snow = 'Hevig Sneeuw (XMAS)', + heavy_snow_desc = 'Sneeuwballengevecht!', + halloween = 'Halloween', + halloween_desc = 'Wat was dat voor geluid?!', + weather_changed = 'Weer Veranderd In: %{value}', + }, + commands = { + blips_for_player = 'Toon blips voor spelers (Alleen Admin)', + player_name_overhead = 'Toon spelersnaam boven het hoofd (Alleen Admin)', + coords_dev_command = 'Coördinatenweergave voor ontwikkelingsdingen inschakelen (Alleen Admin)', + toogle_noclip = 'Noclip in-/uitschakelen (Alleen Admin)', + save_vehicle_garage = 'Bewaar voertuig in je garage (Alleen Admin)', + make_announcement = 'Maak een aankondiging (Alleen Admin)', + open_admin = 'Open Admin Menu (Alleen Admin)', + staffchat_message = 'Stuur een bericht naar alle Staff (Alleen Admin)', + nui_focus = 'Geef een speler NUI Focus (Alleen Admin)', + warn_a_player = 'Waarschuw een speler (Alleen Admin)', + check_player_warning = 'Bekijk Speler Waarschuwingen (Alleen Admin)', + delete_player_warning = 'Verwijder Speler Waarschuwingen (Alleen Admin)', + reply_to_report = 'Een rapport beantwoorden (Alleen Admin)', + change_ped_model = 'Wijziging Ped Model (Alleen Admin)', + set_player_foot_speed = 'Stel Loopsnelheid In voor Speler (Alleen Admin)', + report_toggle = 'Inkomende rapporten in-/uitschakelen (Alleen Admin)', + kick_all = 'Kick alle spelers', + ammo_amount_set = 'Stel je munitiehoeveelheid in (Alleen Admin)', + } +} + +if GetConvar('qb_locale', 'en') == 'nl' then + Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/pt-br.lua b/resources/[core]/ui-admin/locales/pt-br.lua new file mode 100644 index 0000000..c76d7c7 --- /dev/null +++ b/resources/[core]/ui-admin/locales/pt-br.lua @@ -0,0 +1,279 @@ +local Translations = { + error = { + blips_deactivated = 'Blips desativados', + names_deactivated = 'Nomes desativados', + changed_perm_failed = 'Escolha um grupo!', + missing_reason = 'Você deve fornecer uma razão!', + invalid_reason_length_ban = 'Você deve fornecer uma Razão e definir um Tempo para o banimento!', + no_store_vehicle_garage = 'Você não pode guardar este veículo na sua garagem..', + no_vehicle = 'Você não está em um veículo..', + no_weapon = 'Você não tem uma arma nas mãos..', + no_free_seats = 'O veículo não tem assentos livres!', + failed_vehicle_owner = 'Este veículo já é seu..', + not_online = 'Este jogador não está online', + no_receive_report = 'Você não está recebendo relatórios', + failed_set_speed = 'Você não definiu uma velocidade.. (`fast` para super-corrida, `normal` para normal)', + failed_set_model = 'Você não definiu um modelo..', + failed_entity_copy = 'Nenhuma informação de entidade freeaim disponível para copiar para a área de transferência!', + }, + success = { + blips_activated = 'Blips ativados', + names_activated = 'Nomes ativados', + coords_copied = 'Coordenadas copiadas para a área de transferência!', + heading_copied = 'Direção copiada para a área de transferência!', + changed_perm = 'Grupo de autoridade alterado', + entered_vehicle = 'Entrou no veículo', + success_vehicle_owner = 'Agora, o veículo é seu!', + receive_reports = 'Você está recebendo relatórios', + entity_copy = 'Informações da entidade freeaim copiadas para a área de transferência!', + spawn_weapon = 'Você gerou uma arma', + noclip_enabled = 'Modo noclip ativado', + noclip_disabled = 'Modo noclip desativado', + }, + info = { + ped_coords = 'Coordenadas do Ped:', + vehicle_dev_data = 'Dados de Desenvolvimento do Veículo:', + ent_id = 'ID da Entidade:', + net_id = 'ID de Rede:', + net_id_not_registered = 'Não registrado', + model = 'Modelo', + hash = 'Hash', + eng_health = 'Saúde do Motor:', + body_health = 'Saúde da Carroçaria:', + go_to = 'Ir para', + remove = 'Remover', + confirm = 'Confirmar', + reason_title = 'Razão', + length = 'Tempo', + options = 'Opções', + position = 'Posição', + your_position = 'para a sua posição', + open = 'Abrir', + inventories = 'inventários', + reason = 'você precisa fornecer uma razão', + give = 'dar', + id = 'ID:', + player_name = 'Nome do Jogador', + obj = 'Obj', + ammoforthe = '+%{value} Munição para %{weapon}', + kicked_server = 'Você foi expulso do servidor', + check_discord = '🔸 Verifique o nosso Discord para mais informações: ', + banned = 'Você foi banido:', + ban_perm = '\n\nSeu banimento é permanente.\n🔸 Verifique o nosso Discord para mais informações: ', + ban_expires = '\n\nBanimento expira em: ', + rank_level = 'Seu Nível de Permissão agora é ', + admin_report = 'Relatório de Administrador - ', + staffchat = 'CHAT DA EQUIPE - ', + warning_chat_message = '^8ATENÇÃO ^7 Você recebeu um aviso de', + warning_staff_message = '^8ATENÇÃO ^7 Você emitiu um aviso para', + no_reason_specified = 'Nenhuma razão especificada', + server_restart = 'Reinício do servidor, verifique o nosso Discord para mais informações: ', + entity_view_distance = 'Distância de visualização da entidade definida para: %{distance} metros', + entity_view_info = 'Informações da Entidade', + entity_view_title = 'Modo Freeaim da Entidade', + entity_freeaim_delete = 'Excluir Entidade', + entity_freeaim_freeze = 'Congelar Entidade', + entity_frozen = 'Congelada', + entity_unfrozen = 'Descongelada', + model_hash = 'Hash do Modelo:', + obj_name = 'Nome do Objeto:', + ent_owner = 'Proprietário da Entidade:', + cur_health = 'Saúde Atual:', + max_health = 'Saúde Máxima:', + armour = 'Armadura:', + rel_group = 'Grupo de Relação:', + rel_to_player = 'Relação com o Jogador:', + rel_group_custom = 'Relação Personalizada', + veh_acceleration = 'Aceleração:', + veh_cur_gear = 'Marcha Atual:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Distância:', + obj_heading = 'Direção:', + obj_coords = 'Coordenadas:', + obj_rot = 'Rotação:', + obj_velocity = 'Velocidade:', + obj_unknown = 'Desconhecido', + you_have = 'Você tem ', + freeaim_entity = ' a entidade freeaim', + entity_del = 'Entidade excluída', + entity_del_error = 'Erro ao excluir a entidade', + }, + menu = { + admin_menu = 'Menu de Administrador', + admin_options = 'Opções de Administrador', + online_players = 'Jogadores Online', + manage_server = 'Gerenciar Servidor', + weather_conditions = 'Opções de Clima Disponíveis', + dealer_list = 'Lista de Concessionárias', + ban = 'Banir', + kick = 'Expulsar', + permissions = 'Permissões', + developer_options = 'Opções de Desenvolvedor', + vehicle_options = 'Opções de Veículo', + vehicle_categories = 'Categorias de Veículos', + vehicle_models = 'Modelos de Veículos', + player_management = 'Gerenciamento de Jogadores', + server_management = 'Gerenciamento de Servidor', + vehicles = 'Veículos', + noclip = 'NoClip', + revive = 'Reviver', + invisible = 'Invisível', + god = 'Modo Deus', + names = 'Nomes', + blips = 'Blips', + weather_options = 'Opções de Clima', + server_time = 'Hora do Servidor', + time = 'Tempo', + copy_vector3 = 'Copiar vector3', + copy_vector4 = 'Copiar vector4', + display_coords = 'Mostrar Coordenadas', + copy_heading = 'Copiar Direção', + vehicle_dev_mode = 'Modo de Desenvolvimento de Veículo', + spawn_vehicle = 'Gerar Veículo', + fix_vehicle = 'Reparar Veículo', + buy = 'Comprar', + remove_vehicle = 'Remover Veículo', + edit_dealer = 'Editar Concessionária', + dealer_name = 'Nome da Concessionária', + category_name = 'Nome da Categoria', + kill = 'Matar', + freeze = 'Congelar', + spectate = 'Espectar', + bring = 'Trazer', + sit_in_vehicle = 'Sentar no Veículo', + open_inv = 'Abrir Inventário', + give_clothing_menu = 'Dar Menu de Roupas', + hud_dev_mode = 'Modo de Desenvolvimento (qb-hud)', + entity_view_options = 'Modo de Visualização da Entidade', + entity_view_distance = 'Definir Distância de Visualização', + entity_view_freeaim = 'Modo Freeaim da Entidade', + entity_view_peds = 'Mostrar Peds', + entity_view_vehicles = 'Mostrar Veículos', + entity_view_objects = 'Mostrar Objetos', + entity_view_freeaim_copy = 'Copiar Informações da Entidade Freeaim', + spawn_weapons = 'Gerar Armas', + max_mods = 'Máximo de Modificações do Carro', + }, + desc = { + admin_options_desc = 'Opções de Administração Variadas', + player_management_desc = 'Ver Lista de Jogadores', + server_management_desc = 'Opções Variadas de Servidor', + vehicles_desc = 'Opções de Veículos', + dealer_desc = 'Lista de Concessionárias Existente', + noclip_desc = 'Ativar/Desativar NoClip', + revive_desc = 'Reviver Você Mesmo', + invisible_desc = 'Ativar/Desativar Invisibilidade', + god_desc = 'Ativar/Desativar Modo Deus', + names_desc = 'Ativar/Desativar Nomes acima da cabeça', + blips_desc = 'Ativar/Desativar Blips para jogadores nos mapas', + weather_desc = 'Alterar o Clima', + developer_desc = 'Opções de Desenvolvimento Variadas', + vector3_desc = 'Copiar vector3 para a área de transferência', + vector4_desc = 'Copiar vector4 para a área de transferência', + display_coords_desc = 'Mostrar Coordenadas na Tela', + copy_heading_desc = 'Copiar Direção para a área de transferência', + vehicle_dev_mode_desc = 'Mostrar Informações do Veículo', + delete_laser_desc = 'Ativar/Desativar Laser', + spawn_vehicle_desc = 'Gerar um veículo', + fix_vehicle_desc = 'Reparar o veículo em que você está', + buy_desc = 'Comprar o veículo gratuitamente', + remove_vehicle_desc = 'Remover o veículo mais próximo', + dealergoto_desc = 'Ir para a concessionária', + dealerremove_desc = 'Remover a concessionária', + kick_reason = 'Razão do Expulsar', + confirm_kick = 'Confirmar o expulsar', + ban_reason = 'Razão do Banir', + confirm_ban = 'Confirmar o banir', + sit_in_veh_desc = 'Sentar em', + sit_in_veh_desc2 = "'s veículo", + clothing_menu_desc = 'Dar o menu de roupas para', + hud_dev_mode_desc = 'Ativar/Desativar Modo de Desenvolvimento', + entity_view_desc = 'Ver informações sobre entidades', + entity_view_freeaim_desc = 'Ativar/Desativar informações da entidade via freeaim', + entity_view_peds_desc = 'Ativar/Desativar informações de peds no mundo', + entity_view_vehicles_desc = 'Ativar/Desativar informações de veículos no mundo', + entity_view_objects_desc = 'Ativar/Desativar informações de objetos no mundo', + entity_view_freeaim_copy_desc = 'Copiar informações da entidade freeaim para a área de transferência', + spawn_weapons_desc = 'Gerar Qualquer Arma', + max_mod_desc = 'Máximo de modificações para o seu veículo atual', + }, + time = { + ban_length = 'Duração do Banimento', + onehour = '1 hora', + sixhour = '6 horas', + twelvehour = '12 horas', + oneday = '1 dia', + threeday = '3 dias', + oneweek = '1 semana', + onemonth = '1 mês', + threemonth = '3 meses', + sixmonth = '6 meses', + oneyear = '1 ano', + permanent = 'Permanente', + self = 'Por Conta Própria', + changed = 'Tempo alterado para %{time} hs 00 min', + }, + weather = { + extra_sunny = 'Extra Ensolarado', + extra_sunny_desc = 'Estou Derretendo!', + clear = 'Limpo', + clear_desc = 'O Dia Perfeito!', + neutral = 'Neutro', + neutral_desc = 'Apenas um Dia Normal!', + smog = 'Neblina', + smog_desc = 'Máquina de Fumaça!', + foggy = 'Nevoeiro', + foggy_desc = 'Máquina de Fumaça x2!', + overcast = 'Nublado', + overcast_desc = 'Não Muito Ensolarado!', + clouds = 'Nuvens', + clouds_desc = 'Onde Está o Sol?', + clearing = 'Limpo', + clearing_desc = 'As Nuvens Começam a se Dissipar!', + rain = 'Chuva', + rain_desc = 'Faça Chover!', + thunder = 'Trovão', + thunder_desc = 'Corra e Se Esconda!', + snow = 'Neve', + snow_desc = 'Está Frio Aqui Fora?', + blizzard = 'Nevasca', + blizzed_desc = 'Máquina de Neve?', + light_snow = 'Neve Leve', + light_snow_desc = 'Começando a Parecer o Natal!', + heavy_snow = 'Neve Pesada (NATAL)', + heavy_snow_desc = 'Luta de Bolas de Neve!', + halloween = 'Halloween', + halloween_desc = 'O Que Foi Esse Barulho?!', + weather_changed = 'Clima Alterado Para: %{value}', + }, + commands = { + blips_for_player = 'Mostrar blips para jogadores (Apenas para Admins)', + player_name_overhead = 'Mostrar nome do jogador acima da cabeça (Apenas para Admins)', + coords_dev_command = 'Ativar exibição de coordenadas para coisas de desenvolvimento (Apenas para Admins)', + toogle_noclip = 'Alternar noclip (Apenas para Admins)', + save_vehicle_garage = 'Salvar Veículo na sua Garagem (Apenas para Admins)', + make_announcement = 'Fazer um Anúncio (Apenas para Admins)', + open_admin = 'Abrir Menu de Administrador (Apenas para Admins)', + staffchat_message = 'Enviar uma mensagem para toda a equipe (Apenas para Admins)', + nui_focus = 'Dar o foco NUI a um jogador (Apenas para Admins)', + warn_a_player = 'Avisar um jogador (Apenas para Admins)', + check_player_warning = 'Verificar avisos de jogador (Apenas para Admins)', + delete_player_warning = 'Excluir avisos de jogador (Apenas para Admins)', + reply_to_report = 'Responder a um relatório (Apenas para Admins)', + change_ped_model = 'Mudar o modelo do ped (Apenas para Admins)', + set_player_foot_speed = 'Definir a velocidade do pé do jogador (Apenas para Admins)', + report_toggle = 'Alternar relatórios recebidos (Apenas para Admins)', + kick_all = 'Expulsar todos os jogadores', + ammo_amount_set = 'Definir a quantidade de munição (Apenas para Admins)', + } +} + +if GetConvar('qb_locale', 'en') == 'pt-br' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/pt.lua b/resources/[core]/ui-admin/locales/pt.lua new file mode 100644 index 0000000..f5dc884 --- /dev/null +++ b/resources/[core]/ui-admin/locales/pt.lua @@ -0,0 +1,279 @@ +local Translations = { + error = { + blips_deactivated = 'Blips desativados', + names_deactivated = 'Nomes desativados', + changed_perm_failed = 'Escolhe um grupo!', + missing_reason = 'Deves informar um motivo!', + invalid_reason_length_ban = 'Deves informar um motivo e definir um prazo para o ban !', + no_store_vehicle_garage = 'Não podes guardar este veículo na tua garagem..', + no_vehicle = 'Não está num veículo..', + no_weapon = 'Não tens uma arma nas tuas mãos..', + no_free_seats = 'O veículo não têm assentos livres!', + failed_vehicle_owner = 'Este veículo já é teu..', + not_online = 'Este jogador não está online', + no_receive_report = 'Não está a receber relatórios', + failed_set_speed = 'Não definiste uma velocidade.. (`fast` para super corrida, `normal` para normal)', + failed_set_model = 'Não definiste um modelo..', + failed_entity_copy = 'Nenhuma informação de entidade de mira livre para copiar para a área de transferência!', + }, + success = { + blips_activated = 'Blips ativados', + names_activated = 'Nomes ativados', + coords_copied = 'Coordenadas copiadas para a área de transferência!', + heading_copied = 'Direção copiada para a área de transferência!', + changed_perm = 'Grupo de autoridade alterado', + entered_vehicle = 'Entraste no veículo', + success_vehicle_owner = 'O veículo agora é teu!', + receive_reports = 'Estás a receber relatórios', + entity_copy = 'Informações da entidade de mira livre copiadas para a área de transferência!', + spawn_weapon = 'Geraste uma arma', + noclip_enabled = 'No-clip ativado', + noclip_disabled = 'No-clip desativado', + }, + info = { + ped_coords = 'Coordenadas Ped:', + vehicle_dev_data = 'Dados do desenvolvedor do veículo:', + ent_id = 'ID de Entidade:', + net_id = 'ID de Rede:', + net_id_not_registered = 'Não registrado', + model = 'Modelo', + hash = 'Hash', + eng_health = 'Estado do motor:', + body_health = 'Estado do chassi:', + go_to = 'Ir para', + remove = 'Remover', + confirm = 'Confirmar', + reason_title = 'Motivo', + length = 'Comprimento', + options = 'Opções', + position = 'Posição', + your_position = 'Para sua posição', + open = 'Abrir', + inventories = 'Inventários', + reason = 'Motivo', + give = 'Entregar', + id = 'ID:', + player_name = 'Nome do Jogador', + obj = 'Obj', + ammoforthe = '+%{valor} Munição para %{arma}', + kicked_server = 'Foste expulso do servidor', + check_discord = '🔸 Aparece no nosso Discord para mais informações: ', + banned = 'Foste banido:', + ban_perm = '\n\nO teu ban é permanente.\n🔸 Entra no nosso Discord para mais informações: ', + ban_expires = '\n\nO ban expira em: ', + rank_level = 'Seu nível de permissão é agora ', + admin_report = 'Relatório de administração - ', + staffchat = 'STAFFCHAT - ', + warning_chat_message = '^8WARNING ^7 Foi avisado por', + warning_staff_message = '^8WARNING ^7 Avisou ', + no_reason_specified = 'Nenhum motivo especificado', + server_restart = 'Reinício do servidor, verifica o nosso Discord para mais informações: ', + entity_view_distance = 'Distância de visualização da entidade definida como: %{distance} metros', + entity_view_info = 'Informações da entidade', + entity_view_title = 'Modo de mira livre de entidade', + entity_freeaim_delete = 'Excluir entidade', + entity_freeaim_freeze = 'Congelar Entidade', + entity_frozen = 'Congelado', + entity_unfrozen = 'Descongelado', + model_hash = 'Modelo de hash:', + obj_name = 'Nome do objeto:', + ent_owner = 'Proprietário da entidade:', + cur_health = 'Estado atual:', + max_health = 'Percentual máximo:', + armour = 'Armadura:', + rel_group = 'Grupo de Relacionamento:', + rel_to_player = 'Relação com o jogador:', + rel_group_custom = 'Relacionamento personalizado', + veh_acceleration = 'Aceleração:', + veh_cur_gear = 'Marcha atual:', + veh_speed_kph = 'km/h:', + veh_speed_mph = 'mp/h:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Dist:', + obj_heading = 'Direção:', + obj_coords = 'Coordenadas:', + obj_rot = 'Rotação:', + obj_velocity = 'Velocidade:', + obj_unknown = 'Desconhecido', + you_have = 'Tens ', + freeaim_entity = 'A entidade de mira livre', + entity_del = 'Entidade excluída', + entity_del_error = 'Erro ao excluir entidade', + }, + menu = { + admin_menu = 'Menu de Admin', + admin_options = 'Opções do Admin', + online_players = 'Jogadores online', + manage_server = 'Gerir servidor', + weather_conditions = 'Opções de clima disponíveis', + dealer_list = 'Lista de vendedores', + ban = 'Banir', + kick = 'Expulsar', + permissions = 'Permissões', + developer_options = 'Opções de desenvolvedor', + vehicle_options = 'Opções de veículo', + vehicle_categories = 'Categorias de veículos', + vehicle_models = 'Modelos de veículos', + player_management = 'Gestão de jogadores', + server_management = 'Gestão do Servidor', + vehicles = 'Veículos', + noclip = 'No-clip', + revive = 'Reviver', + invisible = 'Invisível', + god = 'Modo Deus', + names = 'Nomes', + blips = 'Blips', + weather_options = 'Opções de clima', + server_time = 'Horário do servidor', + time = 'Tempo', + copy_vector3 = 'Copiar vector3', + copy_vector4 = 'Copiar vector4', + display_coords = 'Exibir Coordenadas', + copy_heading = 'Copiar direção', + vehicle_dev_mode = 'Modo de desenvolvimento do veículo', + spawn_vehicle = 'Criar Veículo', + fix_vehicle = 'Consertar Veículo', + buy = 'Comprar', + remove_vehicle = 'Remover veículo', + edit_dealer = 'Editar vendedor ', + dealer_name = 'Nome do vendedor', + category_name = 'Nome da Categoria', + kill = 'Matar', + freeze = 'Congelar', + spectate = 'Olhar', + bring = 'Trazer', + sit_in_vehicle = 'Senta-te no veículo', + open_inv = 'Inventário aberto', + give_clothing_menu = 'Menu de Roupas', + hud_dev_mode = 'Modo de desenvolvimento (qb-hud)', + entity_view_options = 'Modo de visualização de entidade', + entity_view_distance = 'Definir distância de visualização', + entity_view_freeaim = 'Modo de mira livre', + entity_view_peds = 'Exibir Peds', + entity_view_vehicles = 'Exibir Veículos', + entity_view_objects = 'Exibir Objetos', + entity_view_freeaim_copy = 'Copiar Informações da Entidade em Mira Livre', + spawn_weapons = 'Criar armas', + max_mods = 'Mods máximos do carro', + }, + desc = { + admin_options_desc = 'Opções diversas de admin', + player_management_desc = 'Ver lista de jogadores', + server_management_desc = 'Opções diversas do servidor', + vehicles_desc = 'Opções de veículos', + dealer_desc = 'Lista de vendedores existentes', + noclip_desc = 'Habilitar/Desabilitar NoClip', + revive_desc = 'Reviver-se', + invisible_desc = 'Ativar/Desativar Invisibilidade', + god_desc = 'Ativar/Desativar Modo Deus', + names_desc = 'Ativar/desativar nomes sobre a cabeça', + blips_desc = 'Ativar/Desativar Blips para jogadores em mapas', + weather_desc = 'Muda o clima', + developer_desc = 'Opções diversas de desenvolvedor', + vector3_desc = 'Copiar vector3 para a área de transferência', + vector4_desc = 'Copiar vector4 para a área de transferência', + display_coords_desc = 'Mostrar coordenadas na tela', + copy_heading_desc = 'Copiar direção para a área de transferência', + vehicle_dev_mode_desc = 'Exibir informações do veículo', + delete_laser_desc = 'Habilitar/Desabilitar Laser', + spawn_vehicle_desc = 'Criar um veículo', + fix_vehicle_desc = 'Conserte o veículo em que você está', + buy_desc = 'Compre o veículo gratuitamente', + remove_vehicle_desc = 'Remover o veículo mais próximo', + dealergoto_desc = 'Ir para vendedor', + dealerremove_desc = 'Remover vendedor', + kick_reason = 'Razão da expulsão', + confirm_kick = 'Confirmar expulsão', + ban_reason = 'Motivo do ban', + confirm_ban = 'Confirmar ban', + sit_in_veh_desc = 'Sente-te', + sit_in_veh_desc2 = '(proprietário do veículo)', + clothing_menu_desc = 'Dê o menu de Roupa para', + hud_dev_mode_desc = 'Ativar/desativar o modo de desenvolvedor', + entity_view_desc = 'Ver informações sobre entidades', + entity_view_freeaim_desc = 'Ativar/desativar informações da entidade via mira livre', + entity_view_peds_desc = 'Ativar/Desativar informações de ped no mundo', + entity_view_vehicles_desc = 'Ativar/desativar informações do veículo no mundo', + entity_view_objects_desc = 'Ativar/desativar informações do objeto no mundo', + entity_view_freeaim_copy_desc = 'Copia as informações da entidade em mira livre para a área de transferência', + spawn_weapons_desc = 'Criar qualquer arma.', + max_mod_desc = 'Mods máximos em seu veículo atual', + }, + time = { + ban_length = 'Duração do banimento', + onehour = '1 hora', + sixhour = '6 horas', + twelvehour = '12 horas', + oneday = '1 Dia', + threeday = '3 Dias', + oneweek = '1 Semana', + onemonth = '1 Mês', + threemonth = '3 Mêses', + sixmonth = '6 Mêses', + oneyear = '1 Ano', + permanent = 'Permanente', + self = 'Auto', + changed = 'A hora mudou para %{time} hr 00 min', + }, + weather = { + extra_sunny = 'Extra ensolarado', + extra_sunny_desc = 'Estou derretendo!', + clear = 'Limpo', + clear_desc = 'O dia perfeito!', + neutral = 'Neutro', + neutral_desc = 'Apenas um dia qualquer!', + smog = 'Nevoeiro', + smog_desc = 'Máquina de fumaça!', + foggy = 'Neboluso', + foggy_desc = 'Máquina de fumaça x2!', + overcast = 'Nublado', + overcast_desc = 'Não muito ensolarado!', + clouds = 'Nuvens', + clouds_desc = 'Cadê o sol?', + clearing = 'Parcialmente nublado', + clearing_desc = 'Nuvens começam a sair!', + rain = 'Chuva', + rain_desc = 'Faça chover!', + thunder = 'Trovão', + thunder_desc = 'Corra e se esconda!', + snow = 'Neve', + snow_desc = 'Está frio aqui fora?', + blizzard = 'Nevasca', + blizzed_desc = 'Máquina de neve?', + light_snow = 'Pouca neve', + light_snow_desc = 'Começando a sentir como o Natal!', + heavy_snow = 'Neve pesada (NATAL)', + heavy_snow_desc = 'Guerra de bolas de neve!', + halloween = 'Halloween', + halloween_desc = 'O que foi aquele barulho?!', + weather_changed = 'Clima alterado para: %{value}', + }, + commands = { + blips_for_player = 'Mostrar blips para jogadores (somente administrador)', + player_name_overhead = 'Mostrar nome do jogador na cabeça (somente administrador)', + coords_dev_command = 'Ativar exibição de coordenadas para material de desenvolvimento (somente administrador)', + toogle_noclip = 'Alternar noclip (somente administrador)', + save_vehicle_garage = 'Salvar veículo em sua garagem (somente administrador)', + make_announcement = 'Faça um anúncio (somente administrador)', + open_admin = 'Abrir menu de administração (somente administrador)', + staffchat_message = 'Envie uma mensagem para toda a Staff (somente administrador)', + nui_focus = 'Dá NUI Focus a um jogador (somente administrador)', + warn_a_player = 'Avisar um jogador (somente administrador)', + check_player_warning = 'Verifica os avisos do jogador (somente administrador)', + delete_player_warning = 'Excluir avisos de jogadores (somente administrador)', + reply_to_report = 'Responder a um relatório (somente administrador)', + change_ped_model = 'Alterar modelo de Ped (somente administrador)', + set_player_foot_speed = 'Definir velocidade a pé do jogador (somente administrador)', + report_toggle = 'Alterar relatórios de entrada (somente administrador)', + kick_all = 'Expulsar todos os jogadores', + ammo_amount_set = 'Define a tua quantidade de munição (somente administrador)', + } +} + +if GetConvar('qb_locale', 'en') == 'pt' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/ro.lua b/resources/[core]/ui-admin/locales/ro.lua new file mode 100644 index 0000000..38cc921 --- /dev/null +++ b/resources/[core]/ui-admin/locales/ro.lua @@ -0,0 +1,284 @@ +--[[ +Romanian base language translation for qb-adminmenu +Translation done by wanderrer (Martin Riggs#0807 on Discord) +]] +-- +local Translations = { + error = { + blips_deactivated = 'Blipuri dezactivate', + names_deactivated = 'Nume dezactivate', + changed_perm_failed = 'Alege un grup!', + missing_reason = 'Trebuie specificat un motiv!', + invalid_reason_length_ban = 'Trebuie specificat un motiv si durata banului!', + no_store_vehicle_garage = 'Nu poti parca acest vehicul in garajul tau..', + no_vehicle = 'Nu esti intr-un vehicul..', + no_weapon = 'Nu ai nicio arma in mana..', + no_free_seats = 'Acest vehicul nu mai are scaune disponibile!', + failed_vehicle_owner = 'Acest vehicul este deja al tau..', + not_online = 'Acest jucator nu este online/conectat', + no_receive_report = 'Nu mai primesti rapoarte', + failed_set_speed = 'Nu ai setat viteza.. (`fast` pentru super-viteza, `normal` pentru viteza normala)', + failed_set_model = 'Nu ai setat modelul..', + failed_entity_copy = 'Nu exista informatii despre enitatea targetata de copiat!', + }, + success = { + blips_activated = 'Blipuri activate', + names_activated = 'Numele activate', + coords_copied = 'Coordonatele au fost copiate cu succes!', + heading_copied = 'Orientarea a fost copiata cu succes!', + changed_perm = 'Grupul de permisiuni a fost schimbat', + entered_vehicle = 'A intrat in vehicul', + success_vehicle_owner = 'Acest vehicul este acum al tau!', + receive_reports = 'Primesti tichete acum (plangeri)', + entity_copy = 'Informatiile despre entitatea targetata au fost copiate!', + spawn_weapon = 'Ai creat (spawn) o arma', + noclip_enabled = 'No-clip activat', + noclip_disabled = 'No-clip dezactivat', + }, + info = { + ped_coords = 'Coordonatele PED-ului:', + vehicle_dev_data = 'Date despre vehicul:', + ent_id = 'ID-ul enititatii:', + net_id = 'Net ID:', + net_id_not_registered = 'Neinregistrat', + model = 'Model', + hash = 'Hash', + eng_health = 'Starea Motorului:', + body_health = 'Starea Caroseriei:', + go_to = 'Mergi la', + remove = 'Sterge', + confirm = 'Confirma', + reason_title = 'Motiv', + length = 'Durata', + options = 'Optiuni', + position = 'Pozitie', + your_position = 'la pozitia ta', + open = 'Deschide', + inventories = 'inventare', + reason = 'trebuie sa specifici un motiv', + give = 'ofera', + id = 'ID:', + player_name = 'Numele jucatorului', + obj = 'Obj', + ammoforthe = '+%{value} munitie pentru %{weapon}', + kicked_server = 'Ai fost dat afara de pe server (kick)', + check_discord = '🔸 Verifica te rog serverul de Discord pentru mai multe informatii: ', + banned = 'Ai primit BAN pe acest server:', + ban_perm = '\n\nBAN-ul tau este permanent.\n🔸 Verifica Discordul nostru pentru mai multe informatii: ', + ban_expires = '\n\nBAN-ul expira in: ', + rank_level = 'Nivelul tau de permisiuni este acum ', + admin_report = 'Tichet Administrativ - ', + staffchat = 'STAFFCHAT - ', + warning_chat_message = '^8AVERTISMENT ^7 Ai primit avertisment de la', + warning_staff_message = '^8AVERTISMENT ^7 L-ai avertizat pe ', + no_reason_specified = 'Niciun motiv specificat', + server_restart = 'Se restarteaza serverul, verifica serverul nostru de Discord pentru mai multe informatii: ', + entity_view_distance = 'Distanta de vizualizare a entitatii este setata la: %{distance} metrii', + entity_view_info = 'Informatii despre entitate', + entity_view_title = 'Modul de targetare libera', + entity_freeaim_delete = 'Sterge entitate', + entity_freeaim_freeze = 'Blocheaza entitate', + entity_frozen = 'Blocat(a)', + entity_unfrozen = 'Deblocat(a)', + model_hash = 'Hash-ul modelului:', + obj_name = 'Numele obiectului:', + ent_owner = 'Proprietarul entitatii:', + cur_health = 'Sanatate curenta:', + max_health = 'Sanatate maxima:', + armour = 'Armura/vesta antiglont:', + rel_group = 'Grupul de relationare:', + rel_to_player = 'Relatia cu Jucatorul:', + rel_group_custom = 'Relatie Personalizata', + veh_acceleration = 'Acceleratie:', + veh_cur_gear = 'Viteza actuala:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Dist:', + obj_heading = 'Orientare:', + obj_coords = 'Coordonate:', + obj_rot = 'Rotatie:', + obj_velocity = 'Viteza:', + obj_unknown = 'Necunoscut(a)', + you_have = 'Ai ', + freeaim_entity = ' entitatea targetata', + entity_del = 'Entitate stearsa', + entity_del_error = 'A aparut o eroare la stergerea entitatii', + }, + menu = { + admin_menu = 'Meniu administrativ', + admin_options = 'Optiuni administrative', + online_players = 'Jucatori conectati', + manage_server = 'Gestionarea serverului', + weather_conditions = 'Optiuni meteo disponibile', + dealer_list = 'Lista dealerilor', + ban = 'Ban', + kick = 'Kick', + permissions = 'Nivel permisiuni', + developer_options = 'Optiuni developer', + vehicle_options = 'Optiuni vehicule', + vehicle_categories = 'Categorii vehicule', + vehicle_models = 'Modele vehicule', + player_management = 'Managementul jucatorilor', + server_management = 'Managementul serverului', + vehicles = 'Vehicule', + noclip = 'NoClip', + revive = 'Reinvie', + invisible = 'Invizibil', + god = 'Godmode', + names = 'Nume', + blips = 'Blipuri', + weather_options = 'Optiuni meteo', + server_time = 'Ora serverului', + time = 'Timpul/Ora', + copy_vector3 = 'Copiaza vector3', + copy_vector4 = 'Copiaza vector4', + display_coords = 'Afiseaza coordonatele', + copy_heading = 'Copiaza orientarea', + vehicle_dev_mode = 'Modul DEV pentru vehicule', + spawn_vehicle = 'Spawn Vehicle', + fix_vehicle = 'Repara vehicul', + buy = 'Cumpara', + remove_vehicle = 'Sterge vehicul', + edit_dealer = 'Editeaza dealerul ', + dealer_name = 'Numele dealerului', + category_name = 'Numele categoriei', + kill = 'Omoara', + freeze = 'Blocheaza', + spectate = 'Specteaza', + bring = 'Teleporteaza', + sit_in_vehicle = 'Aseaza in vehicul', + open_inv = 'Deschide inventar', + give_clothing_menu = 'Ofera meniul de haine', + hud_dev_mode = 'Modul DEV (qb-hud)', + entity_view_options = 'Modul de vizualizare entitati', + entity_view_distance = 'Seteaza distanta de vizualizare', + entity_view_freeaim = 'Modul de targetare', + entity_view_peds = 'Afiseaza NPC', + entity_view_vehicles = 'Afiseaza vehicule', + entity_view_objects = 'Afiseaza obiecte', + entity_view_freeaim_copy = 'Copiaza informatiile entitatii', + spawn_weapons = 'Spawneaza arme', + max_mods = 'Toate modulele vehiculului la maxim', + }, + desc = { + admin_options_desc = 'Optiuni diverse pentru administratori', + player_management_desc = 'Vezi lista completa de jucatori', + server_management_desc = 'Optiuni diverse pentru server', + vehicles_desc = 'Optiuni disponibile pentru vehicule', + dealer_desc = 'Lista completa cu dealerii de droguri din stat', + noclip_desc = 'Activeaza/Dezactiveaza functia NoClip', + revive_desc = 'Te readuci la viata :)', + invisible_desc = 'Activeaza/Dezactiveaza functia de invizibilitate', + god_desc = 'Activeaza/Dezactiveaza modul invincibil', + names_desc = 'Activeaza/Dezactiveaza numele desupra capului jucatorilor', + blips_desc = 'Activeaza/Dezactiveaza pentru jucatori pe harta', + weather_desc = 'Optiuni pentru modificarea vremii pe server', + developer_desc = 'Optiuni diverse pentru developeri', + vector3_desc = 'Copiaza coordonatele vector3', + vector4_desc = 'Copiaza coordonatele vector4', + display_coords_desc = 'Afiseaza coordonatele curente pe ecran', + copy_heading_desc = 'Copiaza orientarea actuala', + vehicle_dev_mode_desc = 'Afiseaza informatii despre vehicule', + delete_laser_desc = 'Activeaza/Dezactiveaza functia laser', + spawn_vehicle_desc = 'Spaweaza un vehicul in/pe server', + fix_vehicle_desc = 'Repara complet vehiculul in care te afli', + buy_desc = 'Cumperi vehiculul fara bani :)', + remove_vehicle_desc = 'Sterge cel mai apropiat vehicul', + dealergoto_desc = 'Esti teleportat la dealer', + dealerremove_desc = 'Sterge un dealer de droguri', + kick_reason = 'Motivul pentru kick', + confirm_kick = 'Confirma kick-ul', + ban_reason = 'Motivul pentru ban', + confirm_ban = 'Confirma ban-ul', + sit_in_veh_desc = 'Aseaza-te langa', + sit_in_veh_desc2 = 'in vehiculul sau', + clothing_menu_desc = 'Oferi meniul de haine lui', + hud_dev_mode_desc = 'Activeaza/Dezactiveaza modul Developer', + entity_view_desc = 'Vezi informatiile disponibile despre entitati', + entity_view_freeaim_desc = 'Activeaza/Dezactiveaza targetarea via freeaim', + entity_view_peds_desc = 'Activeaza/Dezactiveaza informatiile despre NPC din server', + entity_view_vehicles_desc = 'Activeaza/Dezactiveaza informatiile despre vehiculele din server', + entity_view_objects_desc = 'Activeaza/Dezactiveaza informatiile despre obiectele din server', + entity_view_freeaim_copy_desc = 'Copiaza informatiile entitatii targetate', + spawn_weapons_desc = 'Spawneaza orice tip de arma disponibila pe/in server', + max_mod_desc = 'Maximizarea tuturor modulelor vehiculului curent', + }, + time = { + ban_length = 'Durata banului', + onehour = '1 ora', + sixhour = '6 ore', + twelvehour = '12 ore', + oneday = '1 zi', + threeday = '3 zile', + oneweek = '1 saptamana', + onemonth = '1 luna', + threemonth = '3 luni', + sixmonth = '6 luni', + oneyear = '1 an', + permanent = 'permanent', + self = 'Self', + changed = 'Ora a fost schimbata la %{time} hs 00 min', + }, + weather = { + extra_sunny = 'Extra insorit', + extra_sunny_desc = 'Ne topim prietenas!', + clear = 'Cer clar', + clear_desc = 'Ziua perfecta pe bune!', + neutral = 'Neutru', + neutral_desc = 'O zi ca oricare alta!', + smog = 'Smog', + smog_desc = 'Fumeaza sau polueaza lumea!', + foggy = 'Cetos', + foggy_desc = 'Abia pot sa mai vad!', + overcast = 'Cer inorat', + overcast_desc = 'Nu ne atinge soarele!', + clouds = 'Fara soare', + clouds_desc = 'Ati ascuns soarele?', + clearing = 'Partial noros', + clearing_desc = 'Dispar norii incet dar sigur!', + rain = 'Ploaie', + rain_desc = 'Make It Rain!', + thunder = 'Tunete si fulgere', + thunder_desc = 'Vine Thor probabil!', + snow = 'Zapada', + snow_desc = 'Vine Craciunul?', + blizzard = 'Viscol', + blizzed_desc = 'Opriti zapada va rog!', + light_snow = 'Ninsoare usoara', + light_snow_desc = 'Simt spiritul Craciunului!', + heavy_snow = 'Ninsoare abundenta (XMAS)', + heavy_snow_desc = 'Bataie cu bulgari!', + halloween = 'Halloween', + halloween_desc = 'Ce e asta?!', + weather_changed = 'Vremea a fost schimbata cu: %{value}', + }, + commands = { + blips_for_player = 'Afiseaza blipurile pentru jucatori (Doar pt. admini)', + player_name_overhead = 'Afiseaza numele jucatorilor deasupra capului (Doar pt. admini)', + coords_dev_command = 'Activeaza afisarea coordonatelor (Doar pt. admini)', + toogle_noclip = 'Activeaza/Dezactiveaza functia noclip (Doar pt. admini)', + save_vehicle_garage = 'Salveaza vehiculul curent in garajul tau (Doar pt. admini)', + make_announcement = 'Anunturi globale pe server (Doar pt. admini)', + open_admin = 'Deschide meniul administrativ (Doar pt. admini)', + staffchat_message = 'Trimiti mesaje catre staff-ul serverului (Doar pt. admini)', + nui_focus = 'Dai NUI Focus unui jucator(Doar pt. admini)', + warn_a_player = 'Avertizezi un jucator (Doar pt. admini)', + check_player_warning = 'Verifici daca un jucator a primir avertisment (Doar pt. admini)', + delete_player_warning = 'Stergi avertismentele unui jucator (Doar pt. admini)', + reply_to_report = 'Raspunzi unui tichet administrativ (Doar pt. admini)', + change_ped_model = 'Schimbi modelul PED-ului (Doar pt. admini)', + set_player_foot_speed = 'Setezi viteza cu care se deplaseaza un jucator (Doar pt. admini)', + report_toggle = 'Activezi/Dezactivezi primirea tichetelor administrative (Doar pt. admini)', + kick_all = 'Dai kick tuturor jucatorilor de pe server', + ammo_amount_set = 'Setezi cantitatea de munitie detinuta (Doar pt. admini)', + } +} + +if GetConvar('qb_locale', 'en') == 'ro' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/sv.lua b/resources/[core]/ui-admin/locales/sv.lua new file mode 100644 index 0000000..2706b40 --- /dev/null +++ b/resources/[core]/ui-admin/locales/sv.lua @@ -0,0 +1,227 @@ +local Translations = { + error = { + blips_deactivated = 'Blips avaktiverade', + names_deactivated = 'Namn avaktiverade', + changed_perm_failed = 'Välj en grupp!', + missing_reason = 'Du måste ge en anledning!', + invalid_reason_length_ban = 'Du måste ge en anledning och längd på avstängningen!', + no_store_vehicle_garage = 'Du kan inte spara detta fordonet i ditt garage..', + no_vehicle = 'Du är inte i ett fordon..', + no_weapon = 'Du har inget vapen i handen..', + no_free_seats = 'Fordonet har inga säten lediga!', + failed_vehicle_owner = 'Detta fordonet är redan ditt..', + not_online = 'Spelaren är utloggad', + no_receive_report = 'Du får inga rapporteringar', + failed_set_speed = 'Du satte ingen fart.. (`fast` för superfart, `normal` för normal)', + failed_set_model = 'Du satte ingen modell..', + }, + success = { + blips_activated = 'Blips aktiverade', + names_activated = 'Namn aktiverade', + coords_copied = 'Koordinater kopierade!', + heading_copied = 'Heading kopierat!', + changed_perm = 'Behörighetsgrupp ändrad', + entered_vehicle = 'Hoppade in i fordon', + success_vehicle_owner = 'Fordonet är nu ditt!', + receive_reports = 'Du har fått rapporteringar', + }, + info = { + ped_coords = 'Ped Coords:', + vehicle_dev_data = 'Fordon Utvecklar Data:', + ent_id = 'Entity ID:', + net_id = 'Net ID:', + model = 'Modell', + hash = 'Hash', + eng_health = 'Motor Hälsa:', + body_health = 'Chassi Hälsa:', + go_to = 'Gå till', + remove = 'Ta bort', + confirm = 'Acceptera', + reason_title = 'Anledning', + length = 'Längd', + options = 'Alternativ', + position = 'Position', + your_position = 'till din position', + open = 'Öppna', + inventories = 'förråd', + reason = 'du måste ge en anledning', + give = 'ge', + id = 'ID:', + player_name = 'Spelarens namn', + delete_object_info = 'Om du vill ta bort objektet, klicka ~g~E', + obj = 'Obj', + ammoforthe = '+%{value} Ammo för %{weapon}', + kicked_server = 'Du har kickats från servern', + check_discord = '🔸 Gå in på vår discord för mer information: ', + banned = 'Du har blivit bannad:', + ban_perm = '\n\nDin ban är permanent.\n🔸 Gå in på vår discord för mer information: ', + ban_expires = '\n\nBan försvinner: ', + rank_level = 'Din behörighetsgrupp är nu ', + admin_report = 'Admin Rapportering - ', + staffchat = 'STAFFCHATT - ', + warning_chat_message = '^8VARNING ^7 Du har varnats av', + warning_staff_message = '^8WARNING ^7 Du har varnat ', + no_reason_specified = 'Ingen anledning angiven', + server_restart = 'Server restart, gå in på vår discord för mer information: ', + }, + menu = { + admin_menu = 'Admin Meny', + admin_options = 'Admin Alternativ', + online_players = 'Spelare Online', + manage_server = 'Hantera Server', + weather_conditions = 'Väder', + dealer_list = 'Återförsäljarlista', + ban = 'Banna', + kick = 'Kicka', + permissions = 'Behörigheter', + developer_options = 'Utvecklare', + vehicle_options = 'Fordon', + vehicle_categories = 'Fordonskategorier', + vehicle_models = 'Fordonsmodeller', + player_management = 'Spelarhantering', + server_management = 'Serverhantering', + vehicles = 'Fordon', + noclip = 'NoClip', + revive = 'Återuppliva', + invisible = 'Osynlighet', + god = 'Godmode', + names = 'Namn', + blips = 'Blips', + weather_options = 'Väder', + server_time = 'Servertid', + time = 'Tid', + copy_vector3 = 'Kopiera vector3', + copy_vector4 = 'Kopiera vector4', + display_coords = 'Visa Coords', + copy_heading = 'Kopiera Heading', + vehicle_dev_mode = 'Fordon - Dev Mode', + delete_laser = 'Raderingslaser', + spawn_vehicle = 'Spawna Fordon', + fix_vehicle = 'Fixa Fordon', + buy = 'Köp', + remove_vehicle = 'Radera Fordon', + edit_dealer = 'Redigera Återförsäljgare ', + dealer_name = 'Återförsäljarens Namn', + category_name = 'Kategorinamn', + kill = 'Döda', + freeze = 'Frys', + spectate = 'Inspektera', + bring = 'Ta hit', + sit_in_vehicle = 'Sätt i fordon', + open_inv = 'Öppna Inventory', + give_clothing_menu = 'Ge Klädmenyn', + hud_dev_mode = 'Dev Mode (qb-hud)', + }, + desc = { + admin_options_desc = 'Misc. Admin Alternativ', + player_management_desc = 'Visa spelarlistan', + server_management_desc = 'Misc. Server Alternativ', + vehicles_desc = 'Fordonsalternativ', + dealer_desc = 'Lista av återförsäljare', + noclip_desc = 'Av/På NoClip', + revive_desc = 'Återuppliva dig själv', + invisible_desc = 'Av/På Osynlighet', + god_desc = 'Av/På God Mode', + names_desc = 'Av/På Namn över huvudet', + blips_desc = 'Av/På Blips för spelare', + weather_desc = 'Byt vädret', + developer_desc = 'Misc. Dev Alternativ', + vector3_desc = 'Kopiera vector3', + vector4_desc = 'Kopiera vector4', + display_coords_desc = 'Visa coords på skärmen', + copy_heading_desc = 'Kopiera Heading', + vehicle_dev_mode_desc = 'Visa fordonsinfo', + delete_laser_desc = 'Av/På Laser', + spawn_vehicle_desc = 'Spawna ett fordon', + fix_vehicle_desc = 'Fixa fordonet du sitter i', + buy_desc = 'Köp fordonet helt gratis', + remove_vehicle_desc = 'Ta bort närmsta fordonet', + dealergoto_desc = 'Gå till återförsäljare', + dealerremove_desc = 'Ta bort återförsäljare', + kick_reason = 'Kick anledning', + confirm_kick = 'Godkänn kick', + ban_reason = 'Ban anledning', + confirm_ban = 'Godkänn ban', + sit_in_veh_desc = 'Sitt i', + sit_in_veh_desc2 = "'s fordon", + clothing_menu_desc = 'Ge klädmenyn till', + hud_dev_mode_desc = 'Av/På Dev Mode', + }, + time = { + ban_length = 'Avstängningslängd', + onehour = '1 timma', + sixhour = '6 timmar', + twelvehour = '12 timmar', + oneday = '1 dag', + threeday = '3 dagar', + oneweek = '1 vecka', + onemonth = '1 månad', + threemonth = '3 månader', + sixmonth = '6 månader', + oneyear = '1 år', + permanent = 'Permanent', + self = 'Själv', + changed = 'Tid ändrad till %{time} h 00 m', + }, + weather = { + extra_sunny = 'Extra soligt', + extra_sunny_desc = 'Jag smälter!', + clear = 'Klart', + clear_desc = 'Perfekta dagen!', + neutral = 'Neutralt', + neutral_desc = 'En vanlig dag!', + smog = 'Dimma', + smog_desc = 'Rökmaskin!', + foggy = 'Extra dimmigt', + foggy_desc = 'Rökmaskin x2!', + overcast = 'Mulet', + overcast_desc = 'Inte allt för soligt!', + clouds = 'Molnigt', + clouds_desc = 'Vart är solen?', + clearing = 'Uppklarande', + clearing_desc = 'Molnen börjar försvinna!', + rain = 'Regn', + rain_desc = 'Låt det regna!', + thunder = 'Åska', + thunder_desc = 'Spring och göm dig!', + snow = 'Snö', + snow_desc = 'Bara jag som fryser?', + blizzard = 'Snöstorm', + blizzed_desc = 'Snömaskin?', + light_snow = 'Mild snö', + light_snow_desc = 'Julkänsla!', + heavy_snow = 'Mycket snö (JUL)', + heavy_snow_desc = 'SNÖBOLLSKRIG!', + halloween = 'Halloween', + halloween_desc = 'Vad var det för ljud?!', + weather_changed = 'Vädret ändrades till: %{value}', + }, + commands = { + blips_for_player = 'Visa blips för spelare (Admin Only)', + player_name_overhead = 'Visa namn över huvudet (Admin Only)', + coords_dev_command = 'Coords för utvecklare (Admin Only)', + toogle_noclip = 'Noclip (Admin Only)', + save_vehicle_garage = 'Spara fordon till garage (Admin Only)', + make_announcement = 'Gör ett uttalande (Admin Only)', + open_admin = 'Öppna admin menyn (Admin Only)', + staffchat_message = 'Staffmeddelande (Admin Only)', + nui_focus = 'Ge spelare NUI Focus (Admin Only)', + warn_a_player = 'Varna (Admin Only)', + check_player_warning = 'Kolla varningar (Admin Only)', + delete_player_warning = 'Ta bort varning (Admin Only)', + reply_to_report = 'Svara på en rapportering (Admin Only)', + change_ped_model = 'Byt PED (Admin Only)', + set_player_foot_speed = 'Sätt spelares fart (Admin Only)', + report_toggle = 'Toggla inkommande rapporteringar (Admin Only)', + kick_all = 'Kicka alla spelare', + ammo_amount_set = 'Sätt ammo (Admin Only)', + } +} + +if GetConvar('qb_locale', 'en') == 'sv' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/tr.lua b/resources/[core]/ui-admin/locales/tr.lua new file mode 100644 index 0000000..0c58d9c --- /dev/null +++ b/resources/[core]/ui-admin/locales/tr.lua @@ -0,0 +1,279 @@ +local Translations = { + error = { + blips_deactivated = "İşaretci'ler devre dışı bırakıldı", + names_deactivated = 'İsimler devre dışı bırakıldı', + changed_perm_failed = 'Bir yetki grubu seçin!', + missing_reason = 'Bir sebep göstermelisiniz!', + invalid_reason_length_ban = 'Yasak için bir gerekçe göstermeli ve bir süre belirlemelisiniz!', + no_store_vehicle_garage = 'Bu aracı garajınızda saklayamazsınız..', + no_vehicle = 'Bir aracın içinde değilsin..', + no_weapon = 'Elinde bir silah yok..', + no_free_seats = 'Araçta boş koltuk yok!', + failed_vehicle_owner = 'Bu araç zaten size ait...', + not_online = 'Bu oyuncu çevrimiçi değil', + no_receive_report = 'Rapor almıyorsunuz', + failed_set_speed = 'Hızı ayarlamamışsın.. (süper koşu için `fast`, normal için `normal`)', + failed_set_model = 'Bir model belirlemediniz..', + failed_entity_copy = 'Panoya kopyalanacak seçili varlık bilgisi yok!', + }, + success = { + blips_activated = "İşaretci'ler aktif edildi", + names_activated = 'İsimler aktif edildi', + coords_copied = 'Koordinatlar panoya kopyalandı!', + heading_copied = 'Bakış acısı panoya kopyalandı!', + changed_perm = 'Yetki düzeyi grubu değişti', + entered_vehicle = 'Araca bin', + success_vehicle_owner = 'Araç artık sizin!', + receive_reports = 'Raporlar alıyorsunuz', + entity_copy = 'Seçili varlık bilgileri panoya kopyalandı!', + spawn_weapon = 'Bir Silah ürettiniz ', + noclip_enabled = 'Hayalet modu aktif edildi', + noclip_disabled = 'Hayalet modu devre dışı bırakıldı', + }, + info = { + ped_coords = 'Ped koordinatları:', + vehicle_dev_data = 'Araç geliştirici verileri:', + ent_id = 'Varlık ID:', + net_id = 'Net ID:', + net_id_not_registered = 'Kayıtlı değil', + model = 'Model', + hash = 'Hash', + eng_health = 'Motor sağlığı:', + body_health = 'Vücüt sağlığı:', + go_to = 'Git', + remove = 'Kaldır', + confirm = 'Onayla', + reason_title = 'Sebep', + length = 'Uzunluk', + options = 'Seçenekler', + position = 'Pozisyon', + your_position = 'senin pozisyonuna', + open = 'Aç', + inventories = 'envanter', + reason = 'bir sebep göstermeniz gerekir', + give = 'ver', + id = 'ID:', + player_name = 'Oyuncu Adı', + obj = 'Obje', + ammoforthe = '%{weapon} için +%{value} cephane verildi', + kicked_server = 'Sunucudan atıldınız', + check_discord = "🔸 Daha fazla bilgi için Discord'umuzu kontrol edin: ", + banned = 'Yasaklandınız:', + ban_perm = "\n\nYasağınız kalıcıdır.\n🔸 Daha fazla bilgi için Discord'umuzu kontrol edin: ", + ban_expires = '\n\nYasağın süresi: ', + rank_level = 'Yeni yetki düzeyiniz ', + admin_report = 'Yönetici Raporu - ', + staffchat = 'YETKILISOHBETI - ', + warning_chat_message = '^8UYARI ^7 Tarafından uyarıldınız', + warning_staff_message = '^8UYARI ^7 Uyardınız ', + no_reason_specified = 'Sebep belirtilmedi', + server_restart = "Sunucu yeniden başlatılıyor, Daha fazla bilgi için Discord'umuzu kontrol edin: ", + entity_view_distance = 'Varlık görünümü mesafesi şu şekilde ayarlandı: %{distance} metre', + entity_view_info = 'Varlık Bilgileri', + entity_view_title = 'Varlık Serbest Çalışma Modu', + entity_freeaim_delete = 'Varlığı Sil', + entity_freeaim_freeze = 'Varlığı Dondur', + entity_frozen = 'Dondur', + entity_unfrozen = 'Dondurmayı kaldır', + model_hash = 'Model hash:', + obj_name = 'Nesne ismi:', + ent_owner = 'Varlık sahibi:', + cur_health = 'Şu anki sağlık durumu:', + max_health = 'Maksimum sağlık:', + armour = 'Zırh:', + rel_group = 'Bağlantı grubu:', + rel_to_player = 'Oyuncu ile bağlantısı:', + rel_group_custom = 'Özel bağlantı', + veh_acceleration = 'İvme:', + veh_cur_gear = 'Şuanki vites:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Uzaklık:', + obj_heading = 'Bakış yönü:', + obj_coords = 'Kordinat:', + obj_rot = 'Rotasyon:', + obj_velocity = 'Hız:', + obj_unknown = 'Bilinmiyor', + you_have = 'Serbest ', + freeaim_entity = ' varlığına sahipsiniz', + entity_del = 'Varlık silindi', + entity_del_error = 'Varlık silinirken hata oluştu', + }, + menu = { + admin_menu = 'Yönetici menüsü', + admin_options = 'Yönetici seçenekleri', + online_players = 'Çevrimiçi oyuncular', + manage_server = 'Sunucuyu yönet', + weather_conditions = 'Kullanılabilir hava durumu seçenekleri', + dealer_list = 'Satıcı listesi', + ban = 'Yasakla', + kick = 'At', + permissions = 'İzinler', + developer_options = 'Geliştirici seçenekleri', + vehicle_options = 'Araç seçenekleri', + vehicle_categories = 'Araç kategorileri', + vehicle_models = 'Araç modelleri', + player_management = 'Oyuncu yönetimi', + server_management = 'Sunucu yönetimi', + vehicles = 'Araçlar', + noclip = 'Hayalet modu', + revive = 'İyileştir', + invisible = 'Görünmez ol', + god = 'Ölümsüzlük', + names = 'İsimleri göster', + blips = 'Oyuncu işaretcilerini göster', + weather_options = 'Hava Durumu Seçenekleri', + server_time = 'Sunucu saati', + time = 'Saat', + copy_vector3 = 'vector3 Kopyala', + copy_vector4 = 'vector4 Kopyala', + display_coords = 'Kordinatları göster', + copy_heading = 'Bakış açısını kopyala', + vehicle_dev_mode = 'Araç geliştirme modu', + spawn_vehicle = 'Araç çıkart', + fix_vehicle = 'Aracı tamir et', + buy = 'Satın al', + remove_vehicle = 'Aracı kaldır', + edit_dealer = 'Satıcıyı düzenle ', + dealer_name = 'Satıcı adı', + category_name = 'Kategori ismi', + kill = 'Öldür', + freeze = 'Dondur', + spectate = 'İzle', + bring = 'Yanına çek', + sit_in_vehicle = 'Aracına otur', + open_inv = 'Envanteri aç', + give_clothing_menu = 'Kıyafet menüsü ver', + hud_dev_mode = 'Geliştirici modu (qb-hud)', + entity_view_options = 'Varlık Görünüm Modu', + entity_view_distance = 'Görüş Mesafesini Ayarla', + entity_view_freeaim = 'Serbest mod', + entity_view_peds = 'Pedleri Göster', + entity_view_vehicles = 'Araçları göster', + entity_view_objects = 'Nesneleri Göster', + entity_view_freeaim_copy = 'Serbest Varlık Bilgilerini Kopyala', + spawn_weapons = 'Silah çıkart', + max_mods = "Aracı maksimum'a çek", + }, + desc = { + admin_options_desc = 'Diğer. Yönetici Seçenekleri', + player_management_desc = 'Oyuncuların Listesini Görüntüle', + server_management_desc = 'Diğer. Sunucu Seçenekleri', + vehicles_desc = 'Araç seçenekleri', + dealer_desc = 'Mevcut satıcıların listesi', + noclip_desc = 'Hayalet modunu Etkinleştir/Devre Dışı Bırak', + revive_desc = 'Kendinizi canlandırın', + invisible_desc = 'Görünmezliği Etkinleştir/Devre Dışı Bırak', + god_desc = 'Ölümsüzlük Modunu Etkinleştir/Devre Dışı Bırak', + names_desc = 'Adları göstermeyi Etkinleştir/Devre Dışı Bırak', + blips_desc = "Haritalarda oyuncular için işaretci'leri Etkinleştir/Devre Dışı Bırak", + weather_desc = 'Hava Durumunu Değiştirin', + developer_desc = 'Diğer. Geliştirme Seçenekleri', + vector3_desc = "vector3'ü Panoya Kopyala", + vector4_desc = "vector4'ü Panoya Kopyala", + display_coords_desc = 'Koordinatları Ekranda Göster', + copy_heading_desc = 'Bakış açısını Panoya Kopyala', + vehicle_dev_mode_desc = 'Araç Bilgilerini Görüntüle', + delete_laser_desc = 'Varlık silme lazerini Etkinleştir/Devre Dışı Bırak', + spawn_vehicle_desc = 'Bir araç çıkart', + fix_vehicle_desc = 'İçinde bulunduğunuz aracı tamir edin', + buy_desc = 'Aracı ücretsiz satın alın', + remove_vehicle_desc = 'En yakındaki aracı kaldırın', + dealergoto_desc = 'Satıcıya git', + dealerremove_desc = 'Satıcıyı kaldırın', + kick_reason = 'Atma sebebi', + confirm_kick = 'Atmayı onaylayın', + ban_reason = 'Yasak sebebi', + confirm_ban = 'Yasağı onaylayın', + sit_in_veh_desc = 'Aracın içerisine', + sit_in_veh_desc2 = "'oturun", + clothing_menu_desc = 'Kıyafet menüsünü verin', + hud_dev_mode_desc = 'Geliştirici Modunu Etkinleştir/Devre Dışı Bırak', + entity_view_desc = 'Varlıklar hakkında bilgileri görüntüleyin', + entity_view_freeaim_desc = 'Serbest mod aracılığıyla varlık bilgilerini Etkinleştir/Devre Dışı Bırak', + entity_view_peds_desc = 'Dünyadaki ped bilgisini Etkinleştir/Devre Dışı Bırak', + entity_view_vehicles_desc = 'Dünyadaki araç bilgilerini Etkinleştir/Devre Dışı Bırak', + entity_view_objects_desc = 'Dünyadaki nesne bilgilerini Etkinleştir/Devre Dışı Bırak', + entity_view_freeaim_copy_desc = 'Serbest mod varlık bilgilerini panoya kopyalar', + spawn_weapons_desc = 'Herhangi bir silahı çıkar.', + max_mod_desc = 'Mevcut aracınızı maksimume modifiye edin', + }, + time = { + ban_length = 'Yasak Uzunluğu', + onehour = '1 saat', + sixhour = '6 saat', + twelvehour = '12 saat', + oneday = '1 Gün', + threeday = '3 Gün', + oneweek = '1 Hafta', + onemonth = '1 Ay', + threemonth = '3 Ay', + sixmonth = '6 Ay', + oneyear = '1 Yıl', + permanent = 'Kalıcı', + self = 'Kendin belirle', + changed = 'Zaman %{time} 00 olarak değiştirildi', + }, + weather = { + extra_sunny = 'Ekstra Güneşli', + extra_sunny_desc = 'Eriyorum!', + clear = 'Temiz', + clear_desc = 'Mükemmel Gün!', + neutral = 'Doğal', + neutral_desc = 'Sıradan Bir Gün!', + smog = 'Dumanlı', + smog_desc = 'Duman Makinesi!', + foggy = 'Sisli', + foggy_desc = 'Duman Makinesi x2!', + overcast = 'Bulutlu', + overcast_desc = 'Çok da Güneşli Değil!', + clouds = 'Bulutlu 2', + clouds_desc = 'Güneş nerede?', + clearing = 'Bulutsuz', + clearing_desc = 'Bulutlar Açılmaya Başlıyor!', + rain = 'Yağmurlu', + rain_desc = 'Yağmur yağdır!', + thunder = 'Gök gürültülü', + thunder_desc = 'Kaç ve Saklan!', + snow = 'Karlı', + snow_desc = 'Dışarısı soğuk mu?', + blizzard = 'Kar fırtınası', + blizzed_desc = 'Birisi kar makinesini açıkmı bıraktı?', + light_snow = 'Hafif Kar Yağışı', + light_snow_desc = 'Noel Gibi Hissetmeye Başlıyorum!', + heavy_snow = 'Şiddetli Kar (XMAS)', + heavy_snow_desc = 'Kartopu Savaşı!', + halloween = 'Cadılar Bayramı', + halloween_desc = 'Bu gürültü de neydi?!', + weather_changed = 'Hava durumu değişti: %{value}', + }, + commands = { + blips_for_player = 'Oyuncular için haritada işaretcileri göster [Yetkili İçin]', + player_name_overhead = 'Oyuncu adını baş üstünde göster [Yetkili İçin]', + coords_dev_command = 'Geliştirme öğeleri için koordinat gösterimini etkinleştirin [Yetkili İçin]', + toogle_noclip = 'Hayalet modunu aç/kapat [Yetkili İçin]', + save_vehicle_garage = 'Aracı garajınıza kaydet [Yetkili İçin]', + make_announcement = 'Duyuru yapın [Yetkili İçin]', + open_admin = 'Yönetici menüsünü aç [Yetkili İçin]', + staffchat_message = 'Tüm personele mesaj gönderin [Yetkili İçin]', + nui_focus = 'Bir oyuncuya NUI odağı verin [Yetkili İçin]', + warn_a_player = 'Bir oyuncuyu uyarın [Yetkili İçin]', + check_player_warning = 'Oyuncu uyarılarını kontrol et [Yetkili İçin]', + delete_player_warning = 'Oyuncu uyarılarını sil [Yetkili İçin]', + reply_to_report = 'Bir rapora yanıt verin [Yetkili İçin]', + change_ped_model = 'Ped modelini değiştirin [Yetkili İçin]', + set_player_foot_speed = 'Oyuncu yürüme hızını ayarla [Yetkili İçin]', + report_toggle = 'Gelen Raporları Aç/Kapat [Yetkili İçin]', + kick_all = 'Tüm oyuncuları at', + ammo_amount_set = 'Cephane miktarınızı ayarlayın [Yetkili İçin]', + } +} + +if GetConvar('qb_locale', 'en') == 'tr' then + Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/locales/vi.lua b/resources/[core]/ui-admin/locales/vi.lua new file mode 100644 index 0000000..7063bd6 --- /dev/null +++ b/resources/[core]/ui-admin/locales/vi.lua @@ -0,0 +1,279 @@ +local Translations = { + error = { + blips_deactivated = 'Blips đã được vô hiệu hóa', + names_deactivated = 'Tên đã được vô hiệu hóa', + changed_perm_failed = 'Hãy chọn chức vụ!', + missing_reason = 'Bạn phải đưa ra lý do!', + invalid_reason_length_ban = 'Bạn phải đưa ra Lý do và thời hạn cho lệnh cấm!', + no_store_vehicle_garage = 'Bạn không thể cất chiếc xe này trong Ga-ra của mình...', + no_vehicle = 'Bạn không ở trong một chiếc xe...', + no_weapon = 'Bạn không có vũ khí trong tay...', + no_free_seats = 'Xe không còn chỗ ngồi!', + failed_vehicle_owner = 'Chiếc xe này giờ đã là của bạn...', + not_online = 'Người chơi không hoạt động', + no_receive_report = 'Bạn không nhận được báo cáo', + failed_set_speed = 'Bạn đã không đặt tốc độ... (`fast` để chạy siêu nhanh, `normal` để chạy bình thường)', + failed_set_model = 'Bạn đã không thiết lập được Model...', + failed_entity_copy = 'Không có thông tin để sao chép!', + }, + success = { + blips_activated = 'Blips đã bật', + names_activated = 'Tên đã bật', + coords_copied = 'Đã sao chép tọa độ!', + heading_copied = 'Đã sao chép tiêu đề!', + changed_perm = 'Nhóm quyền đã thay đổi', + entered_vehicle = 'Entered vehicle', + success_vehicle_owner = 'Phương tiện bây giờ là của bạn!', + receive_reports = 'Bạn đang nhận được báo cáo', + entity_copy = 'Đã sao chép thông tin!', + spawn_weapon = 'Bạn đã tạo ra Vũ khí', + noclip_enabled = 'No-clip đã bật', + noclip_disabled = 'No-clip đã tắt', + }, + info = { + ped_coords = 'Tọa độ Ped:', + vehicle_dev_data = 'Dữ liệu phương tiện:', + ent_id = 'Entity ID:', + net_id = 'Net ID:', + net_id_not_registered = 'Chưa đăng ký', + model = 'Model', + hash = 'Hash', + eng_health = 'Động cơ:', + body_health = 'Thân vỏ:', + go_to = 'Đi đến', + remove = 'Loại bỏ', + confirm = 'Xác nhận', + reason_title = 'Lý do', + length = 'Thời hạn', + options = 'Tùy chọn', + position = 'Vị trí', + your_position = 'đến vị trí của bạn', + open = 'Mở', + inventories = 'Túi đồ', + reason = 'Bạn cần phải đưa ra một lý do', + give = 'cho', + id = 'ID:', + player_name = 'Tên người chơi', + obj = 'Obj', + ammoforthe = '+%{value} Đạn cho %{weapon}', + kicked_server = 'Bạn đã bị kick khỏi máy chủ', + check_discord = '🔸 Kiểm tra Discord của chúng tôi để biết thêm thông tin: ', + banned = 'Bạn đã bị cấm:', + ban_perm = '\n\nLệnh cấm của bạn là vĩnh viễn.\n🔸 Kiểm tra Discord của chúng tôi để biết thêm thông tin: ', + ban_expires = '\n\nLệnh cấm hết hạn: ', + rank_level = 'Cấp độ của bạn là bây giờ ', + admin_report = 'Báo cáo quản trị - ', + staffchat = 'STAFFCHAT - ', + warning_chat_message = '^8WARNING ^7 Bạn đã được cảnh báo bởi', + warning_staff_message = '^8WARNING ^7 Bạn đã cảnh báo ', + no_reason_specified = 'Không có lý do cụ thể', + server_restart = 'Khởi động lại máy chủ, kiểm tra Discord của chúng tôi để biết thêm thông tin: ', + entity_view_distance = 'Khoảng cách xem Entity được đặt thành: %{distance} mét', + entity_view_info = 'Thông tin Entity', + entity_view_title = 'Entity Freeaim Mode', + entity_freeaim_delete = 'Xóa Entity', + entity_freeaim_freeze = 'Đóng băng Entity', + entity_frozen = 'Đã đóng băng Entity', + entity_unfrozen = 'Ngưng đóng băng Entity', + model_hash = 'Model hash:', + obj_name = 'Tên vật thể:', + ent_owner = 'Entity owner:', + cur_health = 'Sức khỏe hiện tại:', + max_health = 'Sức khỏe Max:', + armour = 'Áo giáp:', + rel_group = 'Relation Group:', + rel_to_player = 'Relation to Player:', + rel_group_custom = 'Custom Relationship', + veh_acceleration = 'Sự tăng tốc:', + veh_cur_gear = 'Số hiện tại:', + veh_speed_kph = 'Kph:', + veh_speed_mph = 'Mph:', + veh_rpm = 'Rpm:', + dist_to_obj = 'Dist:', + obj_heading = 'Heading:', + obj_coords = 'Tọa độ:', + obj_rot = 'Xoay:', + obj_velocity = 'Velocity:', + obj_unknown = 'Không rõ', + you_have = 'Bạn có', + freeaim_entity = ' the freeaim entity', + entity_del = 'Entity đã bị xóa', + entity_del_error = 'Lỗi, không thể xóa Entity', + }, + menu = { + admin_menu = 'Menu Admin', + admin_options = 'Lựa chọn Admin', + online_players = 'Người chơi Online', + manage_server = 'Quản lý máy chủ', + weather_conditions = 'Tùy chọn thời tiết', + dealer_list = 'Danh sách đại lý', + ban = 'Ban', + kick = 'Kick', + permissions = 'Quyền hạn', + developer_options = 'Tùy chọn DEV', + vehicle_options = 'Tùy chọn phương tiện', + vehicle_categories = 'Chủng loại phương tiện', + vehicle_models = 'Models phương tiện', + player_management = 'Quản lý người chơi', + server_management = 'Quản lý máy chủ', + vehicles = 'Phương tiện', + noclip = 'NoClip', + revive = 'Hồi sinh', + invisible = 'Tàng hình', + god = 'Chế độ GOD', + names = 'Tên', + blips = 'Blips', + weather_options = 'Tùy chọn thời tiết', + server_time = 'Thời gian máy chủ', + time = 'Thời gian', + copy_vector3 = 'Copy vector3', + copy_vector4 = 'Copy vector4', + display_coords = 'Hiển thị tọa độ', + copy_heading = 'Copy Heading', + vehicle_dev_mode = 'Chế độ phương tiện DEV', + spawn_vehicle = 'Spawn phương tiện', + fix_vehicle = 'Sửa phương tiện', + buy = 'Mua', + remove_vehicle = 'Xóa phương tiện', + edit_dealer = 'Sửa đại lý ', + dealer_name = 'Tên đại lý', + category_name = 'Tên danh mục', + kill = 'Giết', + freeze = 'Đóng băng', + spectate = 'Theo dõi', + bring = 'Kéo đến bạn', + sit_in_vehicle = 'Tele vào phương tiện', + open_inv = 'Mở túi đồ', + give_clothing_menu = 'Đưa tùy chỉnh nhân vật', + hud_dev_mode = 'Chế độ DEV (qb-hud)', + entity_view_options = 'Chế độ xem Entity', + entity_view_distance = 'Đặt khoảng cách xem', + entity_view_freeaim = 'Chế độ Freeaim', + entity_view_peds = 'Hiển thị Peds', + entity_view_vehicles = 'Hiển thị phương tiện', + entity_view_objects = 'Hiển thị vật thể', + entity_view_freeaim_copy = 'Sao chép thông tin Entity Freeaim', + spawn_weapons = 'Lấy vũ khí', + max_mods = 'Max car mods', + }, + desc = { + admin_options_desc = 'Tùy chọn Admin', + player_management_desc = 'Quản lý người chơi', + server_management_desc = 'Quản lý máy chủ', + vehicles_desc = 'Tùy chọn phương tiện', + dealer_desc = 'Danh sách các đại lý hiện có', + noclip_desc = 'Bật/Tắt NoClip', + revive_desc = 'Hồi sinh bản thân', + invisible_desc = 'Bật/Tắt vô hình', + god_desc = 'Bật/Tắt God', + names_desc = 'Bật/Tắt Tên trên đầu', + blips_desc = 'Bật/Tắt Blips người chơi trên map', + weather_desc = 'Thay đổi thời tiết', + developer_desc = 'Tùy chọn DEV', + vector3_desc = 'Sao chép vector3', + vector4_desc = 'Sao chép vector4', + display_coords_desc = 'Hiển thị tọa độ', + copy_heading_desc = 'Sao chép heading', + vehicle_dev_mode_desc = 'Hiển thị thông tin phương tiện', + delete_laser_desc = 'Bật/Tắt Laser', + spawn_vehicle_desc = 'Lấy phương tiện', + fix_vehicle_desc = 'Sửa chữa phương tiện', + buy_desc = 'Mua xe miễn phí', + remove_vehicle_desc = 'Xóa phương tiện gần nhất', + dealergoto_desc = 'Đi đến đại lý', + dealerremove_desc = 'Xóa đại lý', + kick_reason = 'Kick với lý do', + confirm_kick = 'Đồng ý kick', + ban_reason = 'Ban với lý do', + confirm_ban = 'Xác nhận lệnh cấm', + sit_in_veh_desc = 'Ngồi vào', + sit_in_veh_desc2 = "'s vehicle", + clothing_menu_desc = 'Cung cấp Menu nhân vật', + hud_dev_mode_desc = 'Bật/Tắt chế độ DEV', + entity_view_desc = 'Xem thông tin về các Entity', + entity_view_freeaim_desc = 'Bật/Tắt Entity freeaim', + entity_view_peds_desc = 'Bật/Tắt thông tin Ped', + entity_view_vehicles_desc = 'Bật/Tắt thông tin phương tiện', + entity_view_objects_desc = 'Bật/Tắt thông tin Object', + entity_view_freeaim_copy_desc = 'Sao chép thông tin Entity Free Aim', + spawn_weapons_desc = 'Chọn vũ khí muốn lấy.', + max_mod_desc = 'Mod tối đa chiếc xe hiện tại của bạn', + }, + time = { + ban_length = 'Thời hạn lệnh cấm', + onehour = '1 giờ', + sixhour = '6 giờ', + twelvehour = '12 giờ', + oneday = '1 ngày', + threeday = '3 ngày', + oneweek = '1 tuần', + onemonth = '1 tháng', + threemonth = '3 tháng', + sixmonth = '6 tháng', + oneyear = '1 năm', + permanent = 'Dài hạn', + self = 'Bản thân', + changed = 'Thời gian đã thay đổi thành %{time} giờ 00 phút', + }, + weather = { + extra_sunny = 'Nắng cực', + extra_sunny_desc = 'Cực nắng', + clear = 'Trong lành', + clear_desc = 'Một ngày hoàn hảo!', + neutral = 'Ôn hòa', + neutral_desc = 'Chỉ là một ngày bình thường!', + smog = 'Khói bụi', + smog_desc = 'Khói từ các nhà máy!', + foggy = 'Sương mù', + foggy_desc = 'Khói x2!', + overcast = 'U ám', + overcast_desc = 'Không quá nắng!', + clouds = 'Nhiều mây', + clouds_desc = 'Mặt trời kìa ở đâu? ', + clearing = 'Trong sạch', + clearing_desc = 'Mây bắt đầu tan!', + rain = 'Cơn mưa', + rain_desc = 'Cơn mưa ngang qua!', + thunder = 'Sấm sét', + thunder_desc = 'Chạy ngay đi trước khi!', + snow = 'Tuyết', + snow_desc = 'Ở đây có lạnh không?', + blizzard = 'Bão tuyết', + blizzed_desc = 'Máy tạo tuyết!', + light_snow = 'Tuyết nhẹ', + light_snow_desc = 'Bắt đầu Cảm thấy Giống như Giáng sinh!', + heavy_snow = 'Tuyết rơi nhiều (XMAS)', + heavy_snow_desc = 'Đáp bóng tuyết nào!', + halloween = 'Halloween', + halloween_desc = 'Tiếng ồn đó là gì?!', + weather_changed = 'Thời tiết đã thay đổi thành: %{value}', + }, + commands = { + blips_for_player = 'Hiển thị blips cho người chơi (Chỉ dành cho Admin)', + player_name_overhead = 'Hiển thị tên người chơi (Chỉ dành cho Admin)', + coords_dev_command = 'Bật coord hiển thị cho công cụ DEV (Chỉ dành cho Admin)', + toogle_noclip = 'Chuyển đổi noclip (Chỉ dành cho Admin)', + save_vehicle_garage = 'Lưu xe vào Ga-ra của bạn (Chỉ dành cho Admin)', + make_announcement = 'Đưa ra thông báo (Chỉ dành cho Admin)', + open_admin = 'Mở Menu Admin (Chỉ dành cho Admin)', + staffchat_message = 'Gửi tin nhắn cho tất cả nhân viên (Chỉ dành cho Admin)', + nui_focus = 'Cung cấp NUI cho người chơi (Chỉ dành cho Admin)', + warn_a_player = 'Cảnh báo người chơi (Chỉ dành cho Admin)', + check_player_warning = 'Kiểm tra cảnh báo của người chơi (Chỉ dành cho Admin)', + delete_player_warning = 'Xóa cảnh báo người chơi (Chỉ dành cho Admin)', + reply_to_report = 'Trả lời báo cáo (Chỉ dành cho Admin)', + change_ped_model = 'Thay đổi Model Ped (Chỉ dành cho Admin)', + set_player_foot_speed = 'Đặt tốc độ chân của người chơi (Chỉ dành cho Admin)', + report_toggle = 'Chuyển báo cáo đến (Chỉ dành cho Admin)', + kick_all = 'Kick tất cả người chơi', + ammo_amount_set = 'Đặt số lượng đạn của bạn (Chỉ dành cho Admin)', + } +} + +if GetConvar('qb_locale', 'en') == 'vi' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-admin/server/server.lua b/resources/[core]/ui-admin/server/server.lua new file mode 100644 index 0000000..3c1d8b5 --- /dev/null +++ b/resources/[core]/ui-admin/server/server.lua @@ -0,0 +1,544 @@ +-- Variables +local QBCore = exports['qb-core']:GetCoreObject() +local frozen = false +local permissions = { + ['kill'] = 'admin', + ['ban'] = 'admin', + ['noclip'] = 'admin', + ['kickall'] = 'admin', + ['kick'] = 'admin', + ['revive'] = 'admin', + ['freeze'] = 'admin', + ['goto'] = 'admin', + ['spectate'] = 'admin', + ['intovehicle'] = 'admin', + ['bring'] = 'admin', + ['inventory'] = 'admin', + ['clothing'] = 'admin' +} + +function GetQBPlayers() + local playerReturn = {} + local players = QBCore.Functions.GetQBPlayers() + + for id, player in pairs(players) do + local playerPed = GetPlayerPed(id) + local name = (player.PlayerData.charinfo.firstname or '') .. ' ' .. (player.PlayerData.charinfo.lastname or '') + playerReturn[#playerReturn + 1] = { + name = name .. ' | (' .. (player.PlayerData.name or '') .. ')', + id = id, + coords = GetEntityCoords(playerPed), + cid = name, + citizenid = player.PlayerData.citizenid, + sources = playerPed, + sourceplayer = id + } + end + return playerReturn +end + +-- Get Dealers +QBCore.Functions.CreateCallback('test:getdealers', function(_, cb) + cb(exports['qb-drugs']:GetDealers()) +end) + +-- Get Players +QBCore.Functions.CreateCallback('test:getplayers', function(_, cb) -- WORKS + local players = GetQBPlayers() + cb(players) +end) + +QBCore.Functions.CreateCallback('qb-admin:isAdmin', function(src, cb) -- WORKS + cb(QBCore.Functions.HasPermission(src, 'admin') or IsPlayerAceAllowed(src, 'command')) +end) + +QBCore.Functions.CreateCallback('qb-admin:server:getrank', function(source, cb) + if QBCore.Functions.HasPermission(source, 'god') or IsPlayerAceAllowed(source, 'command') then + cb(true) + else + cb(false) + end +end) + +-- Functions +local function tablelength(table) + local count = 0 + for _ in pairs(table) do + count = count + 1 + end + return count +end + +local function BanPlayer(src) + MySQL.insert('INSERT INTO bans (name, license, discord, ip, reason, expire, bannedby) VALUES (?, ?, ?, ?, ?, ?, ?)', { + GetPlayerName(src), + QBCore.Functions.GetIdentifier(src, 'license'), + QBCore.Functions.GetIdentifier(src, 'discord'), + QBCore.Functions.GetIdentifier(src, 'ip'), + 'Trying to revive theirselves or other players', + 2147483647, + 'qb-adminmenu' + }) + TriggerEvent('qb-log:server:CreateLog', 'adminmenu', 'Player Banned', 'red', string.format('%s was banned by %s for %s', GetPlayerName(src), 'qb-adminmenu', 'Trying to trigger admin options which they dont have permission for'), true) + DropPlayer(src, 'You were permanently banned by the server for: Exploiting') +end + +-- Events +RegisterNetEvent('qb-admin:server:GetPlayersForBlips', function() + local src = source + local players = GetQBPlayers() + TriggerClientEvent('qb-admin:client:Show', src, players) +end) + +RegisterNetEvent('qb-admin:server:kill', function(player) + local src = source + if QBCore.Functions.HasPermission(src, permissions['kill']) or IsPlayerAceAllowed(src, 'command') then + TriggerClientEvent('hospital:client:KillPlayer', player.id) + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:revive', function(player) + local src = source + if QBCore.Functions.HasPermission(src, permissions['revive']) or IsPlayerAceAllowed(src, 'command') then + TriggerClientEvent('hospital:client:Revive', player.id) + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:kick', function(player, reason) + local src = source + if QBCore.Functions.HasPermission(src, permissions['kick']) or IsPlayerAceAllowed(src, 'command') then + TriggerEvent('qb-log:server:CreateLog', 'bans', 'Player Kicked', 'red', string.format('%s was kicked by %s for %s', GetPlayerName(player.id), GetPlayerName(src), reason), true) + DropPlayer(player.id, Lang:t('info.kicked_server') .. ':\n' .. reason .. '\n\n' .. Lang:t('info.check_discord') .. QBCore.Config.Server.Discord) + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:ban', function(player, time, reason) + local src = source + if QBCore.Functions.HasPermission(src, permissions['ban']) or IsPlayerAceAllowed(src, 'command') then + time = tonumber(time) + local banTime = tonumber(os.time() + time) + if banTime > 2147483647 then + banTime = 2147483647 + end + local timeTable = os.date('*t', banTime) + MySQL.insert('INSERT INTO bans (name, license, discord, ip, reason, expire, bannedby) VALUES (?, ?, ?, ?, ?, ?, ?)', { + GetPlayerName(player.id), + QBCore.Functions.GetIdentifier(player.id, 'license'), + QBCore.Functions.GetIdentifier(player.id, 'discord'), + QBCore.Functions.GetIdentifier(player.id, 'ip'), + reason, + banTime, + GetPlayerName(src) + }) + TriggerClientEvent('chat:addMessage', -1, { + template = "
ANNOUNCEMENT | {0} has been banned: {1}
", + args = { GetPlayerName(player.id), reason } + }) + TriggerEvent('qb-log:server:CreateLog', 'bans', 'Player Banned', 'red', string.format('%s was banned by %s for %s', GetPlayerName(player.id), GetPlayerName(src), reason), true) + if banTime >= 2147483647 then + DropPlayer(player.id, Lang:t('info.banned') .. '\n' .. reason .. Lang:t('info.ban_perm') .. QBCore.Config.Server.Discord) + else + DropPlayer(player.id, Lang:t('info.banned') .. '\n' .. reason .. Lang:t('info.ban_expires') .. timeTable['day'] .. '/' .. timeTable['month'] .. '/' .. timeTable['year'] .. ' ' .. timeTable['hour'] .. ':' .. timeTable['min'] .. '\n🔸 Check our Discord for more information: ' .. QBCore.Config.Server.Discord) + end + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:spectate', function(player) + local src = source + if QBCore.Functions.HasPermission(src, permissions['spectate']) or IsPlayerAceAllowed(src, 'command') then + local targetped = GetPlayerPed(player.id) + local coords = GetEntityCoords(targetped) + TriggerClientEvent('qb-admin:client:spectate', src, player.id, coords) + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:freeze', function(player) + local src = source + if QBCore.Functions.HasPermission(src, permissions['freeze']) or IsPlayerAceAllowed(src, 'command') then + local target = GetPlayerPed(player.id) + if not frozen then + frozen = true + FreezeEntityPosition(target, true) + else + frozen = false + FreezeEntityPosition(target, false) + end + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:goto', function(player) + local src = source + if QBCore.Functions.HasPermission(src, permissions['goto']) or IsPlayerAceAllowed(src, 'command') then + local admin = GetPlayerPed(src) + local coords = GetEntityCoords(GetPlayerPed(player.id)) + SetEntityCoords(admin, coords) + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:intovehicle', function(player) + local src = source + if QBCore.Functions.HasPermission(src, permissions['intovehicle']) or IsPlayerAceAllowed(src, 'command') then + local admin = GetPlayerPed(src) + local targetPed = GetPlayerPed(player.id) + local vehicle = GetVehiclePedIsIn(targetPed, false) + local seat = -1 + if vehicle ~= 0 then + for i = 0, 8, 1 do + if GetPedInVehicleSeat(vehicle, i) == 0 then + seat = i + break + end + end + if seat ~= -1 then + SetPedIntoVehicle(admin, vehicle, seat) + TriggerClientEvent('QBCore:Notify', src, Lang:t('sucess.entered_vehicle'), 'success', 5000) + else + TriggerClientEvent('QBCore:Notify', src, Lang:t('error.no_free_seats'), 'danger', 5000) + end + end + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:bring', function(player) + local src = source + if QBCore.Functions.HasPermission(src, permissions['bring']) or IsPlayerAceAllowed(src, 'command') then + local admin = GetPlayerPed(src) + local coords = GetEntityCoords(admin) + local target = GetPlayerPed(player.id) + SetEntityCoords(target, coords) + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:inventory', function(player) + local src = source + if QBCore.Functions.HasPermission(src, permissions['inventory']) or IsPlayerAceAllowed(src, 'command') then + exports['qb-inventory']:OpenInventoryById(src, player.id) + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:cloth', function(player) + local src = source + if QBCore.Functions.HasPermission(src, permissions['clothing']) or IsPlayerAceAllowed(src, 'command') then + TriggerClientEvent('qb-clothing:client:openMenu', player.id) + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:setPermissions', function(targetId, group) + local src = source + if QBCore.Functions.HasPermission(src, 'god') or IsPlayerAceAllowed(src, 'command') then + QBCore.Functions.AddPermission(targetId, group[1].rank) + TriggerClientEvent('QBCore:Notify', targetId, Lang:t('info.rank_level') .. group[1].label) + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:SendReport', function(name, targetSrc, msg) + local src = source + if QBCore.Functions.HasPermission(src, 'admin') or IsPlayerAceAllowed(src, 'command') then + if QBCore.Functions.IsOptin(src) then + TriggerClientEvent('chat:addMessage', src, { + color = { 255, 0, 0 }, + multiline = true, + args = { Lang:t('info.admin_report') .. name .. ' (' .. targetSrc .. ')', msg } + }) + end + end +end) + +RegisterServerEvent('qb-admin:giveWeapon', function(weapon) + local src = source + if QBCore.Functions.HasPermission(src, 'admin') or IsPlayerAceAllowed(src, 'command') then + exports['qb-inventory']:AddItem(src, weapon, 1, false, false, 'qb-admin:giveWeapon') + else + BanPlayer(src) + end +end) + +RegisterNetEvent('qb-admin:server:SaveCar', function(mods, vehicle, _, plate) + local src = source + if QBCore.Functions.HasPermission(src, 'admin') or IsPlayerAceAllowed(src, 'command') then + local Player = QBCore.Functions.GetPlayer(src) + local result = MySQL.query.await('SELECT plate FROM player_vehicles WHERE plate = ?', { plate }) + if result[1] == nil then + MySQL.insert('INSERT INTO player_vehicles (license, citizenid, vehicle, hash, mods, plate, state) VALUES (?, ?, ?, ?, ?, ?, ?)', { + Player.PlayerData.license, + Player.PlayerData.citizenid, + vehicle.model, + vehicle.hash, + json.encode(mods), + plate, + 0 + }) + TriggerClientEvent('QBCore:Notify', src, Lang:t('success.success_vehicle_owner'), 'success', 5000) + else + TriggerClientEvent('QBCore:Notify', src, Lang:t('error.failed_vehicle_owner'), 'error', 3000) + end + else + BanPlayer(src) + end +end) + +-- Commands + +QBCore.Commands.Add('maxmods', Lang:t('desc.max_mod_desc'), {}, false, function(source) + local src = source + TriggerClientEvent('qb-admin:client:maxmodVehicle', src) +end, 'admin') + +QBCore.Commands.Add('blips', Lang:t('commands.blips_for_player'), {}, false, function(source) + local src = source + TriggerClientEvent('qb-admin:client:toggleBlips', src) +end, 'admin') + +QBCore.Commands.Add('names', Lang:t('commands.player_name_overhead'), {}, false, function(source) + local src = source + TriggerClientEvent('qb-admin:client:toggleNames', src) +end, 'admin') + +QBCore.Commands.Add('coords', Lang:t('commands.coords_dev_command'), {}, false, function(source) + local src = source + TriggerClientEvent('qb-admin:client:ToggleCoords', src) +end, 'admin') + +QBCore.Commands.Add('noclip', Lang:t('commands.toogle_noclip'), {}, false, function(source) + local src = source + TriggerClientEvent('qb-admin:client:ToggleNoClip', src) +end, 'admin') + +QBCore.Commands.Add('admincar', Lang:t('commands.save_vehicle_garage'), {}, false, function(source, _) + TriggerClientEvent('qb-admin:client:SaveCar', source) +end, 'admin') + +QBCore.Commands.Add('announce', Lang:t('commands.make_announcement'), {}, false, function(_, args) + local msg = table.concat(args, ' ') + if msg == '' then return end + TriggerClientEvent('chat:addMessage', -1, { + color = { 255, 0, 0 }, + multiline = true, + args = { 'Announcement', msg } + }) +end, 'admin') + +QBCore.Commands.Add('admin', Lang:t('commands.open_admin'), {}, false, function(source, _) + TriggerClientEvent('qb-admin:client:openMenu', source) +end, 'admin') + +QBCore.Commands.Add('report', Lang:t('info.admin_report'), { { name = 'message', help = 'Message' } }, true, function(source, args) + local src = source + local msg = table.concat(args, ' ') + local Player = QBCore.Functions.GetPlayer(source) + TriggerClientEvent('qb-admin:client:SendReport', -1, GetPlayerName(src), src, msg) + TriggerEvent('qb-log:server:CreateLog', 'report', 'Report', 'green', '**' .. GetPlayerName(source) .. '** (CitizenID: ' .. Player.PlayerData.citizenid .. ' | ID: ' .. source .. ') **Report:** ' .. msg, false) +end) + +QBCore.Commands.Add('staffchat', Lang:t('commands.staffchat_message'), { { name = 'message', help = 'Message' } }, true, function(source, args) + local msg = table.concat(args, ' ') + local name = GetPlayerName(source) + + local plrs = GetPlayers() + + for _, plr in ipairs(plrs) do + plr = tonumber(plr) + if plr then + if QBCore.Functions.HasPermission(plr, 'admin') or IsPlayerAceAllowed(plr, 'command') then + if QBCore.Functions.IsOptin(plr) then + TriggerClientEvent('chat:addMessage', plr, { + color = { 255, 0, 0 }, + multiline = true, + args = { Lang:t('info.staffchat') .. name, msg } + }) + end + end + end + end +end, 'admin') + +QBCore.Commands.Add('givenuifocus', Lang:t('commands.nui_focus'), { { name = 'id', help = 'Player id' }, { name = 'focus', help = 'Set focus on/off' }, { name = 'mouse', help = 'Set mouse on/off' } }, true, function(_, args) + local playerid = tonumber(args[1]) + local focus = args[2] + local mouse = args[3] + TriggerClientEvent('qb-admin:client:GiveNuiFocus', playerid, focus, mouse) +end, 'admin') + +QBCore.Commands.Add('warn', Lang:t('commands.warn_a_player'), { { name = 'ID', help = 'Player' }, { name = 'Reason', help = 'Mention a reason' } }, true, function(source, args) + local targetPlayer = QBCore.Functions.GetPlayer(tonumber(args[1])) + local senderPlayer = QBCore.Functions.GetPlayer(source) + table.remove(args, 1) + local msg = table.concat(args, ' ') + local warnId = 'WARN-' .. math.random(1111, 9999) + if targetPlayer ~= nil then + TriggerClientEvent('chat:addMessage', targetPlayer.PlayerData.source, { args = { 'SYSTEM', Lang:t('info.warning_chat_message') .. GetPlayerName(source) .. ',' .. Lang:t('info.reason') .. ': ' .. msg }, color = 255, 0, 0 }) + TriggerClientEvent('chat:addMessage', source, { args = { 'SYSTEM', Lang:t('info.warning_staff_message') .. GetPlayerName(targetPlayer.PlayerData.source) .. ', for: ' .. msg }, color = 255, 0, 0 }) + MySQL.insert('INSERT INTO player_warns (senderIdentifier, targetIdentifier, reason, warnId) VALUES (?, ?, ?, ?)', { + senderPlayer.PlayerData.license, + targetPlayer.PlayerData.license, + msg, + warnId + }) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.not_online'), 'error') + end +end, 'admin') + +QBCore.Commands.Add('checkwarns', Lang:t('commands.check_player_warning'), { { name = 'id', help = 'Player' }, { name = 'Warning', help = 'Number of warning, (1, 2 or 3 etc..)' } }, false, function(source, args) + if args[2] == nil then + local targetPlayer = QBCore.Functions.GetPlayer(tonumber(args[1])) + local result = MySQL.query.await('SELECT * FROM player_warns WHERE targetIdentifier = ?', { targetPlayer.PlayerData.license }) + TriggerClientEvent('chat:addMessage', source, 'SYSTEM', 'warning', targetPlayer.PlayerData.name .. ' has ' .. tablelength(result) .. ' warnings!') + else + local targetPlayer = QBCore.Functions.GetPlayer(tonumber(args[1])) + local warnings = MySQL.query.await('SELECT * FROM player_warns WHERE targetIdentifier = ?', { targetPlayer.PlayerData.license }) + local selectedWarning = tonumber(args[2]) + if warnings[selectedWarning] ~= nil then + local sender = QBCore.Functions.GetPlayer(warnings[selectedWarning].senderIdentifier) + TriggerClientEvent('chat:addMessage', source, 'SYSTEM', 'warning', targetPlayer.PlayerData.name .. ' has been warned by ' .. sender.PlayerData.name .. ', Reason: ' .. warnings[selectedWarning].reason) + end + end +end, 'admin') + +QBCore.Commands.Add('delwarn', Lang:t('commands.delete_player_warning'), { { name = 'id', help = 'Player' }, { name = 'Warning', help = 'Number of warning, (1, 2 or 3 etc..)' } }, true, function(source, args) + local targetPlayer = QBCore.Functions.GetPlayer(tonumber(args[1])) + local warnings = MySQL.query.await('SELECT * FROM player_warns WHERE targetIdentifier = ?', { targetPlayer.PlayerData.license }) + local selectedWarning = tonumber(args[2]) + if warnings[selectedWarning] ~= nil then + TriggerClientEvent('chat:addMessage', source, 'SYSTEM', 'warning', 'You have deleted warning (' .. selectedWarning .. ') , Reason: ' .. warnings[selectedWarning].reason) + MySQL.query('DELETE FROM player_warns WHERE warnId = ?', { warnings[selectedWarning].warnId }) + end +end, 'admin') + +QBCore.Commands.Add('reportr', Lang:t('commands.reply_to_report'), { { name = 'id', help = 'Player' }, { name = 'message', help = 'Message to respond with' } }, false, function(source, args) + local src = source + local playerId = tonumber(args[1]) + table.remove(args, 1) + local msg = table.concat(args, ' ') + local OtherPlayer = QBCore.Functions.GetPlayer(playerId) + if msg == '' then return end + if not OtherPlayer then return TriggerClientEvent('QBCore:Notify', src, 'Player is not online', 'error') end + if not QBCore.Functions.HasPermission(src, 'admin') or IsPlayerAceAllowed(src, 'command') ~= 1 then return end + TriggerClientEvent('chat:addMessage', playerId, { + color = { 255, 0, 0 }, + multiline = true, + args = { 'Admin Response', msg } + }) + TriggerClientEvent('chat:addMessage', src, { + color = { 255, 0, 0 }, + multiline = true, + args = { 'Report Response (' .. playerId .. ')', msg } + }) + TriggerClientEvent('QBCore:Notify', src, 'Reply Sent') + TriggerEvent('qb-log:server:CreateLog', 'report', 'Report Reply', 'red', '**' .. GetPlayerName(src) .. '** replied on: **' .. OtherPlayer.PlayerData.name .. ' **(ID: ' .. OtherPlayer.PlayerData.source .. ') **Message:** ' .. msg, false) +end, 'admin') + +QBCore.Commands.Add('setmodel', Lang:t('commands.change_ped_model'), { { name = 'model', help = 'Name of the model' }, { name = 'id', help = 'Id of the Player (empty for yourself)' } }, false, function(source, args) + local model = args[1] + local target = tonumber(args[2]) + if model ~= nil or model ~= '' then + if target == nil then + TriggerClientEvent('qb-admin:client:SetModel', source, tostring(model)) + else + local Trgt = QBCore.Functions.GetPlayer(target) + if Trgt ~= nil then + TriggerClientEvent('qb-admin:client:SetModel', target, tostring(model)) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.not_online'), 'error') + end + end + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.failed_set_model'), 'error') + end +end, 'admin') + +QBCore.Commands.Add('setspeed', Lang:t('commands.set_player_foot_speed'), {}, false, function(source, args) + local speed = args[1] + if speed ~= nil then + TriggerClientEvent('qb-admin:client:SetSpeed', source, tostring(speed)) + else + TriggerClientEvent('QBCore:Notify', source, Lang:t('error.failed_set_speed'), 'error') + end +end, 'admin') + +QBCore.Commands.Add('reporttoggle', Lang:t('commands.report_toggle'), {}, false, function(source, _) + local src = source + QBCore.Functions.ToggleOptin(src) + if QBCore.Functions.IsOptin(src) then + TriggerClientEvent('QBCore:Notify', src, Lang:t('success.receive_reports'), 'success') + else + TriggerClientEvent('QBCore:Notify', src, Lang:t('error.no_receive_report'), 'error') + end +end, 'admin') + +QBCore.Commands.Add('kickall', Lang:t('commands.kick_all'), {}, false, function(source, args) + local src = source + if src > 0 then + local reason = table.concat(args, ' ') + if QBCore.Functions.HasPermission(src, 'god') or IsPlayerAceAllowed(src, 'command') then + if reason and reason ~= '' then + local players = GetPlayers() + for _, playerId in ipairs(players) do + DropPlayer(playerId, reason) + end + else + TriggerClientEvent('QBCore:Notify', src, Lang:t('info.no_reason_specified'), 'error') + end + end + else + local players = GetPlayers() + for _, playerId in ipairs(players) do + DropPlayer(playerId, Lang:t('info.server_restart') .. QBCore.Config.Server.Discord) + end + end +end, 'god') + +QBCore.Commands.Add('setammo', Lang:t('commands.ammo_amount_set'), { { name = 'amount', help = 'Amount of bullets, for example: 20' } }, false, function(source, args) + local src = source + local ped = GetPlayerPed(src) + local amount = tonumber(args[1]) + local weapon = GetSelectedPedWeapon(ped) + if weapon and amount then + SetPedAmmo(ped, weapon, amount) + TriggerClientEvent('QBCore:Notify', src, Lang:t('info.ammoforthe', { value = amount, weapon = QBCore.Shared.Weapons[weapon]['label'] }), 'success') + end +end, 'admin') + +QBCore.Commands.Add('vector2', 'Copy vector2 to clipboard (Admin only)', {}, false, function(source) + local src = source + TriggerClientEvent('qb-admin:client:copyToClipboard', src, 'coords2') +end, 'admin') + +QBCore.Commands.Add('vector3', 'Copy vector3 to clipboard (Admin only)', {}, false, function(source) + local src = source + TriggerClientEvent('qb-admin:client:copyToClipboard', src, 'coords3') +end, 'admin') + +QBCore.Commands.Add('vector4', 'Copy vector4 to clipboard (Admin only)', {}, false, function(source) + local src = source + TriggerClientEvent('qb-admin:client:copyToClipboard', src, 'coords4') +end, 'admin') + +QBCore.Commands.Add('heading', 'Copy heading to clipboard (Admin only)', {}, false, function(source) + local src = source + TriggerClientEvent('qb-admin:client:copyToClipboard', src, 'heading') +end, 'admin') diff --git a/resources/[core]/ui-base/.github/ISSUE_TEMPLATE/bug_report.md b/resources/[core]/ui-base/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..62f702f --- /dev/null +++ b/resources/[core]/ui-base/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,32 @@ +--- +name: Bug report +about: Create a report to help us improve or fix something +title: "[BUG]" +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. A stranger to qbcore should be able to read your bug report and understand how to reproduce it themselves and understand how the feature should work normally. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Use this item '....' (item's name from shared.lua if applicable) +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Questions (please complete the following information):** + - When you last updated: [e.g. last week] + - Are you using custom resource? which ones? [e.g. zdiscord, qb-target] + - Have you renamed `qb-` to something custom? [e.g. yes/no] + +**Additional context** +Add any other context about the problem here. diff --git a/resources/[core]/ui-base/.github/ISSUE_TEMPLATE/feature-request.md b/resources/[core]/ui-base/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000..9e9bf3e --- /dev/null +++ b/resources/[core]/ui-base/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,20 @@ +--- +name: Feature Request +about: Suggest an idea for QBCore +title: "[SUGGESTION]" +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. + +**Describe the feature you'd like** +A clear and concise description of what you want to happen. and with as much detail as possible how it would function in your opinion. Please try to keep it unique. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered for people to have in mind just in case the main idea isn't liked but a derivative is. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/resources/[core]/ui-base/.github/auto_assign.yml b/resources/[core]/ui-base/.github/auto_assign.yml new file mode 100644 index 0000000..2a80921 --- /dev/null +++ b/resources/[core]/ui-base/.github/auto_assign.yml @@ -0,0 +1,17 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: author + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - /maintenance + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +skipKeywords: + - wip + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 0 \ No newline at end of file diff --git a/resources/[core]/ui-base/.github/contributing.md b/resources/[core]/ui-base/.github/contributing.md new file mode 100644 index 0000000..21fb806 --- /dev/null +++ b/resources/[core]/ui-base/.github/contributing.md @@ -0,0 +1,201 @@ +# Contributing to QBCore + +First of all, thank you for taking the time to contribute! + +These guidelines will help you help us in the best way possible regardless of your skill level. We ask that you try to read everything related to the way you'd like to contribute and try and use your best judgement for anything not covered. + +### Table of Contents + +[Code of Conduct](#code-of-conduct) + +[I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question) + +[How Can I Contribute?](#how-can-i-contribute) + * [Reporting Bugs](#reporting-bugs) + * [Suggesting Features / Enhancements](#suggesting-features--enhancements) + * [Your First Code Contribution](#your-first-code-contribution) + * [Pull Requests](#pull-requests) + +[Styleguides](#styleguides) + * [Git Commit Messages](#git-commit-messages) + * [Lua Styleguide](#lua-styleguide) + * [JavaScript Styleguide](#javascript-styleguide) + + + +## Code of Conduct + +- Refrain from using languages other than English. +- Refrain from discussing any politically charged or inflammatory topics. +- Uphold mature conversations and respect each other; excessive profanity, hate speech or any kind of harassment will not be tolerated. +- No advertising of any kind. +- Follow these guidelines. +- Do not mention members of github unless a question is directed at them and can't be answered by anyone else. +- Do not mention any of the development team for any reason. We will read things as we get to them. + +## I don't want to read this whole thing I just have a question!!! + +> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below. + +* [QBCore Website](https://qbcore.org) +* [QBCore Discord](https://discord.gg/qbcore) +* [FiveM Discord - #qbcore channel](https://discord.gg/fivem) + + + + + + + + + + +## How Can I Contribute? + +### Reporting Bugs + +The easiest way to contribute for most people is just to report bugs you find cause if nobody reports it there's a chance we'll never know it exists and then we'll never fix it. + +Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out the bug-report template with the information it asks for helps us resolve issues faster. + +> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. + +#### Before Submitting A Bug Report + +* **Check the docs** There's a chance what you see as a bug might just work differently than you expect and if you think it could work better consider a feature enhancement report instead. +* **Search the [discord](https://discord.gg/qbcore)** to see if anyone else has run into the issue and see if it was solved through user error or code changes. (if the code change isn't pending a PR and you know what you're doing consider submitting one following [Pull Requests](#pull-requests) ) +* **Determine which resource the problem should be reported in**. If the bug is related to the inventory for example report this bug under qb-inventory rather than under qb-core or some other resource. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Bug Report? + +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your bug is related to, create an issue on that repository and provide the following information by filling in bug-report template. + +Explain the problem and include additional details to help maintainers reproduce the problem: + +* **Use a clear and descriptive title** for the issue to identify the problem. +* **Describe the exact steps which reproduce the problem** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. If something happened with only a specific group or single item but not others, specify that. +* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. +* **Explain which behavior you expected to see instead and why.** +* **Include screenshots** which show the specific bug in action or before and after. +* **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below. + +Provide more context by answering these questions if possible: + +* **Did the problem start happening recently** (e.g. after updating to a new version of QBCore?) or was this always a problem? +* If the problem started happening recently, **can you reproduce the problem in an older version of QBCore?** What's the most recent commit in which the problem doesn't happen? +* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. + +Include details about your setup: + +* **When was your QBCore last updated?** +* **What OS is the server running on**? +* **Which *extra* resources do you have installed?** + + +--- + + +### Suggesting Features / Enhancements + +This section guides you through submitting an enhancement suggestion for QBCore, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion. + +Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in feature request template, including the steps that you imagine you would take if the feature you're requesting existed. + +#### Before Submitting An Enhancement Suggestion + +* **Make sure it doesn't already exist.** Sounds silly, but there's a lot of features built in to qbcore that people don't realize so take a look through the docs and stuff to make sure it's not already there. +* **Check if there's already PR which provides that enhancement.** +* **Determine which resource the enhancement should be suggested in.** if it fits with another resource suggest it in that resource. if it would be it's own resource suggest it in the main qb-core repository. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your enhancement suggestion is related to, create an issue on that repository and provide the following information: + +* **Use a clear and descriptive title** for the issue to identify the suggestion. +* **Provide a step-by-step description of the suggested enhancement** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). +* **Describe the current behavior** and **explain which behavior you expected to see instead** and why. +* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of QBCore which the suggestion is related to. +* **Explain why this enhancement would be useful.** +* **Be creative and unique.** Stealing ideas from popular servers 1:1 detail isn't going to get accepted. + + +--- + + + +### Your First Code Contribution + +Unsure where to begin contributing to QBCore? You can start by looking through these `beginner` and `help-wanted` issues. + + + +--- + + +### Pull Requests + +The process described here has several goals: + +- Maintain QBCore's quality. +- Fix problems that are important to users. +- Engage the community in working toward the best possible QBCore. +- Enable a sustainable system for QBCore's maintainers to review contributions. + +Please follow these steps to have your contribution considered by the maintainers: + +1. Follow all instructions in The Pull Request template. +2. Follow the [styleguides](#styleguides). +3. Await review by the reviewer(s). + +While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted. + + +--- + +## Styleguides + +### Git Commit Messages + +* Limit the first line to 72 characters or less. +* Reference issues and pull requests liberally after the first line. +* Consider starting the commit message with an applicable emoji: + * :art: `:art:` when improving the format/structure of the code + * :racehorse: `:racehorse:` when improving performance + * :memo: `:memo:` when writing docs + * :bug: `:bug:` when fixing a bug + * :fire: `:fire:` when removing code or files + * :white_check_mark: `:white_check_mark:` when adding tests + * :lock: `:lock:` when dealing with security + * :arrow_up: `:arrow_up:` when upgrading dependencies + * :arrow_down: `:arrow_down:` when downgrading dependencies + * :shirt: `:shirt:` when removing linter warnings + +### Lua Styleguide + +All lua code should be done using all the best practices of proper lua using the easiest to read yet fastest/most optimized methods of execution. + +- Use 4 Space indentation +- Aim for lua 5.4 (include `lua54 'yes'` in the fxmanifest.lua) +- Use `PlayerPedId()` instead of `GetPlayerPed(-1)` +- Use `#(vector3 - vector3)` instead of `GetDistanceBetweenCoords()` +- Don't create unnecessary threads. always try to find a better method of triggering events +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables +- For distance checking loops set longer waits if you're outside of a range +- Job specific loops should only run for players with that job, don't waste cycles +- When possible don't trust the client, esspecially with transactions +- Balance security and optimizations +- [Consider this Lua Performance guide](https://springrts.com/wiki/Lua_Performance) +- Use local varriables everywhere possible +- Make use of config options where it makes sense making features optional or customizable +- Instead of `table.insert(myTable, "Value")` use `myTable[#myTable + 1] = "Value"` +- Instead of `table.insert(ages, "bob", 30)` use `ages["bob"] = 30` + + +### JavaScript Styleguide + +- Use 4 Space indentation +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables. diff --git a/resources/[core]/ui-base/.github/pull_request_template.md b/resources/[core]/ui-base/.github/pull_request_template.md new file mode 100644 index 0000000..000f0f9 --- /dev/null +++ b/resources/[core]/ui-base/.github/pull_request_template.md @@ -0,0 +1,10 @@ +**Describe Pull request** +First, make sure you've read and are following the contribution guidelines and style guide and your code reflects that. +Write up a clear and concise description of what your pull request adds or fixes and if it's an added feature explain why you think it should be included in the core. + +If your PR is to fix an issue mention that issue here + +**Questions (please complete the following information):** +- Have you personally loaded this code into an updated qbcore project and checked all it's functionality? [yes/no] (Be honest) +- Does your code fit the style guidelines? [yes/no] +- Does your PR fit the contribution guidelines? [yes/no] diff --git a/resources/[core]/ui-base/.github/workflows/lint.yml b/resources/[core]/ui-base/.github/workflows/lint.yml new file mode 100644 index 0000000..fb74fd6 --- /dev/null +++ b/resources/[core]/ui-base/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: Lint +on: [push, pull_request_target] +jobs: + lint: + name: Lint Resource + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Lint + uses: iLLeniumStudios/fivem-lua-lint-action@v2 + with: + capture: "junit.xml" + args: "-t --formatter JUnit" + extra_libs: mysql+polyzone+qblocales + - name: Generate Lint Report + if: always() + uses: mikepenz/action-junit-report@v3 + with: + report_paths: "**/junit.xml" + check_name: Linting Report + fail_on_failure: false \ No newline at end of file diff --git a/resources/[core]/ui-base/.github/workflows/stale.yml b/resources/[core]/ui-base/.github/workflows/stale.yml new file mode 100644 index 0000000..c18b212 --- /dev/null +++ b/resources/[core]/ui-base/.github/workflows/stale.yml @@ -0,0 +1,29 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '41 15 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has had 60 days of inactivity & will close within 7 days' + stale-pr-message: 'This PR has had 60 days of inactivity & will close within 7 days' + close-issue-label: 'Stale Closed' + close-pr-label: 'Stale Closed' + exempt-issue-labels: 'Suggestion' + exempt-pr-labels: 'Suggestion' diff --git a/resources/[core]/ui-base/LICENSE b/resources/[core]/ui-base/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/resources/[core]/ui-base/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/resources/[core]/ui-base/README.md b/resources/[core]/ui-base/README.md new file mode 100644 index 0000000..67206df --- /dev/null +++ b/resources/[core]/ui-base/README.md @@ -0,0 +1,67 @@ +# qb-smallresources +Base scripts for QB-Core Framework :building_construction: + +# License + + QBCore Framework + Copyright (C) 2021 Joshua Eger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see + + +## Dependencies +- [qb-core](https://github.com/qbcore-framework/qb-core) + +## Features +- Consumeable foods/beverages/drinks/drugs (sandwich, water_bottle, tosti, beer, vodka etc.) +- Removal of GTA's default weapons drops +- Drug effects +- Removal of GTA's default vehicle spawns (planes, helicopters, emergency vehicles etc.) +- Removal of GTA's default emergency service npcs +- Removal of GTA's default wanted system +- Useable binoculars +- Weapon draw animations (normal/holster) +- Ability to add teleport markers (from a place to another place) +- Taking hostage +- Pointing animation with finger (by pressing "B") +- Seatbelt and cruise control +- Useable parachute +- Useable armor +- Weapon recoil (specific to each weapon) +- Tackle +- Calm AI (adjusting npc/gang npc aggresiveness) +- Race Harness +- /id to see the id +- Adjusting npc/vehicle/parked vehicle spawn rates +- Infinite ammo for fire extinguisher and petrol can +- Removal of GTA's default huds (weapon wheel, cash etc.) +- Fireworks +- Automatically engine on after entering vehicle +- Discord rich presence +- Crouch and prone + + + + +## Installation +### Manual +- Download the script and put it in the `[qb]` directory. +- Add the following code to your server.cfg/resouces.cfg +``` +ensure qb-core +ensure qb-smallresources +``` + +## Configuration +Each feature has a different file name correlative with its function. You can configure each one by its own. diff --git a/resources/[core]/ui-base/client/afk.lua b/resources/[core]/ui-base/client/afk.lua new file mode 100644 index 0000000..3d7ee19 --- /dev/null +++ b/resources/[core]/ui-base/client/afk.lua @@ -0,0 +1,73 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local isLoggedIn = LocalPlayer.state.isLoggedIn +local checkUser = true +local prevPos, time = nil, nil +local timeMinutes = { + ['900'] = 'minutes', + ['600'] = 'minutes', + ['300'] = 'minutes', + ['150'] = 'minutes', + ['60'] = 'minutes', + ['30'] = 'seconds', + ['20'] = 'seconds', + ['10'] = 'seconds', +} + +local function updatePermissionLevel() + QBCore.Functions.TriggerCallback('qb-afkkick:server:GetPermissions', function(userGroups) + for k in pairs(userGroups) do + if Config.AFK.ignoredGroups[k] then + checkUser = false + break + end + checkUser = true + end + end) +end + +RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() + updatePermissionLevel() + isLoggedIn = true +end) + +RegisterNetEvent('QBCore:Client:OnPlayerUnload', function() + isLoggedIn = false +end) + +RegisterNetEvent('QBCore:Client:OnPermissionUpdate', function() + updatePermissionLevel() +end) + +CreateThread(function() + while true do + Wait(10000) + local ped = PlayerPedId() + if isLoggedIn == true or Config.AFK.kickInCharMenu == true then + if checkUser then + local currPos = GetEntityCoords(ped, true) + if prevPos then + if currPos == prevPos then + if time then + if time > 0 then + local _type = timeMinutes[tostring(time)] + if _type == 'minutes' then + QBCore.Functions.Notify(Lang:t('afk.will_kick') .. math.ceil(time / 60) .. Lang:t('afk.time_minutes'), 'error', 10000) + elseif _type == 'seconds' then + QBCore.Functions.Notify(Lang:t('afk.will_kick') .. time .. Lang:t('afk.time_seconds'), 'error', 10000) + end + time -= 10 + else + TriggerServerEvent('KickForAFK') + end + else + time = Config.AFK.secondsUntilKick + end + else + time = Config.AFK.secondsUntilKick + end + end + prevPos = currPos + end + end + end +end) \ No newline at end of file diff --git a/resources/[core]/ui-base/client/binoculars.lua b/resources/[core]/ui-base/client/binoculars.lua new file mode 100644 index 0000000..dc08502 --- /dev/null +++ b/resources/[core]/ui-base/client/binoculars.lua @@ -0,0 +1,117 @@ +local binoculars = false +local fov_max = 70.0 +local fov_min = 5.0 -- max zoom level (smaller fov is more zoom) +local fov = (fov_max + fov_min) * 0.5 +local speed_lr = 8.0 -- speed by which the camera pans left-right +local speed_ud = 8.0 -- speed by which the camera pans up-down + +--FUNCTIONS-- + +local function HideHUDThisFrame() + local componentsToHide = {1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19} + + for i = 1, #componentsToHide do + local component = componentsToHide[i] + HideHudComponentThisFrame(component) + end + + HideHelpTextThisFrame() + HideHudAndRadarThisFrame() +end + +local function checkInputRot(cam, zoomValue) + local rightAxisX = GetDisabledControlNormal(0, 220) + local rightAxisY = GetDisabledControlNormal(0, 221) + local rot = GetCamRot(cam, 2) + if rightAxisX ~= 0.0 or rightAxisY ~= 0.0 then + local new_z = rot.z + rightAxisX * -1.0 * speed_ud * (zoomValue + 0.1) + local new_x = math.max(math.min(20.0, rot.x + rightAxisY * -1.0 * speed_lr * (zoomValue + 0.1)), -89.5) + SetCamRot(cam, new_x, 0.0, new_z, 2) + SetEntityHeading(PlayerPedId(), new_z) + end +end + +local function handleZoom(cam) + local ped = PlayerPedId() + local scrollUpControl = IsPedSittingInAnyVehicle(ped) and 17 or 241 + local scrollDownControl = IsPedSittingInAnyVehicle(ped) and 16 or 242 + + if IsControlJustPressed(0, scrollUpControl) then + fov = math.max(fov - Config.Binoculars.zoomSpeed, fov_min) + end + + if IsControlJustPressed(0, scrollDownControl) then + fov = math.min(fov + Config.Binoculars.zoomSpeed, fov_max) + end + + local current_fov = GetCamFov(cam) + + if math.abs(fov - current_fov) < 0.1 then + fov = current_fov + end + + SetCamFov(cam, current_fov + (fov - current_fov) * 0.05) +end + +--THREADS-- + +function binocularLoop() + CreateThread(function() + local ped = PlayerPedId() + + if not IsPedSittingInAnyVehicle(ped) then + TaskStartScenarioInPlace(ped, 'WORLD_HUMAN_BINOCULARS', 0, true) + PlayPedAmbientSpeechNative(ped, 'GENERIC_CURSE_MED', 'SPEECH_PARAMS_FORCE') + end + + Wait(2500) + + SetTimecycleModifier('default') + SetTimecycleModifierStrength(0.3) + local scaleform = RequestScaleformMovie('BINOCULARS') + while not HasScaleformMovieLoaded(scaleform) do + Wait(10) + end + + local cam = CreateCam('DEFAULT_SCRIPTED_FLY_CAMERA', true) + AttachCamToEntity(cam, ped, 0.0, 0.0, 1.0, true) + SetCamRot(cam, 0.0, 0.0, GetEntityHeading(ped), 2) + SetCamFov(cam, fov) + RenderScriptCams(true, false, 0, true, false) + PushScaleformMovieFunction(scaleform, 'SET_CAM_LOGO') + PushScaleformMovieFunctionParameterInt(0) -- 0 for nothing, 1 for LSPD logo + PopScaleformMovieFunctionVoid() + + while binoculars and IsPedUsingScenario(ped, 'WORLD_HUMAN_BINOCULARS') do + if IsControlJustPressed(0, Config.Binoculars.storeBinocularsKey) then + binoculars = false + PlaySoundFrontend(-1, 'SELECT', 'HUD_FRONTEND_DEFAULT_SOUNDSET', false) + ClearPedTasks(ped) + end + + local zoomValue = (1.0 / (fov_max - fov_min)) * (fov - fov_min) + checkInputRot(cam, zoomValue) + handleZoom(cam) + HideHUDThisFrame() + DrawScaleformMovieFullscreen(scaleform, 255, 255, 255, 255, 0) + Wait(0) + end + binoculars = false + ClearTimecycleModifier() + fov = (fov_max + fov_min) * 0.5 + RenderScriptCams(false, false, 0, true, false) + SetScaleformMovieAsNoLongerNeeded(scaleform) + DestroyCam(cam, false) + SetNightvision(false) + SetSeethrough(false) + end) +end + +--EVENTS-- + +-- Activate binoculars +RegisterNetEvent('binoculars:Toggle', function() + binoculars = not binoculars + if binoculars then binocularLoop() return end + ClearPedTasks(PlayerPedId()) +end) diff --git a/resources/[core]/ui-base/client/calmai.lua b/resources/[core]/ui-base/client/calmai.lua new file mode 100644 index 0000000..92c54bc --- /dev/null +++ b/resources/[core]/ui-base/client/calmai.lua @@ -0,0 +1,23 @@ +-- Relationship Types: +-- 0 = Companion +-- 1 = Respect +-- 2 = Like +-- 3 = Neutral +-- 4 = Dislike +-- 5 = Hate + +SetRelationshipBetweenGroups(1, `AMBIENT_GANG_HILLBILLY`, `PLAYER`) +SetRelationshipBetweenGroups(1, `AMBIENT_GANG_BALLAS`, `PLAYER`) +SetRelationshipBetweenGroups(1, `AMBIENT_GANG_MEXICAN`, `PLAYER`) +SetRelationshipBetweenGroups(1, `AMBIENT_GANG_FAMILY`, `PLAYER`) +SetRelationshipBetweenGroups(1, `AMBIENT_GANG_MARABUNTE`, `PLAYER`) +SetRelationshipBetweenGroups(1, `AMBIENT_GANG_SALVA`, `PLAYER`) +SetRelationshipBetweenGroups(1, `AMBIENT_GANG_LOST`, `PLAYER`) +SetRelationshipBetweenGroups(1, `GANG_1`, `PLAYER`) +SetRelationshipBetweenGroups(1, `GANG_2`, `PLAYER`) +SetRelationshipBetweenGroups(1, `GANG_9`, `PLAYER`) +SetRelationshipBetweenGroups(1, `GANG_10`, `PLAYER`) +SetRelationshipBetweenGroups(1, `FIREMAN`, `PLAYER`) +SetRelationshipBetweenGroups(1, `MEDIC`, `PLAYER`) +SetRelationshipBetweenGroups(1, `COP`, `PLAYER`) +SetRelationshipBetweenGroups(1, `PRISONER`, `PLAYER`) diff --git a/resources/[core]/ui-base/client/carwash.lua b/resources/[core]/ui-base/client/carwash.lua new file mode 100644 index 0000000..346624f --- /dev/null +++ b/resources/[core]/ui-base/client/carwash.lua @@ -0,0 +1,119 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local washingVeh, listen = false, false +local washPoly = {} + +local function washLoop() + CreateThread(function() + while listen do + local ped = PlayerPedId() + local veh = GetVehiclePedIsIn(ped, false) + local driver = GetPedInVehicleSeat(veh, -1) + local dirtLevel = GetVehicleDirtLevel(veh) + if driver == ped and not washingVeh then + if IsControlPressed(0, 38) then + if dirtLevel > Config.CarWash.dirtLevel then + TriggerServerEvent('qb-carwash:server:washCar') + else + QBCore.Functions.Notify(Lang:t('wash.dirty'), 'error') + end + listen = false + break + end + end + Wait(0) + end + end) +end + +RegisterNetEvent('qb-carwash:client:washCar', function() + local ped = PlayerPedId() + local veh = GetVehiclePedIsIn(ped, false) + washingVeh = true + QBCore.Functions.Progressbar('search_cabin', Lang:t('wash.in_progress'), math.random(4000, 8000), false, true, { + disableMovement = true, + disableCarMovement = true, + disableMouse = false, + disableCombat = true, + }, {}, {}, {}, function() -- Done + SetVehicleDirtLevel(veh, 0.0) + SetVehicleUndriveable(veh, false) + WashDecalsFromVehicle(veh, 1.0) + washingVeh = false + end, function() -- Cancel + QBCore.Functions.Notify(Lang:t('wash.cancel'), 'error') + washingVeh = false + end) +end) + +CreateThread(function() + for k, v in pairs(Config.CarWash.locations) do + if Config.UseTarget then + exports["qb-target"]:AddBoxZone('carwash_'..k, v.coords, v.length, v.width, { + name = 'carwash_'..k, + debugPoly = false, + heading = v.heading, + minZ = v.coords.z - 5, + maxZ = v.coords.z + 5, + }, { + options = { + { + icon = "fa-car-wash", + label = Lang:t('wash.wash_vehicle_target'), + action = function() + local ped = PlayerPedId() + local veh = GetVehiclePedIsIn(ped, false) + local driver = GetPedInVehicleSeat(veh, -1) + local dirtLevel = GetVehicleDirtLevel(veh) + if driver == ped and not washingVeh then + if dirtLevel > Config.CarWash.dirtLevel then + TriggerServerEvent('qb-carwash:server:washCar') + else + QBCore.Functions.Notify(Lang:t('wash.dirty'), 'error') + end + end + end, + canInteract = function() + if IsPedInAnyVehicle(PlayerPedId(), false) then return true end + end, + } + }, + distance = 3 + }) + else + washPoly[#washPoly + 1] = BoxZone:Create(vector3(v.coords.x, v.coords.y, v.coords.z), v.length, v.width, { + heading = v.heading, + name = 'carwash', + debugPoly = false, + minZ = v.coords.z - 5, + maxZ = v.coords.z + 5, + }) + local washCombo = ComboZone:Create(washPoly, {name = "washPoly"}) + washCombo:onPlayerInOut(function(isPointInside) + if isPointInside and IsPedInAnyVehicle(PlayerPedId(), false) then + exports['qb-core']:DrawText(Lang:t('wash.wash_vehicle'),'left') + if not listen then + listen = true + washLoop() + end + else + listen = false + exports['qb-core']:HideText() + end + end) + end + end +end) + +CreateThread(function() + for k in pairs(Config.CarWash.locations) do + local carWash = AddBlipForCoord(Config.CarWash.locations[k].coords.x, Config.CarWash.locations[k].coords.y, Config.CarWash.locations[k].coords.z) + SetBlipSprite (carWash, 100) + SetBlipDisplay(carWash, 4) + SetBlipScale (carWash, 0.75) + SetBlipAsShortRange(carWash, true) + SetBlipColour(carWash, 37) + BeginTextCommandSetBlipName('STRING') + AddTextComponentSubstringPlayerName('Hands Free Carwash') + EndTextCommandSetBlipName(carWash) + end +end) \ No newline at end of file diff --git a/resources/[core]/ui-base/client/consumables.lua b/resources/[core]/ui-base/client/consumables.lua new file mode 100644 index 0000000..464f59b --- /dev/null +++ b/resources/[core]/ui-base/client/consumables.lua @@ -0,0 +1,529 @@ +-- Variables + +local QBCore = exports['qb-core']:GetCoreObject() +local alcoholCount = 0 +local healing, parachuteEquipped = false, false +local currVest, currVestTexture = nil, nil + +-- Functions +RegisterNetEvent('QBCore:Client:UpdateObject', function() + QBCore = exports['qb-core']:GetCoreObject() +end) + +local function loadAnimDict(dict) + if HasAnimDictLoaded(dict) then return end + RequestAnimDict(dict) + while not HasAnimDictLoaded(dict) do + Wait(10) + end +end + +local function equipParachuteAnim() + loadAnimDict('clothingshirt') + TaskPlayAnim(PlayerPedId(), 'clothingshirt', 'try_shirt_positive_d', 8.0, 1.0, -1, 49, 0, false, false, false) +end + +local function healOxy() + if healing then return end + + healing = true + + local count = 9 + while count > 0 do + Wait(1000) + count -= 1 + SetEntityHealth(PlayerPedId(), GetEntityHealth(PlayerPedId()) + 6) + end + healing = false +end + +local function trevorEffect() + StartScreenEffect('DrugsTrevorClownsFightIn', 3.0, 0) + Wait(3000) + StartScreenEffect('DrugsTrevorClownsFight', 3.0, 0) + Wait(3000) + StartScreenEffect('DrugsTrevorClownsFightOut', 3.0, 0) + StopScreenEffect('DrugsTrevorClownsFight') + StopScreenEffect('DrugsTrevorClownsFightIn') + StopScreenEffect('DrugsTrevorClownsFightOut') +end + +local function methBagEffect() + local startStamina = 8 + trevorEffect() + SetRunSprintMultiplierForPlayer(PlayerId(), 1.49) + while startStamina > 0 do + Wait(1000) + if math.random(5, 100) < 10 then + RestorePlayerStamina(PlayerId(), 1.0) + end + startStamina = startStamina - 1 + if math.random(5, 100) < 51 then + trevorEffect() + end + end + SetRunSprintMultiplierForPlayer(PlayerId(), 1.0) +end + +local function ecstasyEffect() + local startStamina = 30 + SetFlash(0, 0, 500, 7000, 500) + while startStamina > 0 do + Wait(1000) + startStamina -= 1 + RestorePlayerStamina(PlayerId(), 1.0) + if math.random(1, 100) < 51 then + SetFlash(0, 0, 500, 7000, 500) + ShakeGameplayCam('SMALL_EXPLOSION_SHAKE', 0.08) + end + end + if IsPedRunning(PlayerPedId()) then + SetPedToRagdoll(PlayerPedId(), math.random(1000, 3000), math.random(1000, 3000), 3, false, false, false) + end +end + +local function alienEffect() + StartScreenEffect('DrugsMichaelAliensFightIn', 3.0, 0) + Wait(math.random(5000, 8000)) + StartScreenEffect('DrugsMichaelAliensFight', 3.0, 0) + Wait(math.random(5000, 8000)) + StartScreenEffect('DrugsMichaelAliensFightOut', 3.0, 0) + StopScreenEffect('DrugsMichaelAliensFightIn') + StopScreenEffect('DrugsMichaelAliensFight') + StopScreenEffect('DrugsMichaelAliensFightOut') +end + +local function crackBaggyEffect() + local startStamina = 8 + local ped = PlayerPedId() + alienEffect() + SetRunSprintMultiplierForPlayer(PlayerId(), 1.3) + while startStamina > 0 do + Wait(1000) + if math.random(1, 100) < 10 then + RestorePlayerStamina(PlayerId(), 1.0) + end + startStamina -= 1 + if math.random(1, 100) < 60 and IsPedRunning(ped) then + SetPedToRagdoll(ped, math.random(1000, 2000), math.random(1000, 2000), 3, false, false, false) + end + if math.random(1, 100) < 51 then + alienEffect() + end + end + if IsPedRunning(ped) then + SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, false, false, false) + end + SetRunSprintMultiplierForPlayer(PlayerId(), 1.0) +end + +local function cokeBaggyEffect() + local startStamina = 20 + local ped = PlayerPedId() + alienEffect() + SetRunSprintMultiplierForPlayer(PlayerId(), 1.1) + while startStamina > 0 do + Wait(1000) + if math.random(1, 100) < 20 then + RestorePlayerStamina(PlayerId(), 1.0) + end + startStamina -= 1 + if math.random(1, 100) < 10 and IsPedRunning(ped) then + SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, false, false, false) + end + if math.random(1, 300) < 10 then + alienEffect() + Wait(math.random(3000, 6000)) + end + end + if IsPedRunning(ped) then + SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, false, false, false) + end + SetRunSprintMultiplierForPlayer(PlayerId(), 1.0) +end + +-- Events + +RegisterNetEvent('consumables:client:Eat', function(itemName) + QBCore.Functions.Progressbar('eat_something', Lang:t('consumables.eat_progress'), 5000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true + }, { + animDict = 'mp_player_inteat@burger', + anim = 'mp_player_int_eat_burger', + flags = 49 + }, { + model = 'prop_cs_burger_01', + bone = 60309, + coords = vec3(0.0, 0.0, -0.02), + rotation = vec3(30, 0.0, 0.0), + }, {}, function() -- Done + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove') + TriggerServerEvent('consumables:server:addHunger', QBCore.Functions.GetPlayerData().metadata.hunger + Config.Consumables.eat[itemName]) + TriggerServerEvent('hud:server:RelieveStress', math.random(2, 4)) + end) +end) + +RegisterNetEvent('consumables:client:Drink', function(itemName) + QBCore.Functions.Progressbar('drink_something', Lang:t('consumables.drink_progress'), 5000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true + }, { + animDict = 'mp_player_intdrink', + anim = 'loop_bottle', + flags = 49 + }, { + model = 'vw_prop_casino_water_bottle_01a', + bone = 60309, + coords = vec3(0.0, 0.0, -0.05), + rotation = vec3(0.0, 0.0, -40), + }, {}, function() -- Done + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove') + TriggerServerEvent('consumables:server:addThirst', QBCore.Functions.GetPlayerData().metadata.thirst + Config.Consumables.drink[itemName]) + end) +end) + +RegisterNetEvent('consumables:client:DrinkAlcohol', function(itemName) + QBCore.Functions.Progressbar('drink_alcohol', Lang:t('consumables.liqour_progress'), math.random(3000, 6000), false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true + }, { + animDict = 'mp_player_intdrink', + anim = 'loop_bottle', + flags = 49 + }, { + model = 'prop_cs_beer_bot_40oz', + bone = 60309, + coords = vec3(0.0, 0.0, -0.05), + rotation = vec3(0.0, 0.0, -40), + }, {}, function() -- Done + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove') + TriggerServerEvent('consumables:server:drinkAlcohol', itemName) + TriggerServerEvent('consumables:server:addThirst', QBCore.Functions.GetPlayerData().metadata.thirst + Config.Consumables.alcohol[itemName]) + TriggerServerEvent('hud:server:RelieveStress', math.random(2, 4)) + alcoholCount += 1 + AlcoholLoop() + if alcoholCount > 1 and alcoholCount < 4 then + TriggerEvent('evidence:client:SetStatus', 'alcohol', 200) + elseif alcoholCount >= 4 then + TriggerEvent('evidence:client:SetStatus', 'heavyalcohol', 200) + end + end, function() -- Cancel + QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error') + end) +end) + +RegisterNetEvent('consumables:client:Custom', function(itemName) + QBCore.Functions.TriggerCallback('consumables:itemdata', function(data) + QBCore.Functions.Progressbar('custom_consumable', data.progress.label, data.progress.time, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true + }, { + animDict = data.animation.animDict, + anim = data.animation.anim, + flags = data.animation.flags + }, { + model = data.prop.model, + bone = data.prop.bone, + coords = data.prop.coords, + rotation = data.prop.rotation + }, {}, function() -- Done + ClearPedTasks(PlayerPedId()) + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove') + if data.replenish.type then + TriggerServerEvent('consumables:server:add' .. data.replenish.type, QBCore.Functions.GetPlayerData().metadata[string.lower(data.replenish.type)] + data.replenish.replenish) + end + if data.replenish.isAlcohol then + alcoholCount += 1 + AlcoholLoop() + if alcoholCount > 1 and alcoholCount < 4 then + TriggerEvent('evidence:client:SetStatus', 'alcohol', 200) + elseif alcoholCount >= 4 then + TriggerEvent('evidence:client:SetStatus', 'heavyalcohol', 200) + end + end + if data.replenish.event then + TriggerEvent(data.replenish.event) + end + end) + end, itemName) +end) + +RegisterNetEvent('consumables:client:Cokebaggy', function() + local ped = PlayerPedId() + QBCore.Functions.Progressbar('snort_coke', Lang:t('consumables.coke_progress'), math.random(5000, 8000), false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, { + animDict = 'switch@trevor@trev_smoking_meth', + anim = 'trev_smoking_meth_loop', + flags = 49, + }, {}, {}, function() -- Done + StopAnimTask(ped, 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0) + TriggerServerEvent('consumables:server:useCokeBaggy') + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['cokebaggy'], 'remove') + TriggerEvent('evidence:client:SetStatus', 'widepupils', 200) + cokeBaggyEffect() + end, function() -- Cancel + StopAnimTask(ped, 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0) + QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error') + end) +end) + +RegisterNetEvent('consumables:client:Crackbaggy', function() + local ped = PlayerPedId() + QBCore.Functions.Progressbar('snort_coke', Lang:t('consumables.crack_progress'), math.random(7000, 10000), false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, { + animDict = 'switch@trevor@trev_smoking_meth', + anim = 'trev_smoking_meth_loop', + flags = 49, + }, {}, {}, function() -- Done + StopAnimTask(ped, 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0) + TriggerServerEvent('consumables:server:useCrackBaggy') + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['crack_baggy'], 'remove') + TriggerEvent('evidence:client:SetStatus', 'widepupils', 300) + crackBaggyEffect() + end, function() -- Cancel + StopAnimTask(ped, 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0) + QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error') + end) +end) + +RegisterNetEvent('consumables:client:EcstasyBaggy', function() + QBCore.Functions.Progressbar('use_ecstasy', Lang:t('consumables.ecstasy_progress'), 3000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, { + animDict = 'mp_suicide', + anim = 'pill', + flags = 49, + }, {}, {}, function() -- Done + StopAnimTask(PlayerPedId(), 'mp_suicide', 'pill', 1.0) + TriggerServerEvent('consumables:server:useXTCBaggy') + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['xtcbaggy'], 'remove') + ecstasyEffect() + end, function() -- Cancel + StopAnimTask(PlayerPedId(), 'mp_suicide', 'pill', 1.0) + QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error') + end) +end) + +RegisterNetEvent('consumables:client:oxy', function() + QBCore.Functions.Progressbar('use_oxy', Lang:t('consumables.healing_progress'), 2000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, { + animDict = 'mp_suicide', + anim = 'pill', + flags = 49, + }, {}, {}, function() -- Done + StopAnimTask(PlayerPedId(), 'mp_suicide', 'pill', 1.0) + TriggerServerEvent('consumables:server:useOxy') + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['oxy'], 'remove') + ClearPedBloodDamage(PlayerPedId()) + healOxy() + end, function() -- Cancel + StopAnimTask(PlayerPedId(), 'mp_suicide', 'pill', 1.0) + QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error') + end) +end) + +RegisterNetEvent('consumables:client:meth', function() + QBCore.Functions.Progressbar('snort_meth', Lang:t('consumables.meth_progress'), 1500, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, { + animDict = 'switch@trevor@trev_smoking_meth', + anim = 'trev_smoking_meth_loop', + flags = 49, + }, {}, {}, function() -- Done + StopAnimTask(PlayerPedId(), 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0) + TriggerServerEvent('consumables:server:useMeth') + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['meth'], 'remove') + TriggerEvent('evidence:client:SetStatus', 'widepupils', 300) + TriggerEvent('evidence:client:SetStatus', 'agitated', 300) + methBagEffect() + end, function() -- Cancel + StopAnimTask(PlayerPedId(), 'switch@trevor@trev_smoking_meth', 'trev_smoking_meth_loop', 1.0) + QBCore.Functions.Notify(Lang:t('consumables.canceled'), 'error') + end) +end) + +RegisterNetEvent('consumables:client:UseJoint', function() + QBCore.Functions.Progressbar('smoke_joint', Lang:t('consumables.joint_progress'), 1500, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, {}, {}, {}, function() -- Done + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['joint'], 'remove') + if IsPedInAnyVehicle(PlayerPedId(), false) then + QBCore.Functions.PlayAnim('timetable@gardener@smoking_joint', 'smoke_idle', false) + else + QBCore.Functions.PlayAnim('timetable@gardener@smoking_joint', 'smoke_idle', false) + end + TriggerEvent('evidence:client:SetStatus', 'weedsmell', 300) + TriggerServerEvent('hud:server:RelieveStress', Config.RelieveWeedStress) + end) +end) + +RegisterNetEvent('consumables:client:UseParachute', function() + equipParachuteAnim() + QBCore.Functions.Progressbar('use_parachute', Lang:t('consumables.use_parachute_progress'), 5000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, {}, {}, {}, function() -- Done + local ped = PlayerPedId() + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['parachute'], 'remove') + GiveWeaponToPed(ped, `GADGET_PARACHUTE`, 1, false, false) + local parachuteData = { + outfitData = { ['bag'] = { item = 7, texture = 0 } } -- Adding Parachute Clothing + } + TriggerEvent('qb-clothing:client:loadOutfit', parachuteData) + parachuteEquipped = true + TaskPlayAnim(ped, 'clothingshirt', 'exit', 8.0, 1.0, -1, 49, 0, false, false, false) + end) +end) + +RegisterNetEvent('consumables:client:ResetParachute', function() + if parachuteEquipped then + equipParachuteAnim() + QBCore.Functions.Progressbar('reset_parachute', Lang:t('consumables.pack_parachute_progress'), 40000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, {}, {}, {}, function() -- Done + local ped = PlayerPedId() + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['parachute'], 'add') + local parachuteResetData = { + outfitData = { ['bag'] = { item = 0, texture = 0 } } -- Removing Parachute Clothing + } + TriggerEvent('qb-clothing:client:loadOutfit', parachuteResetData) + TaskPlayAnim(ped, 'clothingshirt', 'exit', 8.0, 1.0, -1, 49, 0, false, false, false) + TriggerServerEvent('consumables:server:AddParachute') + parachuteEquipped = false + end) + else + QBCore.Functions.Notify(Lang:t('consumables.no_parachute'), 'error') + end +end) + +RegisterNetEvent('consumables:client:UseArmor', function() + if GetPedArmour(PlayerPedId()) >= 75 then + QBCore.Functions.Notify(Lang:t('consumables.armor_full'), 'error') + return + end + QBCore.Functions.Progressbar('use_armor', Lang:t('consumables.armor_progress'), 5000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, {}, {}, {}, function() -- Done + TriggerServerEvent('consumables:server:useArmor') + end) +end) + +RegisterNetEvent('consumables:client:UseHeavyArmor', function() + if GetPedArmour(PlayerPedId()) == 100 then + QBCore.Functions.Notify(Lang:t('consumables.armor_full'), 'error') + return + end + local ped = PlayerPedId() + local PlayerData = QBCore.Functions.GetPlayerData() + QBCore.Functions.Progressbar('use_heavyarmor', Lang:t('consumables.heavy_armor_progress'), 5000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, {}, {}, {}, function() -- Done + if not Config.Disable.vestDrawable then + if PlayerData.charinfo.gender == 0 then + currVest = GetPedDrawableVariation(ped, 9) + currVestTexture = GetPedTextureVariation(ped, 9) + if GetPedDrawableVariation(ped, 9) == 7 then + SetPedComponentVariation(ped, 9, 19, GetPedTextureVariation(ped, 9), 2) + else + SetPedComponentVariation(ped, 9, 5, 2, 2) + end + else + currVest = GetPedDrawableVariation(ped, 30) + currVestTexture = GetPedTextureVariation(ped, 30) + SetPedComponentVariation(ped, 9, 30, 0, 2) + end + end + TriggerServerEvent('consumables:server:useHeavyArmor') + end) +end) + +RegisterNetEvent('consumables:client:ResetArmor', function() + local ped = PlayerPedId() + if currVest ~= nil and currVestTexture ~= nil then + QBCore.Functions.Progressbar('remove_armor', Lang:t('consumables.remove_armor_progress'), 2500, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, {}, {}, {}, function() -- Done + SetPedComponentVariation(ped, 9, currVest, currVestTexture, 2) + SetPedArmour(ped, 0) + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items['heavyarmor'], 'add') + TriggerServerEvent('consumables:server:resetArmor') + end) + else + QBCore.Functions.Notify(Lang:t('consumables.armor_empty'), 'error') + end +end) + +-- RegisterNetEvent('consumables:client:UseRedSmoke', function() +-- if parachuteEquipped then +-- local ped = PlayerPedId() +-- SetPlayerParachuteSmokeTrailColor(ped, 255, 0, 0) +-- SetPlayerCanLeaveParachuteSmokeTrail(ped, true) +-- TriggerEvent("qb-inventory:client:ItemBox", QBCore.Shared.Items["smoketrailred"], "remove") +-- else +-- QBCore.Functions.Notify("You need to have a paracute to activate smoke!", "error") +-- end +-- end) + +--Threads +local looped = false +function AlcoholLoop() + if not looped then + looped = true + CreateThread(function() + while true do + Wait(10) + if alcoholCount > 0 then + Wait(1000 * 60 * 15) + alcoholCount -= 1 + else + looped = false + break + end + end + end) + end +end diff --git a/resources/[core]/ui-base/client/crouchprone.lua b/resources/[core]/ui-base/client/crouchprone.lua new file mode 100644 index 0000000..735a5ea --- /dev/null +++ b/resources/[core]/ui-base/client/crouchprone.lua @@ -0,0 +1,50 @@ +local isCrouching = false +local walkSet = 'default' + +local function loadAnimSet(anim) + if not HasAnimSetLoaded(anim) then + RequestAnimSet(anim) + while not HasAnimSetLoaded(anim) do + Wait(10) + end + end +end + +local function resetAnimSet() + local ped = PlayerPedId() + ResetPedMovementClipset(ped, 1.0) + ResetPedWeaponMovementClipset(ped) + ResetPedStrafeClipset(ped) + + if walkSet ~= 'default' then + loadAnimSet(walkSet) + SetPedMovementClipset(ped, walkSet, 1.0) + RemoveAnimSet(walkSet) + end +end + +RegisterNetEvent('crouchprone:client:SetWalkSet', function(clipset) + walkSet = clipset +end) + +RegisterCommand('togglecrouch', function() + local ped = PlayerPedId() + if IsPedSittingInAnyVehicle(ped) or IsPedFalling(ped) or IsPedSwimming(ped) or IsPedSwimmingUnderWater(ped) or IsPauseMenuActive() then + return + end + + ClearPedTasks(ped) + if isCrouching then + resetAnimSet() + SetPedStealthMovement(ped, false, 'DEFAULT_ACTION') + isCrouching = false + else + loadAnimSet('move_ped_crouched') + SetPedMovementClipset(ped, 'move_ped_crouched', 1.0) + SetPedStrafeClipset(ped, 'move_ped_crouched_strafing') + isCrouching = true + end +end, false) + +-- Optional: Register a keybind so they can press CTRL (36) to toggle +RegisterKeyMapping('togglecrouch', 'Toggle Crouch', 'keyboard', 'LCONTROL') diff --git a/resources/[core]/ui-base/client/cruise.lua b/resources/[core]/ui-base/client/cruise.lua new file mode 100644 index 0000000..19aa438 --- /dev/null +++ b/resources/[core]/ui-base/client/cruise.lua @@ -0,0 +1,79 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local vehicleClasses = { + [0] = true, + [1] = true, + [2] = true, + [3] = true, + [4] = true, + [5] = true, + [6] = true, + [7] = true, + [8] = true, + [9] = true, + [10] = true, + [11] = true, + [12] = true, + [13] = false, + [14] = false, + [15] = false, + [16] = false, + [17] = true, + [18] = true, + [19] = true, + [20] = true, + [21] = false +} + +local function triggerCruiseControl(veh) + local ped = PlayerPedId() + if IsPedInAnyVehicle(ped, false) then + local speed = GetEntitySpeed(veh) + if speed > 0 and GetVehicleCurrentGear(veh) > 0 then + speed = GetEntitySpeed(veh) + local isTurningOrHandbraking = IsControlPressed(2, 76) or IsControlPressed(2, 63) or IsControlPressed(2, 64) + TriggerEvent('seatbelt:client:ToggleCruise', true) + QBCore.Functions.Notify(Lang:t('cruise.activated')) + + CreateThread(function() + while speed > 0 and GetPedInVehicleSeat(veh, -1) == ped do + Wait(0) + if not isTurningOrHandbraking and GetEntitySpeed(veh) < speed - 1.5 then + speed = 0 + TriggerEvent('seatbelt:client:ToggleCruise', false) + QBCore.Functions.Notify(Lang:t('cruise.deactivated'), 'error') + Wait(2000) + break + end + + if not isTurningOrHandbraking and IsVehicleOnAllWheels(veh) and GetEntitySpeed(veh) < speed then + SetVehicleForwardSpeed(veh, speed) + end + + if IsControlJustPressed(1, 246) then + speed = GetEntitySpeed(veh) + end + + if IsControlJustPressed(2, 72) then + speed = 0 + TriggerEvent('seatbelt:client:ToggleCruise', false) + QBCore.Functions.Notify(Lang:t('cruise.deactivated'), 'error') + Wait(2000) + break + end + end + end) + end + end +end + +RegisterCommand('togglecruise', function() + local ped = PlayerPedId() + local veh = GetVehiclePedIsIn(ped, false) + local driver = GetPedInVehicleSeat(veh, -1) + local vehClass = GetVehicleClass(veh) + if ped == driver and vehicleClasses[vehClass] then + triggerCruiseControl(veh) + end +end, false) + +RegisterKeyMapping('togglecruise', 'Toggle Cruise Control', 'keyboard', 'Y') diff --git a/resources/[core]/ui-base/client/discord.lua b/resources/[core]/ui-base/client/discord.lua new file mode 100644 index 0000000..3041732 --- /dev/null +++ b/resources/[core]/ui-base/client/discord.lua @@ -0,0 +1,25 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +CreateThread(function() + while Config.Discord.isEnabled do + SetDiscordAppId(Config.Discord.applicationId) + SetDiscordRichPresenceAsset(Config.Discord.iconLarge) + SetDiscordRichPresenceAssetText(Config.Discord.iconLargeHoverText) + SetDiscordRichPresenceAssetSmall(Config.Discord.iconSmall) + SetDiscordRichPresenceAssetSmallText(Config.Discord.iconSmallHoverText) + + if Config.Discord.showPlayerCount then + QBCore.Functions.TriggerCallback('smallresources:server:GetCurrentPlayers', function(result) + SetRichPresence('Players: ' .. result .. '/' .. Config.Discord.maxPlayers) + end) + end + + if Config.Discord.buttons and type(Config.Discord.buttons) == "table" then + for i, v in pairs(Config.Discord.buttons) do + SetDiscordRichPresenceAction(i - 1, v.text, v.url) + end + end + + Wait(Config.Discord.updateRate) + end +end) diff --git a/resources/[core]/ui-base/client/editor.lua b/resources/[core]/ui-base/client/editor.lua new file mode 100644 index 0000000..9a70a9c --- /dev/null +++ b/resources/[core]/ui-base/client/editor.lua @@ -0,0 +1,24 @@ +RegisterCommand('record', function() + StartRecording(1) + TriggerEvent('QBCore:Notify', Lang:t('editor.started'), 'success') +end, false) + +RegisterCommand('clip', function() + StartRecording(0) +end, false) + +RegisterCommand('saveclip', function() + StopRecordingAndSaveClip() + TriggerEvent('QBCore:Notify', Lang:t('editor.save'), 'success') +end, false) + +RegisterCommand('delclip', function() + StopRecordingAndDiscardClip() + TriggerEvent('QBCore:Notify', Lang:t('editor.delete'), 'error') +end, false) + +RegisterCommand('editor', function() + NetworkSessionLeaveSinglePlayer() + ActivateRockstarEditor() + TriggerEvent('QBCore:Notify', Lang:t('editor.editor'), 'error') +end, false) diff --git a/resources/[core]/ui-base/client/fireworks.lua b/resources/[core]/ui-base/client/fireworks.lua new file mode 100644 index 0000000..60117f6 --- /dev/null +++ b/resources/[core]/ui-base/client/fireworks.lua @@ -0,0 +1,124 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local fireworkTime = 0 +local fireworkLoc = nil +local fireworkList = { + ['proj_xmas_firework'] = { + 'scr_firework_xmas_ring_burst_rgw', + 'scr_firework_xmas_burst_rgw', + 'scr_firework_xmas_repeat_burst_rgw', + 'scr_firework_xmas_spiral_burst_rgw', + 'scr_xmas_firework_sparkle_spawn' + }, + ['scr_indep_fireworks'] = { + 'scr_indep_firework_sparkle_spawn', + 'scr_indep_firework_starburst', + 'scr_indep_firework_shotburst', + 'scr_indep_firework_trailburst', + 'scr_indep_firework_trailburst_spawn', + 'scr_indep_firework_burst_spawn', + 'scr_indep_firework_trail_spawn', + 'scr_indep_firework_fountain' + }, + ['proj_indep_firework'] = { + 'scr_indep_firework_grd_burst', + 'scr_indep_launcher_sparkle_spawn', + 'scr_indep_firework_air_burst', + 'proj_indep_flare_trail' + }, + ['proj_indep_firework_v2'] = { + 'scr_firework_indep_burst_rwb', + 'scr_firework_indep_spiral_burst_rwb', + 'scr_xmas_firework_sparkle_spawn', + 'scr_firework_indep_ring_burst_rwb', + 'scr_xmas_firework_burst_fizzle', + 'scr_firework_indep_repeat_burst_rwb' + } +} + +local function DrawText3D(x, y, z, text) + SetTextScale(0.35, 0.35) + SetTextFont(4) + SetTextProportional(true) + SetTextColour(255, 255, 255, 215) + BeginTextCommandDisplayText('STRING') + SetTextCentre(true) + AddTextComponentSubstringPlayerName(text) + SetDrawOrigin(x, y, z, 0) + EndTextCommandDisplayText(0.0, 0.0) + local factor = (string.len(text)) / 370 + DrawRect(0.0, 0.0 + 0.0125, 0.017 + factor, 0.03, 0, 0, 0, 75) + ClearDrawOrigin() +end + +local function fireworkText() + CreateThread(function() + while true do + Wait(0) + if fireworkTime > 0 and fireworkLoc then + DrawText3D(fireworkLoc.x, fireworkLoc.y, fireworkLoc.z, Lang:t('firework.time_left') .. fireworkTime) + end + if fireworkTime <= 0 then break end + end + end) +end + +local function startFirework(asset, coords) + fireworkTime = Config.Fireworks.delay + fireworkLoc = { x = coords.x, y = coords.y, z = coords.z } + CreateThread(function() + fireworkText() + while fireworkTime > 0 do + Wait(1000) + fireworkTime -= 1 + end + UseParticleFxAssetNextCall('scr_indep_fireworks') + for _ = 1, math.random(5, 10), 1 do + local firework = fireworkList[asset][math.random(1, #fireworkList[asset])] + UseParticleFxAssetNextCall(asset) + StartNetworkedParticleFxNonLoopedAtCoord(firework, fireworkLoc.x, fireworkLoc.y, fireworkLoc.z + 42.5, 0.0, 0.0, 0.0, math.random() * 0.3 + 0.5, false, false, false) + Wait(math.random() * 500) + end + fireworkLoc = nil + end) +end + +CreateThread(function() + local assets = { + 'scr_indep_fireworks', + 'proj_xmas_firework', + 'proj_indep_firework_v2', + 'proj_indep_firework' + } + + for i = 1, #assets do + local asset = assets[i] + if not HasNamedPtfxAssetLoaded(asset) then + RequestNamedPtfxAsset(asset) + while not HasNamedPtfxAssetLoaded(asset) do + Wait(10) + end + end + end +end) + +RegisterNetEvent('fireworks:client:UseFirework', function(itemName, assetName) + QBCore.Functions.Progressbar('spawn_object', Lang:t('firework.place_progress'), 3000, false, true, { + disableMovement = true, + disableCarMovement = true, + disableMouse = false, + disableCombat = true, + }, { + animDict = 'anim@narcotics@trash', + anim = 'drop_front', + flags = 16, + }, {}, {}, function() -- Done + StopAnimTask(PlayerPedId(), 'anim@narcotics@trash', 'drop_front', 1.0) + TriggerServerEvent('consumables:server:UseFirework', itemName) + TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove') + local pos = GetEntityCoords(PlayerPedId()) + startFirework(assetName, pos) + end, function() -- Cancel + StopAnimTask(PlayerPedId(), 'anim@narcotics@trash', 'drop_front', 1.0) + QBCore.Functions.Notify(Lang:t('firework.canceled'), 'error') + end) +end) diff --git a/resources/[core]/ui-base/client/handsup.lua b/resources/[core]/ui-base/client/handsup.lua new file mode 100644 index 0000000..5c2faae --- /dev/null +++ b/resources/[core]/ui-base/client/handsup.lua @@ -0,0 +1,23 @@ +local handsUp = false + +RegisterCommand(Config.HandsUp.command, function() + local ped = PlayerPedId() + if not HasAnimDictLoaded('missminuteman_1ig_2') then + RequestAnimDict('missminuteman_1ig_2') + while not HasAnimDictLoaded('missminuteman_1ig_2') do + Wait(10) + end + end + handsUp = not handsUp + if exports['qb-policejob']:IsHandcuffed() then return end + if handsUp then + TaskPlayAnim(ped, 'missminuteman_1ig_2', 'handsup_base', 8.0, 8.0, -1, 50, 0, false, false, false) + exports['qb-smallresources']:addDisableControls(Config.HandsUp.controls) + else + ClearPedTasks(ped) + exports['qb-smallresources']:removeDisableControls(Config.HandsUp.controls) + end +end, false) + +RegisterKeyMapping(Config.HandsUp.command, 'Hands Up', 'keyboard', Config.HandsUp.keybind) +exports('getHandsup', function() return handsUp end) diff --git a/resources/[core]/ui-base/client/hudcomponents.lua b/resources/[core]/ui-base/client/hudcomponents.lua new file mode 100644 index 0000000..d628a7f --- /dev/null +++ b/resources/[core]/ui-base/client/hudcomponents.lua @@ -0,0 +1,111 @@ +local disableHudComponents = Config.Disable.hudComponents +local disableControls = Config.Disable.controls +local displayAmmo = Config.Disable.displayAmmo + +local function decorSet(Type, Value) + if Type == 'parked' then + Config.Density.parked = Value + elseif Type == 'vehicle' then + Config.Density.vehicle = Value + elseif Type == 'multiplier' then + Config.Density.multiplier = Value + elseif Type == 'peds' then + Config.Density.peds = Value + elseif Type == 'scenario' then + Config.Density.scenario = Value + end +end + +exports('DecorSet', decorSet) + +CreateThread(function() + while true do + + for i = 1, #disableHudComponents do + HideHudComponentThisFrame(disableHudComponents[i]) + end + + for i = 1, #disableControls do + DisableControlAction(2, disableControls[i], true) + end + + DisplayAmmoThisFrame(displayAmmo) + + SetParkedVehicleDensityMultiplierThisFrame(Config.Density.parked) + SetVehicleDensityMultiplierThisFrame(Config.Density.vehicle) + SetRandomVehicleDensityMultiplierThisFrame(Config.Density.multiplier) + SetPedDensityMultiplierThisFrame(Config.Density.peds) + SetScenarioPedDensityMultiplierThisFrame(Config.Density.scenario, Config.Density.scenario) -- Walking NPC Density + Wait(0) + end +end) + +exports('addDisableHudComponents', function(hudComponents) + local hudComponentsType = type(hudComponents) + if hudComponentsType == 'number' then + disableHudComponents[#disableHudComponents + 1] = hudComponents + elseif hudComponentsType == 'table' and table.type(hudComponents) == "array" then + for i = 1, #hudComponents do + disableHudComponents[#disableHudComponents + 1] = hudComponents[i] + end + end +end) + +exports('removeDisableHudComponents', function(hudComponents) + local hudComponentsType = type(hudComponents) + if hudComponentsType == 'number' then + for i = 1, #disableHudComponents do + if disableHudComponents[i] == hudComponents then + table.remove(disableHudComponents, i) + break + end + end + elseif hudComponentsType == 'table' and table.type(hudComponents) == "array" then + for i = 1, #disableHudComponents do + for i2 = 1, #hudComponents do + if disableHudComponents[i] == hudComponents[i2] then + table.remove(disableHudComponents, i) + end + end + end + end +end) + +exports('getDisableHudComponents', function() return disableHudComponents end) + +exports('addDisableControls', function(controls) + local controlsType = type(controls) + if controlsType == 'number' then + disableControls[#disableControls + 1] = controls + elseif controlsType == 'table' and table.type(controls) == "array" then + for i = 1, #controls do + disableControls[#disableControls + 1] = controls[i] + end + end +end) + +exports('removeDisableControls', function(controls) + local controlsType = type(controls) + if controlsType == 'number' then + for i = 1, #disableControls do + if disableControls[i] == controls then + table.remove(disableControls, i) + break + end + end + elseif controlsType == 'table' and table.type(controls) == "array" then + for i = 1, #disableControls do + for i2 = 1, #controls do + if disableControls[i] == controls[i2] then + table.remove(disableControls, i) + end + end + end + end +end) + +exports('getDisableControls', function() return disableControls end) + +exports('setDisplayAmmo', function(bool) displayAmmo = bool end) + +exports('getDisplayAmmo', function() return displayAmmo end) \ No newline at end of file diff --git a/resources/[core]/ui-base/client/ignore.lua b/resources/[core]/ui-base/client/ignore.lua new file mode 100644 index 0000000..b576b2b --- /dev/null +++ b/resources/[core]/ui-base/client/ignore.lua @@ -0,0 +1,137 @@ +CreateThread(function() + while true do + for _, sctyp in next, Config.BlacklistedScenarios.types do + SetScenarioTypeEnabled(sctyp, false) + end + for _, scgrp in next, Config.BlacklistedScenarios.groups do + SetScenarioGroupEnabled(scgrp, false) + end + Wait(10000) + end +end) + +AddEventHandler('populationPedCreating', function(x, y, z) + Wait(500) -- Give the entity some time to be created + local _, handle = GetClosestPed(x, y, z, 1.0) -- Get the entity handle + SetPedDropsWeaponsWhenDead(handle, false) +end) + +CreateThread(function() + local mapText = Config.PauseMapText + if mapText == '' or type(mapText) ~= 'string' then mapText = 'FiveM' end + AddTextEntry('FE_THDR_GTAO', mapText) +end) + +CreateThread(function() -- all these should only need to be called once + if Config.Disable.ambience then + StartAudioScene('CHARACTER_CHANGE_IN_SKY_SCENE') + SetAudioFlag('DisableFlightMusic', true) + end + SetAudioFlag('PoliceScannerDisabled', true) + SetGarbageTrucks(false) + SetCreateRandomCops(false) + SetCreateRandomCopsNotOnScenarios(false) + SetCreateRandomCopsOnScenarios(false) + DistantCopCarSirens(false) + RemoveVehiclesFromGeneratorsInArea(335.2616 - 300.0, -1432.455 - 300.0, 46.51 - 300.0, 335.2616 + 300.0, -1432.455 + 300.0, 46.51 + 300.0) -- central los santos medical center + RemoveVehiclesFromGeneratorsInArea(441.8465 - 500.0, -987.99 - 500.0, 30.68 - 500.0, 441.8465 + 500.0, -987.99 + 500.0, 30.68 + 500.0) -- police station mission row + RemoveVehiclesFromGeneratorsInArea(316.79 - 300.0, -592.36 - 300.0, 43.28 - 300.0, 316.79 + 300.0, -592.36 + 300.0, 43.28 + 300.0) -- pillbox + RemoveVehiclesFromGeneratorsInArea(-2150.44 - 500.0, 3075.99 - 500.0, 32.8 - 500.0, -2150.44 + 500.0, -3075.99 + 500.0, 32.8 + 500.0) -- military + RemoveVehiclesFromGeneratorsInArea(-1108.35 - 300.0, 4920.64 - 300.0, 217.2 - 300.0, -1108.35 + 300.0, 4920.64 + 300.0, 217.2 + 300.0) -- nudist + RemoveVehiclesFromGeneratorsInArea(-458.24 - 300.0, 6019.81 - 300.0, 31.34 - 300.0, -458.24 + 300.0, 6019.81 + 300.0, 31.34 + 300.0) -- police station paleto + RemoveVehiclesFromGeneratorsInArea(1854.82 - 300.0, 3679.4 - 300.0, 33.82 - 300.0, 1854.82 + 300.0, 3679.4 + 300.0, 33.82 + 300.0) -- police station sandy + RemoveVehiclesFromGeneratorsInArea(-724.46 - 300.0, -1444.03 - 300.0, 5.0 - 300.0, -724.46 + 300.0, -1444.03 + 300.0, 5.0 + 300.0) -- REMOVE CHOPPERS WOW +end) + +CreateThread(function() + while true do + local sleep = 1000 + local ped = PlayerPedId() + if IsPedBeingStunned(ped, 0) then + sleep = 0 + SetPedMinGroundTimeForStungun(ped, math.random(4000, 7000)) + end + Wait(sleep) + end +end) + +CreateThread(function() + for i = 1, 15 do + local toggle = Config.AIResponse.dispatchServices[i] + EnableDispatchService(i, toggle) + end + + local wantedLevel = Config.AIResponse.wantedLevels and 5 or 0 + SetMaxWantedLevel(wantedLevel) +end) + +CreateThread(function() + if Config.Disable.driveby then + SetPlayerCanDoDriveBy(PlayerId(), false) + end +end) + +if Config.Disable.idleCamera then + CreateThread(function() + while true do + InvalidateIdleCam() + InvalidateVehicleIdleCam() + Wait(1000) + end + end) +end + +RegisterNetEvent('QBCore:Client:DrawWeapon', function() + local sleep + while true do + sleep = 500 + local ped = PlayerPedId() + local weapon = GetSelectedPedWeapon(ped) + if weapon ~= `WEAPON_UNARMED` then + if IsPedArmed(ped, 6) then + sleep = 0 + DisableControlAction(1, 140, true) + DisableControlAction(1, 141, true) + DisableControlAction(1, 142, true) + end + + if weapon == `WEAPON_FIREEXTINGUISHER` or weapon == `WEAPON_PETROLCAN` then + if IsPedShooting(ped) then + SetPedInfiniteAmmo(ped, true, weapon) + end + end + else + break + end + Wait(sleep) + end +end) + +CreateThread(function() + local pedPool = GetGamePool('CPed') + for _, v in pairs(pedPool) do + SetPedDropsWeaponsWhenDead(v, false) + end +end) + +CreateThread(function() + while true do + Wait(2500) + local ped = PlayerPedId() + local weapon = GetSelectedPedWeapon(ped) + if Config.BlacklistedWeapons[weapon] then + RemoveWeaponFromPed(ped, weapon) + end + end +end) + +CreateThread(function() + while Config.Disable.pistolWhipping do + if IsPedArmed(PlayerPedId(), 6) then + DisableControlAction(1, 140, true) + DisableControlAction(1, 141, true) + DisableControlAction(1, 142, true) + end + Wait(5) + end +end) diff --git a/resources/[core]/ui-base/client/noshuff.lua b/resources/[core]/ui-base/client/noshuff.lua new file mode 100644 index 0000000..b5d02ed --- /dev/null +++ b/resources/[core]/ui-base/client/noshuff.lua @@ -0,0 +1,30 @@ +local disableShuffle = true + +RegisterNetEvent('QBCore:Client:EnteredVehicle', function(data) + local ped = PlayerPedId() + while IsPedInAnyVehicle(ped, false) do + local sleep = 100 + if disableShuffle and GetPedInVehicleSeat(data.vehicle, 0) == ped and GetIsTaskActive(ped, 165) then + sleep = 0 + SetPedIntoVehicle(ped, data.vehicle, 0) + SetPedConfigFlag(ped, 184, true) + end + Wait(sleep) + end +end) + +RegisterNetEvent('SeatShuffle', function() + local ped = PlayerPedId() + if IsPedInAnyVehicle(ped, false) then + disableShuffle = false + SetPedConfigFlag(ped, 184, false) + Wait(3000) + disableShuffle = true + else + CancelEvent() + end +end) + +RegisterCommand('shuff', function() + TriggerEvent('SeatShuffle') +end, false) diff --git a/resources/[core]/ui-base/client/point.lua b/resources/[core]/ui-base/client/point.lua new file mode 100644 index 0000000..926f6aa --- /dev/null +++ b/resources/[core]/ui-base/client/point.lua @@ -0,0 +1,58 @@ +local mp_pointing = false + +local function startPointing() + local ped = PlayerPedId() + RequestAnimDict("anim@mp_point") + while not HasAnimDictLoaded("anim@mp_point") do + Wait(10) + end + SetPedCurrentWeaponVisible(ped, 0, true, true, true) + SetPedConfigFlag(ped, 36, 1) + TaskMoveNetworkByName(ped, 'task_mp_pointing', 0.5, false, 'anim@mp_point', 24) + RemoveAnimDict("anim@mp_point") +end + +local function stopPointing() + local ped = PlayerPedId() + if not IsPedInjured(ped) then + RequestTaskMoveNetworkStateTransition(ped, 'Stop') + ClearPedSecondaryTask(ped) + if not IsPedInAnyVehicle(ped, 1) then + SetPedCurrentWeaponVisible(ped, 1, true, true, true) + end + SetPedConfigFlag(ped, 36, false) + end +end + +RegisterCommand('point', function() + local ped = PlayerPedId() + if not IsPedInAnyVehicle(ped, false) then + mp_pointing = not mp_pointing + if mp_pointing then + startPointing() + else + stopPointing() + end + while mp_pointing do + local camPitch = GetGameplayCamRelativePitch() + local camHeading = GetGameplayCamRelativeHeading() + local cosCamHeading = Cos(camHeading) + local sinCamHeading = Sin(camHeading) + camPitch = math.max(-70.0, math.min(42.0, camPitch)) + camPitch = (camPitch + 70.0) / 112.0 + camHeading = math.max(-180.0, math.min(180.0, camHeading)) + camHeading = (camHeading + 180.0) / 360.0 + + local coords = GetOffsetFromEntityInWorldCoords(ped, (cosCamHeading * -0.2) - (sinCamHeading * (0.4 * camHeading + 0.3)), (sinCamHeading * -0.2) + (cosCamHeading * (0.4 * camHeading + 0.3)), 0.6) + local ray = StartShapeTestCapsule(coords.x, coords.y, coords.z - 0.2, coords.x, coords.y, coords.z + 0.2, 0.4, 95, ped, 7) + local _, blocked = GetRaycastResult(ray) + SetTaskMoveNetworkSignalFloat(ped, "Pitch", camPitch) + SetTaskMoveNetworkSignalFloat(ped, "Heading", camHeading * -1.0 + 1.0) + SetTaskMoveNetworkSignalBool(ped, "isBlocked", blocked) + SetTaskMoveNetworkSignalBool(ped, "isFirstPerson", GetCamViewModeForContext(GetCamActiveViewModeContext()) == 4) + Wait(0) + end + end +end, false) + +RegisterKeyMapping('point', 'Toggles Point', 'keyboard', 'B') diff --git a/resources/[core]/ui-base/client/removeentities.lua b/resources/[core]/ui-base/client/removeentities.lua new file mode 100644 index 0000000..a42553a --- /dev/null +++ b/resources/[core]/ui-base/client/removeentities.lua @@ -0,0 +1,25 @@ +local entPoly = {} + +RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() + Wait(5000) + for _, v in pairs(Config.Objects) do + entPoly[#entPoly + 1] = BoxZone:Create(v.coords, v.length, v.width, {name = v.model, debugPoly = false, heading = 0}) + end + + local entCombo = ComboZone:Create(entPoly, {name = "entcombo", debugPoly = false }) + entCombo:onPlayerInOut(function(isPointInside) + if isPointInside then + for _,v in pairs(Config.Objects) do + local model = v.model + if type(v.model) == 'string' then + model = joaat(v.model) + end + + local ent = GetClosestObjectOfType(v.coords.x, v.coords.y, v.coords.z, 2.0, model, false, false, false) + SetEntityAsMissionEntity(ent, true, true) + DeleteObject(ent) + SetEntityAsNoLongerNeeded(ent) + end + end + end) +end) \ No newline at end of file diff --git a/resources/[core]/ui-base/client/seatbelt.lua b/resources/[core]/ui-base/client/seatbelt.lua new file mode 100644 index 0000000..f01fb18 --- /dev/null +++ b/resources/[core]/ui-base/client/seatbelt.lua @@ -0,0 +1,273 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local seatbeltOn = false +local harnessOn = false +local harnessHp = Config.HarnessUses +local handbrake = 0 +local sleep = 0 +local harnessData = {} +local newVehBodyHealth = 0 +local currVehBodyHealth = 0 +local frameBodyChange = 0 +local lastFrameVehSpeed = 0 +local lastFrameVehSpeed2 = 0 +local thisFrameVehSpeed = 0 +local tick = 0 +local damageDone = false +local modifierDensity = true +local lastVeh = nil +local veloc + +-- Functions + +local function ejectFromVehicle() + local ped = PlayerPedId() + local veh = GetVehiclePedIsIn(ped, false) + local coords = GetOffsetFromEntityInWorldCoords(veh, 1.0, 0.0, 1.0) + SetEntityCoords(ped, coords.x, coords.y, coords.z) + Wait(1) + SetPedToRagdoll(ped, 5511, 5511, 0, 0, 0, 0) + SetEntityVelocity(ped, veloc.x * 4, veloc.y * 4, veloc.z * 4) + local ejectSpeed = math.ceil(GetEntitySpeed(ped) * 8) + if GetEntityHealth(ped) - ejectSpeed > 0 then + SetEntityHealth(ped, GetEntityHealth(ped) - ejectSpeed) + elseif GetEntityHealth(ped) ~= 0 then + SetEntityHealth(ped, 0) + end +end + +local function toggleSeatbelt() + seatbeltOn = not seatbeltOn + SeatBeltLoop() + TriggerEvent("seatbelt:client:ToggleSeatbelt", seatbeltOn) + TriggerServerEvent("InteractSound_SV:PlayWithinDistance", 5.0, seatbeltOn and "carbuckle" or "carunbuckle", 0.25) +end + +local function toggleHarness() + harnessOn = not harnessOn + if not harnessOn then return end + toggleSeatbelt() +end + +local function resetHandBrake() + if handbrake <= 0 then return end + handbrake -= 1 +end + +function SeatBeltLoop() + CreateThread(function() + while true do + sleep = 0 + if seatbeltOn or harnessOn then + DisableControlAction(0, 75, true) + DisableControlAction(27, 75, true) + end + if not IsPedInAnyVehicle(PlayerPedId(), false) then + seatbeltOn = false + harnessOn = false + TriggerEvent("seatbelt:client:ToggleSeatbelt", seatbeltOn) + break + end + if not seatbeltOn and not harnessOn then break end + Wait(sleep) + end + end) +end + +-- Export + +---Checks whether you have the harness on or not +---@return boolean +local function hasHarness() + return harnessOn +end + +exports("HasHarness", hasHarness) + +-- Ejection Logic + +RegisterNetEvent('QBCore:Client:EnteredVehicle', function() + local ped = PlayerPedId() + while IsPedInAnyVehicle(ped, false) do + Wait(0) + local currVehicle = GetVehiclePedIsIn(ped, false) + if currVehicle and currVehicle ~= false and currVehicle ~= 0 then + SetPedHelmet(ped, false) + lastVeh = GetVehiclePedIsIn(ped, false) + if GetVehicleEngineHealth(currVehicle) < 0.0 then + SetVehicleEngineHealth(currVehicle, 0.0) + end + if (GetVehicleHandbrake(currVehicle) or (GetVehicleSteeringAngle(currVehicle)) > 25.0 or (GetVehicleSteeringAngle(currVehicle)) < -25.0) then + if handbrake == 0 then + handbrake = 100 + resetHandBrake() + else + handbrake = 100 + end + end + + thisFrameVehSpeed = GetEntitySpeed(currVehicle) * 3.6 + currVehBodyHealth = GetVehicleBodyHealth(currVehicle) + if currVehBodyHealth == 1000 and frameBodyChange ~= 0 then + frameBodyChange = 0 + end + if frameBodyChange ~= 0 then + if lastFrameVehSpeed > 110 and thisFrameVehSpeed < (lastFrameVehSpeed * 0.75) and not damageDone then + if frameBodyChange > 18.0 then + if not seatbeltOn and not IsThisModelABike(currVehicle) then + if math.random(math.ceil(lastFrameVehSpeed)) > 60 then + if not harnessOn then + ejectFromVehicle() + else + harnessHp -= 1 + TriggerServerEvent('seatbelt:DoHarnessDamage', harnessHp, harnessData) + end + end + elseif (seatbeltOn or harnessOn) and not IsThisModelABike(currVehicle) then + if lastFrameVehSpeed > 150 then + if math.random(math.ceil(lastFrameVehSpeed)) > 150 then + if not harnessOn then + ejectFromVehicle() + else + harnessHp -= 1 + TriggerServerEvent('seatbelt:DoHarnessDamage', harnessHp, harnessData) + end + end + end + end + else + if not seatbeltOn and not IsThisModelABike(currVehicle) then + if math.random(math.ceil(lastFrameVehSpeed)) > 60 then + if not harnessOn then + ejectFromVehicle() + else + harnessHp -= 1 + TriggerServerEvent('seatbelt:DoHarnessDamage', harnessHp, harnessData) + end + end + elseif (seatbeltOn or harnessOn) and not IsThisModelABike(currVehicle) then + if lastFrameVehSpeed > 120 then + if math.random(math.ceil(lastFrameVehSpeed)) > 200 then + if not harnessOn then + ejectFromVehicle() + else + harnessHp -= 1 + TriggerServerEvent('seatbelt:DoHarnessDamage', harnessHp, harnessData) + end + end + end + end + end + damageDone = true + SetVehicleEngineOn(currVehicle, false, true, true) + end + if currVehBodyHealth < 350.0 and not damageDone then + damageDone = true + SetVehicleEngineOn(currVehicle, false, true, true) + Wait(1000) + end + end + if lastFrameVehSpeed < 100 then + Wait(100) + tick = 0 + end + frameBodyChange = newVehBodyHealth - currVehBodyHealth + if tick > 0 then + tick -= 1 + if tick == 1 then + lastFrameVehSpeed = GetEntitySpeed(currVehicle) * 3.6 + end + else + if damageDone then + damageDone = false + frameBodyChange = 0 + lastFrameVehSpeed = GetEntitySpeed(currVehicle) * 3.6 + end + lastFrameVehSpeed2 = GetEntitySpeed(currVehicle) * 3.6 + if lastFrameVehSpeed2 > lastFrameVehSpeed then + lastFrameVehSpeed = GetEntitySpeed(currVehicle) * 3.6 + end + if lastFrameVehSpeed2 < lastFrameVehSpeed then + tick = 25 + end + + end + if tick < 0 then + tick = 0 + end + newVehBodyHealth = GetVehicleBodyHealth(currVehicle) + if not modifierDensity then + modifierDensity = true + end + veloc = GetEntityVelocity(currVehicle) + else + if lastVeh then + SetPedHelmet(ped, true) + Wait(200) + newVehBodyHealth = GetVehicleBodyHealth(lastVeh) + if not damageDone and newVehBodyHealth < currVehBodyHealth then + damageDone = true + SetVehicleEngineOn(lastVeh, false, true, true) + Wait(1000) + end + lastVeh = nil + end + lastFrameVehSpeed2 = 0 + lastFrameVehSpeed = 0 + newVehBodyHealth = 0 + currVehBodyHealth = 0 + frameBodyChange = 0 + Wait(2000) + break + end + end +end) + +-- Events + +RegisterNetEvent('seatbelt:client:UseHarness', function(ItemData) -- On Item Use (registered server side) + local ped = PlayerPedId() + local inVeh = IsPedInAnyVehicle(ped, false) + local class = GetVehicleClass(GetVehiclePedIsUsing(ped)) + if inVeh and class ~= 8 and class ~= 13 and class ~= 14 then + if not harnessOn then + LocalPlayer.state:set("inv_busy", true, true) + QBCore.Functions.Progressbar("harness_equip", Lang:t('seatbelt.use_harness_progress'), 5000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, {}, {}, {}, function() + LocalPlayer.state:set("inv_busy", false, true) + toggleHarness() + TriggerServerEvent('equip:harness', ItemData) + end) + harnessHp = ItemData.info.uses + harnessData = ItemData + TriggerEvent('hud:client:UpdateHarness', harnessHp) + else + LocalPlayer.state:set("inv_busy", true, true) + QBCore.Functions.Progressbar("harness_equip", Lang:t('seatbelt.remove_harness_progress'), 5000, false, true, { + disableMovement = false, + disableCarMovement = false, + disableMouse = false, + disableCombat = true, + }, {}, {}, {}, function() + LocalPlayer.state:set("inv_busy", false, true) + toggleHarness() + end) + end + else + QBCore.Functions.Notify(Lang:t('seatbelt.no_car'), 'error') + end +end) + +-- Register Key + +RegisterCommand('toggleseatbelt', function() + if not IsPedInAnyVehicle(PlayerPedId(), false) or IsPauseMenuActive() then return end + local class = GetVehicleClass(GetVehiclePedIsUsing(PlayerPedId())) + if class == 8 or class == 13 or class == 14 then return end + toggleSeatbelt() +end, false) + +RegisterKeyMapping('toggleseatbelt', 'Toggle Seatbelt', 'keyboard', 'B') diff --git a/resources/[core]/ui-base/client/tackle.lua b/resources/[core]/ui-base/client/tackle.lua new file mode 100644 index 0000000..39f6bb3 --- /dev/null +++ b/resources/[core]/ui-base/client/tackle.lua @@ -0,0 +1,37 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +local function tackleAnim() + local ped = PlayerPedId() + if not HasAnimDictLoaded("swimming@first_person@diving") then + RequestAnimDict("swimming@first_person@diving") + while not HasAnimDictLoaded("swimming@first_person@diving") do + Wait(10) + end + end + if IsEntityPlayingAnim(ped, "swimming@first_person@diving", "dive_run_fwd_-45_loop", 3) then + ClearPedTasksImmediately(ped) + else + TaskPlayAnim(ped, "swimming@first_person@diving", "dive_run_fwd_-45_loop", 3.0, 3.0, -1, 49, 0, false, false, false) + Wait(250) + ClearPedTasksImmediately(ped) + SetPedToRagdoll(ped, 150, 150, 0, false, false, false) + end +end + +RegisterCommand('tackle', function() + local closestPlayer, distance = QBCore.Functions.GetClosestPlayer() + local ped = PlayerPedId() + if distance ~= -1 and distance < 2 and GetEntitySpeed(ped) > 2.5 and not IsPedInAnyVehicle(ped, false) and not QBCore.Functions.GetPlayerData().metadata.ishandcuffed and not IsPedRagdoll(ped) then + TriggerServerEvent("tackle:server:TacklePlayer", GetPlayerServerId(closestPlayer)) + tackleAnim() + end +end) + +RegisterKeyMapping('tackle', 'Tackle Someone', 'KEYBOARD', 'LMENU') + +RegisterNetEvent('tackle:client:GetTackled', function() + SetPedToRagdoll(PlayerPedId(), math.random(1000, 6000), math.random(1000, 6000), 0, false, false, false) + TimerEnabled = true + Wait(1500) + TimerEnabled = false +end) \ No newline at end of file diff --git a/resources/[core]/ui-base/client/teleports.lua b/resources/[core]/ui-base/client/teleports.lua new file mode 100644 index 0000000..8a39dd3 --- /dev/null +++ b/resources/[core]/ui-base/client/teleports.lua @@ -0,0 +1,69 @@ +local title = Lang:t('teleport.teleport_default') +local ran = false +local teleportPoly = {} + +local function teleportMenu(zones, currentZone) + local menu = {} + for k, v in pairs(Config.Teleports[zones]) do + if k ~= currentZone then + if not v.label then + title = Lang:t('teleport.teleport_default') + else + title = v.label + end + menu[#menu + 1] = { + header = title, + params = { + event = 'teleports:chooseloc', + args = { + car = Config.Teleports[zones][currentZone].allowVeh, + coords = v.poly.coords, + heading = v.poly.heading + } + } + } + end + end + exports['qb-menu']:showHeader(menu) +end + +CreateThread(function() + for i = 1, #Config.Teleports, 1 do + for u = 1, #Config.Teleports[i] do + local portal = Config.Teleports[i][u].poly + teleportPoly[#teleportPoly + 1] = BoxZone:Create(vector3(portal.coords.x, portal.coords.y, portal.coords.z), portal.length, portal.width, { + heading = portal.heading, + name = i, + debugPoly = false, + minZ = portal.coords.z - 5, + maxZ = portal.coords.z + 5, + data = {pad = u} + }) + local teleportCombo = ComboZone:Create(teleportPoly, {name = 'teleportPoly'}) + teleportCombo:onPlayerInOut(function(isPointInside, _, zone) + if isPointInside then + if not ran then + ran = true + teleportMenu(tonumber(zone.name), zone.data.pad) + end + else + ran = false + end + end) + end + end +end) + +RegisterNetEvent('teleports:chooseloc', function(data) + local ped = PlayerPedId() + DoScreenFadeOut(500) + Wait(500) + if data.car then + SetPedCoordsKeepVehicle(ped, data.coords.x, data.coords.y, data.coords.z) + else + SetEntityCoords(ped, data.coords.x, data.coords.y, data.coords.z) + end + SetEntityHeading(ped, data.heading) + Wait(500) + DoScreenFadeIn(500) +end) \ No newline at end of file diff --git a/resources/[core]/ui-base/client/vehiclepush.lua b/resources/[core]/ui-base/client/vehiclepush.lua new file mode 100644 index 0000000..714c7a5 --- /dev/null +++ b/resources/[core]/ui-base/client/vehiclepush.lua @@ -0,0 +1,75 @@ +local isInFront = false + +local function loadAnimDict(dict) + if HasAnimDictLoaded(dict) then return end + RequestAnimDict(dict) + while not HasAnimDictLoaded(dict) do + Wait(10) + end +end + +RegisterNetEvent('vehiclepush:client:push', function(veh) + if veh then + local ped = PlayerPedId() + local pos = GetEntityCoords(ped) + local vehPos = GetEntityCoords(veh) + local dimension = GetModelDimensions(GetEntityModel(veh)) + local vehClass = GetVehicleClass(veh) + if not IsEntityAttachedToEntity(ped, veh) and IsVehicleSeatFree(veh, -1) and GetVehicleEngineHealth(veh) <= Config.DamageNeeded and GetVehicleEngineHealth(veh) >= 0 then + if vehClass ~= 13 or vehClass ~= 14 or vehClass ~= 15 or vehClass ~= 16 then + NetworkRequestControlOfEntity(veh) + if #(pos - vehPos) < 3.0 and not IsPedInAnyVehicle(ped, false) then + if #(vehPos + GetEntityForwardVector(veh) - pos) > #(vehPos + GetEntityForwardVector(veh) * -1 - pos) then + isInFront = false + AttachEntityToEntity(ped, veh, GetPedBoneIndex(ped, 6286), 0.0, dimension.y - 0.3, dimension.z + 1.0, 0.0, 0.0, 0.0, false, false, false, true, 0, true) + else + isInFront = true + AttachEntityToEntity(ped, veh, GetPedBoneIndex(ped, 6286), 0.0, dimension.y * -1 + 0.1, dimension.z + 1.0, 0.0, 0.0, 180.0, false, false, false, true, 0, true) + end + loadAnimDict('missfinale_c2ig_11') + TaskPlayAnim(ped, 'missfinale_c2ig_11', 'pushcar_offcliff_m', 2.0, -8.0, -1, 35, 0, false, false, false) + exports['qb-core']:DrawText(Lang:t('pushcar.stop_push'),'left') + while true do + Wait(0) + if IsDisabledControlPressed(0, 34) then + TaskVehicleTempAction(ped, veh, 11, 1000) + end + + if IsDisabledControlPressed(0, 9) then + TaskVehicleTempAction(ped, veh, 10, 1000) + end + + SetVehicleForwardSpeed(veh, isInFront and -1.0 or 1.0) + + if HasEntityCollidedWithAnything(veh) then + SetVehicleOnGroundProperly(veh) + end + + if IsControlJustPressed(0, 38) then + exports['qb-core']:HideText() + DetachEntity(ped, false, false) + StopAnimTask(ped, 'missfinale_c2ig_11', 'pushcar_offcliff_m', 2.0) + FreezeEntityPosition(ped, false) + break + end + end + end + end + end + end +end) + +CreateThread(function() + exports['qb-target']:AddTargetBone({'bonnet', 'boot'}, { + options = { + { + icon = 'fas fa-wrench', + label = 'Push Vehicle', + action = function(entity) + TriggerEvent('vehiclepush:client:push', entity) + end, + distance = 1.3 + } + } + }) +end) \ No newline at end of file diff --git a/resources/[core]/ui-base/client/vehicletext.lua b/resources/[core]/ui-base/client/vehicletext.lua new file mode 100644 index 0000000..0d72900 --- /dev/null +++ b/resources/[core]/ui-base/client/vehicletext.lua @@ -0,0 +1,18 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +CreateThread(function() + for _, v in pairs(QBCore.Shared.Vehicles) do + local text + local name = string.lower(v.name) + local brand = string.lower(v.brand) + if v.brand and string.match(name, brand) then + local nameWithoutBrand = string.gsub(name, brand, "") + text = v.brand .. ' ' .. nameWithoutBrand + else + text = v.name + end + if v.hash and v.hash ~= 0 then + AddTextEntryByHash(v.hash, text) + end + end +end) \ No newline at end of file diff --git a/resources/[core]/ui-base/client/weapdrop.lua b/resources/[core]/ui-base/client/weapdrop.lua new file mode 100644 index 0000000..d29c144 --- /dev/null +++ b/resources/[core]/ui-base/client/weapdrop.lua @@ -0,0 +1,101 @@ +local disabledPickups = { + `PICKUP_WEAPON_ADVANCEDRIFLE`, + `PICKUP_WEAPON_APPISTOL`, + `PICKUP_WEAPON_ASSAULTRIFLE`, + `PICKUP_WEAPON_ASSAULTRIFLE_MK2`, + `PICKUP_WEAPON_ASSAULTSHOTGUN`, + `PICKUP_WEAPON_ASSAULTSMG`, + `PICKUP_WEAPON_AUTOSHOTGUN`, + `PICKUP_WEAPON_BAT`, + `PICKUP_WEAPON_BATTLEAXE`, + `PICKUP_WEAPON_BOTTLE`, + `PICKUP_WEAPON_BULLPUPRIFLE`, + `PICKUP_WEAPON_BULLPUPRIFLE_MK2`, + `PICKUP_WEAPON_BULLPUPSHOTGUN`, + `PICKUP_WEAPON_CARBINERIFLE`, + `PICKUP_WEAPON_CARBINERIFLE_MK2`, + `PICKUP_WEAPON_COMBATMG`, + `PICKUP_WEAPON_COMBATMG_MK2`, + `PICKUP_WEAPON_COMBATPDW`, + `PICKUP_WEAPON_COMBATPISTOL`, + `PICKUP_WEAPON_COMPACTLAUNCHER`, + `PICKUP_WEAPON_COMPACTRIFLE`, + `PICKUP_WEAPON_CROWBAR`, + `PICKUP_WEAPON_DAGGER`, + `PICKUP_WEAPON_DBSHOTGUN`, + `PICKUP_WEAPON_DOUBLEACTION`, + `PICKUP_WEAPON_FIREWORK`, + `PICKUP_WEAPON_FLAREGUN`, + `PICKUP_WEAPON_FLASHLIGHT`, + `PICKUP_WEAPON_GRENADE`, + `PICKUP_WEAPON_GRENADELAUNCHER`, + `PICKUP_WEAPON_GUSENBERG`, + `PICKUP_WEAPON_GOLFCLUB`, + `PICKUP_WEAPON_HAMMER`, + `PICKUP_WEAPON_HATCHET`, + `PICKUP_WEAPON_HEAVYPISTOL`, + `PICKUP_WEAPON_HEAVYSHOTGUN`, + `PICKUP_WEAPON_HEAVYSNIPER`, + `PICKUP_WEAPON_HEAVYSNIPER_MK2`, + `PICKUP_WEAPON_HOMINGLAUNCHER`, + `PICKUP_WEAPON_KNIFE`, + `PICKUP_WEAPON_KNUCKLE`, + `PICKUP_WEAPON_MACHETE`, + `PICKUP_WEAPON_MACHINEPISTOL`, + `PICKUP_WEAPON_MARKSMANPISTOL`, + `PICKUP_WEAPON_MARKSMANRIFLE`, + `PICKUP_WEAPON_MARKSMANRIFLE_MK2`, + `PICKUP_WEAPON_MG`, + `PICKUP_WEAPON_MICROSMG`, + `PICKUP_WEAPON_MINIGUN`, + `PICKUP_WEAPON_MINISMG`, + `PICKUP_WEAPON_MOLOTOV`, + `PICKUP_WEAPON_MUSKET`, + `PICKUP_WEAPON_NIGHTSTICK`, + `PICKUP_WEAPON_PETROLCAN`, + `PICKUP_WEAPON_PIPEBOMB`, + `PICKUP_WEAPON_PISTOL`, + `PICKUP_WEAPON_PISTOL50`, + `PICKUP_WEAPON_PISTOL_MK2`, + `PICKUP_WEAPON_POOLCUE`, + `PICKUP_WEAPON_PROXMINE`, + `PICKUP_WEAPON_PUMPSHOTGUN`, + `PICKUP_WEAPON_PUMPSHOTGUN_MK2`, + `PICKUP_WEAPON_RAILGUN`, + `PICKUP_WEAPON_RAYCARBINE`, + `PICKUP_WEAPON_RAYMINIGUN`, + `PICKUP_WEAPON_RAYPISTOL`, + `PICKUP_WEAPON_REVOLVER`, + `PICKUP_WEAPON_REVOLVER_MK2`, + `PICKUP_WEAPON_RPG`, + `PICKUP_WEAPON_SAWNOFFSHOTGUN`, + `PICKUP_WEAPON_SMG`, + `PICKUP_WEAPON_SMG_MK2`, + `PICKUP_WEAPON_SMOKEGRENADE`, + `PICKUP_WEAPON_SNIPERRIFLE`, + `PICKUP_WEAPON_SNSPISTOL`, + `PICKUP_WEAPON_SNSPISTOL_MK2`, + `PICKUP_WEAPON_SPECIALCARBINE`, + `PICKUP_WEAPON_SPECIALCARBINE_MK2`, + `PICKUP_WEAPON_STICKYBOMB`, + `PICKUP_WEAPON_STONE_HATCHET`, + `PICKUP_WEAPON_STUNGUN`, + `PICKUP_WEAPON_SWITCHBLADE`, + `PICKUP_WEAPON_VINTAGEPISTOL`, + `PICKUP_WEAPON_WRENCH`, + `PICKUP_WEAPON_CERAMICPISTOL`, + `PICKUP_WEAPON_NAVYREVOLVER`, + `PICKUP_WEAPON_GADGETPISTOL`, + `PICKUP_WEAPON_PISTOLXM3`, + `PICKUP_WEAPON_TECPISTOL`, + `PICKUP_WEAPON_HEAVYRIFLE`, + `PICKUP_WEAPON_MILITARYRIFLE`, + `PICKUP_WEAPON_TACTICALRIFLE`, + `PICKUP_WEAPON_SWEEPERSHOTGUN` +} + +CreateThread(function() + for i = 1, #disabledPickups do + ToggleUsePickupsForPlayer(PlayerId(), disabledPickups[i], false) + end +end) \ No newline at end of file diff --git a/resources/[core]/ui-base/config.lua b/resources/[core]/ui-base/config.lua new file mode 100644 index 0000000..f204df4 --- /dev/null +++ b/resources/[core]/ui-base/config.lua @@ -0,0 +1,274 @@ +Config = {} + +Config.UseTarget = GetConvar('UseTarget', 'false') == 'true' -- Use qb-target interactions (don't change this, go to your server.cfg and add `setr UseTarget true` to use this and just that from true to false or the other way around) +Config.PauseMapText = '' -- Text shown above the map when ESC is pressed. If left empty 'FiveM' will appear +Config.HarnessUses = 20 +Config.DamageNeeded = 100.0 -- amount of damage till you can push your vehicle. 0-1000 +Config.Logging = 'discord' -- fivemanage + +Config.AFK = { + ignoredGroups = { + ['mod'] = true, + ['admin'] = true, + ['god'] = true + }, + secondsUntilKick = 1000000, -- AFK Kick Time Limit (in seconds) + kickInCharMenu = false -- Set to true if you want to kick players for being AFK even when they are in the character menu. +} + +Config.HandsUp = { + command = 'hu', + keybind = 'X', + controls = { 24, 25, 47, 58, 59, 63, 64, 71, 72, 75, 140, 141, 142, 143, 257, 263, 264 } +} + +Config.Binoculars = { + zoomSpeed = 10.0, -- camera zoom speed + storeBinocularsKey = 177 -- backspace by default +} + +Config.AIResponse = { + wantedLevels = false, -- if true, you will recieve wanted levels + dispatchServices = { -- AI dispatch services + [1] = false, -- Police Vehicles + [2] = false, -- Police Helicopters + [3] = false, -- Fire Department Vehicles + [4] = false, -- Swat Vehicles + [5] = false, -- Ambulance Vehicles + [6] = false, -- Police Motorcycles + [7] = false, -- Police Backup + [8] = false, -- Police Roadblocks + [9] = false, -- PoliceAutomobileWaitPulledOver + [10] = false, -- PoliceAutomobileWaitCruising + [11] = false, -- Gang Members + [12] = false, -- Swat Helicopters + [13] = false, -- Police Boats + [14] = false, -- Army Vehicles + [15] = false -- Biker Backup + } +} + +-- To Set This Up visit https://forum.cfx.re/t/how-to-updated-discord-rich-presence-custom-image/157686 +Config.Discord = { + isEnabled = false, -- If set to true, then discord rich presence will be enabled + applicationId = '00000000000000000', -- The discord application id + iconLarge = 'logo_name', -- The name of the large icon + iconLargeHoverText = 'This is a Large icon with text', -- The hover text of the large icon + iconSmall = 'small_logo_name', -- The name of the small icon + iconSmallHoverText = 'This is a Small icon with text', -- The hover text of the small icon + updateRate = 60000, -- How often the player count should be updated + showPlayerCount = true, -- If set to true the player count will be displayed in the rich presence + maxPlayers = 48, -- Maximum amount of players + buttons = { + { + text = 'First Button!', + url = 'fivem://connect/localhost:30120' + }, + { + text = 'Second Button!', + url = 'fivem://connect/localhost:30120' + } + } +} + +Config.Density = { + parked = 0.8, + vehicle = 0.8, + multiplier = 0.8, + peds = 0.8, + scenario = 0.8 +} + +Config.Disable = { + hudComponents = { 1, 2, 3, 4, 7, 9, 13, 14, 19, 20, 21, 22 }, -- Hud Components: https://docs.fivem.net/natives/?_0x6806C51AD12B83B8 + controls = { 37 }, -- Controls: https://docs.fivem.net/docs/game-references/controls/ + displayAmmo = true, -- false disables ammo display + ambience = false, -- disables distance sirens, distance car alarms, flight music, etc + idleCamera = true, -- disables the idle cinematic camera + vestDrawable = false, -- disables the vest equipped when using heavy armor + pistolWhipping = true, -- disables pistol whipping + driveby = false, -- disables driveby +} + +Config.RelieveWeedStress = math.random(15, 20) -- stress relief amount (100 max) + +Config.Consumables = { + eat = { -- default food items + ['sandwich'] = math.random(35, 54), + ['tosti'] = math.random(40, 50), + ['twerks_candy'] = math.random(35, 54), + ['snikkel_candy'] = math.random(40, 50) + }, + drink = { -- default drink items + ['water_bottle'] = math.random(35, 54), + ['kurkakola'] = math.random(35, 54), + ['coffee'] = math.random(40, 50) + }, + alcohol = { -- default alcohol items + ['whiskey'] = math.random(20, 30), + ['beer'] = math.random(30, 40), + ['vodka'] = math.random(20, 40), + }, + custom = { -- put any custom items here + -- ['newitem'] = { + -- progress = { + -- label = 'Using Item...', + -- time = 5000 + -- }, + -- animation = { + -- animDict = 'amb@prop_human_bbq@male@base', + -- anim = 'base', + -- flags = 8, + -- }, + -- prop = { + -- model = false, + -- bone = false, + -- coords = false, -- vector 3 format + -- rotation = false, -- vector 3 format + -- }, + -- replenish = {''' + -- type = 'Hunger', -- replenish type 'Hunger'/'Thirst' / false + -- replenish = math.random(20, 40), + -- isAlcohol = false, -- if you want it to add alcohol count + -- event = false, -- 'eventname' if you want it to trigger an outside event on use useful for drugs + -- server = false -- if the event above is a server event + -- } + -- } + } +} + +Config.Fireworks = { + delay = 5, -- time in s till it goes off + items = { -- firework items + 'firework1', + 'firework2', + 'firework3', + 'firework4' + } +} + +Config.BlacklistedScenarios = { + types = { + 'WORLD_VEHICLE_MILITARY_PLANES_SMALL', + 'WORLD_VEHICLE_MILITARY_PLANES_BIG', + 'WORLD_VEHICLE_AMBULANCE', + 'WORLD_VEHICLE_POLICE_NEXT_TO_CAR', + 'WORLD_VEHICLE_POLICE_CAR', + 'WORLD_VEHICLE_POLICE_BIKE' + }, + groups = { + 2017590552, + 2141866469, + 1409640232, + `ng_planes` + } +} + +Config.BlacklistedVehs = { + [`shamal`] = true, + [`luxor`] = true, + [`luxor2`] = true, + [`jet`] = true, + [`lazer`] = true, + [`buzzard`] = true, + [`buzzard2`] = true, + [`annihilator`] = true, + [`savage`] = true, + [`titan`] = true, + [`rhino`] = true, + [`firetruck`] = true, + [`mule`] = true, + [`maverick`] = true, + [`blimp`] = true, + [`airtug`] = true, + [`camper`] = true, + [`hydra`] = true, + [`oppressor`] = true, + [`technical3`] = true, + [`insurgent3`] = true, + [`apc`] = true, + [`tampa3`] = true, + [`trailersmall2`] = true, + [`halftrack`] = true, + [`hunter`] = true, + [`vigilante`] = true, + [`akula`] = true, + [`barrage`] = true, + [`khanjali`] = true, + [`caracara`] = true, + [`blimp3`] = true, + [`menacer`] = true, + [`oppressor2`] = true, + [`scramjet`] = true, + [`strikeforce`] = true, + [`cerberus`] = true, + [`cerberus2`] = true, + [`cerberus3`] = true, + [`scarab`] = true, + [`scarab2`] = true, + [`scarab3`] = true, + [`rrocket`] = true, + [`ruiner2`] = true, + [`deluxo`] = true, + [`cargoplane2`] = true, + [`voltic2`] = true +} + +Config.BlacklistedWeapons = { + [`WEAPON_RAILGUN`] = true, +} + +Config.BlacklistedPeds = { + [`s_m_y_ranger_01`] = true, + [`s_m_y_sheriff_01`] = true, + [`s_m_y_cop_01`] = true, + [`s_f_y_sheriff_01`] = true, + [`s_f_y_cop_01`] = true, + [`s_m_y_hwaycop_01`] = true +} + +Config.Objects = { -- for object removal + { coords = vector3(266.09, -349.35, 44.74), heading = 0, length = 200, width = 200, model = 'prop_sec_barier_02b' }, + { coords = vector3(285.28, -355.78, 45.13), heading = 0, length = 200, width = 200, model = 'prop_sec_barier_02a' }, +} + +-- You may add more than 2 selections and it will bring up a menu for the player to select which floor be sure to label each section though +Config.Teleports = { + [1] = { -- Elevator @ labs + [1] = { -- up + poly = { coords = vector3(3540.74, 3675.59, 20.99), heading = 167.5, length = 2, width = 2 }, + allowVeh = false, -- whether or not to allow use in vehicle + label = false -- set this to a string for a custom label or leave it false to keep the default. if more than 2 options, label all options + + }, + [2] = { -- down + poly = { coords = vector3(3540.74, 3675.59, 28.11), heading = 172.5, length = 2, width = 2 }, + allowVeh = false, + label = false + } + }, + [2] = { --Coke Processing Enter/Exit + [1] = { + poly = { coords = vector3(909.49, -1589.22, 30.51), heading = 92.24, length = 2, width = 2 }, + allowVeh = false, + label = '[E] Enter Coke Processing' + }, + [2] = { + poly = { coords = vector3(1088.81, -3187.57, -38.99), heading = 181.7, length = 2, width = 2 }, + allowVeh = false, + label = '[E] Leave' + } + } +} + +Config.CarWash = { + dirtLevel = 0.1, -- threshold for the dirt level to be counted as dirty + defaultPrice = 20, -- default price for the carwash + locations = { + [1] = { coords = vector3(174.81, -1736.77, 28.87), length = 7.0, width = 8.8, heading = 359 }, -- South Los Santos Carson Avenue + [2] = { coords = vector3(25.2, -1391.98, 28.91), length = 6.6, width = 8.2, heading = 0 }, -- South Los Santos Innocence Boulevard + [3] = { coords = vector3(-74.27, 6427.72, 31.02), length = 9.4, width = 8, heading = 315 }, -- Paleto Bay Boulevard + [4] = { coords = vector3(1362.69, 3591.81, 34.5), length = 6.4, width = 8, heading = 21 }, -- Sandy Shores + [5] = { coords = vector3(-699.84, -932.68, 18.59), length = 11.8, width = 5.2, heading = 0 } -- Little Seoul Gas Station + } +} diff --git a/resources/[core]/ui-base/events.meta b/resources/[core]/ui-base/events.meta new file mode 100644 index 0000000..08ff6b3 --- /dev/null +++ b/resources/[core]/ui-base/events.meta @@ -0,0 +1,6481 @@ + + + + + RESPONSE_TASK_GUN_AIMED_AT + + + RESPONSE_TASK_TURN_TO_FACE + + + + RESPONSE_POLICE_TASK_WANTED + + + RESPONSE_SWAT_TASK_WANTED + + + RESPONSE_TASK_CROUCH + + + + RESPONSE_TASK_COWER + + + RESPONSE_TASK_WALK_ROUND_FIRE + + + RESPONSE_TASK_HANDS_UP + + + RESPONSE_TASK_LEAVE_CAR_AND_FLEE + + + RESPONSE_TASK_COMBAT + + + RESPONSE_TASK_THREAT + + + RESPONSE_TASK_FLEE + + + + RESPONSE_TASK_SCENARIO_FLEE + + + + RESPONSE_TASK_FLY_AWAY + + + + RESPONSE_TASK_WALK_ROUND_ENTITY + + + RESPONSE_TASK_HEAD_TRACK + + + RESPONSE_TASK_SHOCKING_EVENT_GOTO + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + RESPONSE_TASK_SHOCKING_EVENT_WATCH + + + RESPONSE_TASK_EVASIVE_STEP + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + RESPONSE_TASK_ESCAPE_BLAST + + + RESPONSE_TASK_AGITATED + + + RESPONSE_TASK_EXPLOSION + + + RESPONSE_TASK_DUCK_AND_COVER + + + RESPONSE_TASK_SHOCKING_EVENT_REACT_TO_AIRCRAFT + + + RESPONSE_TASK_SHOCKING_EVENT_REACT + + + RESPONSE_TASK_SHOCKING_EVENT_BACK_AWAY + + + RESPONSE_TASK_SHOCKING_EVENT_STOP_AND_STARE + + + RESPONSE_TASK_SHARK_ATTACK + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + RESPONSE_TASK_GROWL_AND_FLEE + + + RESPONSE_TASK_WALK_AWAY + + + RESPONSE_TASK_AGGRESSIVE_RUBBERNECK + + + RESPONSE_TASK_SHOCKING_NICE_CAR + + + RESPONSE_TASK_FRIENDLY_NEAR_MISS + + + RESPONSE_TASK_FRIENDLY_AIMED_AT + + + RESPONSE_TASK_DEFER_TO_SCENARIO_POINT_FLAGS + + + RESPONSE_TASK_SHOCKING_EVENT_THREAT_RESPONSE + + + RESPONSE_TASK_PLAYER_DEATH + + + + + DEFAULT_RESPONSE_EXPLOSION + EVENT_EXPLOSION + + + RESPONSE_TASK_EXPLOSION + + + + + + + ValidOnFoot NotValidInComplexScenario + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidOnlyInComplexScenario + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + COP_RESPONSE_EXPLOSION + EVENT_EXPLOSION + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + FAMILY_RESPONSE_EXPLOSION + EVENT_EXPLOSION + + + RESPONSE_TASK_EXPLOSION + + + + + + + ValidOnFoot NotValidInComplexScenario ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidOnlyInComplexScenario ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + TURN_TO_FACE_RESPONSE_MUGGING + EVENT_SHOCKING_MUGGING + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + INVESTIGATE_RESPONSE_MUGGING + EVENT_SHOCKING_MUGGING + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_MUGGING + EVENT_SHOCKING_MUGGING + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli InvalidIfFriendlyWithTarget + + + + + GANG_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + FIREMAN_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidInHeli + + + + + MEDIC_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + FAMILY_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + FISH_RESPONSE_FLEE + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_SCENARIO_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + DisableCover + + + + + SHARK_ATTACK_ENCROACHING + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_SHARK_ATTACK + + + + + + + ValidOnFoot NotValidInComplexScenario InvalidIfThereAreAttackingSharks InvalidIfSourceIsAnAnimal + + + + + SHARK_ATTACK_HATE + EVENT_ACQUAINTANCE_PED_HATE + + + RESPONSE_TASK_SHARK_ATTACK + + + + + + + ValidOnFoot NotValidInComplexScenario InvalidIfThereAreAttackingSharks InvalidIfSourceIsAnAnimal + + + + + FLEE_RESPONSE_ENCROACHMENT + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + WALK_AWAY_RESPONSE_ENCROACHMENT + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_WALK_AWAY + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + GULL_RESPONSE_FLEE + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_FLY_AWAY + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + GULL_RESPONSE_EXPLOSION + EVENT_EXPLOSION + + + RESPONSE_TASK_FLY_AWAY + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + GULL_RESPONSE_GUNSHOT + EVENT_SHOT_FIRED + + + RESPONSE_TASK_FLY_AWAY + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + HEN_RESPONSE_FLEE + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_SCENARIO_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + DisableCover + + + + + RAT_RESPONSE_FLEE + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_SCENARIO_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + DisableCover + + + + + FLEE_RESPONSE_DAMAGE + EVENT_DAMAGE + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + FLEE_RESPONSE_FOOT_STEP_HEARD + EVENT_FOOT_STEP_HEARD + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + FLEE_RESPONSE_EXPLOSION + EVENT_EXPLOSION + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + FLEE_RESPONSE_SHOCKING_EXPLOSION + EVENT_SHOCKING_EXPLOSION + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + FLEE_RESPONSE_CAR_CRASH + EVENT_SHOCKING_CAR_CRASH + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + DOG_RESPONSE_CAR_CRASH + EVENT_SHOCKING_CAR_CRASH + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + + + DOG_RESPONSE_INJURED_PED + EVENT_SHOCKING_INJURED_PED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfSource ValidOnlyIfFriendlyWithTarget InvalidIfSourceEntityIsOtherEntity + + + + + DOG_RESPONSE_SEEN_PED_KILLED + EVENT_SHOCKING_SEEN_PED_KILLED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfSource ValidOnlyIfFriendlyWithTarget InvalidIfSourceEntityIsOtherEntity + + + + + FLEE_RESPONSE_SEEN_PED_RUN_OVER + EVENT_SHOCKING_PED_RUN_OVER + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + FLEE_RESPONSE_INJURED_PED + EVENT_SHOCKING_INJURED_PED + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + FLEE_RESPONSE_HELICOPTER + EVENT_SHOCKING_HELICOPTER_OVERHEAD + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + FLEE_RESPONSE_PLANE + EVENT_SHOCKING_PLANE_FLY_BY + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + FLEE_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + FLEE_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + FLEE_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EVENT_SHOT_FIRED_BULLET_IMPACT + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + COMBAT_RESPONSE_FOOT_STEP_HEARD + EVENT_FOOT_STEP_HEARD + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + GROWL_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_TASK_GROWL_AND_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + GROWL_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_TASK_GROWL_AND_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + GROWL_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EVENT_SHOT_FIRED_BULLET_IMPACT + + + RESPONSE_TASK_GROWL_AND_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + COMBAT_RESPONSE_ENCROACHMENT + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + GROWL_RESPONSE_HORN + EVENT_SHOCKING_HORN_SOUNDED + + + RESPONSE_TASK_GROWL_AND_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_DAMAGE + EVENT_DAMAGE + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_CAR_CRASH + EVENT_SHOCKING_CAR_CRASH + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_HORN + EVENT_SHOCKING_HORN_SOUNDED + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_INJURED_PED + EVENT_SHOCKING_INJURED_PED + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_HELICOPTER + EVENT_SHOCKING_HELICOPTER_OVERHEAD + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_PLANE + EVENT_SHOCKING_PLANE_FLY_BY + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_SHOCKING_EXPLOSION + EVENT_SHOCKING_EXPLOSION + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_SEEN_PED_RUN_OVER + EVENT_SHOCKING_PED_RUN_OVER + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_EXPLOSION + EVENT_EXPLOSION + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EVENT_SHOT_FIRED_BULLET_IMPACT + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + EXHAUSTED_FLEE_RESPONSE_SHOCKING_MELEE_ACTION + EVENT_SHOCKING_SEEN_MELEE_ACTION + + + RESPONSE_TASK_EXHAUSTED_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + HORSE_FLEE_RESPONSE_DAMAGE + EVENT_DAMAGE + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot InvalidIfHasARider NotValidInComplexScenario + + + + + HORSE_FLEE_RESPONSE_EXPLOSION + EVENT_EXPLOSION + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot InvalidIfHasARider NotValidInComplexScenario + + + + + HORSE_FLEE_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot InvalidIfHasARider NotValidInComplexScenario + + + + + HORSE_FLEE_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot InvalidIfHasARider NotValidInComplexScenario + + + + + HORSE_FLEE_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EVENT_SHOT_FIRED_BULLET_IMPACT + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot InvalidIfHasARider NotValidInComplexScenario + + + + + HORSE_FLEE_RESPONSE_SHOCKING_MELEE_ACTION + EVENT_SHOCKING_SEEN_MELEE_ACTION + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot InvalidIfHasARider NotValidInComplexScenario + + + + + DEFAULT_RESPONSE_HATE + EVENT_ACQUAINTANCE_PED_HATE + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + DEFAULT_RESPONSE_WANTED + EVENT_ACQUAINTANCE_PED_WANTED + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + DEFAULT_RESPONSE_INJURED_CRY_FOR_HELP + EVENT_INJURED_CRY_FOR_HELP + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_CRIME_CRY_FOR_HELP + EVENT_CRIME_CRY_FOR_HELP + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnlyIfSourceIsNotThreatening + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnlyIfSourceIsThreatening + + + + + GANG_RESPONSE_CRIME_CRY_FOR_HELP + EVENT_CRIME_CRY_FOR_HELP + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + COP_RESPONSE_SHOCKING_CAR_ALARM + EVENT_SHOCKING_CAR_ALARM + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle ValidInHeli + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnFoot ValidOnBicycle + + + + + COP_RESPONSE_PROPERTY_DAMAGE + EVENT_SHOCKING_PROPERTY_DAMAGE + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + COP_RESPONSE_CRIME_CRY_FOR_HELP + EVENT_CRIME_CRY_FOR_HELP + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot + + + + + COP_RESPONSE_WANTED + EVENT_ACQUAINTANCE_PED_WANTED + + + RESPONSE_POLICE_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_WANTED + EVENT_ACQUAINTANCE_PED_WANTED + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_DAMAGE + EVENT_DAMAGE + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_SHOT_FIRED + EVENT_SHOT_FIRED + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EVENT_SHOT_FIRED_BULLET_IMPACT + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_GUN_AIMED_AT + EVENT_GUN_AIMED_AT + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_SHOUT_TARGET_POSITION + EVENT_SHOUT_TARGET_POSITION + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_MELEE + EVENT_MELEE_ACTION + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_VEHICLE_DAMAGE_WEAPON + EVENT_VEHICLE_DAMAGE_WEAPON + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_DRAGGED_OUT_CAR + EVENT_DRAGGED_OUT_CAR + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidOnFoot ValidInHeli + + + + + SWAT_RESPONSE_PED_ENTERED_MY_VEHICLE + EVENT_PED_ENTERED_MY_VEHICLE + + + RESPONSE_SWAT_TASK_WANTED + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_VEHICLE_DAMAGE_WEAPON + EVENT_VEHICLE_DAMAGE_WEAPON + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + FAMILY_RESPONSE_VEHICLE_DAMAGE_WEAPON + EVENT_VEHICLE_DAMAGE_WEAPON + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + DEFAULT_RESPONSE_VEHICLE_ON_FIRE + EVENT_VEHICLE_ON_FIRE + + + RESPONSE_TASK_LEAVE_CAR_AND_FLEE + + + + + + + ValidOnBicycle + + + + + DEFAULT_RESPONSE_GUN_AIMED_AT + EVENT_GUN_AIMED_AT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HANDS_UP + + + + + + + ValidOnFoot + + + RESPONSE_TASK_GUN_AIMED_AT + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_NON_VIOLENT_WEAPON_AIMED_AT + EVENT_SHOCKING_NON_VIOLENT_WEAPON_AIMED_AT + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + TURN_TO_FACE_RESPONSE_SHOCKING_NON_VIOLENT_WEAPON_AIMED_AT + EVENT_SHOCKING_NON_VIOLENT_WEAPON_AIMED_AT + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_GUN_AIMED_AT + EVENT_GUN_AIMED_AT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EVENT_SHOT_FIRED_BULLET_IMPACT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli InvalidIfFriendlyWithTarget + + + + + FIREMAN_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EVENT_SHOT_FIRED_BULLET_IMPACT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidInHeli + + + + + MEDIC_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EVENT_SHOT_FIRED_BULLET_IMPACT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidInHeli + + + + + FRIENDLY_RESPONSE_GUN_AIMED_AT + EVENT_FRIENDLY_AIMED_AT + + + RESPONSE_TASK_FRIENDLY_AIMED_AT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + FAMILY_RESPONSE_FRIENDLY_AIMED_AT + EVENT_FRIENDLY_AIMED_AT + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + DEFAULT_RESPONSE_SHOUT_TARGET_POSITION + EVENT_SHOUT_TARGET_POSITION + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + DEFAULT_RESPONSE_DAMAGE + EVENT_DAMAGE + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + FAMILY_RESPONSE_DAMAGE + EVENT_DAMAGE + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + DEFAULT_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli InvalidIfFriendlyWithTarget + + + + + FIREMAN_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidInHeli + + + + + MEDIC_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidInHeli + + + + + GANG_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + FRIENDLY_RESPONSE_TASK_NEAR_MISS + EVENT_FRIENDLY_FIRE_NEAR_MISS + + + RESPONSE_TASK_FRIENDLY_NEAR_MISS + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + FAMILY_RESPONSE_FRIENDLY_FIRE_NEAR_MISS + EVENT_FRIENDLY_FIRE_NEAR_MISS + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + DEFAULT_RESPONSE_MELEE + EVENT_MELEE_ACTION + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + FAMILY_RESPONSE_MELEE_ACTION + EVENT_MELEE_ACTION + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + FLEE_RESPONSE_SHOCKING_MELEE_ACTION + EVENT_SHOCKING_SEEN_MELEE_ACTION + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_FIRE + EVENT_POTENTIAL_WALK_INTO_FIRE + + + RESPONSE_TASK_WALK_ROUND_FIRE + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_EVENT_DRAGGED_OUT_CAR + EVENT_DRAGGED_OUT_CAR + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_EVENT_PED_ENTERED_MY_VEHICLE + EVENT_PED_ENTERED_MY_VEHICLE + + + RESPONSE_TASK_LEAVE_CAR_AND_FLEE + + + + + + + + + + + + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_VEHICLE + EVENT_POTENTIAL_WALK_INTO_VEHICLE + + + RESPONSE_TASK_WALK_ROUND_ENTITY + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_POTENTIAL_GET_RUN_OVER + EVENT_POTENTIAL_GET_RUN_OVER + + + RESPONSE_TASK_EVASIVE_STEP + + + + + + + ValidOnFoot NotValidInComplexScenario + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidOnlyInComplexScenario + + + + + DEFAULT_RESPONSE_OBJECT_COLLISION + EVENT_OBJECT_COLLISION + + + RESPONSE_TASK_WALK_ROUND_ENTITY + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_SHOCKING_CAR_CHASE + EVENT_SHOCKING_CAR_CHASE + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_CAR_CRASH + EVENT_SHOCKING_CAR_CRASH + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_CAR_CRASH + EVENT_SHOCKING_CAR_CRASH + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot InvalidInCrosswalk ValidOnBicycle + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + FAMILY_RESPONSE_SHOCKING_CAR_CRASH + EVENT_SHOCKING_CAR_CRASH + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + DEFAULT_RESPONSE_SHOCKING_BICYCLE_CRASH + EVENT_SHOCKING_BICYCLE_CRASH + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_BICYCLE_CRASH + EVENT_SHOCKING_BICYCLE_CRASH + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot InvalidInCrosswalk ValidOnBicycle + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_CAR_ON_CAR + EVENT_SHOCKING_CAR_ON_CAR + + + RESPONSE_TASK_FLEE + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_SHOCKING_CAR_PILE_UP + EVENT_SHOCKING_CAR_PILE_UP + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_CAR_PILE_UP + EVENT_SHOCKING_CAR_PILE_UP + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_DEAD_BODY + EVENT_SHOCKING_DEAD_BODY + + + RESPONSE_TASK_SHOCKING_EVENT_GOTO + + + + + + + ValidOnFoot InvalidInCrosswalk InvalidWhenAfraid NotValidInComplexScenario + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_AGGRESSIVE_RUBBERNECK + + + + + + + + + + + + OFFDUTY_EMT_RESPONSE_DEAD_BODY + EVENT_SHOCKING_DEAD_BODY + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_SHOCKING_PED_KILLED + EVENT_SHOCKING_SEEN_PED_KILLED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyIfFriendlyWithTarget ValidOnlyIfRandom + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot InvalidIfFriendlyWithTarget + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk InvalidIfFriendlyWithTarget ValidOnlyIfRandom + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk InvalidIfFriendlyWithTarget ValidOnlyIfRandom + + + + + COP_RESPONSE_SHOCKING_DEAD_BODY + EVENT_SHOCKING_DEAD_BODY + + + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + + + GANG_RESPONSE_SHOCKING_DEAD_BODY + EVENT_SHOCKING_DEAD_BODY + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnBicycle + + + + + FAMILY_RESPONSE_SHOCKING_DEAD_BODY + EVENT_SHOCKING_DEAD_BODY + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + DEFAULT_RESPONSE_SHOCKING_DRIVING_ON_PAVEMENT + EVENT_SHOCKING_DRIVING_ON_PAVEMENT + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_DRIVING_ON_PAVEMENT + EVENT_SHOCKING_DRIVING_ON_PAVEMENT + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_BICYCLE_ON_PAVEMENT + EVENT_SHOCKING_BICYCLE_ON_PAVEMENT + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot InvalidWhenAfraid ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_BICYCLE_ON_PAVEMENT + EVENT_SHOCKING_BICYCLE_ON_PAVEMENT + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_EXPLOSION + EVENT_SHOCKING_EXPLOSION + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + FAMILY_RESPONSE_SHOCKING_EXPLOSION + EVENT_SHOCKING_EXPLOSION + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + DEFAULT_RESPONSE_STUDIO_BOMB + EVENT_SHOCKING_STUDIO_BOMB + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle ValidOnlyInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + COP_RESPONSE_STUDIO_BOMB + EVENT_SHOCKING_STUDIO_BOMB + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + SECURITY_RESPONSE_WANTED + EVENT_ACQUAINTANCE_PED_WANTED + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + SECURITY_RESPONSE_EXPLOSION + EVENT_EXPLOSION + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + SECURITY_RESPONSE_STUDIO_BOMB + EVENT_SHOCKING_STUDIO_BOMB + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + + + SECURITY_RESPONSE_SHOCKING_INJURED_PED + EVENT_SHOCKING_INJURED_PED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfSource InvalidIfSourceEntityIsOtherEntity InvalidIfTargetDoesNotInfluenceWanted + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot ValidOnlyIfSource ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyIfSource + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnlyIfSource + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnlyIfSourceIsInvalid + + + + + SECURITY_RESPONSE_SHOCKING_PED_RUN_OVER + EVENT_SHOCKING_PED_RUN_OVER + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + + + SECURITY_RESPONSE_SHOCKING_DEAD_BODY + EVENT_SHOCKING_DEAD_BODY + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + + + SECURITY_RESPONSE_CRIME_CRY_FOR_HELP + EVENT_CRIME_CRY_FOR_HELP + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot + + + + + SECURITY_RESPONSE_SHOCKING_CAR_CRASH + EVENT_SHOCKING_CAR_CRASH + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot + + + + + COP_RESPONSE_CAR_CRASH + EVENT_SHOCKING_CAR_CRASH + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot + + + + + SECURITY_RESPONSE_SHOCKING_BICYCLE_CRASH + EVENT_SHOCKING_BICYCLE_CRASH + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot + + + + + SECURITY_RESPONSE_SHOCKING_MAD_DRIVER + EVENT_SHOCKING_MAD_DRIVER + + + RESPONSE_TASK_AGITATED + + + + + + + + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + + + SECURITY_RESPONSE_SHOCKING_MAD_DRIVER_EXTREME + EVENT_SHOCKING_MAD_DRIVER_EXTREME + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + + + SECURITY_RESPONSE_SHOCKING_MAD_DRIVER_BICYCLE + EVENT_SHOCKING_MAD_DRIVER_BICYCLE + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + + + SECURITY_RESPONSE_SHOCKING_PED_KILLED + EVENT_SHOCKING_SEEN_PED_KILLED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot InvalidIfTargetDoesNotInfluenceWanted + + + + + SECURITY_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + EVENT_SHOCKING_SEEN_MELEE_ACTION + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + + + COP_RESPONSE_SEEN_PED_KILLED + EVENT_SHOCKING_SEEN_PED_KILLED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot InvalidIfTargetDoesNotInfluenceWanted + + + + + GANG_RESPONSE_SHOCKING_PED_KILLED + EVENT_SHOCKING_SEEN_PED_KILLED + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot ValidOnBicycle ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidIfFriendlyWithTarget InvalidIfMissionPedInMP + + + RESPONSE_TASK_FLEE + + + + + + + InvalidIfFriendlyWithTarget InvalidIfMissionPedInMP + + + RESPONSE_TASK_COMBAT + + + + + + + ValidOnFoot ValidOnBicycle InvalidIfFriendlyWithTarget ValidOnlyIfMissionPedInMP + + + + + FAMILY_RESPONSE_SHOCKING_SEEN_PED_KILLED + EVENT_SHOCKING_SEEN_PED_KILLED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom InvalidIfFriendlyWithTarget + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom InvalidIfFriendlyWithTarget + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom + + + + + DEFAULT_RESPONSE_SHOCKING_FIRE + EVENT_SHOCKING_FIRE + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_GUN_FIGHT + EVENT_SHOCKING_GUN_FIGHT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_GUN_FIGHT + EVENT_SHOCKING_GUN_FIGHT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_GUNSHOT_FIRED + EVENT_SHOCKING_GUNSHOT_FIRED + + + RESPONSE_TASK_FRIENDLY_NEAR_MISS + + + + + + + ValidOnFoot + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_GUNSHOT_FIRED + EVENT_SHOCKING_GUNSHOT_FIRED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_HELICOPTER_OVERHEAD + EVENT_SHOCKING_HELICOPTER_OVERHEAD + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_HELICOPTER_OVERHEAD + EVENT_SHOCKING_HELICOPTER_OVERHEAD + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_PARACHUTER_OVERHEAD + EVENT_SHOCKING_PARACHUTER_OVERHEAD + + + RESPONSE_TASK_SHOCKING_EVENT_WATCH + + + + + + + ValidOnFoot InvalidInCrosswalk InvalidForStationaryPeds + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk InvalidForStationaryPeds + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyForStationaryPeds + + + + + DEFAULT_RESPONSE_SHOCKING_HORN_SOUNDED + EVENT_SHOCKING_HORN_SOUNDED + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_ENGINE_REVVED + EVENT_SHOCKING_ENGINE_REVVED + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_SIREN + EVENT_SHOCKING_SIREN + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_CAR_ALARM + EVENT_SHOCKING_CAR_ALARM + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_PROPERTY_DAMAGE + EVENT_SHOCKING_PROPERTY_DAMAGE + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + GANG_RESPONSE_PROPERTY_DAMAGE + EVENT_SHOCKING_PROPERTY_DAMAGE + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + EVENT_SHOCKING_DANGEROUS_ANIMAL + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_THREAT + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_IN_DANGEROUS_VEHICLE + EVENT_SHOCKING_IN_DANGEROUS_VEHICLE + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + + + FLEE_RESPONSE_HORN + EVENT_SHOCKING_HORN_SOUNDED + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_SHOCKING_INJURED_PED + EVENT_SHOCKING_INJURED_PED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfFriendlyWithTarget ValidOnlyIfSource InvalidIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyIfFriendlyWithTarget ValidOnlyIfSource + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle ValidOnlyIfSource InvalidIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsInvalid + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnlyIfSourceIsInvalid + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle ValidOnFoot ValidOnlyIfSourceIsInvalid + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidIfFriendlyWithTarget ValidOnlyIfSource + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnlyIfSource InvalidIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_AGGRESSIVE_RUBBERNECK + + + + + + + InvalidIfFriendlyWithTarget ValidOnlyIfSource + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSource ValidOnlyIfFriendlyWithTarget ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnlyIfSource ValidOnlyIfFriendlyWithTarget ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSource ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle ValidOnlyIfSource ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle ValidOnlyIfSource ValidOnlyIfSourceEntityIsOtherEntity + + + + + MEDIC_RESPONSE_INJURED_PED + EVENT_SHOCKING_INJURED_PED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle ValidOnlyIfSource ValidOnlyIfFriendlyWithTarget + + + + + COP_RESPONSE_SHOCKING_INJURED_PED + EVENT_SHOCKING_INJURED_PED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfSourcePed InvalidIfSourceEntityIsOtherEntity InvalidIfTargetDoesNotInfluenceWanted + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot ValidOnlyIfSource InvalidIfSourcePed InvalidIfSourceEntityIsOtherEntity InvalidIfTargetDoesNotInfluenceWanted + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnlyIfSource InvalidIfSourcePed InvalidIfSourceEntityIsOtherEntity InvalidIfTargetDoesNotInfluenceWanted + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot ValidOnlyIfSource ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnlyIfSource ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyIfSource + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnlyIfSource + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyIfSourceIsInvalid + + + + + GANG_RESPONSE_SHOCKING_INJURED_PED + EVENT_SHOCKING_INJURED_PED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle ValidOnlyIfSource ValidOnlyIfFriendlyWithTarget InvalidIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnBicycle ValidOnlyIfSource InvalidIfFriendlyWithTarget InvalidIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnBicycle ValidOnlyIfSource InvalidIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSource ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle ValidOnlyIfSource ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle ValidOnlyIfSource ValidOnlyIfSourceEntityIsOtherEntity + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnlyIfSource + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli ValidOnlyIfSourceIsInvalid + + + + + FAMILY_RESPONSE_SHOCKING_INJURED_PED + EVENT_SHOCKING_INJURED_PED + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom InvalidIfFriendlyWithTarget + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom InvalidIfFriendlyWithTarget + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom + + + + + DEFAULT_RESPONSE_SHOCKING_MAD_DRIVER + EVENT_SHOCKING_MAD_DRIVER + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_MAD_DRIVER_EXTREME + EVENT_SHOCKING_MAD_DRIVER_EXTREME + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_MAD_DRIVER_BICYCLE + EVENT_SHOCKING_MAD_DRIVER_BICYCLE + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_PED_RUN_OVER + EVENT_SHOCKING_PED_RUN_OVER + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_AGGRESSIVE_RUBBERNECK + + + + + + + + + + + + GANG_RESPONSE_SHOCKING_PED_RUN_OVER + EVENT_SHOCKING_PED_RUN_OVER + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + COP_RESPONSE_SHOCKING_PED_RUN_OVER + EVENT_SHOCKING_PED_RUN_OVER + + + RESPONSE_TASK_SHOCKING_POLICE_INVESTIGATE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_PED_SHOT + EVENT_SHOCKING_PED_SHOT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_SHOCKING_EVENT_THREAT_RESPONSE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_PED_SHOT + EVENT_SHOCKING_PED_SHOT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + RESPONSE_TASK_SHOCKING_EVENT_THREAT_RESPONSE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_PLANE_FLY_BY + EVENT_SHOCKING_PLANE_FLY_BY + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_PLANE_FLY_BY + EVENT_SHOCKING_PLANE_FLY_BY + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_RUNNING_PED + EVENT_SHOCKING_RUNNING_PED + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_RUNNING_STAMPEDE + EVENT_SHOCKING_RUNNING_STAMPEDE + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_SEEN_CAR_STOLEN + EVENT_SHOCKING_SEEN_CAR_STOLEN + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk ValidOnlyIfNoScenarioRadius InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk ValidOnlyIfOutsideScenarioRadius InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle ValidOnlyIfOutsideScenarioRadius InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_DEFER_TO_SCENARIO_POINT_FLAGS + + + + + + + ValidOnFoot InvalidInCrosswalk ValidOnlyIfInsideScenarioRadius ValidOnBicycle InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli InvalidIfOtherVehicleIsYourVehicle + + + + + GANG_RESPONSE_SHOCKING_SEEN_CAR_STOLEN + EVENT_SHOCKING_SEEN_CAR_STOLEN + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot InvalidInCrosswalk ValidOnlyIfNoScenarioRadius InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot InvalidInCrosswalk ValidOnlyIfOutsideScenarioRadius InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle ValidOnlyIfOutsideScenarioRadius InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_DEFER_TO_SCENARIO_POINT_FLAGS + + + + + + + ValidOnFoot InvalidInCrosswalk ValidOnlyIfInsideScenarioRadius ValidOnBicycle InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk InvalidIfOtherVehicleIsYourVehicle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli InvalidIfOtherVehicleIsYourVehicle + + + + + MEDIC_RESPONSE_SHOCKING_SEEN_CAR_STOLEN + EVENT_SHOCKING_SEEN_CAR_STOLEN + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + + + FIRE_RESPONSE_SHOCKING_SEEN_CAR_STOLEN + EVENT_SHOCKING_SEEN_CAR_STOLEN + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_SHOCKING_SEEN_GANG_FIGHT + EVENT_SHOCKING_SEEN_GANG_FIGHT + + + RESPONSE_TASK_SHOCKING_EVENT_GOTO + + + + + + + ValidOnFoot InvalidInCrosswalk InvalidWhenAfraid NotValidInComplexScenario + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + EVENT_SHOCKING_SEEN_MELEE_ACTION + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + AGITATED_RESPONSE_SHOCKING_PED_KNOCKED_INTO + EVENT_SHOCKING_PED_KNOCKED_INTO_BY_PLAYER + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_PED_KNOCKED_INTO + EVENT_SHOCKING_PED_KNOCKED_INTO_BY_PLAYER + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle + + + + + GANG_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + EVENT_SHOCKING_SEEN_MELEE_ACTION + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + FAMILY_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + EVENT_SHOCKING_SEEN_MELEE_ACTION + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom ValidOnlyIfTargetIsInvalidOrFriendly + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidInHeli ValidOnBicycle ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom ValidOnlyIfTargetIsInvalidOrFriendly + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom ValidOnlyIfTargetIsValidAndNotFriendly + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom ValidOnlyIfTargetIsValidAndNotFriendly + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom + + + RESPONSE_TASK_FLEE + + + + + + + ValidInHeli ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom ValidOnlyIfTargetIsValidAndNotFriendly + + + RESPONSE_TASK_FLEE + + + + + + + ValidInHeli ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom ValidOnlyIfTargetIsValidAndNotFriendly + + + RESPONSE_TASK_FLEE + + + + + + + ValidInHeli ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + RESPONSE_TASK_FLEE + + + + + + + ValidInHeli ValidOnlyIfSourceIsAnAnimal ValidOnlyIfRandom + + + + + COP_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + EVENT_SHOCKING_SEEN_MELEE_ACTION + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_SHOCKING_SEEN_CONFRONTATION + EVENT_SHOCKING_SEEN_CONFRONTATION + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot InvalidInCrosswalk InvalidInAnInterior + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInAnInterior + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidInHeli + + + + + GANG_RESPONSE_SHOCKING_SEEN_CONFRONTATION + EVENT_SHOCKING_SEEN_CONFRONTATION + + + RESPONSE_TASK_TURN_TO_FACE + + + + + + + ValidOnFoot InvalidInCrosswalk InvalidInAnInterior + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInCrosswalk + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnlyInAnInterior + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnBicycle ValidInHeli + + + + + DEFAULT_RESPONSE_SHOCKING_SEEN_NICE_CAR + EVENT_SHOCKING_SEEN_NICE_CAR + + + RESPONSE_TASK_SHOCKING_NICE_CAR + + + + + + + ValidOnFoot + + + + + DEFAULT_RESPONSE_SHOCKING_SEEN_VEHICLE_TOWED + EVENT_SHOCKING_SEEN_VEHICLE_TOWED + + + RESPONSE_TASK_LEAVE_CAR_AND_FLEE + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + EVENT_SHOCKING_SEEN_WEAPON_THREAT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + RESPONSE_TASK_THREAT + + + + + + + + + + RESPONSE_TASK_SHOCKING_EVENT_STOP_AND_STARE + + + + + + + ValidOnlyForDrivers ValidForTargetOutsideVehicle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnlyForDrivers ValidForTargetOutsideVehicle + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnlyForPassengersWithNoDriver + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnlyForPassengersWithDriver ValidForTargetInsideVehicle + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnlyForPassengersWithDriver ValidForTargetOutsideVehicle + + + + + DEFAULT_RESPONSE_SHOCKING_SEEN_WEIRD_PED + EVENT_SHOCKING_SEEN_WEIRD_PED + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_SEEN_INSULT + EVENT_SHOCKING_SEEN_INSULT + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + DEFAULT_RESPONSE_SHOCKING_VISIBLE_WEAPON + EVENT_SHOCKING_VISIBLE_WEAPON + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot + + + + + GANG_RESPONSE_SHOCKING_VISIBLE_WEAPON + EVENT_SHOCKING_VISIBLE_WEAPON + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot + + + + + GANG_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + EVENT_SHOCKING_SEEN_WEAPON_THREAT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot + + + RESPONSE_TASK_HEAD_TRACK + + + + + + + ValidOnFoot ValidOnBicycle + + + + + FAMILY_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + EVENT_SHOCKING_SEEN_WEAPON_THREAT + + + RESPONSE_TASK_AGITATED + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + DEFAULT_RESPONSE_AGITATED + EVENT_AGITATED + + + RESPONSE_TASK_AGITATED + + + + + ValidOnFoot ValidOnBicycle + + + + + + + DEFAULT_RESPONSE_REQUEST_HELP_WITH_CONFRONTATION + EVENT_REQUEST_HELP_WITH_CONFRONTATION + + + RESPONSE_TASK_AGITATED + + + + + ValidOnFoot ValidOnBicycle + + + + + + + DEFAULT_RESPONSE_SHOCKING_POTENTIAL_BLAST + EVENT_SHOCKING_POTENTIAL_BLAST + + + RESPONSE_TASK_SHOCKING_EVENT_THREAT_RESPONSE + + + + + + + ValidOnFoot + + + RESPONSE_TASK_THREAT + + + + + + + + + + + + DEFAULT_RESPONSE_PLAYER_DEATH + EVENT_PLAYER_DEATH + + + RESPONSE_TASK_PLAYER_DEATH + + + + + ValidOnFoot ValidOnBicycle + + + + + + + CAT_RESPONSE_ENCROACHMENT + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot InvalidIfSourceIsAnAnimal + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnFoot ValidOnlyIfSourceIsAnAnimal + + + + + GULL_RESPONSE_SHOT_FIRED_WHIZZED_BY + EVENT_SHOT_FIRED_WHIZZED_BY + + + RESPONSE_TASK_FLY_AWAY + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + GULL_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EVENT_SHOT_FIRED_BULLET_IMPACT + + + RESPONSE_TASK_FLY_AWAY + + + + + + + ValidOnFoot NotValidInComplexScenario + + + + + FISH_RESPONSE_EXPLOSION + EVENT_EXPLOSION + + + RESPONSE_TASK_SCENARIO_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + DisableCover + + + + + FISH_RESPONSE_GUNSHOT + EVENT_SHOT_FIRED + + + RESPONSE_TASK_SCENARIO_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + DisableCover + + + + + FISH_RESPONSE_SHOCKING_EXPLOSION + EVENT_SHOCKING_EXPLOSION + + + RESPONSE_TASK_SCENARIO_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + DisableCover + + + + + RABBIT_RESPONSE_FLEE + EVENT_ENCROACHING_PED + + + RESPONSE_TASK_SCENARIO_FLEE + + + + + + + ValidOnFoot NotValidInComplexScenario + DisableCover + + + + + FAMILY_RESPONSE_SHOCKING_PED_SHOT + EVENT_SHOCKING_PED_SHOT + + + RESPONSE_TASK_THREAT + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom ValidOnlyIfFriendlyWithTarget + + + RESPONSE_TASK_SHOCKING_EVENT_HURRY_AWAY + + + + + + + ValidOnFoot ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom InvalidIfFriendlyWithTarget + + + RESPONSE_TASK_FLEE + + + + + + + ValidOnlyIfSourceIsPlayer ValidOnlyIfRandom + + + + + + + PLAYER + + + + + COP + BASE + + COP_RESPONSE_WANTED + DEFAULT_RESPONSE_SHOCKING_EXPLOSION + COP_RESPONSE_STUDIO_BOMB + COP_RESPONSE_SHOCKING_INJURED_PED + COP_RESPONSE_SHOCKING_PED_RUN_OVER + COP_RESPONSE_SHOCKING_DEAD_BODY + COP_RESPONSE_CRIME_CRY_FOR_HELP + COP_RESPONSE_SEEN_PED_KILLED + COP_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + DEFAULT_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + INVESTIGATE_RESPONSE_MUGGING + DEFAULT_RESPONSE_SHOCKING_SIREN + COP_RESPONSE_CAR_CRASH + COP_RESPONSE_SHOCKING_CAR_ALARM + AGITATED_RESPONSE_SHOCKING_PED_KNOCKED_INTO + COP_RESPONSE_PROPERTY_DAMAGE + + + + FIREMAN + + + DEFAULT_RESPONSE_DAMAGE + FIREMAN_RESPONSE_SHOT_FIRED + FIREMAN_RESPONSE_SHOT_FIRED_WHIZZED_BY + FIREMAN_RESPONSE_SHOT_FIRED_BULLET_IMPACT + DEFAULT_RESPONSE_GUN_AIMED_AT + DEFAULT_RESPONSE_HATE + DEFAULT_RESPONSE_VEHICLE_ON_FIRE + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_FIRE + DEFAULT_RESPONSE_MELEE + DEFAULT_RESPONSE_EVENT_DRAGGED_OUT_CAR + DEFAULT_RESPONSE_EVENT_PED_ENTERED_MY_VEHICLE + DEFAULT_RESPONSE_POTENTIAL_GET_RUN_OVER + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_VEHICLE + DEFAULT_RESPONSE_OBJECT_COLLISION + DEFAULT_RESPONSE_AGITATED + DEFAULT_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + DEFAULT_RESPONSE_SHOCKING_PED_KILLED + DEFAULT_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + DEFAULT_RESPONSE_MUGGING + DEFAULT_RESPONSE_SHOCKING_SIREN + DEFAULT_RESPONSE_SHOCKING_CAR_ALARM + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + DEFAULT_RESPONSE_VEHICLE_DAMAGE_WEAPON + FIRE_RESPONSE_SHOCKING_SEEN_CAR_STOLEN + + + + MEDIC + + + DEFAULT_RESPONSE_DAMAGE + MEDIC_RESPONSE_SHOT_FIRED + MEDIC_RESPONSE_SHOT_FIRED_WHIZZED_BY + MEDIC_RESPONSE_SHOT_FIRED_BULLET_IMPACT + DEFAULT_RESPONSE_GUN_AIMED_AT + DEFAULT_RESPONSE_HATE + DEFAULT_RESPONSE_VEHICLE_ON_FIRE + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_FIRE + DEFAULT_RESPONSE_MELEE + DEFAULT_RESPONSE_EVENT_DRAGGED_OUT_CAR + DEFAULT_RESPONSE_EVENT_PED_ENTERED_MY_VEHICLE + DEFAULT_RESPONSE_POTENTIAL_GET_RUN_OVER + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_VEHICLE + DEFAULT_RESPONSE_OBJECT_COLLISION + DEFAULT_RESPONSE_AGITATED + DEFAULT_RESPONSE_SHOCKING_PED_KILLED + MEDIC_RESPONSE_INJURED_PED + DEFAULT_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + DEFAULT_RESPONSE_MUGGING + DEFAULT_RESPONSE_SHOCKING_SIREN + DEFAULT_RESPONSE_SHOCKING_CAR_ALARM + MEDIC_RESPONSE_SHOCKING_SEEN_CAR_STOLEN + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + DEFAULT_RESPONSE_VEHICLE_DAMAGE_WEAPON + + + + OFFDUTY_EMT + DEFAULT + + FIREMAN_RESPONSE_SHOT_FIRED + FIREMAN_RESPONSE_SHOT_FIRED_WHIZZED_BY + FIREMAN_RESPONSE_SHOT_FIRED_BULLET_IMPACT + OFFDUTY_EMT_RESPONSE_DEAD_BODY + + + + Security + BASE + + SECURITY_RESPONSE_WANTED + SECURITY_RESPONSE_EXPLOSION + DEFAULT_RESPONSE_SHOCKING_EXPLOSION + SECURITY_RESPONSE_STUDIO_BOMB + SECURITY_RESPONSE_SHOCKING_INJURED_PED + SECURITY_RESPONSE_SHOCKING_PED_RUN_OVER + SECURITY_RESPONSE_SHOCKING_DEAD_BODY + SECURITY_RESPONSE_CRIME_CRY_FOR_HELP + SECURITY_RESPONSE_SHOCKING_CAR_CRASH + SECURITY_RESPONSE_SHOCKING_BICYCLE_CRASH + SECURITY_RESPONSE_SHOCKING_MAD_DRIVER + SECURITY_RESPONSE_SHOCKING_MAD_DRIVER_EXTREME + SECURITY_RESPONSE_SHOCKING_MAD_DRIVER_BICYCLE + SECURITY_RESPONSE_SHOCKING_PED_KILLED + SECURITY_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + DEFAULT_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + INVESTIGATE_RESPONSE_MUGGING + DEFAULT_RESPONSE_SHOCKING_SIREN + DEFAULT_RESPONSE_SHOCKING_CAR_ALARM + AGITATED_RESPONSE_SHOCKING_PED_KNOCKED_INTO + COP_RESPONSE_PROPERTY_DAMAGE + + + + SWAT + + + SWAT_RESPONSE_WANTED + SWAT_RESPONSE_DAMAGE + SWAT_RESPONSE_SHOT_FIRED + SWAT_RESPONSE_SHOT_FIRED_WHIZZED_BY + SWAT_RESPONSE_SHOT_FIRED_BULLET_IMPACT + SWAT_RESPONSE_GUN_AIMED_AT + DEFAULT_RESPONSE_VEHICLE_ON_FIRE + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_FIRE + SWAT_RESPONSE_SHOUT_TARGET_POSITION + SWAT_RESPONSE_MELEE + SWAT_RESPONSE_VEHICLE_DAMAGE_WEAPON + SWAT_RESPONSE_DRAGGED_OUT_CAR + SWAT_RESPONSE_PED_ENTERED_MY_VEHICLE + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_VEHICLE + DEFAULT_RESPONSE_OBJECT_COLLISION + COP_RESPONSE_CRIME_CRY_FOR_HELP + COP_RESPONSE_SEEN_PED_KILLED + DEFAULT_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + INVESTIGATE_RESPONSE_MUGGING + DEFAULT_RESPONSE_SHOCKING_SIREN + DEFAULT_RESPONSE_SHOCKING_CAR_ALARM + AGITATED_RESPONSE_SHOCKING_PED_KNOCKED_INTO + DEFAULT_RESPONSE_HATE + COP_RESPONSE_PROPERTY_DAMAGE + + + + EMPTY + + + + + BASE + + + DEFAULT_RESPONSE_DAMAGE + DEFAULT_RESPONSE_EXPLOSION + DEFAULT_RESPONSE_SHOT_FIRED + DEFAULT_RESPONSE_SHOT_FIRED_WHIZZED_BY + DEFAULT_RESPONSE_SHOT_FIRED_BULLET_IMPACT + DEFAULT_RESPONSE_GUN_AIMED_AT + DEFAULT_RESPONSE_HATE + DEFAULT_RESPONSE_WANTED + DEFAULT_RESPONSE_VEHICLE_ON_FIRE + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_FIRE + DEFAULT_RESPONSE_SHOUT_TARGET_POSITION + DEFAULT_RESPONSE_INJURED_CRY_FOR_HELP + DEFAULT_RESPONSE_MELEE + DEFAULT_RESPONSE_VEHICLE_DAMAGE_WEAPON + DEFAULT_RESPONSE_EVENT_DRAGGED_OUT_CAR + DEFAULT_RESPONSE_EVENT_PED_ENTERED_MY_VEHICLE + DEFAULT_RESPONSE_POTENTIAL_GET_RUN_OVER + DEFAULT_RESPONSE_POTENTIAL_WALK_INTO_VEHICLE + DEFAULT_RESPONSE_OBJECT_COLLISION + DEFAULT_RESPONSE_AGITATED + DEFAULT_RESPONSE_REQUEST_HELP_WITH_CONFRONTATION + FRIENDLY_RESPONSE_GUN_AIMED_AT + FRIENDLY_RESPONSE_TASK_NEAR_MISS + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + DEFAULT_RESPONSE_SHOCKING_SIREN + DEFAULT_RESPONSE_SHOCKING_POTENTIAL_BLAST + DEFAULT_RESPONSE_PLAYER_DEATH + COMBAT_RESPONSE_FOOT_STEP_HEARD + + + + DEFAULT + BASE + + DEFAULT_RESPONSE_SHOCKING_ENGINE_REVVED + DEFAULT_RESPONSE_SHOCKING_EXPLOSION + DEFAULT_RESPONSE_SHOCKING_GUN_FIGHT + DEFAULT_RESPONSE_SHOCKING_PED_SHOT + DEFAULT_RESPONSE_SHOCKING_GUNSHOT_FIRED + DEFAULT_RESPONSE_SHOCKING_FIRE + DEFAULT_RESPONSE_SHOCKING_CAR_CHASE + DEFAULT_RESPONSE_SHOCKING_CAR_PILE_UP + DEFAULT_RESPONSE_SHOCKING_CAR_CRASH + DEFAULT_RESPONSE_SHOCKING_BICYCLE_CRASH + DEFAULT_RESPONSE_SHOCKING_CAR_ON_CAR + DEFAULT_RESPONSE_SHOCKING_MAD_DRIVER + DEFAULT_RESPONSE_SHOCKING_MAD_DRIVER_EXTREME + DEFAULT_RESPONSE_SHOCKING_MAD_DRIVER_BICYCLE + DEFAULT_RESPONSE_SHOCKING_DRIVING_ON_PAVEMENT + DEFAULT_RESPONSE_SHOCKING_BICYCLE_ON_PAVEMENT + DEFAULT_RESPONSE_SHOCKING_INJURED_PED + DEFAULT_RESPONSE_SHOCKING_PED_RUN_OVER + DEFAULT_RESPONSE_SHOCKING_SEEN_GANG_FIGHT + DEFAULT_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + DEFAULT_RESPONSE_SHOCKING_SEEN_CONFRONTATION + DEFAULT_RESPONSE_SHOCKING_SEEN_INSULT + DEFAULT_RESPONSE_SHOCKING_SEEN_NICE_CAR + DEFAULT_RESPONSE_SHOCKING_SEEN_VEHICLE_TOWED + DEFAULT_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + DEFAULT_RESPONSE_SHOCKING_SEEN_WEIRD_PED + DEFAULT_RESPONSE_SHOCKING_HELICOPTER_OVERHEAD + DEFAULT_RESPONSE_SHOCKING_PARACHUTER_OVERHEAD + DEFAULT_RESPONSE_SHOCKING_SEEN_CAR_STOLEN + DEFAULT_RESPONSE_SHOCKING_DEAD_BODY + DEFAULT_RESPONSE_SHOCKING_PED_KILLED + DEFAULT_RESPONSE_SHOCKING_PLANE_FLY_BY + DEFAULT_RESPONSE_SHOCKING_HORN_SOUNDED + DEFAULT_RESPONSE_SHOCKING_VISIBLE_WEAPON + DEFAULT_RESPONSE_SHOCKING_RUNNING_PED + DEFAULT_RESPONSE_SHOCKING_RUNNING_STAMPEDE + DEFAULT_RESPONSE_STUDIO_BOMB + DEFAULT_RESPONSE_CRIME_CRY_FOR_HELP + DEFAULT_RESPONSE_MUGGING + DEFAULT_RESPONSE_SHOCKING_NON_VIOLENT_WEAPON_AIMED_AT + DEFAULT_RESPONSE_SHOCKING_SIREN + DEFAULT_RESPONSE_SHOCKING_IN_DANGEROUS_VEHICLE + DEFAULT_RESPONSE_SHOCKING_CAR_ALARM + DEFAULT_RESPONSE_SHOCKING_PED_KNOCKED_INTO + DEFAULT_RESPONSE_PROPERTY_DAMAGE + + + + GANG + BASE + + GANG_RESPONSE_SHOT_FIRED + GANG_RESPONSE_SHOT_FIRED_WHIZZED_BY + GANG_RESPONSE_GUN_AIMED_AT + GANG_RESPONSE_SHOCKING_GUN_FIGHT + GANG_RESPONSE_SHOCKING_GUNSHOT_FIRED + DEFAULT_RESPONSE_SHOCKING_EXPLOSION + GANG_RESPONSE_SHOCKING_PED_SHOT + DEFAULT_RESPONSE_SHOCKING_FIRE + DEFAULT_RESPONSE_SHOCKING_CAR_CHASE + GANG_RESPONSE_SHOCKING_CAR_PILE_UP + GANG_RESPONSE_SHOCKING_CAR_CRASH + GANG_RESPONSE_SHOCKING_BICYCLE_CRASH + DEFAULT_RESPONSE_SHOCKING_CAR_ON_CAR + DEFAULT_RESPONSE_SHOCKING_MAD_DRIVER + DEFAULT_RESPONSE_SHOCKING_MAD_DRIVER_EXTREME + DEFAULT_RESPONSE_SHOCKING_MAD_DRIVER_BICYCLE + GANG_RESPONSE_SHOCKING_DRIVING_ON_PAVEMENT + GANG_RESPONSE_SHOCKING_BICYCLE_ON_PAVEMENT + GANG_RESPONSE_SHOCKING_INJURED_PED + GANG_RESPONSE_SHOCKING_PED_RUN_OVER + GANG_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + GANG_RESPONSE_SHOCKING_SEEN_CONFRONTATION + DEFAULT_RESPONSE_SHOCKING_SEEN_INSULT + DEFAULT_RESPONSE_SHOCKING_SEEN_NICE_CAR + DEFAULT_RESPONSE_SHOCKING_SEEN_VEHICLE_TOWED + GANG_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + GANG_RESPONSE_SHOCKING_HELICOPTER_OVERHEAD + DEFAULT_RESPONSE_SHOCKING_PARACHUTER_OVERHEAD + GANG_RESPONSE_SHOCKING_SEEN_CAR_STOLEN + GANG_RESPONSE_SHOCKING_DEAD_BODY + GANG_RESPONSE_SHOCKING_PLANE_FLY_BY + DEFAULT_RESPONSE_SHOCKING_HORN_SOUNDED + GANG_RESPONSE_SHOCKING_VISIBLE_WEAPON + DEFAULT_RESPONSE_SHOCKING_RUNNING_PED + DEFAULT_RESPONSE_SHOCKING_RUNNING_STAMPEDE + GANG_RESPONSE_CRIME_CRY_FOR_HELP + GANG_RESPONSE_SHOCKING_PED_KILLED + TURN_TO_FACE_RESPONSE_MUGGING + TURN_TO_FACE_RESPONSE_SHOCKING_NON_VIOLENT_WEAPON_AIMED_AT + DEFAULT_RESPONSE_SHOCKING_SIREN + DEFAULT_RESPONSE_SHOCKING_CAR_ALARM + DEFAULT_RESPONSE_SHOCKING_PED_KNOCKED_INTO + GANG_RESPONSE_PROPERTY_DAMAGE + + + + FAMILY + GANG + + FAMILY_RESPONSE_DAMAGE + FAMILY_RESPONSE_EXPLOSION + FAMILY_RESPONSE_FRIENDLY_AIMED_AT + FAMILY_RESPONSE_FRIENDLY_FIRE_NEAR_MISS + FAMILY_RESPONSE_MELEE_ACTION + FAMILY_RESPONSE_SHOCKING_DEAD_BODY + FAMILY_RESPONSE_SHOCKING_EXPLOSION + FAMILY_RESPONSE_SHOCKING_INJURED_PED + FAMILY_RESPONSE_SHOCKING_SEEN_MELEE_ACTION + FAMILY_RESPONSE_SHOCKING_SEEN_PED_KILLED + FAMILY_RESPONSE_SHOCKING_SEEN_WEAPON_THREAT + FAMILY_RESPONSE_SHOCKING_PED_SHOT + FAMILY_RESPONSE_SHOT_FIRED + FAMILY_RESPONSE_VEHICLE_DAMAGE_WEAPON + + + + GULL + + + GULL_RESPONSE_FLEE + GULL_RESPONSE_EXPLOSION + GULL_RESPONSE_GUNSHOT + GULL_RESPONSE_SHOT_FIRED_WHIZZED_BY + GULL_RESPONSE_SHOT_FIRED_BULLET_IMPACT + + + + HEN + + + FLEE_RESPONSE_DAMAGE + FLEE_RESPONSE_EXPLOSION + FLEE_RESPONSE_SHOT_FIRED + FLEE_RESPONSE_SHOT_FIRED_WHIZZED_BY + FLEE_RESPONSE_SHOT_FIRED_BULLET_IMPACT + HEN_RESPONSE_FLEE + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + + + + RAT + + + RAT_RESPONSE_FLEE + + + + FISH + + + FISH_RESPONSE_FLEE + FISH_RESPONSE_EXPLOSION + FISH_RESPONSE_GUNSHOT + FISH_RESPONSE_SHOCKING_EXPLOSION + + + + Shark + + SHARK_ATTACK_ENCROACHING + SHARK_ATTACK_HATE + + + + HORSE + + + HORSE_FLEE_RESPONSE_DAMAGE + HORSE_FLEE_RESPONSE_EXPLOSION + HORSE_FLEE_RESPONSE_SHOT_FIRED + HORSE_FLEE_RESPONSE_SHOT_FIRED_WHIZZED_BY + HORSE_FLEE_RESPONSE_SHOT_FIRED_BULLET_IMPACT + HORSE_FLEE_RESPONSE_SHOCKING_MELEE_ACTION + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + + + + DomesticAnimal + + + EXHAUSTED_FLEE_RESPONSE_DAMAGE + EXHAUSTED_FLEE_RESPONSE_EXPLOSION + EXHAUSTED_FLEE_RESPONSE_SHOT_FIRED + EXHAUSTED_FLEE_RESPONSE_SHOT_FIRED_WHIZZED_BY + EXHAUSTED_FLEE_RESPONSE_SHOT_FIRED_BULLET_IMPACT + EXHAUSTED_FLEE_RESPONSE_SHOCKING_MELEE_ACTION + EXHAUSTED_FLEE_RESPONSE_HORN + EXHAUSTED_FLEE_RESPONSE_CAR_CRASH + EXHAUSTED_FLEE_RESPONSE_SEEN_PED_RUN_OVER + EXHAUSTED_FLEE_RESPONSE_INJURED_PED + EXHAUSTED_FLEE_RESPONSE_SHOCKING_EXPLOSION + EXHAUSTED_FLEE_RESPONSE_HELICOPTER + EXHAUSTED_FLEE_RESPONSE_PLANE + WALK_AWAY_RESPONSE_ENCROACHMENT + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + + + + DOG + + + DEFAULT_RESPONSE_DAMAGE + FLEE_RESPONSE_EXPLOSION + DEFAULT_RESPONSE_SHOT_FIRED + DEFAULT_RESPONSE_SHOT_FIRED_WHIZZED_BY + DEFAULT_RESPONSE_SHOT_FIRED_BULLET_IMPACT + DEFAULT_RESPONSE_HATE + DEFAULT_RESPONSE_AGITATED + DEFAULT_RESPONSE_SHOUT_TARGET_POSITION + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + DOG_RESPONSE_CAR_CRASH + DOG_RESPONSE_INJURED_PED + DOG_RESPONSE_SEEN_PED_KILLED + + + + WildAnimal + + + FLEE_RESPONSE_DAMAGE + FLEE_RESPONSE_CAR_CRASH + FLEE_RESPONSE_EXPLOSION + FLEE_RESPONSE_SHOT_FIRED + FLEE_RESPONSE_SHOT_FIRED_WHIZZED_BY + FLEE_RESPONSE_SHOT_FIRED_BULLET_IMPACT + FLEE_RESPONSE_FOOT_STEP_HEARD + FLEE_RESPONSE_ENCROACHMENT + FLEE_RESPONSE_HORN + FLEE_RESPONSE_SHOCKING_MELEE_ACTION + FLEE_RESPONSE_SEEN_PED_RUN_OVER + FLEE_RESPONSE_INJURED_PED + FLEE_RESPONSE_SHOCKING_EXPLOSION + FLEE_RESPONSE_HELICOPTER + FLEE_RESPONSE_PLANE + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + + + + Cougar + + + DEFAULT_RESPONSE_DAMAGE + FLEE_RESPONSE_EXPLOSION + FLEE_RESPONSE_SHOT_FIRED + FLEE_RESPONSE_SHOT_FIRED_WHIZZED_BY + FLEE_RESPONSE_SHOT_FIRED_BULLET_IMPACT + COMBAT_RESPONSE_FOOT_STEP_HEARD + COMBAT_RESPONSE_ENCROACHMENT + FLEE_RESPONSE_HORN + FLEE_RESPONSE_CAR_CRASH + FLEE_RESPONSE_SHOCKING_EXPLOSION + FLEE_RESPONSE_HELICOPTER + FLEE_RESPONSE_PLANE + DEFAULT_RESPONSE_HATE + + + + SmallAnimal + + + FLEE_RESPONSE_DAMAGE + FLEE_RESPONSE_CAR_CRASH + FLEE_RESPONSE_EXPLOSION + FLEE_RESPONSE_SHOT_FIRED + FLEE_RESPONSE_SHOT_FIRED_WHIZZED_BY + FLEE_RESPONSE_SHOT_FIRED_BULLET_IMPACT + FLEE_RESPONSE_HORN + FLEE_RESPONSE_SHOCKING_MELEE_ACTION + FLEE_RESPONSE_SHOCKING_EXPLOSION + FLEE_RESPONSE_HELICOPTER + FLEE_RESPONSE_PLANE + DEFAULT_RESPONSE_SHOCKING_DANGEROUS_ANIMAL + + + + Cat + SmallAnimal + + CAT_RESPONSE_ENCROACHMENT + + + + Rabbit + SmallAnimal + + FLEE_RESPONSE_FOOT_STEP_HEARD + RABBIT_RESPONSE_FLEE + + + + diff --git a/resources/[core]/ui-base/fxmanifest.lua b/resources/[core]/ui-base/fxmanifest.lua new file mode 100644 index 0000000..49407e3 --- /dev/null +++ b/resources/[core]/ui-base/fxmanifest.lua @@ -0,0 +1,32 @@ +fx_version 'cerulean' +game 'gta5' +lua54 'yes' +use_experimental_fxv2_oal 'yes' +author 'Kakarot' +description 'Various small code snippets compiled into one resource for ease of use' +version '1.4.0' + +shared_scripts { + '@qb-core/shared/locale.lua', + 'locales/en.lua', + 'locales/*.lua', + 'config.lua' +} +server_script 'server/*.lua' +client_scripts { + '@PolyZone/client.lua', + '@PolyZone/BoxZone.lua', + '@PolyZone/ComboZone.lua', + 'client/*.lua' +} + +data_file 'FIVEM_LOVES_YOU_4B38E96CC036038F' 'events.meta' +data_file 'FIVEM_LOVES_YOU_341B23A2F0E0F131' 'popgroups.ymt' + +files { + 'events.meta', + 'popgroups.ymt', + 'relationships.dat' +} + +provides { "qb-smallresources" } \ No newline at end of file diff --git a/resources/[core]/ui-base/locales/de.lua b/resources/[core]/ui-base/locales/de.lua new file mode 100644 index 0000000..eeeda5d --- /dev/null +++ b/resources/[core]/ui-base/locales/de.lua @@ -0,0 +1,71 @@ +local Translations = { + afk = { + will_kick = 'Du bist AFK und wirst in ', + time_seconds = ' Sekunden gekickt!', + time_minutes = ' Minute(n) gekickt!', + kick_message = 'Du wurdest gekickt, weil du AFK warst' + }, + wash = { + in_progress = "Fahrzeug wird gewaschen...", + wash_vehicle = "[E] Fahrzeug waschen", + wash_vehicle_target = "Fahrzeug waschen", + dirty = "Das Fahrzeug ist nicht schmutzig", + cancel = "Waschen abgebrochen..." + }, + consumables = { + eat_progress = "Essen...", + drink_progress = "Trinken...", + liqour_progress = "Alkohol trinken...", + coke_progress = "Kurzer Zug...", + crack_progress = "Crack rauchen...", + ecstasy_progress = "Pillen einwerfen", + healing_progress = "Heilen", + meth_progress = "Crystal Meth rauchen", + joint_progress = "Joint anzünden...", + use_parachute_progress = "Fallschirm anlegen...", + pack_parachute_progress = "Fallschirm packen...", + no_parachute = "Du hast keinen Fallschirm!", + armor_full = "Du hast bereits genug Rüstung an!", + armor_empty = "Du trägst keine Weste...", + armor_progress = "Schutzweste anlegen...", + heavy_armor_progress = "Schwere Schutzweste anlegen...", + remove_armor_progress = "Schutzweste abnehmen...", + canceled = "Abgebrochen..." + }, + cruise = { + unavailable = "Tempomat nicht verfügbar", + activated = "Tempomat aktiviert", + deactivated = "Tempomat deaktiviert" + }, + editor = { + started = "Aufnahme gestartet!", + save = "Aufnahme gespeichert!", + delete = "Aufnahme gelöscht!", + editor = "Bis später, Alligator!" + }, + firework = { + place_progress = "Feuerwerk platzieren...", + canceled = "Abgebrochen...", + time_left = "Feuerwerk startet in ~r~" + }, + seatbelt = { + use_harness_progress = "Renngurt anlegen", + remove_harness_progress = "Renngurt entfernen", + no_car = "Du bist nicht in einem Auto." + }, + teleport = { + teleport_default = 'Aufzug benutzen' + }, + pushcar = { + stop_push = "[E] Schieben beenden" + } +} + +if GetConvar('qb_locale', 'en') == 'de' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end + diff --git a/resources/[core]/ui-base/locales/en.lua b/resources/[core]/ui-base/locales/en.lua new file mode 100644 index 0000000..b35d9b9 --- /dev/null +++ b/resources/[core]/ui-base/locales/en.lua @@ -0,0 +1,67 @@ +local Translations = { + afk = { + will_kick = 'You are AFK and will be kicked in ', + time_seconds = ' seconds!', + time_minutes = ' minute(s)!', + kick_message = 'You were kicked for being AFK' + }, + wash = { + in_progress = "Vehicle is being washed...", + wash_vehicle = "[E] Wash Vehicle", + wash_vehicle_target = "Wash Vehicle", + dirty = "The vehicle isn't dirty", + cancel = "Washing canceled..." + }, + consumables = { + eat_progress = "Eating...", + drink_progress = "Drinking...", + liqour_progress = "Drinking liquor...", + coke_progress = "Quick sniff...", + crack_progress = "Smoking crack...", + ecstasy_progress = "Pops Pills", + healing_progress = "Healing", + meth_progress = "Smoking Ass Meth", + joint_progress = "Lighting joint...", + use_parachute_progress = "Putting on parachute...", + pack_parachute_progress = "Packing parachute...", + no_parachute = "You dont have a parachute!", + armor_full = "You already have enough armor on!", + armor_empty = "You're not wearing a vest...", + armor_progress = "Putting on the body armour...", + heavy_armor_progress = "Putting on body armour...", + remove_armor_progress = "Removing the body armour...", + canceled = "Canceled..." + }, + cruise = { + unavailable = "Cruise control unavailable", + activated = "Cruise control activated", + deactivated = "Cruise control deactivated" + }, + editor = { + started = "Started Recording!", + save = "Saved Recording!", + delete = "Deleted Recording!", + editor = "Later aligator!" + }, + firework = { + place_progress = "Placing firework...", + canceled = "Canceled...", + time_left = "Firework launch in ~r~" + }, + seatbelt = { + use_harness_progress = "Attaching Race Harness", + remove_harness_progress = "Removing Race Harness", + no_car = "You're not in a car." + }, + teleport = { + teleport_default = 'Use Elevator' + }, + pushcar = { + stop_push = "[E] Stop Pushing" + } +} + +Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true +}) \ No newline at end of file diff --git a/resources/[core]/ui-base/locales/es.lua b/resources/[core]/ui-base/locales/es.lua new file mode 100644 index 0000000..a9b6d0c --- /dev/null +++ b/resources/[core]/ui-base/locales/es.lua @@ -0,0 +1,70 @@ +local Translations = { + afk = { + will_kick = 'Estás AFK y serás expulsado en ', + time_seconds = ' segundos!', + time_minutes = ' minuto(s)!', + kick_message = 'Fuiste expulsado por estar AFK' + }, + wash = { + in_progress = "Vehículo en proceso de lavado...", + wash_vehicle = "[E] Lavar vehículo", + wash_vehicle_target = "Lavar vehículo", + dirty = "El vehículo no está sucio", + cancel = "Lavado cancelado..." + }, + consumables = { + eat_progress = "Comiendo...", + drink_progress = "Bebiendo...", + liqour_progress = "Bebiendo licor...", + coke_progress = "Esnifando rápidamente...", + crack_progress = "Fumando crack...", + ecstasy_progress = "Tomando pastillas", + healing_progress = "Curando", + meth_progress = "Fumando metanfetamina...", + joint_progress = "Encendiendo porro...", + use_parachute_progress = "Poniéndose el paracaídas...", + pack_parachute_progress = "Empacando el paracaídas...", + no_parachute = "¡No tienes un paracaídas!", + armor_full = "¡Ya tienes suficiente chaleco!", + armor_empty = "No llevas un chaleco...", + armor_progress = "Poniéndose la chaleco...", + heavy_armor_progress = "Poniéndose la chaleco...", + remove_armor_progress = "Quitándose la chaleco...", + canceled = "Cancelado..." + }, + cruise = { + unavailable = "Control de crucero no disponible", + activated = "Control de crucero activado", + deactivated = "Control de crucero desactivado" + }, + editor = { + started = "¡Grabación iniciada!", + save = "¡Grabación guardada!", + delete = "¡Grabación eliminada!", + editor = "¡Chao pescao'!" + }, + firework = { + place_progress = "Colocando fuegos artificiales...", + canceled = "Cancelado...", + time_left = "Lanzamiento de fuegos artificiales en ~r~" + }, + seatbelt = { + use_harness_progress = "Colocando arnés de carrera", + remove_harness_progress = "Quitando arnés de carrera", + no_car = "No estás en un coche." + }, + teleport = { + teleport_default = 'Usar ascensor' + }, + pushcar = { + stop_push = "[E] Dejar de empujar" + } +} + +if GetConvar('qb_locale', 'en') == 'es' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-base/locales/nl.lua b/resources/[core]/ui-base/locales/nl.lua new file mode 100644 index 0000000..b1a9080 --- /dev/null +++ b/resources/[core]/ui-base/locales/nl.lua @@ -0,0 +1,70 @@ +local Translations = { + afk = { + will_kick = 'Je bent aFK en je zal gekickt worden in ', + time_seconds = ' seconden!', + time_minutes = ' minuten!', + kick_message = 'Je werd gekickt omdat je AFK was' + }, + wash = { + in_progress = "Je voertuig wordt schoongemaakt...", + wash_vehicle = "[E] Voertuig wassen", + wash_vehicle_target = "Was Voertuig", + dirty = "Het voertuig is niet vies", + cancel = "Wassen geannuleerd..." + }, + consumables = { + eat_progress = "Eten...", + drink_progress = "Drinken...", + liqour_progress = "Alcohol drinken...", + coke_progress = "Aan het snuiven...", + crack_progress = "Crack aan het smoken...", + ecstasy_progress = "Pillen slikken", + healing_progress = "Aan het genezen", + meth_progress = "Meth aan het roken", + joint_progress = "Joint aan het opsteken...", + use_parachute_progress = "Parachute aan het omdoen...", + pack_parachute_progress = "Parachute inpakken...", + no_parachute = "Je hebt geen parachute!", + armor_full = "Je hebt al genoeg bepansering aan!", + armor_empty = "Je draagt geen vest...", + armor_progress = "Kogelvrij vest aan het omdoen...", + heavy_armor_progress = "Kogelvrij vest aan het omdoen...", + remove_armor_progress = "Kogelvrij vest aan het afdoen...", + canceled = "Geannuleerd..." + }, + cruise = { + unavailable = "Cruisecontrol niet beschikbaar", + activated = "Cruise geactiveerd", + deactivated = "Cruise gedeactiveerd" + }, + editor = { + started = "Aan het opnemen!", + save = "Opname opgeslagen!", + delete = "Opname verwijder!", + editor = "Later!" + }, + firework = { + place_progress = "Vuurwerk aan het plaatsen...", + canceled = "Geannuleerd...", + time_left = "Vuurwerk over ~r~" + }, + seatbelt = { + use_harness_progress = "Raceharnas bevestigen", + remove_harness_progress = "Raceharnas verwijderen", + no_car = "Je zit niet in een voertuig." + }, + teleport = { + teleport_default = 'Gebruik lift' + }, + pushcar = { + stop_push = "[E] Stop met duwen" + } +} + +if GetConvar('qb_locale', 'en') == 'nl' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-base/locales/pt-br.lua b/resources/[core]/ui-base/locales/pt-br.lua new file mode 100644 index 0000000..66e49cc --- /dev/null +++ b/resources/[core]/ui-base/locales/pt-br.lua @@ -0,0 +1,70 @@ +local Translations = { + afk = { + will_kick = 'Você está AFK e será expulso em ', + time_seconds = ' segundos!', + time_minutes = ' minuto(s)!', + kick_message = 'Você foi expulso por estar AFK' + }, + wash = { + in_progress = "O veículo está sendo lavado...", + wash_vehicle = "[E] Lavar Veículo", + wash_vehicle_target = "Lavar Veículo", + dirty = "O veículo não está sujo", + cancel = "Lavagem cancelada..." + }, + consumables = { + eat_progress = "Comendo...", + drink_progress = "Bebendo...", + liqour_progress = "Bebendo licor...", + coke_progress = "Cheirando rápido...", + crack_progress = "Fumando crack...", + ecstasy_progress = "Engolindo pílulas...", + healing_progress = "Curando", + meth_progress = "Fumando Metanfetamina", + joint_progress = "Acendendo um baseado...", + use_parachute_progress = "Colocando o paraquedas...", + pack_parachute_progress = "Dobrando o paraquedas...", + no_parachute = "Você não tem um paraquedas!", + armor_full = "Você já tem armadura suficiente!", + armor_empty = "Você não está usando um colete...", + armor_progress = "Colocando a armadura...", + heavy_armor_progress = "Colocando armadura pesada...", + remove_armor_progress = "Removendo a armadura...", + canceled = "Cancelado..." + }, + cruise = { + unavailable = "Controle de cruzeiro indisponível", + activated = "Cruise Control Ativado", + deactivated = "Cruise Control Desativado" + }, + editor = { + started = "Gravação Iniciada!", + save = "Gravação Salva!", + delete = "Gravação Excluída!", + editor = "Até logo, jacaré!" + }, + firework = { + place_progress = "Soltando fogos de artifício...", + canceled = "Cancelado...", + time_left = "Fogos de artifício acabaram ~r~" + }, + seatbelt = { + use_harness_progress = "Prendendo o Cinto de Corrida", + remove_harness_progress = "Removendo o Cinto de Corrida", + no_car = "Você não está em um carro." + }, + teleport = { + teleport_default = 'Usar Elevador' + }, + pushcar = { + stop_push = "[E] Parar de Empurrar" + } +} + +if GetConvar('qb_locale', 'en') == 'pt-br' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-base/locales/pt.lua b/resources/[core]/ui-base/locales/pt.lua new file mode 100644 index 0000000..dafccf2 --- /dev/null +++ b/resources/[core]/ui-base/locales/pt.lua @@ -0,0 +1,48 @@ +local Translations = { + afk = { + will_kick = "Estás AFK e vais ser kickado em", + time_seconds = " segundos!", + time_minutes = " minutos!", + kick_message = "Foste Kickado Por Estares AFK" + }, + error = { + ["car_wash_canceled"] = "Lavagem cancelada...", + ["car_wash_notdirty"] = "O veículo não está sujo", + ["cruise_deactivated"] = "Cruise control desativado", + ["cruise_unavailable"] = "Cruise control indisponível", + ["not_in_car"] = "Não estás dentro de um carro.", + ["dont_have_enough_money"] = "Não tens dinheiro suficiente...", + ["global_canceled"] = "Cancelado..." + }, + info = { + ["cruise_activated_mp"] = "Cruise Ativado: %{speed} MP/H", + ["cruise_activated_km"] = "Cruise Ativado: %{speed} KM/H" + }, + progress = { + ["car_wash_progress"] = "O veículo está a ser lavado...", + ["placing_firework"] = "A preparar fogo de artifício...", + ["attach_race_harness"] = "A colocar Arnês de Corrida", + ["remove_race_harness"] = "A remover Arnês de Corrida" + }, + text = { + ["car_wash_text"] = "~g~E~w~ - Lavar Veículo (%{price}€)", + ["car_wash_not_available"] = "A estação de lavagem não está disponível...", + ["time_until_firework"] = "Fogo de Artifício em ~r~%{time}", + ["push_vehicle"] = "[~g~SHIFT~w~] + [~g~E~w~] para empurrar veículo" + }, + editor = { + ["record"] = "Gravação Iniciada!", + ["save"] = "Gravação Guardada!", + ["delete_clip"] = "Gravação Apagada!", + ["editor"] = "Later aligator!" + } +} + +if GetConvar('qb_locale', 'en') == 'pt' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end + diff --git a/resources/[core]/ui-base/popgroups.ymt b/resources/[core]/ui-base/popgroups.ymt new file mode 100644 index 0000000..6760669 Binary files /dev/null and b/resources/[core]/ui-base/popgroups.ymt differ diff --git a/resources/[core]/ui-base/relationships.dat b/resources/[core]/ui-base/relationships.dat new file mode 100644 index 0000000..0583d29 --- /dev/null +++ b/resources/[core]/ui-base/relationships.dat @@ -0,0 +1,132 @@ +# Acquaintance options: +# - Hate +# - Dislike +# - Like +# - Respect +PLAYER +CIVMALE +CIVFEMALE +COP +SECURITY_GUARD +PRIVATE_SECURITY +FIREMAN +GANG_1 +GANG_2 +GANG_9 +GANG_10 +AMBIENT_GANG_LOST +AMBIENT_GANG_MEXICAN +AMBIENT_GANG_FAMILY +AMBIENT_GANG_BALLAS +AMBIENT_GANG_MARABUNTE +AMBIENT_GANG_CULT +AMBIENT_GANG_SALVA +AMBIENT_GANG_WEICHENG +AMBIENT_GANG_HILLBILLY +DEALER +HATES_PLAYER +HEN +WILD_ANIMAL +SHARK +COUGAR +NO_RELATIONSHIP +SPECIAL +MISSION2 +MISSION3 +MISSION4 +MISSION5 +MISSION6 +MISSION7 +MISSION8 +ARMY +GUARD_DOG +AGGRESSIVE_INVESTIGATE +MEDIC +CAT + +# +PLAYER + Like PLAYER +CIVMALE +# Respect CIVMALE +# Respect CIVFEMALE +CIVFEMALE +# Respect CIVFEMALE +# Respect CIVMALE +COP + Respect MEDIC FIREMAN COP + Respect ARMY + Respect PLAYER + Like SECURITY_GUARD +ARMY + Like ARMY + Respect COP +SECURITY_GUARD + Like COP SECURITY_GUARD GUARD_DOG +PRIVATE_SECURITY + Like PRIVATE_SECURITY GUARD_DOG +PRISONER + Like PRISONER + Hate PLAYER +FIREMAN + Respect MEDIC FIREMAN COP + Respect PLAYER +GANG_1 + Respect GANG_1 +GANG_2 + Respect GANG_2 +GANG_9 + Respect GANG_9 +GANG_10 + Respect GANG_10 +HATES_PLAYER + Hate PLAYER + Like HATES_PLAYER AGGRESSIVE_INVESTIGATE +HEN + Dislike PLAYER +AMBIENT_GANG_LOST + Like AMBIENT_GANG_LOST GUARD_DOG +AMBIENT_GANG_MEXICAN + Respect PLAYER + Like AMBIENT_GANG_MEXICAN GUARD_DOG +AMBIENT_GANG_FAMILY + Like AMBIENT_GANG_FAMILY GUARD_DOG +AMBIENT_GANG_BALLAS + Respect PLAYER + Like AMBIENT_GANG_BALLAS GUARD_DOG +AMBIENT_GANG_MARABUNTE + Like AMBIENT_GANG_MARABUNTE GUARD_DOG +AMBIENT_GANG_CULT + Like AMBIENT_GANG_CULT GUARD_DOG +AMBIENT_GANG_SALVA + Like AMBIENT_GANG_SALVA GUARD_DOG +AMBIENT_GANG_WEICHENG + Like AMBIENT_GANG_WEICHENG GUARD_DOG +AMBIENT_GANG_HILLBILLY + Respect PLAYER + Like AMBIENT_GANG_HILLBILLY GUARD_DOG +DOMESTIC_ANIMAL + Hate PLAYER + Like CIVMALE CIVFEMALE COP SECURITY_GUARD DOMESTIC_ANIMAL FIREMAN GANG_1 GANG_2 GANG_9 GANG_10 AMBIENT_GANG_LOST AMBIENT_GANG_MEXICAN AMBIENT_GANG_BALLAS AMBIENT_GANG_FAMILY DEALER HATES_PLAYER +WILD_ANIMAL + Hate PLAYER CIVMALE CIVFEMALE COP SECURITY_GUARD FIREMAN GANG_1 GANG_2 GANG_9 GANG_10 AMBIENT_GANG_LOST AMBIENT_GANG_MEXICAN AMBIENT_GANG_BALLAS AMBIENT_GANG_FAMILY DEALER HATES_PLAYER +DEER + Hate PLAYER CIVMALE CIVFEMALE COP SECURITY_GUARD FIREMAN GANG_1 GANG_2 GANG_9 GANG_10 AMBIENT_GANG_LOST AMBIENT_GANG_MEXICAN AMBIENT_GANG_BALLAS AMBIENT_GANG_FAMILY DEALER HATES_PLAYER + Respect DEER +SHARK + Hate PLAYER +GUARD_DOG + Like GUARD_DOG CIVMALE CIVFEMALE SECURITY_GUARD AMBIENT_GANG_LOST AMBIENT_GANG_MEXICAN AMBIENT_GANG_FAMILY AMBIENT_GANG_BALLAS AMBIENT_GANG_MARABUNTE AMBIENT_GANG_CULT AMBIENT_GANG_SALVA AMBIENT_GANG_WEICHENG AMBIENT_GANG_HILLBILLY PRIVATE_SECURITY +AGGRESSIVE_INVESTIGATE + Hate PLAYER + Like HATES_PLAYER AGGRESSIVE_INVESTIGATE +MEDIC + Respect PLAYER + Like MEDIC + Respect COP ARMY SECURITY_GUARD FIREMAN +COUGAR + Hate PLAYER CIVMALE CIVFEMALE SECURITY_GUARD AMBIENT_GANG_LOST AMBIENT_GANG_MEXICAN AMBIENT_GANG_FAMILY AMBIENT_GANG_BALLAS AMBIENT_GANG_MARABUNTE AMBIENT_GANG_CULT AMBIENT_GANG_SALVA AMBIENT_GANG_WEICHENG AMBIENT_GANG_HILLBILLY PRIVATE_SECURITY COP ARMY PRISONER FIREMAN +CAT + Hate PLAYER + Like CIVMALE CIVFEMALE COP SECURITY_GUARD DOMESTIC_ANIMAL FIREMAN GANG_1 GANG_2 GANG_9 GANG_10 AMBIENT_GANG_LOST AMBIENT_GANG_MEXICAN AMBIENT_GANG_BALLAS AMBIENT_GANG_FAMILY DEALER HATES_PLAYER + diff --git a/resources/[core]/ui-base/server/afk.lua b/resources/[core]/ui-base/server/afk.lua new file mode 100644 index 0000000..2c0ae13 --- /dev/null +++ b/resources/[core]/ui-base/server/afk.lua @@ -0,0 +1,9 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +RegisterNetEvent('KickForAFK', function() + DropPlayer(source, Lang:t("afk.kick_message")) +end) + +QBCore.Functions.CreateCallback('qb-afkkick:server:GetPermissions', function(source, cb) + cb(QBCore.Functions.GetPermission(source)) +end) diff --git a/resources/[core]/ui-base/server/consumables.lua b/resources/[core]/ui-base/server/consumables.lua new file mode 100644 index 0000000..69df6db --- /dev/null +++ b/resources/[core]/ui-base/server/consumables.lua @@ -0,0 +1,293 @@ +local QBCore = exports['qb-core']:GetCoreObject() +----------- / alcohol + +for k, _ in pairs(Config.Consumables.alcohol) do + QBCore.Functions.CreateUseableItem(k, function(source, item) + TriggerClientEvent('consumables:client:DrinkAlcohol', source, item.name) + end) +end + +----------- / Eat + +for k, _ in pairs(Config.Consumables.eat) do + QBCore.Functions.CreateUseableItem(k, function(source, item) + if not exports['qb-inventory']:RemoveItem(source, item.name, 1, item.slot, 'qb-smallresources:consumables:eat') then return end + TriggerClientEvent('consumables:client:Eat', source, item.name) + end) +end + +----------- / Drink +for k, _ in pairs(Config.Consumables.drink) do + QBCore.Functions.CreateUseableItem(k, function(source, item) + if not exports['qb-inventory']:RemoveItem(source, item.name, 1, item.slot, 'qb-smallresources:consumables:drink') then return end + TriggerClientEvent('consumables:client:Drink', source, item.name) + end) +end + +----------- / Custom +for k, _ in pairs(Config.Consumables.custom) do + QBCore.Functions.CreateUseableItem(k, function(source, item) + if not exports['qb-inventory']:RemoveItem(source, item.name, 1, item.slot, 'qb-smallresources:consumables:custom') then return end + TriggerClientEvent('consumables:client:Custom', source, item.name) + end) +end + +local function createItem(name, type) + QBCore.Functions.CreateUseableItem(name, function(source, item) + if not exports['qb-inventory']:RemoveItem(source, item.name, 1, item.slot, 'qb-smallresources:consumables:createItem') then return end + TriggerClientEvent('consumables:client:' .. type, source, item.name) + end) +end +----------- / Drug + +QBCore.Functions.CreateUseableItem('joint', function(source, item) + if not exports['qb-inventory']:RemoveItem(source, item.name, 1, item.slot, 'qb-smallresources:joint') then return end + TriggerClientEvent('consumables:client:UseJoint', source) +end) + +QBCore.Functions.CreateUseableItem('cokebaggy', function(source) + TriggerClientEvent('consumables:client:Cokebaggy', source) +end) + +QBCore.Functions.CreateUseableItem('crack_baggy', function(source) + TriggerClientEvent('consumables:client:Crackbaggy', source) +end) + +QBCore.Functions.CreateUseableItem('xtcbaggy', function(source) + TriggerClientEvent('consumables:client:EcstasyBaggy', source) +end) + +QBCore.Functions.CreateUseableItem('oxy', function(source) + TriggerClientEvent('consumables:client:oxy', source) +end) + +QBCore.Functions.CreateUseableItem('meth', function(source) + TriggerClientEvent('consumables:client:meth', source) +end) + +----------- / Tools + +QBCore.Functions.CreateUseableItem('armor', function(source) + TriggerClientEvent('consumables:client:UseArmor', source) +end) + +QBCore.Functions.CreateUseableItem('heavyarmor', function(source) + TriggerClientEvent('consumables:client:UseHeavyArmor', source) +end) + +QBCore.Commands.Add('resetarmor', 'Resets Vest (Police Only)', {}, false, function(source) + local Player = QBCore.Functions.GetPlayer(source) + if Player.PlayerData.job.name == 'police' then + TriggerClientEvent('consumables:client:ResetArmor', source) + else + TriggerClientEvent('QBCore:Notify', source, 'For Police Officer Only', 'error') + end +end) + +QBCore.Functions.CreateUseableItem('binoculars', function(source) + TriggerClientEvent('binoculars:Toggle', source) +end) + +QBCore.Functions.CreateUseableItem('parachute', function(source, item) + if not exports['qb-inventory']:RemoveItem(source, item.name, 1, item.slot, 'qb-smallresources:parachute') then return end + TriggerClientEvent('consumables:client:UseParachute', source) +end) + +QBCore.Commands.Add('resetparachute', 'Resets Parachute', {}, false, function(source) + TriggerClientEvent('consumables:client:ResetParachute', source) +end) + +----------- / Firework + +for _, v in pairs(Config.Fireworks.items) do + QBCore.Functions.CreateUseableItem(v, function(source, item) + local src = source + TriggerClientEvent('fireworks:client:UseFirework', src, item.name, 'proj_indep_firework') + end) +end + +----------- / Lockpicking + +QBCore.Functions.CreateUseableItem('lockpick', function(source) + TriggerClientEvent('lockpicks:UseLockpick', source, false) +end) + +QBCore.Functions.CreateUseableItem('advancedlockpick', function(source) + TriggerClientEvent('lockpicks:UseLockpick', source, true) +end) + +-- Events for adding and removing specific items to fix some exploits + +RegisterNetEvent('consumables:server:AddParachute', function() + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + exports['qb-inventory']:AddItem(source, 'parachute', 1, false, false, 'consumables:server:AddParachute') +end) + +RegisterNetEvent('consumables:server:resetArmor', function() + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + exports['qb-inventory']:AddItem(source, 'heavyarmor', 1, false, false, 'consumables:server:resetArmor') +end) + +RegisterNetEvent('consumables:server:useHeavyArmor', function() + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + if not exports['qb-inventory']:RemoveItem(source, 'heavyarmor', 1, false, 'consumables:server:useHeavyArmor') then return end + TriggerClientEvent('qb-inventory:client:ItemBox', source, QBCore.Shared.Items['heavyarmor'], 'remove') + TriggerClientEvent('hospital:server:SetArmor', source, 100) + SetPedArmour(GetPlayerPed(source), 100) +end) + +RegisterNetEvent('consumables:server:useArmor', function() + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + if not exports['qb-inventory']:RemoveItem(source, 'armor', 1, false, 'consumables:server:useArmor') then return end + TriggerClientEvent('qb-inventory:client:ItemBox', source, QBCore.Shared.Items['armor'], 'remove') + TriggerClientEvent('hospital:server:SetArmor', source, 75) + SetPedArmour(GetPlayerPed(source), 75) +end) + +RegisterNetEvent('consumables:server:useMeth', function() + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + exports['qb-inventory']:RemoveItem(source, 'meth', 1, false, 'consumables:server:useMeth') +end) + +RegisterNetEvent('consumables:server:useOxy', function() + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + exports['qb-inventory']:RemoveItem(source, 'oxy', 1, false, 'consumables:server:useOxy') +end) + +RegisterNetEvent('consumables:server:useXTCBaggy', function() + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + exports['qb-inventory']:RemoveItem(source, 'xtcbaggy', 1, false, 'consumables:server:useXTCBaggy') +end) + +RegisterNetEvent('consumables:server:useCrackBaggy', function() + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + exports['qb-inventory']:RemoveItem(source, 'crack_baggy', 1, false, 'consumables:server:useCrackBaggy') +end) + +RegisterNetEvent('consumables:server:useCokeBaggy', function() + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + exports['qb-inventory']:RemoveItem(source, 'cokebaggy', 1, false, 'consumables:server:useCokeBaggy') +end) + +RegisterNetEvent('consumables:server:drinkAlcohol', function(item) + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + local foundItem = nil + + for k in pairs(Config.Consumables.alcohol) do + if k == item then + foundItem = k + break + end + end + + if not foundItem then return end + exports['qb-inventory']:RemoveItem(source, foundItem, 1, false, 'consumables:server:drinkAlcohol') +end) + +RegisterNetEvent('consumables:server:UseFirework', function(item) + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + local foundItem = nil + + for i = 1, #Config.Fireworks.items do + if Config.Fireworks.items[i] == item then + foundItem = Config.Fireworks.items[i] + break + end + end + + if not foundItem then return end + exports['qb-inventory']:RemoveItem(source, foundItem, 1, false, 'consumables:server:UseFirework') +end) + +RegisterNetEvent('consumables:server:addThirst', function(amount) + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + Player.Functions.SetMetaData('thirst', amount) + TriggerClientEvent('hud:client:UpdateNeeds', source, Player.PlayerData.metadata.hunger, amount) +end) + +RegisterNetEvent('consumables:server:addHunger', function(amount) + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return end + Player.Functions.SetMetaData('hunger', amount) + TriggerClientEvent('hud:client:UpdateNeeds', source, amount, Player.PlayerData.metadata.thirst) +end) + +QBCore.Functions.CreateCallback('consumables:itemdata', function(_, cb, itemName) + cb(Config.Consumables.custom[itemName]) +end) + +---Checks if item already exists in the table. If not, it creates it. +---@param drinkName string name of item +---@param replenish number amount it replenishes +---@return boolean, string +local function addDrink(drinkName, replenish) + if Config.Consumables.drink[drinkName] ~= nil then + return false, 'already added' + else + Config.Consumables.drink[drinkName] = replenish + createItem(drinkName, 'Drink') + return true, 'success' + end +end + +exports('AddDrink', addDrink) + +---Checks if item already exists in the table. If not, it creates it. +---@param foodName string name of item +---@param replenish number amount it replenishes +---@return boolean, string +local function addFood(foodName, replenish) + if Config.Consumables.eat[foodName] ~= nil then + return false, 'already added' + else + Config.Consumables.eat[foodName] = replenish + createItem(foodName, 'Eat') + return true, 'success' + end +end + +exports('AddFood', addFood) + +---Checks if item already exists in the table. If not, it creates it. +---@param alcoholName string name of item +---@param replenish number amount it replenishes +---@return boolean, string +local function addAlcohol(alcoholName, replenish) + if Config.Consumables.alcohol[alcoholName] ~= nil then + return false, 'already added' + else + Config.Consumables.alcohol[alcoholName] = replenish + createItem(alcoholName, 'DrinkAlcohol') + return true, 'success' + end +end + +exports('AddAlcohol', addAlcohol) + +---Checks if item already exists in the table. If not, it creates it. +---@param itemName string name of item +---@param data number amount it replenishes +---@return boolean, string +local function addCustom(itemName, data) + if Config.Consumables.custom[itemName] ~= nil then + return false, 'already added' + else + Config.Consumables.custom[itemName] = data + createItem(itemName, 'Custom') + return true, 'success' + end +end + +exports('AddCustom', addCustom) diff --git a/resources/[core]/ui-base/server/entities.lua b/resources/[core]/ui-base/server/entities.lua new file mode 100644 index 0000000..ed0f467 --- /dev/null +++ b/resources/[core]/ui-base/server/entities.lua @@ -0,0 +1,9 @@ +-- Blacklisting entities can just be handled entirely server side with onesync events +-- No need to run coroutines to supress or delete these when we can simply delete them before they spawn +AddEventHandler("entityCreating", function(handle) + local entityModel = GetEntityModel(handle) + + if Config.BlacklistedVehs[entityModel] or Config.BlacklistedPeds[entityModel] then + CancelEvent() + end +end) \ No newline at end of file diff --git a/resources/[core]/ui-base/server/logs.lua b/resources/[core]/ui-base/server/logs.lua new file mode 100644 index 0000000..f0a67b3 --- /dev/null +++ b/resources/[core]/ui-base/server/logs.lua @@ -0,0 +1,148 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +local Webhooks = { + ['default'] = '', + ['testwebhook'] = '', + ['playermoney'] = '', + ['playerinventory'] = '', + ['robbing'] = '', + ['cuffing'] = '', + ['drop'] = '', + ['trunk'] = '', + ['stash'] = '', + ['glovebox'] = '', + ['banking'] = '', + ['vehicleshop'] = '', + ['vehicleupgrades'] = '', + ['shops'] = '', + ['dealers'] = '', + ['storerobbery'] = '', + ['bankrobbery'] = '', + ['powerplants'] = '', + ['death'] = '', + ['joinleave'] = '', + ['ooc'] = '', + ['report'] = '', + ['me'] = '', + ['pmelding'] = '', + ['112'] = '', + ['bans'] = '', + ['anticheat'] = '', + ['weather'] = '', + ['moneysafes'] = '', + ['bennys'] = '', + ['bossmenu'] = '', + ['robbery'] = '', + ['casino'] = '', + ['traphouse'] = '', + ['911'] = '', + ['palert'] = '', + ['house'] = '', + ['qbjobs'] = '', +} + +local colors = { -- https://www.spycolor.com/ + ['default'] = 14423100, + ['blue'] = 255, + ['red'] = 16711680, + ['green'] = 65280, + ['white'] = 16777215, + ['black'] = 0, + ['orange'] = 16744192, + ['yellow'] = 16776960, + ['pink'] = 16761035, + ['lightgreen'] = 65309, +} + +local logQueue = {} + +RegisterNetEvent('qb-log:server:CreateLog', function(name, title, color, message, tagEveryone, imageUrl) + local tag = tagEveryone or false + + if Config.Logging == 'discord' then + if not Webhooks[name] then + print('Tried to call a log that isn\'t configured with the name of ' .. name) + return + end + local webHook = Webhooks[name] ~= '' and Webhooks[name] or Webhooks['default'] + local embedData = { + { + ['title'] = title, + ['color'] = colors[color] or colors['default'], + ['footer'] = { + ['text'] = os.date('%c'), + }, + ['description'] = message, + ['author'] = { + ['name'] = 'QBCore Logs', + ['icon_url'] = 'https://raw.githubusercontent.com/GhzGarage/qb-media-kit/main/Display%20Pictures/Logo%20-%20Display%20Picture%20-%20Stylized%20-%20Red.png', + }, + ['image'] = imageUrl and imageUrl ~= '' and { ['url'] = imageUrl } or nil, + } + } + + if not logQueue[name] then logQueue[name] = {} end + logQueue[name][#logQueue[name] + 1] = { webhook = webHook, data = embedData } + + if #logQueue[name] >= 10 then + local postData = { username = 'QB Logs', embeds = {} } + + if tag then + postData.content = '@everyone' + end + + for i = 1, #logQueue[name] do postData.embeds[#postData.embeds + 1] = logQueue[name][i].data[1] end + PerformHttpRequest(logQueue[name][1].webhook, function() end, 'POST', json.encode(postData), { ['Content-Type'] = 'application/json' }) + logQueue[name] = {} + end + elseif Config.Logging == 'fivemanage' then + local FiveManageAPIKey = GetConvar('FIVEMANAGE_LOGS_API_KEY', 'false') + if FiveManageAPIKey == 'false' then + print('You need to set the FiveManage API key in your server.cfg') + return + end + local extraData = { + level = tagEveryone and 'warn' or 'info', -- info, warn, error or debug + message = title, -- any string + metadata = { -- a table or object with any properties you want + description = message, + playerId = source, + playerLicense = GetPlayerIdentifierByType(source, 'license'), + playerDiscord = GetPlayerIdentifierByType(source, 'discord') + }, + resource = GetInvokingResource(), + } + PerformHttpRequest('https://api.fivemanage.com/api/logs', function(statusCode, response, headers) + -- Uncomment the following line to enable debugging + -- print(statusCode, response, json.encode(headers)) + end, 'POST', json.encode(extraData), { + ['Authorization'] = FiveManageAPIKey, + ['Content-Type'] = 'application/json', + }) + end +end) + +Citizen.CreateThread(function() + local timer = 0 + while true do + Wait(1000) + timer = timer + 1 + if timer >= 60 then -- If 60 seconds have passed, post the logs + timer = 0 + for name, queue in pairs(logQueue) do + if #queue > 0 then + local postData = { username = 'QB Logs', embeds = {} } + for i = 1, #queue do + postData.embeds[#postData.embeds + 1] = queue[i].data[1] + end + PerformHttpRequest(queue[1].webhook, function() end, 'POST', json.encode(postData), { ['Content-Type'] = 'application/json' }) + logQueue[name] = {} + end + end + end + end +end) + +QBCore.Commands.Add('testwebhook', 'Test Your Discord Webhook For Logs (God Only)', {}, false, function() + TriggerEvent('qb-log:server:CreateLog', 'testwebhook', 'Test Webhook', 'default', 'Webhook setup successfully') +end, 'god') diff --git a/resources/[core]/ui-base/server/main.lua b/resources/[core]/ui-base/server/main.lua new file mode 100644 index 0000000..ec3097c --- /dev/null +++ b/resources/[core]/ui-base/server/main.lua @@ -0,0 +1,60 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +RegisterNetEvent('tackle:server:TacklePlayer', function(playerId) + TriggerClientEvent('tackle:client:GetTackled', playerId) +end) + +QBCore.Commands.Add('id', 'Check Your ID #', {}, false, function(source) + TriggerClientEvent('QBCore:Notify', source, 'ID: ' .. source) +end) + +QBCore.Functions.CreateUseableItem('harness', function(source, item) + TriggerClientEvent('seatbelt:client:UseHarness', source, item) +end) + +RegisterNetEvent('equip:harness', function(item) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if not Player then return end + if not Player.PlayerData.items[item.slot].info.uses then + Player.PlayerData.items[item.slot].info.uses = Config.HarnessUses - 1 + Player.Functions.SetInventory(Player.PlayerData.items) + elseif Player.PlayerData.items[item.slot].info.uses == 1 then + exports['qb-inventory']:RemoveItem(src, 'harness', 1, false, 'equip:harness') + TriggerClientEvent('qb-inventory:client:ItemBox', src, QBCore.Shared.Items['harness'], 'remove') + else + Player.PlayerData.items[item.slot].info.uses -= 1 + Player.Functions.SetInventory(Player.PlayerData.items) + end +end) + +RegisterNetEvent('seatbelt:DoHarnessDamage', function(hp, data) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if not Player then return end + if hp == 0 then + exports['qb-inventory']:RemoveItem(src, 'harness', 1, data.slot, 'seatbelt:DoHarnessDamage') + else + Player.PlayerData.items[data.slot].info.uses -= 1 + Player.Functions.SetInventory(Player.PlayerData.items) + end +end) + +RegisterNetEvent('qb-carwash:server:washCar', function() + local src = source + local Player = QBCore.Functions.GetPlayer(src) + + if not Player then return end + + if Player.Functions.RemoveMoney('cash', Config.CarWash.defaultPrice, 'car-washed') then + TriggerClientEvent('qb-carwash:client:washCar', src) + elseif Player.Functions.RemoveMoney('bank', Config.CarWash.defaultPrice, 'car-washed') then + TriggerClientEvent('qb-carwash:client:washCar', src) + else + TriggerClientEvent('QBCore:Notify', src, Lang:t('error.dont_have_enough_money'), 'error') + end +end) + +QBCore.Functions.CreateCallback('smallresources:server:GetCurrentPlayers', function(_, cb) + cb(#GetPlayers()) +end) diff --git a/resources/[core]/ui-base/server/timedjobs.lua b/resources/[core]/ui-base/server/timedjobs.lua new file mode 100644 index 0000000..24b2df8 --- /dev/null +++ b/resources/[core]/ui-base/server/timedjobs.lua @@ -0,0 +1,69 @@ +-- Variables +local jobs = {} + +-- Functions +function GetTime() + local timestamp = os.time() + local day = tonumber(os.date('*t', timestamp).wday) + local hour = tonumber(os.date('%H', timestamp)) + local min = tonumber(os.date('%M', timestamp)) + + return {day = day, hour = hour, min = min} +end + +function CheckTimes(day, hour, min) + for i = 1, #jobs, 1 do + local data = jobs[i] + if data.hour == hour and data.min == min then + data.cb(day, hour, min) + end + end +end + +-- Exports + +---Creates a Timed Job +---@param hour number +---@param min number +---@param cb function +exports("CreateTimedJob", function(hour, min, cb) + if hour and type(hour) == "number" and min and type(min) == "number" and cb and (type(cb) == "function" or type(cb) == "table") then + jobs[#jobs + 1] = { + min = min, + hour = hour, + cb = cb + } + + return #jobs + else + print("WARN: Invalid arguments for export CreateTimedJob(hour, min, cb)") + return nil + end +end) + +---Force runs a Timed Job +---@param idx number +exports("ForceRunTimedJob", function(idx) + if jobs[idx] then + local time = GetTime() + jobs[idx].cb(time.day, time.hour, time.min) + end +end) + +---Stops a Timed Job +---@param idx number +exports("StopTimedJob", function(idx) + if jobs[idx] then + jobs[idx] = nil + end +end) + +-- Main Loop +CreateThread(function() + while true do + local time = GetTime() + CheckTimes(time.day, time.hour, time.min) + + Wait(60 * 1000) + end +end) diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_0.ymap new file mode 100644 index 0000000..dc103ef Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_17.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_17.ymap new file mode 100644 index 0000000..189b91a Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_17.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_3.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_3.ymap new file mode 100644 index 0000000..71d7dd1 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_3.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_6.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_6.ymap new file mode 100644 index 0000000..ed39b76 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_6.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_8.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_8.ymap new file mode 100644 index 0000000..4d977a4 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_a_strm_8.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_c_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_c_strm_0.ymap new file mode 100644 index 0000000..76b3bbb Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_01_c_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/ap1_02_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_02_strm_0.ymap new file mode 100644 index 0000000..528553b Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/ap1_02_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/ch3_04_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/ch3_04_strm_0.ymap new file mode 100644 index 0000000..c94ec22 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/ch3_04_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_0.ymap new file mode 100644 index 0000000..9c1c6a1 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_4.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_4.ymap new file mode 100644 index 0000000..e16ac63 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_4.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_5.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_5.ymap new file mode 100644 index 0000000..515816b Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_5.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_7.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_7.ymap new file mode 100644 index 0000000..5098e58 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/cs3_07_strm_7.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_01_a_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_01_a_strm_0.ymap new file mode 100644 index 0000000..413167d Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_01_a_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_01_a_strm_3.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_01_a_strm_3.ymap new file mode 100644 index 0000000..13fe1e1 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_01_a_strm_3.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_01_c_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_01_c_strm_0.ymap new file mode 100644 index 0000000..f1741e2 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_01_c_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_02_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_02_strm_0.ymap new file mode 100644 index 0000000..3996718 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ap1_02_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/hei_ch3_04_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ch3_04_strm_0.ymap new file mode 100644 index 0000000..e05b3e5 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/hei_ch3_04_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs2_06b_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs2_06b_strm_0.ymap new file mode 100644 index 0000000..5e122f3 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs2_06b_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs3_07_strm_0.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs3_07_strm_0.ymap new file mode 100644 index 0000000..e6419c5 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs3_07_strm_0.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs3_07_strm_4.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs3_07_strm_4.ymap new file mode 100644 index 0000000..b278087 Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs3_07_strm_4.ymap differ diff --git a/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs3_07_strm_5.ymap b/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs3_07_strm_5.ymap new file mode 100644 index 0000000..30b8e0a Binary files /dev/null and b/resources/[core]/ui-base/stream/car_gen_disablers/hei_cs3_07_strm_5.ymap differ diff --git a/resources/[core]/ui-moderator/LICENSE b/resources/[core]/ui-moderator/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/resources/[core]/ui-moderator/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/resources/[core]/ui-moderator/README.md b/resources/[core]/ui-moderator/README.md new file mode 100644 index 0000000..3754cec --- /dev/null +++ b/resources/[core]/ui-moderator/README.md @@ -0,0 +1,20 @@ +# qb-anticheat +Anticheat System For QB-Core + +# License + + QBCore Framework + Copyright (C) 2021 Joshua Eger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see diff --git a/resources/[core]/ui-moderator/client/main.lua b/resources/[core]/ui-moderator/client/main.lua new file mode 100644 index 0000000..e2b4e89 --- /dev/null +++ b/resources/[core]/ui-moderator/client/main.lua @@ -0,0 +1,229 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local checkUser = nil +local IsDecorating = false +local flags = 0 + +function GetPermissions() + QBCore.Functions.TriggerCallback('qb-anticheat:server:GetPermissions', function(_group) + for k,_ in pairs(_group) do + if Config.IgnoredGroups[k] then + checkUser = false + break + end + checkUser = true + end + end) +end + +AddEventHandler('onResourceStart', function(resourceName) + if resourceName == GetCurrentResourceName() and checkUser == nil then + GetPermissions() + end +end) + +RegisterNetEvent('qb-anticheat:client:ToggleDecorate', function(bool) + IsDecorating = bool +end) + +RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() + GetPermissions() +end) + +RegisterNetEvent('QBCore:Client:OnPlayerUnload', function() + checkUser = true + IsDecorating = false + flags = 0 +end) + +CreateThread(function() -- Superjump -- + while true do + Wait(500) + + local ped = PlayerPedId() + local player = PlayerId() + + if checkUser and LocalPlayer.state.isLoggedIn then + if IsPedJumping(ped) then + local firstCoord = GetEntityCoords(ped) + + while IsPedJumping(ped) do + Wait(0) + end + + local secondCoord = GetEntityCoords(ped) + local lengthBetweenCoords = #(firstCoord - secondCoord) + + if (lengthBetweenCoords > Config.SuperJumpLength) then + flags = flags + 1 + TriggerServerEvent("qb-log:server:CreateLog", "anticheat", "Cheat detected!", "orange", "** @everyone " ..GetPlayerName(player).. "** is flagged from anticheat! **(Flag "..flags.." /"..Config.FlagsForBan.." | Superjump)**") + end + end + end + end +end) + +CreateThread(function() -- Speedhack -- + while true do + Wait(500) + + local ped = PlayerPedId() + local player = PlayerId() + local speed = GetEntitySpeed(ped) + local inveh = IsPedInAnyVehicle(ped, false) + local ragdoll = IsPedRagdoll(ped) + local jumping = IsPedJumping(ped) + local falling = IsPedFalling(ped) + + if checkUser and LocalPlayer.state.isLoggedIn then + if not inveh then + if not ragdoll then + if not falling then + if not jumping then + if speed > Config.MaxSpeed then + flags = flags + 1 + TriggerServerEvent("qb-log:server:CreateLog", "anticheat", "Cheat detected!", "orange", "** @everyone " ..GetPlayerName(player).. "** is flagged from anticheat! **(Flag "..flags.." /"..Config.FlagsForBan.." | Speedhack)**") + end + end + end + end + end + end + end +end) + +CreateThread(function() -- Invisibility -- + while true do + Wait(10000) + + local ped = PlayerPedId() + local player = PlayerId() + + if checkUser and LocalPlayer.state.isLoggedIn then + if not IsDecorating then + if not IsEntityVisible(ped) then + SetEntityVisible(ped, 1, 0) + TriggerEvent('QBCore:Notify', "QB-ANTICHEAT: You were invisible and have been made visible again!") + TriggerServerEvent("qb-log:server:CreateLog", "anticheat", "Made player visible", "green", "** @everyone " ..GetPlayerName(player).. "** was invisible and has been made visible again by QB-Anticheat") + end + end + end + end +end) + +CreateThread(function() -- Nightvision -- + while true do + Wait(2000) + + local ped = PlayerPedId() + local player = PlayerId() + + if checkUser and LocalPlayer.state.isLoggedIn then + if GetUsingnightvision() then + if not IsPedInAnyHeli(ped) then + flags = flags + 1 + TriggerServerEvent("qb-log:server:CreateLog", "anticheat", "Cheat detected!", "orange", "** @everyone " ..GetPlayerName(player).. "** is flagged from anticheat! **(Flag "..flags.." /"..Config.FlagsForBan.." | Nightvision)**") + end + end + end + end +end) + +CreateThread(function() -- Thermalvision -- + while true do + Wait(2000) + + local ped = PlayerPedId() + + if checkUser and LocalPlayer.state.isLoggedIn then + if GetUsingseethrough() then + if not IsPedInAnyHeli(ped) then + flags = flags + 1 + TriggerServerEvent("qb-log:server:CreateLog", "anticheat", "Cheat detected!", "orange", "** @everyone " ..GetPlayerName(player).. "** is flagged from anticheat! **(Flag "..flags.." /"..Config.FlagsForBan.." | Thermalvision)**") + end + end + end + end +end) + +local function trim(plate) + if not plate then return nil end + return (string.gsub(plate, '^%s*(.-)%s*$', '%1')) +end + +CreateThread(function() -- Spawned car -- + while true do + Wait(0) + local ped = PlayerPedId() + local player = PlayerId() + local veh = GetVehiclePedIsIn(ped) + local DriverSeat = GetPedInVehicleSeat(veh, -1) + local plate = trim(GetVehicleNumberPlateText(veh)) + if LocalPlayer.state.isLoggedIn then + if checkUser then + if IsPedInAnyVehicle(ped, true) then + for _, BlockedPlate in pairs(Config.BlacklistedPlates) do + if plate == BlockedPlate then + if DriverSeat == ped then + DeleteVehicle(veh) + TriggerServerEvent("qb-anticheat:server:banPlayer", "Cheating") + TriggerServerEvent("qb-log:server:CreateLog", "anticheat", "Cheat detected!", "red", "** @everyone " ..GetPlayerName(player).. "** has been banned for cheating (Sat as driver in spawned vehicle with license plate **"..BlockedPlate..")**") + end + end + end + end + end + end + end +end) + +CreateThread(function() -- Check if ped has weapon in inventory -- + while true do + Wait(5000) + + if LocalPlayer.state.isLoggedIn then + + local PlayerPed = PlayerPedId() + local player = PlayerId() + local CurrentWeapon = GetSelectedPedWeapon(PlayerPed) + local WeaponInformation = QBCore.Shared.Weapons[CurrentWeapon] + + if WeaponInformation ~= nil and WeaponInformation["name"] ~= "weapon_unarmed" then + QBCore.Functions.TriggerCallback('qb-anticheat:server:HasWeaponInInventory', function(HasWeapon) + if not HasWeapon then + RemoveAllPedWeapons(PlayerPed, false) + TriggerServerEvent("qb-log:server:CreateLog", "anticheat", "Weapon removed!", "orange", "** @everyone " ..GetPlayerName(player).. "** had a weapon on them that they did not have in his inventory. QB Anticheat has removed the weapon.") + end + end, WeaponInformation) + end + end + end +end) + +CreateThread(function() -- Max flags reached = ban, log, explosion & break -- + while true do + Wait(500) + local player = PlayerId() + if flags >= Config.FlagsForBan then + -- TriggerServerEvent("qb-anticheat:server:banPlayer", "Cheating") + -- AddExplosion(coords, EXPLOSION_GRENADE, 1000.0, true, false, false, true) + TriggerServerEvent("qb-log:server:CreateLog", "anticheat", "Player banned! (Not really of course, this is a test duuuhhhh)", "red", "** @everyone " ..GetPlayerName(player).. "** Too often has been flagged by the anti-cheat and preemptively banned from the server") + flags = 0 + end + end +end) + +RegisterNetEvent('qb-anticheat:client:NonRegisteredEventCalled', function(reason, CalledEvent) + local player = PlayerId() + TriggerServerEvent('qb-anticheat:server:banPlayer', reason) + TriggerServerEvent("qb-log:server:CreateLog", "anticheat", "Player banned! (Not really of course, this is a test duuuhhhh)", "red", "** @everyone " ..GetPlayerName(player).. "** has event **"..CalledEvent.."tried to trigger (LUA injector!)") +end) + +if Config.Antiresourcestop then + AddEventHandler("onResourceStop", function(res, source) + if res ~= GetCurrentResourceName() and checkUser then + TriggerServerEvent('qb-anticheat:server:banPlayer', "Detected Stopping Resource.") + Wait(100) + CancelEvent() + end + end) +end \ No newline at end of file diff --git a/resources/[core]/ui-moderator/config.lua b/resources/[core]/ui-moderator/config.lua new file mode 100644 index 0000000..e97b154 --- /dev/null +++ b/resources/[core]/ui-moderator/config.lua @@ -0,0 +1,300 @@ +Config = {} + +-- Set how many flags will result in a ban -- +Config.FlagsForBan = 5 + +-- Set values for flags -- +Config.SuperJumpLength = 20.0 +Config.MaxSpeed = 13 + +Config.Antiresourcestop = true + +-- Set group -- +Config.IgnoredGroups = { + ['mod'] = true, + ['admin'] = true, + ['god'] = true +} + +-- Blacklisted plates -- +Config.BlacklistedPlates = { + "BRUTAN", +} + + +Config.BlacklistedEvents = { + '211ef2f8-f09c-4582-91d8-087ca2130157', + '265df2d8-421b-4727-b01d-b92fd6503f5e', + '6a7af019-2b92-4ec2-9435-8fb9bd031c26', + '8321hiue89js', + '99kr-burglary:addMDFWMoney', + 'AdminMDFWMenu:giveCash', + 'AdminMeDFWMnu:giveBank', + 'adminmenu:allowall', + 'adminmenu:cashoutall', + 'AdminMenu:giveBank', + 'AdminMenu:giveCash', + 'AdminMenu:giveDirtyMDFWMoney', + 'AdminMenu:giveDirtyMoney', + 'adminmenu:setsalary', + 'advancedFuel:setEssence', + 'antilynx8:anticheat', + 'antilynx8r4a:anticheat', + 'antilynxr4:detect', + 'AntiLynxR4:kick', + 'AntiLynxR4:log', + 'antilynxr6:detection', + 'arisonarp:wiezienie', + 'Banca:dDFWMeposit', + 'Banca:deposit', + 'Banca:withdraw', + 'bank:depDFWMosit', + 'bank:tranDFWMsfer', + 'bank:withdDFWMraw', + 'BsCuff:Cuff696999', + 'BsCuff:Cuff696DFWM999', + 'c65a46c5-5485-4404-bacf-06a106900258', + 'CheckHandcDFWMuff', + 'CheckHandcuff', + 'cuffGDFWMranted', + 'cuffGranted', + 'cuffSeDFWMrver', + 'cuffServer', + 'DFWM:adminmenuenable', + 'DFWM:askAwake', + 'DFWM:checkup', + 'DFWM:cleanareaentity', + 'DFWM:cleanareapeds', + 'DFWM:cleanareaveh', + 'DFWM:enable', + 'DFWM:invalid', + 'DFWM:log', + 'DFWM:openmenu', + 'DFWM:spectate', + 'DFWM:ViolationDetected', + 'DiscordBot:plaDFWMyerDied', + 'DiscordBot:playerDied', + 'dmv:succeDFWMss', + 'dmv:success', + 'dqd36JWLRC72k8FDttZ5adUKwvwq9n9m', + 'eden_garage:payhealth', + 'ems:revive', + 'Esx-MenuPessoal:Boss_recruterplayer', + 'esx-qalle-hunting:DFWMreward', + 'esx-qalle-hunting:reward', + 'esx-qalle-hunting:seDFWMll', + 'esx-qalle-hunting:sell', + 'esx-qalle-jail:jailPDFWMlayer', + 'esx-qalle-jail:jailPlayer', + 'esx-qalle-jail:jailPlayerNew', + 'esx:clientLog', + 'esx:createMissingPickups', + 'esx:enterpolicecar', + 'esx:getSharedObject', + 'esx:getShDFWMaredObjDFWMect', + 'esx:giDFWMveInventoryItem', + 'esx:giveInventoryItem', + 'esx:onPickup', + 'esx:playerLoaded', + 'esx:removeInventoryItem', + 'esx:triggerServerCallback', + 'esx:updateLastPosition', + 'esx:updateLoadout', + 'esx:useItem', + 'esx_ambulancejob:reDFWMvive', + 'esx_ambulancejob:revive', + 'esx_ambulancejob:setDeathStatus', + 'esx_baDFWMnksecurity:pay', + 'esx_banksecurity:pay', + 'esx_biDFWMlling:sBill', + 'esx_billing:sBill', + 'esx_blackmoney:washMoney', + 'esx_blanchisDFWMseur:startWhitening', + 'esx_blanchisseur:startWhitening', + 'esx_blanchisseur:washMoney', + 'esx_carthDFWMief:pay', + 'esx_carthief:alertcoDFWMps', + 'esx_carthief:alertcops', + 'esx_carthief:pay', + 'esx_dmvschool:addLiceDFWMnse', + 'esx_dmvschool:addLicense', + 'esx_dmvschool:pay', + 'esx_dmvschool:pDFWMay', + 'esx_drugs:cancelProcessing', + 'esx_drugs:GetUserInventory', + 'esx_drugs:pickedUpCannabis', + 'esx_drugs:pickedUpCDFWMannabis', + 'esx_drugs:processCannabis', + 'esx_drugs:processCDFWMannabis', + 'esx_drugs:sellDrug', + 'esx_drugs:starDFWMtTransformOpium', + 'esx_drugs:startHarDFWMvestMeth', + 'esx_drugs:startHarvestCoke', + 'esx_drugs:startHarvestDFWMCoke', + 'esx_drugs:startHarvestMeth', + 'esx_drugs:startHarvestOpium', + 'esx_drugs:startHarvestWDFWMeed', + 'esx_drugs:startHarvestWeed', + 'esx_drugs:startHDFWMarvestOpium', + 'esx_drugs:startSellCDFWMoke', + 'esx_drugs:startSellCoke', + 'esx_drugs:startSellDFWMOpium', + 'esx_drugs:startSellMDFWMeth', + 'esx_drugs:startSellMeth', + 'esx_drugs:startSellOpium', + 'esx_drugs:startSellWeDFWMed', + 'esx_drugs:startSellWeed', + 'esx_drugs:startTDFWMransformMeth', + 'esx_drugs:startTransDFWMformCoke', + 'esx_drugs:startTransfoDFWMrmWeed', + 'esx_drugs:startTransformCoke', + 'esx_drugs:startTransformMeth', + 'esx_drugs:startTransformOpium', + 'esx_drugs:startTransformWeed', + 'esx_drugs:stopHarDFWMvestWeed', + 'esx_drugs:stopHarvDFWMestCoke', + 'esx_drugs:stopHarvesDFWMtMeth', + 'esx_drugs:stopHarvestCoke', + 'esx_drugs:stopHarvestDFWMOpium', + 'esx_drugs:stopHarvestMeth', + 'esx_drugs:stopHarvestOpium', + 'esx_drugs:stopHarvestWeed', + 'esx_drugs:stopSellCoke', + 'esx_drugs:stopSellDFWMCoke', + 'esx_drugs:stopSellMDFWMeth', + 'esx_drugs:stopSellMeth', + 'esx_drugs:stopSellOpiuDFWMm', + 'esx_drugs:stopSellOpium', + 'esx_drugs:stopSellWDFWMeed', + 'esx_drugs:stopSellWeed', + 'esx_drugs:stopTDFWMransformWeed', + 'esx_drugs:stopTranDFWMsformCoke', + 'esx_drugs:stopTranDFWMsformMeth', + 'esx_drugs:stopTransDFWMformOpium', + 'esx_drugs:stopTransformCoke', + 'esx_drugs:stopTransformMeth', + 'esx_drugs:stopTransformOpium', + 'esx_drugs:stopTransformWeed', + 'esx_fueldDFWMelivery:pay', + 'esx_fueldelivery:pay', + 'esx_garbageDFWMjob:pay', + 'esx_garbagejob:pay', + 'esx_goDFWMpostaljob:pay', + 'esx_godiDFWMrtyjob:pay', + 'esx_godirtyjob:pay', + 'esx_gopostaljob:pay', + 'esx_handcuffs:cufDFWMfing', + 'esx_handcuffs:cuffing', + 'esx_inventoryhud:openPlayerInventory', + 'esx_jaDFWMil:sToJail', + 'esx_jail:sToJail', + 'esx_jail:unjailQuest', + 'esx_jailer:sToJail', + 'esx_jailer:sToJailCatfrajerze', + 'esx_jailer:unjailTiDFWMme', + 'esx_jailer:unjailTime', + 'esx_jailler:sToJail', + 'esx_jDFWMailer:sToJail', + 'esx_jobs:caDFWMution', + 'esx_jobs:caution', + 'esx_jobs:startWork', + 'esx_jobs:stopWork', + 'esx_mafiajob:confiscateDFWMPlayerItem', + 'esx_mecanojob:onNPCJobCDFWMompleted', + 'esx_mecanojob:onNPCJobCompleted', + 'esx_mechanicjob:starDFWMtCraft', + 'esx_mechanicjob:startCraft', + 'esx_mechanicjob:startHarvest', + 'esx_moneywash:depoDFWMsit', + 'esx_moneywash:deposit', + 'esx_moneywash:witDFWMhdraw', + 'esx_moneywash:withdraw', + 'esx_pizza:pay', + 'esx_pizza:pDFWMay', + 'esx_policejob:haDFWMndcuff', + 'esx_policejob:handcuff', + 'esx_ranger:pay', + 'esx_ranger:pDFWMay', + 'esx_skin:openRestrictedMenu', + 'esx_skin:responseSaDFWMveSkin', + 'esx_skin:responseSaveSkin', + 'esx_sloDFWMtmachine:sv:2', + 'esx_slotmachine:sv:2', + 'esx_society:getOnlDFWMinePlayers', + 'esx_society:getOnlinePlayers', + 'esx_society:openBosDFWMsMenu', + 'esx_society:putVehicleDFWMInGarage', + 'esx_society:setJob', + 'esx_status:set', + 'esx_tankerjob:DFWMpay', + 'esx_truckDFWMerjob:pay', + 'esx_truckerjob:pay', + 'esx_vehicleshop:setVehicleOwned', + 'esx_vehicleshop:setVehicleOwnedDFWM', + 'esx_vehicleshop:setVehicleOwnedPlayerId', + 'esx_vehicletrunk:givDFWMeDirty', + 'esx_vehicletrunk:giveDirty', + 'f0ba1292-b68d-4d95-8823-6230cdf282b6', + 'gambling:sp', + 'gambling:speDFWMnd', + 'gcPhone:sMessage', + 'gcPhone:tchat_channel', + 'gcPhone:tchat_channelDFWM', + 'gcPhone:_internalAddMessage', + 'gcPhone:_internalAddMessageDFWM', + 'give_back', + 'h:xd', + 'HCheat:TempDisableDetDFWMection', + 'hentailover:xdlol', + 'JailUpdate', + 'js:jaDFWMiluser', + 'js:jailuser', + 'js:removejailtime', + 'laundry:washcash', + 'LegacyFuel:PayFuDFWMel', + 'LegacyFuel:PayFuel', + 'ljail:jailplayer', + 'lscustoms:payGarage', + 'lscustoms:pDFWMayGarage', + 'lscustoms:UpdateVeh', + 'lynx8:anticheat', + 'mellotrainer:adminKick', + 'mellotrainer:adminKickDFWM', + 'mellotrainer:adminTeDFWMmpBan', + 'mellotrainer:adminTempBan', + 'mellotrainer:s_adminKill', + 'MF_MobileMeth:RewardPlayers', + 'mission:completDFWMed', + 'mission:completed', + 'NB:destituerplayer', + 'NB:recDFWMruterplayer', + 'NB:recruterplayer', + 'OG_cuffs:cuffCheckNearest', + 'OG_cuffs:cuffCheckNeDFWMarest', + 'paramedic:revive', + 'paycheck:bonDFWMus', + 'paycheck:salary', + 'paycheck:salDFWMary', + 'police:cuffGDFWMranted', + 'police:cuffGranted', + 'program-keycard:hacking', + 'projektsantos:mandathajs', + 'Tem2LPs5Para5dCyjuHm87y2catFkMpV', + 'tost:zgarnijsiano', + 'tostzdrapka:wygranko', + 'truckerJob:succeDFWMss', + 'truckerJob:success', + 'uncuffGranted', + 'unCuffServer', + 'veh_SR:CheckMonDFWMeyForVeh', + 'vrp_slotmachDFWMine:server:2', + 'vrp_slotmachine:server:2', + 'whoapd:revive', + 'wojtek_ubereats:hajs', + 'wojtek_ubereats:napiwek', + 'wyspa_jail:jail', + 'wyspa_jail:jailPlayer', + 'xk3ly-barbasz:getfukingmony', + 'xk3ly-farmer:paycheck', + 'ynx8:anticheat', +} diff --git a/resources/[core]/ui-moderator/fxmanifest.lua b/resources/[core]/ui-moderator/fxmanifest.lua new file mode 100644 index 0000000..41d4c5a --- /dev/null +++ b/resources/[core]/ui-moderator/fxmanifest.lua @@ -0,0 +1,16 @@ +fx_version 'cerulean' +game 'gta5' + +description 'QB-Anticheat' +version '1.2.0' + +shared_script 'config.lua' + +client_script 'client/main.lua' + +server_scripts { + '@oxmysql/lib/MySQL.lua', + 'server/main.lua' +} + +lua54 'yes' diff --git a/resources/[core]/ui-moderator/server/main.lua b/resources/[core]/ui-moderator/server/main.lua new file mode 100644 index 0000000..34af1cb --- /dev/null +++ b/resources/[core]/ui-moderator/server/main.lua @@ -0,0 +1,56 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +-- Get permissions -- + +QBCore.Functions.CreateCallback('qb-anticheat:server:GetPermissions', function(source, cb) + local group = QBCore.Functions.GetPermission(source) + cb(group) +end) + +-- Execute ban -- + +RegisterNetEvent('qb-anticheat:server:banPlayer', function(reason) + local src = source + TriggerEvent("qb-log:server:CreateLog", "anticheat", "Anti-Cheat", "white", "You were banned "..reason, false) + MySQL.Async.insert('INSERT INTO bans (name, license, discord, ip, reason, expire, bannedby) VALUES (?, ?, ?, ?, ?, ?, ?)', { + GetPlayerName(src), + QBCore.Functions.GetIdentifier(src, 'license'), + QBCore.Functions.GetIdentifier(src, 'discord'), + QBCore.Functions.GetIdentifier(src, 'ip'), + reason, + 2145913200, + 'Anti-Cheat' + }) + DropPlayer(src, "You have been banned for cheating. Check our Discord for more information: " .. QBCore.Config.Server.discord) +end) + +-- Fake events -- +function NonRegisteredEventCalled(CalledEvent, source) + TriggerClientEvent("qb-anticheat:client:NonRegisteredEventCalled", source, "Cheating", CalledEvent) +end + +for x, v in pairs(Config.BlacklistedEvents) do + RegisterServerEvent(v) + AddEventHandler(v, function(source) + NonRegisteredEventCalled(v, source) + end) +end + +-- RegisterServerEvent('banking:withdraw') +-- AddEventHandler('banking:withdraw', function(source) +-- NonRegisteredEventCalled('bank:withdraw', source) +-- end) + +QBCore.Functions.CreateCallback('qb-anticheat:server:HasWeaponInInventory', function(source, cb, WeaponInfo) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local PlayerInventory = Player.PlayerData.items + local retval = false + + for k, v in pairs(PlayerInventory) do + if v.name == WeaponInfo["name"] then + retval = true + end + end + cb(retval) +end) \ No newline at end of file diff --git a/resources/[core]/ui-ownership/.github/ISSUE_TEMPLATE/bug_report.md b/resources/[core]/ui-ownership/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..62f702f --- /dev/null +++ b/resources/[core]/ui-ownership/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,32 @@ +--- +name: Bug report +about: Create a report to help us improve or fix something +title: "[BUG]" +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. A stranger to qbcore should be able to read your bug report and understand how to reproduce it themselves and understand how the feature should work normally. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Use this item '....' (item's name from shared.lua if applicable) +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Questions (please complete the following information):** + - When you last updated: [e.g. last week] + - Are you using custom resource? which ones? [e.g. zdiscord, qb-target] + - Have you renamed `qb-` to something custom? [e.g. yes/no] + +**Additional context** +Add any other context about the problem here. diff --git a/resources/[core]/ui-ownership/.github/ISSUE_TEMPLATE/feature-request.md b/resources/[core]/ui-ownership/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000..9e9bf3e --- /dev/null +++ b/resources/[core]/ui-ownership/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,20 @@ +--- +name: Feature Request +about: Suggest an idea for QBCore +title: "[SUGGESTION]" +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. + +**Describe the feature you'd like** +A clear and concise description of what you want to happen. and with as much detail as possible how it would function in your opinion. Please try to keep it unique. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered for people to have in mind just in case the main idea isn't liked but a derivative is. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/resources/[core]/ui-ownership/.github/auto_assign.yml b/resources/[core]/ui-ownership/.github/auto_assign.yml new file mode 100644 index 0000000..a4a8078 --- /dev/null +++ b/resources/[core]/ui-ownership/.github/auto_assign.yml @@ -0,0 +1,17 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: author + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - /maintenance + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +skipKeywords: + - wip + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 0 diff --git a/resources/[core]/ui-ownership/.github/contributing.md b/resources/[core]/ui-ownership/.github/contributing.md new file mode 100644 index 0000000..21fb806 --- /dev/null +++ b/resources/[core]/ui-ownership/.github/contributing.md @@ -0,0 +1,201 @@ +# Contributing to QBCore + +First of all, thank you for taking the time to contribute! + +These guidelines will help you help us in the best way possible regardless of your skill level. We ask that you try to read everything related to the way you'd like to contribute and try and use your best judgement for anything not covered. + +### Table of Contents + +[Code of Conduct](#code-of-conduct) + +[I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question) + +[How Can I Contribute?](#how-can-i-contribute) + * [Reporting Bugs](#reporting-bugs) + * [Suggesting Features / Enhancements](#suggesting-features--enhancements) + * [Your First Code Contribution](#your-first-code-contribution) + * [Pull Requests](#pull-requests) + +[Styleguides](#styleguides) + * [Git Commit Messages](#git-commit-messages) + * [Lua Styleguide](#lua-styleguide) + * [JavaScript Styleguide](#javascript-styleguide) + + + +## Code of Conduct + +- Refrain from using languages other than English. +- Refrain from discussing any politically charged or inflammatory topics. +- Uphold mature conversations and respect each other; excessive profanity, hate speech or any kind of harassment will not be tolerated. +- No advertising of any kind. +- Follow these guidelines. +- Do not mention members of github unless a question is directed at them and can't be answered by anyone else. +- Do not mention any of the development team for any reason. We will read things as we get to them. + +## I don't want to read this whole thing I just have a question!!! + +> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below. + +* [QBCore Website](https://qbcore.org) +* [QBCore Discord](https://discord.gg/qbcore) +* [FiveM Discord - #qbcore channel](https://discord.gg/fivem) + + + + + + + + + + +## How Can I Contribute? + +### Reporting Bugs + +The easiest way to contribute for most people is just to report bugs you find cause if nobody reports it there's a chance we'll never know it exists and then we'll never fix it. + +Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out the bug-report template with the information it asks for helps us resolve issues faster. + +> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. + +#### Before Submitting A Bug Report + +* **Check the docs** There's a chance what you see as a bug might just work differently than you expect and if you think it could work better consider a feature enhancement report instead. +* **Search the [discord](https://discord.gg/qbcore)** to see if anyone else has run into the issue and see if it was solved through user error or code changes. (if the code change isn't pending a PR and you know what you're doing consider submitting one following [Pull Requests](#pull-requests) ) +* **Determine which resource the problem should be reported in**. If the bug is related to the inventory for example report this bug under qb-inventory rather than under qb-core or some other resource. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Bug Report? + +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your bug is related to, create an issue on that repository and provide the following information by filling in bug-report template. + +Explain the problem and include additional details to help maintainers reproduce the problem: + +* **Use a clear and descriptive title** for the issue to identify the problem. +* **Describe the exact steps which reproduce the problem** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. If something happened with only a specific group or single item but not others, specify that. +* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. +* **Explain which behavior you expected to see instead and why.** +* **Include screenshots** which show the specific bug in action or before and after. +* **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below. + +Provide more context by answering these questions if possible: + +* **Did the problem start happening recently** (e.g. after updating to a new version of QBCore?) or was this always a problem? +* If the problem started happening recently, **can you reproduce the problem in an older version of QBCore?** What's the most recent commit in which the problem doesn't happen? +* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. + +Include details about your setup: + +* **When was your QBCore last updated?** +* **What OS is the server running on**? +* **Which *extra* resources do you have installed?** + + +--- + + +### Suggesting Features / Enhancements + +This section guides you through submitting an enhancement suggestion for QBCore, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion. + +Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in feature request template, including the steps that you imagine you would take if the feature you're requesting existed. + +#### Before Submitting An Enhancement Suggestion + +* **Make sure it doesn't already exist.** Sounds silly, but there's a lot of features built in to qbcore that people don't realize so take a look through the docs and stuff to make sure it's not already there. +* **Check if there's already PR which provides that enhancement.** +* **Determine which resource the enhancement should be suggested in.** if it fits with another resource suggest it in that resource. if it would be it's own resource suggest it in the main qb-core repository. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your enhancement suggestion is related to, create an issue on that repository and provide the following information: + +* **Use a clear and descriptive title** for the issue to identify the suggestion. +* **Provide a step-by-step description of the suggested enhancement** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). +* **Describe the current behavior** and **explain which behavior you expected to see instead** and why. +* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of QBCore which the suggestion is related to. +* **Explain why this enhancement would be useful.** +* **Be creative and unique.** Stealing ideas from popular servers 1:1 detail isn't going to get accepted. + + +--- + + + +### Your First Code Contribution + +Unsure where to begin contributing to QBCore? You can start by looking through these `beginner` and `help-wanted` issues. + + + +--- + + +### Pull Requests + +The process described here has several goals: + +- Maintain QBCore's quality. +- Fix problems that are important to users. +- Engage the community in working toward the best possible QBCore. +- Enable a sustainable system for QBCore's maintainers to review contributions. + +Please follow these steps to have your contribution considered by the maintainers: + +1. Follow all instructions in The Pull Request template. +2. Follow the [styleguides](#styleguides). +3. Await review by the reviewer(s). + +While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted. + + +--- + +## Styleguides + +### Git Commit Messages + +* Limit the first line to 72 characters or less. +* Reference issues and pull requests liberally after the first line. +* Consider starting the commit message with an applicable emoji: + * :art: `:art:` when improving the format/structure of the code + * :racehorse: `:racehorse:` when improving performance + * :memo: `:memo:` when writing docs + * :bug: `:bug:` when fixing a bug + * :fire: `:fire:` when removing code or files + * :white_check_mark: `:white_check_mark:` when adding tests + * :lock: `:lock:` when dealing with security + * :arrow_up: `:arrow_up:` when upgrading dependencies + * :arrow_down: `:arrow_down:` when downgrading dependencies + * :shirt: `:shirt:` when removing linter warnings + +### Lua Styleguide + +All lua code should be done using all the best practices of proper lua using the easiest to read yet fastest/most optimized methods of execution. + +- Use 4 Space indentation +- Aim for lua 5.4 (include `lua54 'yes'` in the fxmanifest.lua) +- Use `PlayerPedId()` instead of `GetPlayerPed(-1)` +- Use `#(vector3 - vector3)` instead of `GetDistanceBetweenCoords()` +- Don't create unnecessary threads. always try to find a better method of triggering events +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables +- For distance checking loops set longer waits if you're outside of a range +- Job specific loops should only run for players with that job, don't waste cycles +- When possible don't trust the client, esspecially with transactions +- Balance security and optimizations +- [Consider this Lua Performance guide](https://springrts.com/wiki/Lua_Performance) +- Use local varriables everywhere possible +- Make use of config options where it makes sense making features optional or customizable +- Instead of `table.insert(myTable, "Value")` use `myTable[#myTable + 1] = "Value"` +- Instead of `table.insert(ages, "bob", 30)` use `ages["bob"] = 30` + + +### JavaScript Styleguide + +- Use 4 Space indentation +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables. diff --git a/resources/[core]/ui-ownership/.github/pull_request_template.md b/resources/[core]/ui-ownership/.github/pull_request_template.md new file mode 100644 index 0000000..000f0f9 --- /dev/null +++ b/resources/[core]/ui-ownership/.github/pull_request_template.md @@ -0,0 +1,10 @@ +**Describe Pull request** +First, make sure you've read and are following the contribution guidelines and style guide and your code reflects that. +Write up a clear and concise description of what your pull request adds or fixes and if it's an added feature explain why you think it should be included in the core. + +If your PR is to fix an issue mention that issue here + +**Questions (please complete the following information):** +- Have you personally loaded this code into an updated qbcore project and checked all it's functionality? [yes/no] (Be honest) +- Does your code fit the style guidelines? [yes/no] +- Does your PR fit the contribution guidelines? [yes/no] diff --git a/resources/[core]/ui-ownership/.github/workflows/lint.yml b/resources/[core]/ui-ownership/.github/workflows/lint.yml new file mode 100644 index 0000000..fb74fd6 --- /dev/null +++ b/resources/[core]/ui-ownership/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: Lint +on: [push, pull_request_target] +jobs: + lint: + name: Lint Resource + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Lint + uses: iLLeniumStudios/fivem-lua-lint-action@v2 + with: + capture: "junit.xml" + args: "-t --formatter JUnit" + extra_libs: mysql+polyzone+qblocales + - name: Generate Lint Report + if: always() + uses: mikepenz/action-junit-report@v3 + with: + report_paths: "**/junit.xml" + check_name: Linting Report + fail_on_failure: false \ No newline at end of file diff --git a/resources/[core]/ui-ownership/.github/workflows/stale.yml b/resources/[core]/ui-ownership/.github/workflows/stale.yml new file mode 100644 index 0000000..c18b212 --- /dev/null +++ b/resources/[core]/ui-ownership/.github/workflows/stale.yml @@ -0,0 +1,29 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '41 15 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has had 60 days of inactivity & will close within 7 days' + stale-pr-message: 'This PR has had 60 days of inactivity & will close within 7 days' + close-issue-label: 'Stale Closed' + close-pr-label: 'Stale Closed' + exempt-issue-labels: 'Suggestion' + exempt-pr-labels: 'Suggestion' diff --git a/resources/[core]/ui-ownership/LICENSE b/resources/[core]/ui-ownership/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/resources/[core]/ui-ownership/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/resources/[core]/ui-ownership/README.md b/resources/[core]/ui-ownership/README.md new file mode 100644 index 0000000..a36f793 --- /dev/null +++ b/resources/[core]/ui-ownership/README.md @@ -0,0 +1,30 @@ +# qb-management +- Manage employees online or offline! +- Access a personal boss level stash! +- Allows for multiple boss menu locations! + +## Dependencies +- [qb-core](https://github.com/qbcore-framework/qb-core) +- [qb-smallresources](https://github.com/qbcore-framework/qb-smallresources) (For the Logs) +- [qb-input](https://github.com/qbcore-framework/qb-input) +- [qb-menu](https://github.com/qbcore-framework/qb-menu) +- [qb-inventory](https://github.com/qbcore-framework/qb-inventory) +- [qb-clothing](https://github.com/qbcore-framework/qb-clothing) + +# License + + QBCore Framework + Copyright (C) 2021 Joshua Eger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see diff --git a/resources/[core]/ui-ownership/client/cl_boss.lua b/resources/[core]/ui-ownership/client/cl_boss.lua new file mode 100644 index 0000000..e6bc9c5 --- /dev/null +++ b/resources/[core]/ui-ownership/client/cl_boss.lua @@ -0,0 +1,283 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local PlayerJob = QBCore.Functions.GetPlayerData().job +local shownBossMenu = false +local DynamicMenuItems = {} + +-- UTIL +local function CloseMenuFull() + exports['qb-menu']:closeMenu() + exports['qb-core']:HideText() + shownBossMenu = false +end + +local function AddBossMenuItem(data, id) + local menuID = id or (#DynamicMenuItems + 1) + DynamicMenuItems[menuID] = deepcopy(data) + return menuID +end + +exports('AddBossMenuItem', AddBossMenuItem) + +local function RemoveBossMenuItem(id) + DynamicMenuItems[id] = nil +end + +exports('RemoveBossMenuItem', RemoveBossMenuItem) + +AddEventHandler('onResourceStart', function(resource) + if resource == GetCurrentResourceName() then + PlayerJob = QBCore.Functions.GetPlayerData().job + end +end) + +RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() + PlayerJob = QBCore.Functions.GetPlayerData().job +end) + +RegisterNetEvent('QBCore:Client:OnJobUpdate', function(JobInfo) + PlayerJob = JobInfo +end) + +RegisterNetEvent('qb-bossmenu:client:OpenMenu', function() + if not PlayerJob.name or not PlayerJob.isboss then return end + + local bossMenu = { + { + header = Lang:t('headers.bsm') .. string.upper(PlayerJob.label), + icon = 'fa-solid fa-circle-info', + isMenuHeader = true, + }, + { + header = Lang:t('body.manage'), + txt = Lang:t('body.managed'), + icon = 'fa-solid fa-list', + params = { + event = 'qb-bossmenu:client:employeelist', + } + }, + { + header = Lang:t('body.hire'), + txt = Lang:t('body.hired'), + icon = 'fa-solid fa-hand-holding', + params = { + event = 'qb-bossmenu:client:HireMenu', + } + }, + { + header = Lang:t('body.storage'), + txt = Lang:t('body.storaged'), + icon = 'fa-solid fa-box-open', + params = { + isServer = true, + event = 'qb-bossmenu:server:stash', + } + }, + { + header = Lang:t('body.outfits'), + txt = Lang:t('body.outfitsd'), + icon = 'fa-solid fa-shirt', + params = { + event = 'qb-bossmenu:client:Wardrobe', + } + } + } + + for _, v in pairs(DynamicMenuItems) do + bossMenu[#bossMenu + 1] = v + end + + bossMenu[#bossMenu + 1] = { + header = Lang:t('body.exit'), + icon = 'fa-solid fa-angle-left', + params = { + event = 'qb-menu:closeMenu', + } + } + + exports['qb-menu']:openMenu(bossMenu) +end) + +RegisterNetEvent('qb-bossmenu:client:employeelist', function() + local EmployeesMenu = { + { + header = Lang:t('body.mempl') .. string.upper(PlayerJob.label), + isMenuHeader = true, + icon = 'fa-solid fa-circle-info', + }, + } + QBCore.Functions.TriggerCallback('qb-bossmenu:server:GetEmployees', function(cb) + for _, v in pairs(cb) do + EmployeesMenu[#EmployeesMenu + 1] = { + header = v.name, + txt = v.grade.name, + icon = 'fa-solid fa-circle-user', + params = { + event = 'qb-bossmenu:client:ManageEmployee', + args = { + player = v, + work = PlayerJob + } + } + } + end + EmployeesMenu[#EmployeesMenu + 1] = { + header = Lang:t('body.return'), + icon = 'fa-solid fa-angle-left', + params = { + event = 'qb-bossmenu:client:OpenMenu', + } + } + exports['qb-menu']:openMenu(EmployeesMenu) + end, PlayerJob.name) +end) + +RegisterNetEvent('qb-bossmenu:client:ManageEmployee', function(data) + local EmployeeMenu = { + { + header = Lang:t('body.mngpl') .. data.player.name .. ' - ' .. string.upper(PlayerJob.label), + isMenuHeader = true, + icon = 'fa-solid fa-circle-info' + }, + } + for k, v in pairs(QBCore.Shared.Jobs[data.work.name].grades) do + EmployeeMenu[#EmployeeMenu + 1] = { + header = v.name, + txt = Lang:t('body.grade') .. k, + params = { + isServer = true, + event = 'qb-bossmenu:server:GradeUpdate', + icon = 'fa-solid fa-file-pen', + args = { + cid = data.player.empSource, + grade = tonumber(k), + gradename = v.name + } + } + } + end + EmployeeMenu[#EmployeeMenu + 1] = { + header = Lang:t('body.fireemp'), + icon = 'fa-solid fa-user-large-slash', + params = { + isServer = true, + event = 'qb-bossmenu:server:FireEmployee', + args = data.player.empSource + } + } + EmployeeMenu[#EmployeeMenu + 1] = { + header = Lang:t('body.return'), + icon = 'fa-solid fa-angle-left', + params = { + event = 'qb-bossmenu:client:OpenMenu', + } + } + exports['qb-menu']:openMenu(EmployeeMenu) +end) + +RegisterNetEvent('qb-bossmenu:client:Wardrobe', function() + TriggerEvent('qb-clothing:client:openOutfitMenu') +end) + +RegisterNetEvent('qb-bossmenu:client:HireMenu', function() + local HireMenu = { + { + header = Lang:t('body.hireemp') .. string.upper(PlayerJob.label), + isMenuHeader = true, + icon = 'fa-solid fa-circle-info', + }, + } + QBCore.Functions.TriggerCallback('qb-bossmenu:getplayers', function(players) + for _, v in pairs(players) do + if v and v ~= PlayerId() then + HireMenu[#HireMenu + 1] = { + header = v.name, + txt = Lang:t('body.cid') .. v.citizenid .. ' - ID: ' .. v.sourceplayer, + icon = 'fa-solid fa-user-check', + params = { + isServer = true, + event = 'qb-bossmenu:server:HireEmployee', + args = v.sourceplayer + } + } + end + end + HireMenu[#HireMenu + 1] = { + header = Lang:t('body.return'), + icon = 'fa-solid fa-angle-left', + params = { + event = 'qb-bossmenu:client:OpenMenu', + } + } + exports['qb-menu']:openMenu(HireMenu) + end) +end) + +-- MAIN THREAD +CreateThread(function() + if Config.UseTarget then + for job, zones in pairs(Config.BossMenus) do + for index, coords in ipairs(zones) do + local zoneName = job .. '_bossmenu_' .. index + exports['qb-target']:AddCircleZone(zoneName, coords, 0.5, { + name = zoneName, + debugPoly = false, + useZ = true + }, { + options = { + { + type = 'client', + event = 'qb-bossmenu:client:OpenMenu', + icon = 'fas fa-sign-in-alt', + label = Lang:t('target.label'), + canInteract = function() return job == PlayerJob.name and PlayerJob.isboss end, + }, + }, + distance = 2.5 + }) + end + end + else + while true do + local wait = 2500 + local pos = GetEntityCoords(PlayerPedId()) + local inRangeBoss = false + local nearBossmenu = false + if PlayerJob then + wait = 0 + for k, menus in pairs(Config.BossMenus) do + for _, coords in ipairs(menus) do + if k == PlayerJob.name and PlayerJob.isboss then + if #(pos - coords) < 5.0 then + inRangeBoss = true + if #(pos - coords) <= 1.5 then + nearBossmenu = true + if not shownBossMenu then + exports['qb-core']:DrawText(Lang:t('drawtext.label'), 'left') + shownBossMenu = true + end + if IsControlJustReleased(0, 38) then + exports['qb-core']:HideText() + TriggerEvent('qb-bossmenu:client:OpenMenu') + end + end + + if not nearBossmenu and shownBossMenu then + CloseMenuFull() + shownBossMenu = false + end + end + end + end + end + if not inRangeBoss then + Wait(1500) + if shownBossMenu then + CloseMenuFull() + shownBossMenu = false + end + end + end + Wait(wait) + end + end +end) diff --git a/resources/[core]/ui-ownership/client/cl_gang.lua b/resources/[core]/ui-ownership/client/cl_gang.lua new file mode 100644 index 0000000..1ca6950 --- /dev/null +++ b/resources/[core]/ui-ownership/client/cl_gang.lua @@ -0,0 +1,286 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local PlayerGang = QBCore.Functions.GetPlayerData().gang +local shownGangMenu = false +local DynamicMenuItems = {} + +-- UTIL +local function CloseMenuFullGang() + exports['qb-menu']:closeMenu() + exports['qb-core']:HideText() + shownGangMenu = false +end + +--//Events +AddEventHandler('onResourceStart', function(resource) --if you restart the resource + if resource == GetCurrentResourceName() then + Wait(200) + PlayerGang = QBCore.Functions.GetPlayerData().gang + end +end) + +RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() + PlayerGang = QBCore.Functions.GetPlayerData().gang +end) + +RegisterNetEvent('QBCore:Client:OnGangUpdate', function(InfoGang) + PlayerGang = InfoGang +end) + +RegisterNetEvent('qb-gangmenu:client:Warbobe', function() + TriggerEvent('qb-clothing:client:openOutfitMenu') +end) + +local function AddGangMenuItem(data, id) + local menuID = id or (#DynamicMenuItems + 1) + DynamicMenuItems[menuID] = deepcopy(data) + return menuID +end + +exports('AddGangMenuItem', AddGangMenuItem) + +local function RemoveGangMenuItem(id) + DynamicMenuItems[id] = nil +end + +exports('RemoveGangMenuItem', RemoveGangMenuItem) + +RegisterNetEvent('qb-gangmenu:client:OpenMenu', function() + shownGangMenu = true + local gangMenu = { + { + header = Lang:t('headersgang.bsm') .. string.upper(PlayerGang.label), + icon = 'fa-solid fa-circle-info', + isMenuHeader = true, + }, + { + header = Lang:t('bodygang.manage'), + txt = Lang:t('bodygang.managed'), + icon = 'fa-solid fa-list', + params = { + event = 'qb-gangmenu:client:ManageGang', + } + }, + { + header = Lang:t('bodygang.hire'), + txt = Lang:t('bodygang.hired'), + icon = 'fa-solid fa-hand-holding', + params = { + event = 'qb-gangmenu:client:HireMembers', + } + }, + { + header = Lang:t('bodygang.storage'), + txt = Lang:t('bodygang.storaged'), + icon = 'fa-solid fa-box-open', + params = { + isServer = true, + event = 'qb-gangmenu:server:stash', + } + }, + { + header = Lang:t('bodygang.outfits'), + txt = Lang:t('bodygang.outfitsd'), + icon = 'fa-solid fa-shirt', + params = { + event = 'qb-gangmenu:client:Warbobe', + } + } + } + + for _, v in pairs(DynamicMenuItems) do + gangMenu[#gangMenu + 1] = v + end + + gangMenu[#gangMenu + 1] = { + header = Lang:t('bodygang.exit'), + icon = 'fa-solid fa-angle-left', + params = { + event = 'qb-menu:closeMenu', + } + } + + exports['qb-menu']:openMenu(gangMenu) +end) + +RegisterNetEvent('qb-gangmenu:client:ManageGang', function() + local GangMembersMenu = { + { + header = Lang:t('bodygang.mempl') .. string.upper(PlayerGang.label), + icon = 'fa-solid fa-circle-info', + isMenuHeader = true, + }, + } + QBCore.Functions.TriggerCallback('qb-gangmenu:server:GetEmployees', function(cb) + for _, v in pairs(cb) do + GangMembersMenu[#GangMembersMenu + 1] = { + header = v.name, + txt = v.grade.name, + icon = 'fa-solid fa-circle-user', + params = { + event = 'qb-gangmenu:lient:ManageMember', + args = { + player = v, + work = PlayerGang + } + } + } + end + GangMembersMenu[#GangMembersMenu + 1] = { + header = Lang:t('bodygang.return'), + icon = 'fa-solid fa-angle-left', + params = { + event = 'qb-gangmenu:client:OpenMenu', + } + } + exports['qb-menu']:openMenu(GangMembersMenu) + end, PlayerGang.name) +end) + +RegisterNetEvent('qb-gangmenu:lient:ManageMember', function(data) + local MemberMenu = { + { + header = Lang:t('bodygang.mngpl') .. data.player.name .. ' - ' .. string.upper(PlayerGang.label), + isMenuHeader = true, + icon = 'fa-solid fa-circle-info', + }, + } + for k, v in pairs(QBCore.Shared.Gangs[data.work.name].grades) do + MemberMenu[#MemberMenu + 1] = { + header = v.name, + txt = Lang:t('bodygang.grade') .. k, + params = { + isServer = true, + event = 'qb-gangmenu:server:GradeUpdate', + icon = 'fa-solid fa-file-pen', + args = { + cid = data.player.empSource, + grade = tonumber(k), + gradename = v.name + } + } + } + end + MemberMenu[#MemberMenu + 1] = { + header = Lang:t('bodygang.fireemp'), + icon = 'fa-solid fa-user-large-slash', + params = { + isServer = true, + event = 'qb-gangmenu:server:FireMember', + args = data.player.empSource + } + } + MemberMenu[#MemberMenu + 1] = { + header = Lang:t('bodygang.return'), + icon = 'fa-solid fa-angle-left', + params = { + event = 'qb-gangmenu:client:ManageGang', + } + } + exports['qb-menu']:openMenu(MemberMenu) +end) + +RegisterNetEvent('qb-gangmenu:client:HireMembers', function() + local HireMembersMenu = { + { + header = Lang:t('bodygang.hireemp') .. string.upper(PlayerGang.label), + isMenuHeader = true, + icon = 'fa-solid fa-circle-info', + }, + } + QBCore.Functions.TriggerCallback('qb-gangmenu:getplayers', function(players) + for _, v in pairs(players) do + if v and v ~= PlayerId() then + HireMembersMenu[#HireMembersMenu + 1] = { + header = v.name, + txt = Lang:t('bodygang.cid') .. v.citizenid .. ' - ID: ' .. v.sourceplayer, + icon = 'fa-solid fa-user-check', + params = { + isServer = true, + event = 'qb-gangmenu:server:HireMember', + args = v.sourceplayer + } + } + end + end + HireMembersMenu[#HireMembersMenu + 1] = { + header = Lang:t('bodygang.return'), + icon = 'fa-solid fa-angle-left', + params = { + event = 'qb-gangmenu:client:OpenMenu', + } + } + exports['qb-menu']:openMenu(HireMembersMenu) + end) +end) + +-- MAIN THREAD + +CreateThread(function() + if Config.UseTarget then + for gang, zones in pairs(Config.GangMenus) do + for index, coords in ipairs(zones) do + local zoneName = gang .. '_gangmenu_' .. index + exports['qb-target']:AddCircleZone(zoneName, coords, 0.5, { + name = zoneName, + debugPoly = false, + useZ = true + }, { + options = { + { + type = 'client', + event = 'qb-gangmenu:client:OpenMenu', + icon = 'fas fa-sign-in-alt', + label = Lang:t('targetgang.label'), + canInteract = function() return gang == PlayerGang.name and PlayerGang.isboss end, + }, + }, + distance = 2.5 + }) + end + end + else + while true do + local wait = 2500 + local pos = GetEntityCoords(PlayerPedId()) + local inRangeGang = false + local nearGangmenu = false + if PlayerGang then + wait = 0 + for k, menus in pairs(Config.GangMenus) do + for _, coords in ipairs(menus) do + if k == PlayerGang.name and PlayerGang.isboss then + if #(pos - coords) < 5.0 then + inRangeGang = true + if #(pos - coords) <= 1.5 then + nearGangmenu = true + if not shownGangMenu then + exports['qb-core']:DrawText(Lang:t('drawtextgang.label'), 'left') + shownGangMenu = true + end + + if IsControlJustReleased(0, 38) then + exports['qb-core']:HideText() + TriggerEvent('qb-gangmenu:client:OpenMenu') + end + end + + if not nearGangmenu and shownGangMenu then + CloseMenuFullGang() + shownGangMenu = false + end + end + end + end + end + if not inRangeGang then + Wait(1500) + if shownGangMenu then + CloseMenuFullGang() + shownGangMenu = false + end + end + end + Wait(wait) + end + end +end) diff --git a/resources/[core]/ui-ownership/client/cl_utils.lua b/resources/[core]/ui-ownership/client/cl_utils.lua new file mode 100644 index 0000000..7131489 --- /dev/null +++ b/resources/[core]/ui-ownership/client/cl_utils.lua @@ -0,0 +1,20 @@ +function deepcopy(orig, copies) + copies = copies or {} + local orig_type = type(orig) + local copy + if orig_type == 'table' then + if copies[orig] then + copy = copies[orig] + else + copy = {} + copies[orig] = copy + for orig_key, orig_value in next, orig, nil do + copy[deepcopy(orig_key, copies)] = deepcopy(orig_value, copies) + end + setmetatable(copy, deepcopy(getmetatable(orig), copies)) + end + else -- number, string, boolean, etc + copy = orig + end + return copy +end diff --git a/resources/[core]/ui-ownership/config.lua b/resources/[core]/ui-ownership/config.lua new file mode 100644 index 0000000..33b5c8c --- /dev/null +++ b/resources/[core]/ui-ownership/config.lua @@ -0,0 +1,37 @@ +-- Zones for Menus +Config = Config or {} + +Config.UseTarget = GetConvar('UseTarget', 'false') == 'true' -- Use qb-target interactions (don't change this, go to your server.cfg and add `setr UseTarget true` to use this and just that from true to false or the other way around) + +Config.BossMenus = { + police = { + vector3(447.16, -974.31, 30.47), + }, + ambulance = { + vector3(311.21, -599.36, 43.29), + }, + cardealer = { + vector3(-32.94, -1114.64, 26.42), + }, + mechanic = { + vector3(-347.59, -133.35, 39.01), + }, +} + +Config.GangMenus = { + lostmc = { + vector3(0, 0, 0), + }, + ballas = { + vector3(0, 0, 0), + }, + vagos = { + vector3(0, 0, 0), + }, + cartel = { + vector3(0, 0, 0), + }, + families = { + vector3(0, 0, 0), + }, +} diff --git a/resources/[core]/ui-ownership/fxmanifest.lua b/resources/[core]/ui-ownership/fxmanifest.lua new file mode 100644 index 0000000..757e01e --- /dev/null +++ b/resources/[core]/ui-ownership/fxmanifest.lua @@ -0,0 +1,24 @@ +fx_version 'cerulean' +game 'gta5' +lua54 'yes' +author 'Kakarot' +description 'Employee management system allowing players to hire/fire other players' +version '2.1.2' + +shared_scripts { + '@qb-core/shared/locale.lua', + 'locales/en.lua', + 'locales/*.lua', + 'config.lua', +} + +client_scripts { + 'client/*.lua' +} + +server_scripts { + '@oxmysql/lib/MySQL.lua', + 'server/*.lua' +} + +provides { "qb-management" } \ No newline at end of file diff --git a/resources/[core]/ui-ownership/locales/cs.lua b/resources/[core]/ui-ownership/locales/cs.lua new file mode 100644 index 0000000..ec6a50c --- /dev/null +++ b/resources/[core]/ui-ownership/locales/cs.lua @@ -0,0 +1,87 @@ +-- Add translations by MC +local Translations = { + headers = { + ['bsm'] = 'Boss Menu - ', + }, + body = { + ['manage'] = 'Zaměstnanci', + ['managed'] = 'List zaměstnanců', + ['hire'] = 'Nabrat civilistu', + ['hired'] = 'Nabrat nejbližšího civilistu', + ['storage'] = 'Trezor', + ['storaged'] = 'Otevřít trezor', + ['outfits'] = 'Oblečení', + ['outfitsd'] = 'Uložené oblečení', + ['money'] = 'Finance', + ['moneyd'] = 'Zkontrolovat stav účtu', + ['mempl'] = 'Spravovat zaměstnance - ', + ['mngpl'] = 'Spravovat ', + ['grade'] = 'Hodnost: ', + ['fireemp'] = 'Propustit zaměstnance', + ['hireemp'] = 'Nabrat civilistu - ', + ['cid'] = 'ID hráče: ', + ['balance'] = 'Stav účtu: $', + ['deposit'] = 'Vložit peníze', + ['depositd'] = 'Vložit peníze na účet', + ['withdraw'] = 'Vybrat peníze', + ['withdrawd'] = 'Vybrat penize z kasy', + ['depositm'] = 'Vložit peníze
Zůstatek financí: $', + ['withdrawm'] = 'Vybrat peníze
Zůstatek financí: $', + ['submit'] = 'Potrvdit', + ['amount'] = 'Hodnota', + ['return'] = 'Zpět', + ['exit'] = 'Odejít', + }, + drawtext = { + ['label'] = '[E] Open Job Management', + }, + target = { + ['label'] = 'Vedení Frakce', + }, + headersgang = { + ['bsm'] = 'Vedení gangů - ', + }, + bodygang = { + ['manage'] = 'Spravovat členy gangu', + ['managed'] = 'Přijímání nebo propouštění členů gangu', + ['hire'] = 'Nábor členů', + ['hired'] = 'Najmout členy Gangu', + ['storage'] = 'Přístup k úložišti', + ['storaged'] = 'Otevřít Gang Uložiště', + ['outfits'] = 'Outfity', + ['outfitsd'] = 'Výměna oblečení', + ['money'] = 'Správa peněz', + ['moneyd'] = 'Kontrola zůstatku Gangu', + ['mempl'] = 'Spravovat Gang členy - ', + ['mngpl'] = 'Spravovat ', + ['grade'] = 'Hodnost: ', + ['fireemp'] = 'Propustit člena', + ['hireemp'] = 'Nabrat civilistu - ', + ['cid'] = 'ID hráče: ', + ['balance'] = 'Stav účtu: $', + ['deposit'] = 'Vložit peníze', + ['depositd'] = 'Vložit peníze na účet', + ['withdraw'] = 'Vybrat peníze', + ['withdrawd'] = 'Vybrat penize z kasy', + ['depositm'] = 'Vložit peníze
Zůstatek financí: $', + ['withdrawm'] = 'Vybrat peníze
Zůstatek financí: $', + ['submit'] = 'Confirm', + ['amount'] = 'Potrvdit', + ['return'] = 'Zpět', + ['exit'] = 'Odejít', + }, + drawtextgang = { + ['label'] = '[E] Open Gang Management', + }, + targetgang = { + ['label'] = 'Gang Menu', + } +} + +if GetConvar('qb_locale', 'en') == 'cs' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-ownership/locales/de.lua b/resources/[core]/ui-ownership/locales/de.lua new file mode 100644 index 0000000..7b38c38 --- /dev/null +++ b/resources/[core]/ui-ownership/locales/de.lua @@ -0,0 +1,86 @@ +local Translations = { + headers = { + ['bsm'] = 'Boss-Menü - ', + }, + body = { + ['manage'] = 'Mitarbeiter verwalten', + ['managed'] = 'Überprüfe deine Mitarbeiterliste', + ['hire'] = 'Mitarbeiter einstellen', + ['hired'] = 'In der Nähe befindliche Zivilisten einstellen', + ['storage'] = 'Zugriff auf Lager', + ['storaged'] = 'Lager öffnen', + ['outfits'] = 'Outfits', + ['outfitsd'] = 'Gespeicherte Outfits ansehen', + ['money'] = 'Geldverwaltung', + ['moneyd'] = 'Kontostand des Unternehmens überprüfen', + ['mempl'] = 'Mitarbeiter verwalten - ', + ['mngpl'] = 'Verwalten ', + ['grade'] = 'Rang: ', + ['fireemp'] = 'Mitarbeiter entlassen', + ['hireemp'] = 'Mitarbeiter einstellen - ', + ['cid'] = 'Bürger-ID: ', + ['balance'] = 'Kontostand: $', + ['deposit'] = 'Einzahlen', + ['depositd'] = 'Geld auf das Konto einzahlen', + ['withdraw'] = 'Abheben', + ['withdrawd'] = 'Geld vom Konto abheben', + ['depositm'] = 'Geld einzahlen
Verfügbares Guthaben: $', + ['withdrawm'] = 'Geld abheben
Verfügbares Guthaben: $', + ['submit'] = 'Bestätigen', + ['amount'] = 'Betrag', + ['return'] = 'Zurück', + ['exit'] = 'Zurück', + }, + drawtext = { + ['label'] = '[E] Jobverwaltung öffnen', + }, + target = { + ['label'] = 'Boss-Menü', + }, + headersgang = { + ['bsm'] = 'Gang-Verwaltung - ', + }, + bodygang = { + ['manage'] = 'Gangmitglieder verwalten', + ['managed'] = 'Gangmitglieder rekrutieren oder entlassen', + ['hire'] = 'Mitglieder rekrutieren', + ['hired'] = 'Gangmitglieder einstellen', + ['storage'] = 'Zugriff auf Lager', + ['storaged'] = 'Gang-Lager öffnen', + ['outfits'] = 'Outfits', + ['outfitsd'] = 'Kleidung wechseln', + ['money'] = 'Geldverwaltung', + ['moneyd'] = 'Kontostand der Gang überprüfen', + ['mempl'] = 'Gangmitglieder verwalten - ', + ['mngpl'] = 'Verwalten ', + ['grade'] = 'Rang: ', + ['fireemp'] = 'Entlassen', + ['hireemp'] = 'Gangmitglieder einstellen - ', + ['cid'] = 'Bürger-ID: ', + ['balance'] = 'Kontostand: $', + ['deposit'] = 'Einzahlen', + ['depositd'] = 'Geld auf das Konto einzahlen', + ['withdraw'] = 'Abheben', + ['withdrawd'] = 'Geld vom Konto abheben', + ['depositm'] = 'Geld einzahlen
Verfügbares Guthaben: $', + ['withdrawm'] = 'Geld abheben
Verfügbares Guthaben: $', + ['submit'] = 'Bestätigen', + ['amount'] = 'Betrag', + ['return'] = 'Zurück', + ['exit'] = 'Beenden', + }, + drawtextgang = { + ['label'] = '[E] Gangverwaltung öffnen', + }, + targetgang = { + ['label'] = 'Gang-Menü', + } +} + +if GetConvar('qb_locale', 'en') == 'de' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-ownership/locales/en.lua b/resources/[core]/ui-ownership/locales/en.lua new file mode 100644 index 0000000..291d082 --- /dev/null +++ b/resources/[core]/ui-ownership/locales/en.lua @@ -0,0 +1,84 @@ +-- Add translations by MC +local Translations = { + headers = { + ['bsm'] = 'Boss Menu - ', + }, + body = { + ['manage'] = 'Manage Employees', + ['managed'] = 'Check your Employees List', + ['hire'] = 'Hire Employees', + ['hired'] = 'Hire Nearby Civilians', + ['storage'] = 'Storage Access', + ['storaged'] = 'Open Storage', + ['outfits'] = 'Outfits', + ['outfitsd'] = 'See Saved Outfits', + ['money'] = 'Money Management', + ['moneyd'] = 'Check your Company Balance', + ['mempl'] = 'Manage Employees - ', + ['mngpl'] = 'Manage ', + ['grade'] = 'Grade: ', + ['fireemp'] = 'Fire Employee', + ['hireemp'] = 'Hire Employees - ', + ['cid'] = 'Citizen ID: ', + ['balance'] = 'Balance: $', + ['deposit'] = 'Deposit', + ['depositd'] = 'Deposit Money into account', + ['withdraw'] = 'Withdraw', + ['withdrawd'] = 'Withdraw Money from account', + ['depositm'] = 'Deposit Money
Available Balance: $', + ['withdrawm'] = 'Withdraw Money
Available Balance: $', + ['submit'] = 'Confirm', + ['amount'] = 'Amount', + ['return'] = 'Return', + ['exit'] = 'Return', + }, + drawtext = { + ['label'] = '[E] Open Job Management', + }, + target = { + ['label'] = 'Boss Menu', + }, + headersgang = { + ['bsm'] = 'Gang Management - ', + }, + bodygang = { + ['manage'] = 'Manage Gang Members', + ['managed'] = 'Recruit or Fire Gang Members', + ['hire'] = 'Recruit Members', + ['hired'] = 'Hire Gang Members', + ['storage'] = 'Storage Access', + ['storaged'] = 'Open Gang Stash', + ['outfits'] = 'Outfits', + ['outfitsd'] = 'Change Clothes', + ['money'] = 'Money Management', + ['moneyd'] = 'Check your Gang Balance', + ['mempl'] = 'Manage Gang Members - ', + ['mngpl'] = 'Manage ', + ['grade'] = 'Grade: ', + ['fireemp'] = 'Fire', + ['hireemp'] = 'Hire Gang Members - ', + ['cid'] = 'Citizen ID: ', + ['balance'] = 'Balance: $', + ['deposit'] = 'Deposit', + ['depositd'] = 'Deposit Money into account', + ['withdraw'] = 'Withdraw', + ['withdrawd'] = 'Withdraw Money from account', + ['depositm'] = 'Deposit Money
Available Balance: $', + ['withdrawm'] = 'Withdraw Money
Available Balance: $', + ['submit'] = 'Confirm', + ['amount'] = 'Amount', + ['return'] = 'Return', + ['exit'] = 'Exit', + }, + drawtextgang = { + ['label'] = '[E] Open Gang Management', + }, + targetgang = { + ['label'] = 'Gang Menu', + } +} + +Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true +}) diff --git a/resources/[core]/ui-ownership/locales/es.lua b/resources/[core]/ui-ownership/locales/es.lua new file mode 100644 index 0000000..42f72a8 --- /dev/null +++ b/resources/[core]/ui-ownership/locales/es.lua @@ -0,0 +1,86 @@ +-- Add translations by Cocodrulo +local Translations = { + headers = { + ['bsm'] = 'Menú de Jefe - ', + }, + body = { + ['manage'] = 'Gestionar empleados', + ['managed'] = 'Revisa tu lista de empleados', + ['hire'] = 'Contratar empleados', + ['hired'] = 'Contratar civiles cercanos', + ['storage'] = 'Acceso a almacenamiento', + ['storaged'] = 'Abrir almacenamiento', + ['outfits'] = 'Atuendos', + ['outfitsd'] = 'Ver atuendos guardados', + ['money'] = 'Gestión de dinero', + ['moneyd'] = 'Revisar el saldo de tu empresa', + ['mempl'] = 'Gestionar empleados - ', + ['mngpl'] = 'Gestionar ', + ['grade'] = 'Rango: ', + ['fireemp'] = 'Despedir empleado', + ['hireemp'] = 'Contratar empleados - ', + ['cid'] = 'ID de ciudadano: ', + ['balance'] = 'Saldo: $', + ['deposit'] = 'Depositar', + ['depositd'] = 'Depositar dinero en la cuenta', + ['withdraw'] = 'Retirar', + ['withdrawd'] = 'Retirar dinero de la cuenta', + ['depositm'] = 'Depositar dinero
Saldo disponible: $', + ['withdrawm'] = 'Retirar dinero
Saldo disponible: $', + ['submit'] = 'Confirmar', + ['amount'] = 'Cantidad', + ['return'] = 'Volver', + ['exit'] = 'Salir', + }, + drawtext = { + ['label'] = '[E] Abrir gestión de trabajo', + }, + target = { + ['label'] = 'Menú de Jefe', + }, + headersgang = { + ['bsm'] = 'Gestión de Banda - ', + }, + bodygang = { + ['manage'] = 'Gestionar miembros de la banda', + ['managed'] = 'Reclutar o despedir miembros de la banda', + ['hire'] = 'Reclutar miembros', + ['hired'] = 'Contratar miembros de la banda', + ['storage'] = 'Acceso a almacenamiento', + ['storaged'] = 'Abrir alijo de la banda', + ['outfits'] = 'Atuendos', + ['outfitsd'] = 'Cambiar de ropa', + ['money'] = 'Gestión de dinero', + ['moneyd'] = 'Revisar el saldo de tu banda', + ['mempl'] = 'Gestionar miembros de la banda - ', + ['mngpl'] = 'Gestionar ', + ['grade'] = 'Rango: ', + ['fireemp'] = 'Despedir', + ['hireemp'] = 'Contratar miembros de la banda - ', + ['cid'] = 'ID de ciudadano: ', + ['balance'] = 'Saldo: $', + ['deposit'] = 'Depositar', + ['depositd'] = 'Depositar dinero en la cuenta', + ['withdraw'] = 'Retirar', + ['withdrawd'] = 'Retirar dinero de la cuenta', + ['depositm'] = 'Depositar dinero
Saldo disponible: $', + ['withdrawm'] = 'Retirar dinero
Saldo disponible: $', + ['submit'] = 'Confirmar', + ['amount'] = 'Cantidad', + ['return'] = 'Volver', + ['exit'] = 'Salir', + }, + drawtextgang = { + ['label'] = '[E] Abrir gestión de la banda', + }, + targetgang = { + ['label'] = 'Menú de la Banda', + } +} + +if GetConvar('qb_locale', 'en') == 'es' then + Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true + }) +end diff --git a/resources/[core]/ui-ownership/locales/fr.lua b/resources/[core]/ui-ownership/locales/fr.lua new file mode 100644 index 0000000..c7f412d --- /dev/null +++ b/resources/[core]/ui-ownership/locales/fr.lua @@ -0,0 +1,97 @@ +local Translations = { + headers = { + ['bsm'] = 'Gestion Job - ', + }, + drawtext = { + ['label'] = '[E] Gestion Job', + }, + target = { + ['label'] = 'Menu Job', + }, + body = { + ['manage'] = 'Gérer les membres', + ['managed'] = 'Regarder la liste des membres', + ['hire'] = 'Recruter une personne', + ['hired'] = 'Recruter un civil à proximité', + ['storage'] = 'Accès au coffre', + ['storaged'] = 'Ouvrir le coffre', + ['outfits'] = 'Tenues', + ['outfitsd'] = 'Voir les tenues', + ['money'] = 'Gestion d\'argent', + ['moneyd'] = 'Consulter le solde', + ['mempl'] = 'Gérer un membre - ', + ['mngpl'] = 'Gérer ', + ['grade'] = 'Grade: ', + ['fireemp'] = 'Expulser', + ['hireemp'] = 'Recruter - ', + ['hiredpeople'] = 'Vous embauchez %s %s en tant que %s', + ['hiredas'] = 'Vous êtes embauché en tant que %s', + ['cannotpromote'] = 'Vous ne pouvez pas promouvoir à ce grade', + ['sucessfulluypromoted'] = 'Membre promu avec succès.', + ['bepromoted'] = 'Vous avez été promu en tant que %s', + ['gradenotexists'] = 'Ce grade n\'existe pas', + ['civiliannotincity'] = 'La personne n\'est pas en ville', + ['successfired'] = 'Employé licencié', + ['befired'] = 'Vous avez été licencié, bonne chance', + ['cantfiremyself'] = 'Vous ne pouvez pas vous licencier vous même', + ['error'] = 'Erreur', + ['cid'] = 'Citizen ID: ', + ['balance'] = 'Solde: $', + ['deposit'] = 'Déposer', + ['depositd'] = 'Déposer de l\'argent dans le compte', + ['withdraw'] = 'Retirer', + ['withdrawd'] = 'Retirer de l\'argent depuis le compte', + ['depositm'] = 'Dépôt d\'argent
Solde disponible: $', + ['withdrawm'] = 'Retrait d\'argent
Solde disponible: $', + ['submit'] = 'Confirmer', + ['amount'] = 'Montant', + ['return'] = 'Retour', + ['exit'] = 'Quitter', + }, + headersgang = { + ['bsm'] = 'Gestion Gang - ', + }, + drawtextgang = { + ['label'] = '[E] Gestion Gang', + }, + targetgang = { + ['label'] = 'Menu Gang', + }, + bodygang = { + ['manage'] = 'Gérer les membres', + ['managed'] = 'Regarder la liste de smembres', + ['hire'] = 'Recruter une personne', + ['hired'] = 'Recruter un civil à proximité', + ['storage'] = 'Accès au coffre', + ['storaged'] = 'Ouvrir le coffre', + ['outfits'] = 'Tenues', + ['outfitsd'] = 'Voir les tenues', + ['money'] = 'Gestion d\'argent', + ['moneyd'] = 'Consulter le solde', + ['mempl'] = 'Gérer un membre - ', + ['mngpl'] = 'Gérer ', + ['grade'] = 'Grade: ', + ['fireemp'] = 'Expulser', + ['hireemp'] = 'Recruter - ', + ['cid'] = 'Citizen ID: ', + ['balance'] = 'Solde: $', + ['deposit'] = 'Déposer', + ['depositd'] = 'Déposer de l\'argent dans le compte', + ['withdraw'] = 'Retirer', + ['withdrawd'] = 'Retirer de l\'argent depuis le compte', + ['depositm'] = 'Dépôt d\'argent
Solde disponible: $', + ['withdrawm'] = 'Retrait d\'argent
Solde disponible: $', + ['submit'] = 'Confirmer', + ['amount'] = 'Montant', + ['return'] = 'Retour', + ['exit'] = 'Quitter', + } +} + +if GetConvar('qb_locale', 'en') == 'fr' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-ownership/locales/nl.lua b/resources/[core]/ui-ownership/locales/nl.lua new file mode 100644 index 0000000..e9fa86c --- /dev/null +++ b/resources/[core]/ui-ownership/locales/nl.lua @@ -0,0 +1,87 @@ +-- Add translations by MC +local Translations = { + headers = { + ['bsm'] = 'Boss Menu - ', + }, + body = { + ['manage'] = 'Medewerkers Beheren', + ['managed'] = 'Medewerkerslijst', + ['hire'] = 'Medewerker aannemen', + ['hired'] = 'Hire Nearby Civilians', + ['storage'] = 'Toegang opslag', + ['storaged'] = 'Open opslag', + ['outfits'] = 'Outfits', + ['outfitsd'] = 'Opgeslagen outfits', + ['money'] = 'Financieel management', + ['moneyd'] = 'Bedrijfsfinciancien', + ['mempl'] = 'Medewerkers Beheren - ', + ['mngpl'] = 'Beheer ', + ['grade'] = 'Grade: ', + ['fireemp'] = 'Medewerker ontslagen', + ['hireemp'] = 'MEdewerker aannemen - ', + ['cid'] = 'Burger ID: ', + ['balance'] = 'Balans: €', + ['deposit'] = 'Storten', + ['depositd'] = 'Geld storten op rekening', + ['withdraw'] = 'Opnemen', + ['withdrawd'] = 'Geld opnemen van rekening', + ['depositm'] = 'Geld storten
Beschikbare balans: €', + ['withdrawm'] = 'Geld opnemen
Available balans: €', + ['submit'] = 'Bevestigen', + ['amount'] = 'Hoeveelheid', + ['return'] = 'Terug', + ['exit'] = 'Afsluiten', + }, + drawtext = { + ['label'] = '[E] Open werkbeheer', + }, + target = { + ['label'] = 'Boss Menu', + }, + headersgang = { + ['bsm'] = 'Gang Beheer - ', + }, + bodygang = { + ['manage'] = 'Beheer Bendeleden', + ['managed'] = 'Werv of Ontsla Bendeleden', + ['hire'] = 'Werv Leden', + ['hired'] = 'Huur Bendeleden In', + ['storage'] = 'Opslagtoegang', + ['storaged'] = 'Open Bendevoorraad', + ['outfits'] = 'Outfits', + ['outfitsd'] = 'Kleed je om', + ['money'] = 'Geldbeheer', + ['moneyd'] = 'Controleer je Bende Balans', + ['mempl'] = 'Beheer Bendeleden - ', + ['mngpl'] = 'Beheer ', + ['grade'] = 'Rang: ', + ['fireemp'] = 'Ontsla', + ['hireemp'] = 'Huur Bendeleden In - ', + ['cid'] = 'Burger ID: ', + ['balance'] = 'Balans: $', + ['deposit'] = 'Storten', + ['depositd'] = 'Stort Geld op rekening', + ['withdraw'] = 'Opnemen', + ['withdrawd'] = 'Neem Geld van rekening op', + ['depositm'] = 'Stort Geld
Beschikbare Balans: €', + ['withdrawm'] = 'Neem Geld Op
Beschikbare Balans: €', + ['submit'] = 'Bevestig', + ['amount'] = 'Bedrag', + ['return'] = 'Terug', + ['exit'] = 'Afsluiten', + }, + drawtextgang = { + ['label'] = '[E] Open Gang beheer', + }, + targetgang = { + ['label'] = 'Gang Menu', + } +} + +if GetConvar('qb_locale', 'en') == 'nl' then + Lang = Lang or Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-ownership/locales/pt-br.lua b/resources/[core]/ui-ownership/locales/pt-br.lua new file mode 100644 index 0000000..2a859e1 --- /dev/null +++ b/resources/[core]/ui-ownership/locales/pt-br.lua @@ -0,0 +1,86 @@ +local Translations = { + headers = { + ['bsm'] = 'Menu de Chefe - ', + }, + body = { + ['manage'] = 'Gerenciar Funcionários', + ['managed'] = 'Verificar sua Lista de Funcionários', + ['hire'] = 'Contratar Funcionários', + ['hired'] = 'Contratar Civis Próximos', + ['storage'] = 'Acesso ao Armazenamento', + ['storaged'] = 'Abrir Armazenamento', + ['outfits'] = 'Roupas', + ['outfitsd'] = 'Ver Roupas Salvas', + ['money'] = 'Gerenciamento de Dinheiro', + ['moneyd'] = 'Verificar o Saldo da Sua Empresa', + ['mempl'] = 'Gerenciar Funcionários - ', + ['mngpl'] = 'Gerenciar ', + ['grade'] = 'Cargo: ', + ['fireemp'] = 'Demitir Funcionário', + ['hireemp'] = 'Contratar Funcionários - ', + ['cid'] = 'ID do Cidadão: ', + ['balance'] = 'Saldo: $', + ['deposit'] = 'Depositar', + ['depositd'] = 'Depositar Dinheiro na Conta', + ['withdraw'] = 'Sacar', + ['withdrawd'] = 'Sacar Dinheiro da Conta', + ['depositm'] = 'Depositar Dinheiro
Saldo Disponível: $', + ['withdrawm'] = 'Sacar Dinheiro
Saldo Disponível: $', + ['submit'] = 'Confirmar', + ['amount'] = 'Quantidade', + ['return'] = 'Voltar', + ['exit'] = 'Sair', + }, + drawtext = { + ['label'] = '[E] Abrir Gerenciamento de Trabalho', + }, + target = { + ['label'] = 'Menu de Chefe', + }, + headersgang = { + ['bsm'] = 'Gerenciamento de Gangue - ', + }, + bodygang = { + ['manage'] = 'Gerenciar Membros da Gangue', + ['managed'] = 'Recrutar ou Demitir Membros da Gangue', + ['hire'] = 'Recrutar Membros', + ['hired'] = 'Contratar Membros da Gangue', + ['storage'] = 'Acesso ao Armazém', + ['storaged'] = 'Abrir Esconderijo da Gangue', + ['outfits'] = 'Roupas', + ['outfitsd'] = 'Trocar de Roupas', + ['money'] = 'Gerenciamento de Dinheiro', + ['moneyd'] = 'Verificar o Saldo da Sua Gangue', + ['mempl'] = 'Gerenciar Membros da Gangue - ', + ['mngpl'] = 'Gerenciar ', + ['grade'] = 'Cargo: ', + ['fireemp'] = 'Demitir', + ['hireemp'] = 'Contratar Membros da Gangue - ', + ['cid'] = 'ID do Cidadão: ', + ['balance'] = 'Saldo: $', + ['deposit'] = 'Depositar', + ['depositd'] = 'Depositar Dinheiro na Conta', + ['withdraw'] = 'Sacar', + ['withdrawd'] = 'Sacar Dinheiro da Conta', + ['depositm'] = 'Depositar Dinheiro
Saldo Disponível: $', + ['withdrawm'] = 'Sacar Dinheiro
Saldo Disponível: $', + ['submit'] = 'Confirmar', + ['amount'] = 'Quantidade', + ['return'] = 'Voltar', + ['exit'] = 'Sair', + }, + drawtextgang = { + ['label'] = '[E] Abrir Gerenciamento de Gangue', + }, + targetgang = { + ['label'] = 'Menu de Gangue', + } +} + +if GetConvar('qb_locale', 'en') == 'pt-br' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-ownership/locales/pt.lua b/resources/[core]/ui-ownership/locales/pt.lua new file mode 100644 index 0000000..0e95200 --- /dev/null +++ b/resources/[core]/ui-ownership/locales/pt.lua @@ -0,0 +1,86 @@ +local Translations = { + headers = { + ['bsm'] = 'Menu do Chefe - ', + }, + body = { + ['manage'] = 'Gerir Funcionários', + ['managed'] = 'Verificar sua Lista de Funcionários', + ['hire'] = 'Contratar Funcionários', + ['hired'] = 'Contratar Civis próximos', + ['storage'] = 'Acesso ao Armazenamento', + ['storaged'] = 'Abrir Armazenamento', + ['outfits'] = 'Fatos', + ['outfitsd'] = 'Ver Fatos Salvos', + ['money'] = 'Gestão de Dinheiro', + ['moneyd'] = 'Verificar o Saldo da Empresa', + ['mempl'] = 'Gerir Funcionários - ', + ['mngpl'] = 'Gerir ', + ['grade'] = 'Cargo: ', + ['fireemp'] = 'Despedir Funcionário', + ['hireemp'] = 'Contratar Funcionários - ', + ['cid'] = 'Número de Cidadão: ', + ['balance'] = 'Saldo: €', + ['deposit'] = 'Depósito', + ['depositd'] = 'Depositar Dinheiro na conta', + ['withdraw'] = 'Levantar', + ['withdrawd'] = 'Levantar Dinheiro da conta', + ['depositm'] = 'Depositar Dinheiro
Saldo Disponível: €', + ['withdrawm'] = 'Levantar Dinheiro
Saldo Disponível: €', + ['submit'] = 'Confirmar', + ['amount'] = 'Montante', + ['return'] = 'Voltar', + ['exit'] = 'Voltar', + }, + drawtext = { + ['label'] = '[E] Abrir Gestão ', + }, + target = { + ['label'] = 'Menu do Chefe', + }, + headersgang = { + ['bsm'] = 'Gerir Gang - ', + }, + bodygang = { + ['manage'] = 'Gerir Membros do Gang', + ['managed'] = 'Recrutar ou Despedir Membros do Gang', + ['hire'] = 'Recrutar Membros', + ['hired'] = 'Contratar Membros do Gang', + ['storage'] = 'Acesso ao Armazenamento', + ['storaged'] = 'Abrir Armazenamento do Gang', + ['outfits'] = 'Roupas', + ['outfitsd'] = 'Mudar de Roupa', + ['money'] = 'Gestão de Dinheiro', + ['moneyd'] = 'Verificar o Saldo do Gang', + ['mempl'] = 'Gerir Membros do Gang - ', + ['mngpl'] = 'Gerir ', + ['grade'] = 'Grau: ', + ['fireemp'] = 'Despedir', + ['hireemp'] = 'Contratar Membros - ', + ['cid'] = 'ID de cidadão: ', + ['balance'] = 'Saldo: €', + ['deposit'] = 'Depositar', + ['depositd'] = 'Depositar dinheiro na conta', + ['withdraw'] = 'Levantamento', + ['withdrawd'] = 'Levantar dinheiro da conta', + ['depositm'] = 'Depositar Dinheiro
Saldo Disponível: €', + ['withdrawm'] = 'Levantar Dinheiro
Saldo Disponível: €', + ['submit'] = 'Confirmar', + ['amount'] = 'Montante', + ['return'] = 'Voltar', + ['exit'] = 'Voltar', + }, + drawtextgang = { + ['label'] = '[E] Abrir Gestão Gang', + }, + targetgang = { + ['label'] = 'Gang Menu', + } +} + +if GetConvar('qb_locale', 'en') == 'pt' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/resources/[core]/ui-ownership/server/sv_boss.lua b/resources/[core]/ui-ownership/server/sv_boss.lua new file mode 100644 index 0000000..a9b1762 --- /dev/null +++ b/resources/[core]/ui-ownership/server/sv_boss.lua @@ -0,0 +1,184 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +function ExploitBan(id, reason) + MySQL.insert('INSERT INTO bans (name, license, discord, ip, reason, expire, bannedby) VALUES (?, ?, ?, ?, ?, ?, ?)', { + GetPlayerName(id), + QBCore.Functions.GetIdentifier(id, 'license'), + QBCore.Functions.GetIdentifier(id, 'discord'), + QBCore.Functions.GetIdentifier(id, 'ip'), + reason, + 2147483647, + 'qb-management' + }) + TriggerEvent('qb-log:server:CreateLog', 'bans', 'Player Banned', 'red', string.format('%s was banned by %s for %s', GetPlayerName(id), 'qb-management', reason), true) + DropPlayer(id, 'You were permanently banned by the server for: Exploiting') +end + +-- Get Employees +QBCore.Functions.CreateCallback('qb-bossmenu:server:GetEmployees', function(source, cb, jobname) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + + if not Player.PlayerData.job.isboss then + ExploitBan(src, 'GetEmployees Exploiting') + return + end + + local employees = {} + + local players = MySQL.query.await("SELECT * FROM `players` WHERE `job` LIKE '%" .. jobname .. "%'", {}) + + if players[1] ~= nil then + for _, value in pairs(players) do + local Target = QBCore.Functions.GetPlayerByCitizenId(value.citizenid) or QBCore.Functions.GetOfflinePlayerByCitizenId(value.citizenid) + + if Target and Target.PlayerData.job.name == jobname then + local isOnline = Target.PlayerData.source + employees[#employees + 1] = { + empSource = Target.PlayerData.citizenid, + grade = Target.PlayerData.job.grade, + isboss = Target.PlayerData.job.isboss, + name = (isOnline and '🟢 ' or '❌ ') .. Target.PlayerData.charinfo.firstname .. ' ' .. Target.PlayerData.charinfo.lastname + } + end + end + table.sort(employees, function(a, b) + return a.grade.level > b.grade.level + end) + end + cb(employees) +end) + +RegisterNetEvent('qb-bossmenu:server:stash', function() + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if not Player then return end + local playerJob = Player.PlayerData.job + if not playerJob.isboss then return end + local playerPed = GetPlayerPed(src) + local playerCoords = GetEntityCoords(playerPed) + if not Config.BossMenus[playerJob.name] then return end + local bossCoords = Config.BossMenus[playerJob.name] + for i = 1, #bossCoords do + local coords = bossCoords[i] + if #(playerCoords - coords) < 2.5 then + local stashName = 'boss_' .. playerJob.name + exports['qb-inventory']:OpenInventory(src, stashName, { + maxweight = 4000000, + slots = 25, + }) + return + end + end +end) + +-- Grade Change +RegisterNetEvent('qb-bossmenu:server:GradeUpdate', function(data) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local Employee = QBCore.Functions.GetPlayerByCitizenId(data.cid) or QBCore.Functions.GetOfflinePlayerByCitizenId(data.cid) + + if not Player.PlayerData.job.isboss then + ExploitBan(src, 'GradeUpdate Exploiting') + return + end + if data.grade > Player.PlayerData.job.grade.level then + TriggerClientEvent('QBCore:Notify', src, 'You cannot promote to this rank!', 'error') + return + end + + if Employee then + if Employee.Functions.SetJob(Player.PlayerData.job.name, data.grade) then + TriggerClientEvent('QBCore:Notify', src, 'Sucessfully promoted!', 'success') + Employee.Functions.Save() + + if Employee.PlayerData.source then -- Player is online + TriggerClientEvent('QBCore:Notify', Employee.PlayerData.source, 'You have been promoted to ' .. data.gradename .. '.', 'success') + end + else + TriggerClientEvent('QBCore:Notify', src, 'Promotion grade does not exist.', 'error') + end + end + TriggerClientEvent('qb-bossmenu:client:OpenMenu', src) +end) + +-- Fire Employee +RegisterNetEvent('qb-bossmenu:server:FireEmployee', function(target) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local Employee = QBCore.Functions.GetPlayerByCitizenId(target) or QBCore.Functions.GetOfflinePlayerByCitizenId(target) + + if not Player.PlayerData.job.isboss then + ExploitBan(src, 'FireEmployee Exploiting') + return + end + + if Employee then + if target == Player.PlayerData.citizenid then + TriggerClientEvent('QBCore:Notify', src, 'You can\'t fire yourself', 'error') + return + elseif Employee.PlayerData.job.grade.level > Player.PlayerData.job.grade.level then + TriggerClientEvent('QBCore:Notify', src, 'You cannot fire this citizen!', 'error') + return + end + if Employee.Functions.SetJob('unemployed', '0') then + Employee.Functions.Save() + TriggerClientEvent('QBCore:Notify', src, 'Employee fired!', 'success') + TriggerEvent('qb-log:server:CreateLog', 'bossmenu', 'Job Fire', 'red', Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname .. ' successfully fired ' .. Employee.PlayerData.charinfo.firstname .. ' ' .. Employee.PlayerData.charinfo.lastname .. ' (' .. Player.PlayerData.job.name .. ')', false) + + if Employee.PlayerData.source then -- Player is online + TriggerClientEvent('QBCore:Notify', Employee.PlayerData.source, 'You have been fired! Good luck.', 'error') + end + else + TriggerClientEvent('QBCore:Notify', src, 'Error..', 'error') + end + end + TriggerClientEvent('qb-bossmenu:client:OpenMenu', src) +end) + +-- Recruit Player +RegisterNetEvent('qb-bossmenu:server:HireEmployee', function(recruit) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local Target = QBCore.Functions.GetPlayer(recruit) + + if not Player.PlayerData.job.isboss then + ExploitBan(src, 'HireEmployee Exploiting') + return + end + + if Target and Target.Functions.SetJob(Player.PlayerData.job.name, 0) then + TriggerClientEvent('QBCore:Notify', src, 'You hired ' .. (Target.PlayerData.charinfo.firstname .. ' ' .. Target.PlayerData.charinfo.lastname) .. ' come ' .. Player.PlayerData.job.label .. '', 'success') + TriggerClientEvent('QBCore:Notify', Target.PlayerData.source, 'You were hired as ' .. Player.PlayerData.job.label .. '', 'success') + TriggerEvent('qb-log:server:CreateLog', 'bossmenu', 'Recruit', 'lightgreen', (Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname) .. ' successfully recruited ' .. (Target.PlayerData.charinfo.firstname .. ' ' .. Target.PlayerData.charinfo.lastname) .. ' (' .. Player.PlayerData.job.name .. ')', false) + end + TriggerClientEvent('qb-bossmenu:client:OpenMenu', src) +end) + +-- Get closest player sv +QBCore.Functions.CreateCallback('qb-bossmenu:getplayers', function(source, cb) + local src = source + local players = {} + local PlayerPed = GetPlayerPed(src) + local pCoords = GetEntityCoords(PlayerPed) + for _, v in pairs(QBCore.Functions.GetPlayers()) do + local targetped = GetPlayerPed(v) + local tCoords = GetEntityCoords(targetped) + local dist = #(pCoords - tCoords) + if PlayerPed ~= targetped and dist < 10 then + local ped = QBCore.Functions.GetPlayer(v) + players[#players + 1] = { + id = v, + coords = GetEntityCoords(targetped), + name = ped.PlayerData.charinfo.firstname .. ' ' .. ped.PlayerData.charinfo.lastname, + citizenid = ped.PlayerData.citizenid, + sources = GetPlayerPed(ped.PlayerData.source), + sourceplayer = ped.PlayerData.source + } + end + end + table.sort(players, function(a, b) + return a.name < b.name + end) + cb(players) +end) diff --git a/resources/[core]/ui-ownership/server/sv_gang.lua b/resources/[core]/ui-ownership/server/sv_gang.lua new file mode 100644 index 0000000..dbfb710 --- /dev/null +++ b/resources/[core]/ui-ownership/server/sv_gang.lua @@ -0,0 +1,165 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +-- Get Employees +QBCore.Functions.CreateCallback('qb-gangmenu:server:GetEmployees', function(source, cb, gangname) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + + if not Player.PlayerData.gang.isboss then + ExploitBan(src, 'GetEmployees Exploiting') + return + end + + local employees = {} + local players = MySQL.query.await("SELECT * FROM `players` WHERE `gang` LIKE '%" .. gangname .. "%'", {}) + if players[1] ~= nil then + for _, value in pairs(players) do + local Target = QBCore.Functions.GetPlayerByCitizenId(value.citizenid) or QBCore.Functions.GetOfflinePlayerByCitizenId(value.citizenid) + + if Target then + local isOnline = Target.PlayerData.source + employees[#employees + 1] = { + empSource = Target.PlayerData.citizenid, + grade = Target.PlayerData.gang.grade, + isboss = Target.PlayerData.gang.isboss, + name = (isOnline and '🟢 ' or '❌ ') .. Target.PlayerData.charinfo.firstname .. ' ' .. Target.PlayerData.charinfo.lastname + } + end + end + end + cb(employees) +end) + +RegisterNetEvent('qb-gangmenu:server:stash', function() + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if not Player then return end + local playerGang = Player.PlayerData.gang + if not playerGang.isboss then return end + local playerPed = GetPlayerPed(src) + local playerCoords = GetEntityCoords(playerPed) + if not Config.GangMenus[playerGang.name] then return end + local bossCoords = Config.GangMenus[playerGang.name] + for i = 1, #bossCoords do + local coords = bossCoords[i] + if #(playerCoords - coords) < 2.5 then + local stashName = 'boss_' .. playerGang.name + exports['qb-inventory']:OpenInventory(src, stashName, { + maxweight = 4000000, + slots = 25, + }) + return + end + end +end) + +-- Grade Change +RegisterNetEvent('qb-gangmenu:server:GradeUpdate', function(data) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local Employee = QBCore.Functions.GetPlayerByCitizenId(data.cid) or QBCore.Functions.GetOfflinePlayerByCitizenId(data.cid) + + if not Player.PlayerData.gang.isboss then + ExploitBan(src, 'GradeUpdate Exploiting') + return + end + if data.grade > Player.PlayerData.gang.grade.level then + TriggerClientEvent('QBCore:Notify', src, 'You cannot promote to this rank!', 'error') + return + end + + if Employee then + if Employee.Functions.SetGang(Player.PlayerData.gang.name, data.grade) then + TriggerClientEvent('QBCore:Notify', src, 'Successfully promoted!', 'success') + Employee.Functions.Save() + + if Employee.PlayerData.source then + TriggerClientEvent('QBCore:Notify', Employee.PlayerData.source, 'You have been promoted to ' .. data.gradename .. '.', 'success') + end + else + TriggerClientEvent('QBCore:Notify', src, 'Grade does not exist.', 'error') + end + end + TriggerClientEvent('qb-gangmenu:client:OpenMenu', src) +end) + +-- Fire Member +RegisterNetEvent('qb-gangmenu:server:FireMember', function(target) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local Employee = QBCore.Functions.GetPlayerByCitizenId(target) or QBCore.Functions.GetOfflinePlayerByCitizenId(target) + + if not Player.PlayerData.gang.isboss then + ExploitBan(src, 'FireEmployee Exploiting') + return + end + + if Employee then + if target == Player.PlayerData.citizenid then + TriggerClientEvent('QBCore:Notify', src, 'You can\'t kick yourself out of the gang!', 'error') + return + elseif Employee.PlayerData.gang.grade.level > Player.PlayerData.gang.grade.level then + TriggerClientEvent('QBCore:Notify', src, 'You cannot fire this citizen!', 'error') + return + end + if Employee.Functions.SetGang('none', '0') then + Employee.Functions.Save() + TriggerEvent('qb-log:server:CreateLog', 'gangmenu', 'Gang Fire', 'orange', Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname .. ' successfully fired ' .. Employee.PlayerData.charinfo.firstname .. ' ' .. Employee.PlayerData.charinfo.lastname .. ' (' .. Player.PlayerData.gang.name .. ')', false) + TriggerClientEvent('QBCore:Notify', src, 'Gang Member fired!', 'success') + + if Employee.PlayerData.source then -- Player is online + TriggerClientEvent('QBCore:Notify', Employee.PlayerData.source, 'You have been expelled from the gang!', 'error') + end + else + TriggerClientEvent('QBCore:Notify', src, 'Error.', 'error') + end + end + TriggerClientEvent('qb-gangmenu:client:OpenMenu', src) +end) + +-- Recruit Player +RegisterNetEvent('qb-gangmenu:server:HireMember', function(recruit) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local Target = QBCore.Functions.GetPlayer(recruit) + + if not Player.PlayerData.gang.isboss then + ExploitBan(src, 'HireEmployee Exploiting') + return + end + + if Target and Target.Functions.SetGang(Player.PlayerData.gang.name, 0) then + TriggerClientEvent('QBCore:Notify', src, 'You hired ' .. (Target.PlayerData.charinfo.firstname .. ' ' .. Target.PlayerData.charinfo.lastname) .. ' come ' .. Player.PlayerData.gang.label .. '', 'success') + TriggerClientEvent('QBCore:Notify', Target.PlayerData.source, 'You have been hired as ' .. Player.PlayerData.gang.label .. '', 'success') + TriggerEvent('qb-log:server:CreateLog', 'gangmenu', 'Recruit', 'yellow', (Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname) .. ' successfully recruited ' .. Target.PlayerData.charinfo.firstname .. ' ' .. Target.PlayerData.charinfo.lastname .. ' (' .. Player.PlayerData.gang.name .. ')', false) + end + TriggerClientEvent('qb-gangmenu:client:OpenMenu', src) +end) + +-- Get closest player sv +QBCore.Functions.CreateCallback('qb-gangmenu:getplayers', function(source, cb) + local src = source + local players = {} + local PlayerPed = GetPlayerPed(src) + local pCoords = GetEntityCoords(PlayerPed) + for _, v in pairs(QBCore.Functions.GetPlayers()) do + local targetped = GetPlayerPed(v) + local tCoords = GetEntityCoords(targetped) + local dist = #(pCoords - tCoords) + if PlayerPed ~= targetped and dist < 10 then + local ped = QBCore.Functions.GetPlayer(v) + players[#players + 1] = { + id = v, + coords = GetEntityCoords(targetped), + name = ped.PlayerData.charinfo.firstname .. ' ' .. ped.PlayerData.charinfo.lastname, + citizenid = ped.PlayerData.citizenid, + sources = GetPlayerPed(ped.PlayerData.source), + sourceplayer = ped.PlayerData.source + } + end + end + table.sort(players, function(a, b) + return a.name < b.name + end) + cb(players) +end) diff --git a/resources/[core]/ui-spawn/.github/ISSUE_TEMPLATE/bug_report.md b/resources/[core]/ui-spawn/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..62f702f --- /dev/null +++ b/resources/[core]/ui-spawn/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,32 @@ +--- +name: Bug report +about: Create a report to help us improve or fix something +title: "[BUG]" +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. A stranger to qbcore should be able to read your bug report and understand how to reproduce it themselves and understand how the feature should work normally. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Use this item '....' (item's name from shared.lua if applicable) +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Questions (please complete the following information):** + - When you last updated: [e.g. last week] + - Are you using custom resource? which ones? [e.g. zdiscord, qb-target] + - Have you renamed `qb-` to something custom? [e.g. yes/no] + +**Additional context** +Add any other context about the problem here. diff --git a/resources/[core]/ui-spawn/.github/ISSUE_TEMPLATE/feature-request.md b/resources/[core]/ui-spawn/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000..9e9bf3e --- /dev/null +++ b/resources/[core]/ui-spawn/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,20 @@ +--- +name: Feature Request +about: Suggest an idea for QBCore +title: "[SUGGESTION]" +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. + +**Describe the feature you'd like** +A clear and concise description of what you want to happen. and with as much detail as possible how it would function in your opinion. Please try to keep it unique. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered for people to have in mind just in case the main idea isn't liked but a derivative is. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/resources/[core]/ui-spawn/.github/auto_assign.yml b/resources/[core]/ui-spawn/.github/auto_assign.yml new file mode 100644 index 0000000..2a80921 --- /dev/null +++ b/resources/[core]/ui-spawn/.github/auto_assign.yml @@ -0,0 +1,17 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: author + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - /maintenance + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +skipKeywords: + - wip + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 0 \ No newline at end of file diff --git a/resources/[core]/ui-spawn/.github/contributing.md b/resources/[core]/ui-spawn/.github/contributing.md new file mode 100644 index 0000000..21fb806 --- /dev/null +++ b/resources/[core]/ui-spawn/.github/contributing.md @@ -0,0 +1,201 @@ +# Contributing to QBCore + +First of all, thank you for taking the time to contribute! + +These guidelines will help you help us in the best way possible regardless of your skill level. We ask that you try to read everything related to the way you'd like to contribute and try and use your best judgement for anything not covered. + +### Table of Contents + +[Code of Conduct](#code-of-conduct) + +[I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question) + +[How Can I Contribute?](#how-can-i-contribute) + * [Reporting Bugs](#reporting-bugs) + * [Suggesting Features / Enhancements](#suggesting-features--enhancements) + * [Your First Code Contribution](#your-first-code-contribution) + * [Pull Requests](#pull-requests) + +[Styleguides](#styleguides) + * [Git Commit Messages](#git-commit-messages) + * [Lua Styleguide](#lua-styleguide) + * [JavaScript Styleguide](#javascript-styleguide) + + + +## Code of Conduct + +- Refrain from using languages other than English. +- Refrain from discussing any politically charged or inflammatory topics. +- Uphold mature conversations and respect each other; excessive profanity, hate speech or any kind of harassment will not be tolerated. +- No advertising of any kind. +- Follow these guidelines. +- Do not mention members of github unless a question is directed at them and can't be answered by anyone else. +- Do not mention any of the development team for any reason. We will read things as we get to them. + +## I don't want to read this whole thing I just have a question!!! + +> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below. + +* [QBCore Website](https://qbcore.org) +* [QBCore Discord](https://discord.gg/qbcore) +* [FiveM Discord - #qbcore channel](https://discord.gg/fivem) + + + + + + + + + + +## How Can I Contribute? + +### Reporting Bugs + +The easiest way to contribute for most people is just to report bugs you find cause if nobody reports it there's a chance we'll never know it exists and then we'll never fix it. + +Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out the bug-report template with the information it asks for helps us resolve issues faster. + +> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. + +#### Before Submitting A Bug Report + +* **Check the docs** There's a chance what you see as a bug might just work differently than you expect and if you think it could work better consider a feature enhancement report instead. +* **Search the [discord](https://discord.gg/qbcore)** to see if anyone else has run into the issue and see if it was solved through user error or code changes. (if the code change isn't pending a PR and you know what you're doing consider submitting one following [Pull Requests](#pull-requests) ) +* **Determine which resource the problem should be reported in**. If the bug is related to the inventory for example report this bug under qb-inventory rather than under qb-core or some other resource. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Bug Report? + +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your bug is related to, create an issue on that repository and provide the following information by filling in bug-report template. + +Explain the problem and include additional details to help maintainers reproduce the problem: + +* **Use a clear and descriptive title** for the issue to identify the problem. +* **Describe the exact steps which reproduce the problem** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. If something happened with only a specific group or single item but not others, specify that. +* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. +* **Explain which behavior you expected to see instead and why.** +* **Include screenshots** which show the specific bug in action or before and after. +* **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below. + +Provide more context by answering these questions if possible: + +* **Did the problem start happening recently** (e.g. after updating to a new version of QBCore?) or was this always a problem? +* If the problem started happening recently, **can you reproduce the problem in an older version of QBCore?** What's the most recent commit in which the problem doesn't happen? +* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. + +Include details about your setup: + +* **When was your QBCore last updated?** +* **What OS is the server running on**? +* **Which *extra* resources do you have installed?** + + +--- + + +### Suggesting Features / Enhancements + +This section guides you through submitting an enhancement suggestion for QBCore, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion. + +Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in feature request template, including the steps that you imagine you would take if the feature you're requesting existed. + +#### Before Submitting An Enhancement Suggestion + +* **Make sure it doesn't already exist.** Sounds silly, but there's a lot of features built in to qbcore that people don't realize so take a look through the docs and stuff to make sure it's not already there. +* **Check if there's already PR which provides that enhancement.** +* **Determine which resource the enhancement should be suggested in.** if it fits with another resource suggest it in that resource. if it would be it's own resource suggest it in the main qb-core repository. +* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aqbcore-framework)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined which resource your enhancement suggestion is related to, create an issue on that repository and provide the following information: + +* **Use a clear and descriptive title** for the issue to identify the suggestion. +* **Provide a step-by-step description of the suggested enhancement** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). +* **Describe the current behavior** and **explain which behavior you expected to see instead** and why. +* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of QBCore which the suggestion is related to. +* **Explain why this enhancement would be useful.** +* **Be creative and unique.** Stealing ideas from popular servers 1:1 detail isn't going to get accepted. + + +--- + + + +### Your First Code Contribution + +Unsure where to begin contributing to QBCore? You can start by looking through these `beginner` and `help-wanted` issues. + + + +--- + + +### Pull Requests + +The process described here has several goals: + +- Maintain QBCore's quality. +- Fix problems that are important to users. +- Engage the community in working toward the best possible QBCore. +- Enable a sustainable system for QBCore's maintainers to review contributions. + +Please follow these steps to have your contribution considered by the maintainers: + +1. Follow all instructions in The Pull Request template. +2. Follow the [styleguides](#styleguides). +3. Await review by the reviewer(s). + +While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted. + + +--- + +## Styleguides + +### Git Commit Messages + +* Limit the first line to 72 characters or less. +* Reference issues and pull requests liberally after the first line. +* Consider starting the commit message with an applicable emoji: + * :art: `:art:` when improving the format/structure of the code + * :racehorse: `:racehorse:` when improving performance + * :memo: `:memo:` when writing docs + * :bug: `:bug:` when fixing a bug + * :fire: `:fire:` when removing code or files + * :white_check_mark: `:white_check_mark:` when adding tests + * :lock: `:lock:` when dealing with security + * :arrow_up: `:arrow_up:` when upgrading dependencies + * :arrow_down: `:arrow_down:` when downgrading dependencies + * :shirt: `:shirt:` when removing linter warnings + +### Lua Styleguide + +All lua code should be done using all the best practices of proper lua using the easiest to read yet fastest/most optimized methods of execution. + +- Use 4 Space indentation +- Aim for lua 5.4 (include `lua54 'yes'` in the fxmanifest.lua) +- Use `PlayerPedId()` instead of `GetPlayerPed(-1)` +- Use `#(vector3 - vector3)` instead of `GetDistanceBetweenCoords()` +- Don't create unnecessary threads. always try to find a better method of triggering events +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables +- For distance checking loops set longer waits if you're outside of a range +- Job specific loops should only run for players with that job, don't waste cycles +- When possible don't trust the client, esspecially with transactions +- Balance security and optimizations +- [Consider this Lua Performance guide](https://springrts.com/wiki/Lua_Performance) +- Use local varriables everywhere possible +- Make use of config options where it makes sense making features optional or customizable +- Instead of `table.insert(myTable, "Value")` use `myTable[#myTable + 1] = "Value"` +- Instead of `table.insert(ages, "bob", 30)` use `ages["bob"] = 30` + + +### JavaScript Styleguide + +- Use 4 Space indentation +- Don't repeat yourself.. if you're using the same operations in many different places convert them into a function with flexible variables. diff --git a/resources/[core]/ui-spawn/.github/pull_request_template.md b/resources/[core]/ui-spawn/.github/pull_request_template.md new file mode 100644 index 0000000..000f0f9 --- /dev/null +++ b/resources/[core]/ui-spawn/.github/pull_request_template.md @@ -0,0 +1,10 @@ +**Describe Pull request** +First, make sure you've read and are following the contribution guidelines and style guide and your code reflects that. +Write up a clear and concise description of what your pull request adds or fixes and if it's an added feature explain why you think it should be included in the core. + +If your PR is to fix an issue mention that issue here + +**Questions (please complete the following information):** +- Have you personally loaded this code into an updated qbcore project and checked all it's functionality? [yes/no] (Be honest) +- Does your code fit the style guidelines? [yes/no] +- Does your PR fit the contribution guidelines? [yes/no] diff --git a/resources/[core]/ui-spawn/.github/workflows/lint.yml b/resources/[core]/ui-spawn/.github/workflows/lint.yml new file mode 100644 index 0000000..2151a22 --- /dev/null +++ b/resources/[core]/ui-spawn/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: Lint +on: [push, pull_request_target] +jobs: + lint: + name: Lint Resource + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Lint + uses: iLLeniumStudios/fivem-lua-lint-action@v2 + with: + capture: "junit.xml" + args: "-t --formatter JUnit" + extra_libs: mysql+qblocales+polyzone+qbapartments + - name: Generate Lint Report + if: always() + uses: mikepenz/action-junit-report@v3 + with: + report_paths: "**/junit.xml" + check_name: Linting Report + fail_on_failure: false diff --git a/resources/[core]/ui-spawn/.github/workflows/stale.yml b/resources/[core]/ui-spawn/.github/workflows/stale.yml new file mode 100644 index 0000000..c18b212 --- /dev/null +++ b/resources/[core]/ui-spawn/.github/workflows/stale.yml @@ -0,0 +1,29 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '41 15 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has had 60 days of inactivity & will close within 7 days' + stale-pr-message: 'This PR has had 60 days of inactivity & will close within 7 days' + close-issue-label: 'Stale Closed' + close-pr-label: 'Stale Closed' + exempt-issue-labels: 'Suggestion' + exempt-pr-labels: 'Suggestion' diff --git a/resources/[core]/ui-spawn/LICENSE b/resources/[core]/ui-spawn/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/resources/[core]/ui-spawn/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/resources/[core]/ui-spawn/README.md b/resources/[core]/ui-spawn/README.md new file mode 100644 index 0000000..cee8219 --- /dev/null +++ b/resources/[core]/ui-spawn/README.md @@ -0,0 +1,61 @@ +# qb-spawn +Spawn Selector for QB-Core Framework :eagle: + +# License + + QBCore Framework + Copyright (C) 2021 Joshua Eger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see + + +## Dependencies +- [qb-core](https://github.com/qbcore-framework/qb-core) +- [qb-houses](https://github.com/qbcore-framework/qb-houses) - Lets player select the house +- [qb-apartment](https://github.com/qbcore-framework/qb-apartment) - Lets player select the apartment +- [qb-garages](https://github.com/qbcore-framework/qb-garages) - For house garages + +## Screenshots +![Spawn selector](https://i.imgur.com/nz0mPGe.png) + +## Features +- Ability to select spawn after selecting the character + +## Installation +### Manual +- Download the script and put it in the `[qb]` directory. +- Add the following code to your server.cfg/resouces.cfg +``` +ensure qb-core +ensure qb-spawn +ensure qb-apartments +ensure qb-garages +``` + +## Configuration +An example to add spawn option +``` +QB.Spawns = { + ["spawn1"] = { -- Needs to be unique + coords = vector4(1.1, -1.1, 1.1, 180.0), -- Coords player will be spawned + location = "spawn1", -- Needs to be unique + label = "Spawn 1 Name", -- This is the label which will show up in selection menu. + }, + ["spawn2"] = { -- Needs to be unique + coords = vector4(1.1, -1.1, 1.1, 180.0), -- Coords player will be spawned + location = "spawn2", -- Needs to be unique + label = "Spawn 2 Name", -- This is the label which will show up in selection menu. + }, +} +``` diff --git a/resources/[core]/ui-spawn/client.lua b/resources/[core]/ui-spawn/client.lua new file mode 100644 index 0000000..d343dc8 --- /dev/null +++ b/resources/[core]/ui-spawn/client.lua @@ -0,0 +1,228 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local camZPlus1 = 1500 +local camZPlus2 = 50 +local pointCamCoords = 75 +local pointCamCoords2 = 0 +local cam1Time = 500 +local cam2Time = 1000 +local choosingSpawn = false +local Houses = {} +local cam = nil +local cam2 = nil + +-- Functions + +local function SetDisplay(bool) + local translations = {} + for k in pairs(Lang.fallback and Lang.fallback.phrases or Lang.phrases) do + if k:sub(0, #'ui.') then + translations[k:sub(#'ui.' + 1)] = Lang:t(k) + end + end + choosingSpawn = bool + SetNuiFocus(bool, bool) + SendNUIMessage({ + action = 'showUi', + status = bool, + translations = translations + }) +end + +-- Events + +RegisterNetEvent('qb-spawn:client:openUI', function(value) + SetEntityVisible(PlayerPedId(), false) + DoScreenFadeOut(250) + Wait(1000) + DoScreenFadeIn(250) + QBCore.Functions.GetPlayerData(function(PlayerData) + cam = CreateCamWithParams('DEFAULT_SCRIPTED_CAMERA', PlayerData.position.x, PlayerData.position.y, PlayerData.position.z + camZPlus1, -85.00, 0.00, 0.00, 100.00, false, 0) + SetCamActive(cam, true) + RenderScriptCams(true, false, 1, true, true) + end) + Wait(500) + SetDisplay(value) +end) + +RegisterNetEvent('qb-houses:client:setHouseConfig', function(houseConfig) + Houses = houseConfig +end) + +RegisterNetEvent('qb-spawn:client:setupSpawns', function(cData, new, apps) + if not new then + QBCore.Functions.TriggerCallback('qb-spawn:server:getOwnedHouses', function(houses) + local myHouses = {} + if houses ~= nil then + for i = 1, (#houses), 1 do + myHouses[#myHouses + 1] = { + house = houses[i].house, + label = Houses[houses[i].house].adress, + } + end + end + + Wait(500) + SendNUIMessage({ + action = 'setupLocations', + locations = QB.Spawns, + houses = myHouses, + isNew = new + }) + end, cData.citizenid) + elseif new then + SendNUIMessage({ + action = 'setupAppartements', + locations = apps, + isNew = new + }) + end +end) + +-- NUI Callbacks + +RegisterNUICallback('exit', function(_, cb) + SetNuiFocus(false, false) + SendNUIMessage({ + action = 'showUi', + status = false + }) + choosingSpawn = false + cb('ok') +end) + +local function SetCam(campos) + cam2 = CreateCamWithParams('DEFAULT_SCRIPTED_CAMERA', campos.x, campos.y, campos.z + camZPlus1, 300.00, 0.00, 0.00, 110.00, false, 0) + PointCamAtCoord(cam2, campos.x, campos.y, campos.z + pointCamCoords) + SetCamActiveWithInterp(cam2, cam, cam1Time, true, true) + if DoesCamExist(cam) then + DestroyCam(cam, true) + end + Wait(cam1Time) + + cam = CreateCamWithParams('DEFAULT_SCRIPTED_CAMERA', campos.x, campos.y, campos.z + camZPlus2, 300.00, 0.00, 0.00, 110.00, false, 0) + PointCamAtCoord(cam, campos.x, campos.y, campos.z + pointCamCoords2) + SetCamActiveWithInterp(cam, cam2, cam2Time, true, true) + SetEntityCoords(PlayerPedId(), campos.x, campos.y, campos.z) +end + +RegisterNUICallback('setCam', function(data, cb) + local location = tostring(data.posname) + local type = tostring(data.type) + DoScreenFadeOut(200) + Wait(500) + DoScreenFadeIn(200) + if DoesCamExist(cam) then DestroyCam(cam, true) end + if DoesCamExist(cam2) then DestroyCam(cam2, true) end + if type == 'current' then + QBCore.Functions.GetPlayerData(function(PlayerData) + SetCam(PlayerData.position) + end) + elseif type == 'house' then + SetCam(Houses[location].coords.enter) + elseif type == 'normal' then + SetCam(QB.Spawns[location].coords) + elseif type == 'appartment' then + SetCam(Apartments.Locations[location].coords.enter) + end + cb('ok') +end) + +RegisterNUICallback('chooseAppa', function(data, cb) + local ped = PlayerPedId() + local appaYeet = data.appType + SetDisplay(false) + DoScreenFadeOut(500) + Wait(5000) + TriggerServerEvent('apartments:server:CreateApartment', appaYeet, Apartments.Locations[appaYeet].label, true) + TriggerServerEvent('QBCore:Server:OnPlayerLoaded') + TriggerEvent('QBCore:Client:OnPlayerLoaded') + FreezeEntityPosition(ped, false) + RenderScriptCams(false, true, 500, true, true) + SetCamActive(cam, false) + DestroyCam(cam, true) + SetCamActive(cam2, false) + DestroyCam(cam2, true) + SetEntityVisible(ped, true) + cb('ok') +end) + +local function PreSpawnPlayer() + SetDisplay(false) + DoScreenFadeOut(500) + Wait(2000) +end + +local function PostSpawnPlayer(ped) + FreezeEntityPosition(ped, false) + RenderScriptCams(false, true, 500, true, true) + SetCamActive(cam, false) + DestroyCam(cam, true) + SetCamActive(cam2, false) + DestroyCam(cam2, true) + SetEntityVisible(PlayerPedId(), true) + Wait(500) + DoScreenFadeIn(250) +end + +RegisterNUICallback('spawnplayer', function(data, cb) + local location = tostring(data.spawnloc) + local type = tostring(data.typeLoc) + local ped = PlayerPedId() + local PlayerData = QBCore.Functions.GetPlayerData() + local insideMeta = PlayerData.metadata['inside'] + if type == 'current' then + PreSpawnPlayer() + QBCore.Functions.GetPlayerData(function(pd) + ped = PlayerPedId() + SetEntityCoords(ped, pd.position.x, pd.position.y, pd.position.z) + SetEntityHeading(ped, pd.position.a) + FreezeEntityPosition(ped, false) + end) + + if insideMeta.house ~= nil then + local houseId = insideMeta.house + TriggerEvent('qb-houses:client:LastLocationHouse', houseId) + elseif insideMeta.apartment.apartmentType ~= nil or insideMeta.apartment.apartmentId ~= nil then + local apartmentType = insideMeta.apartment.apartmentType + local apartmentId = insideMeta.apartment.apartmentId + TriggerEvent('qb-apartments:client:LastLocationHouse', apartmentType, apartmentId) + end + TriggerServerEvent('QBCore:Server:OnPlayerLoaded') + TriggerEvent('QBCore:Client:OnPlayerLoaded') + PostSpawnPlayer() + elseif type == 'house' then + PreSpawnPlayer() + TriggerEvent('qb-houses:client:enterOwnedHouse', location) + TriggerServerEvent('QBCore:Server:OnPlayerLoaded') + TriggerEvent('QBCore:Client:OnPlayerLoaded') + TriggerServerEvent('qb-houses:server:SetInsideMeta', 0, false) + TriggerServerEvent('qb-apartments:server:SetInsideMeta', 0, 0, false) + PostSpawnPlayer() + elseif type == 'normal' then + local pos = QB.Spawns[location].coords + PreSpawnPlayer() + SetEntityCoords(ped, pos.x, pos.y, pos.z) + TriggerServerEvent('QBCore:Server:OnPlayerLoaded') + TriggerEvent('QBCore:Client:OnPlayerLoaded') + TriggerServerEvent('qb-houses:server:SetInsideMeta', 0, false) + TriggerServerEvent('qb-apartments:server:SetInsideMeta', 0, 0, false) + Wait(500) + SetEntityCoords(ped, pos.x, pos.y, pos.z) + SetEntityHeading(ped, pos.w) + PostSpawnPlayer() + end + cb('ok') +end) + +-- Threads + +CreateThread(function() + while true do + Wait(0) + if choosingSpawn then + DisableAllControlActions(0) + else + Wait(1000) + end + end +end) diff --git a/resources/[core]/ui-spawn/config.lua b/resources/[core]/ui-spawn/config.lua new file mode 100644 index 0000000..81f782c --- /dev/null +++ b/resources/[core]/ui-spawn/config.lua @@ -0,0 +1,27 @@ +QB = {} + +QB.Spawns = { + legion = { + coords = vector4(195.17, -933.77, 29.7, 144.5), + location = 'legion', + label = 'Legion Square', + }, + + policedp = { + coords = vector4(428.23, -984.28, 29.76, 3.5), + location = 'policedp', + label = 'Police Department', + }, + + paleto = { + coords = vector4(80.35, 6424.12, 31.67, 45.5), + location = 'paleto', + label = 'Paleto Bay', + }, + + motel = { + coords = vector4(327.56, -205.08, 53.08, 163.5), + location = 'motel', + label = 'Motels', + }, +} diff --git a/resources/[core]/ui-spawn/fxmanifest.lua b/resources/[core]/ui-spawn/fxmanifest.lua new file mode 100644 index 0000000..e49d797 --- /dev/null +++ b/resources/[core]/ui-spawn/fxmanifest.lua @@ -0,0 +1,31 @@ +fx_version 'cerulean' +game 'gta5' +lua54 'yes' +author 'Kakarot' +description 'Allows players to select a spawn point from a list of available locations' +version '1.2.0' + +shared_scripts { + '@qb-core/shared/locale.lua', + 'locales/en.lua', + 'locales/*.lua', + 'config.lua', + '@qb-apartments/config.lua', +} + +client_script 'client.lua' + +server_scripts { + '@oxmysql/lib/MySQL.lua', + 'server.lua' +} + +ui_page 'html/index.html' + +files { + 'html/index.html', + 'html/style.css', + 'html/vue.js', + 'html/reset.css' +} +provides { "qb-spawn" } \ No newline at end of file diff --git a/resources/[core]/ui-spawn/html/index.html b/resources/[core]/ui-spawn/html/index.html new file mode 100644 index 0000000..f3c5f4b --- /dev/null +++ b/resources/[core]/ui-spawn/html/index.html @@ -0,0 +1,122 @@ + + + + + + QBCore - Spawnlocation + + + + + + + + + +
+
+
+
+
+

+ {{translate('where_would_you_like_to_start')}} +

+
+ + {{translate('last_location')}} + +
+ {{ location.label }} +
+ + {{translate('confirm')}} +
+
+
+
+
+ + + + diff --git a/resources/[core]/ui-spawn/html/reset.css b/resources/[core]/ui-spawn/html/reset.css new file mode 100644 index 0000000..f75ecd1 --- /dev/null +++ b/resources/[core]/ui-spawn/html/reset.css @@ -0,0 +1,58 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + letter-spacing: .1vh; + font-weight: 900; + color: #ededed; + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + +.noselect { + -webkit-touch-callout: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +::-webkit-scrollbar { + display: none; +} \ No newline at end of file diff --git a/resources/[core]/ui-spawn/html/style.css b/resources/[core]/ui-spawn/html/style.css new file mode 100644 index 0000000..c976d2b --- /dev/null +++ b/resources/[core]/ui-spawn/html/style.css @@ -0,0 +1,172 @@ +@import url("https://fonts.googleapis.com/css2?family=Exo+2:wght@300;400;500;600;700&display=swap"); + +:root { + /* Dark Theme Variables */ + --md-dark-primary: #f44336; + --md-dark-on-primary: #ffffff; + --md-dark-primary-container: #ffdad6; + --md-dark-on-primary-container: #410002; + --md-dark-secondary: #d32f2f; + --md-dark-on-secondary: #ffffff; + --md-dark-secondary-container: #ffdad5; + --md-dark-on-secondary-container: #410001; + --md-dark-tertiary: #ff8a65; + --md-dark-on-tertiary: #ffffff; + --md-dark-tertiary-container: #ffdacc; + --md-dark-on-tertiary-container: #410002; + --md-dark-surface: #1c1b1f; + --md-dark-on-surface: #e6e1e5; + --md-dark-surface-container-lowest: #0f0d13; + --md-dark-surface-container-low: #1d1b20; + --md-dark-surface-container: #211f26; + --md-dark-surface-container-high: #2b2930; + --md-dark-surface-container-highest: #36343b; + --md-dark-error: #b3261e; + --md-dark-on-error: #ffffff; + --md-dark-error-container: #93000a; + --md-dark-on-error-container: #ffdad5; + --md-dark-outline: #79747e; + --md-dark-outline-variant: #49454f; + --md-dark-inverse-surface: #e6e1e5; + --md-dark-inverse-on-surface: #1c1b1f; + --md-dark-scrim: rgba(0, 0, 0, 0.6); + --md-dark-shadow: rgba(0, 0, 0, 0.15); + --md-dark-success: #9bd880; + --md-dark-on-success: #193800; + --md-dark-success-container: #275000; + --md-dark-on-success-container: #b6f397; + --md-dark-warning: #ffba47; + --md-dark-on-warning: #422b00; + --md-dark-warning-container: #5f3f00; + --md-dark-on-warning-container: #ffddb0; + --md-dark-info: #b3c5ff; + --md-dark-on-info: #002a77; + --md-dark-info-container: #003ea7; + --md-dark-on-info-container: #dae1ff; + + /* Shapes */ + --md-radius-small: 8px; + --md-radius-medium: 12px; + --md-radius-large: 16px; + --md-radius-extra-large: 28px; + + /* Elevation */ + --md-elevation-1: 0px 1px 3px 1px rgba(0, 0, 0, 0.15); + --md-elevation-2: 0px 2px 6px 2px rgba(0, 0, 0, 0.15); + --md-elevation-3: 0px 4px 8px 3px rgba(0, 0, 0, 0.15); + --md-elevation-4: 0px 6px 10px 4px rgba(0, 0, 0, 0.15); + --md-elevation-5: 0px 8px 12px 6px rgba(0, 0, 0, 0.15); + + /* Typography */ + --md-typescale-display-large-size: 57px; + --md-typescale-display-medium-size: 45px; + --md-typescale-display-small-size: 36px; + --md-typescale-headline-large-size: 32px; + --md-typescale-headline-medium-size: 28px; + --md-typescale-headline-small-size: 24px; + --md-typescale-title-large-size: 22px; + --md-typescale-title-medium-size: 16px; + --md-typescale-title-small-size: 14px; + --md-typescale-body-large-size: 16px; + --md-typescale-body-medium-size: 14px; + --md-typescale-body-small-size: 12px; + --md-typescale-label-large-size: 14px; + --md-typescale-label-medium-size: 12px; + --md-typescale-label-small-size: 11px; + + /* Typography Weights */ + --font-primary: "Exo 2", sans-serif; + --font-weight-regular: 400; + --font-weight-medium: 500; + --font-weight-bold: 700; +} + +#app { + font-family: var(--font-primary); + color: var(--md-dark-on-surface); +} + +.spawn-locations { + text-transform: uppercase; + position: absolute; + min-width: 30vh; + width: fit-content; + max-width: 35vh; + top: 10vh; + left: 10vh; + background-color: var(--md-dark-surface-container); + box-shadow: var(--md-elevation-2); + padding: 30px; + cursor: default; + transition: 300ms; +} + +.location { + width: 100%; + margin-bottom: 15px; + transition: 200ms; + cursor: pointer; +} + +.v-btn.location:hover { + background-color: var(--md-dark-primary-container) !important; + transition: 300ms; +} + +.v-btn.location .v-btn__content { + font-size: var(--md-typescale-label-large-size) !important; + font-weight: var(--font-weight-medium) !important; + color: var(--md-dark-on-surface) !important; + letter-spacing: 3; +} + +.v-btn.location.selected { + background-color: var(--md-dark-primary) !important; +} + +.v-btn.location.selected .v-btn__content { + color: var(--md-dark-on-primary) !important; +} + +.submit-spawn { + background-color: var(--md-dark-success) !important; + width: 100%; + margin-top: 1.5vh; + transition: 0.2s; + cursor: pointer; +} + +.v-btn.submit-spawn .v-btn__content { + font-size: var(--md-typescale-label-large-size) !important; + font-weight: var(--font-weight-medium) !important; + color: var(--md-dark-on-success) !important; + letter-spacing: 3; +} + +.spawn_locations-header { + width: 100%; + transition: 0.2s; + margin-bottom: 17.5px; +} + +.spawn_locations-header > p { + font-family: var(--font-primary); + letter-spacing: 1px; + font-weight: var(--font-weight-bold); + position: relative; + color: var(--md-dark-on-surface); + text-align: center; + font-size: var(--md-typescale-title-medium-size); +} + +.slide-top-fade-enter-active { + transition: all 0.3s ease-out; +} +.slide-top-fade-leave-active { + transition: all 0.5s cubic-bezier(1, 0.7, 0.9, 1); +} +.slide-top-fade-enter-from, +.slide-top-fade-leave-to { + transform: translateY(-10%); + opacity: 0 !important; +} diff --git a/resources/[core]/ui-spawn/html/vue.js b/resources/[core]/ui-spawn/html/vue.js new file mode 100644 index 0000000..cc5f445 --- /dev/null +++ b/resources/[core]/ui-spawn/html/vue.js @@ -0,0 +1,5 @@ +/*! + * Vue.js v2.7.8 + * (c) 2014-2022 Evan You + * Released under the MIT License. +*/ !function(b,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):(b="undefined"!=typeof globalThis?globalThis:b||self).Vue=a()}(this,function(){"use strict";var a9,w,ab,ac,ad,ba,bb,o,ae,af,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz=Object.freeze({}),bA=Array.isArray;function bB(a){return!0===a}function bC(a){return"string"==typeof a||"number"==typeof a||"symbol"==typeof a||"boolean"==typeof a}function bD(a){return"function"==typeof a}function bE(a){return null!==a&&"object"==typeof a}var bF=Object.prototype.toString;function bG(a){return bF.call(a).slice(8,-1)}function bH(a){return"[object Object]"===bF.call(a)}function bI(a){return"[object RegExp]"===bF.call(a)}function bJ(b){var a=parseFloat(String(b));return a>=0&&Math.floor(a)===a&&isFinite(b)}function bK(a){var b;return null!=(b=a)&&"function"==typeof a.then&&"function"==typeof a.catch}function bL(a){return null==a?"":Array.isArray(a)||bH(a)&&a.toString===bF?JSON.stringify(a,null,2):String(a)}function bM(a){var b=parseFloat(a);return isNaN(b)?a:b}function b(c,d){for(var e=Object.create(null),b=c.split(","),a=0;a -1)return a.splice(b,1)}}var bQ=Object.prototype.hasOwnProperty;function bR(a,b){return bQ.call(a,b)}function f(a){var b=Object.create(null);return function(c){return b[c]||(b[c]=a(c))}}var bS=/-(\w)/g,bT=f(function(a){return a.replace(bS,function(_,a){return a?a.toUpperCase():""})}),bU=f(function(a){return a.charAt(0).toUpperCase()+a.slice(1)}),bV=/\B([A-Z])/g,bW=f(function(a){return a.replace(bV,"-$1").toLowerCase()}),bX=Function.prototype.bind?function(a,b){return a.bind(b)}:function(b,c){function a(d){var a=arguments.length;return a?a>1?b.apply(c,arguments):b.call(c,d):b.call(c)}return a._length=b.length,a};function bY(c,a){a=a||0;for(var b=c.length-a,d=new Array(b);b--;)d[b]=c[b+a];return d}function l(a,b){for(var c in b)a[c]=b[c];return a}function bZ(b){for(var c={},a=0;a0,b7=c&&c.indexOf("edge/")>0;c&&c.indexOf("android");var b8=c&&/iphone|ipad|ipod|ios/.test(c);c&&/chrome\/\d+/.test(c),c&&/phantomjs/.test(c);var B=c&&c.match(/firefox\/(\d+)/),b9={}.watch,ca=!1;if(h)try{var C={};Object.defineProperty(C,"passive",{get:function(){ca=!0}}),window.addEventListener("test-passive",null,C)}catch(cb){}var ah=function(){return void 0===a9&&(a9=!h&&"undefined"!=typeof global&&global.process&&"server"===global.process.env.VUE_ENV),a9},cc=h&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function k(a){return"function"==typeof a&&/native code/.test(a.toString())}var cd="undefined"!=typeof Symbol&&k(Symbol)&&"undefined"!=typeof Reflect&&k(Reflect.ownKeys);w="undefined"!=typeof Set&&k(Set)?Set:function(){function a(){this.set=Object.create(null)}return a.prototype.has=function(a){return!0===this.set[a]},a.prototype.add=function(a){this.set[a]=!0},a.prototype.clear=function(){this.set=Object.create(null)},a}();var ce=null;function cf(a){void 0===a&&(a=null),!a&&ce&&ce._scope.off(),ce=a,a&&a._scope.on()}var ai=function(){function a(b,a,c,d,e,f,g,h){this.tag=b,this.data=a,this.children=c,this.text=d,this.elm=e,this.ns=void 0,this.context=f,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=a&&a.key,this.componentOptions=g,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=h,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(a.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),a}(),cg=function(a){void 0===a&&(a="");var b=new ai;return b.text=a,b.isComment=!0,b};function ch(a){return new ai(void 0,void 0,void 0,String(a))}function ci(a){var b=new ai(a.tag,a.data,a.children&&a.children.slice(),a.text,a.elm,a.context,a.componentOptions,a.asyncFactory);return b.ns=a.ns,b.isStatic=a.isStatic,b.key=a.key,b.isComment=a.isComment,b.fnContext=a.fnContext,b.fnOptions=a.fnOptions,b.fnScopeId=a.fnScopeId,b.asyncMeta=a.asyncMeta,b.isCloned=!0,b}var cj=b("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,require"),ck=function(a,b){J('Property or method "'.concat(b,'" is not defined on the instance but ')+"referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.",a)},cl=function(b,a){J('Property "'.concat(a,'" must be accessed with "$data.').concat(a,'" because ')+'properties starting with "$" or "_" are not proxied in the Vue instance to prevent conflicts with Vue internals. See: https://vuejs.org/v2/api/#data',b)},aj="undefined"!=typeof Proxy&&k(Proxy);if(aj){var cm=b("stop,prevent,self,ctrl,shift,alt,meta,exact");q.keyCodes=new Proxy(q.keyCodes,{set:function(b,a,c){return cm(a)?(J("Avoid overwriting built-in modifier in config.keyCodes: .".concat(a)),!1):(b[a]=c,!0)}})}var cn={has:function(b,a){var c=a in b,d=cj(a)||"string"==typeof a&&"_"===a.charAt(0)&&!(a in b.$data);return c||d||(a in b.$data?cl(b,a):ck(b,a)),c||!d}},co={get:function(b,a){return"string"!=typeof a||a in b||(a in b.$data?cl(b,a):ck(b,a)),b[a]}};ab=function(a){if(aj){var b=a.$options,c=b.render&&b.render._withStripped?co:cn;a._renderProxy=new Proxy(a,c)}else a._renderProxy=a};var cp=function(){return(cp=Object.assign||function(d){for(var a,b=1,e=arguments.length;b0&&(a=cR(a,"".concat(g||"","_").concat(d)),cQ(a[0])&&cQ(c)&&(b[e]=ch(c.text+a[0].text),a.shift()),b.push.apply(b,a)):bC(a)?cQ(c)?b[e]=ch(c.text+a):""!==a&&b.push(ch(a)):cQ(a)&&cQ(c)?b[e]=ch(c.text+a.text):(bB(f._isVList)&&null!=(i=a.tag)&&null==(j=a.key)&&null!=(k=g)&&(a.key="__vlist".concat(g,"_").concat(d,"__")),b.push(a)));return b}var cS=1,cT=2;function cU(d,e,a,b,c,f){return(bA(a)||bC(a))&&(c=b,b=a,a=void 0),bB(f)&&(c=cT),cV(d,e,a,b,c)}function cV(d,c,a,b,g){if(null!=(o=a)&&null!=(p=a.__ob__))return J("Avoid using observed data object as vnode data: ".concat(JSON.stringify(a),"\n")+"Always create fresh vnode data objects in each render!",d),cg();if(null!=(r=a)&&null!=(s=a.is)&&(c=a.is),!c)return cg();if(null==(t=a)||null==(u=a.key)||bC(a.key)||J("Avoid using non-primitive value as key, use string/number value instead.",d),bA(b)&&bD(b[0])&&((a=a||{}).scopedSlots={default:b[0]},b.length=0),g===cT?b=cP(b):g===cS&&(b=function(a){for(var b=0;b."),d),e=new ai(q.parsePlatformTagName(c),a,b,void 0,void 0,d)):e=a&&a.pre||null==(n=h=eB(d.$options,"components",c))?new ai(c,a,b,void 0,void 0,d):em(h,a,d,b,c)}else e=em(c,a,d,b);return bA(e)?e:null!=(i=e)?(null!=(j=f)&&cW(e,f),null!=(k=a)&&cX(a),e):cg()}function cW(a,c,d){var i;if(a.ns=c,"foreignObject"===a.tag&&(c=void 0,d=!0),null!=a.children)for(var e=0,f=a.children.length;e0,h=a?!!a.$stable:!f,i=a&&a.$key;if(a){if(a._normalized)return a._normalized;if(h&&c&&c!==bz&&i===c.$key&&!f&&!c.$hasNormal)return c;for(var d in b={},a)a[d]&&"$"!==d[0]&&(b[d]=de(j,e,d,a[d]))}else b={};for(var g in e)g in b||(b[g]=df(e,g));return a&&Object.isExtensible(a)&&(a._normalized=b),b4(b,"$stable",h),b4(b,"$key",i),b4(b,"$hasNormal",f),b}function de(e,b,c,d){var a=function(){var c=ce;cf(e);var a=arguments.length?d.apply(null,arguments):d({}),b=(a=a&&"object"==typeof a&&!bA(a)?[a]:cP(a))&&a[0];return cf(c),a&&(!b||1===a.length&&b.isComment&&!dc(b))?void 0:a};return d.proxy&&Object.defineProperty(b,c,{get:a,enumerable:!0,configurable:!0}),a}function df(a,b){return function(){return a[b]}}function dg(a){var c=!1;return{get attrs(){if(!a._attrsProxy){var b=a._attrsProxy={};b4(b,"_v_attr_proxy",!0),dh(b,a.$attrs,bz,a,"$attrs")}return a._attrsProxy},get listeners(){return a._listenersProxy||dh(a._listenersProxy={},a.$listeners,bz,a,"$listeners"),a._listenersProxy},get slots(){return dj(a)},emit:bX(a.$emit,a),expose:function(b){c&&J("expose() should be called only once per setup().",a),c=!0,b&&Object.keys(b).forEach(function(c){return cF(a,b,c)})}}}function dh(b,d,e,f,g){var c=!1;for(var a in d)a in b?d[a]!==e[a]&&(c=!0):(c=!0,di(b,a,f,g));for(var a in b)a in d||(c=!0,delete b[a]);return c}function di(a,b,c,d){Object.defineProperty(a,b,{enumerable:!0,configurable:!0,get:function(){return c[d][b]}})}function dj(a){return a._slotsProxy||dk(a._slotsProxy={},a.$scopedSlots),a._slotsProxy}function dk(b,c){for(var a in c)b[a]=c[a];for(var a in b)a in c||delete b[a]}function dl(){ce||J("useContext() called without active instance.");var a=ce;return a._setupContext||(a._setupContext=dg(a))}var dm=null;function dn(a,b){return(a.__esModule||cd&&"Module"===a[Symbol.toStringTag])&&(a=a.default),bE(a)?b.extend(a):a}function dp(b){if(bA(b))for(var c=0;cdocument.createEvent("Event").timeStamp&&(E=function(){return F.now()})}var dK=function(b,a){if(b.post){if(!a.post)return 1}else if(a.post)return -1;return b.id-a.id};function dL(){for(dJ=E(),dH=!0,dC.sort(dK),dI=0;dIdB)){J("You may have an infinite update loop "+(c.user?'in watcher with expression "'.concat(c.expression,'"'):"in a component render function."),c.vm);break}var c,d,a=dD.slice(),b=dC.slice();dI=dC.length=dD.length=0,dE={},dF={},dG=dH=!1,dN(a),dM(b),cc&&q.devtools&&cc.emit("flush")}function dM(b){for(var c=b.length;c--;){var d=b[c],a=d.vm;a&&a._watcher===d&&a._isMounted&&!a._isDestroyed&&dA(a,"updated")}}function dN(b){for(var a=0;adI&&dC[b].id>a.id;)b--;dC.splice(b+1,0,a)}else dC.push(a);if(!dG){if(dG=!0,!q.async){dL();return}G(dL)}}}var t="watcher",dP="".concat(t," callback"),dQ="".concat(t," getter"),dR="".concat(t," cleanup");function aw(a,b){return dT(a,null,cp(cp({},b),{flush:"post"}))}var dS={};function dT(c,d,k){var b,v,e=void 0===k?bz:k,f=e.immediate,h=e.deep,l=e.flush,i=void 0===l?"pre":l,p=e.onTrack,q=e.onTrigger;d||(void 0!==f&&J('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),void 0!==h&&J('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'));var r=function(a){J("Invalid watch source: ".concat(a,". A watch source can only be a getter/effect ")+"function, a ref, a reactive object, or an array of these types.")},m=ce,s=function(b,c,a){return void 0===a&&(a=null),dW(b,null,a,m,c)},n=!1,j=!1;if(at(c)?(b=function(){return c.value},n=aq(c)):ap(c)?(b=function(){return c.__ob__.dep.depend(),c},h=!0):bA(c)?(j=!0,n=c.some(function(a){return ap(a)||aq(a)}),b=function(){return c.map(function(a){return at(a)?a.value:ap(a)?d3(a):bD(a)?s(a,dQ):void r(a)})}):bD(c)?b=d?function(){return s(c,dQ)}:function(){if(!m||!m._isDestroyed)return v&&v(),s(c,t,[o])}:(b=g,r(c)),d&&h){var w=b;b=function(){return d3(w())}}var o=function(b){v=a.onStop=function(){s(b,dR)}};if(ah())return o=g,d?f&&s(d,dP,[b(),j?[]:void 0,o]):b(),g;var a=new d6(ce,b,g,{lazy:!0});a.noRecurse=!d;var u=j?[]:dS;return a.run=function(){if(a.active||"pre"===i&&m&&m._isBeingDestroyed){if(d){var b=a.get();(h||n||(j?b.some(function(a,b){return b1(a,u[b])}):b1(b,u)))&&(v&&v(),s(d,dP,[b,u===dS?void 0:u,o]),u=b)}else a.get()}},"sync"===i?a.update=a.run:"post"===i?(a.post=!0,a.update=function(){return dO(a)}):a.update=function(){if(m&&m===ce&&!m._isMounted){var b=m._preWatchers||(m._preWatchers=[]);0>b.indexOf(a)&&b.push(a)}else dO(a)},a.onTrack=p,a.onTrigger=q,d?f?a.run():u=a.get():"post"===i&&m?m.$once("hook:mounted",function(){return a.get()}):a.get(),function(){a.teardown()}}var ax=function(){function a(a){void 0===a&&(a=!1),this.active=!0,this.effects=[],this.cleanups=[],!a&&bb&&(this.parent=bb,this.index=(bb.scopes||(bb.scopes=[])).push(this)-1)}return a.prototype.run=function(a){if(this.active){var b=bb;try{return bb=this,a()}finally{bb=b}}else J("cannot run an inactive effect scope.")},a.prototype.on=function(){bb=this},a.prototype.off=function(){bb=this.parent},a.prototype.stop=function(d){if(this.active){var a=void 0,b=void 0;for(a=0,b=this.effects.length;a1)return d&&bD(c)?c.call(a):c;J('injection "'.concat(String(b),'" not found.'))}else J("inject() can only be used inside setup() or functional components.")},h:function(a,b,c){return ce||J("globally imported h() can only be invoked when there is an active component instance, e.g. synchronously in a component's render or setup function."),cU(ce,a,b,c,2,!0)},getCurrentInstance:function(){return ce&&{proxy:ce}},useSlots:function(){return dl().slots},useAttrs:function(){return dl().attrs},useListeners:function(){return dl().listeners},mergeDefaults:function(e,c){var d=bA(e)?e.reduce(function(a,b){return a[b]={},a},{}):e;for(var a in c){var b=d[a];b?bA(b)||bD(b)?d[a]={type:b,default:c[a]}:b.default=c[a]:null===b?d[a]={default:c[a]}:J('props default key "'.concat(a,'" has no corresponding declaration.'))}return d},nextTick:G,set:r,del:s,useCssModule:function(a){return J("useCssModule() is not supported in the global build."),bz},useCssVars:function(b){if(h){var a=ce;if(!a){J("useCssVars is called without current active component instance.");return}aw(function(){var c=a.$el,d=b(a,a._setupProxy);if(c&&1===c.nodeType){var f=c.style;for(var e in d)f.setProperty("--".concat(e),d[e])}})}},defineAsyncComponent:function(a){bD(a)&&(a={loader:a});var e=a.loader,f=a.loadingComponent,g=a.errorComponent,b=a.delay,h=void 0===b?200:b,i=a.timeout,c=a.suspensible,d=void 0!==c&&c,j=a.onError;d&&J("The suspensiblbe option for async components is not supported in Vue2. It is ignored.");var k=null,l=0,m=function(){return l++,k=null,n()},n=function(){var a;return k||(a=k=e().catch(function(a){if(a=a instanceof Error?a:new Error(String(a)),j)return new Promise(function(d,e){var b=function(){return d(m())},c=function(){return e(a)};j(a,b,c,l+1)});throw a}).then(function(b){if(a!==k&&k)return k;if(b||J("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),b&&(b.__esModule||"Module"===b[Symbol.toStringTag])&&(b=b.default),b&&!bE(b)&&!bD(b))throw new Error("Invalid async component load result: ".concat(b));return b}))};return function(){return{component:n(),delay:h,timeout:i,error:g,loading:f}}},onBeforeMount:aD,onMounted:aE,onBeforeUpdate:aF,onUpdated:aG,onBeforeUnmount:aH,onUnmounted:aI,onErrorCaptured:aJ,onActivated:aK,onDeactivated:aL,onServerPrefetch:aM,onRenderTracked:aN,onRenderTriggered:aO}),d2=new w;function d3(a){return d4(a,d2),d2.clear(),a}function d4(a,c){var b,d,e=bA(a);if(!(!e&&!bE(a)||Object.isFrozen(a))&&!(a instanceof ai)){if(a.__ob__){var f=a.__ob__.dep.id;if(c.has(f))return;c.add(f)}if(e)for(b=a.length;b--;)d4(a[b],c);else if(at(a))d4(a.value,c);else for(b=(d=Object.keys(a)).length;b--;)d4(a[d[b]],c)}}var d5=0,d6=function(){function a(b,c,f,a,h){var e,d;e=this,void 0===(d=bb||(b?b._scope:void 0))&&(d=bb),d&&d.active&&d.effects.push(e),(this.vm=b)&&h&&(b._watcher=this),a?(this.deep=!!a.deep,this.user=!!a.user,this.lazy=!!a.lazy,this.sync=!!a.sync,this.before=a.before,this.onTrack=a.onTrack,this.onTrigger=a.onTrigger):this.deep=this.user=this.lazy=this.sync=!1,this.cb=f,this.id=++d5,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new w,this.newDepIds=new w,this.expression=c.toString(),bD(c)?this.getter=c:(this.getter=function(a){if(!b5.test(a)){var b=a.split(".");return function(a){for(var c=0;c";var g,d=bD(a)&&null!=a.cid?a.options:a._isVue?a.$options||a.constructor.options:a,b=ek(d),c=d.__file;if(!b&&c){var e=c.match(/([^/\\]+)\.vue$/);b=e&&e[1]}return(b?"<".concat(b.replace(es,function(a){return a.toUpperCase()}).replace(/[-_]/g,""),">"):"")+(c&& !1!==f?" at ".concat(c):"")};var et=function(b,a){for(var c="";a;)a%2==1&&(c+=b),a>1&&(b+=b),a>>=1;return c};ae=function(a){if(!a._isVue||!a.$parent)return"\n\n(found in ".concat(af(a),")");for(var b=[],c=0;a;){if(b.length>0){var d=b[b.length-1];if(d.constructor===a.constructor){c++,a=a.$parent;continue}c>0&&(b[b.length-1]=[d,c],c=0)}b.push(a),a=a.$parent}return"\n\nfound in\n\n"+b.map(function(a,b){return"".concat(0===b?"---> ":et(" ",5+2*b)).concat(bA(a)?"".concat(af(a[0]),"... (").concat(a[1]," recursive calls)"):af(a))}).join("\n")};var i=q.optionMergeStrategies;function eu(a,d){if(!d)return a;for(var b,e,c,g=cd?Reflect.ownKeys(d):Object.keys(d),f=0;f -1){if(f&&!bR(c,"default"))a=!1;else if(""===a||a===bW(b)){var h=eK(String,c.type);(h<0||g -1:"string"==typeof a?a.split(",").indexOf(b)> -1:!!bI(a)&&a.test(b)}function eS(a,f){var b=a.cache,g=a.keys,h=a._vnode;for(var c in b){var d=b[c];if(d){var e=d.name;e&&!f(e)&&eT(b,c,g,h)}}}function eT(c,a,e,d){var b=c[a];b&&(!d||b.tag!==d.tag)&&b.componentInstance.$destroy(),c[a]=null,bP(e,a)}a.prototype._init=function(h){var k,l,i,s,b,j,d,t,m,n,e,c,o,f,p,u,v,r,a=this;a._uid=ef++,q.performance&&ac&&(k="vue-perf-start:".concat(a._uid),l="vue-perf-end:".concat(a._uid),ac(k)),a._isVue=!0,a.__v_skip=!0,a._scope=new ax(!0),h&&h._isComponent?(n=a,e=h,c=n.$options=Object.create(n.constructor.options),o=e._parentVnode,c.parent=e.parent,c._parentVnode=o,f=o.componentOptions,c.propsData=f.propsData,c._parentListeners=f.listeners,c._renderChildren=f.children,c._componentTag=f.tag,e.render&&(c.render=e.render,c.staticRenderFns=e.staticRenderFns)):a.$options=aU(eg(a.constructor),h||{},a),ab(a),a._self=a,function(a){var c=a.$options,b=c.parent;if(b&&!c.abstract){for(;b.$options.abstract&&b.$parent;)b=b.$parent;b.$children.push(a)}a.$parent=b,a.$root=b?b.$root:a,a.$children=[],a.$refs={},a._provided=b?b._provided:Object.create(null),a._watcher=null,a._inactive=null,a._directInactive=!1,a._isMounted=!1,a._isDestroyed=!1,a._isBeingDestroyed=!1}(a),(i=a)._events=Object.create(null),i._hasHookEvent=!1,(s=i.$options._parentListeners)&&dt(i,s),(b=a)._vnode=null,b._staticTrees=null,j=b.$options,d=b.$vnode=j._parentVnode,t=d&&d.context,b.$slots=da(j._renderChildren,t),b.$scopedSlots=d?dd(b.$parent,d.data.scopedSlots,b.$slots):bz,b._c=function(a,c,d,e){return cU(b,a,c,d,e,!1)},b.$createElement=function(a,c,d,e){return cU(b,a,c,d,e,!0)},m=d&&d.data,an(b,"$attrs",m&&m.attrs||bz,function(){dv||J("$attrs is readonly.",b)},!0),an(b,"$listeners",j._parentListeners||bz,function(){dv||J("$listeners is readonly.",b)},!0),dA(a,"beforeCreate",void 0,!1),p=a,r=ee(p.$options.inject,p),r&&(cw=!1,Object.keys(r).forEach(function(a){an(p,a,r[a],function(){J("Avoid mutating an injected value directly since the changes will be overwritten whenever the provided component re-renders. "+'injection being mutated: "'.concat(a,'"'),p)})}),cw=!0),function(b){var a=b.$options;if(a.props&&function(a,b){var f,g,h=a.$options.propsData||{},i=a._props=ao({}),j=a.$options._propKeys=[],c=!a.$parent;c||(cw=!1);var d=function(d){j.push(d);var f=eC(d,b,h,a),e=bW(d);(bO(e)||q.isReservedAttr(e))&&J('"'.concat(e,'" is a reserved attribute and cannot be used as component prop.'),a),an(i,d,f,function(){c||dv||J("Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's "+'value. Prop being mutated: "'.concat(d,'"'),a)}),d in a||d8(a,"_props",d)};for(var e in b)d(e);cw=!0}(b,a.props),function(b){var d=b.$options,e=d.setup;if(e){var f=b._setupContext=dg(b);cf(b),cs();var a=dW(e,null,[b._props||ao({}),f],b,"setup");if(ct(),cf(),bD(a))d.render=a;else if(bE(a)){if(a instanceof ai&&J("setup() should not return VNodes directly - return a render function instead."),b._setupState=a,a.__sfc){var g=b._setupProxy={};for(var c in a)"__sfc"!==c&&cF(g,a,c)}else for(var c in a)b3(c)?J("Avoid using variables that start with _ or $ in setup()."):cF(b,a,c)}else void 0!==a&&J("setup() should return an object. Received: ".concat(null===a?"null":typeof a))}}(b),a.methods&&function(b,c){var d=b.$options.props;for(var a in c)"function"!=typeof c[a]&&J('Method "'.concat(a,'" has type "').concat(typeof c[a],'" in the component definition. ')+"Did you reference the function correctly?",b),d&&bR(d,a)&&J('Method "'.concat(a,'" has already been defined as a prop.'),b),a in b&&b3(a)&&J('Method "'.concat(a,'" conflicts with an existing Vue instance method. ')+"Avoid defining component methods that start with _ or $."),b[a]="function"!=typeof c[a]?g:bX(c[a],b)}(b,a.methods),a.data)(function(a){var b=a.$options.data;b=a._data=bD(b)?function d(b,a){cs();try{return b.call(a,a)}catch(c){return dV(c,a,"data()"),{}}finally{ct()}}(b,a):b||{},bH(b)||(b={},J("data functions should return an object:\nhttps://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function",a));for(var d=Object.keys(b),e=a.$options.props,f=a.$options.methods,g=d.length;g--;){var c=d[g];f&&bR(f,c)&&J('Method "'.concat(c,'" has already been defined as a data property.'),a),e&&bR(e,c)?J('The data property "'.concat(c,'" is already declared as a prop. ')+"Use prop default value instead.",a):b3(c)||d8(a,"_data",c)}var h=cz(b);h&&h.vmCount++})(b);else{var c=cz(b._data={});c&&c.vmCount++}a.computed&&function(a,d){var f=a._computedWatchers=Object.create(null),h=ah();for(var b in d){var c=d[b],e=bD(c)?c:c.get;null==e&&J('Getter is missing for computed property "'.concat(b,'".'),a),h||(f[b]=new d6(a,e||g,g,d9)),b in a?b in a.$data?J('The computed property "'.concat(b,'" is already defined in data.'),a):a.$options.props&&b in a.$options.props?J('The computed property "'.concat(b,'" is already defined as a prop.'),a):a.$options.methods&&b in a.$options.methods&&J('The computed property "'.concat(b,'" is already defined as a method.'),a):ea(a,b,c)}}(b,a.computed),a.watch&&a.watch!==b9&&function(d,e){for(var b in e){var a=e[b];if(bA(a))for(var c=0;c1?bY(b):b;for(var e=bY(arguments,1),f='event handler for "'.concat(a,'"'),d=0,g=b.length;dparseInt(this.max)&&eT(c,a[0],a,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var a in this.cache)eT(this.cache,a,this.keys)},mounted:function(){var a=this;this.cacheVNode(),this.$watch("include",function(b){eS(a,function(a){return eR(b,a)})}),this.$watch("exclude",function(b){eS(a,function(a){return!eR(b,a)})})},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,a=dp(e),b=a&&a.componentOptions;if(b){var d=eQ(b),f=this,g=f.include,h=f.exclude;if(g&&(!d||!eR(g,d))||h&&d&&eR(h,d))return a;var i=this,j=i.cache,k=i.keys,c=null==a.key?b.Ctor.cid+(b.tag?"::".concat(b.tag):""):a.key;j[c]?(a.componentInstance=j[c].componentInstance,bP(k,c),k.push(c)):(this.vnodeToCache=a,this.keyToCache=c),a.data.keepAlive=!0}return a||e&&e[0]}}}),d.use=function(a){var c=this._installedPlugins||(this._installedPlugins=[]);if(c.indexOf(a)> -1)return this;var b=bY(arguments,1);return b.unshift(this),bD(a.install)?a.install.apply(a,b):bD(a)&&a.apply(null,b),c.push(a),this},d.mixin=function(a){return this.options=aU(this.options,a),this},(K=d).cid=0,aV=1,K.extend=function(c){c=c||{};var b=this,e=b.cid,f=c._Ctor||(c._Ctor={});if(f[e])return f[e];var d=ek(c)||ek(b.options);d&&ez(d);var a=function(a){this._init(a)};return a.prototype=Object.create(b.prototype),a.prototype.constructor=a,a.cid=aV++,a.options=aU(b.options,c),a.super=b,a.options.props&&function(a){var b=a.options.props;for(var c in b)d8(a.prototype,"_props",c)}(a),a.options.computed&&function(a){var b=a.options.computed;for(var c in b)ea(a.prototype,c,b[c])}(a),a.extend=b.extend,a.mixin=b.mixin,a.use=b.use,p.forEach(function(c){a[c]=b[c]}),d&&(a.options.components[d]=a),a.superOptions=b.options,a.extendOptions=c,a.sealedOptions=l({},a.options),f[e]=a,a},aW=d,p.forEach(function(a){aW[a]=function(c,b){return b?("component"===a&&ez(c),"component"===a&&bH(b)&&(b.name=b.name||c,b=this.options._base.extend(b)),"directive"===a&&bD(b)&&(b={bind:b,update:b}),this.options[a+"s"][c]=b,b):this.options[a+"s"][c]}}),Object.defineProperty(a.prototype,"$isServer",{get:ah}),Object.defineProperty(a.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(a,"FunctionalRenderContext",{value:I}),a.version=H;var aX=b("style,class"),e2=b("input,textarea,option,select,progress"),M=function(a,c,b){return"value"===b&&e2(a)&&"button"!==c||"selected"===b&&"option"===a||"checked"===b&&"input"===a||"muted"===b&&"video"===a},e3=b("contenteditable,draggable,spellcheck"),e4=b("events,caret,typing,plaintext-only"),e5=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),e6="http://www.w3.org/1999/xlink",e7=function(a){return":"===a.charAt(5)&&"xlink"===a.slice(0,5)},e8=function(a){return e7(a)?a.slice(6,a.length):""},e9=function(a){return null==a|| !1===a};function fa(a,b){var c;return{staticClass:fb(a.staticClass,b.staticClass),class:null!=(c=a.class)?[a.class,b.class]:b.class}}function fb(a,b){return a?b?a+" "+b:a:b||""}function fc(a){return Array.isArray(a)?fd(a):bE(a)?fe(a):"string"==typeof a?a:""}function fd(d){for(var e,b,a="",c=0,f=d.length;c -1)fy(b,a,c);else if(e5(a))e9(c)?b.removeAttribute(a):(c="allowfullscreen"===a&&"EMBED"===b.tagName?"true":a,b.setAttribute(a,c));else if(e3(a)){var e,d;b.setAttribute(a,(e=a,e9(d=c)||"false"===d?"false":"contenteditable"===e&&e4(d)?d:"true"))}else e7(a)?e9(c)?b.removeAttributeNS(e6,e8(a)):b.setAttributeNS(e6,a,c):fy(b,a,c)}function fy(a,b,c){if(e9(c))a.removeAttribute(b);else{if(z&&!A&&"TEXTAREA"===a.tagName&&"placeholder"===b&&""!==c&&!a.__ieph){var d=function(b){b.stopImmediatePropagation(),a.removeEventListener("input",d)};a.addEventListener("input",d),a.__ieph=!0}a.setAttribute(b,c)}}function R(g,c){var h,i,j,k,l,b=c.elm,e=c.data,d=g.data;if(null!=(h=e.staticClass)||null!=(i=e.class)||null!=(j=d)&&(null!=(k=d.staticClass)||null!=(l=d.class))){var m,a=function(d){for(var g,h,e,f,i,j,a=d.data,b=d,c=d;null!=(g=c.componentInstance);)(c=c.componentInstance._vnode)&&c.data&&(a=fa(c.data,a));for(;null!=(h=b=b.parent);)b&&b.data&&(a=fa(a,b.data));return e=a.staticClass,f=a.class,null!=(i=e)||null!=(j=f)?fb(e,fc(f)):""}(c),f=b._transitionClasses;null!=(m=f)&&(a=fb(a,fc(f))),a!==b._prevClass&&(b.setAttribute("class",a),b._prevClass=a)}}var fz=/[\w).+\-_$\]]/;function fA(c){var b,e,a,d,f,g=!1,h=!1,i=!1,j=!1,k=0,l=0,m=0,p=0;for(a=0;a=0&&" "===(o=c.charAt(n));n--);o&&fz.test(o)||(j=!0)}}else void 0===d?(p=a+1,d=c.slice(0,a).trim()):q();function q(){(f||(f=[])).push(c.slice(p,a).trim()),p=a+1}if(void 0===d?d=c.slice(0,a).trim():0!==p&&q(),f)for(a=0;aa.indexOf("[")||a.lastIndexOf("]") -1?{exp:a.slice(0,bf),key:'"'+a.slice(bf+1)+'"'}:{exp:a,key:null};for(bd=a,bf=bg=bh=0;!fT();)fU(be=fS())?fW(be):91===be&&fV(be);return{exp:a.slice(0,bg),key:a.slice(bg+1,bh)}}function fS(){return bd.charCodeAt(++bf)}function fT(){return bf>=bc}function fU(a){return 34===a||39===a}function fV(a){var b=1;for(bg=bf;!fT();){if(fU(a=fS())){fW(a);continue}if(91===a&&b++,93===a&&b--,0===b){bh=bf;break}}}function fW(a){for(var b=a;!fT()&&(a=fS())!==b;);}function fX(a,b,c){var d=bj;return function e(){var f=b.apply(null,arguments);null!==f&&f$(a,e,c,d)}}var fY=u&&!(B&&53>=Number(B[1]));function fZ(c,a,b,d){if(fY){var f=dJ,e=a;a=e._wrapper=function(a){if(a.target===a.currentTarget||a.timeStamp>=f||a.timeStamp<=0||a.target.ownerDocument!==document)return e.apply(this,arguments)}}bj.addEventListener(c,a,ca?{capture:b,passive:d}:b)}function f$(b,a,c,d){(d||bj).removeEventListener(b,a._wrapper||a,c)}function S(b,a){var d,e;if(null!=(d=b.data.on)||null!=(e=a.data.on)){var c=a.data.on||{},f=b.data.on||{};bj=a.elm||b.elm,function(a){if(null!=(d=a["__r"])){var d,c,b=z?"change":"input";a[b]=[].concat(a["__r"],a[b]||[]),delete a["__r"]}null!=(c=a["__c"])&&(a.change=[].concat(a["__c"],a.change||[]),delete a["__c"])}(c),cM(c,f,fZ,f$,fX,a.context),bj=void 0}}function T(g,e){var j,k;if(null!=(j=g.data.domProps)||null!=(k=e.data.domProps)){var b,c,m,a=e.elm,f=g.data.domProps||{},d=e.data.domProps||{};for(b in(null!=(m=d.__ob__)||bB(d._v_attr_proxy))&&(d=e.data.domProps=l({},d)),f)b in d||(a[b]="");for(b in d){if(c=d[b],"textContent"===b||"innerHTML"===b){if(e.children&&(e.children.length=0),c===f[b])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===b&&"PROGRESS"!==a.tagName){a._value=c;var n,o,h=null==(o=c)?"":String(c);f_(a,h)&&(a.value=h)}else if("innerHTML"===b&&fh(a.tagName)&&null==(n=a.innerHTML)){(bk=bk||document.createElement("div")).innerHTML="".concat(c,"");for(var i=bk.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;i.firstChild;)a.appendChild(i.firstChild)}else if(c!==f[b])try{a[b]=c}catch(p){}}}}function f_(a,b){return!a.composing&&("OPTION"===a.tagName||f0(a,b)||f1(a,b))}function f0(a,c){var b=!0;try{b=document.activeElement!==a}catch(d){}return b&&a.value!==c}function f1(d,a){var e,b=d.value,c=d._vModifiers;if(null!=(e=c)){if(c.number)return bM(b)!==bM(a);if(c.trim)return b.trim()!==a.trim()}return b!==a}var f2=f(function(a){var b={},c=/:(.+)/;return a.split(/;(?![^(]*\))/g).forEach(function(d){if(d){var a=d.split(c);a.length>1&&(b[a[0].trim()]=a[1].trim())}}),b});function f3(a){var b=f4(a.style);return a.staticStyle?l(a.staticStyle,b):b}function f4(a){return Array.isArray(a)?bZ(a):"string"==typeof a?f2(a):a}var f5=/^--/,f6=/\s*!important$/,f7=function(b,c,a){if(f5.test(c))b.style.setProperty(c,a);else if(f6.test(a))b.style.setProperty(bW(c),a.replace(f6,""),"important");else{var e=f9(c);if(Array.isArray(a))for(var d=0,f=a.length;d -1?a.split(ga).forEach(function(a){return b.classList.add(a)}):b.classList.add(a);else{var c=" ".concat(b.getAttribute("class")||""," ");0>c.indexOf(" "+a+" ")&&b.setAttribute("class",(c+a).trim())}}}function gc(a,b){if(b&&(b=b.trim())){if(a.classList)b.indexOf(" ")> -1?b.split(ga).forEach(function(b){return a.classList.remove(b)}):a.classList.remove(b),a.classList.length||a.removeAttribute("class");else{for(var c=" ".concat(a.getAttribute("class")||""," "),d=" "+b+" ";c.indexOf(d)>=0;)c=c.replace(d," ");(c=c.trim())?a.setAttribute("class",c):a.removeAttribute("class")}}}function gd(a){if(a){if("object"==typeof a){var b={};return!1!==a.css&&l(b,ge(a.name||"v")),l(b,a),b}if("string"==typeof a)return ge(a)}}var ge=f(function(a){return{enterClass:"".concat(a,"-enter"),enterToClass:"".concat(a,"-enter-to"),enterActiveClass:"".concat(a,"-enter-active"),leaveClass:"".concat(a,"-leave"),leaveToClass:"".concat(a,"-leave-to"),leaveActiveClass:"".concat(a,"-leave-active")}}),aZ=h&&!A,gf="transition",gg="animation",a$="transition",a_="transitionend",a0="animation",a1="animationend";aZ&&(void 0===window.ontransitionend&& void 0!==window.onwebkittransitionend&&(a$="WebkitTransition",a_="webkitTransitionEnd"),void 0===window.onanimationend&& void 0!==window.onwebkitanimationend&&(a0="WebkitAnimation",a1="webkitAnimationEnd"));var gh=h?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(a){return a()};function gi(a){gh(function(){gh(a)})}function gj(a,b){var c=a._transitionClasses||(a._transitionClasses=[]);0>c.indexOf(b)&&(c.push(b),gb(a,b))}function gk(a,b){a._transitionClasses&&bP(a._transitionClasses,b),gc(a,b)}function gl(b,d,e){var a=gn(b,d),c=a.type,f=a.timeout,i=a.propCount;if(!c)return e();var g=c===gf?a_:a1,j=0,k=function(){b.removeEventListener(g,h),e()},h=function(a){a.target===b&& ++j>=i&&k()};setTimeout(function(){j0&&(a=gf,e=c,f=g.length):i===gg?d>0&&(a=gg,e=d,f=h.length):f=(a=(e=Math.max(c,d))>0?c>d?gf:gg:null)?a===gf?g.length:h.length:0;var m=a===gf&&gm.test(b[a$+"Property"]);return{type:a,timeout:e,propCount:f,hasTransform:m}}function go(a,b){for(;a.length explicit ".concat(b," duration is not a valid number - ")+"got ".concat(JSON.stringify(a),"."),c.context):isNaN(a)&&J(" explicit ".concat(b," duration is NaN - ")+"the duration expression might be incorrect.",c.context)}function gt(a){return"number"==typeof a&&!isNaN(a)}function gu(a){if(null==(d=a))return!1;var d,c,b=a.fns;return null!=(c=b)?gu(Array.isArray(b)?b[0]:b):(a._length||a.length)>1}function V(_,a){!0!==a.data.show&&gq(a)}var a2=[{create:Q,update:Q},{create:R,update:R},{create:S,update:S,destroy:function(a){return S(a,fn)}},{create:T,update:T},{create:U,update:U},h?{create:V,activate:V,remove:function(a,b){!0!==a.data.show?gr(a,b):b()}}:{}].concat([{create:function(_,a){fl(a)},update:function(a,b){a.data.ref!==b.data.ref&&(fl(a,!0),fl(b))},destroy:function(a){fl(a,!0)}},{create:P,update:P,destroy:function(a){P(a,fn)}}]),a3=function(e){var g,a,c,f={},d=e.modules,h=e.nodeOps;for(a=0;a - did you register the component correctly? For recursive components, make sure to provide the "name" option.',a.context),a.elm=a.ns?h.createElementNS(a.ns,e):h.createElement(e,a),u(a),r(a,v,f),null!=(s=b)&&t(a,f),p(c,a.elm,d),b&&b.pre&&k--):bB(a.isComment)?(a.elm=h.createComment(a.text),p(c,a.elm,d)):(a.elm=h.createTextNode(a.text),p(c,a.elm,d))}}function m(a,c,d,e){var f,b=a.data;if(null!=(f=b)){var g,h,i,k,j=null!=(g=a.componentInstance)&&b.keepAlive;if(null!=(h=b=b.hook)&&null!=(i=b=b.init)&&b(a,!1),null!=a.componentInstance)return n(a,c),p(d,a.elm,e),bB(j)&&o(a,c,d,e),!0}}function n(a,b){var c;null!=(c=a.data.pendingInsert)&&(b.push.apply(b,a.data.pendingInsert),a.data.pendingInsert=null),a.elm=a.componentInstance.$el,s(a)?(t(a,b),u(a)):(fl(a),b.push(a))}function o(c,d,e,g){for(var h,i,a,b=c;b.componentInstance;)if(null!=(h=a=(b=b.componentInstance._vnode).data)&&null!=(i=a=a.transition)){for(a=0;ai?v(m,null==(D=a[g+1])?null:a[g+1].elm,a,e,g,j):e>g&&x(b,k,i)}(i,g,d,j,n):null!=(u=d)?(z(d),null!=(w=c.text)&&h.setTextContent(i,""),v(i,null,d,0,d.length-1,j)):null!=(y=g)?x(g,0,g.length-1):null!=(C=c.text)&&h.setTextContent(i,""):c.text!==a.text&&h.setTextContent(i,a.text),null!=(D=e)&&null!=(E=b=e.hook)&&null!=(G=b=b.postpatch)&&b(c,a)}}function C(c,a,d){var e;if(bB(d)&&null!=(e=c.parent))c.parent.data.pendingInsert=a;else for(var b=0;b, or missing . Bailing hydration and performing full client-side render.")}a=(e=a,new ai(h.tagName(e).toLowerCase(),{},[],void 0,e))}var v,y,E,g=a.elm,q=h.parentNode(g);if(l(b,d,g._leaveCb?null:q,h.nextSibling(g)),null!=b.parent)for(var c=b.parent,z=s(b);c;){for(var i=0;i ')+"expects an Array value for its binding, but got ".concat(Object.prototype.toString.call(d).slice(8,-1)),h);return}for(var c=0,i=a.options.length;c -1,b.selected!==e&&(b.selected=e);else if(b$(gy(b),d)){a.selectedIndex!==c&&(a.selectedIndex=c);return}f||(a.selectedIndex=-1)}function gx(b,a){return a.every(function(a){return!b$(a,b)})}function gy(a){return"_value"in a?a._value:a.value}function gz(a){a.target.composing=!0}function gA(a){a.target.composing&&(a.target.composing=!1,gB(a.target,"input"))}function gB(b,c){var a=document.createEvent("HTMLEvents");a.initEvent(c,!0,!0),b.dispatchEvent(a)}function gC(a){return!a.componentInstance||a.data&&a.data.transition?a:gC(a.componentInstance._vnode)}var W={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function gD(a){var b=a&&a.componentOptions;return b&&b.Ctor.options.abstract?gD(dp(b.children)):a}function gE(c){var b={},d=c.$options;for(var a in d.propsData)b[a]=c[a];var e=d._parentListeners;for(var a in e)b[bT(a)]=e[a];return b}function gF(b,a){if(/\d-keep-alive$/.test(a.tag))return b("keep-alive",{props:a.componentOptions.propsData})}var gG=function(a){return a.tag||dc(a)},gH=function(a){return"show"===a.name},X=l({tag:String,moveClass:String},W);function gI(a){a.elm._moveCb&&a.elm._moveCb(),a.elm._enterCb&&a.elm._enterCb()}function gJ(a){a.data.newPos=a.elm.getBoundingClientRect()}function gK(a){var c=a.data.pos,d=a.data.newPos,e=c.left-d.left,f=c.top-d.top;if(e||f){a.data.moved=!0;var b=a.elm.style;b.transform=b.WebkitTransform="translate(".concat(e,"px,").concat(f,"px)"),b.transitionDuration="0s"}}delete X.mode,a.config.mustUseProp=M,a.config.isReservedTag=N,a.config.isReservedAttr=aX,a.config.getTagNamespace=O,a.config.isUnknownElement=function(a){if(!h)return!0;if(N(a))return!1;if(null!=fi[a=a.toLowerCase()])return fi[a];var b=document.createElement(a);return a.indexOf("-")> -1?fi[a]=b.constructor===window.HTMLUnknownElement||b.constructor===window.HTMLElement:fi[a]=/HTMLUnknownElement/.test(b.toString())},l(a.options.directives,{model:a4,show:{bind:function(b,d,a){var c=d.value,e=(a=gC(a)).data&&a.data.transition,f=b.__vOriginalDisplay="none"===b.style.display?"":b.style.display;c&&e?(a.data.show=!0,gq(a,function(){b.style.display=f})):b.style.display=c?f:"none"},update:function(c,d,a){var b=d.value;!b!= !d.oldValue&&((a=gC(a)).data&&a.data.transition?(a.data.show=!0,b?gq(a,function(){c.style.display=c.__vOriginalDisplay}):gr(a,function(){c.style.display="none"})):c.style.display=b?c.__vOriginalDisplay:"none")},unbind:function(a,c,d,e,b){b||(a.style.display=a.__vOriginalDisplay)}}}),l(a.options.components,{Transition:{name:"transition",props:W,abstract:!0,render:function(i){var o=this,e=this.$slots.default;if(e&&(e=e.filter(gG)).length){e.length>1&&J(" can only be used on a single element. Use for lists.",this.$parent);var c=this.mode;c&&"in-out"!==c&&"out-in"!==c&&J("invalid mode: "+c,this.$parent);var d=e[0];if(function(a){for(;a=a.parent;)if(a.data.transition)return!0}(this.$vnode))return d;var a=gD(d);if(!a)return d;if(this._leaving)return gF(i,d);var f="__transition-".concat(this._uid,"-");a.key=null==a.key?a.isComment?f+"comment":f+a.tag:bC(a.key)?0===String(a.key).indexOf(f)?a.key:f+a.key:a.key;var g,j,h=(a.data||(a.data={})).transition=gE(this),k=this._vnode,b=gD(k);if(a.data.directives&&a.data.directives.some(gH)&&(a.data.show=!0),b&&b.data&&(g=a,(j=b).key!==g.key||j.tag!==g.tag)&&!dc(b)&&!(b.componentInstance&&b.componentInstance._vnode.isComment)){var m=b.data.transition=l({},h);if("out-in"===c)return this._leaving=!0,cN(m,"afterLeave",function(){o._leaving=!1,o.$forceUpdate()}),gF(i,d);if("in-out"===c){if(dc(a))return k;var p,n=function(){p()};cN(h,"afterEnter",n),cN(h,"enterCancelled",n),cN(m,"delayLeave",function(a){p=a})}}return d}}},TransitionGroup:{props:X,beforeMount:function(){var a=this,b=this._update;this._update=function(c,d){var e=dw(a);a.__patch__(a._vnode,a.kept,!1,!0),a._vnode=a.kept,e(),b.call(a,c,d)}},render:function(e){for(var f=this.tag||this.$vnode.data.tag||"span",g=Object.create(null),c=this.prevChildren=this.children,h=this.$slots.default||[],i=this.children=[],j=gE(this),b=0;b children must be keyed: <".concat(m,">"))}}}if(c){for(var k=[],l=[],b=0;bb&&(f.push(d=a.slice(b,g)),e.push(JSON.stringify(d)));var j=fA(c[1].trim());e.push("_s(".concat(j,")")),f.push({"@binding":j}),b=g+c[0].length}return b\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,gR=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Y="[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(y.source,"]*"),Z="((?:".concat(Y,"\\:)?").concat(Y,")"),gS=new RegExp("^<".concat(Z)),gT=/^\s*(\/?)>/,gU=new RegExp("^<\\/".concat(Z,"[^>]*>")),gV=/^]+>/i,gW=/^",""":'"',"&":"&"," ":"\n"," ":" ","'":"'"},g_=/&(?:lt|gt|quot|amp|#39);/g,g0=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,g1=b("pre,textarea",!0),g2=function(a,b){return a&&g1(a)&&"\n"===b[0]};function g3(a,b){return a.replace(b?g0:g_,function(a){return g$[a]})}var g4=/^@|^v-on:/,g5=/^v-|^@|^:|^#/,g6=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,g7=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,g8=/^\(|\)$/g,g9=/^\[.*\]$/,ha=/:(.*)$/,hb=/^:|^\.|^v-bind:/,hc=/\.[^.\]]+(?=[^\]]*$)/g,hd=/^v-slot(:|$)|^#/,he=/[\r\n]/,hf=/[ \f\t\r\n]+/g,hg=/[\s"'<>\/=]/,hh=f(function(a){return(bm=bm||document.createElement("div")).innerHTML=a,bm.textContent}),hi="_empty_";function hj(b,a,c){return{type:1,tag:b,attrsList:a,attrsMap:hx(a),rawAttrsMap:{},parent:c,children:[]}}function hk(a,c){hl(a),a.plain=!a.key&&!a.scopedSlots&&!a.attrsList.length,hm(a),hq(a),hs(a),ht(a);for(var b=0;b cannot be keyed. Place the key on real elements instead.",fK(a,"key")),a.for){var c=a.iterator2||a.iterator1,d=a.parent;c&&c===b&&d&&"transition-group"===d.tag&&bn("Do not use v-for index as key on children, this is the same as not using keys.",fK(a,"key"),!0)}a.key=b}}function hm(a){var b=fL(a,"ref");b&&(a.ref=b,a.refInFor=hv(a))}function hn(a){var b;if(b=fM(a,"v-for")){var c=ho(b);c?l(a,c):bn("Invalid v-for expression: ".concat(b),a.rawAttrsMap["v-for"])}}function ho(e){var c=e.match(g6);if(c){var a={};a.for=c[2].trim();var d=c[1].trim().replace(g8,""),b=d.match(g7);return b?(a.alias=d.replace(g7,"").trim(),a.iterator1=b[1].trim(),b[2]&&(a.iterator2=b[2].trim())):a.alias=d,a}}function hp(a,b){a.ifConditions||(a.ifConditions=[]),a.ifConditions.push(b)}function hq(a){"template"===a.tag?((k=fM(a,"scope"))&&bn('the "scope" attribute for scoped slots have been deprecated and replaced by "slot-scope" since 2.5. The new "slot-scope" attribute can also be used on plain elements in addition to