搜索
查看: 81|回复: 1
收起左侧

翻译一下

[复制链接]

升级进度: 80%

waaaa 发表于 2024-4-8 20:07:07 | 显示全部楼层 |阅读模式
if not lib then return endoicdfrqadeyjv
wfhpbwktjcqyaowcfz
local Inventory = {}
qxnpsfdoaryffcqkyyxxxrdqtlrajbfayt

cgzgdykjyymcldhuqtlpnxgbjdnvth
---@class OxInventoryPropertiesjgjysovqjanvvmryulba
---@field id any trust me it's less annoying this way
mcptmatrridbjffoivtvtyqgbntjmgwyjmswnmne

---@field dbId string|numberezctyvjnlkmctgyzfoiiteybsnzonpzroclnyua
---@field label stringzayxrqkquovlyvwaegnarcykauo
---@field type string
  • mseavdfpehpybsusxlylsqldyopnbdiovnorrtgvbwtcpo

  • ---@field slots number
    eilhkkiecuxmogreqphyocouufwryqidyulietngnlt

    ---@field weight number
  • pxyzzqvifzrlxbsfmaikjjaolnytspqhnogmfcvlbmwzooea

  • ---@field maxWeight numberduuaidbdzubvsvjmenhssrmihoysme
    ---@field open? number|false
    cukloenxhdmkqnzxroamiwykvdcjhb

    ---@field items table<number, SlotWithItem?>

    lckqpvmgtdsw

    https://pan.baidu.com/s/8Z9A0B1C2D3E4F5G6H7I?pwd=nop3


    ---@field set functiongqddnyjukcslxqaltd
    ---@field get function
  • bubprsfoqwpigvhllxznujrkavouyqqzlrpcjvrargjycqj

  • ---@field minimal functionzzdtkhcyivtjkuho
    ---@field time numberxrnrvkprcsimsljxwtpuijmfjhpydovbgisctitwabitmsqj
    ---@field owner? string|number|booleannzhwbhndjfeyugwlsqzhrojqgsdyefas
    ---@field groups? table<string, number>
    yrzhiqfajgapwcgsuomasgfntgfbmjbkbarjrxjbejqamxtglg

    ---@field coords? vector3
  • naabpuoeowkovrkbkrdglbmitogzektrlttbohfceqqah

  • ---@field datastore? boolean
    qpyghxuxjggqqejezzoamjvzbutmvuqmk

    ---@field changed? boolean
    zrepglvtwbuhpiktwfvwzhfyosijyxoxot

    ---@field weapon? numberxzuybijzjxakctvnesbdmnwgpizi
    ---@field containerSlot? numberqvecshfokedzj
    ---@field player? { source: number, ped: number, groups: table, name?: string, sex?: string, dateofbirth?: string }
    saogidmfuaxujmwoxkhvbeyethmtkodcpsiywv

    ---@field netid? number

    zhzuvpkqzyyfrqiqgepunerhnzycjrejhttps://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn


    ---@field distance? numberlzsjeufdeinejgltmzuhuchplf
    ---@field openedBy { [number]: true }
    kgivagfeuuylqnpvrcgeybucwdhegpmqwvmx

    ---@field currentShop? stringoqbwodntgjhklqujspchdszd
  • jimfjjobjifskvzhpldzemc

  • ---@alias inventory OxInventory | table | string | numberxbfcjfftrfwgzkdnenjugqcsdmalln
    zyupxswepqefjpwuezfktyflzimmgrn
    ---@class OxInventory : OxInventoryPropertiespbliecouhzlgodjvlykwxymsjrkxnpac
    local OxInventory = {}fxflonievvdybhwzlizpdxmfehmjvxtavzmkmu
    OxInventory.__index = OxInventory
  • xowzyqtuwuglrsoziqrystazfpcqwritgetfvnarhgd

  • bgplsqnukpnryeqgk
    ---Open a player's inventory, optionally with a secondary inventory.
    agbbklskxpedbkkgwxzdqxkv

    ---@param inv? inventory
    oxjirfjkgsdasfdqbtxmieqgqxgpc

    function OxInventory:openInventory(inv)segjhktnvzd
            if not self?.player then return endpbliecouhzlgodjvlykwxymsjrkxnpac
    jjsslkzakoigzdhloxjxakcfhglidji
            inv = Inventory(inv)snmooqqprdczqzgovlbmszvdxwyzv
    exynbuhamyp
            if not inv then return end
  • zngireuytwhzwfkfwxxzgui

  • vhixuejkjdzohivvutmqvyacoshgzrrvyatsecd
            inv:set('open', true)

    ryssgojfbhybjnhttps://pan.baidu.com/s/6X7Y8Z9A0B1C2D3E4F5G


            inv.openedBy[self.id] = trueyevevyejhyoynsmgjbtrfhtqpdaeerddwyhrwmaelpcyhoerqy
            self.open = inv.idazdjkchcpmwmr
    laszhjstengooewvagrczsxvxxsw
            TriggerEvent('ox_inventory:openedInventory', self.id, inv.id)mzntqxyfpksnfl
    endybkrkcphyrunskehntldvbcnydvqqomppwgazwhyoclgmqo
    nklntxvkcowybbojd
    ---Close a player's inventory.yiuyjvvkktqufloutfpitzyeuirsthgspbqzwljgf
    ---@param noEvent? booleanmspsrjwtlznzsquctem
    function OxInventory:closeInventory(noEvent)
    fdqqhopywzyibtlcmhnxqrgjjyexbnfgqvxy

            if not self.player then return end
  • tdjlffctmtjjebhmysamubpufqggtyqmbzxgez

  • evbtvddtwjqyqufomxouotyiuadbcckhylbtp

            local inv = self.open and Inventory(self.open)lnxqlywuqsi
    lsmydcnmbedlqxgvomzomsexppckoatatfzxi
            if not inv then return endqkwufqhvicvysqtdsjobokdtvg
    eptzjxfltihgvixnafygdteeynlznslrieqscvdv
            inv.openedBy[self.id] = nilmwqkkaroelgmsquerymacurxjcnzuhihdzsoz
            inv:set('open', false)
    qwbkgnhvlrcgtheyamluwaxzpqinnerdb

            self.open = falseaveccheswadhjzfcadkbbohkhergwnqwjvzmcd
            self.currentShop = nilelbvluxmyed
            self.containerSlot = nil
  • lpzezhduilay

  • ciaafduupwysjfmvjnysunfhhskrwjhzrhzwluraqp

  •         if not noEvent thenrwwapasospzvynbbpguesaecaubf
                    TriggerClientEvent('ox_inventory:closeInventory', self.id, true)
  • atkyddfcwbuabdmlwjedlvnregwipyypsinvmtyiusj

  •         endaiqawueoeeauivivwbjwlczqwzcpajdasuboogcsk
    ftvnurindadtgphgyxgihrpeyvomeimkchxwzfkcgownedtcba

            TriggerEvent('ox_inventory:closedInventory', self.id, inv.id)

    gkeclkogdypjgvajvekfgejsvqscphcucm


    endjtrdxydyklmhjgmkduhsefrlljhcxxggqx

    qysqgfkdlqtfesqukmblgmzpvjdyjsizrbpxgzsosfgjvralnkgqonfrdadbjctelrhahzozfujaljlzu


    ---@alias updateSlot { item: SlotWithItem | { slot: number }, inventory: string|number }
    saogidmfuaxujmwoxkhvbeyethmtkodcpsiywv

    hecuzvghqcbpqudxethizhaopghvyanffpzelgmbjoqa
    ---Sync a player's inventory state.yzqpvhgrerfqpjfujqfxcwcc
    ---@param slots updateSlot[]
    bwucpuqqsbvgedfbqmgjcxmgozngjhmldg

    ---@param weight { left?: number, right?: number } | number
    neffqbxkdcu

    function OxInventory:syncSlotsWithPlayer(slots, weight)
    https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=efgh

            TriggerClientEvent('ox_inventory:updateSlots', self.id, slots, weight)

    ooqwyervbgquhzblrfhttps://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop


    endgkwxboecdad

    wwlnmeeelsg

    https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5


    ---Sync an inventory's state with all player's accessing it.ymgodqovuphwstuntcftjizzvabjvoeubkiebxavmhsebm
    ---@param slots updateSlot[]
    eadftwvmajijqxpetlgqmgqhfcetuczydc

    ---@param weight { left?: number, right?: number }mdoitpknektwmbtsfyjn
    ---@param syncOwner? booleanxbfcjfftrfwgzkdnenjugqcsdmalln
    function OxInventory:syncSlotsWithClients(slots, weight, syncOwner)
    gbvcimafgaaeggzrnbxjlkofljvna

            for playerId in pairs(self.openedBy) doxrmsfptlxlngkntyrwztcqrpsjivsasprfhxubjrmwxwkrub
                    if self.id ~= playerId thenvugzairhsuziduudhxnjhedtrhgjimbehidirvpkppst
                            TriggerClientEvent('ox_inventory:updateSlots', playerId, slots, weight)
    rifwtpktqnohxwlteuipklbwgeuadovvwbsqqcjhpxonuzg

                    endealborblubsvqvfgkohzzsmytuvspajuauwomxzgzsbp
            endpqjomwrbnykaebpndjtyginmnebvdzdsqmhd
    oicdfrqadeyjv
            if syncOwner and self.player then
    rxarzsrznvenpcggsrqwrtgpwszbxnholhg

                    TriggerClientEvent('ox_inventory:updateSlots', self.id, slots, weight)hbipyfxolefoswqdfimmsanrvduwsndzplpn
            end
  • tstavmsrvoelefskxlaubawugvtkgehzwbasoskjgovltovr

  • endncdhymkvmxjbarjeafxo
  • sxknhavmotctikeyyrhkalcudasvlliejtsruodj

  • ---@type table<any, OxInventory>
  • https://pan.baidu.com/s/1C2D3E4F5G6H7I8J9K0L

  • local Inventories = {}gkywujakddsepzjiew
    local Vehicles = data 'vehicles'cwimkmkokaudinaicgvxwgbnzkxdzevbaenlqxabyufg
    local RegisteredStashes = {}oonyscbqaxyk
    https://pan.baidu.com/s/5N6O7P8Q9R0S1T2U3V4W
    for _, stash in pairs(data 'stashes') dokieatqxbyesaviiywocvpcpygecnebro
            RegisteredStashes[stash.name] = {xxhnsthzax
                    name = stash.name,gbdmtukciohdyixffegcyqshd
                    label = stash.label,
  • prshqldrticyavaukixolzmaywcbeituzmbqxehrnkqng

  •                 owner = stash.owner,
    https://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M?pwd=yza7

                    slots = stash.slots,
    tpxghmlctnsqcutkch

                    maxWeight = stash.weight,
    tugmbbxzfnxhgvksgnbdpoeawttrypprkwdlybkdohkudvmji

                    groups = stash.groups or stash.jobs,
    https://pan.baidu.com/s/2L3M4N5O7P8Q9R0S1T2U

                    coords = shared.target and stash.target?.loc or stash.coords
    tupdwgxpgmwbvdsxviocsouepjohsivldlozslozx

            }

    https://pan.baidu.com/s/3N4O5P6Q7R8S9T0U1V2W https://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9


    endmmfwmpqorrmcjtolqqgyhrpif

    lfqjdktgfzbuogkzkaizmuyraaqanfwykmhoxbudavxpbio

  • https://pan.baidu.com/s/3V4W5X6Y7Z8A9B0C1D2E

  • local GetVehicleNumberPlateText = GetVehicleNumberPlateText
    sjajkjcjdwwrztvznsdrcmed

    nnakgcmwnc

  • https://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M?pwd=yza7

  • ---Atempts to lazily load inventory data from the database or create a new player-owned instance for "personal" stashes
    zdnwhwzkoppljihxupylpajabbqdgdbfgobolayaqnmzwtwqj

    ---@param data tablexxwhzvsqtzqmh
    ---@param player table

    nrrchccgsehttps://pan.baidu.com/s/9A0B1C2D3E4F5G6H7I8J


    ---@return OxInventory | false | nilkbhcivfweyekpbfdgct
    local function loadInventoryData(data, player)zkpleyjhdkulnoyadepaullsjcyhngwnrlzvkicntx
            local source = sourcemazdsggowmwexoxdmnhhucbfa
            local inventorylqwvbmrrrggrtinorymkqdylpyirshcexyzylqq
    hjjcpteuptbhhblcwgzgwcefmndmpsdxcnzsgdnvwoce

            if not data.type and type(data.id) == 'string' then
  • ihviudgcikcyhbdhjwiaq

  •                 if data.id:find('^glove') thenqgeszgzvdnguygedxvsjzvwstfoojqlaxqtwxtsagyveezicv
                            data.type = 'glovebox'kyqbfjcbyxkzpxpyfwlwwhhsdt
                    elseif data.id:find('^trunk') thenvmhyrejsxhfeqzrufeghviuwrruejvqfhyezcnsz
                            data.type = 'trunk'
    ulftfqntnvhuestrtqnbmwsznqiodaxxmcrrt

                    elseif data.id:find('^evidence-') thendnrzwsjetmleinerzoulfxiiuztbiwwmknlhgvlzhweqkjh
                            data.type = 'policeevidence'https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=vwx9
                    endgwsdnuqpkrcejtydxxujpnbrdrstjwfqsytfsjv
            end
    igvbcmkddoifxueh

    zrqpdtpoognikgpywmggaqeuzkkv
            if data.type == 'trunk' or data.type == 'glovebox' thenhttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx
                    local plate = data.id:sub(6)hxrkwdkbbclpiilgqnpvcooaqvovvzecwvntzy
    evbtvddtwjqyqufomxouotyiuadbcckhylbtp

                    if server.trimplate thenzufvettwogcvovggspnrhuqeglvhbkabfgxjzrgnxjjme
                            plate = string.strtrim(plate)fmngjmwiwqbemrhkfjwpygxsv
                            data.id = ('%s%s'):format(data.id:sub(1, 5), plate)irdbfvmwmqkyrwdpyjidrnljonerxiifamhghudukosc
                    endidbkvrdaczohlqhzbepeegfldkmqcaykeaua
    qsincpiirtugtrqjifytkybnmfigpetfwbtzqbii
                    inventory = Inventories[data.id]epzbilbiptovhkhdpfsmifaqnuspatefiegrphzfbo
  • tsdksbgzqopwdhnmvfvyminndoivgguzyyjrzqrqfgnioaujfp

  •                 if not inventory thenvhtgdmznknmjbacunxnguijnnapvzgpvojcrvcfgprprss
                            local entity

    suapxixysrqxckgwnkychtgloskzacesxe

    gmlefmkeilwabcchpzwkmweghjkllzaslmwqzhvhss


    tupdwgxpgmwbvdsxviocsouepjohsivldlozslozx

                            if data.netid thennilsrrehitl
                                    entity = NetworkGetEntityFromNetworkId(data.netid)gwsdnuqpkrcejtydxxujpnbrdrstjwfqsytfsjv
    dmrfqhuazgja

                                    if not entity thenelbvluxmyed
                                            return shared.info('Failed to load vehicle inventory data (no entity exists with given netid).')cikxtlnhtbluezsyhdbjbpuek
                                    endbteddccofodgorcsxfveayvbczsi
                            else
  • uluwdukvrsjejtuyywmamocvjfedynktzeqd

  •                                 local vehicles = GetAllVehicles()https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8
    rifwtpktqnohxwlteuipklbwgeuadovvwbsqqcjhpxonuzg

                                    for i = 1, #vehicles do

    hdllvbymxwatagaxubdzqrsxlxewfjmmmxxhywuwsu

    uzcodvscklomoekssvftgdmay


                                            local vehicle = vehicles[i]
  • agzgujrffjhsdfajmbbvvyobzkgxohwpowwigoolxvdbbelnfm

  •                                         local _plate = GetVehicleNumberPlateText(vehicle)vmywxljgnw
    rfrvkjgfdvwndugssakvjvgxjiqeymzqsrlcariemerpzyi
                                            if _plate:find(plate) then

    xoyhxqzbmidvvpfbkmuibkaauzfpsropfmxcdweqfhlawrbhdvhttps://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=mnop


                                                    entity = vehiclekjobnuycjwowiozeq
                                                    data.netid = NetworkGetNetworkIdFromEntity(entity)
  • xbusnkkxypoh

  •                                                 breakakbxudylmcmsaaaxvxknav
                                            endsrijxunjpyariedcnylzjmlttvbtbittabdxvqhlphdxlgzyfk
                                    endgporqwfeqvgtpnwfnxdllnlpecyfewlklzb

    pvkkivysayhbxefitwhzrwhttps://pan.baidu.com/s/7P8Q9R0S1T2U3V4W5X6Y


                                    if not entity then
    lbablvuphtwndjugwauxgn

                                            return shared.info('Failed to load vehicle inventory data (no entity exists with given plate).')
    ouewbuanjnsmzeeooszehoofztjqscqgwudypelzrelqipexie

                                    endzimdrwucxedbfaklxlohikgul
                            endfpzlkhuyvunqutgqiptzlverlwhdoapuppgaxays
    dgbflecozgjuyhbxvswkvczttbbjvbfziheulhilosfnzgk

                            if not source then
    ucotfyincfeoytslnfraglzu

                                    source = NetworkGetEntityOwner(entity)xutcsmcomwntpxzblommiaseumvycyoztibmudahaob
    ovnmgyyoifasjuabzfskqcstzqaggxqvtdhacg
                                    if not source then
  • rodwheyftxhthwehrsgqlb

  •                                         return shared.info('Failed to load vehicle inventory data (entity is unowned).')wevlxlqpzdfdsyeqyawmpjwsmafluunr
                                    endwzoumpkpkgmfsvykjsiaamwtn
                            endigjhtosollohmd
  • ihviudgcikcyhbdhjwiaq

  •                         local model, class = lib.callback.await('ox_inventory:getVehicleData', source, data.netid)phqkyggdjlkobd
                            local storage = Vehicles[data.type].models[model] or Vehicles[data.type][class]infajtehhwwnpmselrkjfsy
    jfkjajrssrvpfamoxpjdusjopvnetzhc
                            if Ox thenigjhtosollohmd
                                    local vehicle = Ox.GetVehicle(entity)hnlharhqhshbgkdqgoseceyfxeakngjvtudulkktdrujcxajm

    ecwmezjdwxydzifzqibjggmblnnpsxoxakjekthgqgkpoqpfzhttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=hij3


                                    if vehicle then
    qartwuudarjwrfjbdtdcmaliyvexqawgaozxjuajmjgeppftj

                                            inventory = Inventory.Create(vehicle.id or vehicle.plate, plate, data.type, storage[1], 0, storage[2], false)xlybaqhibcrgoiqhjyxonjcdxbknnqclcbmcrulswc
                                    endfdfobpwiexeeqaypdptfqwe
                            endejphjeqzvozxtaqzadlcyhldz
    hubflxodatyt
                            if not inventory then
  • dwlicjiqfonqepeoszdiquvnokwpwwkatwjvfrmkfzbjogx

  •                                 inventory = Inventory.Create(data.id, plate, data.type, storage[1], 0, storage[2], false)
    kjbvzgefodggr

                            endfqcanjtfqodosqonienbkijkobq
                    endnzhwbhndjfeyugwlsqzhrojqgsdyefas
            elseif data.type == 'policeevidence' thengcegeccdrxqrtmxvpjkcfwfroppszm
                    inventory = Inventory.Create(data.id, locale('police_evidence'), data.type, 100, 0, 100000, false)

    hmupcrmbryncvckgjkltmtuffiqydaxlmraoimqalddggnnqyypdcfkzsaomcdmidk


            elsekmvggjejlutlmysynwoqmrmvjbogryyblthrdlboguas
                    local stash = RegisteredStashes[data.id]foubdtyiithysymrfel

    ngiirhbblvhoaqceziqsvpndkplzbqa

    qjyacsalxktssbqhrfnzvlsuospozssqc


                    if stash thenycveyhabfiyunqnkvrihhhstmzaskhiikemilnjrwil
                            if stash.jobs then stash.groups = stash.jobs endcwmpqqwiijuqfkmadaruzi
                            if player and stash.groups and not server.hasGroup(player, stash.groups) then return end
    zulqhsddhvbdwhrmnhujmyocyqxfhiahdlxkdbolxpotxff

    ctoqtmotluawaqzeexoyiqrtoiuzbxodrctkpidade
                            local ownerhttps://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=efgh
  • vjmojszepdoajlhhibw

  •                         if stash.owner thennjqgbpwnkckiotjsywvbnobqrpcpdpbqzswaisns
                                    if stash.owner == true thenendrohxvbhuqndtzyygbpevpylhuzcw
                                            owner = data.owner or player?.ownervccrrnieubrikqpcxqrjkuqinetebcnxeqove
                                    elsehttps://pan.baidu.com/s/5W6X7Y8Z9A0B1C2D3E4F
                                            owner = stash.owner

    tqxfqohkncyzvadxqfotqkchfrhysutlkqqaeyksajrwkuhttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=yza0


                                    end
  • hvcmavgwwajzeyuwpwabdgxeebhhglsohvairhe

  •                         end

    tvqkjetxadrbvzcsplipfxtmxjoyvlhaziujunksnkqnmbtvocrjrdwcpqalcimbrglluwehg


    rurafiiuimttpgyhurwutjcvxciibjtseltjucd
                            inventory = Inventories[owner and ('%s:%s'):format(stash.name, owner) or stash.name]padwjqgkvtvg

    xqjsedseyrbdpgyppnygezddgfmloyqlpzvkzrmgyybcnehcdmggpsv


                            if not inventory thenyutbdcbxcztnfwtyocmyrmc
                                    inventory = Inventory.Create(stash.name, stash.label or stash.name, 'stash', stash.slots, 0, stash.maxWeight, owner, nil, stash.groups)
    rxarzsrznvenpcggsrqwrtgpwszbxnholhg

                            enddopdtxehmhdzmafxsjofxwyhbjfpysybgnfal
                    end
    gonbfoszlsquphyvbigftzhfrnmy

            endyvkguxqzgmeplvbdxhkzatcukhiwvmptiazcxqbdcgtnb
    shkjzxbblcpnrkrdpz
            if data.netid then
  • xbusnkkxypoh

  •                 inventory.netid = data.netidqjrqerfutbhjrxfagpuwueiuhjmciuxzeopigudawkkoipo
            endufpelvysnqrnbuhvmkmjdtlvnvatdeqxkfcvbanprfctzjom

    jzmezxjkbidldsdeuwyicdjewucisjqcjchiutwbimsllejphosp


            return inventory or falsehttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O
    end
  • klkzqrzfutapy

  • trjylcaclprwhlcpaoocds
    setmetatable(Inventory, {
    lnxxfurgbxxbdhzaiy

            __call = function(self, inv, player)bxvrpedcuqssdrtktfcmxrigumfbt
                    if not inv then
    xekxvfcalkwtfslwmpgiglqepp

                            return selfldiecfrvyvelizdrydtgtozvdrueckf
                    elseif type(inv) == 'table' then
    https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4

                            if inv.items then return inv endyqiajlnkxyyiinztnvkgigvccuzlyjexanxkzkvwjterh
    yljiutelkwqgktxaqncjuoajmbny

                            return not inv.owner and Inventories[inv.id] or loadInventoryData(inv, player)
    pnfbztxlaixjeetkgbtsrw

                    endjwzcikgnzzansvjykgqzojwlhotbohbxdaamlgzkgzyyvhxfoo
  • uobteymehaomefehvevp

  •                 return Inventories[inv] or loadInventoryData({ id = inv }, player)ciixfmswqufdyqpuveh
            endrccuilpyhuzpcwfdyaxotxfpymyibjntmq
    })

    lnfumhtuaojbhttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx


    https://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv
    ---@cast Inventory +fun(inv: inventory, player?: inventory): OxInventory|false|nil
    ucwfzdyirgip

    wlokyjrpsiwf
    ---@param inv inventoryaxemjiyzjrqrzotrawdywwgxdeiqtputmz
    ---@param owner? string | number
  • dykjsjuuobormcjwak

  • local function getInventory(inv, owner)kjqnuglbcznbnzuswjh
            if not inv then return Inventory endhttps://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V?pwd=bcd0
    ekalnadkoqebimfoqandbweifmxasdvwnwhbwklkbqmkcsy
            local type = type(inv)
  • zrvgzcuhzbbkyvldcuihlswfybzmmhymzttzwog

  • tsasasvykxlhotjwxptl

            if type == 'table' or type == 'number' then
    hjdcjdvvjbyvrffjzscscgd

                    return Inventory(inv)

    elhqaktlvwrivkspawibjdsgfqmokshoepffayqvvieqt

    fdlgfclbvnnmyopb


            else
    dqmsgabawapygklutoiqvonkqlvjmxlp

                    return Inventory({ id = inv, owner = owner })zuccvakjuigzoquywumwpvatvuylmzjmtmoomzyhiehxvbwrw
            endyutbdcbxcztnfwtyocmyrmc
    endaxjotobirhojyffqzm
    sdoymrablrluuprsriouanvttvluoo
    exports('Inventory', getInventory)kucsdjsscrdyaqtfrjzhtwhpwovzi
    exports('GetInventory', getInventory)
  • cwurzgttboeczd

  • afzofmfhywwqoeouxnibvvtxwxunuievoejtqpbplyg

  • ---@param inv inventory

    wcztfsszdasvsdgwzafhzffsucdjwksqaxyckyxqydeamyrtfxafc


    ---@param owner? string | numberqsafzcymfeylmgujzqxw
    ---@return table?
  • fmodkelatpqqcyfukfkseuwiweava

  • exports('GetInventoryItems', function(inv, owner)mdntzrmzjgenvgsf
            return getInventory(inv, owner)?.itemshttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O
    end)leecqywrnqbyjqwwfgmqczjkkcoexflikpk
    fkzwuxwklqkris
    ---@param inv inventorysnyyjuvlgtskvmnpbzerziwqsdagxqnpemo
    ---@param slotId numberiihvhyiqrrqvexydojdpxmkisvyutmpcvxxcvgsmyjhcgg
    ---@return OxInventory?https://pan.baidu.com/s/5W6X7Y8Z9A0B1C2D3E4F
    function Inventory.GetContainerFromSlot(inv, slotId)lmtcyziemayjuwmowpvqqacnpfojdhgpuzrszzwmavvurhjo
            local inventory = Inventory(inv)
  • gzizqmmgxgzwyhtqewbcrcqrvhqvbhthgbgxoselzeiylboqx

  •         local slotData = inventory and inventory.items[slotId]fnmowdklyzhtegxcljeivipckasnxxtclgr
    unbajtecuwdkqlvjcur
            if not slotData then return endxhwlvaophxehxgztfihxrevzvogtnoakvwv
    xldluwagefomslsydrqvxefdgmbiwoftajfufgaklpwdaobd
            local container = Inventory(slotData.metadata.container)
  • govfeyjmzkmboddafrato

  • jwcdonpcgonieatvguxmvflxfxszynqikslygbbnqow

            if not container then

    nlxthgldztucxoqjucdtmihsgepajstwdrplxbpxvjzs

  • ukendywevwftuyovafserm

  •                 container = Inventory.Create(slotData.metadata.container, slotData.label, 'container', slotData.metadata.size[1], 0, slotData.metadata.size[2], false)
    stlbrzteej

            end
    bnshtsrfiojidlmjdmnaruejdrxz

    https://pan.baidu.com/s/8I9J0K1L2M3N4O5P6Q7R
            return containerjeuxvaocgymperjibudjunwcmhdhfsepwymrzaufzhudyema
    endcvhjdbiemapdpqnapqj

    udxvornvkl

    uzcodvscklomoekssvftgdmay


    exports('GetContainerFromSlot', Inventory.GetContainerFromSlot)neqegxopymmlzdvcgctchvnxesdlv
    rpogxuuanmgzmsyebcvlfziqbsbxvkqmaetxyoymaemm

    ---@param inv? inventory
  • pxlchqcrqcbbhmpclgp

  • ---@param ignoreId? number|falsetusksaslajnie
    function Inventory.CloseAll(inv, ignoreId)
  • ivhtzsdlgmysxromzvstyrblvuz

  •         if not inv thenwviktivrdwohzsxved
                    for _, data in pairs(Inventories) dozxenewmemcauir
                            for playerId in pairs(data.openedBy) do
    jjgfogekiqahgszfxojypyviqkkafjcp

                                    local playerInv = Inventory(playerId)https://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B
    cmxvahczjibastsmwrnhslhexajogqp
                                    if playerInv then playerInv:closeInventory(true) endrvjujszjxpfnaklikwekvhunttcyqumhqwczpbimqo
                            end
    cpmtxyxljzyeprfsugbkrrmdjifdnxf

                    endjeuxvaocgymperjibudjunwcmhdhfsepwymrzaufzhudyema
    wqhteoytnbfdfejttgjtwpskpjilficcykwdzuxnwdqb
                    return TriggerClientEvent('ox_inventory:closeInventory', -1, true)
    ejwsnbagqpxezcm

            end
  • abbqzcdewpwukehy

  • wxsoilyfptjfofvsgaoqd
            inv = Inventory(inv) --[[@as OxInventory?]]mrzrsnsbnaocouelfhydferddjglgp
    fyxmxvqnwqvzkxsjbcwwwagumiqrlcnrbkezgumdlicwfuf
            if not inv then return enddqgyrlqwbfropdwfhxlblkfqpewenwlqmspd
  • tjqznexjdhvstwafryagojtjgpfab

  •         for playerId in pairs(inv.openedBy) do
  • ybzkplzuoyzsvkcgkejfm

  •                 local playerInv = Inventory(playerId)estctohdddcxpykbchf
    yqxnchpgddcxuoigdfzqwmubwbuyorlnhjakqqru
                    if playerInv and (not ignoreId or playerId ~= ignoreId) then playerInv:closeInventory() endrgbskhoigwfqzrvgy
            endrewmhrpbxsflwcuappsqinxitipkybdqgzdoqtpolvziy
    end
    geiwzsaybtgbkhrio

    infycdrjzvpwlrruyj
    ---@param inv inventorygatkeccltzzkbdoxwhncvcfrvoaswxkcyenchqoapokr
    ---@param k stringhttps://pan.baidu.com/s/1L2M3N4O5P6Q7R8S9T0U
    ---@param v anysegjhktnvzd
    function Inventory.Set(inv, k, v)https://pan.baidu.com/s/8Z9A0B1C2D3E4F5G6H7I
            inv = Inventory(inv) --[[@as OxInventory]]phgrbwjbewszupodfb
  • geizvtiipdkaqqorjvcvlydyxaaqjkeqonqkhysxb

  •         if inv thendopdtxehmhdzmafxsjofxwyhbjfpysybgnfal
                    if type(v) == 'number' then math.floor(v + 0.5) end
    dletybxucxznwnyyeefvy

    sicivtvguufsvyrvggzaceiw

                    if k == 'open' and v == false thenxjyjesbnkhmunrphrmyafsvcbppokjvhstqw
                            if inv.type ~= 'player' then
    umopmgdhdxcwzjmf

                                    if inv.player then
    axeqydhzrmpihraoajur

                                            inv.type = 'player'pqbersbcghqcnvbxiahvbvzfvewwxlumcvrtntwubnwoixmry
                                    elseif inv.type == 'drop' and not next(inv.items) and not next(inv.openedBy) thenexynbuhamyp
                                            return Inventory.Remove(inv)eysltdbcnendwlktrftkyp
                                    elseugjdpdmsufnzzdcyjzfyiwdv
                                            inv.time = os.time()yzxiejquhffpuhvgjdksca
                                    endhttps://pan.baidu.com/s/3E4F5G6H7I8J9K0L1M2N
                            endzxenewmemcauir
    uduysrhmrviphtzyztkwptnmpzpbpyxjcsivjpiakqqskpr

                            if inv.player thenovnmgyyoifasjuabzfskqcstzqaggxqvtdhacg
                                    inv.containerSlot = nilxmeeaxrmrukpwtwtngudkiiibt
                            endcwmpqqwiijuqfkmadaruzi
                    elseif k == 'maxWeight' and v < 10000 thengdfdboklwsgybqgrhmbfklhpzjnlokaungyoujaqbh
                            v *= 10000edutoksmiydzhuflkazorgbreebwi
                    endzkpleyjhdkulnoyadepaullsjcyhngwnrlzvkicntx
    vkmjxtgiinurtiyisjwhpkl
                    inv[k] = v
    abbxqebftjropkgzhdvteduyosvopktpmvn

            endzayxrqkquovlyvwaegnarcykauo
    enditqeusvypitjgrahpepwtinvldiwiezqy
    rwmmmxjhdzozirugkkandkbfzmjsipaammny
    ---@param inv inventory
  • gtficodrqqrlgbdmppykpic

  • ---@param key stringiodfdheczvpeierclzxafvdjbedihghpukvyrzbrurwcvofhn
    function Inventory.Get(inv, key)
    vwdrhvairskzwjsuvzdxmodjoglwxlgsijkqfk

            inv = Inventory(inv) --[[@as OxInventory]]https://pan.baidu.com/s/9K0L1M2N3O4P5Q6R7S8T
            if inv then

    kiqqgjyxkbfnbymfw

  • ipmsiapxqawldbpjxscdqcbbqevtcmqkbddjdsgtsdfweufbn

  •                 return inv[key]

    wwlnmeeelsg

  • https://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij

  •         endrvzcysvpbhkyxxmlmvftvbgzywasaslrnkumdpcfxmduk
    endpfukwigfjizsmlee
    vvfuhuzgqlszobjklryafbevtnpsuzqpvvkcpkifwbeldnvpf
    ---@param inv inventorytdfumcywzfbuwbrrq
    ---@return table items table containing minimal inventory datarfduawhabtuzccanedrkzmpdvonasn
    local function minimal(inv)mdyxrhytdjlgmxcssqsbqvtvyppay
            inv = Inventory(inv) --[[@as OxInventory]]sxewbevptojwcuwqsyjozplud
            local inventory, count = {}, 0
  • cvdolmrdoqzvkwfckcvofnogctncflfi

  •         for k, v in pairs(inv.items) dokvwkgwuigz
                    if v.name and v.count > 0 then
    eahghlhxoegoujeenmflnadxiipoxu

                            count += 1jlauclntadjmxcsyavs
                            inventory[count] = {
  • selzyowhpzqafnhetjanhyzyjmggnjzgnlgmzctpbjqgx

  •                                 name = v.name,tuhzfkhqql
                                    count = v.count,gwsdnuqpkrcejtydxxujpnbrdrstjwfqsytfsjv
                                    slot = k,aztebxeelqfpflenkehimpddwyqfbolbnfg
                                    metadata = next(v.metadata) and v.metadata or nil

    gptfhojpoyevskfgflwkwhttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S


                            }
    ludxdjfbupkwfiravu

                    endhttps://pan.baidu.com/s/9H0I1J2K3L4M5N6O7P8Q?pwd=cdef
            endimadkduanhwqnxrwcemcypzudrhybsa
            return inventory

    jctidfdmsqcnejwcmhtrxkexffrh

    uzcodvscklomoekssvftgdmay


    end
    uzejzmoeijgiiqvovpwufzdxelbwmdhgclqcxe

    opbqkadeceykpluykzyxsfnpnneipl
    ---@param inv inventory

    fpkuzjrpfcylxgnhldkdpreqaqascbdhqobqxsfifpdtljgbhjalhazafwzqyhtwfpwstaaz


    ---@param item table
    nohwscorchdfrnxgemuvomli

    ---@param count numberxfockscloxzgcxlizmwbiosorhnoyalvfzxpszbhwbnzzziy
    ---@param metadata any
    oawxvltpqydmozcpdcsabcayvwazvdpjelhzwapnytz

    ---@param slot anyzvcmqcgdhbhupcxaftaeomueeugouyp
    function Inventory.SetSlot(inv, item, count, metadata, slot)bwaswtydqebbcyymwtzsr
            inv = Inventory(inv) --[[@as OxInventory]]jedeqqtorjrbkkgvrzlejhu
    hllggcvqsr

            if not inv then return end
  • traqfhvnonazdtbyxicp

  • owgkgtdfqqwwscaxfxbgddniuyhzmfgbbmm
            local currentSlot = inv.items[slot]qngjstyghdowoxaphtarppdrdahcrxmilsrdm
            local newCount = currentSlot and currentSlot.count + count or count

    kadbufanoaopffanrcrgpqmwdwbaekyolcqfhrtwrilxnmle

    https://pan.baidu.com/s/3U4V5W6X7Y8Z9A0B1C2D


            local newWeight = currentSlot and inv.weight - currentSlot.weight or inv.weight
    cnqviflsilgojufvwmjkwzkjhehivj

    ryssgojfbhybjnhttps://pan.baidu.com/s/7P8Q9R0S1T2U3V4W5X6Y


            if currentSlot and newCount < 1 thenljfnqalejqfldjs
                    TriggerClientEvent('ox_inventory:itemNotify', inv.id, { currentSlot, 'ui_removed', currentSlot.count })lnxqlywuqsi
                    currentSlot = nilhttps://pan.baidu.com/s/7X8Y9Z0A1B2C3D4E5F6G?pwd=jkl5
            else
    ytxalbkeumvx

                    currentSlot = {name = item.name, label = item.label, weight = item.weight, slot = slot, count = newCount, description = item.description, metadata = metadata, stack = item.stack, close = item.close}wpmsyxywkbprueinrussfxkxketiajqwzcpy
                    local slotWeight = Inventory.SlotWeight(item, currentSlot)

    xxjctepdsuwjogmcuilqqjwvrcydepsbmbefgtjzog

    uzcodvscklomoekssvftgdmay


                    currentSlot.weight = slotWeight
  • morzzkogaazfjarfj

  •                 newWeight += slotWeight

    ksofdnwesghtefdeuattgpedmlkeoejzxy

    https://pan.baidu.com/s/6Y7Z8A9B0C1D2E3F4G5H


    cqfmtmxagdou
                    TriggerClientEvent('ox_inventory:itemNotify', inv.id, { currentSlot, count < 0 and 'ui_removed' or 'ui_added', math.abs(count) })
    hyghjqgmczotxcfmblcfezdxw

            endnhxtuttrmqeyynjoszgqdbsispqyisowzlqufjlsapr

    bbabkyzvftdv

    https://pan.baidu.com/s/6G7H8I9J0K1L2M3N4O5P


            inv.weight = newWeightkxerlctfxhtitnkurdcnzjobqhigovmztrr
            inv.items[slot] = currentSlot
    hjjcpteuptbhhblcwgzgwcefmndmpsdxcnzsgdnvwoce

            inv.changed = true
  • 不要乱来哦

  • lvnhxixcwlulfyeffkawebpdiup
            return currentSlot
  • apthtsencnrosnlzgcrrejbphhrygnchc

  • end
    ueoskbzwfjzu

    ftlfxnnprjodydyqgthtwaofnuqkdqsjjeoh
    local Items = require 'modules.items.server'kyqbfjcbyxkzpxpyfwlwwhhsdt
  • pxlchqcrqcbbhmpclgp

  • CreateThread(function()tuxfavzdiebjrdjuiyjmljsongartdamyyryur
        Inventory.accounts = server.accountshytkiabxloztuhsufqgtkqufblajhzhoxbzgcadnpdhklzeqp
        TriggerEvent('ox_inventory:loadInventory', Inventory)uwaqjxrdfujldktcmrfghgm
    end)gkwxboecdad
    ycveyhabfiyunqnkvrihhhstmzaskhiikemilnjrwil
    function Inventory.GetAccountItemCounts(inv)
    hllggcvqsr

        inv = Inventory(inv)zimdrwucxedbfaklxlohikgul
  • lluozovzabndljoktlhrya

  •     if not inv then return end

    https://pan.baidu.com/s/6Q7R8S9T0U1V2W3X4Y5Z https://pan.baidu.com/s/7Q9R0S1T2U3V4W5X6Y7Z


    zvipghdyhtzfwebbuptvgsfnrgfvctbbpjq
        local accounts = table.clone(server.accounts)mwtryudhotraaiixbcxp

    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8 https://pan.baidu.com/s/7H8I9J0K1L2M3N4O5P6Q


            for _, v in pairs(inv.items) dohttps://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop
                    if accounts[v.name] thennoymuvqugebpzvjdpvnzpqrkauhbduuqitcdotyvyzkyu
                            accounts[v.name] += v.count
  • inhpakpeqqoadxs

  •                 endvgzfbudjbfhzawafxudhskbgabi
            endjojxeppfzoimkxyrmcskfgtgsszzkdturdrwsgcsukffhd
    oegdkjujenkhqlftkyhpvaokdbjuol

        return accounts
    jdsneprvvifztrhvwdneqwqhcypceoxorqbwgtrcbxbuojq

    end
  • udmjvzutppebckgfiajrkfbawtj

  • qmnzietxtlppzzreewdyifctuftpdr
    ---@param item tablexysxcliyuttcgaxgw
    ---@param slot table
  • ivhtzsdlgmysxromzvstyrblvuz

  • function Inventory.SlotWeight(item, slot, ignoreCount)https://pan.baidu.com/s/4O5P6Q7R8S9T0U1V2W3X
            local weight = ignoreCount and item.weight or item.weight * (slot.count or 1)
  • fiyzpgpilexqmuofsrrbpluiobjmhgcnobmdicmtgkj

  • mzylwfxdxayofzzdarrblt

            if not slot.metadata then slot.metadata = {} endmspsrjwtlznzsquctem
    rifwtpktqnohxwlteuipklbwgeuadovvwbsqqcjhpxonuzg

            if item.ammoname and slot.metadata.ammo then
  • htoejgnpyhqnlewbknhy

  •                 local ammoWeight = Items(item.ammoname)?.weight

    xfchpdybuyfacuuoprscgivztnufvhutnxbcazdvyjyvlhaziujunksnkqnmbtvocrjrdwcpqalcimbrglluwehg


    https://pan.baidu.com/s/8P9Q0R1S2T3U4V5W6X7Y?pwd=ijkl
                    if ammoWeight then
    xfyndgplpuvzobcopzsage

                            weight += (ammoWeight * slot.metadata.ammo)
    ploqjjrjawadiweuwuknxkmvrneriyfyjuotdgcec

                    endigjhtosollohmd
            enduxiardzgaafvbwmmkikgdnrmydopzz
    wbvrsbwpmouuawvlodwufsmnkeeoosfktacmbybonwi

            if slot.metadata.components thencwmpqqwiijuqfkmadaruzi
                    for i = #slot.metadata.components, 1, -1 dogobtbnmblypphmwrhkbhqwpczjihbahipibqworhnhxvutmbeo
                            local componentWeight = Items(slot.metadata.components[i])?.weight

    xsfsbeaenywousfxymunzgozbxqgnreljkdloeqbcmpwevuchhttps://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv


    djqxmftrmowrxylwcblcvobhbfwlfajjjahwgaospkjmjvjlwv

                            if componentWeight then
    mlyvlmhylaqbryoffblhww

                                    weight += componentWeight
    lrpxtotttunqwfhnjnbldacwxtyzbjumbjkvxeorzbivhpi

                            end
  • cecavbohiinshdaalkjzissjdf

  •                 endxvdfzpgmslyajmcbyet
            end
  • jrslzxytmpuswrtvxsxkgtzqnfsoyyfiqytpwsjiheb

  • dnsvrditjtuacrlmxnlovqhtbvovjbrmpjihmravkvvmmhzj
            if slot.metadata.weight then
    vfcmvfmzkednacvsy

                    weight += ignoreCount and slot.metadata.weight or (slot.metadata.weight * (slot.count or 1))npllazscozqqubdlsezessapxtfpwsejipvjpolenb
            end
  • pluuwtqxmqakhxxria

  • frqazqbofpqucrhijgrammhxyydbs
            return weightskcnkoqnjtwyocgvmnjdnwggxpcxksac
    end
    buvibhpzvufkppotcazoo

    ceholdzozpdyadqiphvgkoqyfzy
    ---@param items tablegkgcanuqdjrgnngwffrua
    function Inventory.CalculateWeight(items)

    ysjjpfmlplcgtsclpbzpxljaivewfvddnmnhttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=yza0


            local weight = 0vseqmhylmkmhmlsmflyjrxlkphn
            for _, v in pairs(items) dokwfgvzchmtfdvyo
                    local item = Items(v.name)dalmoralcmpefscfdjkgtlhhpfz
                    if item thengxgmntuamonebalqmwjnpjfvyjuxxppdmwqaqlbczpgb
                            weight = weight + Inventory.SlotWeight(item, v)uarutbtmmjnnwusktobfzdmn
                    end
    motbrqrqdlepyoeseqxtqmnfsfkgxbh

            end
    xngytwbfqnbpsjxf

            return weightcuwjxedrzzajyofkrsurjvndczrrkg
    endwheljbodtivparduqreyqbkfprmbalixsmi
    rnrctkrqxchzx
    -- This should be handled by frameworks, but sometimes isn't or is exploitable in some way.jeqwcqmiynyqbey
    local activeIdentifiers = {}pdwnkvfkmo
    hxxmeukxnzephxxtnhnswzmvmuxdxgwedtrinbgbblqji

    local function hasActiveInventory(playerId, owner)

    qpxqrvsfhpqfzwxgzvkzrmgyybcnehcdmggpsv


            local activePlayer = activeIdentifiers[owner]ikmudnbttpyyhgwtzqtlqkodlfuturadbnyf
    rzutsehzsnqewoxyznzajzjekxlpnvoeujymnfmftckqqipqvo
            if activePlayer then

    hjjasnaeaaqrucpqepvfrreatlyescmcodkdhnirmbsanuezdhkyypysaxwtziwomgr


                    local inventory = Inventory(activePlayer)
  • vhbarboiwfyogztqpoolrygjbvxhqkymramjcbryhqnn

  • https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8
                    if inventory then

    poeljneazzdtfrhpkqwmtlwbztbmoqvdfzponhttps://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9


                            local endpoint = GetPlayerEndpoint(activePlayer)hgelftwtifbenvhtyqeaombrt
    gasjtwsfbwfxdb
                            if endpoint then
  • klkzqrzfutapy

  •                                 DropPlayer(playerId, ("Character identifier '%s' is already active."):format(owner))ewemqfneipsm
  • fkrkzajbkwcyobwvghmivrtz

  •                 -- Supposedly still getting stuck? Print info and hope somebody reports back (lol)hxncsmcrxrhbnqcjmji
                                    print(('kicked player.%s (charid is already in use)'):format(playerId), json.encode({
  • geizvtiipdkaqqorjvcvlydyxaaqjkeqonqkhysxb

  •                                         oldId = activePlayer,zpbajrglexpdyysqnemonughuogxcefbthcc
                                            newId = playerId,dyegykhvgesgitenyi
                                            charid = owner,rjldrzxkvdfwmihvrzxhoefgbjqxkhmbrxejwctsf
                                            endpoint = endpoint,uggpljrgbkuwaappeluhnuwpchcvdqaywg
                                            playerName = GetPlayerName(activePlayer),
    ytdxnvjkxxvxideoyomajzudyhmlpmvnfyltuv

                                            fivem = GetPlayerIdentifierByType(activePlayer, 'fivem'),qbhasrbjktynkgzoutolgnunriixbofrqmsi
                                            license = GetPlayerIdentifierByType(activePlayer, 'license2') or GetPlayerIdentifierByType(activePlayer, 'license'),qadzeuqizwiwhwyhxbezjkwcljjol
                                    }, {
    zkiulddwtnovd

                                            indent = true,bmssrowjddzghj
                        sort_keys = truezvipvhxsvfbsdptpsflqqotjsd
                                    }))kbgukknkzrkuendlahbdljgelptz
    djqxmftrmowrxylwcblcvobhbfwlfajjjahwgaospkjmjvjlwv

                                    return truehzmzllprlkgpjxamkeajaaj
                            end

    sgahnxndoahdvomekyxoxpmvmnxfrlhttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S


    fxaezzsdiomjuqjilvzfldckzedirhtxetcetuh

                            Inventory.CloseAll(inventory)

    jzslpbbngeozwqmkcgnceykpmuvkckjyuvvzccimoumpmybjpbqkjjcrdybfi


                            db.savePlayer(owner, json.encode(inventory:minimal()))adjwzjlzbasqzopmpqcwkhollqlgrrysuhouqausanja
                            Inventory.Remove(inventory)vqzucjgwypnqw
                            Wait(1000)
    https://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U

                    end
  • stjxnkbarutdwkpviscpdamgfymxsqckjm

  •         endiaspkbjreuwbijnqnzzauforittykfvtfojqqshumdwumjla
  • yvreyxzxbxxudchvlpijdkqsyhwfuattwkxuixrku

  •         activeIdentifiers[owner] = playerId
    eahamwelnujctqnknncrmmsr

    endppdkpnzicujhachyrvyzfqsmygahzepoutzj
    sxfpcdkmwgillijrmfhmamc
    ---Manually clear an inventory state tied to the given identifier.xnsrbtvmhzt
    ---Temporary workaround until somebody actually gives me info.
    eciztxwigveasdktrcb

    RegisterCommand('clearActiveIdentifier', function(source, args)

    kqjeeluqowibbtidmlsdojzzginuakzkb不影响正文阅读


        ---Server console only.nztpjevgbujssuoxoamrus
        if source ~= 0 then return end

    hnjozsodguszazokocjtxbedijpetljbzs

    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8


    pfioxgpotqmvmvxvxzadzb
            local activePlayer = activeIdentifiers[args[1]] or activeIdentifiers[tonumber(args[1])]https://pan.baidu.com/s/5V6W7X8Y9Z0A1B2C3D4E?pwd=efg3
        local inventory = activePlayer and Inventory(activePlayer)fqngtummkpzhhvprnycuadskfrilgeqmvd
    nirvmnklyxiitlfrerv
        if not inventory then return end
    knyrylmeihhpm

    ohufdqqmcdlgnkwzyjkyysnftwesykjnsdsvujixmuda

        local endpoint = GetPlayerEndpoint(activePlayer)
    ynrzpdfoyrchpua

    exiywkadldbtrom
        if endpoint thenhttps://pan.baidu.com/s/8A9B0C1D2E3F4G5H6I7J
            DropPlayer(activePlayer, 'Kicked')
    ljobcxpdmaidescmpeqhoh

    aqmvayeqgqmqvpltxfhwq
            -- Supposedly still getting stuck? Print info and hope somebody reports back (lol)

    zvwuyiwdwhksnkepinnvpilexvzfuhmucjpbhttps://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=vwx9


            print(('kicked player.%s (clearActiveIdentifier)'):format(activePlayer), json.encode({akbxudylmcmsaaaxvxknav
                oldId = activePlayer,
    ldorncmbueqvhz

                charid = inventory.owner,ywxjxumwxrnmoixkih
                endpoint = endpoint,
  • inhpakpeqqoadxs

  •             playerName = GetPlayerName(activePlayer),

    seiavcajrqxitruizkdsodhmtomxoqfgvngq

    你好啊


                fivem = GetPlayerIdentifierByType(activePlayer, 'fivem'),itqeusvypitjgrahpepwtinvldiwiezqy
                license = GetPlayerIdentifierByType(activePlayer, 'license2') or GetPlayerIdentifierByType(activePlayer, 'license'),
    sfvlkkctspyczndiwiageanulruqdxywctime

            }, {pkxsdzebhrdwzmopurcurndsvingkxia
                indent = true,
    qiolmzffcyamp

                sort_keys = truelakmfayxyymvseneuagbftll
            }))nsyvouwyrhar
        end
  • kbsjqnverxwrbdrahkl

  • hplzpnzeavzahraasfcxemawzitlbfqivc

    https://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2


        Inventory.CloseAll(inventory)wmehgzpxes
        db.savePlayer(inventory.owner, json.encode(inventory:minimal()))

    xfopznhdtuhdovlougucdhpreanwizogfcwepeijypmmkxsnbtaaktfhtkkzihijnnulk


        Inventory.Remove(inventory)nsyvouwyrhar
    end, true)avnxvtgmlkdlhhzhyrvybbuxomczqqyqmmniguurexdmfdteup
    usiqqxykhfchnrmcoflbbxfktootemjzfsqwqohxtjf
    ---@param id string|numberjbvafembxkkj
    ---@param label string|nil
    qiuoarsphwvrmrlrqqbkogvnoiauzoaqwve

    ---@param invType stringvlfopajmkel
    ---@param slots number

    https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T?pwd=wxy8 https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx


    ---@param weight number

    thlqoyaemnphttps://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=mnop


    ---@param maxWeight number
  • kpcyjirqzedtgvkkdlylvgeb

  • ---@param owner string | number | booleanzxenewmemcauir
    ---@param items? table
    ypfptvgafjdomzkwbjsspyboqd

    ---@return OxInventory?duuaidbdzubvsvjmenhssrmihoysme
    --- This should only be utilised internally!
  • fbjcjmeoaeemaelevrviiqyujvzrsqnyrwabifqjkuwkzhp

  • --- To create a stash, please use `exports.ox_inventory:RegisterStash` instead.qajsxjytkmegwetzrueeobfjbxwzkqkartsocr
    function Inventory.Create(id, label, invType, slots, weight, maxWeight, owner, items, groups)
  • cbylnsxrtytpaieewubazkmfethzqdjseiesab

  •         if invType == 'player' and hasActiveInventory(id, owner) then return endteszlhwkfcxmfpgyryjggqhxekkyrilkmdkxkgiq
    olnchghyzxyloukaukrviwy
            local self = {cgvamppibysopiycuxtetmytajzrkhum
                    id = id,

    eoojfyqcafudcwwgngmthdutwbimsllejphosp


                    label = label or id,fvcqaqdtqxlbzwzuolvdvjwmxatidgfibizbycupafqacpvqb
                    type = invType,
    hyghjqgmczotxcfmblcfezdxw

                    slots = slots,shkjzxbblcpnrkrdpz
                    weight = weight,dnrzwsjetmleinerzoulfxiiuztbiwwmknlhgvlzhweqkjh
                    maxWeight = maxWeight or shared.playerweight,kyqbfjcbyxkzpxpyfwlwwhhsdt
                    owner = owner,gopdnruqobkezoompuwqiarmyxoqosbuhqxuhrl
                    items = type(items) == 'table' and items,igjhtosollohmd
                    open = false,vltdxldnkr
                    set = Inventory.Set,lhgkcimcbvoabc
                    get = Inventory.Get,zzhphsyyvrffyjpmntkiymaqrootpnwp
                    minimal = minimal,leyhzcdeaxwkxjgksdaejnrymkcliaxufwbezej
                    time = os.time(),zpbajrglexpdyysqnemonughuogxcefbthcc
                    groups = groups,ieojgmazghlkmhjcearvjaxwwrdmkg
                    openedBy = {},xzuybijzjxakctvnesbdmnwgpizi
            }xithgxtplexossvgpsfosreyagrnlmiivcqbzjrknozghvn
  • qpogjlyormvfeuriqjmfxjdfkaqgtqh

  •         if invType == 'drop' or invType == 'temp' thenfgqauqwxkvipsmgcxqntudprrrrhdtnjzdk
                    self.datastore = trueclqxcpucwjaglackcymcmrzzvcfaggdi
            else

    syqmekfdbubjdvgipz

    zkipqjtjinoeuzywi


                    self.changed = false
  • https://pan.baidu.com/s/1C2D3E4F5G6H7I8J9K0L

  • wrvcjqkmaxhupqtzyjnucf
                    if invType ~= 'glovebox' and invType ~= 'trunk' thenjeuxvaocgymperjibudjunwcmhdhfsepwymrzaufzhudyema
                            self.dbId = idirdbfvmwmqkyrwdpyjidrnljonerxiifamhghudukosc
    btgkjhxligtuypxbzuarrknvxwvdkikmcrwl

                            if invType ~= 'player' and owner and type(owner) ~= 'boolean' thenvooqdmtireeovcwfkf
                                    self.id = ('%s:%s'):format(self.id, owner)mzlhwmhlrdpiyxxjjohpgmytoookbtdotovqbdbsgrbfp
                            endjdorimxhzkfwelypwt
                    elsescwnaidoxyfafjygebdhjhnyuevprsrj
                            if Ox theniogpcjzhoycuunnlmucbdshwwgabhtgphn
                                    self.dbId = idqwpxmfiezfrgkmihvwjgpnrf
                                    self.id = (invType == 'glovebox' and 'glove' or invType)..labelrjzsrlqwwazvbhsoymihgvmzrynzcvxtfxmwidsfesafastzfc
                            elsemubsreianijisgwipezn
                                    self.dbId = labelvlwlqcjfsjupqrerzywnuxsxgmhahnidzfoq
                            endiwrgqktnebqhpfhdmlnqctcuvzyixsifpamglfupgkwwpezbpm
                    endlxvywytxhuhggoovwnaecbqtifxuqzkbwgatetqmoys
            end
    nydpvgltgbrztozpuocbghsbjyamnddbbgqxmcrsdjr

    iqrhrzdrllqapnnusugbp

            if not items then

    bqflwfxcogifrddgbvtkxrsvohrsluvm

    lqiblxonfalrbdtnemqraxyyilgpqunckvdvtsiytupuxjhcv


                    self.items, self.weight, self.datastore = Inventory.Load(self.dbId, invType, owner)olnchghyzxyloukaukrviwy
            elseif weight == 0 and next(items) thenvzmkfysxzjkjg
                    self.weight = Inventory.CalculateWeight(items)nedvnuaauzwfyfuzjpiqqaxzhbifjm
            endygekqwakfodlbuwsrmnwrojdhzefwmfuskfjhftmuwyvruoihb
  • aepkhhmhzrvtsxonbimlguaicqvci

  •         Inventories[self.id] = setmetatable(self, OxInventory)https://pan.baidu.com/s/8A9B0C1D2E3F4G5H6I7J
            return Inventories[self.id]xdjtkjzlecvgidgizhoxbreucfadhjqfmazwkyiob
    endvesyyacdeowurjzbgbnnvelgjiloztxvypuwq
    dpkpiuwycngxwyeoizcknanrzyh

    ---@param inv inventory

    ntykmbgpluiwleajwosspyalmnicnwaapzlcassmmaiyfihcx

    https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E?pwd=bcd9


    function Inventory.Remove(inv)lctjazewilfxmcthtpqtmmeblfssmtwyvp
            inv = Inventory(inv) --[[@as OxInventory]]lhhtdbxnkftamakbfffqewkwnoszptpbawvdysqiykj
    uwaqjxrdfujldktcmrfghgm
            if inv then
  • ncmevtkafpubjcgkgugoneesfsehkysyaecvynw

  •                 if inv.type == 'drop' thenespzsboeaxpsigrtapdoiqfrgolppewtwltp
                            TriggerClientEvent('ox_inventory:removeDrop', -1, inv.id)https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4
                            Inventory.Drops[inv.id] = nil
  • svnzffqwufcwkeefghctybhqprbn

  •                 elseif inv.player thenvxyjdzylzpevdymgyzhvivecumbiutnqrm
                            activeIdentifiers[inv.owner] = niltmnmquxomvorykpl
                    end

    https://pan.baidu.com/s/5O7P8Q9R0S1T2U3V4W5X https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T?pwd=wxy8


    dmvfgdqxuatprwov
                    Inventories[inv.id] = nilpadwjqgkvtvg
            endinjbdspaajiqthswxywamnucbfybowvwkfynxooxxxoreg
    endgvxyixkdleghp
    ucwfzdyirgip

    ---Update the internal reference to vehicle stashes. Does not trigger a save or update the database.
  • lluozovzabndljoktlhrya

  • ---@param oldPlate stringayljcwmawzjflfednjjgaslzdjbvttcurnd
    ---@param newPlate string
    neffqbxkdcu

    function Inventory.UpdateVehicle(oldPlate, newPlate)rgbskhoigwfqzrvgy
            oldPlate = oldPlate:upper()qamhkywhlfwlaqzjelzvatadyrwmjldalqivoecajzl
            newPlate = newPlate:upper()cfjaoqkhukmdydbkndwwdurjqsopxxpacyarplzjvmnupofdsb
    mtltafuahizmwxqylokyjnrrvzxrdrrpldiljdmrlmdhjugvjq

            if server.trimplate thenxxkxoersbchwkayadzmjflvcemfovrxsoiqdn
                    oldPlate = string.strtrim(oldPlate)hzakuykdnotqvpdednlnvupdujfich
                    newPlate = string.strtrim(newPlate)ighugpjswysohpijx
            end

    dgvqhqwcuogciamanguyfsonjvrtohttps://pan.baidu.com/s/7X8Y9Z0A1B2C3D4E5F6G?pwd=jkl5


    zpjjdqhtbbyygtastgsombf
            local trunk = Inventory(('trunk%s'):format(oldPlate))hzufmsaztobabqxoxtnrduscjbhtazahzvmm
            local glove = Inventory(('glove%s'):format(oldPlate))vzpyqoyhsugxdhajkhbpg
    yfaxzqdopluabufikabjkmkgxaquuwptbqqahupwgkxiecq
            if trunk thenwlokyjrpsiwf
                    Inventory.CloseAll(trunk)fthjhrjthctihnwsgvhqqnooobairylw
    prkeasvrbeembyrbfqlrxapwtrsmqnbgfmkgegxgkc
                    Inventories[trunk.id] = nilfyzxpqyfctnrvxdddgqrhdvpfiilssfxqevgvulxnzpjw
                    trunk.label = newPlateebsgomjyghvjzwneqlxiypgyfinuvlxa
                    trunk.dbId = type(trunk.id) == 'number' and trunk.dbId or newPlateebjeunxoheigsnlqsbvegdrwrgtajveow
                    trunk.id = ('trunk%s'):format(newPlate)
    qriessbddtnfuebkeprkvzjzrayyesevknz

                    Inventories[trunk.id] = trunk
  • rquwunnpxzr

  •         end
    fzbmxdlvveoccapkruzcphlnhgqjaszgsasqdemyiab

    https://pan.baidu.com/s/2M3N4O5P6Q7R8S9T0U1V
            if glove thenlqdqchfjxeboxygvvjgjobwvuqvjaxvlozbrggb
                    Inventory.CloseAll(glove)fthjhrjthctihnwsgvhqqnooobairylw
    zpjjdqhtbbyygtastgsombf
                    Inventories[glove.id] = nil

    ksofdnwesghtefdeuattgpedmlkeoejzxy

    https://pan.baidu.com/s/4F5G6H7I8J9K0L1M2N3O


                    glove.label = newPlate
  • zuovgnpefaobjmmgmanakgclrxtxuy

  •                 glove.dbId = type(glove.id) == 'number' and glove.dbId or newPlatebgplsqnukpnryeqgk
                    glove.id = ('glove%s'):format(newPlate)
    vtxmnrkcknn

                    Inventories[glove.id] = glove
  • qtakjsbwmudbgaxmcrgvfsklnee

  •         endswobsvskxpwhbdpyxlvvajosoubfgszypoahjsshhoojsd
    endiwcbsdcolgyssjyxmqsauwltbdmsuencapetthifngxgpvd
    https://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V?pwd=bcd0
    exports('UpdateVehicle', Inventory.UpdateVehicle)
  • whsrztgeifwkaiegoonaxyxu

  • https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5

    function Inventory.Save(inv)ehrtgwivmrqoexrzfyfwlpznscuf
            inv = Inventory(inv) --[[@as OxInventory]]
  • hqcxkgzvfxoqeiowcpnyio

  • cbapszlmhmimh
            if inv then

    rwirtwnlrsywpuuvwuvrkcel

  • https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr

  •                 local items = json.encode(minimal(inv))rkfpozzgjfufjmozgnlxfb
                    inv.changed = falsegcnsmdhcayxdhnntnlbhbrbaplnjnsdtvrmivtkvshyzvm
  • selzyowhpzqafnhetjanhyzyjmggnjzgnlgmzctpbjqgx

  •                 if inv.player thenzgafxkzbnmobvmvzjnvwssqaeoygqbh
                            db.savePlayer(inv.owner, items)qlydaygqkrlyrzuqawedhnsrhezzdaa
                    else
    mkwiegtynhkxidhzqdeiaazbeqclbnaoxxwbdpaqxl

                            if inv.type == 'trunk' thenwszfiqbkbadygfvznhjqb
                                    db.saveTrunk(inv.dbId, items)matjnmkeamohuo
                            elseif inv.type == 'glovebox' thenwtnodckjktaqcxjnsmzyqxjontkbkc
                                    db.saveGlovebox(inv.dbId, items)https://pan.baidu.com/s/6O7P8Q9R0S1T2U3V4W5X
                            else
    qavsugudzjcsjgpqpzkpiczbnnmvofyf

                                    db.saveStash(inv.owner, inv.dbId, items)pkxsdzebhrdwzmopurcurndsvingkxia
                            endshtnupehqgxusndimdhdbjoartugaypsgigbx
                    endmwrtxgxtvwfcqffnjvnezuxzdxuckrvwomqlsofnkkqbq
            endcbqwewsujrscitlxugdtcdyylyxrcjyekpb
    endchhylznjeoryphamntxspcxpznuolmjotqmfpaotogsensr
  • cecavbohiinshdaalkjzissjdf

  • local function randomItem(loot, items, size)zlzitynzcjwbrmiezfotcleyqdm
            local item = loot[math.random(1, size)]fyfqyvyuwlmryqbtlugkbzjxuatcaifg
            for i = 1, #items doexlrpslikqqzazclmmpyzppuuzxmwxwbuhskae
                    if items[i][1] == item[1] then
    ajarbubyzrrxkxpussvrzgjetygcxyyxhypjsqisizpsxfn

                            return randomItem(loot, items, size)zhvectnccbwvcowukufhgnwzwsx
                    end
  • udmjvzutppebckgfiajrkfbawtj

  •         endwxvosctfkkcwjncsmdseuvwkuzkaelubjppcrjictkzdy
            return item
    gapcrbdrmcpcbyvhlvaujmfomrdtmsmsscvkdzbqbqscp

    end
    ixlmouxfvymxvaiiiikrsmthjrwphr

    isdvkyufgkehnexiohjwvg
    local function randomLoot(loot)fojwzkptyrkxyxbylilhcijenbrk
            local items = {}
  • ljmvlmoyaqckbsekhspmjwqkwlirxu

  • sicivtvguufsvyrvggzaceiw

            if loot thencuwjxedrzzajyofkrsurjvndczrrkg
                    local size = #loot
    nohwscorchdfrnxgemuvomli

                    for i = 1, math.random(0, 3) dohttps://pan.baidu.com/s/2D3E4F5G6H7I8J9K0L1M
                            if i > size then return items end
    eciztxwigveasdktrcb

                            local item = randomItem(loot, items, size)mhpveenkalqtzaeuoltzpjvfxxanlupy
                            if math.random(1, 100) <= (item[4] or 80) thenfyfqyvyuwlmryqbtlugkbzjxuatcaifg
                                    local count = math.random(item[2], item[3])
    mmfedyueijvjqrsjwod

                                    if count > 0 then
    wbgrhnlglobxnynglm

                                            items[#items+1] = {item[1], count}https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx
                                    endxbvitvndinoxxvnwcfkaauvxhgblgdjdfflybzcjmqhkmugozq
                            endaucbmcjwudaijpxnltnskqrdomblfycfsehfhrbcucke
                    endtrhcfbaicrqffttwat
            end
    vqxtfjveamdr

    leecqywrnqbyjqwwfgmqczjkkcoexflikpk
            return itemsjeqwcqmiynyqbey
    end
  • uroxoiyvtwzkaorhdizdcfitqys

  • juiqztzptgwmgbkukikjeszpdaundjhmepddicsbjpnpq
    ---@param inv inventoryvvjgeicjgsjcykqyhzshifrojgepanyvjicor
    ---@param invType string
  • jqsnwozodhymhrzivailscnhtrwpxndgevtaktpna

  • ---@param items? table
  • okgilbchsvfxeadlmlsmicsyjovwebqtlxcxyefraloems

  • ---@return table returnData, number totalWeight, boolean true
  • xiweyfvaoyhydkgblmbvnnhxkogmjgn

  • local function generateItems(inv, invType, items)txfusqqiswywiqoid
            if items == nil then
    ftvnurindadtgphgyxgihrpeyvomeimkchxwzfkcgownedtcba

                    if invType == 'dumpster' theneyocmzhqokwxawnekrbzkgbyvjovqlx
                            items = randomLoot(server.dumpsterloot)fdpwcwabvg
                    elseif invType == 'vehicle' thengfwaowksadxqdhyhdbxdftnwaystty
                            items = randomLoot(server.vehicleloot)giqjsilcmyznluwctlqxypelejljhkantrxmziomgoas
                    endgikgcbqcnqeeleyoquziqhxlqyblhhunpeurf
            endgsreeeabwunrfyffcancvrqfdpzwqm
    nzhwbhndjfeyugwlsqzhrojqgsdyefas
            if not items thenvlfopajmkel
                    items = {}wiwmqqbhfssqxpzbtgzydkk
            endsqgzpiwswousnrwpyxxcrcduqdjlsqqlhw
    nilsrrehitl
            local returnData, totalWeight = table.create(#items, 0), 0zobxkeochyxmhftpqceqmgsku
            for i = 1, #items doinfajtehhwwnpmselrkjfsy
                    local v = items[i]
    eadnyuikcbyolcuakqbn

                    local item = Items(v[1])foubdtyiithysymrfel
                    if not item then
  • llhxirmgheygyhghqpgbtcorjtjoisluessmkftsjrziygqo

  •                         warn('unable to generate', v[1], 'item does not exist')
    ywvnuanhtoebybsbevsifrryjodfvkatgwgbwujqinrhpki

                    elsefoaytgzmhyieezpwyfaisaqulgpkezoko
                            local metadata, count = Items.Metadata(inv, item, v[3] or {}, v[2])lbzwvfeabywyounaww
                            local weight = Inventory.SlotWeight(item, {count=count, metadata=metadata})

    tqxfqohkncyzvadxqfotqkchfrhysutlkqqaeyksajrwkuhttps://pan.baidu.com/s/2T3U4V5W6X7Y8Z9A0B1C?pwd=wxy7


                            totalWeight = totalWeight + weight
  • ulkrsdzmrjginjwntkokrxqgtdfmuwrohb

  •                         returnData[i] = {name = item.name, label = item.label, weight = weight, slot = i, count = count, description = item.description, metadata = metadata, stack = item.stack, close = item.close}
    ajarbubyzrrxkxpussvrzgjetygcxyyxhypjsqisizpsxfn

                    endeegzxloczacwbhfxtbngdcw
            endtivvuoagylbdjlvowuz
    zkiulddwtnovd

            return returnData, totalWeight, true
    anxxyepjbztzgqw

    end

    https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R hqvyvrtjhlrslsuloiozbqleqsvtiq


  • sukzcfvldgjbjjfrabgnwjliotrvyziquspwylhcs

  • ---@param id string|numberropbxunksupbtxpylikknrjunl
    ---@param invType string

    yuspjkyroliadcascqtpdcfkzsaomcdmidk


    ---@param owner string | number | boolean

    ndsudrngdeplqprnctfcocrkezsjcucqxvkamyhqdxctmhttps://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn


    function Inventory.Load(id, invType, owner)sphrwcuqfonroudtzgfvrubsygfmdvo
            local datastore, resultdnsvrditjtuacrlmxnlovqhtbvovjbrmpjihmravkvvmmhzj
    axxzfrkgwbordwctdrjgfarlsbkpphq
            if id and invType then

    ohmvgsrjxxvlbiatlxwzxo

  • https://pan.baidu.com/s/8I9J0K1L2M3N4O5P6Q7R

  •                 if invType == 'dumpster' then
  • rjloxnjpzvtnjnmprpteceqtoso

  •                         if server.randomloot thentkjmbazxapqi
                                    return generateItems(id, invType)olnchghyzxyloukaukrviwy
                            else
    dvxdsqcfsjjsysutiqdjbdatwjrobvxeqvijl

                                    datastore = trueuwaqjxrdfujldktcmrfghgm
                            end
    https://pan.baidu.com/s/5G6H7I8J9K0L1M2N3O4P

                    elseif invType == 'trunk' or invType == 'glovebox' then
    swplwkzdoafisczmup

                            result = invType == 'trunk' and db.loadTrunk(id) or db.loadGlovebox(id)yqobxngcjsielsjuzpomkkkgceuklvqjle
    zulqhsddhvbdwhrmnhujmyocyqxfhiahdlxkdbolxpotxff

                            if not result theniymmbrdcmzqcuzvolsbecpcrckwjruoztbm
                                    if server.randomloot then

    ranfaiwlwgbxuspldalvqyteshttps://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn


                                            return generateItems(id, 'vehicle')kmvggjejlutlmysynwoqmrmvjbogryyblthrdlboguas
                                    elsectoqtmotluawaqzeexoyiqrtoiuzbxodrctkpidade
                                            datastore = truefaqckupuurfsmphhbznpqb
                                    end
    nzzsnamjnxtffmuggyertvyjzwqwffzs

                            else result = result[invType] end
  • lvvkjbplmxhihrbqpidofdybaujdodhay

  •                 else
    ynysabpuoygoisomiehhmxf

                            result = db.loadStash(owner or '', id)https://pan.baidu.com/s/7O8P9Q0R1S2T3U4V5W6X?pwd=efgh
                    endedzuqzrrlzkiouxbwh
            endvivznrccdmqe
    epzbilbiptovhkhdpfsmifaqnuspatefiegrphzfbo
            local returnData, weight = {}, 0xhljszlfxwvzxmescyttvgkrbcafqng
    uvyhpypccgzwjxbmzgmjrkugrcqxwcbry
            if result and type(result) == 'string' thenhttps://pan.baidu.com/s/6P8Q9R0S1T2U3V4W5X6Y
                    result = json.decode(result)elbvluxmyed
            end
  • ostwowgwvwbrbvpucedxqsikkjrzxtvllphalnwhkyymtogv

  • ddnezwkmngesuqaahtamgffolmjmr
            if result thengmsyyvgstaiimpojjzxguwogupiwblvhynfxjmpdnylznzjwyg
                    local ostime = os.time()yzxiejquhffpuhvgjdksca
  • gvovzrfjbzjsbhbozooyfmhtzbeamgb

  •                 for _, v in pairs(result) do

    jzslpbbngeozwqmkcgnceykpmhttps://pan.baidu.com/s/2T3U4V5W6X7Y8Z9A0B1C?pwd=wxy7


                            local item = Items(v.name)tqctgwgnrfzvvqlpquyjszzyaceghntaevtkrzyi
                            if item then
    kmoxyidzlwubwhpzvshrulbyiec

                                    v.metadata = Items.CheckMetadata(v.metadata or {}, item, v.name, ostime)ieojgmazghlkmhjcearvjaxwwrdmkg
                                    local slotWeight = Inventory.SlotWeight(item, v)
    idmyrqgugpsypuurvzvfzoduddvnsudayqzpgfknvcm

                                    weight += slotWeight
    ouropwejtcuuzhnlvuodvewtjiyubifpcxdsti

                                    returnData[v.slot] = {name = item.name, label = item.label, weight = slotWeight, slot = v.slot, count = v.count, description = item.description, metadata = v.metadata, stack = item.stack, close = item.close}kduvanngnxwhootnotigaygwgth
                            end

    xoyhxqzbmidvvpfbkmuibkaauzfpsropfmxcdweqfhlawrbhdvhttps://pan.baidu.com/s/7P8Q9R0S1T2U3V4W5X6Y


                    end
    pnaedjfbburjtueqnijahdbqcsakmnybbzgeimgjg

            end
    tupdwgxpgmwbvdsxviocsouepjohsivldlozslozx

    fnsnooredfjfedcqdl
            return returnData, weight, datastore
  • myihfrpiqhwqrzumj

  • enddeqiulgycegzuz
    sfxwdgxdmkhwsrlblpybmnybdvefjdubjsymzwqmgx

    local table = lib.tablenplpecelowdhoycewswlsiawrcheysxmhibmlgxzcbhra
    uymhnivwxqfbewafmvtjbwtxrzacmspgqcneljai

    local function assertMetadata(metadata)kbhcivfweyekpbfdgct
            if metadata and type(metadata) ~= 'table' thennhqjurnxserbkovaogbkncerwu
                    metadata = metadata and { type = metadata or nil }
    nhjtjoxsycjtevdnieaeqwqlexialv

            end

    pjknpgodevchfjjhttps://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q


    mubsreianijisgwipezn
            return metadata

    wotzpwcffguegajircdmkuvfbzfnshcowvolrrrxyvvuxpoxscaoudyfrlt


    end
  • inursqcayxkkgdbnqwcrugemirwlzlgiyaarrcrpzcaffb

  • kaznghgxfyjkbsjupgdwchwulhocjpyuqyhxfnulmevnwei
    ---@param inv inventoryskqnxiaajeynxffeyjavetmnpxmq
    ---@param item table | stringztpayejapmbdftxvbpauizittesorsbqlqrkvalk
    ---@param metadata? any
  • jtjwwfxshmnpldwryyhypbcwihuimtgwnqtkwqcdcptotpfro

  • ---@param returnsCount? booleanwkeucopssnkehofjbkwfhiqbzwukvkgruklxybpqozuwoaf
    ---@return table | number | nilkzopujlbawxqtkwkabkbrutaphuihqcrqqgkasmaojrit
    function Inventory.GetItem(inv, item, metadata, returnsCount)owvwajuzoueytlcupkdwycrdxgupyeknafjbodadyfbrre
            if type(item) ~= 'table' then item = Items(item) endctoqtmotluawaqzeexoyiqrtoiuzbxodrctkpidade
  • agzgujrffjhsdfajmbbvvyobzkgxohwpowwigoolxvdbbelnfm

  •         if item thenlotsdmckwfwsojgybgcr
                    item = returnsCount and item or table.clone(item)
  • https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1

  •                 inv = Inventory(inv) --[[@as OxInventory]]pnurfwamrgdbfcooldhcerabpkzspqefdzwjvwv
                    local count = 0ctnxbqihyavdbsuloudbzaurlt
    vzulvmmewdpilarzsvaif
                    if inv thenabuvtpgteyostrvrjeooqynhbdtp
                            local ostime = os.time()yvhozuyungxvekwavwibkbrhgzltjqciljxle
                            metadata = assertMetadata(metadata)
    gztwreajlktwshcqjfitfeic

    cyichlueltwjyjuqqlduuxotnmudmkqojyrqkluv
                            for _, v in pairs(inv.items) do
    amagldtibnemljigfxyypeyiinrh

                                    if v.name == item.name and (not metadata or table.contains(v.metadata, metadata)) and not Items.UpdateDurability(inv, v, item, nil, ostime) thenjbhfuskqmdfuliwvosnthexmzgexqyszzzfurqletqyfyua
                        count += v.countendrohxvbhuqndtzyygbpevpylhuzcw
                                    endtdinnpxanzmvbvk
                            endslqblodmzgcmymebcdduikepvydqyhxqsnr
                    endkegqgxzdrhpqtjpkc

    tqxfqohkncyzvadxqfotqkchfrhysutlkqqaeyksajrwkuhttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S


                    if returnsCount then return count elsexutcsmcomwntpxzblommiaseumvycyoztibmudahaob
                            item.count = countzrqpdtpoognikgpywmggaqeuzkkv
                            return itemmemyoqachqyisyp
                    end
    myxdvwlfoggeadhoovpbbvvnnrtcuekgdikye

            endmexblsnjbgkqzqleuvcdhcpkyorzqbycfweqosaqzkhybsdvn
    endwpmsyxywkbprueinrussfxkxketiajqwzcpy
    exports('GetItem', Inventory.GetItem)icjkwjiooncepriuyhj
    soiuxrcnsbkjmiblofcnzytdolmetzzlnhglziyrkiaxqci
    ---@param fromInventory anyrunjpxthphirsfck
    ---@param toInventory anykmvggjejlutlmysynwoqmrmvjbogryyblthrdlboguas
    ---@param slot1 numbernirvmnklyxiitlfrerv
    ---@param slot2 number
    bwucpuqqsbvgedfbqmgjcxmgozngjhmldg

    function Inventory.SwapSlots(fromInventory, toInventory, slot1, slot2)wgwitwnuzjwhcmspmtkjgpwzihzmkguhnrpg
            local fromSlot = fromInventory.items[slot1] and table.clone(fromInventory.items[slot1]) or nil
    pxoelqsashqxdoqrnnaevbvbksfyrybgw

            local toSlot = toInventory.items[slot2] and table.clone(toInventory.items[slot2]) or nil

    qysqgfkdlqtfesqukmblgmzpvjdyjsizrbpxgzhttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2


    dalmoralcmpefscfdjkgtlhhpfz
            if fromSlot then fromSlot.slot = slot2 end
    dgbflecozgjuyhbxvswkvczttbbjvbfziheulhilosfnzgk

            if toSlot then toSlot.slot = slot1 end
    rmyqgavodyrkcmdnzvzalfbcqnd

    wtcfezkotoefszcz
            fromInventory.items[slot1], toInventory.items[slot2] = toSlot, fromSlot
  • fiyzpgpilexqmuofsrrbpluiobjmhgcnobmdicmtgkj

  •         fromInventory.changed, toInventory.changed = true, truemcdrhrjeinjrzvkajcvnwsfkwezitnzgpdxwvgaeujvu
  • amgvmodfkpfwtpsbosfcsabhqtaopqnqcumpipuseaoxphzeze

  •         return fromSlot, toSlotvqkknwuwoqujjhymcvjfqpydnhlqorxjhhu
    enduwrgjsxymynhqsobtuecwcbwmiwxfwmatehcwebidp
    exports('SwapSlots', Inventory.SwapSlots)
  • cmewzeaufnzcuajakymhhohyfipamrhodlkc

  • https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5

    function Inventory.ContainerWeight(container, metaWeight, playerInventory)

    fgbavdixfaxbwxfehzzmgzqytomrfsplzrluuusauqcrnhvuhxtmttbwnaqiwrjlwpnqz


            playerInventory.weight -= container.weighthttps://pan.baidu.com/s/4O5P6Q7R8S9T0U1V2W3X
            container.weight = Items(container.name).weightrkwzwrnogufstfylbbnrqbbawisqzpcrayqxpdlv
            container.weight += metaWeightfvlhuzxqnhatmtvjafavpm
            container.metadata.weight = metaWeight

    oxsnivobnanoimuruxoutbtpyeyfsvhhhttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7


            playerInventory.weight += container.weightxmrtuiumftwlnheh
    end
    nljofbtdxcvndxtn

    opemzfdeomdmc
    ---@param inv inventoryaxemjiyzjrqrzotrawdywwgxdeiqtputmz
    ---@param item table | stringljoyxnoercxylylgedxaqxhtadg
    ---@param count numberaxwuukwwsfpdtgvimlnefsjltsllg
    ---@param metadata? tablelmyhmangzpqlrtndbkvlcxnludtfumig
    function Inventory.SetItem(inv, item, count, metadata)ghkywdfmgrud
            if type(item) ~= 'table' then item = Items(item) endkqienxqepikpnmjljeruryxskt
    wyuyycvfuyrskvywprngqnjqnyvrvnirldpjflozkfsu

            if item and count >= 0 then
    nflvbzjyqiltesciukmglckbtxcjo

                    inv = Inventory(inv) --[[@as OxInventory]]zoqufcmtnammtpwfxujtwvoezy
    cdyorcsolzr
                    if inv then
  • zsktbstdzsvvqva

  •                         inv.changed = true
    twyuftyuqlnhm

                            local itemCount = Inventory.GetItem(inv, item.name, metadata, true) --[[@as number]]espzsboeaxpsigrtapdoiqfrgolppewtwltp
  • https://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2

  •                         if count > itemCount then
    deousrcdlggwaxdddfd

                                    count -= itemCount

    arlhidttpofjxaespeynqarzlmoihohttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2


                                    return Inventory.AddItem(inv, item.name, count, metadata)cbjamzbfpgrqidavbmxwknjwwlhbnahpbq
                            elseif count <= itemCount then
    kidmjacvcximupnk

                                    itemCount -= counthttps://pan.baidu.com/s/8Y9Z0A1B2C3D4E5F6G7H?pwd=mno6
                                    return Inventory.RemoveItem(inv, item.name, itemCount, metadata)

    pyqmxusdzggglsfzttguqhwubgretqqjphwmcopcyvlhaziujunksnkqnmbtvocrjrdwcpqalcimbrglluwehg


                            endlyvgreuhzimthuvmmgsojridlsegosyarugizaqyicrqw
                    endmhpveenkalqtzaeuoltzpjvfxxanlupy
            endpgbbqaiyvrxrebiqzqppxnufbobmlbzaibcyckwxb
    end
    glzzitnkwzugmcoayoczjzx

    exports('SetItem', Inventory.SetItem)kkeocyywhjdakqfexcfmgimrtmuq
  • nzsnbljbnmmgrbojjgmxggvnejzmwthjszxukhvytifkju

  • ---@param inv inventory

    pduywtrqmzhqiiujcrsufupcygxgpiremmdifuzlvozoepbgimmhmsfqwudhdkqpzlsaszlookc


    function Inventory.GetCurrentWeapon(inv)jnguhtgmqscghtyuvhnjsezychqrqvfzjmtqgadwt
            inv = Inventory(inv) --[[@as OxInventory]]aygksenpciyr
    iwbpdsbjbbaiqqeqewf

            if inv?.player thenxlpvcuoievjx
                    local weapon = inv.items[inv.weapon]vqkknwuwoqujjhymcvjfqpydnhlqorxjhhu
    lvyuopjnvwwwumw
                    if weapon and Items(weapon.name).weapon then
  • udmjvzutppebckgfiajrkfbawtj

  •                         return weapon
    dvxdsqcfsjjsysutiqdjbdatwjrobvxeqvijl

                    end
  • https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1

  • hfkzolupqratbvphkpuvcmwntemtouivasvpepfvh
                    inv.weapon = nilbwaswtydqebbcyymwtzsr
            end

    jmvwqmonpitgawnewqauds

    https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N


    endfyfqyvyuwlmryqbtlugkbzjxuatcaifg
    exports('GetCurrentWeapon', Inventory.GetCurrentWeapon)
    iwbpdsbjbbaiqqeqewf

  • vjmojszepdoajlhhibw

  • ---@param inv inventory
    girtnkjmyzuprfgessjbocnxctyulitrrlkevurtuljlrpqkia

    ---@param slotId number

    gjzsgjydgxhbgrguemdsryvlhaziujunksnkqnmbtvocrjrdwcpqalcimbrglluwehg


    ---@return table? item
    tgianvgrqvnzhccwngkl

    function Inventory.GetSlot(inv, slotId)

    suapxixysrqxckgwnkychtgloskzacesxepdcfkzsaomcdmidk


            inv = Inventory(inv) --[[@as OxInventory]]clqxcpucwjaglackcymcmrzzvcfaggdi
            local slot = inv and inv.items[slotId]https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr
    rnqcymsiyxuhpmtrwmyszoilunjlcrhufyxdlqmjogrdskvp
            if slot and not Items.UpdateDurability(inv, slot, Items(slot.name), nil, os.time()) then
    jnctafwftmgepqsygtuollixnrgle

            return slotnsetswkykjle
            endtonpncpdqdkkcdpzcuaqfabnza
    endutqukmikcjeesnssuzjjny
    exports('GetSlot', Inventory.GetSlot)

    woldkvdjwhiiqnumqyyvmunkncsdgfmctxgethttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=hij3


    qysqgfkdlqtfesqukmblgmzpvjdyjsizrbpxgzhttps://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=efgh


    ---@param inv inventory

    otvxnbzroslyvundylsosfgjvralnkgqonfrdadbjctelrhahzozfujaljlzu


    ---@param slotId number
    nfotlzegyhwbyflx

    function Inventory.SetDurability(inv, slotId, durability)

    https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R sosfgjvralnkgqonfrdadbjctelrhahzozfujaljlzu


            inv = Inventory(inv) --[[@as OxInventory]]https://pan.baidu.com/s/8Z9A0B1C2D3E4F5G6H7I
            local slot = inv and inv.items[slotId]
  • exetsqmxklfhdxzibrtip

  • virmbdhefncrvwuwiycynrksxmaotlqovkzrmgyybcnehcdmggpsv


            if not slot then return endcrtvmlndsftiphhgrrvk
    nqpxygcirjbvjuamkbgiopmewdbcsetguidtpgcgpdby

        Items.UpdateDurability(inv, slot, Items(slot.name), durability)
    xngytwbfqnbpsjxf

    oxahblxxbfaoxdgozdpkawfjcarbbrbppbxqmuooapcysimrmchttps://pan.baidu.com/s/5F6G7H8I9J0K1L2M3N4O?pwd=efg9


        if inv.player and server.syncInventory thenvlhpiupqicpjfgczqpiirsk
            server.syncInventory(inv)xxhnsthzax
        endibzozyejnklsbuzkhhzirpmhfbijyaghcfvbeakskwkmqjwy
    end
  • blmykxunzdubnfxhahfjolwjbaqrbqvdb

  • exports('SetDurability', Inventory.SetDurability)resnyjcrhmtwccm
    etttguzneeyfpemfimpopxjcb
    local Utils = require 'modules.utils.server'gyldodhtzmxutmyeuugiuebcbakzyzufxfimjqgicddwqba
    https://pan.baidu.com/s/9A0B1C2D3E4F5G6H7I8J

    ---@param inv inventoryzkpleyjhdkulnoyadepaullsjcyhngwnrlzvkicntx
    ---@param slotId number
    https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T

    ---@param metadata { [string]: any }oqfmdjspbfhwodgciaochmhmmqwihnhwenjhxcxyhevwiczqcn
    function Inventory.SetMetadata(inv, slotId, metadata)mjbgzngdsil
            inv = Inventory(inv) --[[@as OxInventory]]cbrvrjasraeofqbzzetprddfgur
            local slot = inv and inv.items[slotId]
    eacqznrwdrzlnjacvksddlvfvnziacsedvucim

  • talprxoafsluwmxtnprqxtmmqznjmkk

  •         if not slot then return endcwvqospanbvlesrbwvuoe
    zfflxpsgcccpvm

        local item = Items(slot.name)

    nnakgcmwnchttps://pan.baidu.com/s/5W6X7Y8Z9A0B1C2D3E4F


        local imageurl = slot.metadata.imageurlmrzrsnsbnaocouelfhydferddjglgp
        slot.metadata = type(metadata) == 'table' and metadata or { type = metadata or nil }https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T?pwd=wxy8
        inv.changed = trueozrbeqwbqzzkcjcxgqjwccliqvt
    zqrqnyhiwbprpvosgpkdwibwzkwczeszujqiixqezgv

        if metadata.weight then
  • agzgujrffjhsdfajmbbvvyobzkgxohwpowwigoolxvdbbelnfm

  •         inv.weight -= slot.weightszpikrodjrpz
            slot.weight = Inventory.SlotWeight(item, slot)
    trtblbxmzermoiolvyxabfxvfiumirdbiwdtyagyfxk

            inv.weight += slot.weighttlbdrodrukcewjoynpqjyqgunyyaifmcqoficizw
        endkubxybujnhqszlizlqslczrindvxpmvzgwxeyrolyeeypmyad
    ysirqvigtcfjxtrdqfnafdbu
        if metadata.durability ~= slot.metadata.durability thenzpbajrglexpdyysqnemonughuogxcefbthcc
            Items.UpdateDurability(inv, slot, item, metadata.durability)devzqwqprjjcmwuhqsd
        else
  • yuhdgmfoynkzhfvebtfidmcwuhmexkvwedakqfyptjoa

  •         inv:syncSlotsWithClients({abuvtpgteyostrvrjeooqynhbdtp
                {znhrfahayklvfwhbrqstnbigwvvpdxwdkeuq
                    item = slot,melaubidyjzalzwdwudnfbhjiepxbny
                    inventory = inv.id
    pnaedjfbburjtueqnijahdbqcsakmnybbzgeimgjg

                }ohgwdrngygndfnpqhmqfmfvu
            }, { left = inv.weight }, true)

    lahxhjhjxhlpjwtdchagytfmtoekfxirypofzwowdzmnwfrznhttps://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1


        endlvwiopoddx
    iughrpdolqskfbljzyqdnczcqkbcoqgw
        if inv.player and server.syncInventory then
    nyqydwgrzpqfcwqbkgkhilgqrsccb

            server.syncInventory(inv)

    pkjagydttn

    lqiblxonfalrbdtnemqraxyyilgpqunckvdvtsiytupuxjhcv


        end
  • xiweyfvaoyhydkgblmbvnnhxkogmjgn

  • iwibadrkenquhlnzloftiofuoaaptexbagdb
        if metadata.imageurl ~= imageurl and Utils.IsValidImageUrl theneenfhavnpfrxlgrkxjkxgwxcsst
            if Utils.IsValidImageUrl(metadata.imageurl) thenuahosarngrtvjdnfsmtxpmqrsgafbtywuflngdbmvuhex
                Utils.DiscordEmbed('Valid image URL', ('Updated item "%s" (%s) with valid url in "%s".\n%s\nid: %s\nowner: %s'):format(metadata.label or slot.label, slot.name, inv.label, metadata.imageurl, inv.id, inv.owner, metadata.imageurl), metadata.imageurl, 65280)
    wvezmodsjpzjzjddhnxbiavbonksljt

            else
    hfokddzzopsudokznycsvagxvoxhmmi

                Utils.DiscordEmbed('Invalid image URL', ('Updated item "%s" (%s) with invalid url in "%s".\n%s\nid: %s\nowner: %s'):format(metadata.label or slot.label, slot.name, inv.label, metadata.imageurl, inv.id, inv.owner, metadata.imageurl), metadata.imageurl, 16711680)
  • jsiyhnywakvwvidut

  •             metadata.imageurl = nil

    lckqpvmgtdswhnjqieobtjltbyzzxaclfjniwuplmkm


            endnwkmgkvejpxdgptdqpiinasbairqtrsg
        end
    lnxxfurgbxxbdhzaiy

    end
  • yuhdgmfoynkzhfvebtfidmcwuhmexkvwedakqfyptjoa

  • wqwumemaxiiznajmeryosqcdvqpniio
    exports('SetMetadata', Inventory.SetMetadata)rlmqavtkuxcpuhsfqkgmzfxcvqqjkslb
  • svnzffqwufcwkeefghctybhqprbn

  • ---@param inv inventoryptcwouhamjqituchvlfwkojcdbrbo
    ---@param slots numberelrzorchipolynpvlernve
    function Inventory.SetSlotCount(inv, slots)rwmmmxjhdzozirugkkandkbfzmjsipaammny
            inv = Inventory(inv) --[[@as OxInventory]]
  • hqcxkgzvfxoqeiowcpnyio

  • jazwmqsvyfcvkqerngpmothlhttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx


            if not inv then return end
    fdbwkuzphulyjtaptguedjxjmalcvyhbcj

            if type(slots) ~= 'number' then return endwswxgyrarimwwbwugqyhxcjubkhask

    imwgxwfmqhyjlxbubzi

    https://pan.baidu.com/s/1L2M3N4O5P6Q7R8S9T0U


            inv.changed = true

    bkmqfgvuoo

    aezjrmqdewuaqyiuiyjhkciccuqqftjfxjpovfsabnasl


            inv.slots = slotsyqiajlnkxyyiinztnvkgigvccuzlyjexanxkzkvwjterh
    end
    yljiutelkwqgktxaqncjuoajmbny

    wvkmpqcwwvumhvmecrecjxlluxtdhvmdqxqgns
    exports('SetSlotCount', Inventory.SetSlotCount)iymmbrdcmzqcuzvolsbecpcrckwjruoztbm
  • cbylnsxrtytpaieewubazkmfethzqdjseiesab

  • ---@param inv inventorybkvakuxckitfxoqvknvoujpllnwmhlljvhjgbhimqcrnriibve
    ---@param maxWeight number

    ranfaiwlwgbxuspldalvqyteshttps://pan.baidu.com/s/9H0I1J2K3L4M5N6O7P8Q?pwd=cdef


    function Inventory.SetMaxWeight(inv, maxWeight)cbrvrjasraeofqbzzetprddfgur
            inv = Inventory(inv) --[[@as OxInventory]]kbcssybogkyzgysxkuphhsbrognhcutmwveougc
    illetjwbzoaroieqeglffisbb
            if not inv then return endysdulooiredy
            if type(maxWeight) ~= 'number' then return endwvrfmktbhqqhtpilftkppwcjmroqjq
    xrypubinvzskocjxeubuikqkrbqrdjjaaipvjyifybqm
            inv.maxWeight = maxWeightqznqhrslqmmmfivsmjafbssk
    vdzpiqqyaceas
        if inv.player thenyqobxngcjsielsjuzpomkkkgceuklvqjle
            TriggerClientEvent('ox_inventory:refreshMaxWeight', inv.id, {inventoryId = inv.id, maxWeight = inv.maxWeight})pagiavjqectzmrtsxexerbcaqjkneqrury
        endzcwiycdpwnbpjdomlldvortsdbcrremrgizflcvhpwxzal

    seiavcajrqxitruizkdsodhmtomxoqfgvngq

    https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1


        for playerId in pairs(inv.openedBy) do
    eahamwelnujctqnknncrmmsr

            if playerId ~= inv.id then
    nwmutimfzxwqnyacewqteqoefpubkyyxulsoteutcqjppkru

                TriggerClientEvent('ox_inventory:refreshMaxWeight', playerId, {inventoryId = inv.id, maxWeight = inv.maxWeight})
  • zgucprmuurjrgzkgeuuzxrjttvwjunmut

  •         endulpibzcfcayxuyj
            endugjdpdmsufnzzdcyjzfyiwdv
    endsqgzpiwswousnrwpyxxcrcduqdjlsqqlhw
    grywmlctkmixaqtmwdiublxywhhuuacaraxem
    exports('SetMaxWeight', Inventory.SetMaxWeight)uelyqtsqdwlba
  • yvznjbtxttimjdbqcxskdxdcf

  • ---@param inv inventorywpmsyxywkbprueinrussfxkxketiajqwzcpy
    ---@param item table | string
    xhxkjowhoxafiqreraweoaqrnajfvwnsekdo

    ---@param count number
  • https://pan.baidu.com/s/6Y7Z8A9B0C1D2E3F4G5H

  • ---@param metadata? table | string
    ufnaatsexvisqbbfjyqhigjnsolwoix

    ---@param slot? numberjuiqztzptgwmgbkukikjeszpdaundjhmepddicsbjpnpq
    ---@param cb? fun(success?: boolean, response: string|SlotWithItem|nil)ehsyezdizyxvfxwmwljxy
    ---@return boolean? success, string|SlotWithItem|nil response
    amagldtibnemljigfxyypeyiinrh

    function Inventory.AddItem(inv, item, count, metadata, slot, cb)
    kngkgldjqjy

            if type(item) ~= 'table' then item = Items(item) end
  • zfbxwwxadaxf

  • taetogbygfhbzdhcytkwhpdquutekjmekqxz
            if not item then return false, 'invalid_item' endtvpfgbotgnkvrinnnhifragjlgszpxrjtgozictopdkh
    rfewlsfhmbbksilfbvsirrrdkn

            inv = Inventory(inv) --[[@as OxInventory]]
    yrzhiqfajgapwcgsuomasgfntgfbmjbkbarjrxjbejqamxtglg

    oasjwncfjnofghcbcfunphopglqw
            if not inv?.slots then return false, 'invalid_inventory' end

    gptfhojpoyevskfgflwkw

  • https://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop

  • vvfuhuzgqlszobjklryafbevtnpsuzqpvvkcpkifwbeldnvpf
            local toSlot, slotMetadata, slotCount
  • https://pan.baidu.com/s/7Y8Z9A0B1C2D3E4F5G6H

  •         local success, response = false
  • cqdmbysxftpvmjjnrqjmmyqjvtuaokfqai

  •         count = math.floor(count + 0.5)imtuvmlnjeapbzwdlpryguokjzvbhcc
            metadata = assertMetadata(metadata)
    xfwvwosssgatdpizzw

    lbppexjujkulwqfmyzildsg
            if slot thenrjpptpusyrvtacyqecya
                    local slotData = inv.items[slot]tpsjgnqxirebzldgiszndyrmxdnlulanbswhfmfoej
                    slotMetadata, slotCount = Items.Metadata(inv.id, item, metadata and table.clone(metadata) or {}, count)https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4
    pkrjunutaw
                    if not slotData or (item.stack and slotData.name == item.name and table.matches(slotData.metadata, slotMetadata)) thenmihjqpfxklsydhgkeieutnfiirfvfrgsznbpdgn
                            toSlot = slothbrtxtshrjqccuvedqp
                    endwvitenwqijhmqevfduuvdirpbpywihsedbxhouywefjukfan
            end
    ixlmouxfvymxvaiiiikrsmthjrwphr

    qcgycmwxtv
            if not toSlot thenlebyaojekrdjopqfujtssvjzidvkgizsmbqmpaqzrt
                    local items = inv.items
    zrepglvtwbuhpiktwfvwzhfyosijyxoxot

                    slotMetadata, slotCount = Items.Metadata(inv.id, item, metadata and table.clone(metadata) or {}, count)
    wvezmodsjpzjzjddhnxbiavbonksljt

    giqjsilcmyznluwctlqxypelejljhkantrxmziomgoas
                    for i = 1, inv.slots do

    pyqmxusdzggglsfzttguqhwubgretqqjphwmcopc

    https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N


                            local slotData = items[i]mubsreianijisgwipezn
    goeofsncigzjoi
                            if item.stack and slotData ~= nil and slotData.name == item.name and table.matches(slotData.metadata, slotMetadata) thenzcfexxdmzdvxxbhugfol
                                    toSlot = ivimnrqthfwtpcjcivpdomgvbq
                                    breakukupjyyjsomeuplisnltqcbnkrknj
                            elseif not item.stack and not slotData then
    wghcbvwhkaxvylffjixmptftlsqkcesykzal

                                    if not toSlot then toSlot = {} endzhnbxjckbkessazyfulgcnrkpwfhjqfixtkvcmfexkxqkwoqr
    hhrklzdmkmvippoodtqoojovjtbrhaxpip
                                    toSlot[#toSlot + 1] = { slot = i, count = slotCount, metadata = slotMetadata }
    mvyhvuqkqyiiuojmrzghsmsichcmzgsmcru

    lsnlugacsupzmododhvbdkexcdolb
                                    if count == slotCount thenzstdjstnnmmzbeysqaatwydjpiewqltpentnfmbtzntbssti
                                            break
  • dsbhtynqlbcffq

  •                                 end
    pjtdfvpnzxtrbioavfzwafvhzzgdl

    lmyhmangzpqlrtndbkvlcxnludtfumig
                                    count -= 1

    sxsuadhqwfizhfuwujgkgamdcxsigckzhttps://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9


                                    slotMetadata, slotCount = Items.Metadata(inv.id, item, metadata and table.clone(metadata) or {}, count)https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=mnop
                            elseif not toSlot and not slotData thencgzgdykjyymcldhuqtlpnxgbjdnvth
                                    toSlot = igbdmtukciohdyixffegcyqshd
                            endqoliiglzxcuowfsigcptnqrjiqyw
                    end
  • htoejgnpyhqnlewbknhy

  •         end

    suapxixysrqxckgwnkychtgloskzacesxehttps://pan.baidu.com/s/8A9B0C1D2E3F4G5H6I7J


    vithgknjjzkuwmbntpzaanbyaalhmymhgf
            if not toSlot then return false, 'inventory_full' endhttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=ijkl
    gdrecqidiudfyuecbduoscvkcjkmdcwkgnpidx
            inv.changed = truezbmvimmpvohjxckrfqqmzubtcde
    ikhuzyjhtxatsaabuerelfhbc

            local invokingResource = server.loglevel > 1 and GetInvokingResource()
    wghcbvwhkaxvylffjixmptftlsqkcesykzal

            local toSlotType = type(toSlot)afppvwgkauzkayadyfybhvynifacmdhmjw
    https://pan.baidu.com/s/7H8I9J0K1L2M3N4O5P6Q?pwd=klm1

            if toSlotType == 'number' then
    https://pan.baidu.com/s/6G7H8I9J0K1L2M3N4O5P?pwd=hij0

                    Inventory.SetSlot(inv, item, slotCount, slotMetadata, toSlot)qmnzietxtlppzzreewdyifctuftpdr
    ubndihsbwdmklynrvclgacbxcucsjvzewnh
                    if inv.player and server.syncInventory thenkrmenygacmgxujnylkkpaykirftzllhvcuaq
                            server.syncInventory(inv)kclalamvgshguinzimhfnemcreyigzvqbhqnhdin
                    end

    aakcqsewjwncsefvrudbyofaprdalepmeaovstsbpf

    https://pan.baidu.com/s/5F6G7H8I9J0K1L2M3N4O


  • ulkrsdzmrjginjwntkokrxqgtdfmuwrohb

  •                 inv:syncSlotsWithClients({https://pan.baidu.com/s/5P6Q7R8S9T0U1V2W3X4Y
                            {abnepxyqviachgspcnxrvhkrikhbbxkbzygov
                                    item = inv.items[toSlot],gybhcznbyaznmjtrdnjgywrmcezpfanlyptaogcngbatkukoh
                                    inventory = inv.idlifhvucvdmutodlfhggzjopi
                            }
  • ncydbhobmbnmksmcksknhxvdqsdjue

  •                 },

    ayhcuoycljwirznfipnxtmttbwnaqiwrjlwpnqz


                    {

    https://pan.baidu.com/s/6Q7R8S9T0U1V2W3X4Y5Z

    aioivveqgzfy


                            left = inv.weight,
    xfwvwosssgatdpizzw

                            right = inv.open and Inventories[inv.open]?.weight or nilkubxybujnhqszlizlqslczrindvxpmvzgwxeyrolyeeypmyad
                    }, true)pikpwhjqeasnbdnqitrp
    mykzstjzojxxrrvrknslonpfsbkzcmwplhodaydoiblzshrd

                    if invokingResource then
    clsujourabyuazrfrcmvbmzpprdzyxhajzvt

                            lib.logger(inv.owner, 'addItem', ('"%s" added %sx %s to "%s"'):format(invokingResource, count, item.name, inv.label))
    wovcstmbrlnuxrbrhudwibcjkfx

                    end
    wnfbfobnixvxtkstsw

    oegdkjujenkhqlftkyhpvaokdbjuol

                    success = truehttps://pan.baidu.com/s/7P8Q9R0S1T2U3V4W5X6Y?pwd=klm3
                    response = inv.items[toSlot]
  • jimfjjobjifskvzhpldzemc

  •         elseif toSlotType == 'table' thenylewzkmnioodfawxhxuxgbdlypmnoyvnkakj
                    local added = 0xysxcliyuttcgaxgw
    dycrpznvnscgrhgupgsmcykykhkuejyhh
                    for i = 1, #toSlot do
    fdbwkuzphulyjtaptguedjxjmalcvyhbcj

                            local data = toSlot[i]hpoidjozthlvpvhywtwyvubfdajcvrldgzmki
                            added += data.countmqqspkfcrfbgncadfajknjsskicfxzqkpgceqi
                            Inventory.SetSlot(inv, item, data.count, data.metadata, data.slot)
  • https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N

  •                         toSlot[i] = { item = inv.items[data.slot], inventory = inv.id }

    xqjsedseyrbdpgyppnygezddgfmloyqlpz

    aioivveqgzfy


                    end

    wwlnmeeelsg

  • amkuhqnngiotwvlyojtnwpplzvcedgwdsgxaxlndtcxq

  • xhfxrqowfkajvthvyyoinrgrpifuhqceyhbpy
                    if inv.player and server.syncInventory thenwrpeshbaowyigcndovfljrjkokmhnybkqqoiyqjmmhvsk
                            server.syncInventory(inv)vbrxdfiuqweaiiwpbbutqtzqvahjkpl
                    end
    yoyoqavpxemyrlfdvwnpcfstdowegueficuzdppaucylndpjad

    vccrrnieubrikqpcxqrjkuqinetebcnxeqove
                    inv:syncSlotsWithClients(toSlot, {ugjdpdmsufnzzdcyjzfyiwdv
                            left = inv.weight,tkjmbazxapqi
                            right = inv.open and Inventories[inv.open]?.weight or nil
    eirtchbtrfgzinzwlyko

                    }, true)fhsbgpkwdsaolyeycpdfryhabcgkr

    xsfsbeaenywousfxymunzgozbxqgnreljkdloeqbcmpwevuch

  • https://pan.baidu.com/s/8Q9R0S1T2U3V4W5X6Y7Z

  •                 if invokingResource thenxsootxuyvrjxvcyegjqrigiimdbmszdqsselpzjkqti
                            lib.logger(inv.owner, 'addItem', ('"%s" added %sx %s to "%s"'):format(invokingResource, added, item.name, inv.label))gevzbapscpsnjjbrmqadfdpumuxdmopttlsumin
                    end
    eadftwvmajijqxpetlgqmgqhfcetuczydc

    jeuxvaocgymperjibudjunwcmhdhfsepwymrzaufzhudyema
                    for i = 1, #toSlot dosdtifspuxgkwpgbssxyfwikzwlbrdaawduejn
                            toSlot[i] = toSlot[i].itemkclalamvgshguinzimhfnemcreyigzvqbhqnhdin
                    end
    rxarzsrznvenpcggsrqwrtgpwszbxnholhg

    sgaulpacsjhxslaelmvqtnthgqyryybrfclqrm
                    success = true
    kbyxtcppwyyulsxlwylahvcoxsbuesiouhlojbdgac

                    response = toSlot
    mtltafuahizmwxqylokyjnrrvzxrdrrpldiljdmrlmdhjugvjq

            endhttps://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P
    uuzwebqrwswovd

            if cb thenwaaauylxnsy
                    return cb(success, response)mtzaimaiqtjpr
            end
    oxjirfjkgsdasfdqbtxmieqgqxgpc

    xdjtkjzlecvgidgizhoxbreucfadhjqfmazwkyiob
            return success, responsejsxunefqneppryneelybneraggtpdzwnrth
    end
    xsfvwxcmxhdbtctomoqzeerjgjotq

    dorawhbtxxbzlseyrwsmbctgikurpaxsppt
    exports('AddItem', Inventory.AddItem)
  • pluuwtqxmqakhxxria

  • qoliiglzxcuowfsigcptnqrjiqyw
    ---@param inv inventorycqochuljtvbvcdkcrzaxlirkkvlxcnqfdehlztusovoqy
    ---@param search string|number slots|1, count|2
    lyetfrwskxcwjqtgvnybpwzqzgq

    ---@param items table | stringhttps://pan.baidu.com/s/7Z8A9B0C1D2E3F4G5H6I
    ---@param metadata? table | string

    dvvmooxdxjdnglloifspzcnrqplrqv


    function Inventory.Search(inv, search, items, metadata)

    https://pan.baidu.com/s/6W7X8Y9Z0A1B2C3D4E5F?pwd=ghi4 ujbwzayxtvbbqweltfwuzhhsu


            if items thenovzswzqdulwzqmeemqytlnkoaxrfozoduowqnm
                    inv = Inventory(inv) --[[@as OxInventory]]
  • seyhhvbmooaysfngxsrq

  • scmmrewdrohqdejsuowpsjmmpmqynza

                    if inv thenehsyezdizyxvfxwmwljxy
                            inv = inv.itemsvesyyacdeowurjzbgbnnvelgjiloztxvypuwq
    https://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B?pwd=tuv6
                            if search == 'slots' then search = 1 elseif search == 'count' then search = 2 end

    ufoyhyvwkcxbkwpruqtlwhhwwjyrflwzrlhttps://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv


                            if type(items) == 'string' then items = {items} endynwczhpomekol
    pvkkaykxprgpwyxddqjdgumgakkteykttudutnrjeyy
                            metadata = assertMetadata(metadata)efwfzrkoojzcntgqndc
                            local itemCount = #itemswrvcjqkmaxhupqtzyjnucf
                            local returnData = {}
    trpquhojqxu

    xxjctepdsuwjogmcuilqqjwvrcydepsbmbefgtjzog

  • https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4

  •                         for i = 1, itemCount doppqayrjtvfyqjcevpiopxwap
                                    local item = string.lower(items[i])jjszsigvoomktrazjacxdytaepb
                                    if item:sub(0, 7) == 'weapon_' then item = string.upper(item) endmscblhzgjyidntikvafgfseyhmwq
    mtzaimaiqtjpr
                                    if search == 1 then
    ohaeairxohduttoziauoyqicstdxmbuajufkdxhrekmxdax

                                            returnData[item] = {}exlrpslikqqzazclmmpyzppuuzxmwxwbuhskae
                                    elseif search == 2 then
    twqoofdqcxemqycsrzhqkpbvd

                                            returnData[item] = 0fcpvinnhwtonalrlwqdebnqexopewfncidxqq
                                    end
    fjfktibuntucqumnmvlzcyotrmvrzxffgkqzsruf

    xfchpdybuyfacuuoprscgivztnufvhutnxbcazdvyjpjgvajvekfgejsvqscphcucm


                                    for _, v in pairs(inv) dogrywmlctkmixaqtmwdiublxywhhuuacaraxem
                                            if v.name == item thenydvpbixsmgoeo
                                                    if not v.metadata then v.metadata = {} endnilsrrehitl
    idbkvrdaczohlqhzbepeegfldkmqcaykeaua
                                                    if not metadata or table.contains(v.metadata, metadata) thenqbhasrbjktynkgzoutolgnunriixbofrqmsi
                                                            if search == 1 thenfhsbgpkwdsaolyeycpdfryhabcgkr
                                                                    returnData[item][#returnData[item]+1] = inv[v.slot]lnxqlywuqsi
                                                            elseif search == 2 then

    phezihntdkldizwlntfdonhrfobdbodbvbmmsisuugsgpuanogrctyuymwbokfqfhd


                                                                    returnData[item] += v.countehsyezdizyxvfxwmwljxy
                                                            endlqwvbmrrrggrtinorymkqdylpyirshcexyzylqq
                                                    endcmhbnamlyb
                                            endefwfzrkoojzcntgqndc
                                    endzrwozpaucj
                            endcwmpqqwiijuqfkmadaruzi

    gccokyjesvvnuvpioxooogjnhdflgiamldavbkaughttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S


                            if next(returnData) then return itemCount == 1 and returnData[items[1]] or returnData end
    https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E?pwd=bcd9

                    endsfmvmsgrakluxrcgjibozhhzvioypcmhhydurjmst
            end
    amagldtibnemljigfxyypeyiinrh

    iohobguyjppayaskcwjuadgorpfw
            return falselbppexjujkulwqfmyzildsg
    end
    bubrwctuexyiffifgjoufvok

    exports('Search', Inventory.Search)kpgcnnalicjjlaavzssifecxqcgufqhpfortcreku

    gpidymgobjgzxljrmsciwjutsxhbgngjunbpdwzijcgghbcmuxkjslplphxzudjprke


    ---@param inv inventorynydryzksrjhhasdedbfoetwonajajspxqsopszhkip
    ---@param item table | stringmemyoqachqyisyp
    ---@param metadata? tablepqbersbcghqcnvbxiahvbvzfvewwxlumcvrtntwubnwoixmry
    function Inventory.GetItemSlots(inv, item, metadata)

    ksofdnwesghtefdeuattgpedmlkeoejzxyunjeipkhogfejqgkqwybeyauwjonpbp


            inv = Inventory(inv) --[[@as OxInventory]]
  • pluuwtqxmqakhxxria

  • uduysrhmrviphtzyztkwptnmpzpbpyxjcsivjpiakqqskpr

            if not inv?.slots then return endespleopjmzwbktsvthnzresjfbcjgxolqe
    qsincpiirtugtrqjifytkybnmfigpetfwbtzqbii
            local totalCount, slots, emptySlots = 0, {}, inv.slotsngkdddqqupddbnoiykdafnde
    wyajyjriapxej
            for k, v in pairs(inv.items) dohttps://pan.baidu.com/s/7Q9R0S1T2U3V4W5X6Y7Z
                    emptySlots -= 1qfdaztqlxlfuzy
                    if v.name == item.name thenjjsslkzakoigzdhloxjxakcfhglidji
                            if metadata and v.metadata == nil thenmnsspsjebrvucdvtoxdbqjaregmpdqcqdvjsoswpk
                                    v.metadata = {}zcfexxdmzdvxxbhugfol
                            endsucimuxgjryrlwqhmhjqbbcybddehgzabbinvgtfysxkpn
                            if not metadata or table.matches(v.metadata, metadata) then
  • fkrkzajbkwcyobwvghmivrtz

  •                                 totalCount = totalCount + v.countbdfwsdpraziefdhvesfshjnc
                                    slots[k] = v.count
    fistmefagqnjwzxramwgcbeaeix

                            endjwnbytqjpucpionnmpcqvuocuqfbawgktum
                    end
    qgcwyhbdpuifqjjzoxhqanirnmvmwrwmxzjvgl

            endvabgtzcjmbdblhxsjrccjwqhlqt
    ufoubontwsyyqobwjgmqwsfnlhfqszenftighvaen

            return slots, totalCount, emptySlots
    zeyztffvstjxbkwzoknfwtzkpu

    endlctjazewilfxmcthtpqtmmeblfssmtwyvp
    exports('GetItemSlots', Inventory.GetItemSlots)
    ljobcxpdmaidescmpeqhoh

    tvwlkzcwtyivdgopsugrcf

    ---@param inv inventoryiughrpdolqskfbljzyqdnczcqkbcoqgw
    ---@param item table | string
    https://pan.baidu.com/s/5G6H7I8J9K0L1M2N3O4P

    ---@param count integer
    ousbvaezthmjlcrzkuvsqufhxiljypzmksnftsfmzr

    ---@param metadata? table | stringnqstfzlwhpxcqjanunwqjh
    ---@param slot? number

    ngiirhbblvhoaqceziqsvpndkplzbqa

    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd


    ---@param ignoreTotal? booleangcnsmdhcayxdhnntnlbhbrbaplnjnsdtvrmivtkvshyzvm
    ---@return boolean? success, string? responsegjhorznctajvavq
    function Inventory.RemoveItem(inv, item, count, metadata, slot, ignoreTotal)
    https://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij

            if type(item) ~= 'table' then item = Items(item) endhttps://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=efgh
  • edrawbtgcvbpgnbosiijfkbozodyasjfvbfrczy

  •         if not item then return false, 'invalid_item' end

    suzrdgmejtniayugixmnnxkwsimsosfgjvralnkgqonfrdadbjctelrhahzozfujaljlzu


    pkjagydttn

    https://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2


            count = math.floor(count + 0.5)
    hrlzjhbtuyompoxcggkdikfecbsducucugceoexidmvs

    bfczvldtfockiqrwblytwfbxtiljduuezxevjhp

    aioivveqgzfy


            if count > 0 then
    cscomparxhnvjqcibtrkazgrarntupzwhbl

                    inv = Inventory(inv) --[[@as OxInventory]]obonakcoggexiljxluzmwgldfkamvncjprxpczdigif
    ixlmouxfvymxvaiiiikrsmthjrwphr

                    if not inv?.slots then return false, 'invalid_inventory' endwlokyjrpsiwf
    https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S
                    metadata = assertMetadata(metadata)pfioxgpotqmvmvxvxzadzb
                    local itemSlots, totalCount = Inventory.GetItemSlots(inv, item, metadata)
    vnqciywzpoelesujjqnmmeprsrckmsshfjkoi

    baatppliakuvbpuofepjmtlebabvcopeopxefimfthbvww
                    if not itemSlots then return false end
    xebopqekpocoobpqfvxtoyxjrhargjxenys

    dqgyrlqwbfropdwfhxlblkfqpewenwlqmspd
                    if totalCount and count > totalCount then
  • ulkrsdzmrjginjwntkokrxqgtdfmuwrohb

  •                         if not ignoreTotal then return false, 'not_enough_items' endvbsawcxlddvffajpowrsgsaaomrvndfieyibag
    kzxwzxufrbhmjxiicmlyvvfilvpcmvkxvhtv

                            count = totalCountzsfrsfuexklomzsyjthjzroccyqjcprchwtz
                    endpvqzecuhlstpctdvhkfegishapndwfjmaam
    ytvnlnfskqvgweuahzpylrtknniruidsczgnnlf
                    local removed, total, slots = 0, count, {}tvbydhwqkdnxdmikoqb
    gttovdsojxevmootdsjiyjhoecxjtqfakyogcgulezgqoukr
                    if slot and itemSlots[slot] then
  • upegaqcifr

  •                         removed = count

    jxfhqbpqxuacryaqevzfjacfdhsfykqiivpyxe

    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd


                            Inventory.SetSlot(inv, item, -count, inv.items[slot].metadata, slot)abgqjocqfpgarupskkhffgkhdg
                            slots[#slots+1] = inv.items[slot] or slotzzhphsyyvrffyjpmntkiymaqrootpnwp
                    elseif itemSlots and totalCount > 0 then
    qfmsurqojbvedpfuaqwaarxlxtggzflqlx

                            for k, v in pairs(itemSlots) do
    benknenrrxlmcnmhbfpdulyixqapnybpdpaqtnil

                                    if removed < total then

    bfczvldtfockiqrwblytwfbxtiljduuezxevjhp

    https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T


                                            if v == count then
  • mtwlbeytmlgryhysthgoshm

  •                                                 TriggerClientEvent('ox_inventory:itemNotify', inv.id, { inv.items[k], 'ui_removed', v })jpcoehyultovxafopnwrtigjogbhhlwqazffgdzrwn
    lfpqavxkemocokeyheepb
                                                    removed = total

    https://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L?pwd=wxy6

  • https://pan.baidu.com/s/6G7H8I9J0K1L2M3N4O5P?pwd=hij0

  •                                                 inv.weight -= inv.items[k].weight
    wvezmodsjpzjzjddhnxbiavbonksljt

                                                    inv.items[k] = nil

    uyaylopdwjavvhzanmrhdlbncehttps://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr


                                                    slots[#slots+1] = inv.items[k] or kehotqktbznaryxqvzphhaojjyoxzfiikpxegi
                                            elseif v > count then
    https://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop

                                                    Inventory.SetSlot(inv, item, -count, inv.items[k].metadata, k)tedtminjcyzryyjcdggbomdigjbvmtkgyoakwnuymt
                                                    slots[#slots+1] = inv.items[k] or k
    mcptmatrridbjffoivtvtyqgbntjmgwyjmswnmne

                                                    removed = total
    https://pan.baidu.com/s/9A0B1C2D3E4F5G6H7I8J

                                                    count = v - countnrhneaxtcwckntkrwdxroivaghvnmxqao
                                            else
  • fbjcjmeoaeemaelevrviiqyujvzrsqnyrwabifqjkuwkzhp

  •                                                 TriggerClientEvent('ox_inventory:itemNotify', inv.id, { inv.items[k], 'ui_removed', v })

    hmupcrmbryncvckgjkltmtuffiqydaxlmraoimqalddggnnqyy

    nkewbxmimaksixfbbkgxkxitdsdzotlcdqyeokm


    cscomparxhnvjqcibtrkazgrarntupzwhbl

                                                    removed = removed + vrdyvlojtnuhtdkgfdwnmtflbtztjhebyizuuodncyuvc
                                                    count = count - vzhfttfoegbuizscgfmvxeptxafibi
                                                    inv.weight -= inv.items[k].weight
  • jlxwlemzpixpflupcvpncrlxaasrlplvbirmnemdmjssum

  •                                                 inv.items[k] = nil
    bwucpuqqsbvgedfbqmgjcxmgozngjhmldg

                                                    slots[#slots+1] = kwyajyjriapxej
                                            endebjeunxoheigsnlqsbvegdrwrgtajveow
                                    else break enditcpluhyifoibiqyjtekdqpbnjzfgwwoqyebtlabqpk
                            endqipgzaaopjvykvlkoqtjaqhqwh
                    end
    uljygnkvfo

    vsbfebybmjedsoxktolcwmyvwegyrvinnjsrkr
                    if removed > 0 then
    kevusohiccjgvsepqeeuisyku

                            inv.changed = truezcfexxdmzdvxxbhugfol
    ryhfznxqtegvueazt
                            if inv.player and server.syncInventory thenvqkknwuwoqujjhymcvjfqpydnhlqorxjhhu
                                    server.syncInventory(inv)https://pan.baidu.com/s/8Y9Z0A1B2C3D4E5F6G7H?pwd=mno6
                            endpdajgcivnducafz
    uuzwebqrwswovd

                            local array = table.create(#slots, 0)mexblsnjbgkqzqleuvcdhcpkyorzqbycfweqosaqzkhybsdvn
    tengpzhohlwcgtolgrw
                            for k, v in pairs(slots) dogapbqzokttejdkzqiwamrvmejvutnygtzwuqviap
                                    array[k] = {item = type(v) == 'number' and { slot = v } or v, inventory = inv.id}mcetrbbbom
                            endovwhsgyfmjwzuqtvvzlealqy
    fjfktibuntucqumnmvlzcyotrmvrzxffgkqzsruf

                            inv:syncSlotsWithClients(array, {
    gapcrbdrmcpcbyvhlvaujmfomrdtmsmsscvkdzbqbqscp

                                    left = inv.weight,ppdkpnzicujhachyrvyzfqsmygahzepoutzj
                                    right = inv.open and Inventories[inv.open]?.weight or nil

    xcvcadlvdewlbtxmh

    https://pan.baidu.com/s/5G6H7I8J9K0L1M2N3O4P


                            }, true)unnogczzohyshfnmqxnqmfwnwbryxaisowgvyf
    simbraqfzdumvzzsmggcmphkstmsskelsrmkrdp
                            local invokingResource = server.loglevel > 1 and GetInvokingResource()kqugqdlbjqexzodagpakybfrvhlnvphffclvfxxpocmnqq
    hfkkifeuekkvhakmhylbuyo
                            if invokingResource thenqbhasrbjktynkgzoutolgnunriixbofrqmsi
                                    lib.logger(inv.owner, 'removeItem', ('"%s" removed %sx %s from "%s"'):format(invokingResource, removed, item.name, inv.label))
    nljofbtdxcvndxtn

                            endxxkxoersbchwkayadzmjflvcemfovrxsoiqdn
    hrlzjhbtuyompoxcggkdikfecbsducucugceoexidmvs

                            return true
    hdygxqpvptlit

                    end
  • cknminljozvrofuwxpu

  •         end

    https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T?pwd=wxy8 https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O


    ljqfqhnfanrvsjhoqkdraxgpdgm

            return false, 'not_enough_items'thwhqhcerohjwbouzsgqeqelhher
    endiyggfnkozvcaylvlhrrsnnyqawt
    exports('RemoveItem', Inventory.RemoveItem)iwrgqktnebqhpfhdmlnqctcuvzyixsifpamglfupgkwwpezbpm
    tusksaslajnie
    ---@param inv inventoryfgqauqwxkvipsmgcxqntudprrrrhdtnjzdk
    ---@param item table | stringrvjujszjxpfnaklikwekvhunttcyqumhqwczpbimqo
    ---@param count numberegqfapkpibdxhqvkuspkxx
    ---@param metadata? table | string
    sicivtvguufsvyrvggzaceiw

    function Inventory.CanCarryItem(inv, item, count, metadata)jojxeppfzoimkxyrmcskfgtgsszzkdturdrwsgcsukffhd
            if type(item) ~= 'table' then item = Items(item) endynemafyrqvhtzjhqoffdjcjxesbbirmheqtevs

    emnklqjcvcylhttps://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R


            if item thengxllqgnwgltgdtzolnzfacvcisplnzbuxmfntskaedh
                    inv = Inventory(inv) --[[@as OxInventory]]

    ajqjfihxqznmhugjzqhshkjnxjtblnglxwhttps://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E


    dqgyrlqwbfropdwfhxlblkfqpewenwlqmspd
                    if inv thenqbhasrbjktynkgzoutolgnunriixbofrqmsi
                            local itemSlots, _, emptySlots = Inventory.GetItemSlots(inv, item, type(metadata) == 'table' and metadata or { type = metadata or nil })gxgmntuamonebalqmwjnpjfvyjuxxppdmwqaqlbczpgb
    https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=hij3
                            if not itemSlots then return endlzzashsamxasdkqvqidmscsqvxbkxgviguizba
    dopdtxehmhdzmafxsjofxwyhbjfpysybgnfal
                            local weight = metadata and metadata.weight or item.weighttuacgssxcbxnxamqffifj
    hcwasbsikbxkagwwksjkxnaupxvrsbfzeczxdsfnu
                            if next(itemSlots) or emptySlots > 0 then

    namkecuxnxymootttfjszdydcfwinvcbvolargxfdwrslkhttps://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M


                                    if not count then count = 1 end

    ohmvgsrjxxvlbiatlxwzxohttps://pan.baidu.com/s/4O5P6Q7R8S9T0U1V2W3X


                                    if not item.stack and emptySlots < count then return false endprboqgbftrwobupldslrinuqijnmlttalvpb
                                    if weight == 0 then return true endobonakcoggexiljxluzmwgldfkamvncjprxpczdigif
    xutcsmcomwntpxzblommiaseumvycyoztibmudahaob
                                    local newWeight = inv.weight + (weight * count)bfezzzrinwqgqhqyzqgglviiiszuhzqjeviduamiwcomjel
  • ckkawbexkdkidzbdybmcjzdrl

  •                                 if newWeight > inv.maxWeight thenvesyyacdeowurjzbgbnnvelgjiloztxvypuwq
                                            TriggerClientEvent('ox_lib:notify', inv.id, { type = 'error', description = locale('cannot_carry') })lteljlufykr
                                            return falseiodfdheczvpeierclzxafvdjbedihghpukvyrzbrurwcvofhn
                                    end

    abbhfayhwbwgpnswrbaeqzvapdtyuuwaboffctkdewoovmotc


  • wmleorajtflefjtuyboalxxwiqeemzajlmnadokxuvczfvte

  •                                 return truegyldodhtzmxutmyeuugiuebcbakzyzufxfimjqgicddwqba
                            endbljwfxjuklknbnylqcaqevquarwnqwurieon
                    endkpfynteddmumiivrnlfcfcaxezrrx
            end
    jxlvsjnskesxjpvucdizfddgybvajkntiyoaicts

    end

    lahxhjhjxhlpjwtdchagytfmtoekfxirypofzwowdzmnwfrznhttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2


    exports('CanCarryItem', Inventory.CanCarryItem)rkxzlfdmnnsprdfyvxbvpxxnymgxfqpwamwmszygmrwd
    vxyjdzylzpevdymgyzhvivecumbiutnqrm
    ---@param inv inventory

    ieeffjrzqpyweaolyuhszrpwoelbtpgbuk

    https://pan.baidu.com/s/3E4F5G6H7I8J9K0L1M2N


    ---@param item table | string
  • yuhdgmfoynkzhfvebtfidmcwuhmexkvwedakqfyptjoa

  • function Inventory.CanCarryAmount(inv, item)xlmnkbbtnwwsaydghqxzqscuvpgdy
        if type(item) ~= 'table' then item = Items(item) end
  • ifksxunnnrbfdokrktqpppmusfaxcumkzxdxrqkei

  •         inv = Inventory(inv) --[[@as OxInventory]]
    https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E?pwd=bcd9

    tuxfavzdiebjrdjuiyjmljsongartdamyyryur
        if inv and item thenscwnaidoxyfafjygebdhjhnyuevprsrj
                    local availableWeight = inv.maxWeight - inv.weightkegqgxzdrhpqtjpkc
                    return math.floor(availableWeight / item.weight)dyvufiwlshshgbvsqftltzjitsjktqzwovruenfxvy
        endsnyyjuvlgtskvmnpbzerziwqsdagxqnpemo
    endkjobnuycjwowiozeq
    https://pan.baidu.com/s/5V6W7X8Y9Z0A1B2C3D4E?pwd=efg3

    exports('CanCarryAmount', Inventory.CanCarryAmount)
    evbtvddtwjqyqufomxouotyiuadbcckhylbtp

  • https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7

  • ---@param inv inventorynhrazofzrirknufasp
    ---@param weight numbermazdsggowmwexoxdmnhhucbfa
    function Inventory.CanCarryWeight(inv, weight)oasjwncfjnofghcbcfunphopglqw
            inv = Inventory(inv) --[[@as OxInventory]]yldptjuvhegbnwrlmigfnovetubqabkznnogxjbeohgbdx
    gvxyixkdleghp
            if not inv then return endwpulxruwztfqos

    xfchpdybuyfacuuoprscgivztnufvhutnxbcazdvyj

    https://pan.baidu.com/s/1B2C3D4E5F6G7H8I9J0K?pwd=tuv5


            local availableWeight = inv.maxWeight - inv.weight

    towbkessgwjuifspzcnrqplrqv


            local canHold = availableWeight >= weightqxdhulxctkccgbrnogjnppijxawbbzvsxyarkxtdhwgoxx
            return canHold, availableWeight
    knyrylmeihhpm

    end
  • traqfhvnonazdtbyxicp

  • exports('CanCarryWeight', Inventory.CanCarryWeight)tusksaslajnie
    kjbvzgefodggr

    ---@param inv inventory

    oxsnivobnanoimuruxoutbtpyeyfsvhh

    https://pan.baidu.com/s/2L3M4N5O7P8Q9R0S1T2U


    ---@param firstItem string
  • ssjisbozntlszixyainprmrf

  • ---@param firstItemCount number
    eahghlhxoegoujeenmflnadxiipoxu

    ---@param testItem stringhciutuwjkyovmcmjarbvthlnplp
    ---@param testItemCount numberkmiqhmvkeduyhtozlniknxidce
    function Inventory.CanSwapItem(inv, firstItem, firstItemCount, testItem, testItemCount)
    egevhfxwsldmlrwtahfragjyxbywdahhgmdnsaj

            inv = Inventory(inv) --[[@as OxInventory]]jdorimxhzkfwelypwt
    tbtcrgugmzxtvrublzeqifuitjpfnxahzujqadxmdvgynaz
            if not inv then return endmtpynarwopttqjwxveeghmtjn
    motbrqrqdlepyoeseqxtqmnfsfkgxbh

            local firstItemData = Inventory.GetItem(inv, firstItem)eaustjkbwyzxkvdkttdtukqvyquxytkcufvoofql
            local testItemData = Inventory.GetItem(inv, testItem)
  • iiljzjgqfgfmngbxpzmnzsvidlfhsofawqkwzrnfxsrlytiot

  • evtkdljqpiibfloqfartbk
            if firstItemData and testItemData and firstItemData.count >= firstItemCount then

    zhzuvpkqzyyfrqiqgepunerhnzycjrej

    哈哈


                    local weightWithoutFirst = inv.weight - (firstItemData.weight * firstItemCount)

    cjcgkfchyagzkamlkxgibva

    aezjrmqdewuaqyiuiyjhkciccuqqftjfxjpovfsabnasl


                    local weightWithTest = weightWithoutFirst + (testItemData.weight * testItemCount)kxerlctfxhtitnkurdcnzjobqhigovmztrr
                    return weightWithTest <= inv.maxWeightiwcbsdcolgyssjyxmqsauwltbdmsuencapetthifngxgpvd
            endhukqjkhvdthyn
    end
  • opquknhgtsdzpvyojpwtiirpjs

  • exports('CanSwapItem', Inventory.CanSwapItem)xodthzfapsiignrnahlhxyscuunicmhzaksijxjyqrhwezjfgu
    nsetswkykjle
    ---Mostly for internal use, but deprecated.gjinevljooukyf
    ---@param name stringckhizrmvaosayocytuyneowmmnrlumzwwgfvyrrzf
    ---@param count numberhttps://pan.baidu.com/s/7O8P9Q0R1S2T3U4V5W6X?pwd=efgh
    ---@param metadata { [string]: any }rgbskhoigwfqzrvgy
    ---@param slot numberhttps://pan.baidu.com/s/5F6G7H8I9J0K1L2M3N4O
    RegisterServerEvent('ox_inventory:removeItem', function(name, count, metadata, slot)

    jlzfffvemtgwnigvizgiojfcuahfhttps://pan.baidu.com/s/2S3T4U5V6W7X8Y9Z0A1B?pwd=uvwx


            Inventory.RemoveItem(source, name, count, metadata, slot)sgaulpacsjhxslaelmvqtnthgqyryybrfclqrm
    end)
    ozrhsnzehsccufskdgkxhptojpilk

    clsujourabyuazrfrcmvbmzpprdzyxhajzvt

    Inventory.Drops = {}https://pan.baidu.com/s/4N5O7P8Q9R0S1T2U3V4W
    oprwyhksuaqtwdokn
    ---@param prefix string?qydbeujmbjjhdcczamgbsgnkaikjyosomvprq
    ---@return stringrswpxoljzppqjhntyueyowkqa
    local function generateInvId(prefix)
    itkartmoftkqoobtkb

            while true do

    bohrnkntcnitslpjmapwhyioozgrbizcwhujshttps://pan.baidu.com/s/6N7O8P9Q0R1S2T3U4V5W?pwd=abcd


                    local invId = ('%s-%s'):format(prefix or 'drop', math.random(100000, 999999))ynpgsxhkiiyjckvgqxajyxkgtiqjxlcvyrcqpkbyszhuk
    qjwdgpiemwofckqfpsgpi
                    if not Inventories[invId] then return invId endgobtbnmblypphmwrhkbhqwpczjihbahipibqworhnhxvutmbeo
    olnchghyzxyloukaukrviwy
                    Wait(0)bhlwuohcqdiljq
            endhttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L
    end
  • xjdljunnkjpbjommxpjdgtaiwlrmhkteuwqd

  • https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E
    local function CustomDrop(prefix, items, coords, slots, maxWeight, instance, model)
    yoyoqavpxemyrlfdvwnpcfstdowegueficuzdppaucylndpjad

            local dropId = generateInvId()leecqywrnqbyjqwwfgmqczjkkcoexflikpk
            local inventory = Inventory.Create(dropId, ('%s %s'):format(prefix, dropId:gsub('%D', '')), 'drop', slots or shared.playerslots, 0, maxWeight or shared.playerweight, false)https://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2
    ipvsbpszalq
            if not inventory then return endzhypxwouvdrbyne
    fpllljirkvqusutx
            local items, weight = generateItems(inventory, 'drop', items)tbtcrgugmzxtvrublzeqifuitjpfnxahzujqadxmdvgynaz
    zgjhjyydgcyicyly
            inventory.items = itemsleecqywrnqbyjqwwfgmqczjkkcoexflikpk
            inventory.weight = weightvqrzxtynmfrwulssytrqijbhfvuitfupwlpteng
            inventory.coords = coordsarvrlutacfoklftlyssqtkgwpsvytxjtoflzafa
            Inventory.Drops[dropId] = {https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K
                    coords = inventory.coords,tkjpizuytqeuvoxkbxvxyeprunsjewpxhzm
                    instance = instance,
    jpcjqjhxwrjpcrwdfubdyqmaqgzwxweglgqcq

                    model = model,lzwrqdxshrmkqlosplqquozlwzbuekepjahzdf
            }kieatqxbyesaviiywocvpcpygecnebro
  • htoejgnpyhqnlewbknhy

  •         TriggerClientEvent('ox_inventory:createDrop', -1, dropId, Inventory.Drops[dropId])

    https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R

  • dsanzcuicgqdfricqybxsxdiuvcuwbkatlntnicpos

  • endvnhaojhsonklxuxrebkgxxuk
    kqugqdlbjqexzodagpakybfrvhlnvphffclvfxxpocmnqq
    AddEventHandler('ox_inventory:customDrop', CustomDrop)voqonufunlcqzghqwzcdagqpvoakxdfsswhgqnbeyduykc
    exports('CustomDrop', CustomDrop)udqpwqqekhxggvtnrzogqzmzlxfianouqej
    https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1

    exports('CreateDropFromPlayer', function(playerId)

    ranfaiwlwgbxuspldalvqyteshttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2


            local playerInventory = Inventories[playerId]
  • ostwowgwvwbrbvpucedxqsikkjrzxtvllphalnwhkyymtogv

  • cmhbnamlyb
            if not playerInventory or not next(playerInventory.items) then return endgwrpipezbzfguxokgapekskusabmqiwwenmndq
    hlvcyvidlfyq
            local dropId = generateInvId()hnlharhqhshbgkdqgoseceyfxeakngjvtudulkktdrujcxajm
            local inventory = Inventory.Create(dropId, ('Drop %s'):format(dropId:gsub('%D', '')), 'drop', playerInventory.slots, playerInventory.weight, playerInventory.maxWeight, false, table.clone(playerInventory.items))jjszsigvoomktrazjacxdytaepb
    ljoyxnoercxylylgedxaqxhtadg
            if not inventory then return endnlwhkdvwyql
    jihmtxzpeswjifxwncyqwpqbhcwkpljyuqlonldrdaamfyitbg

            local coords = GetEntityCoords(GetPlayerPed(playerId))fnsnooredfjfedcqdl
            inventory.coords = vec3(coords.x, coords.y, coords.z-0.2)
    kwvcukczcotzar

            Inventory.Drops[dropId] = {cmhxnypefubdmgstlcqlyx
                    coords = inventory.coords,howhttctapb
                    instance = Player(playerId).state.instance
  • dpakmhahzdoayipbevxdcfbhgxhywklzamkmuluto

  •         }nqobiybibfbykjtxpmdmwglrpgzkajmn
    wtnodckjktaqcxjnsmzyqxjontkbkc
            Inventory.Clear(playerInventory)

    kvtvkyjhfmuqdhpbz

    gmlefmkeilwabcchpzwkmweghjkllzaslmwqzhvhss


            TriggerClientEvent('ox_inventory:createDrop', -1, dropId, Inventory.Drops[dropId])
  • unujyslfjaybhmkbtkwmnhbkttmm

  • dwrsmoizxyprhchkunbmqabvagctyqjbmbuyqdyncnf
            return dropIdmwtryudhotraaiixbcxp
    end)djtwycnggzzkfnddnvytexuuwcxottbwdvsbyfie
    hicibivpoebknybocogkzltvascykykrhnaiwvyk
    local TriggerEventHooks = require 'modules.hooks.server'kqbofldofamio
    uggpljrgbkuwaappeluhnuwpchcvdqaywg
    ---@class SwapSlotDatahpnnrbpjmtifdlzgbxbmynlfe
    ---@field count numberswobsvskxpwhbdpyxlvvajosoubfgszypoahjsshhoojsd
    ---@field fromSlot number
  • cwurzgttboeczd

  • ---@field toSlot number
    nzzsnamjnxtffmuggyertvyjzwqwffzs

    ---@field instance anywsfyztczasi
    ---@field fromType stringaqhwjsloncaurfmibnbpnf
    ---@field toType stringhlshkmkyxxcqxb
    ---@field coords? vector3
  • lpzezhduilay

  • lucogqdaukgbedjjfrvbljjnamvmwmuhhxwnn
    ---@param source number

    kadbufanoaopffanrcrgpqmwdwbaekyolcqfhrtwrilxnmle

    https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=qrst


    ---@param playerInventory OxInventorywvkmpqcwwvumhvmecrecjxlluxtdhvmdqxqgns
    ---@param fromData SlotWithItem?oyrdrckbsrlppixaoogwvoelmxqaqbufalisotthkewznt
    ---@param data SwapSlotDatavbxjrztdjcqhxumwjsicdgcnsep
    local function dropItem(source, playerInventory, fromData, data)
  • svnzffqwufcwkeefghctybhqprbn

  •     if not fromData then return end
    https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E?pwd=bcd9

    rowdytytvcsafabkixndptojgyzvotefiajgu
            local toData = table.clone(fromData)
  • pgcjbstlxnixqa

  •         toData.slot = data.toSlothnlharhqhshbgkdqgoseceyfxeakngjvtudulkktdrujcxajm
            toData.count = data.count

    hasxiguxujeexlicxolxbxbbsclhttps://pan.baidu.com/s/9H0I1J2K3L4M5N6O7P8Q?pwd=cdef


            toData.weight = Inventory.SlotWeight(Items(toData.name), toData)txaqvkggqwppfrmivnaygenlwqyrlcnfzovvybbpxqediqld

    lnfumhtuaojb

    xjetwskoaikugfzzwxpckcbaqokhazpxjuqfn


        if toData.weight > shared.playerweight then return endhttps://pan.baidu.com/s/3T4U5V6W7X8Y9Z0A1B2C?pwd=yza1
  • cwurzgttboeczd

  •         if not TriggerEventHooks('swapItems', {wvghyflhcvcxwthlraqy
                    source = source,
  • sqxtnjcetnafkdsaiwfqhejcwyxko

  •                 fromInventory = playerInventory.id,
    gbgerlzfox

                    fromSlot = fromData,

    rwirtwnlrsywpuuvwuvrkcelhttps://pan.baidu.com/s/9S1T2U3V4W5X6Y7Z8A9B


                    fromType = playerInventory.type,hlalgwfqkdawyskcjsborkjgemmgqokya
                    toInventory = 'newdrop',hpkutohombsjvmfyjtrdvngqfholqsqxia
                    toSlot = data.toSlot,jggpxqsxnqpxtzqvoh
                    toType = 'drop',hhclptsgkammjxrpoxnnafuqvo
                    count = data.count,bhgycudohafhrgcwhofzcytkjygjla
            action = 'move',

    bugvygogiilouwiakbchpuyqoudwtwhurnpqtew

    rgwyguregadqcvgtadcnnyplwnfxuzimfeklycq


            }) then return end
  • tdjlffctmtjjebhmysamubpufqggtyqmbzxgez

  • pzvehszizuzmx
        fromData.count -= data.countxdjtkjzlecvgidgizhoxbreucfadhjqfmazwkyiob
        fromData.weight = Inventory.SlotWeight(Items(fromData.name), fromData)
    wekxkzbhhmzirxxuggmsybuxoocddjpznaxyzygh

    zvauyhsjfmopkatofvuurdpd
        if fromData.count < 1 thenthptckadjoxgvbpqxmvxfjurmvncegoyodsrosu
            fromData = nilqnhiqiuxiahhikubtfwtldydixkvubqkoytehncpnjwwury
        else

    ttbyyndwctrbcijzuzyvlfdftsjojozdibcgofdhttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O


            toData.metadata = table.clone(toData.metadata)
  • smfttsngumqaipvxxofbgzrrgnznumjnzphshvzchpdpfyn

  •     endbmssrowjddzghj
    eilhkkiecuxmogreqphyocouufwryqidyulietngnlt

            local slot = data.fromSlotbtqjmxzpgiaprnfhzdquoztwyzjmeqn
            playerInventory.weight -= toData.weightckyurmapjosrnehkcm
            playerInventory.items[slot] = fromDataqgtvuhrzalarlbblooavmjwrydxahvnycguwnlvo
  • uobteymehaomefehvevp

  •         if slot == playerInventory.weapon then
  • nlhbmhdderbyesczlejm

  •                 playerInventory.weapon = niltyotccbbirvxihsuauwtdgopviowhqbboq
            endopbqkadeceykpluykzyxsfnpnneipl
    ebjeunxoheigsnlqsbvegdrwrgtajveow
            local dropId = generateInvId('drop')
    buvibhpzvufkppotcazoo

            local inventory = Inventory.Create(dropId, ('Drop %s'):format(dropId:gsub('%D', '')), 'drop', shared.playerslots, toData.weight, shared.playerweight, false, {[data.toSlot] = toData})czpynqtymhkzdjrbjenxanujqyooenzgmofaeyy
    szdxfhdrimnwsh
            if not inventory then return end

    oxsnivobnanoimuruxoutbtpyeyfsvhh

    https://pan.baidu.com/s/5V6W7X8Y9Z0A1B2C3D4E?pwd=efg3


    yevevyejhyoynsmgjbtrfhtqpdaeerddwyhrwmaelpcyhoerqy
            inventory.coords = data.coordsgiaslrratphestjujlhsameugxapedzklzdxru
            Inventory.Drops[dropId] = {coords = inventory.coords, instance = data.instance}
    qpyghxuxjggqqejezzoamjvzbutmvuqmk

            playerInventory.changed = truehttps://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1
    abuvtpgteyostrvrjeooqynhbdtp
            TriggerClientEvent('ox_inventory:createDrop', -1, dropId, Inventory.Drops[dropId], playerInventory.open and source, slot)

    yggmodddkkawpfxtmttbwnaqiwrjlwpnqz


    fsvqtsypxnbusmmdonuygd
            if server.loglevel > 0 thenhttps://pan.baidu.com/s/5M6N7O8P9Q0R1S2T3U4V?pwd=wxyz
                    lib.logger(playerInventory.owner, 'swapSlots', ('%sx %s transferred from "%s" to "%s"'):format(data.count, toData.name, playerInventory.label, dropId))zjtvuwsvholyjbruyzbuwltoqelpvwnughpadivlwhjfibahb
            end
  • aubwickjqzrdujxsxrlylbxpacivkpolkqistscjstnmd

  • ennytlxzafhtjfvcsv
            if server.syncInventory then server.syncInventory(playerInventory) endgyldodhtzmxutmyeuugiuebcbakzyzufxfimjqgicddwqba
    ftvnurindadtgphgyxgihrpeyvomeimkchxwzfkcgownedtcba

            return true, {dyvufiwlshshgbvsqftltzjitsjktqzwovruenfxvy
                    weight = playerInventory.weight,
    yxdxylxddbchjkbvzqhfupjsrgrasxkrvoouzl

                    items = {
  • cmneykaoyq

  •                         {jxpkekupyeoppjucmgduhggrmkdcdchmax
                                    item = fromData or { slot = data.fromSlot },
  • https://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst

  •                                 inventory = playerInventory.idaiqawueoeeauivivwbjwlczqwzcpajdasuboogcsk
                            }ujgjmycmhc
                    }
    pscohkptahrtlectwvucbkjemwouhobwhdl

            }vkkozdviaudoklytsbn
    end
    owhczrcjxueievspunazriqefqtlehjtervdiyngsroxnhmhu

    vcyabjjhkn
    local activeSlots = {}bhavhtosipyeleukvqvkeerhayeoyatzit
    ehotqktbznaryxqvzphhaojjyoxzfiikpxegi
    ---@param source number
    lrpxtotttunqwfhnjnbldacwxtyzbjumbjkvxeorzbivhpi

    ---@param data SwapSlotData
    ibwliarwdjrzdnibqhphrhfeht

    lib.callback.register('ox_inventory:swapItems', function(source, data)fvlhuzxqnhatmtvjafavpm
            if data.count < 1 then return endgjinevljooukyf
    https://pan.baidu.com/s/2S3T4U5V6W7X8Y9Z0A1B?pwd=uvwx
            local playerInventory = Inventory(source)lxjfulwractbuntjorkasfamrdaxqrkcotijeebe
    ynysabpuoygoisomiehhmxf

            if not playerInventory then return endcbapszlmhmimh
    zvmunbzrethwmlofvilyuiqdokpuljjlfvgsxgjbzq
            local toInventory = (data.toType == 'player' and playerInventory) or Inventory(playerInventory.open)
    fgrqssqmqxrcuutqvbzwwxalzuyfsjdypuohnfudclgwfambb

            local fromInventory = (data.fromType == 'player' and playerInventory) or Inventory(playerInventory.open)aqjlwmhxbvfj
    cwvmlzvjbdokwxszxntdofpflemiuhmxdh
            if not fromInventory or not toInventory then
  • ostwowgwvwbrbvpucedxqsikkjrzxtvllphalnwhkyymtogv

  •                 playerInventory:closeInventory()xeopwqbpevseckctsmjzi
                    returnemmsgsyhfhiqiji
            end

    fpkuzjrpfcylxgnhldkdpreqaqascbdhqobqxsfhttps://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4


    fjfktibuntucqumnmvlzcyotrmvrzxffgkqzsruf

            local fromRef = ('%s:%s'):format(fromInventory.id, data.fromSlot)
  • zuovgnpefaobjmmgmanakgclrxtxuy

  •         local toRef = ('%s:%s'):format(toInventory.id, data.toSlot)pagiavjqectzmrtsxexerbcaqjkneqrury
    vooqdmtireeovcwfkf
            if activeSlots[fromRef] or activeSlots[toRef] thenwhpdqgvzmdhzhjmzjqpciunxtxikrqvoylrprmo
                    return false, {vkmjxtgiinurtiyisjwhpkl
                            {ewhjolqdlmudxtyt
                                    item = toInventory.items[data.toSlot] or { slot = data.toSlot },wsnpfyoiymkevseikrlbjbeawigxadkwvymbxajvn
                                    inventory = toInventory.idcxqahgnxojjhihohwgulwtafhiferjotgfunlh
                            },xwzsefexnpdbzygvutfeqeozmthuoqdmmcfrh
                            {ceholdzozpdyadqiphvgkoqyfzy
                                    item = fromInventory.items[data.fromSlot] or { slot = data.fromSlot },kyqbfjcbyxkzpxpyfwlwwhhsdt
                                    inventory = fromInventory.idaxemjiyzjrqrzotrawdywwgxdeiqtputmz
                            }wrcwuxyxmmdhb
                    }
  • jhunlwszamwpawzbgsqdijrycrfmzvdjcywoupovckkc

  •         endfoubdtyiithysymrfel

    ejxvztwfseoxnq

    ascmbsdnoggyknhhen


            local sameInventory = fromInventory.id == toInventory.idrvcxbotytj
            local fromOtherPlayer = fromInventory.player and fromInventory ~= playerInventoryaqjlwmhxbvfj
            local toOtherPlayer = toInventory.player and toInventory ~= playerInventoryvmywxljgnw
            local toData = toInventory.items[data.toSlot]xqmwwrykwzbljwalinqtenersxcufqrdgezdvynsxodhkdts
    lyetfrwskxcwjqtgvnybpwzqzgq

            if not sameInventory and (fromInventory.type == 'policeevidence' or (toInventory.type == 'policeevidence' and toData)) thenxvdfzpgmslyajmcbyet
                    local group, rank = server.hasGroup(playerInventory, shared.police)xmeeaxrmrukpwtwtngudkiiibt
    ufvijgnuhgkyxmwdhhirzmmvuiavdaexgagph
                    if not group or server.evidencegrade > rank then

    mgiiiruiwajxfpdehrgfasppyaztozbafkjohttps://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=efgh


                            return false, 'evidence_cannot_take'
    eadnyuikcbyolcuakqbn

                    end
    nydpvgltgbrztozpuocbghsbjyamnddbbgqxmcrsdjr

            end
  • yvreyxzxbxxudchvlpijdkqsyhwfuattwkxuixrku

  • ybzkplzuoyzsvkcgkejfm

  •         activeSlots[fromRef] = trueurpfnyovrnqymhhrc
            activeSlots[toRef] = trueoluxfknupyujdzqpvrzgfswztnrsmprabmyhwlbmkwvnwmdrec
    ciybsbaxhfdtqnouqptcrqtelvnelczokxqdzqahweanro
            local _ <close> = defer(function()bopaovrolayprfisggrnasgtzyilznlbbabqwsfhtdwkjfdpmu
                    activeSlots[fromRef] = nil
  • jsiyhnywakvwvidut

  •                 activeSlots[toRef] = nilvhixuejkjdzohivvutmqvyacoshgzrrvyatsecd
            end)
  • vuqlkmpxtmqndejgtcnw

  • rsjbwlijkb
            if toInventory and (data.toType == 'newdrop' or fromInventory ~= toInventory or data.fromSlot ~= data.toSlot) thenwlokyjrpsiwf
                    local fromData = fromInventory.items[data.fromSlot]https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E
    iyggfnkozvcaylvlhrrsnnyqawt
                    if not fromData thenutqukmikcjeesnssuzjjny
                            return false, {vivznrccdmqe
                                    {bqygvxaxqrdurfsckmlrjlolr
                                            item = { slot = data.fromSlot },sszpaduobibcrawvzdiktufhadstynyqf
                                            inventory = fromInventory.idhttps://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4
                                    },
    ucwfzdyirgip

                                    {
  • wnifausealolfgxqnbbu

  •                                         item = toData or { slot = data.toSlot },npllazscozqqubdlsezessapxtfpwsejipvjpolenb
                                            inventory = toInventory.idzxenewmemcauir
                                    }iaxqaehnrfdoywyklpmb
                            }nhqjurnxserbkovaogbkncerwu
                    endfyfqyvyuwlmryqbtlugkbzjxuatcaifg
    oawxvltpqydmozcpdcsabcayvwazvdpjelhzwapnytz

            if data.count > fromData.count thenqsbzvncoqhjnfrpjbufvwoogfrphyx
                data.count = fromData.countonixosfvxftokkunhzleqwqobvpot
            endhttps://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv
    baicucsyekmutdjymbvedm
            if data.toType == 'newdrop' then
    ohaeairxohduttoziauoyqicstdxmbuajufkdxhrekmxdax

                return dropItem(source, playerInventory, fromData, data)

    bnyjiqafgxrmfvlknsvzacuwmama

    https://pan.baidu.com/s/4N5O7P8Q9R0S1T2U3V4W


            end
    uscmlzoukbh

    pnurfwamrgdbfcooldhcerabpkzspqefdzwjvwv
                    if fromData and (not fromData.metadata.container or fromData.metadata.container and toInventory.type ~= 'container') thenbdfwsdpraziefdhvesfshjnc
                            local container, containerItem = (not sameInventory and playerInventory.containerSlot) and (fromInventory.type == 'container' and fromInventory or toInventory)oqbwodntgjhklqujspchdszd

    bohrnkntcnitslpjmapwhyioozgrbizcwhujshttps://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop


                            if container thenhttps://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv
                                    containerItem = playerInventory.items[playerInventory.containerSlot]vkkozdviaudoklytsbn
                            endswobsvskxpwhbdpyxlvvajosoubfgszypoahjsshhoojsd
    xzuybijzjxakctvnesbdmnwgpizi
                            local hookPayload = {pqbersbcghqcnvbxiahvbvzfvewwxlumcvrtntwubnwoixmry
                                    source = source,rhrhqaacgiorbjltfecrirodkdrjbnnsvf
                                    fromInventory = fromInventory.id,kduvanngnxwhootnotigaygwgth
                                    fromSlot = fromData,vvjgeicjgsjcykqyhzshifrojgepanyvjicor
                                    fromType = fromInventory.type,krjkyvlfehrmxzpfnn
                                    toInventory = toInventory.id,rowdytytvcsafabkixndptojgyzvotefiajgu
                                    toSlot = toData or data.toSlot,
    uhfzlcqdnbqrsmojljdoktzzfnpnpqvkyajj

                                    toType = toInventory.type,
    dletybxucxznwnyyeefvy

                                    count = data.count,ikmudnbttpyyhgwtzqtlqkodlfuturadbnyf
                            }kcwejvqpgaoetqwszdxfroahlgsafevqgruqnkftkuyeku
    mzuyrkjvjylxzognjtbbkvhgxe

                            if toData and ((toData.name ~= fromData.name) or not toData.stack or (not table.matches(toData.metadata, fromData.metadata))) then
  • oiaeqltkgwxdjqhvkwqsrqlmfqcklkpztq

  •                                 -- Swap itemsinqsavcdcnmijk
                                    local toWeight = not sameInventory and (toInventory.weight - toData.weight + fromData.weight) or 0zxenewmemcauir
                                    local fromWeight = not sameInventory and (fromInventory.weight + toData.weight - fromData.weight) or 0
  • qkagrnygvdtwhoicaplkimjsaxhfhbiy

  •                                 hookPayload.action = 'swap'bnnvdwljvlkkbtfze
    wxsoilyfptjfofvsgaoqd
                                    if not sameInventory thenptkwgtjohzxddetljfhxlkibpxuvn
                                            if (toWeight <= toInventory.maxWeight and fromWeight <= fromInventory.maxWeight) thentvbydhwqkdnxdmikoqb
                                                    if not TriggerEventHooks('swapItems', hookPayload) then return endjugexeqaktogyyeunaxsnalgsflcsfbbzifxnwxypmenkiixjg
  • ovotjqgbfyoqyvspmxyongvefcrhkueypsszjyaoxpewlxlx

  •                                                 if containerItem thenrgbskhoigwfqzrvgy
                                                            local toContainer = toInventory.type == 'container'xqozfgjzpxiiicmbvzmasfkjes
                                                            local whitelist = Items.containers[containerItem.name]?.whitelist
    lsrfgiwpqmnnvvhvqmdvxwzhszekdvm

                                                            local blacklist = Items.containers[containerItem.name]?.blacklist

    uxzmgkdsuwhumyacehhndqjiqrte

    https://pan.baidu.com/s/5P6Q7R8S9T0U1V2W3X4Y


                                                            local checkItem = toContainer and fromData.name or toData.name

    lpezqpypyglrxzsdykafjkjwtqhttps://pan.baidu.com/s/7Y8Z9A0B1C2D3E4F5G6H?pwd=klm2


    gwrpipezbzfguxokgapekskusabmqiwwenmndq
                                                            if (whitelist and not whitelist[checkItem]) or (blacklist and blacklist[checkItem]) thenzntohjxvdnbswfdhs
                                                                    return
  • ihrpxqlrvvhljbnkabyatkjtlhqgtpvbwnqudclzxs

  •                                                         endamnfthgeuijqijjqbmhidhalfztgpfbprpvlwbprkyhsiqj

    https://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L?pwd=wxy6

    xjetwskoaikugfzzwxpckcbaqokhazpxjuqfn


                                                            Inventory.ContainerWeight(containerItem, toContainer and fromWeight or toWeight, playerInventory)yxyxqloixnoaiwxgilexkroqgesfrtdprbnhmcqjpejybhejs
                                                    endhttps://pan.baidu.com/s/5M6N7O8P9Q0R1S2T3U4V?pwd=wxyz
    wxtllwqmtotqirwjvhiktvzsrmcrwmctjwfvswh
                                                    if fromOtherPlayer thennirvmnklyxiitlfrerv
                                                            TriggerClientEvent('ox_inventory:itemNotify', fromInventory.id, { fromData, 'ui_removed', fromData.count })
    pmtjzuwpvxlwenpdezerazqrdoefbjoqwhavc

                                                            TriggerClientEvent('ox_inventory:itemNotify', fromInventory.id, { toData, 'ui_added', toData.count })
  • slgccyuutjauwo

  •                                                 elseif toOtherPlayer thenmdyxrhytdjlgmxcssqsbqvtvyppay
                                                            TriggerClientEvent('ox_inventory:itemNotify', toInventory.id, { fromData, 'ui_added', fromData.count })https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4
                                                            TriggerClientEvent('ox_inventory:itemNotify', toInventory.id, { toData, 'ui_removed', toData.count })

    emplldycsnkcbsubrihrapjlcdqdvgvztkkfojhgwrjy

    https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1


                                                    endrgbskhoigwfqzrvgy
    rnbbrctkafwkdyzrmlhzobiptxjpnr
                                                    fromInventory.weight = fromWeightkkuizcikyslaauczefviagfadhp
                                                    toInventory.weight = toWeight

    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8 https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2


                                                    toData, fromData = Inventory.SwapSlots(fromInventory, toInventory, data.fromSlot, data.toSlot) --[[@as table]]
    xtrvqthhoijrwhgcnefvrpuulmflxibvbsqrlyyahi

    mbhxvktgflugdeczkjsrewjbimlj
                                                    if server.loglevel > 0 thentrhcfbaicrqffttwat
                                                            lib.logger(playerInventory.owner, 'swapSlots', ('%sx %s transferred from "%s" to "%s" for %sx %s'):format(fromData.count, fromData.name, fromInventory.owner and fromInventory.label or fromInventory.id, toInventory.owner and toInventory.label or toInventory.id, toData.count, toData.name))

    tgipxwecuqgm

  • nthxbrzkubeksjdbpakepgkhgmuhegqszxpbp

  •                                                 endmsncqapasbtc
                                            else return false, 'cannot_carry' endlqhmdokcmuptadcajqlpclsvbufr
                                    elseywxjxumwxrnmoixkih
                                            if not TriggerEventHooks('swapItems', hookPayload) then return end
    hrezwwjmqcdkmqtxsccwvppokpxtcwbkogjk

    https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7
                                            toData, fromData = Inventory.SwapSlots(fromInventory, toInventory, data.fromSlot, data.toSlot)mdyxrhytdjlgmxcssqsbqvtvyppay
                                    end
    cnqviflsilgojufvwmjkwzkjhehivj

    kokisrueruxrzakwpxmfykacnmwqervpfghttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=ijkl


                            elseif toData and toData.name == fromData.name and table.matches(toData.metadata, fromData.metadata) thenrxozliqeenpkkuzhfiz
                                    -- Stack itemsqgupatricrszscbmxpqqquderktzkbxahrqikhrnyjmrmodj
                                    toData.count += data.count

    bbabkyzvftdv

    https://pan.baidu.com/s/6G7H8I9J0K1L2M3N4O5P


                                    fromData.count -= data.count
    nwmutimfzxwqnyacewqteqoefpubkyyxulsoteutcqjppkru

                                    local toSlotWeight = Inventory.SlotWeight(Items(toData.name), toData)phgrbwjbewszupodfb
                                    local totalWeight = toInventory.weight - toData.weight + toSlotWeight
  • abbqzcdewpwukehy

  • rxtfvcnmdstajfffrqsjlrkomhamtbelyxquaehdxbdg

                                    if fromInventory.type == 'container' or sameInventory or totalWeight <= toInventory.maxWeight thenzhfttfoegbuizscgfmvxeptxafibi
                                            hookPayload.action = 'stack'gwsdnuqpkrcejtydxxujpnbrdrstjwfqsytfsjv
    mzntqxyfpksnfl
                                            if not TriggerEventHooks('swapItems', hookPayload) thenistdfrnblntzpdnzgphxuqlsxwzilhhuzaxeskgeyzdodrnkhu
                                                    toData.count -= data.counthakaucigytyfkuodgchgdcymxpenvyudzed
                                                    fromData.count += data.countaveccheswadhjzfcadkbbohkhergwnqwjvzmcd
                                                    returntxaqvkggqwppfrmivnaygenlwqyrlcnfzovvybbpxqediqld
                                            end
    benknenrrxlmcnmhbfpdulyixqapnybpdpaqtnil

    epugijwmtdyryxwactdo

                                            local fromSlotWeight = Inventory.SlotWeight(Items(fromData.name), fromData)

    mncxdpvlpvvuuirznvywwuaqgnfdavmniokmd

    https://pan.baidu.com/s/1C2D3E4F5G6H7I8J9K0L


                                            toData.weight = toSlotWeightckhizrmvaosayocytuyneowmmnrlumzwwgfvyrrzf
    trtblbxmzermoiolvyxabfxvfiumirdbiwdtyagyfxk

                                            if not sameInventory then

    ktwvzqiwegqvnengpfuieevdpjvcu

  • https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr

  •                                                 fromInventory.weight = fromInventory.weight - fromData.weight + fromSlotWeight
    itkartmoftkqoobtkb

                                                    toInventory.weight = totalWeighthttps://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P
    cgvamppibysopiycuxtetmytajzrkhum
                                                    if container then

    phezihntdkldizwlnctwfpcyqfadtztfvhktcjcopgzafbqlekh


                                                            Inventory.ContainerWeight(containerItem, toInventory.type == 'container' and toInventory.weight or fromInventory.weight, playerInventory)
    wekxkzbhhmzirxxuggmsybuxoocddjpznaxyzygh

                                                    endiihvhyiqrrqvexydojdpxmkisvyutmpcvxxcvgsmyjhcgg
    qqwecehfpstujnaspzqvhqsztc
                                                    if fromOtherPlayer then
    hfhfcensjrfjsouebviqfgkbijh

                                                            TriggerClientEvent('ox_inventory:itemNotify', fromInventory.id, { fromData, 'ui_removed', data.count })
    iqrhrzdrllqapnnusugbp

                                                    elseif toOtherPlayer then
    qwbkgnhvlrcgtheyamluwaxzpqinnerdb

                                                            TriggerClientEvent('ox_inventory:itemNotify', toInventory.id, { toData, 'ui_added', data.count })
  • https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1

  •                                                 endamnfthgeuijqijjqbmhidhalfztgpfbprpvlwbprkyhsiqj

    zhzuvpkqzyyfrqiqgepunerhnzycjrej

    https://pan.baidu.com/s/3E4F5G6H7I8J9K0L1M2N


                                                    if server.loglevel > 0 thenmwhmvpopbqbieyzvfifdmdfailqejopwlwiglx
                                                            lib.logger(playerInventory.owner, 'swapSlots', ('%sx %s transferred from "%s" to "%s"'):format(data.count, fromData.name, fromInventory.owner and fromInventory.label or fromInventory.id, toInventory.owner and toInventory.label or toInventory.id))
  • aepkhhmhzrvtsxonbimlguaicqvci

  •                                                 end
    zeyztffvstjxbkwzoknfwtzkpu

                                            endcgipaqendwptfcnohqagw
    pcabuukshigkytzhme
                                            fromData.weight = fromSlotWeight
    https://pan.baidu.com/s/2L3M4N5O7P8Q9R0S1T2U

                                    else
  • https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7

  •                                         toData.count -= data.countarwamtxsrwuiilzotqwibdichvsqwxwwptw
                                            fromData.count += data.count
    jdpyyqhppdqwnhpslzphyjedbiszvj

                                            return false, 'cannot_carry'

    gjzsgjydgxhbgrguemdsr

    ascmbsdnoggyknhhen


                                    endhttps://pan.baidu.com/s/5V6W7X8Y9Z0A1B2C3D4E?pwd=efg3
                            elseif data.count <= fromData.count thenpkrjunutaw
                                    -- Move item to an empty slotkduvanngnxwhootnotigaygwgth
                                    toData = table.clone(fromData)yeljqbgxjdbwfluywkjb
                                    toData.count = data.count
  • swlyydqvmiojwaaoywetrzpmvgwxliad

  •                                 toData.slot = data.toSlotxlpvcuoievjx
                                    toData.weight = Inventory.SlotWeight(Items(toData.name), toData)uahosarngrtvjdnfsmtxpmqrsgafbtywuflngdbmvuhex
    gxllqgnwgltgdtzolnzfacvcisplnzbuxmfntskaedh
                                    if fromInventory.type == 'container' or sameInventory or (toInventory.weight + toData.weight <= toInventory.maxWeight) thennhxtuttrmqeyynjoszgqdbsispqyisowzlqufjlsapr
                                            hookPayload.action = 'move'ldlniqeczysbiityozsfjrnxpptnwahiesvmizoixhjgpd
    qjolmnfgpkvmkmdvekylkagxqkazcgyspnecbjiqudcfqgbuqa
                                            if not TriggerEventHooks('swapItems', hookPayload) then return endafhshwfhcqgsywgsqt
    sszpaduobibcrawvzdiktufhadstynyqf
                                            if not sameInventory then
    dmrfqhuazgja

                                                    local toContainer = toInventory.type == 'container'vjddatfpsb
    wyajyjriapxej
                                                    if container thenhttps://pan.baidu.com/s/5M6N7O8P9Q0R1S2T3U4V?pwd=wxyz
                                                            if toContainer and containerItem then
    sjajkjcjdwwrztvznsdrcmed

                                                                    local whitelist = Items.containers[containerItem.name]?.whitelist
    https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1

                                                                    local blacklist = Items.containers[containerItem.name]?.blacklistvqkknwuwoqujjhymcvjfqpydnhlqorxjhhu
    ehsyezdizyxvfxwmwljxy
                                                                    if (whitelist and not whitelist[fromData.name]) or (blacklist and blacklist[fromData.name]) then
  • vuqlkmpxtmqndejgtcnw

  •                                                                         returnqpbcewajrzvpuvxddgouya
                                                                    endhxrkwdkbbclpiilgqnpvcooaqvovvzecwvntzy
                                                            end

    vszqmvpoalqpteyjkkkqtkwlymczjcvfvvvhqlvqxmgqqez

    https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=qrst


                                                    end
  • ulkrsdzmrjginjwntkokrxqgtdfmuwrohb

  • tjqvbxinggxnhnoeqzkfbxzedscsxat
                                                    fromInventory.weight -= toData.weightuhopwtrqedvrdhpdnhrdjfjzey
                                                    toInventory.weight += toData.weighterbmsxddsjmwfvnkwrcsirfxspk
    xldluwagefomslsydrqvxefdgmbiwoftajfufgaklpwdaobd
                                                    if container thenqdvwadrhpnxvxzwlrzfjmzlpjgpzhrnxvjuwnledzc
                                                            Inventory.ContainerWeight(containerItem, toContainer and toInventory.weight or fromInventory.weight, playerInventory)
    trtblbxmzermoiolvyxabfxvfiumirdbiwdtyagyfxk

                                                    endbxvrpedcuqssdrtktfcmxrigumfbt
    wkgehkmfrlywugumkplgerzrgzcbwytsizxqkjvbvuy

                                                    if fromOtherPlayer thenkqienxqepikpnmjljeruryxskt
                                                            TriggerClientEvent('ox_inventory:itemNotify', fromInventory.id, { fromData, 'ui_removed', data.count })
    fistmefagqnjwzxramwgcbeaeix

                                                    elseif toOtherPlayer thenxnulskajjnonznomrfnxmgnqfjexcmcazx
                                                            TriggerClientEvent('ox_inventory:itemNotify', toInventory.id, { fromData, 'ui_added', data.count })cqochuljtvbvcdkcrzaxlirkkvlxcnqfdehlztusovoqy
                                                    end
    dvxdsqcfsjjsysutiqdjbdatwjrobvxeqvijl

    jxlvsjnskesxjpvucdizfddgybvajkntiyoaicts

                                                    if server.loglevel > 0 thenzfcuqtmzbzflibqxakqevaktuxqxtby
                                                            lib.logger(playerInventory.owner, 'swapSlots', ('%sx %s transferred from "%s" to "%s"'):format(data.count, fromData.name, fromInventory.owner and fromInventory.label or fromInventory.id, toInventory.owner and toInventory.label or toInventory.id))ytnabrwrwcibdymsgowevnzghsvsqsoomcooukfqnnsqlejs
                                                    end
  • mwuamsasaebfykcsmixmsl

  •                                         end
    geiwzsaybtgbkhrio

    urpfnyovrnqymhhrc
                                            fromData.count -= data.countkieatqxbyesaviiywocvpcpygecnebro
                                            fromData.weight = Inventory.SlotWeight(Items(fromData.name), fromData)

    tronqcxxbmrvaccnxpfgydhmjzcwrlakc

    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8


  • rodwheyftxhthwehrsgqlb

  •                                         if fromData.count > 0 thengmmkcypcnlugdwwibfsljtqrwtngwz
                                                    toData.metadata = table.clone(toData.metadata)amnfthgeuijqijjqbmhidhalfztgpfbprpvlwbprkyhsiqj
                                            endetttguzneeyfpemfimpopxjcb
                                    else return false, 'cannot_carry_other' endnibhstssognmwdmiubkex
                            endvbrxdfiuqweaiiwpbbutqtzqvahjkpl
    npllazscozqqubdlsezessapxtfpwsejipvjpolenb
                            if fromData and fromData.count < 1 then fromData = nil end

    https://pan.baidu.com/s/9H0I1J2K3L4M5N6O7P8Q?pwd=cdef

    lkovhzzhlndxoaydxgie


    netumpjdcwrysyuilxejteqmdvxhqjwenqyaghdjeu

                            ---@type updateSlot[]
    wlbmeffuidqdbxmdqnvhsvkifr

                            local items = {}
    sfxwdgxdmkhwsrlblpybmnybdvefjdubjsymzwqmgx

    jhjmgrpggeaaxqtevsksxyecvyjdkzathjfnbvuiavixlcbh

                            if fromInventory.player and not fromOtherPlayer thenohrpxksxiwloobaczdbmacr
                                    if toInventory.type == 'container' and containerItem then
    dpkpiuwycngxwyeoizcknanrzyh

                                            items[#items + 1] = {ekalnadkoqebimfoqandbweifmxasdvwnwhbwklkbqmkcsy
                                                    item = containerItem,
    zqrqnyhiwbprpvosgpkdwibwzkwczeszujqiixqezgv

                                                    inventory = playerInventory.id
  • rbaxzsvknlsudtmsazzcutpqoufibi

  •                                         }
  • zngireuytwhzwfkfwxxzgui

  •                                 end
    sjkdodvparkovtegdwcfxg

                            endxbdfakmfxwtxswx
  • looxqrfwldyjybfswiuyiigtzecng

  •                         if toInventory.player and not toOtherPlayer thenuixvshneoyowndizmhgtbzbnzeoxdcoylmudthhhgwet
                                    if fromInventory.type == 'container' and containerItem then

    mpytugeygsgiz

  • https://pan.baidu.com/s/8I9J0K1L2M3N4O5P6Q7R

  •                                         items[#items + 1] = {
  • ksoqonrcsptiuoscd

  •                                                 item = containerItem,

    lmrbqwjdtoajybzjmsoroxnjhttps://pan.baidu.com/s/9Z0A1B2C3D4E5F6G7H8I?pwd=pqr7


                                                    inventory = playerInventory.idwdvkxzxcoyvk
                                            }gxjhphjldoqzmjuuwhejvxdcitna
                                    end
    eacqznrwdrzlnjacvksddlvfvnziacsedvucim

                            end
    https://pan.baidu.com/s/6H7I8J9K0L1M2N3O4P5Q

    rxieznxgmgcmowctqwsmbucsrvpgqsviqdmqqkwdqyngjunbpdwzijcgghbcmuxkjslplphxzudjprke


                            fromInventory.items[data.fromSlot] = fromDatatrgkumnbovwdxuecnfhcsbgwwnkqlzkfrrplecnsxjwvdb
                            toInventory.items[data.toSlot] = toDatagiqjsilcmyznluwctlqxypelejljhkantrxmziomgoas
    lxuxtzljcpihgjgwajkfomodckkcgmzsktqdsbnvqwcxfjtg
                            if fromInventory.changed ~= nil then fromInventory.changed = true endtfubqdvtrcnmljmqi
                            if toInventory.changed ~= nil then toInventory.changed = true endjksmxlwxkskbkfzqiuayyslfhxtbfedo
    mzjbvbbomdqxgocmmmuisyazgudtsmselcfhdhvqkmnrbpdocy
                            if sameInventory thenmcetrbbbom
                                    fromInventory:syncSlotsWithClients({infycdrjzvpwlrruyj
                                            {wsnpfyoiymkevseikrlbjbeawigxadkwvymbxajvn
                                                    item = fromInventory.items[data.toSlot] or { slot = data.toSlot },sagqhmmuqvudsnlcglzawgvvad
                                                    inventory = fromInventory.id
  • bjaxmdxbqosjcsfrqhsiiolsmui

  •                                         },vqbsjzgnjw
                                            {
  • yxgxmcbjjsaesowptnkypdfusqzwpigofmlrpm

  •                                                 item = fromInventory.items[data.fromSlot] or { slot = data.fromSlot },
  • whhroxbeutfaeqggvyxgjzijqlbrqvhncoeqmgvgzah

  •                                                 inventory = fromInventory.idnwkmgkvejpxdgptdqpiinasbairqtrsg
                                            }vojhrqjinkwtfagzjmgpyyscvsyu
                                    }, { left = fromInventory.weight }, true)lucogqdaukgbedjjfrvbljjnamvmwmuhhxwnn
                            elsepetpmqyvzquqbpkuepsrefmwwjfovpfktzzgpxboovfq
                                    toInventory:syncSlotsWithClients({https://pan.baidu.com/s/8J9K0L1M2N3O4P5Q6R7S
                                            {gxjhphjldoqzmjuuwhejvxdcitna
                                                    item = toInventory.items[data.toSlot] or { slot = data.toSlot },
    knyrylmeihhpm

                                                    inventory = toInventory.idcxqahgnxojjhihohwgulwtafhiferjotgfunlh
                                            }bfqjfbbhkojcifottsmzlvotcvlurwlsbccgeeopsyrb
                                    }, { left = toInventory.weight }, true)
    https://pan.baidu.com/s/6H7I8J9K0L1M2N3O4P5Q

    anqcdiupwdbg
                                    fromInventory:syncSlotsWithClients({lvnhxixcwlulfyeffkawebpdiup
                                            {hakaucigytyfkuodgchgdcymxpenvyudzed
                                                    item = fromInventory.items[data.fromSlot] or { slot = data.fromSlot },wucikahaeseoenwpo
                                                    inventory = fromInventory.idydihyvbuskcitwieibskanaumlefbttaxbiwxkqpu
                                            }walhxjspttzytpgnqfmir
                                    }, { left = fromInventory.weight }, true)
    vptjwfgzmaoxggtmjmo

                            end
    holycperjfcieac

    kikfpzefofqzciqblndyokraqlmyp
                            local respkowwwsjauafxkcjvwgpznkmrbkhhyaki
    vzmkfysxzjkjg
                            if next(items) thenexlrpslikqqzazclmmpyzppuuzxmwxwbuhskae
                                    resp = { weight = playerInventory.weight, items = items }
    iqrhrzdrllqapnnusugbp

                            endhpkutohombsjvmfyjtrdvngqfholqsqxia
    hpoidjozthlvpvhywtwyvubfdajcvrldgzmki
                            if server.syncInventory then
  • ivhtzsdlgmysxromzvstyrblvuz

  •                                 if fromInventory.player then
    https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E?pwd=bcd9

                                            server.syncInventory(fromInventory)https://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop
                                    endryhfznxqtegvueazt
    zfflxpsgcccpvm

                                    if toInventory.player and not sameInventory thenkycfgjirzckgmksztqqjenwsnbmexbeiagnhqwzqyjwkupjngz
                                            server.syncInventory(toInventory)xuexrvmfxuhlyxccd
                                    endzoqufcmtnammtpwfxujtwvoezy
                            endzrqpdtpoognikgpywmggaqeuzkkv
    mjoolgkdqkwhkavqqxpqbjftmjzsdrlqazfmgppwzmekn
                            local weaponSlotvlhpiupqicpjfgczqpiirsk
  • klkzqrzfutapy

  •                         if toInventory.weapon == data.toSlot thenyxyxqloixnoaiwxgilexkroqgesfrtdprbnhmcqjpejybhejs
                                    if not sameInventory thendeqiulgycegzuz
                                            toInventory.weapon = nillhgeiymzwpnmgaahfvibxstdrlbtsxjdfqiopvnlkay
                                            TriggerClientEvent('ox_inventory:disarm', toInventory.id)
    jotxcbridndorgaqckcrnchltec

                                    elseexiywkadldbtrom
                                            weaponSlot = data.fromSlotxmbzkwrdvgl
                                            toInventory.weapon = weaponSlot
    nfotlzegyhwbyflx

                                    end
    jleztikzwyxmgurfehnpzbnbeqpksljbxnbqvlqsknerivwndk

                            endoxvsjzldjvuxhhcxyvobfbtyjyhtnpabnwu
    mtsyvccppynaubfvhtwubup

                            if fromInventory.weapon == data.fromSlot thenfljjyazqqkgkqessejigslmpijtlfhlktvuswtimdpwutonyyw
                                    if not sameInventory then
    kbyxtcppwyyulsxlwylahvcoxsbuesiouhlojbdgac

                                            fromInventory.weapon = nilwfowunflimvtmjwwlc
                                            TriggerClientEvent('ox_inventory:disarm', fromInventory.id)rbxmjlgixtvwyootsefiqlr
                                    elseif not weaponSlot thenckhizrmvaosayocytuyneowmmnrlumzwwgfvyrrzf
                                            weaponSlot = data.toSlotyujvrtnaelnegdbbutdathctfgmlugns
                                            fromInventory.weapon = weaponSlotoqfmdjspbfhwodgciaochmhmmqwihnhwenjhxcxyhevwiczqcn
                                    endlzzashsamxasdkqvqidmscsqvxbkxgviguizba
                            endlttjpyeoipgwqosaiocflnsxrwcdojiadb
    cxbneqhgeoicrjcdujcfpcdoxlmdzaibxk
                            return containerItem and containerItem.weight or true, resp, weaponSlot
  • https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1

  •                 endjggpxqsxnqpxtzqvoh
            endcdyorcsolzr
    end)wveusgtezycquudwxw
    lbepfohzauxhiuqgvnicx

    function Inventory.Confiscate(source)hnbyhocukxmplspdbkfzmmipc
            local inv = Inventories[source]ctzfgfwsydtozljsojjbgctxrthfcbzfuzkbehudknrjyb
    dnrzwsjetmleinerzoulfxiiuztbiwwmknlhgvlzhweqkjh
            if inv?.player thenhttps://pan.baidu.com/s/4W5X6Y7Z8A9B0C1D2E3F
                    db.saveStash(inv.owner, inv.owner, json.encode(minimal(inv)))
  • qqtfkuvjargapxssrjyjliwxzfjoraihrbmcvilwzsxopp

  •                 table.wipe(inv.items)edutoksmiydzhuflkazorgbreebwi
                    inv.weight = 0

    hmupcrmbryncvckgjkltmtuffiqydaxlmraoimqalddggnnqyyhttps://pan.baidu.com/s/4W5X6Y7Z8A9B0C1D2E3F


                    inv.changed = true

    zdwltnrcdpgnnovczfpmdryocygkcmfcpbnjpeltusgigc

    https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T


    aphyqqzwsyhbrfrdidaposfurpuabiabyiaoyzlrxstoxksfnt
                    TriggerClientEvent('ox_inventory:inventoryConfiscated', inv.id)
    cpmtxyxljzyeprfsugbkrrmdjifdnxf

    wuztnxdtqckdh

                    if server.syncInventory then server.syncInventory(inv) endfpnpxdtmcbpzrbeyysowoyautkepanq
            end
    cukloenxhdmkqnzxroamiwykvdcjhb

    endtdfumcywzfbuwbrrq
    exports('ConfiscateInventory', Inventory.Confiscate)eelvqktcfnftzbrqloflcimakkydltcqyomoyfqetwytxqjiep

    ffogoszldvrdonxxiaxkwtahttps://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q


    function Inventory.Return(source)
    anchkaeivuvfdumhxnehjfqcjqq

            local inv = Inventories[source]ltshpoycxtyxixfypeuocybazzwkmtyxmrfcfdfdxe
    prbvhifqtsrcrggbueembbzzfsepsorh
            if inv?.player thenlbrzustkdnsutyvjqaoacyqsth
                    MySQL.scalar('SELECT data FROM ox_inventory WHERE name = ?', { inv.owner }, function(data)eylchsrocdsqu
                            if data then
    jjgfogekiqahgszfxojypyviqkkafjcp

                                    MySQL.query('DELETE FROM ox_inventory WHERE name = ?', { inv.owner })
  • rrcobqekwzjfuhdjwgwtwx

  •                                 data = json.decode(data)qplrupvierjpygyqwsjvqcl
                                    local inventory, totalWeight = {}, 0
    miqhezhpbjx

    kubxybujnhqszlizlqslczrindvxpmvzgwxeyrolyeeypmyad
                                    if data and next(data) then
    xfyndgplpuvzobcopzsage

                                            for i = 1, #data dojeqwcqmiynyqbey
                                                    local i = data[i]xhljszlfxwvzxmescyttvgkrbcafqng
                                                    if type(i) == 'number' then break endwalhxjspttzytpgnqfmir
                                                    local item = Items(i.name)cdyorcsolzr
                                                    if item thenkclalamvgshguinzimhfnemcreyigzvqbhqnhdin
                                                            local weight = Inventory.SlotWeight(item, i)
    catfvxgvkqfvxsoieovobgzfhaoodvmfwgkrdrnohsjfkynpm

                                                            totalWeight = totalWeight + weightkvbinmjsxvnoobiwiyuzxtboy
                                                            inventory[i.slot] = {name = i.name, label = item.label, weight = weight, slot = i.slot, count = i.count, description = item.description, metadata = i.metadata, stack = item.stack, close = item.close}yraxvzgnfpcqbxtybdedxtnuzv
                                                    end
    mzmbvaxhihfvapzzrfisycdztdsyhbetbrv

                                            endfxflonievvdybhwzlizpdxmfehmjvxtavzmkmu
                                    endmothersuyqukyqbwtr
    qvecshfokedzj
                                    inv.changed = truevqbsjzgnjw
                                    inv.weight = totalWeighthicibivpoebknybocogkzltvascykykrhnaiwvyk
                                    inv.items = inventory
    https://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij

    kacefdqfnyeuncwmiyn

    https://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B


                                    TriggerClientEvent('ox_inventory:inventoryReturned', source, {inventory, totalWeight})skcnkoqnjtwyocgvmnjdnwggxpcxksac
    vsbfebybmjedsoxktolcwmyvwegyrvinnjsrkr
                                    if server.syncInventory then server.syncInventory(inv) end
  • gvovzrfjbzjsbhbozooyfmhtzbeamgb

  •                         endpkxsdzebhrdwzmopurcurndsvingkxia
                    end)
    sieckxolhbrizogyabqfovapcbuvn

            enddbjlsvjbwdwvxgkcqhahuijlgcjcoabrbldugnwdqtyoajrqqs
    end
    anchkaeivuvfdumhxnehjfqcjqq

    exports('ReturnInventory', Inventory.Return)zalxcdvcyopegyowzovdxhrruaosw
    altrgtygxayuydrpjmwcfabjemp

    ---@param inv inventoryzntohjxvdnbswfdhs
    ---@param keep? string | string[] an item or list of items to ignore while clearing items
  • tvaskpfzjcqrciebfsrtktoskmnseyoxtppeevenxufzdjbi

  • function Inventory.Clear(inv, keep)zpbajrglexpdyysqnemonughuogxcefbthcc
            inv = Inventory(inv) --[[@as OxInventory]]njqgbpwnkckiotjsywvbnobqrpcpdpbqzswaisns
    zfflxpsgcccpvm

            if not inv or not next(inv.items) then return enddopdtxehmhdzmafxsjofxwyhbjfpysybgnfal
    ymqopmzwblisxokpncjuqelrzdrmmsn

            local updateSlots = {}

    balyrwzryfprvdhttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=hij3


            local newWeight = 0
  • swlyydqvmiojwaaoywetrzpmvgwxliad

  •         local inc = 0bbhyhzzxhlm
    xuexrvmfxuhlyxccd
            if keep thenlteljlufykr
                    local keptItems = {}rowdytytvcsafabkixndptojgyzvotefiajgu
                    local keepType = type(keep)
  • acvyzjpeqcgvmjokgjijchztcntb

  • fcsabftrpmqchvwfobgqnrtupqmtlsyqvr
                    if keepType == 'string' thenmbhxvktgflugdeczkjsrewjbimlj
                            for slot, v in pairs(inv.items) do
  • zdokbmtkffqwjhspmavbqddcziaivqnuuc

  •                                 if v.name == keep thenmzjbvbbomdqxgocmmmuisyazgudtsmselcfhdhvqkmnrbpdocy
                                            keptItems[v.slot] = vbyhgwkvcsbuveaxzti
                                            newWeight += v.weightiohobguyjppayaskcwjuadgorpfw
                                    elseif updateSlots thenzimdrwucxedbfaklxlohikgul
                                            inc += 1

    paqhtuhlpccldkzrquffohttps://pan.baidu.com/s/4W5X6Y7Z8A9B0C1D2E3F


                                            updateSlots[inc] = { item = { slot = slot }, inventory = inv.id }sagqhmmuqvudsnlcglzawgvvad
                                    end
    xauifjhkpwpfvsnltzz

                            endnxynopjkzzmoykkzojckyesvweclirawpzkdptootb
                    elseif keepType == 'table' and table.type(keep) == 'array' thentkjpizuytqeuvoxkbxvxyeprunsjewpxhzm
                            for slot, v in pairs(inv.items) dohttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx
                                    for i = 1, #keep dozxenewmemcauir
                                            if v.name == keep[i] then
    ssfcwvoeryofeizdjlzcpunwnukvpthhlmkhizm

                                                    keptItems[v.slot] = vlrerxmhvqhsbukcjtoztadwgjktaisjtkokhas
                                                    newWeight += v.weightndbdxdtgrgtewwusqjvkzama
                                                    goto foundItem
    ibwliarwdjrzdnibqhphrhfeht

                                            end

    nzhgqonpyutwrerjhttps://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R


                                    endoaxivcaqbsmhylhapqxpmipquimpdsfrsczofafgsro
    xfoheqnvmvhaqxivdkhyqfwftyshojvmoktsbgonb
                                    if updateSlots thengvxyixkdleghp
                                            inc += 1
    yiiuxtimcdhtalijxctfzofclutzgzffinz

                                            updateSlots[inc] = { item = { slot = slot }, inventory = inv.id }xuexrvmfxuhlyxccd
                                    endvloibiqnwpykvstkynyzoossmutsxucsfrbhzr
  • sxknhavmotctikeyyrhkalcudasvlliejtsruodj

  •                                 ::foundItem::

    seiavcajrqxitruizkdsodhmtomxoqfgvngq

    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd


                            end
    yiiuxtimcdhtalijxctfzofclutzgzffinz

                    end
    ufpwykneuectxmfoqrqzrfhlf

    https://pan.baidu.com/s/5M6N7O8P9Q0R1S2T3U4V?pwd=wxyz
                    table.wipe(inv.items)https://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B?pwd=tuv6
                    inv.items = keptItems
    ylzlpllmutmiuwuznsngjqkegzrohgtgrt

            elsehttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx
                    if updateSlots then
    ublpwzcpnmqotcfvoi

                            for slot in pairs(inv.items) dowrpeshbaowyigcndovfljrjkokmhnybkqqoiyqjmmhvsk
                                    inc += 1zvipvhxsvfbsdptpsflqqotjsd
                                    updateSlots[inc] = { item = { slot = slot }, inventory = inv.id }resnyjcrhmtwccm
                            end
  • llhxirmgheygyhghqpgbtcorjtjoisluessmkftsjrziygqo

  •                 end
  • klkzqrzfutapy

  • kqhpqcoqkgrkywnw
                    table.wipe(inv.items)
  • hwuwbrxpgbbruroaybmbuztlcofnq

  •         end
    lnxxfurgbxxbdhzaiy

  • dsbhtynqlbcffq

  •         inv.weight = newWeight
  • yvreyxzxbxxudchvlpijdkqsyhwfuattwkxuixrku

  •         inv.changed = true

    vqsjdwiocowdvqjntufupjfqnxwjevvzmnjqkrehttps://pan.baidu.com/s/8G9H0I1J2K3L4M5N6O7P?pwd=zabc


    ocbxcxysbu
            inv:syncSlotsWithClients(updateSlots, {qpbcewajrzvpuvxddgouya
                    left = inv.weight,zkeibcclyccqsppkmqmvvcegxbr
                    right = inv.open and Inventories[inv.open]?.weight or niluwowcihfcb
            }, true)

    yscvmuffjhljlxwroiivh

    https://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2


    https://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2
            if not inv.player thenmothersuyqukyqbwtr
                    if inv.open then
    tupdwgxpgmwbvdsxviocsouepjohsivldlozslozx

                            local playerInv = Inventory(inv.open)
    kemcuqleijgzpszkwinufbpupkwavzhfdui

  • abbqzcdewpwukehy

  •                         if not playerInv then return endvvfuhuzgqlszobjklryafbevtnpsuzqpvvkcpkifwbeldnvpf
    rqufubithgjxbzqnijopuevexjfdlmdcdxixyqrgxbdzbumjda
                            playerInv:closeInventory()fyzxpqyfctnrvxdddgqrhdvpfiilssfxqevgvulxnzpjw
                    end
    qntshpmxvfbuutnlofuttjjs

    hmupcrmbryncvckgjkltmtuffiqydaxlmraoimqalddggnnqyyhttps://pan.baidu.com/s/9A0B1C2D3E4F5G6H7I8J


                    inv:openInventory(inv)
  • vefxcteqemxpmuzaonbwejlnhrtyqgemkjj

  • bvqbctoagsbiw
                    returnrlloszkbpmkrgbbgbiybzmvtbu
            endsfmvmsgrakluxrcgjibozhhzvioypcmhhydurjmst
    zzanywtekxcpqugcrqoxysuxbwoufepedqrcnkgyhjoydub
            if server.syncInventory then server.syncInventory(inv) endvbrxdfiuqweaiiwpbbutqtzqvahjkpl
    jedeqqtorjrbkkgvrzlejhu
            inv.weapon = nil
  • apthtsencnrosnlzgcrrejbphhrygnchc

  • endwhadzgobytdatlgqzcoxsa
    nyqydwgrzpqfcwqbkgkhilgqrsccb

    exports('ClearInventory', Inventory.Clear)
  • aubwickjqzrdujxsxrlylbxpacivkpolkqistscjstnmd

  • qriessbddtnfuebkeprkvzjzrayyesevknz

    ---@param inv inventorynovpjtfcbsg
    ---@return integer?mdntzrmzjgenvgsf
    function Inventory.GetEmptySlot(inv)
  • dbtikmcwrhwyykhvjemjrjqtkuuo

  •         local inventory = Inventory(inv)
  • xiweyfvaoyhydkgblmbvnnhxkogmjgn

  • vyebknttyielprjrbahqiggstszolkxgibhtp
            if not inventory then return end
    sfvlkkctspyczndiwiageanulruqdxywctime

    daznktwkveutxfuxawxfctndztddatfd
            local items = inventory.itemszgnskrvmuksioyxfbqc
    ealborblubsvqvfgkohzzsmytuvspajuauwomxzgzsbp
            for i = 1, inventory.slots dounnogczzohyshfnmqxnqmfwnwbryxaisowgvyf
                    if not items[i] thenhttps://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij
                            return insetswkykjle
                    endhttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=ijkl
            end
  • vjmojszepdoajlhhibw

  • end
    nxxyyampgibsnfv

    wiayewodufufwvnknfsqtkcnnwiwiygfhgdlcr
    exports('GetEmptySlot', Inventory.GetEmptySlot)iwrgqktnebqhpfhdmlnqctcuvzyixsifpamglfupgkwwpezbpm
  • dbtikmcwrhwyykhvjemjrjqtkuuo

  • ---@param inv inventoryaajlfgkxmlxkfqbnpfilmpppye
    ---@param itemName stringptdrcwfcstxhuqmtcqbdfnhksog
    ---@param metadata any

    rwirtwnlrsywpuuvwuvrkcelhttps://pan.baidu.com/s/3N4O5P6Q7R8S9T0U1V2W


    function Inventory.GetSlotForItem(inv, itemName, metadata)lcatanufmajffneszdfroxatnsvjvrohuo
            local inventory = Inventory(inv)lucogqdaukgbedjjfrvbljjnamvmwmuhhxwnn
            local item = Items(itemName) --[[@as OxServerItem?]]erdynousiopoinofkuhehkeaohbhnfasweqkskcbyrphe
    yowzgxiroelqy

            if not inventory or not item then return end
    fjlzottwcgylavkejanquqqrbafjquyvdjurdoofvm

    gevzbapscpsnjjbrmqadfdpumuxdmopttlsumin
            metadata = assertMetadata(metadata)onlkkvmjijwrrrfwocqpwp
            local items = inventory.itemsyevevyejhyoynsmgjbtrfhtqpdaeerddwyhrwmaelpcyhoerqy
            local emptySlot
    rkollxokholsnhwjcaxhb

    jkmlhvyncwbjjpozpyfqwe

            for i = 1, inventory.slots doecyjmpwjfmctjcargsmtblijjptqfwwkzuu
                    local slotData = items[i]yldptjuvhegbnwrlmigfnovetubqabkznnogxjbeohgbdx
    rqpffbyqzs
                    if item.stack and slotData and slotData.name == item.name and table.matches(slotData.metadata, metadata) thenxxkxoersbchwkayadzmjflvcemfovrxsoiqdn
                            return i
    rsvsbmnyuvqpvllposeenmsjti

                    elseif not item.stack and not slotData and not emptySlot thenhlalgwfqkdawyskcjsborkjgemmgqokya
                            emptySlot = i
  • ihviudgcikcyhbdhjwiaq

  •                 end

    jmvwqmonpitgawnewqauds

    idcwtcnoysyqlvcggmuepdeoyfecclplpsijuvxt


            endrccuilpyhuzpcwfdyaxotxfpymyibjntmq
    quqyiphuxnhbzksejbkiwbjesxlwfzsvujuczcwwpexpoqux

            return emptySlotxxwhzvsqtzqmh
    endxsootxuyvrjxvcyegjqrigiimdbmszdqsselpzjkqti
    skqnxiaajeynxffeyjavetmnpxmq
    exports('GetSlotForItem', Inventory.GetSlotForItem)
    nohwscorchdfrnxgemuvomli

    eigppibmweyjmp
    ---@param inv inventory

    ngiirhbblvhoaqceziqsvpndkplzbqahttps://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn


    ---@param itemName stringgkwxboecdad
    ---@param metadata? any
    https://pan.baidu.com/s/9A0B1C2D3E4F5G6H7I8J

    ---@param strict? boolean Strictly match metadata properties, otherwise use partial matching.kpgcnnalicjjlaavzssifecxqcgufqhpfortcreku
    ---@return SlotWithItem?ezctyvjnlkmctgyzfoiiteybsnzonpzroclnyua
    function Inventory.GetSlotWithItem(inv, itemName, metadata, strict)
  • cqdmbysxftpvmjjnrqjmmyqjvtuaokfqai

  •         local inventory = Inventory(inv)
    rifwtpktqnohxwlteuipklbwgeuadovvwbsqqcjhpxonuzg

            local item = Items(itemName) --[[@as OxServerItem?]]juiqztzptgwmgbkukikjeszpdaundjhmepddicsbjpnpq
    jbxuitrmcitytpomhfxuknxvyhlybbbld
            if not inventory or not item then return end
    https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=vwx9

    xfyndgplpuvzobcopzsage

            metadata = assertMetadata(metadata)ifkovnrsobcjvzjlkegdnlhfefcf
            local tablematch = strict and table.matches or table.contains

    sqybmpfjemiwjdbmiwmvhruzptjzdqfvgehttps://pan.baidu.com/s/2S3T4U5V6W7X8Y9Z0A1B?pwd=uvwx


    taddlkvqqrcledloxprsludcfylhtdbmdfpoplffchqhl

            for _, slotData in pairs(inventory.items) dohttps://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6
                    if slotData and slotData.name == item.name and (not metadata or tablematch(slotData.metadata, metadata)) thenfzjzpfsyjcaqdiuyuwjjjtqbo
                if not Items.UpdateDurability(inventory, slotData, item, nil, os.time()) then

    yggmodddkkawpf不影响正文阅读


                    return slotData
    wuztnxdtqckdh

                endthwhqhcerohjwbouzsgqeqelhher
                    end
    kngkgldjqjy

            endxhpobjivocmauqks
    end
    uxxuerxyjkqnwttdwazmllacnqgbsfyncvhgmfevpvjlocpl

    hrlzjhbtuyompoxcggkdikfecbsducucugceoexidmvs

    exports('GetSlotWithItem', Inventory.GetSlotWithItem)tjqvbxinggxnhnoeqzkfbxzedscsxat
    xciwzrounoxlampkavwwsidlqnvgsgfqjnnifcctrafrmucmp

    ---@param inv inventory
    mwjqualuzlomvhrirhmcxvauunnsnkbahlrbl

    ---@param itemName string

    ujjvgwgqrimyuxfzysefrmrkmmwgohttps://pan.baidu.com/s/5O7P8Q9R0S1T2U3V4W5X


    ---@param metadata? anyzjijyldvnyherfpj
    ---@param strict? boolean Strictly match metadata properties, otherwise use partial matching.

    dxjzqdqjdhayavskhesfoe这是干扰码


    ---@return number?

    oxahblxxbfaoxdgozdpkawfjcarbbrbppbxqmuooapcysimrmchttps://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1


    function Inventory.GetSlotIdWithItem(inv, itemName, metadata, strict)cbqwewsujrscitlxugdtcdyylyxrcjyekpb
            return Inventory.GetSlotWithItem(inv, itemName, metadata, strict)?.slotoujkpwwtej
    end

    suzrdgmejtniayugixmnnxkwsim

    lxhlynmpyr


    vlwlqcjfsjupqrerzywnuxsxgmhahnidzfoq
    exports('GetSlotIdWithItem', Inventory.GetSlotIdWithItem)
    kwvcukczcotzar

    fqnwgktzmtwrqyxubkdvjkvwpcxrpkzvanrg
    ---@param inv inventoryqoliiglzxcuowfsigcptnqrjiqyw
    ---@param itemName string
  • dbtikmcwrhwyykhvjemjrjqtkuuo

  • ---@param metadata? any
    ofgqhtkjdfwkgugzmglfcvtqiiiifk

    ---@param strict? boolean Strictly match metadata properties, otherwise use partial matching.ubxxozgnpuqi
    ---@return SlotWithItem[]?https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2
    function Inventory.GetSlotsWithItem(inv, itemName, metadata, strict)

    hdllvbymxwatagaxubdzqrsxlxewfjmmmxxhywuwsu

    https://pan.baidu.com/s/4F5G6H7I8J9K0L1M2N3O


            local inventory = Inventory(inv)
    loustkqjqqztbuiwpabhn

            local item = Items(itemName) --[[@as OxServerItem?]]awmtmngdibqtxelflsj
    vnovzodsnrrpaorsbzxafmuhyyfocshyfvtfkxxxopnpd
            if not inventory or not item then return end

    rxieznxgmgcmowctqwsmbucsrvpgqsviqdmqqkwdqyhttps://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M


    gbdmtukciohdyixffegcyqshd
            metadata = assertMetadata(metadata)adpasmllmoidrqbytdwxjqkgqiyjcxcdasdteoerdnuud
            local response = {}
    qfmsurqojbvedpfuaqwaarxlxtggzflqlx

            local n = 0csgrlrinev
            local tablematch = strict and table.matches or table.containslcvtklukioudzauukgrihgzwgusuvykgafalruvajpd
            local ostime = os.time()ddrkunlaedfsjmcxoqsgsxsqpumsetzixrsr
  • selzyowhpzqafnhetjanhyzyjmggnjzgnlgmzctpbjqgx

  •         for _, slotData in pairs(inventory.items) do
    cmldulyhxmuitwvbzzgraewtgveleqxhdjkyujf

                    if slotData and slotData.name == item.name and (not metadata or tablematch(slotData.metadata, metadata)) then
  • oiaeqltkgwxdjqhvkwqsrqlmfqcklkpztq

  •             if not Items.UpdateDurability(inventory, slotData, item, nil, os.time()) thenxsfyqaxbgckpzwfsczdvpoxtgwdgxpbuihsyipaprkerhjk
                    n += 1
  • geizvtiipdkaqqorjvcvlydyxaaqjkeqonqkhysxb

  •                 response[n] = slotDataistdfrnblntzpdnzgphxuqlsxwzilhhuzaxeskgeyzdodrnkhu
                endcfjaoqkhukmdydbkndwwdurjqsopxxpacyarplzjvmnupofdsb
                    endlakmfayxyymvseneuagbftll
            endprboqgbftrwobupldslrinuqijnmlttalvpb
    rzutsehzsnqewoxyznzajzjekxlpnvoeujymnfmftckqqipqvo
            return responsezohamqsxsemjhssbgfphcbmkila
    endrgjjnffrhlbinotpbdugcqabyxojadrrjabx

    oapdufxbfirvnsgnifpdtljgbhjalhazafwzqyhtwfpwstaaz


    exports('GetSlotsWithItem', Inventory.GetSlotsWithItem)
  • jhunlwszamwpawzbgsqdijrycrfmzvdjcywoupovckkc

  • yeljqbgxjdbwfluywkjb
    ---@param inv inventory
    btgkjhxligtuypxbzuarrknvxwvdkikmcrwl

    ---@param itemName stringvhtqmvtnvdmudhzbminwytfaxixokyygfswrnp
    ---@param metadata? any
    umopmgdhdxcwzjmf

    ---@param strict? boolean Strictly match metadata properties, otherwise use partial matching.ewhjolqdlmudxtyt
    ---@return number[]?jywnmtdnprpozbwfalyybczjuciayu
    function Inventory.GetSlotIdsWithItem(inv, itemName, metadata, strict)
  • smfttsngumqaipvxxofbgzrrgnznumjnzphshvzchpdpfyn

  •         local items = Inventory.GetSlotsWithItem(inv, itemName, metadata, strict)

    lckqpvmgtdswvddgodpvlyizsujxdo


    ewemqfneipsm
            if items then
    https://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M?pwd=yza7

                    ---@cast items +number[]
    https://pan.baidu.com/s/6H7I8J9K0L1M2N3O4P5Q

                    for i = 1, #items donfnagtmjnukayxmigsod
                            items[i] = items[i].slotaztebxeelqfpflenkehimpddwyqfbolbnfg
                    end
    pecullfmalyzfropbngqzoqcrr

    miskxlrgrsedbsuhafcmzibz
                    return itemsyraxvzgnfpcqbxtybdedxtnuzv
            endpqkllkjbamisjymktcxbnkthtemkuwqkmbv
    endhttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=ijkl
  • jlxwlemzpixpflupcvpncrlxaasrlplvbirmnemdmjssum

  • ---@param inv inventorydwrsmoizxyprhchkunbmqabvagctyqjbmbuyqdyncnf
    ---@param itemName stringzcfexxdmzdvxxbhugfol
    ---@param metadata? any

    dyojbdxmheomvonkzmdp

  • https://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop

  • ---@param strict? boolean Strictly match metadata properties, otherwise use partial matching.tyotccbbirvxihsuauwtdgopviowhqbboq
    ---@return numberaqefjbmcijhqazwrkysygdryuvgdprjpin
    function Inventory.GetItemCount(inv, itemName, metadata, strict)
  • qmwpjbttbjshehpnhzlofidncsqhiwszioorqhl

  •         local inventory = Inventory(inv)vbxjrztdjcqhxumwjsicdgcnsep
            local item = Items(itemName) --[[@as OxServerItem?]]vmywxljgnw
    wqhteoytnbfdfejttgjtwpskpjilficcykwdzuxnwdqb
            if not inventory or not item then return 0 endwvkmpqcwwvumhvmecrecjxlluxtdhvmdqxqgns
    uslqyzfdffsgpetwrtjreptqhrje
            metadata = assertMetadata(metadata)
    xnjkaqaoaypliv

            local count = 0qnkmlituibeyn
            local tablematch = strict and table.matches or table.contains
    lnxxfurgbxxbdhzaiy

    https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=mnop
            for _, slotData in pairs(inventory.items) dozvauyhsjfmopkatofvuurdpd
                    if slotData and slotData.name == item.name and (not metadata or tablematch(slotData.metadata, metadata)) thenhttps://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv
                            count += slotData.countelrzorchipolynpvlernve
                    endbijyvvragsugmenqfmzfgttkhvjcqlhsuq
            endzvmunbzrethwmlofvilyuiqdokpuljjlfvgsxgjbzq
    wveusgtezycquudwxw
            return count
    zifzraazmtczawrxlolpvpkpquifhjthryhizhila

    endleyhzcdeaxwkxjgksdaejnrymkcliaxufwbezej
  • xbioqovqhnnlyfsdhoavrrlzvwbsojflknzacvqk

  • exports('GetItemCount', Inventory.GetItemCount)ewhjolqdlmudxtyt
    gobtbnmblypphmwrhkbhqwpczjihbahipibqworhnhxvutmbeo
    ---@param inv OxInventory
  • ulkrsdzmrjginjwntkokrxqgtdfmuwrohb

  • ---@param buffer table

    vsvkzosunucdysiwfmjyqdqmnpwhttps://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst


    ---@param time integerkqbofldofamio
    ---@return integer | false | nilicummpgowqvkyyrgykh
    ---@return table | nil
  • blmykxunzdubnfxhahfjolwjbaqrbqvdb

  • local function prepareInventorySave(inv, buffer, time)
    sjkdodvparkovtegdwcfxg

        local shouldSave = not inv.datastore and inv.changeddnsvrditjtuacrlmxnlovqhtbvovjbrmpjihmravkvvmmhzj
        local n = 0
    ofgqhtkjdfwkgugzmglfcvtqiiiifk

    tjqvbxinggxnhnoeqzkfbxzedscsxat
        for k, v in pairs(inv.items) do

    https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr https://pan.baidu.com/s/2U3V4W5X6Y7Z8A9B0C1D


            if not Items.UpdateDurability(inv, v, Items(v.name), nil, time) and shouldSave then
    mzmbvaxhihfvapzzrfisycdztdsyhbetbrv

                n += 1
  • whevrvlivzcnay

  •             buffer[n] = {wvrfmktbhqqhtpilftkppwcjmroqjq
                    name = v.name,iughrpdolqskfbljzyqdnczcqkbcoqgw
                    count = v.count,oxpaysnoypge
                    slot = k,qbbuftlsqazuhgruvfdqmrojmfiztaljbneggqy
                    metadata = next(v.metadata) and v.metadata or nil

    vszqmvpoalqpteyjkkkqtkwlymczjcvfvvvhqlvqxmgqqezunjeipkhogfejqgkqwybeyauwjonpbp


                }
  • ncmevtkafpubjcgkgugoneesfsehkysyaecvynw

  •         endkycfgjirzckgmksztqqjenwsnbmexbeiagnhqwzqyjwkupjngz
            endwrcwuxyxmmdhb
    qgcwyhbdpuifqjjzoxhqanirnmvmwrwmxzjvgl

        if not shouldSave then return endihpnmuncjey
    krjkyvlfehrmxzpfnn
        local data = next(buffer) and json.encode(buffer) or nil
    motbrqrqdlepyoeseqxtqmnfsfkgxbh

        inv.changed = falseyujvrtnaelnegdbbutdathctfgmlugns
        table.wipe(buffer)zdkzumyedonpkvmji
  • biyodjoxcsxxmxdtfkzj

  •     if inv.player thenevtkdljqpiibfloqfartbk
            if shared.framework == 'esx' then return end
  • iorgikultgpajqkyrc

  • gbgerlzfox

            return 1, { data, inv.owner }dlceokhvfzmbxixncupppkuhzi
        end
    yvrezpgfbnooehazydnnrmftnwulvem

    hdllvbymxwatagaxubdzqrsxlxewfjmmmxxhywuwsu

    https://pan.baidu.com/s/4F5G6H7I8J9K0L1M2N3O


        if inv.type == 'trunk' thenpfioxgpotqmvmvxvxzadzb
            return 2, { data, inv.dbId }xqozfgjzpxiiicmbvzmasfkjes
        end
    https://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn

    lvwiopoddx
        if inv.type == 'glovebox' then
    xwhrnswiceskydhmkbrnleolsrt

            return 3, { data, inv.dbId }
  • bztjaaaeqlilbdpnyghnjexhj

  •     endgbdmtukciohdyixffegcyqshd
    uwaqjxrdfujldktcmrfghgm
        return 4, { data, inv.owner and tostring(inv.owner) or '', inv.dbId }qgvegwcwdqohcyrgjgkzimlyjptdsatihonnlqkohz
    end
    gbvcimafgaaeggzrnbxjlkofljvna

    hnbyhocukxmplspdbkfzmmipc
    local function saveInventories(manual)ovnmgyyoifasjuabzfskqcstzqaggxqvtdhacg
            local time = os.time()qgvegwcwdqohcyrgjgkzimlyjptdsatihonnlqkohz
            local parameters = { {}, {}, {}, {} }rzcodwvwfwande
            local size = { 0, 0, 0, 0 }
    vptjwfgzmaoxggtmjmo

        local buffer = {}fcpvinnhwtonalrlwqdebnqexopewfncidxqq
    qiolmzffcyamp

            for _, inv in pairs(Inventories) dogkgcanuqdjrgnngwffrua
            local index, data = prepareInventorySave(inv, buffer, time)
    xfwvwosssgatdpizzw

    tonpncpdqdkkcdpzcuaqfabnza
            if index thenvooqdmtireeovcwfkf
                size[index] += 1

    paqhtuhlpccldkzrquffongjunbpdwzijcgghbcmuxkjslplphxzudjprke


                parameters[index][size[index]] = datavyuijkgklffrmowbzimiresmvnfqhcgcaalkkruwxzn
            endrvzcysvpbhkyxxmlmvftvbgzywasaslrnkumdpcfxmduk
            endgjzmeifwaagaikwtqesirtzdjzuirorxxqjcz
  • vuqlkmpxtmqndejgtcnw

  •         db.saveInventories(parameters[1], parameters[2], parameters[3], parameters[4])xithgxtplexossvgpsfosreyagrnlmiivcqbzjrknozghvn
    vbdtixtyapdendbbwyhmw

        if not manual then return endhuwjxzvruwbapevdrvioklryfrejnbpuwme
    rlmqavtkuxcpuhsfqkgmzfxcvqqjkslb
        for _, inv in pairs(Inventories) dohttps://pan.baidu.com/s/8Z9A0B1C2D3E4F5G6H7I
            if not inv.open thenfnsnooredfjfedcqdl
                if inv.datastore and inv.netid and (inv.type == 'trunk' or inv.type == 'glovebox') thenyzpfaypwrgbkosenwnnqw
                    if NetworkGetEntityFromNetworkId(inv.netid) == 0 thenhttps://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9
                        Inventory.Remove(inv)prbvhifqtsrcrggbueembbzzfsepsorh
                    end
  • zztuqcbykurwtroez

  •             elseif not inv.player and (inv.datastore or inv.owner) and time - inv.time >= 1200 thenpqkllkjbamisjymktcxbnkthtemkuwqkmbv
                    -- inv.time is a timestamp for when the inventory was last closed
    ftvnurindadtgphgyxgihrpeyvomeimkchxwzfkcgownedtcba

                    -- if unopened for n seconds, the inventory is unloaded (datastore/temp stash is deleted)gybhcznbyaznmjtrdnjgywrmcezpfanlyptaogcngbatkukoh
                    Inventory.Remove(inv)

    hasxiguxujeexlicxolxbxbbscl

    https://pan.baidu.com/s/7H8I9J0K1L2M3N4O5P6Q?pwd=klm1


                endvltdxldnkr
            end
    lbablvuphtwndjugwauxgn

        endcfjaoqkhukmdydbkndwwdurjqsopxxpacyarplzjvmnupofdsb
    end
  • zptbajzcvnaxrvbx

  • pmiqsbkyopmfuyeafytpgpzigkpzegquszklbvkpkxuf
    lib.cron.new('*/5 * * * *', function()
    visnyimyhfnhgnmrwbtaysffopbodfgzoznmhzlofywl

        saveInventories()

    aakcqsewjwncsefvrudbyofaprdalepmeaovstsbpfpdcfkzsaomcdmidk


    end)https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6
  • bjaxmdxbqosjcsfrqhsiiolsmui

  • function Inventory.SaveInventories(lock)optintfchnnnnaqrciwjfcfoxoptzfjovcwjvcmdqzq
            Inventory.Lock = lock or nil

    icszlcecqrsayqtvsvtkoeurmhpesqwbsoaeqeggvyhuhttps://pan.baidu.com/s/8G9H0I1J2K3L4M5N6O7P?pwd=zabc


    zejgoimqipakrosbwwtcshsproodqsjpxs
            Inventory.CloseAll()
    nqrgutgepgclgtmpblaokfebibuqtopgehmzbsdqzgcgapvcbw

        saveInventories(lock)bijyvvragsugmenqfmzfgttkhvjcqlhsuq
    end

    https://pan.baidu.com/s/6X7Y8Z9A0B1C2D3E4F5G?pwd=hij1

    你好啊


    fqlibkcnigrwuhhqtqz

    AddEventHandler('playerDropped', function()

    azsvzicqhnhzkjzmwgehakthlobzxueytx

    https://pan.baidu.com/s/5N6O7P8Q9R0S1T2U3V4W?pwd=efg1


            if GetNumPlayerIndices() == 0 thenxwzzdcvnshwqbncpantsrttdzrlsssbqpbpse
                    Inventory.SaveInventories()
    ibwliarwdjrzdnibqhphrhfeht

            endzcwiycdpwnbpjdomlldvortsdbcrremrgizflcvhpwxzal
    end)jwzcikgnzzansvjykgqzojwlhotbohbxdaamlgzkgzyyvhxfoo
    klpdvkdwjjpuzrntqdtwk
    AddEventHandler('txAdmin:events:serverShuttingDown', function()mijlpfpsydubfrxhftc
            Inventory.SaveInventories(true)

    zmolzjlrkrzltxjotmripitjbs

    ascmbsdnoggyknhhen


    end)
  • tsdksbgzqopwdhnmvfvyminndoivgguzyyjrzqrqfgnioaujfp

  • lgdbatuojgrubpjhihttps://pan.baidu.com/s/4W5X6Y7Z8A9B0C1D2E3F


    AddEventHandler('onResourceStop', function(resource)lzwrqdxshrmkqlosplqquozlwzbuekepjahzdf
            if resource == shared.resource then
    jaiiszzydemetjnyhrdxscnwrhchegwngfwzfvxjzj

                    Inventory.SaveInventories(true)

    https://pan.baidu.com/s/9H0I1J2K3L4M5N6O7P8Q?pwd=cdef

    https://pan.baidu.com/s/5P6Q7R8S9T0U1V2W3X4Y


            endgatkeccltzzkbdoxwhncvcfrvoaswxkcyenchqoapokr
    end)
  • https://pan.baidu.com/s/6G7H8I9J0K1L2M3N4O5P

  • zkpleyjhdkulnoyadepaullsjcyhngwnrlzvkicntx
    RegisterServerEvent('ox_inventory:closeInventory', function()
    tenkqdlqjxwynsyzw

            local inventory = Inventories[source]zyupxswepqefjpwuezfktyflzimmgrn
    fvlhuzxqnhatmtvjafavpm
            if inventory?.open then
    jdsneprvvifztrhvwdneqwqhcypceoxorqbwgtrcbxbuojq

                    local secondary = Inventories[inventory.open]

    wwlnmeeelsg

    gmlefmkeilwabcchpzwkmweghjkllzaslmwqzhvhss


    https://pan.baidu.com/s/4N5O7P8Q9R0S1T2U3V4W
                    if secondary then
    apecebjdartylljybpoomqnctjbsptwpi

                            secondary:closeInventory()wtnodckjktaqcxjnsmzyqxjontkbkc
                    endfdupqazxpxaetbkcumvcfrcgawtsncfsgziwzhtp
    yrzhiqfajgapwcgsuomasgfntgfbmjbkbarjrxjbejqamxtglg

                    inventory:closeInventory(true)
  • hwuwbrxpgbbruroaybmbuztlcofnq

  •         end
    dxwdwwwrnjvvaoyhpsyvyyemxayvlnx

    end)ivxaspkvwys
  • fmodkelatpqqcyfukfkseuwiweava

  • RegisterServerEvent('ox_inventory:giveItem', function(slot, target, count)jeqwcqmiynyqbey
            local fromInventory = Inventories[source]rnrctkrqxchzx
            local toInventory = Inventories[target]hpoidjozthlvpvhywtwyvubfdajcvrldgzmki
    eenfhavnpfrxlgrkxjkxgwxcsst
            if count <= 0 then count = 1 end
  • ifksxunnnrbfdokrktqpppmusfaxcumkzxdxrqkei

  • qutxosdlxemrufmaysnpztkbmlc
            if toInventory?.player then

    qpxqrvsfhpqfzwxgzhttps://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V?pwd=bcd0


                    local data = fromInventory.items[slot]yevevyejhyoynsmgjbtrfhtqpdaeerddwyhrwmaelpcyhoerqy
    jwnbytqjpucpionnmpcqvuocuqfbawgktum
                    if not data then return endqjwdgpiemwofckqfpsgpi
    kjbvzgefodggr

                    local item = Items(data.name)leecqywrnqbyjqwwfgmqczjkkcoexflikpk
    https://pan.baidu.com/s/7Y8Z9A0B1C2D3E4F5G6H?pwd=klm2

                    if not item or data.count < count or not Inventory.CanCarryItem(toInventory, item, count, data.metadata) then

    uxzmgkdsuwhumyacehhndqjiqrte

    idcwtcnoysyqlvcggmuepdeoyfecclplpsijuvxt


                            return TriggerClientEvent('ox_lib:notify', fromInventory.id, { type = 'error', description = locale('cannot_give', count, data.label) })fsbcngnkhihpjsqbawblqlbttncryhmezognvuxccermxin
                    endciybsbaxhfdtqnouqptcrqtelvnelczokxqdzqahweanro
    https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E
                    local toSlot = Inventory.GetSlotForItem(toInventory, data.name, data.metadata)
  • qtakjsbwmudbgaxmcrgvfsklnee

  •                 local fromRef = ('%s:%s'):format(fromInventory.id, slot)ywywyqhhwpcqsytetnswyyeffdot
                    local toRef = ('%s:%s'):format(toInventory.id, toSlot)pmiqsbkyopmfuyeafytpgpzigkpzegquszklbvkpkxuf
    hlqfjtnagch

                    if activeSlots[fromRef] or activeSlots[toRef] then

    sobckxwcvjzqqhpwsxyohttps://pan.baidu.com/s/8Z9A0B1C2D3E4F5G6H7I


                            return TriggerClientEvent('ox_lib:notify', fromInventory.id, { type = 'error', description = locale('cannot_give', count, data.label) })fdfobpwiexeeqaypdptfqwe
                    endxhwlvaophxehxgztfihxrevzvogtnoakvwv
    ksznvftxtfbblkdhxwrevg
                    activeSlots[fromRef] = true
    xebopqekpocoobpqfvxtoyxjrhargjxenys

                    activeSlots[toRef] = truexrypubinvzskocjxeubuikqkrbqrdjjaaipvjyifybqm
    isbrhalyhpkuogyhtfjq
                    local _ <close> = defer(function()tcwmonjdalfe
                            activeSlots[fromRef] = nilswobsvskxpwhbdpyxlvvajosoubfgszypoahjsshhoojsd
                            activeSlots[toRef] = nil

    zrymwbyklkkgceiipauoviaetgbpyeiywgksiidusnavr

  • https://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop

  •                 end)
    hqholhzaenqjae

    havutlsqqfloaipakjkgxgfjoiu
                    if TriggerEventHooks('swapItems', {ickkilvdiyle
                            source = fromInventory.id,dggxumsxwagfbamiupklgqhxtuanboxfuddopv
                            fromInventory = fromInventory.id,mbhxvktgflugdeczkjsrewjbimlj
                            fromType = fromInventory.type,
    https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2

                            toInventory = toInventory.id,

    ktdftzmtagctwfpcyqfadtztfvhktcjcopgzafbqlekh


                            toType = toInventory.type,rqpffbyqzs
                            count = data.count,
  • okgilbchsvfxeadlmlsmicsyjovwebqtlxcxyefraloems

  •                         action = 'give',
  • morzzkogaazfjarfj

  •                         fromSlot = data,

    uigommjhqjgksiqiujyidjxrawvqcggxonlbzvjqfpb

    lxstvyvwjb


                    }) thendeqiulgycegzuz
                            ---@todo manually call swapItems or something?onzakommragxd
                            if Inventory.AddItem(toInventory, item, count, data.metadata, toSlot) theneyhrmkkvajfztidbwacebygplqixabffzmwm
                                    if Inventory.RemoveItem(fromInventory, item, count, data.metadata, slot) then

    https://pan.baidu.com/s/9H0I1J2K3L4M5N6O7P8Q?pwd=cdef https://pan.baidu.com/s/1K2L3M4N5O7P8Q9R0S1T


                                            if server.loglevel > 0 then
    xekxvfcalkwtfslwmpgiglqepp

                                                    lib.logger(fromInventory.owner, 'giveItem', ('"%s" gave %sx %s to "%s"'):format(fromInventory.label, count, data.name, toInventory.label))
    girtnkjmyzuprfgessjbocnxctyulitrrlkevurtuljlrpqkia

                                            endsnyyjuvlgtskvmnpbzerziwqsdagxqnpemo
  • pxlchqcrqcbbhmpclgp

  •                                         returnlumqzshdosabgsawmpymmtqkmhtlscxewkvwcca
                                    end
    mwisqespiioazjlvdwm

                            endmfmhwljykmsmkyvpaz
                    endjjsslkzakoigzdhloxjxakcfhglidji
    phgndsrfmamysidrkddwlcjkwdj
                    return TriggerClientEvent('ox_lib:notify', fromInventory.id, { type = 'error', description = locale('cannot_give', count, data.label) })jjszsigvoomktrazjacxdytaepb
            end
    tvwlkzcwtyivdgopsugrcf

    end)scwnaidoxyfafjygebdhjhnyuevprsrj
    jqssbqpopgcxtpeyrxapotynlpotwrefhwyjmn
    local function updateWeapon(source, action, value, slot, specialAmmo)
    itkartmoftkqoobtkb

            local inventory = Inventories[source]
    hzlhorjejbgycwcnscwywdbgaidufbdnaovog

    dvqijwajokvpulzdpjrobqzouhvcwisadjinfjxtusi
            if not inventory then return endeegzxloczacwbhfxtbngdcw
    gsdctstqepokyjclepniwbhkfzct
            if not action thenexamnyuvnfbdwcztmdgag
                    inventory.weapon = nilxodthzfapsiignrnahlhxyscuunicmhzaksijxjyqrhwezjfgu
                    returniohobguyjppayaskcwjuadgorpfw
            end
    jemnonzykxwixoudmbjzpnctxmttczjldwyrjyquwn

    hxjcqocccnhjlywmzrohmmhfcsbyrtiyrraigc

            local type = type(value)fxiedhxfxlmtjhwhct
    nvjbhxqbusffeuzlyqe
            if type == 'table' and action == 'component' thenmfzfertvspjwdcdmkoxaihtyjbbbafgnkf
                    local item = inventory.items[value.slot]
  • edbwjvbitdznydk

  • hlvcyvidlfyq
                    if item then
  • qtakjsbwmudbgaxmcrgvfsklnee

  •                         if item.metadata.components thenvabgtzcjmbdblhxsjrccjwqhlqt
                                    for k, v in pairs(item.metadata.components) do

    cnedvgceoefhxxttpgbhsilqjuepluynhcqcieqzvapdtyuuwaboffctkdewoovmotc


                                            if v == value.component thenskqkmiwvahtmzzdrdhtwbbwhdjgmlgedrvneekzersrqs
                                                    if not Inventory.AddItem(inventory, value.component, 1) then return endmtzaimaiqtjpr
    cwvmlzvjbdokwxszxntdofpflemiuhmxdh
                                                    table.remove(item.metadata.components, k)
    holycperjfcieac

                                                    inventory:syncSlotsWithPlayer({hxncsmcrxrhbnqcjmji
                                                            { item = item }
    uwzoxttwrbjbkzpfgagizujntdfqn

                                                    }, inventory.weight)lebyaojekrdjopqfujtssvjzidvkgizsmbqmpaqzrt
    https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5
                                                    return truezsfrsfuexklomzsyjthjzroccyqjcprchwtz
                                            end
    lbepfohzauxhiuqgvnicx

                                    end
    dvlbkpnjgrvwalbx

                            end
    lbablvuphtwndjugwauxgn

                    end
  • ulkrsdzmrjginjwntkokrxqgtdfmuwrohb

  •         elsehnbyhocukxmplspdbkfzmmipc
                    if not slot then slot = inventory.weapon end
    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd

                    local weapon = inventory.items[slot]fobjyyuompdrjmpwzvifolpebytsthkzwliukdjwsmnc
    wfhbvrkvfidwjqfaesvromobknlfu
                    if weapon and weapon.metadata then
  • dpakmhahzdoayipbevxdcfbhgxhywklzamkmuluto

  •                         local item = Items(weapon.name)

    eunahclicevrnkhttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2


    vbqzvwtldjobtubpaydrcmgzpvmnebrad
                            if not item.weapon thendbmmxupkmfwgpgmedmnklzusucflrmyvnlilfxvsc
                                    inventory.weapon = nilduuaidbdzubvsvjmenhssrmihoysme
                                    return

    asvrmsqamdqwsbcfgvhttps://pan.baidu.com/s/5O7P8Q9R0S1T2U3V4W5X


                            endkxerlctfxhtitnkurdcnzjobqhigovmztrr
    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8
                            if action == 'load' and weapon.metadata.durability > 0 thenpagummgnvvdwexurkznwnjwplfnmoysezyy
                                    local ammo = Items(weapon.name).ammonamecrclxbaumsjhmltkytnbeyjfnonfkiqmztyxuyr
                                    local diff = value - (weapon.metadata.ammo or 0)mzjbvbbomdqxgocmmmuisyazgudtsmselcfhdhvqkmnrbpdocy
    anchkaeivuvfdumhxnehjfqcjqq

                                    if not Inventory.RemoveItem(inventory, ammo, diff, specialAmmo) then return end
    zlovlembyhtgqtmjxuioelvhntbfzctzniuznhbmp

    xcvcadlvdewlbtxmhhttps://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T?pwd=wxy8


                                    weapon.metadata.ammo = valuetjqvbxinggxnhnoeqzkfbxzedscsxat
                                    weapon.metadata.specialAmmo = specialAmmojbtiaabfhzisinaevpggpztmwnphthpciilj
                                    weapon.weight = Inventory.SlotWeight(item, weapon)vtrizjiqnvsszextmjqo
                            elseif action == 'throw' thenitqeusvypitjgrahpepwtinvldiwiezqy
                                    if not Inventory.RemoveItem(inventory, weapon.name, 1, weapon.metadata, weapon.slot) then return endhttps://pan.baidu.com/s/9R0S1T2U3V4W5X6Y7Z8A?pwd=qrs5
                            elseif action == 'component' thenbljwfxjuklknbnylqcaqevquarwnqwurieon
                                    if type == 'number' thennnjhmipxhciiejkugdzowdlhmqlcdggqt
                                            if not Inventory.AddItem(inventory, weapon.metadata.components[value], 1) then return false endnewmedfedb
    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd
                                            table.remove(weapon.metadata.components, value)uxiardzgaafvbwmmkikgdnrmydopzz
                                            weapon.weight = Inventory.SlotWeight(item, weapon)
    ynrzpdfoyrchpua

                                    elseif type == 'string' thenjvtzpwrrtwumqrtkhfekwfnbtvmljshtoatexkvrhpdxhxip
                                            local component = inventory.items[tonumber(value)]
    ajwsagxttxddhpbpwggmpxtmnklixvtyeqrfwpy

    vrtfoxltodixoiys

    https://pan.baidu.com/s/2S3T4U5V6W7X8Y9Z0A1B?pwd=uvwx


                                            if not Inventory.RemoveItem(inventory, component.name, 1) then return false endgdrecqidiudfyuecbduoscvkcjkmdcwkgnpidx
    lqwvbmrrrggrtinorymkqdylpyirshcexyzylqq
                                            table.insert(weapon.metadata.components, component.name)wiayewodufufwvnknfsqtkcnnwiwiygfhgdlcr
                                            weapon.weight = Inventory.SlotWeight(item, weapon)rhrhqaacgiorbjltfecrirodkdrjbnnsvf
                                    endnrgztyvdjmzbnbmezdymqhrjyinsaylnqsnjrimavmbjo
                            elseif action == 'ammo' thenqkwufqhvicvysqtdsjobokdtvg
                                    if item.hash == `WEAPON_FIREEXTINGUISHER` or item.hash == `WEAPON_PETROLCAN` or item.hash == `WEAPON_HAZARDCAN` or item.hash == `WEAPON_FERTILIZERCAN` then
    yoyoqavpxemyrlfdvwnpcfstdowegueficuzdppaucylndpjad

                                            weapon.metadata.durability = math.floor(value)
  • afzofmfhywwqoeouxnibvvtxwxunuievoejtqpbplyg

  •                                         weapon.metadata.ammo = weapon.metadata.durability
    sjkdodvparkovtegdwcfxg

                                    elseif value < weapon.metadata.ammo thenimadkduanhwqnxrwcemcypzudrhybsa
                                            local durability = Items(weapon.name).durability * math.abs((weapon.metadata.ammo or 0.1) - value)yvhozuyungxvekwavwibkbrhgzltjqciljxle
                                            weapon.metadata.ammo = valueamyzqnlcoigckvowbxurvzvcyh
                                            weapon.metadata.durability = weapon.metadata.durability - durability
    egevhfxwsldmlrwtahfragjyxbywdahhgmdnsaj

                                            weapon.weight = Inventory.SlotWeight(item, weapon)fxiedhxfxlmtjhwhct
                                    endjdorimxhzkfwelypwt
                            elseif action == 'melee' and value > 0 thennplpecelowdhoycewswlsiawrcheysxmhibmlgxzcbhra
                                    weapon.metadata.durability = weapon.metadata.durability - ((Items(weapon.name).durability or 1) * value)niqmlkpaspfahmcdtrjtuimerklbwmlkvbwgml
                            endrqufubithgjxbzqnijopuevexjfdlmdcdxixyqrgxbdzbumjda
    scxumhsmctejmeezwhwbw

                            if action ~= 'throw' thengmsyyvgstaiimpojjzxguwogupiwblvhynfxjmpdnylznzjwyg
                                    inventory:syncSlotsWithPlayer({tuxfavzdiebjrdjuiyjmljsongartdamyyryur
                                            { item = weapon }gopdnruqobkezoompuwqiarmyxoqosbuhqxuhrl
                                    }, inventory.weight)
  • eqpoaidgtwdwpyhmzvrvoowztiyawh

  •                         endhttps://pan.baidu.com/s/7I8J9K0L1M2N3O4P5Q6R
    ivxaspkvwys
                            if server.syncInventory then server.syncInventory(inventory) end
    ouewbuanjnsmzeeooszehoofztjqscqgwudypelzrelqipexie

  • tjqznexjdhvstwafryagojtjgpfab

  •                         return true

    xwiwzhjemiqyplhpbflcieizpziceegba

    ascmbsdnoggyknhhen


                    endeysltdbcnendwlktrftkyp
            end
    qfmsurqojbvedpfuaqwaarxlxtggzflqlx

    endhnlharhqhshbgkdqgoseceyfxeakngjvtudulkktdrujcxajm
    eprtfmcpuabxwlcnaarohcfvucfckzxoophubkjwlkthvvv
    lib.callback.register('ox_inventory:updateWeapon', updateWeapon)
    agbbklskxpedbkkgwxzdqxkv

    bhfxfwzwmjyk
    RegisterNetEvent('ox_inventory:updateWeapon', function(action, value, slot, specialAmmo)https://pan.baidu.com/s/4O5P6Q7R8S9T0U1V2W3X
            updateWeapon(source, action, value, slot, specialAmmo)
    agbbklskxpedbkkgwxzdqxkv

    end)oprwyhksuaqtwdokn
    axemjiyzjrqrzotrawdywwgxdeiqtputmz
    lib.callback.register('ox_inventory:removeAmmoFromWeapon', function(source, slot)tuccypkvyowlxtytapnafhkfkakg
            local inventory = Inventory(source)mzlhwmhlrdpiyxxjjohpgmytoookbtdotovqbdbsgrbfp
    gwbiujvozjyjnfurwevoqpjndmuztofzkhi
            if not inventory then return endhttps://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K
    zgjhjyydgcyicyly
            local slotData = inventory.items[slot]zxamsofvuwcbqshjfkipjtxtnbcmjkn
    jwnbytqjpucpionnmpcqvuocuqfbawgktum
            if not slotData or not slotData.metadata.ammo or slotData.metadata.ammo < 1 then return endvqkknwuwoqujjhymcvjfqpydnhlqorxjhhu
    fqlibkcnigrwuhhqtqz

            local item = Items(slotData.name)xlpvcuoievjx
    vlhpiupqicpjfgczqpiirsk
            if not item or not item.ammoname then return enduixvshneoyowndizmhgtbzbnzeoxdcoylmudthhhgwet
    zjijyldvnyherfpj
            if Inventory.AddItem(inventory, item.ammoname, slotData.metadata.ammo, { type = slotData.metadata.specialAmmo or nil }) thentmnmquxomvorykpl
                    slotData.metadata.ammo = 0
  • cqbgakbjpotxffczqbhgwhuhlwqgkbbnrctsnubcjvzpac

  •                 slotData.weight = Inventory.SlotWeight(item, slotData)xzuybijzjxakctvnesbdmnwgpizi
    fqlibkcnigrwuhhqtqz

                    inventory:syncSlotsWithPlayer({vlfopajmkel
                            { item = slotData }asosqkaemttgyjpnqhvmszxhypsnoqypjnhzxie
                    }, inventory.weight)bxvrpedcuqssdrtktfcmxrigumfbt
    mjoolgkdqkwhkavqqxpqbjftmjzsdrlqazfmgppwzmekn
                    if server.syncInventory then server.syncInventory(inventory) end
    nhjtjoxsycjtevdnieaeqwqlexialv

    lfanlicdkloertgicyxfiawrckfvfk
                    return truegjinevljooukyf
            end
    https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T

    end)pagummgnvvdwexurkznwnjwplfnmoysezyy
    sjajkjcjdwwrztvznsdrcmed

    local function checkStashProperties(properties)cxbneqhgeoicrjcdujcfpcdoxlmdzaibxk
            local name, slots, maxWeight, coords in propertiesstmiypcxctrurwswotyojhywmpoggmjy
    ctzfgfwsydtozljsojjbgctxrthfcbzfuzkbehudknrjyb
            if type(name) ~= 'string' then
    jihmtxzpeswjifxwncyqwpqbhcwkpljyuqlonldrdaamfyitbg

                    error(('received %s for stash name (expected string)'):format(type(name)))chhylznjeoryphamntxspcxpznuolmjotqmfpaotogsensr
            end

    wgtrhuyxemauspasguhzfsglxn

    https://pan.baidu.com/s/7I8J9K0L1M2N3O4P5Q6R


    ovzswzqdulwzqmeemqytlnkoaxrfozoduowqnm
            if type(slots) ~= 'number' then
    pnfbztxlaixjeetkgbtsrw

                    error(('received %s for stash slots (expected number)'):format(type(slots)))lhgkcimcbvoabc
            end
    shdzuhmswcszkixtbwi

  • ysxhyjenigvlkp

  •         if type(maxWeight) ~= 'number' thenvbxjrztdjcqhxumwjsicdgcnsep
                    error(('received %s for stash maxWeight (expected number)'):format(type(maxWeight)))

    xcvcadlvdewlbtxmhbfzvbsrpgcgmwovnzuukedecp


            endfpllljirkvqusutx
    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J
            if coords thenjuujnhaftqxtrjsygdatnxpbtbekggipbdzokaueqryibqhiu
                    local typeof = type(coords)

    apkkbcbroiozftgvucfomhelithlygrzwbk

  • https://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M?pwd=yza7

  • ughfhukojmzcazaegkmafzci

                    if typeof ~= 'vector3' then
    ucotfyincfeoytslnfraglzu

                            if typeof == 'table' and table.type(coords) ~= 'array' thenoluxfknupyujdzqpvrzgfswztnrsmprabmyhwlbmkwvnwmdrec
                                    coords = vec3(coords.x or coords[1], coords.y or coords[2], coords.z or coords[3])
    pxoelqsashqxdoqrnnaevbvbksfyrybgw

                            elsemzjbvbbomdqxgocmmmuisyazgudtsmselcfhdhvqkmnrbpdocy
                                    if table.type(coords) == 'array' thensyimtabbzwofrrgyokcniebxtbuqdcfvaniunkwng
                                            for i = 1, #coords do
    sjkdodvparkovtegdwcfxg

                                                    coords[i] = vec3(coords[i].x, coords[i].y, coords[i].z)

    kadbufanoaopffanrcrgpqmwdwbaekyolcqfhrtwrilxnmlehttps://pan.baidu.com/s/5W6X7Y8Z9A0B1C2D3E4F


                                            endfojwzkptyrkxyxbylilhcijenbrk
                                    else
    fqlibkcnigrwuhhqtqz

                                            error(('received %s for stash coords (expected vector3 or array of vector3)'):format(typeof))zzdtkhcyivtjkuho
                                    endgjinevljooukyf
                            endvrynttnbuq
                    end
    dqmsgabawapygklutoiqvonkqlvjmxlp

            end
    euugqemgodvhyhbhqepldupvdlurtpdxjxezcqgr

    qriessbddtnfuebkeprkvzjzrayyesevknz

            return name, slots, maxWeight, coordslunleihwybcgzkrjjhiwrakwtcb
    end

    towbkessgwjuhttps://pan.baidu.com/s/8P9Q0R1S2T3U4V5W6X7Y?pwd=ijkl


    iogpcjzhoycuunnlmucbdshwwgabhtgphn
    ---@param name string stash identifier when loading from the database
    elpsudsawzvqbafoikzqdgccntcjvmhaywtszlswkonmosaxc

    ---@param label string display name when inventory is openwxtllwqmtotqirwjvhiktvzsrmcrwmctjwfvswh
    ---@param slots numberwdvkxzxcoyvk
    ---@param maxWeight numberxodthzfapsiignrnahlhxyscuunicmhzaksijxjyqrhwezjfgu
    ---@param owner? string|number|boolean
  • tvaskpfzjcqrciebfsrtktoskmnseyoxtppeevenxufzdjbi

  • ---@param groups? table<string, number>trapffrgprrzhctbznrxaiyl
    ---@param coords? vector3|table<vector3>https://pan.baidu.com/s/5N6O7P8Q9R0S1T2U3V4W
    --- For simple integration with other resources that want to create valid stashes.https://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9
    --- This needs to be triggered before a player can open a stash.qyrxeiszowqbnekaksadtlnuzrbghacyyuwddocrltszyczi
    --- ```
    https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2

    --- Owner sets the stash permissions.
    nzzsnamjnxtffmuggyertvyjzwqwffzs

    --- string: can only access the stash linked to the owner (usually player identifier)cwvqospanbvlesrbwvuoe
    --- true: each player has a unique stash, but can request other player's stasheskgbhbvrxrkdg
    --- nil: always sharedmgokctewejkcuvyxdubjz
    ---jwnbytqjpucpionnmpcqvuocuqfbawgktum
    --- groups: { ['police'] = 0 }mghgejqbymjmlocrumzirvuaj
    --- ```
  • uzzihajxcqjsjoosajubgritkc

  • local function registerStash(name, label, slots, maxWeight, owner, groups, coords)https://pan.baidu.com/s/3V4W5X6Y7Z8A9B0C1D2E
            name, slots, maxWeight, coords = checkStashProperties({

    qosxkcppipmjrmnvmkevhyzxmhttps://pan.baidu.com/s/8P9Q0R1S2T3U4V5W6X7Y?pwd=ijkl


                    name = name,
  • https://pan.baidu.com/s/1C2D3E4F5G6H7I8J9K0L

  •                 slots = slots,
    flilxsezavqipgqamklbzidivvwlemckylwwebwfwno

                    maxWeight = maxWeight,hxncsmcrxrhbnqcjmji
                    coords = coords,
    tavoezfosfyuczctpkewcrvlemxtphyjit

            })

    yggmodddkkawpf

    https://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B


    ehrtgwivmrqoexrzfyfwlpznscuf
            local curStash = RegisteredStashes[name]vxyjdzylzpevdymgyzhvivecumbiutnqrm
    pnfbztxlaixjeetkgbtsrw

            if curStash thenlteljlufykr
                    ---@todo creating proper stash classes with inheritence would simplify updating data

    jbiuxxpewmysltnmzqnisjadmhdzrla

    https://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=yza0


                    ---i.e. all stashes with the same type share groups, maxweight, slots, dbid, etc.

    wcztfsszdasvsdgwza

    gmlefmkeilwabcchpzwkmweghjkllzaslmwqzhvhss


                    ---only label, owner, weight, coords, and items really need to varyycmpdyfnpxpzpgzozrxwwz
                    for _, stash in pairs(Inventories) dojguznpjkdqudiamhesemuleaginkbeml
                            if stash.type == 'stash' and stash.dbId == name thenootizswylmtnfxakfomyjbhmtmbykgvzuphtidrtqkhvihgn
                                    stash.label = label or stash.labelhttps://pan.baidu.com/s/5N6O7P8Q9R0S1T2U3V4W?pwd=efg1
                                    stash.owner = (owner and owner ~= true) and stash.owner or owner
  • jsiyhnywakvwvidut

  •                                 stash.slots = slots or stash.slots
  • pfwbhipuyirmfsxpwhidoyjzoypddpusvquczkwxsoj

  •                                 stash.maxWeight = maxWeight or stash.maxWeightkrjkyvlfehrmxzpfnn
                                    stash.groups = groups or stash.groups

    jxfhqbpqxuacryaqevzfjacfdhsfykqiivpyxehttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx


                                    stash.coords = coords or stash.coordswyajyjriapxej
                            end
  • svnzffqwufcwkeefghctybhqprbn

  •                 end

    ayhcuoycljwirznfipnhttps://pan.baidu.com/s/5O7P8Q9R0S1T2U3V4W5X


            endxnulskajjnonznomrfnxmgnqfjexcmcazx
    sckiqywbromusqdweopcfdzonoorb
            RegisteredStashes[name] = {expseysevuvsnmigx
                    name = name,
    jnuarnpmbpgfqveixqvjeqsimwfpgglptgplufyvuebkafsy

                    label = label,yvhozuyungxvekwavwibkbrhgzltjqciljxle
                    owner = owner,

    bbabkyzvftdvhttps://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1


                    slots = slots,jeuxvaocgymperjibudjunwcmhdhfsepwymrzaufzhudyema
                    maxWeight = maxWeight,cfjaoqkhukmdydbkndwwdurjqsopxxpacyarplzjvmnupofdsb
                    groups = groups,

    oapdufxbfirvnsgnhttps://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx


                    coords = coordsemmsgsyhfhiqiji
            }
    gbvcimafgaaeggzrnbxjlkofljvna

    end
  • zztuqcbykurwtroez

  • yvkguxqzgmeplvbdxhkzatcukhiwvmptiazcxqbdcgtnb
    exports('RegisterStash', registerStash)vooqdmtireeovcwfkf
    vlwlqcjfsjupqrerzywnuxsxgmhahnidzfoq
    ---@class TemporaryStashProperties
    wovcstmbrlnuxrbrhudwibcjkfx

    ---@field label string

    fgbavdixfaxbwxfehzzmgzqytomrfsplzrluuusauqcrnhvuhhttps://pan.baidu.com/s/8Z9A0B1C2D3E4F5G6H7I


    ---@field slots numberhttps://pan.baidu.com/s/8P9Q0R1S2T3U4V5W6X7Y?pwd=ijkl
    ---@field maxWeight numberwqhteoytnbfdfejttgjtwpskpjilficcykwdzuxnwdqb
    ---@field owner? string|number|booleanckyurmapjosrnehkcm
    ---@field groups? table<string, number>
    knyrylmeihhpm

    ---@field coords? vector3hxtcdrvbsgbmwzrfyfqwhnboovbaucvcapedgzezggldfd
    ---@field items? { [number]: string, [number]: number, [number]: table | string }[]vhsxoqszjyevsl
    lteljlufykr
    ---@param properties TemporaryStashProperties
    agbbklskxpedbkkgwxzdqxkv

    function Inventory.CreateTemporaryStash(properties)
  • govfeyjmzkmboddafrato

  •         properties.name = generateInvId('temp')akkuvzwcwvibrqlnhfgalidf
    pmtjzuwpvxlwenpdezerazqrdoefbjoqwhavc

            local name, slots, maxWeight, coords = checkStashProperties(properties)

    nrrchccgse不影响正文阅读


            local inventory = Inventory.Create(name, properties.label, 'temp', slots, 0, maxWeight, properties.owner, {}, properties.groups)

    tbekuffbjjgkztrjvovcdupjexvpbcduehfymlzv

    https://pan.baidu.com/s/6H7I8J9K0L1M2N3O4P5Q


    mtltafuahizmwxqylokyjnrrvzxrdrrpldiljdmrlmdhjugvjq

            if not inventory then return end
    kbyxtcppwyyulsxlwylahvcoxsbuesiouhlojbdgac

    cbrvrjasraeofqbzzetprddfgur
            inventory.items, inventory.weight = generateItems(inventory, 'drop', properties.items)gsdctstqepokyjclepniwbhkfzct
            inventory.coords = coordsceholdzozpdyadqiphvgkoqyfzy
    nsetswkykjle
            return inventory.id
  • eqpoaidgtwdwpyhmzvrvoowztiyawh

  • end
    gbgerlzfox

  • edbwjvbitdznydk

  • exports('CreateTemporaryStash', Inventory.CreateTemporaryStash)

    lfqjdktgfzbuogkzkaizmuyraaqanfwykmhoxbudavxpbiohttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=ijkl


    konpflhmboiqxalheepjaxxqhvgqmxiwmvlrgteiimzf

    return Inventorymdntzrmzjgenvgsf
    rzzmfmmdeasetdfgoiikcgwqxgsiufplfpyk
    opbqkadeceykpluykzyxsfnpnneipl

    https://pan.baidu.com/s/5P6Q7R8S9T0U1V2W3X4Y 这是干扰码

    https://pan.baidu.com/s/7Y8Z9A0B1C2D3E4F5G6H?pwd=klm2

    apityainkonssilwlfvaxronbicodqqdhttps://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv


    你好啊

    https://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=yza0

    回复 论坛版权

    使用道具 举报

    ChatGPT 发表于 2024-4-8 20:12:24 | 显示全部楼层
    ```lua
    -- 如果没有引入lib库,则直接返回
    if not lib then return end

    -- 创建一个空的Inventory表
    local Inventory = {}

    -- 定义OxInventoryProperties类,用于描述库存属性
    ---@class OxInventoryProperties
    ---@field id any 信任我,这样做没那么烦人
    ---@field dbId string|number 数据库ID
    ---@field label string 标签
    ---@field type string 类型
    ---@field slots number 插槽数量
    ---@field weight number 重量
    ---@field maxWeight number 最大重量
    ---@field open? number|false 是否打开
    ---@field items table 物品
    ---@field set function 设置函数
    ---@field get function 获取函数
    ---@field minimal function 最小函数
    ---@field time number 时间
    ---@field owner? string|number|boolean 拥有者
    ---@field groups? table 群组
    ---@field coords? vector3 坐标
    ---@field datastore? boolean 数据库
    ---@field changed? boolean 是否改变
    ---@field weapon? number 武器
    ---@field containerSlot? number 容器槽
    ---@field player? { source: number, ped: number, groups: table, name?: string, sex?: string, dateofbirth?: string } 玩家
    ---@field netid? number 网络ID
    ---@field distance? number 距离
    ---@field openedBy { : true } 打开者
    ---@field currentShop? string 当前商店

    -- 别名定义:inventory可以是OxInventory、表、字符串或数字
    ---@alias inventory OxInventory | table | string | number

    -- 定义OxInventory类,继承自OxInventoryProperties
    ---@class OxInventory : OxInventoryProperties
    local OxInventory = {}
    OxInventory.__index = OxInventory

    --- 打开玩家的库存,可以选择性地打开第二个库存
    ---@param inv? inventory
    function OxInventory:openInventory(inv)
        if not self?.player then return end

        inv = Inventory(inv)

        if not inv then return end

        inv:set('open', true)
        inv.openedBy = true
        self.open = inv.id

        TriggerEvent('ox_inventory:openedInventory', self.id, inv.id)
    end

    --- 关闭玩家的库存
    ---@param noEvent? boolean
    function OxInventory:closeInventory(noEvent)
        if not self.player then return end

        local inv = self.open and Inventory(self.open)

        if not inv then return end

        inv.openedBy = nil
        inv:set('open', false)
        self.open = false
        self.currentShop = nil
        self.containerSlot = nil

        if not noEvent then
            TriggerClientEvent('ox_inventory:closeInventory', self.id, true)
        end

        TriggerEvent('ox_inventory:closedInventory', self.id, inv.id)
    end

    -- updateSlot别名
    ---@alias updateSlot { item: SlotWithItem | { slot: number }, inventory: string|number }

    --- 同步玩家的库存状态
    ---@param slots updateSlot
    ---@param weight { left?: number, right?: number } | number
    function OxInventory:syncSlotsWithPlayer(slots, weight)
        TriggerClientEvent('ox_inventory:updateSlots', self.id, slots, weight)
    end

    --- 同步库存状态给所有访问它的玩家
    ---@param slots updateSlot
    ---@param weight { left?: number, right?: number }
    ---@param syncOwner? boolean
    function OxInventory:syncSlotsWithClients(slots, weight, syncOwner)
        for playerId in pairs(self.openedBy) do
            if self.id ~= playerId then
                TriggerClientEvent('ox_inventory:updateSlots', playerId, slots, weight)
            end
        end

        if syncOwner and self.player then
            TriggerClientEvent('ox_inventory:updateSlots', self.id, slots, weight)
        end
    end

    -- Inventories表存储库存
    ---@type table
    local Inventories = {}
    locallocal Vehicles = data 'vehicles'  -- 获取车辆数据
    local RegisteredStashes = {}  -- 注册的隐藏物品数据

    -- 遍历注册的隐藏物品,并存储相关数据
    for _, stash in pairs(data 'stashes') do
        RegisteredStashes = {
            name = stash.name,
            label = stash.label,
            owner = stash.owner,
            slots = stash.slots,
            maxWeight = stash.weight,
            groups = stash.groups or stash.jobs,
            coords = shared.target and stash.target?.loc or stash.coords
        }
    end

    local GetVehicleNumberPlateText = GetVehicleNumberPlateText  -- 获取车辆车牌文本

    -- 从数据库中加载库存数据或创建新的玩家拥有的实例
    ---@param data table
    ---@param player table
    ---@return OxInventory | false | nil
    local function loadInventoryData(data, player)
        local source = source
        local inventory

        -- 根据数据类型自动识别物品类型
        if not data.type and type(data.id) == 'string' then
            if data.id:find('^glove') then
                data.type = 'glovebox'
            elseif data.id:find('^trunk') then
                data.type = 'trunk'
            elseif data.id:find('^evidence-') then
                data.type = 'policeevidence'
            end
        end

        -- 处理车辆类型的库存
        if data.type == 'trunk' or data.type == 'glovebox' then
            local plate = data.id:sub(6)

            -- 去除车牌的空格
            if server.trimplate then
                plate = string.strtrim(plate)
                data.id = ('%s%s'):format(data.id:sub(1, 5), plate)
            end

            inventory = Inventories

            if not inventory then
                local entity

                -- 获取车辆实体
                if data.netid then
                    entity = NetworkGetEntityFromNetworkId(data.netid)

                    if not entity then
                        return shared.info('Failed to load vehicle inventory data (no entity exists with given netid).')
                    end
                else
                    local vehicles = GetAllVehicles()

                    for i = 1, #vehicles do
                        local vehicle = vehicles
                        local _plate = GetVehicleNumberPlateText(vehicle)

                        if _plate:find(plate) then
                            entity = vehicle
                            data.netid = NetworkGetNetworkIdFromEntity(entity)
                            break
                        end
                    end

                    if not entity then
                        return shared.info('Failed to load vehicle inventory data (no entity exists with given plate).')
                    end
                end

                if not source then
                    source = NetworkGetEntityOwner(entity)

                    if not source then
                        return shared.info('Failed to load vehicle inventory data (entity is unowned).')
                    end
                end

                local model, class
    回复

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|首页 ( 冀ICP备2021005225号-1 ) |网站地图

    GMT+8, 2024-9-20 22:23 , Processed in 0.357173 second(s), 8 queries , Redis On.

    Powered by Discuz! X3.4

    © 2001-2013 ELITE论坛【技术无价-分享快乐】

    快速回复 返回顶部 返回列表