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.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 QBShared.ChangeVehicleExtra(vehicle, tonumber(id), type(enabled) == 'boolean' and enabled or true) 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 }