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

请帮忙汉化一下

[复制链接]

升级进度: 48%

泪雨123 发表于 2024-4-29 22:26:32 | 显示全部楼层 |阅读模式
local Framework = require('server.utils')
  • juydqixsrtmxnalttglcfhhucrliyh

  • local resourceName = GetCurrentResourceName()https://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L?pwd=wxy6
    local CreditScores = {}irgrjzsgmteigngwcyczzcjzknzt
  • hpbylmuamhjt

  • local function saveCreditScores()
    https://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop

        SaveResourceFile(resourceName, 'credit_scores.json', json.encode(CreditScores), -1)
    kpnunixedkodormpwdxdfeebk

    end
    bzmyyjhkblgmdleghpyohveupbpacmdem

    qvwsrgadkiqqiwgfmwcuivmdcplpikq
    local function loanPaidLoop()
  • https://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2

  •     local data = MySQL.query.await('SELECT * FROM players_loan WHERE status = 1', {})rhhchavfpkddc
        for k, v in pairs(data) dohttps://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv
            local loanDetails = json.decode(v.loan_details)https://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=ijkl
            for _, duesdata in pairs(loanDetails.dues) dohttps://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn
                if not duesdata.paid thenhttps://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn
                    if os.time() >= duesdata.time thenhttps://pan.baidu.com/s/5F6G7H8I9J0K1L2M3N4O
                        local hasRemoved = Framework:RemoveMoneyByIdentifier(v.citizenid, 'bank', tonumber(duesdata.amount),jgegcfouljvtwgbgphiqoohqmbxceyeo
                            "banker-loan")https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd
                        if not hasRemoved thenekjzmjpthhkleanevfbyzyrkwqimxjtbtca
                            Framework:RemoveMoneyByIdentifierOffline(v.citizenid, tonumber(duesdata.amount))
    https://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9

                        endhttps://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd
                        if Config.CreditScore.Enable thenwnqtyilbdxvlbqdnkwpmilbdtevtyvtujjohsaivxehyvlmghb
                            HandleScores(v.citizenid, "remove", tonumber(duesdata.amount))

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

    https://pan.baidu.com/s/3T4U5V6W7X8Y9Z0A1B2C?pwd=yza1


                        end
    weqzreanjnyhnbzxfwkxgacvyvja

                        duesdata.paid = truehttps://pan.baidu.com/s/3U4V5W6X7Y8Z9A0B1C2D
                        MySQL.Async.execute('UPDATE players_loan SET status = ? , loan_details = ? WHERE loan_id = ?',
    https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1

                            { 3, json.encode(loanDetails), v.loan_id })

    ygwicnrpkailul

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


                    endhttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2
                end
    https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M

            endmetsbgfolsrmvedylroguqrmk
        end
    xrtokbrcurolybfvyzlzczmzspxg

        SetTimeout(Config.LoanIntervals, loanPaidLoop)
    moypiievdseawhkklzcxpzbncgshicburzjziovlhzmdhx

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

    AddEventHandler('txAdmin:events:serverShuttingDown', function()
    https://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M?pwd=yza7

        saveCreditScores()jvdfpfyxnvrucsbjnydfmmxuiuewgtmqppwfvvciqtd
    end)https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5
    oizbqxjtnemqgguktlyqfzxhsojbl
    AddEventHandler('onResourceStart', function(resourceName)huxurnisivxjomp
        if (GetCurrentResourceName() ~= resourceName) thenhttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7
            return
    fkauokmcagrfgblgxuscozhogltqumtzw

        end哈哈
        if Config.AutomaticDeduction then

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


            Wait(5000)https://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn
            loanPaidLoop()
    https://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv

        end                                   --启动扣除贷款付款的循环

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

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

  •     if Config.PhoneMails.DueReminder then -- 启动循环以在脚本重启时发送贷款还款提醒

    https://pan.baidu.com/s/9R0S1T2U3V4W5X6Y7Z8A?pwd=qrs5 不影响正文阅读


            local data = MySQL.query.await('SELECT * FROM players_loan WHERE status = 1', {})vommuvksniilrrokhejuxgjqeas
            for k, v in pairs(data) do

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


                local loanDetails = json.decode(v.loan_details)wdoidqjyxyyrsadqu
                for _, duesdata in pairs(loanDetails.dues) dohttps://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4
                    if not duesdata.paid thentidldhdwcnkuswmmbuximstkhboxqbjjjmvnuzjw
                        if os.time() >= (duesdata.time - (Config.PhoneMails.Time * 24 * 60 * 60)) and os.time() < duesdata.time thenhttps://pan.baidu.com/s/2T3U4V5W6X7Y8Z9A0B1C?pwd=wxy7
                            -- convert dues.time into dateqxkhvvqsgsqgfiintwuxfnirlbrdvnpmkatgvkyb
                            local date = os.date("%d-%m-%Y %H:%M:%S", duesdata.time)
    lcelouygllzwxklxnbcfqftlbtzhhagtclfqgdxsoxomhajubm

                            local maildata = {
  • ljfdotivhiwtxytfagckalzktsveraf

  •                             sender = "Banker",suvpbwwxjusjaqezkbrefl
                                subject = "#" .. v.loan_id .. " Loan Payment Reminder",
    https://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij

                                message = "You have a loan payment due . Please visit the bank to pay your loan before " ..https://pan.baidu.com/s/8Y9Z0A1B2C3D4E5F6G7H?pwd=mno6
                                    date .. ". Payment Amount : $" .. duesdata.amount .. ". ",trrefygkpzl
                            }jgegcfouljvtwgbgphiqoohqmbxceyeo
                            Framework:SendMail(v.citizenid, maildata)

    khqtrvwoymmnwdiswjvyfcrlqizmipo

    https://pan.baidu.com/s/5W6X7Y8Z9A0B1C2D3E4F?pwd=efg0


                        endhttps://pan.baidu.com/s/6P8Q9R0S1T2U3V4W5X6Y
                    endvhtkrvndiwxzzyefgfrwrkdyj
                end
    https://pan.baidu.com/s/9K0L1M2N3O4P5Q6R7S8T

            endiaoipbhlyofjvzhnsyh
        end

    https://pan.baidu.com/s/9R0S1T2U3V4W5X6Y7Z8A?pwd=qrs5 https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6


    end)
    rfdusdlqdapmzvxgu

    otftxtrfdbaajtzscumqiykgsfoeytinm
    AddEventHandler('onResourceStop', function(res)qvvtbdbvgtgornwzp
        if res ~= resourceName then return endoyzhrkbhmelcohrhlnhhstwngrad
        saveCreditScores()
  • https://pan.baidu.com/s/5F6G7H8I9J0K1L2M3N4O?pwd=efg9

  • end)wemoaicyvpmrsujpefnjhevynvlvkzoheavejydenpwfk
    vommuvksniilrrokhejuxgjqeas
    CreateThread(function()
    fnjtzksgdkredy

        Wait(100)https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=efgh
        local scores = json.decode(LoadResourceFile(resourceName, 'credit_scores.json'))
    https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7

        if type(scores) == 'table' thengrjbqgcprcamiyhcqvsdbudemqoxuahbsqcjwf
            CreditScores = scores哈哈
        else

    iitaxjojdabrkbvsjeukyatxmgabhttps://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6


            SaveResourceFile(resourceName, "credit_scores.json", '[]', -1)gfppkngcfrsajvjkdgvcdcttwrdavoc
            CreditScores = {}https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6
        end
  • vmcbwdyiunqtsnwrqctewdj

  • end)
    https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S

  • cacnrcgnqucblsuwuesd

  • function GetScores(cid)ydimlbakusfmuknlqbjhuerwlzhxbq
        if not CreditScores[cid] then return 0 end
  • lslgdwsmmwlhqtzpuqkqztwnoo

  •     return CreditScores[cid]

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


    end
    djwyxjlrew

    cfmxwmoyjqauzhfdsbfgbvkxrzzidmhgrtengsmpimkhuqlmrr
    function HandleScores(cid, operation, amount)https://pan.baidu.com/s/3U4V5W6X7Y8Z9A0B1C2D
        local score = 0jsgeemzcbvgozutblyuollaimtvnprpz
        -- Define the scoring rules based on the operationjgegcfouljvtwgbgphiqoohqmbxceyeo
        local scoringRulesmqzuxkfbksggyh
        if operation == "add" thenkylpddbsivpgijqcuc
            scoringRules = Config.CreditScore.Addonhttps://pan.baidu.com/s/4N5O7P8Q9R0S1T2U3V4W
        elseif operation == "remove" thenhttps://pan.baidu.com/s/8Q9R0S1T2U3V4W5X6Y7Z
            scoringRules = Config.CreditScore.Deduct
    https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr

        endbykkrliaare
        -- Loop through scoring rules to calculate the score
  • hpbylmuamhjt

  •     for k, v in pairs(scoringRules) do
    https://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9

            local nextKey = next(scoringRules, k) -- Get the next keyvwvisicrszemqjduauspvdxqalmkxzwswrapzcg
            local currentRange = scoringRules[k]
  • https://pan.baidu.com/s/8G9H0I1J2K3L4M5N6O7P?pwd=zabc

  •         if nextKey thenhttps://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8
                local nextRange = scoringRules[nextKey]
  • wevqsversujnsfmst

  •             -- Check if 'amount' is within the current range
    fdutkjiaejeuoqnmpe

                if amount >= currentRange.amount and amount < nextRange.amount thenhttps://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5
                    score = currentRange.scorewemoaicyvpmrsujpefnjhevynvlvkzoheavejydenpwfk
                    break -- Exit the loop since we found the correct range

    pyelbjkqqtq

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

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

                -- If there is no next key, it means 'amount' is greater than or equal to the last range
  • https://pan.baidu.com/s/1T2U3V4W5X6Y7Z8A9B0C

  •             if amount >= currentRange.amount then

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


                    score = currentRange.scorehttps://pan.baidu.com/s/8Y9Z0A1B2C3D4E5F6G7H?pwd=mno6
                    break
    https://pan.baidu.com/s/4E5F6G7H8I9J0K1L2M3N?pwd=bcd8

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

            endhttps://pan.baidu.com/s/3E4F5G6H7I8J9K0L1M2N
        endhttps://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1
        -- Update the player's credit score
  • cacnrcgnqucblsuwuesd

  •     if operation == "add" thenhttps://pan.baidu.com/s/9B0C1D2E3F4G5H6I7J8K
            CreditScores[cid] = (CreditScores[cid] or 0) + scorehttps://pan.baidu.com/s/3T4U5V6W7X8Y9Z0A1B2C?pwd=yza1
        elsehttps://pan.baidu.com/s/6P8Q9R0S1T2U3V4W5X6Y
            CreditScores[cid] = (CreditScores[cid] or 0) - scorehttps://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V
            if CreditScores[cid] < 0 then

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

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

  •             CreditScores[cid] = 0
    ksonqepbtfvchofpkdnulsil

            endbgfrbxthqda
        endgwyytpaausyruesajfkdfuwmxgdckborynprcprw
        saveCreditScores()irgrjzsgmteigngwcyczzcjzknzt
    endhttps://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=vwx9
    https://pan.baidu.com/s/6X7Y8Z9A0B1C2D3E4F5G
    lib.callback.register('loan-system:server:getLoans', function(source)wuwnwjqgitqfmzgwqezpnmytswoetvyppudldurmnirzi
        local data = MySQL.query.await('SELECT * FROM players_loan', {})https://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U
        local returnData = {jgegcfouljvtwgbgphiqoohqmbxceyeo
            Pending = {},zkcwaqhbqkecyubvgcvgvhgqxmjy
            Approved = {},
    https://pan.baidu.com/s/4F5G6H7I8J9K0L1M2N3O

            Rejected = {},baqhyrrdwpbavswcuxskxzyqga
            Paid = {},https://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L?pwd=wxy6
            All = {}https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5
        }
    dxxiwfbvdczkusrftdxihuzqippspcktzhbwncrrfqcz

        for k, v in pairs(data) do

    iitaxjojdabrkbvsjeukyatxmgab

  • https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J

  •         if v.status == 0 thengwyytpaausyruesajfkdfuwmxgdckborynprcprw
                table.insert(returnData.Pending, v)https://pan.baidu.com/s/6G7H8I9J0K1L2M3N4O5P
            elseif v.status == 1 thenhttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7
                table.insert(returnData.Approved, v)jsgeemzcbvgozutblyuollaimtvnprpz
            elseif v.status == 2 then
    ngjaiadgoqbfhhkpqajpjqcqniotmdmajwarweyluzrch

                table.insert(returnData.Rejected, v)mqkjenavsqyrarwd
            elseif v.status == 3 then
  • https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8

  •             table.insert(returnData.Paid, v)zxuwhavqhctpvgsgkizylxjovq
            end
    rgrgfufiggksgpxpgrrlugcqigsiazosfgz

            table.insert(returnData.All, v)

    https://pan.baidu.com/s/2L3M4N5O7P8Q9R0S1T2U https://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst


        end
    https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S

        for _, statusData in pairs(returnData) dohttps://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv
            for _, loanDetails in pairs(statusData) doeyxvmvxpazajskjskzuayzlziwpzqgiuefprb
                local loanDetailsDecoded = json.decode(loanDetails.loan_details)
    https://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9

                if loanDetailsDecoded.starttime thenhttps://pan.baidu.com/s/7P8Q9R0S1T2U3V4W5X6Y?pwd=klm3
                    local starttime = os.date("%c", tonumber(loanDetailsDecoded.starttime))https://pan.baidu.com/s/6P8Q9R0S1T2U3V4W5X6Y
                    loanDetailsDecoded.convertedstarttime = starttimehttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=yza0
                endzwbzlakufyvtsnqmfbacsnkkem
                if loanDetailsDecoded.endtime then
    https://pan.baidu.com/s/9J0K1L2M3N4O5P6Q7R8S

                    local endtime = os.date("%c", tonumber(loanDetailsDecoded.endtime))https://pan.baidu.com/s/5W6X7Y8Z9A0B1C2D3E4F?pwd=efg0
                    loanDetailsDecoded.convertedendtime = endtime

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


                end

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


                if loanDetailsDecoded.requestedtime then
    csnxbbfkahqxwsufrlyjogppquadqfmtxzqz

                    local requestedtime = os.date("%c", tonumber(loanDetailsDecoded.requestedtime))https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx
                    loanDetailsDecoded.convertedrequestedtime = requestedtime
    ijnuhdadsaehhjhnzgfiyswifpvbsowaykvfnvigwnnexv

                endehuwwexhtyhqxieusleiegdebixinhvrpqolumsn
                if loanDetailsDecoded.dues thenzgwgduowwmxtlhdzywafylvzxfib
                    for _, duesdata in pairs(loanDetailsDecoded.dues) do
    https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr

                        if duesdata.time thenhttps://pan.baidu.com/s/4N5O7P8Q9R0S1T2U3V4W
                            local time = os.date("%c", tonumber(duesdata.time))https://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U
                            duesdata.convertedtime = time哈哈
                        endwuwnwjqgitqfmzgwqezpnmytswoetvyppudldurmnirzi
                    endhsrblfjnzpysbnwqimxrxvfybkffyxdfqvhcbqpagothbpxkc
                end
    https://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9

                loanDetails.loan_details = json.encode(loanDetailsDecoded)
    txosinopjtrxiubbwqvqkvw

            endhttps://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B
        endgznvppnjnbcvprkylcvt
        return returnData
    cfsksmfgbxvbhsfvaimkhkjg

    end)https://pan.baidu.com/s/9H0I1J2K3L4M5N6O7P8Q?pwd=cdef
  • vmcbwdyiunqtsnwrqctewdj

  • lib.callback.register('loan-system:server:getMyLoans', function(source)

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

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

  •     local Player = Framework:GetPlayer(source)https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=vwx9
        local cid = Player.citizenid
    ckfsuimudfkyjhpjsctqbqiyhjnhmuzoeegzmttpydohk

        local data = MySQL.query.await('SELECT * FROM players_loan WHERE citizenid =?', { cid })tidldhdwcnkuswmmbuximstkhboxqbjjjmvnuzjw
        for _, statusData in pairs(data) dowydwoqimkbiyfbudrjxvvbpnodvfd
            local loanDetailsDecoded = json.decode(statusData.loan_details)

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


            if loanDetailsDecoded.starttime thenpspinlumneyqfgxzloz
                local starttime = os.date("%c", tonumber(loanDetailsDecoded.starttime))https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd
                loanDetailsDecoded.convertedstarttime = starttimezwbzlakufyvtsnqmfbacsnkkem
            endhttps://pan.baidu.com/s/7O8P9Q0R1S2T3U4V5W6X?pwd=efgh
            if loanDetailsDecoded.endtime thenhttps://pan.baidu.com/s/1B2C3D4E5F6G7H8I9J0K?pwd=tuv5
                local endtime = os.date("%c", tonumber(loanDetailsDecoded.endtime))
    https://pan.baidu.com/s/8G9H0I1J2K3L4M5N6O7P?pwd=zabc

                loanDetailsDecoded.convertedendtime = endtimewsyrkavtsnjzrbfxxiiiqcofkdxtkmwh
            end哈哈
            if loanDetailsDecoded.requestedtime thenhttps://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst
                local requestedtime = os.date("%c", tonumber(loanDetailsDecoded.requestedtime))dkkuprwbbymiacnnoszfflftxpme
                loanDetailsDecoded.convertedrequestedtime = requestedtime

    iitaxjojdabrkbvsjeukyatxmgab

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


            endvfqamzcgmrnzytnehvsjacainoiyeyqadhbqhextvlste
            if loanDetailsDecoded.dues then

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


                for _, duesdata in pairs(loanDetailsDecoded.dues) do

    https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2 https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6


                    if duesdata.time thenhttps://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=mnop
                        local time = os.date("%c", tonumber(duesdata.time))jvwtytuoavflahkujfalahhioxfahdxqztkxmemmaryazivi
                        duesdata.convertedtime = timepujbsciwxyjieoagtnbme
                    end
    ygcgtrfdhminfttiuhwyhkuzpyvtqegokjvdaahi

                endlpdgpaaliagyiirxeyqkjzjikhrzchbn
            end

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


            statusData.loan_details = json.encode(loanDetailsDecoded)
  • rdncnhjsehmxojdptibnptceowwx

  •     endhdqxodllyigcmenqfrqmheikukgapyrwbiuplgajphlc
        return datahttps://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M
    end)
  • cacnrcgnqucblsuwuesd

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

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

  • lib.callback.register('loan-system:server:getMyScores', function(source)hjhzpkapljjlcmfodnmnt
        local Player = Framework:GetPlayer(source)https://pan.baidu.com/s/4N5O7P8Q9R0S1T2U3V4W
        if not Player then return false endiaoipbhlyofjvzhnsyh
        local cid = Player.citizenidhttps://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd
        local data = GetScores(cid)
  • bljivszrjfultqbkwikstdxaegiprcdtnmcifbapg

  •     return data
    gtystrttiullecrhwk

    end)scdirrqhdrfgwdkkitfpioriho
    zxuwhavqhctpvgsgkizylxjovq
    RegisterNetEvent("loan-system:server:requestLoan", function(data)

    fliqvznrclot

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

  •     local src = source

    ckajubvbnzmsfuieipzmkpo哈哈


        local Player = Framework:GetPlayer(src)https://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L
        if not Player then return endncimzrtzoawczqjyc
        local cid = Player.citizenidwsyrkavtsnjzrbfxxiiiqcofkdxtkmwh
        local totalamount = tonumber(data.amount) + tonumber(data.interest)https://pan.baidu.com/s/4E5F6G7H8I9J0K1L2M3N
        if data.amount < 0 then

    bkajrcfmxzmxgsqjnwrvscwqbiffdlqewqnotsa你好啊


            TriggerClientEvent("ox_lib:notify", source, {gznvppnjnbcvprkylcvt
                description = "You can't request a negative amount!",
    https://pan.baidu.com/s/8I9J0K1L2M3N4O5P6Q7R

                type = "error"
  • shfgnsebeszqvjmhelgeyisyxaegst

  •         })
  • gcmhlervxbusbtrnsajizzphtunjlowsqizcnqxk

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

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

  •     local saveData = {https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=vwx9
            name = Player.fullname,

    https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6

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


            loantype = data.type,https://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B
            amount = totalamount,amoefbhgxlnmrggogdixqadpakyustptgdxmffscqgpinv
            remainingamount = totalamount,yjrlpsmrukbecnndnehnyeztwe
            reason = data.reason,alifvvcrnvidmunzkjcfuhd
            duration = data.duration,
    gtfrzrkeiczaxcsj

            requestedamount = data.amount,
    nutqrxnvdyqck

            interest = data.interestpercent,
  • zysnwxcykmabhezkzfxemmyxc

  •         requestedtime = os.time(),https://pan.baidu.com/s/1B2C3D4E5F6G7H8I9J0K
        }

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


        MySQL.Async.execute('INSERT INTO players_loan (citizenid, loan_details) VALUES (?, ?)', {eyxvmvxpazajskjskzuayzlziwpzqgiuefprb
            cid,wnqtyilbdxvlbqdnkwpmilbdtevtyvtujjohsaivxehyvlmghb
            json.encode(saveData),
  • bljivszrjfultqbkwikstdxaegiprcdtnmcifbapg

  •     })https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5
        TriggerClientEvent("ox_lib:notify", source, {

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

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

  •         description = "Loan Request Successfully Sent to the Bank!",
    fcpqwbdbzug

            type = "success"wjbdazzttf
        })

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


    end)https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T
    https://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=ijkl
    RegisterNetEvent('loan-system:server:approveLoan', function(data)https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2
        local src = sourcemystlhdghntbwuwbyqyljwkcxznsbikogdiskmyszruv
        local cid = data.citizenidyhxbbxztlvroubaudhydrxjpcvcasenrllsmjsgun
        local loanDetails = json.decode(data.loan_details)vommuvksniilrrokhejuxgjqeas
        local intervals = {}obcmbjemllypxaeermpftxxntktklxyzzamajqmub
        local totalmoney = 0https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=vwx9
        for i = 1, tonumber(loanDetails.duration) dotxrqmqrztyrahucblcllk
            local intervaltime = os.time() + (i * 7 * 24 * 60 * 60)https://pan.baidu.com/s/6N7O8P9Q0R1S2T3U4V5W?pwd=abcd
            local money = tonumber(string.format("%.0f", loanDetails.amount / tonumber(loanDetails.duration)))zwbzlakufyvtsnqmfbacsnkkem
            if i == tonumber(loanDetails.duration) thenjpxsipexywivvxiqzjaaupijneajmdavsyobntzmphh
                money = tonumber(loanDetails.amount) - tonumber(totalmoney)https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1
            endjvhojbasxtodv
            table.insert(intervals, { amount = money, time = intervaltime, paid = false, due = i })
    fkauokmcagrfgblgxuscozhogltqumtzw

            totalmoney = totalmoney + tonumber(string.format("%.0f", loanDetails.amount / tonumber(loanDetails.duration)))qdfkthacfilspxmolrtsqglkwjokrzoid
        endsckkmniwbdormzcdexlfgwolfxqnkaaddlnpzwlbz
        loanDetails.starttime = os.time()

    snnyfdiszaosckietnkwzabwrokkhlbayozeshwrhlkhttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L


        loanDetails.endtime = os.time() + tonumber(loanDetails.duration * 7 * 24 * 60 * 60)sduluidusmusbbmwovhdrata
        loanDetails.dues = intervals
    fdutkjiaejeuoqnmpe

        MySQL.Async.execute('UPDATE players_loan SET status = 1, loan_details = ? WHERE loan_id = ?', {srtdsndavdhogsuwzxurmrgzzgiuiv
            json.encode(loanDetails),trrefygkpzl
            data.loan_id,wjbdazzttf
        })jsgeemzcbvgozutblyuollaimtvnprpz
        local hasRemoved = Framework:AddMoneyByIdentifier(cid, 'bank', tonumber(loanDetails.requestedamount), "banker-loan")https://pan.baidu.com/s/5X6Y7Z8A9B0C1D2E3F4G
        if not hasRemoved thenhjhzpkapljjlcmfodnmnt
            Framework:AddMoneyByIdentifierOffline(cid, tonumber(loanDetails.requestedamount))
    https://pan.baidu.com/s/8G9H0I1J2K3L4M5N6O7P?pwd=zabc

        end

    jcxebfstezflcbeibpwxj

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

  •     if Config.PhoneMails.ApproveMail thenhttps://pan.baidu.com/s/5F6G7H8I9J0K1L2M3N4O
            local maildata = {suvpbwwxjusjaqezkbrefl
                sender = "Banker",

    https://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx


                subject = "#" .. data.loan_id .. " Loan Approved",qxkhvvqsgsqgfiintwuxfnirlbrdvnpmkatgvkyb
                message = "Your loan request has been approved. Please check your Bank Amount. Loan Amount : $" ..
    skbzaslbsskupbceqkvosdwzweloumunxwn

                    loanDetails.requestedamount .. ". ",https://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L?pwd=wxy6
            }
    https://pan.baidu.com/s/7X8Y9Z0A1B2C3D4E5F6G?pwd=jkl5

            Framework:SendMail(cid, maildata)hsrblfjnzpysbnwqimxrxvfybkffyxdfqvhcbqpagothbpxkc
        end

    https://pan.baidu.com/s/6X7Y8Z9A0B1C2D3E4F5G?pwd=hij1 不影响正文阅读


        TriggerClientEvent("ox_lib:notify", src, {sckkmniwbdormzcdexlfgwolfxqnkaaddlnpzwlbz
            description = "#" .. data.loan_id .. " Loan Request Approved!",ehuwwexhtyhqxieusleiegdebixinhvrpqolumsn
            type = "success"
    fcpqwbdbzug

        })

    iitaxjojdabrkbvsjeukyatxmgab

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


    end)
  • hpbylmuamhjt

  • aydzsajxcuqjaoqgnwcvzpnozoxliiyihcizdrxf
    RegisterNetEvent('loan-system:server:rejectLoan', function(data)resdwkrgswqmuxvkbw
        local src = sourcebelppbkmqtooyptqixqnjspnbrcy
        local cid = data.citizenid
  • pqhmexdzkfbgjaodnfxftuwjwqott

  •     local loanDetails = json.decode(data.loan_details)vwvisicrszemqjduauspvdxqalmkxzwswrapzcg
        loanDetails.rejectionReason = data.rejectionReason
  • pqhmexdzkfbgjaodnfxftuwjwqott

  •     MySQL.Async.execute('UPDATE players_loan SET status = 2, loan_details = ?  WHERE loan_id = ?', {

    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J https://pan.baidu.com/s/3V4W5X6Y7Z8A9B0C1D2E


            json.encode(loanDetails),
  • https://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2

  •         data.loan_id,
    https://pan.baidu.com/s/6W7X8Y9Z0A1B2C3D4E5F?pwd=ghi4

        })iaoipbhlyofjvzhnsyh
        if Config.PhoneMails.DeclineMail thenehuwwexhtyhqxieusleiegdebixinhvrpqolumsn
            local maildata = {
    ngjaiadgoqbfhhkpqajpjqcqniotmdmajwarweyluzrch

                sender = "Banker",

    apcvobntwazzdagznsxbibuox

    https://pan.baidu.com/s/9A0B1C2D3E4F5G6H7I8J?pwd=qrs4


                subject = "#" .. data.loan_id .. " Loan Declined",https://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V?pwd=bcd0
                message = "Your loan request has been declined. Reason : " ..
    https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M

                    data.rejectionReason .. ". Loan Amount : $" .. loanDetails.requestedamount .. ". ",vwvisicrszemqjduauspvdxqalmkxzwswrapzcg
            }zgqsdenwjnifvggxgwihcvqlfxux
            Framework:SendMail(cid, maildata)tedwclewlvfalxpni
        endhttps://pan.baidu.com/s/9S1T2U3V4W5X6Y7Z8A9B
        TriggerClientEvent("ox_lib:notify", src, {

    smavpftakz

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


            description = "#" .. data.loan_id .. " Loan Request Rejected!",

    https://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q


            type = "error"cfmxwmoyjqauzhfdsbfgbvkxrzzidmhgrtengsmpimkhuqlmrr
        })https://pan.baidu.com/s/9S1T2U3V4W5X6Y7Z8A9B
    end)https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1
    tedwclewlvfalxpni
    RegisterNetEvent("loan-system:server:payLoan", function(data)rphipldkhokyybjjgcjtbsyambfozxarmizctcma
        local src = sourcejgegcfouljvtwgbgphiqoohqmbxceyeo
        local cid = data.citizenid

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


        local loanDetails = json.decode(data.loan_details)
    lcelouygllzwxklxnbcfqftlbtzhhagtclfqgdxsoxomhajubm

        if Framework:RemoveMoneyByIdentifier(cid, 'bank', tonumber(data.payamount), "banker-loan") thenhalqmsggzlxibn
            loanDetails.remainingamount = tonumber(loanDetails.remainingamount) - tonumber(data.payamount)
    https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1

            for k, v in pairs(loanDetails.dues) dohttps://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn
                if v.due == tonumber(data.due) theniiziccqbghzpxbkzbddpvpbnckgi
                    v.paid = trueoyzhrkbhmelcohrhlnhhstwngrad
                    if Config.CreditScore.Enable thenkbmroewqioqzjzm
                        if os.time() > v.time thenhttps://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L?pwd=wxy6
                            HandleScores(cid, "remove", tonumber(data.payamount))

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


                        elseazigwpkqegmqegcmkbkgcqfnlelqnmanljthzd
                            HandleScores(cid, "add", tonumber(data.payamount))
    lcelouygllzwxklxnbcfqftlbtzhhagtclfqgdxsoxomhajubm

                        endhttps://pan.baidu.com/s/4O5P6Q7R8S9T0U1V2W3X
                    end
  • https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E

  •             endhttps://pan.baidu.com/s/1B2C3D4E5F6G7H8I9J0K
            endwsyrkavtsnjzrbfxxiiiqcofkdxtkmwh
            if tonumber(loanDetails.remainingamount) == 0 thenmetsbgfolsrmvedylroguqrmk
                MySQL.Async.execute('UPDATE players_loan SET status= ?, loan_details = ? WHERE loan_id = ?', {eyxvmvxpazajskjskzuayzlziwpzqgiuefprb
                    3,https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=mnop
                    json.encode(loanDetails),mqkjenavsqyrarwd
                    data.loan_id,
    https://pan.baidu.com/s/8I9J0K1L2M3N4O5P6Q7R

                })xzpzjyflhzmzynmataaqbrd
            else
    anibrbicxxaisreaettwnutfzlviybczpkbgmjikgjszb

                MySQL.Async.execute('UPDATE players_loan SET loan_details = ? WHERE loan_id = ?', {
    https://pan.baidu.com/s/8G9H0I1J2K3L4M5N6O7P?pwd=zabc

                    json.encode(loanDetails),

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


                    data.loan_id,qvwsrgadkiqqiwgfmwcuivmdcplpikq
                })
    https://pan.baidu.com/s/4F5G6H7I8J9K0L1M2N3O

            end
  • vuodbwrzcrhfoyehicumohngfnfoiocejrilnzkqq

  • https://pan.baidu.com/s/8A9B0C1D2E3F4G5H6I7J
    metsbgfolsrmvedylroguqrmk
            TriggerClientEvent("ox_lib:notify", src, {yvgbiipqsivautodwexefkuymynjulythevpmkgesb
                description = "Loan Payment Successful!",uqadvuwlarjqklesznzjeztdebyr
                type = "success"

    https://pan.baidu.com/s/9R0S1T2U3V4W5X6Y7Z8A?pwd=qrs5 https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P


            })

    apcvobntwazzdagznsxbibuoxhttps://pan.baidu.com/s/6O7P8Q9R0S1T2U3V4W5X


        else
    ijnuhdadsaehhjhnzgfiyswifpvbsowaykvfnvigwnnexv

            TriggerClientEvent("ox_lib:notify", src, {https://pan.baidu.com/s/7H8I9J0K1L2M3N4O5P6Q?pwd=klm1
                description = "Loan Payment Failed!",

    https://pan.baidu.com/s/9R0S1T2U3V4W5X6Y7Z8A?pwd=qrs5 https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2


                type = "error"
    qndugddlnhqidcgjgiuiwlgjbxlqoizewcycg

            })jgegcfouljvtwgbgphiqoohqmbxceyeo
        endiiziccqbghzpxbkzbddpvpbnckgi
    end)
    wsopgzmgzncrcncjydkxsjbkqxcyjmiffxvmwh

    swctzhbkaqinftfzmwfxhbgvmxuagyuyuwsteuefkmsqgy

    RegisterNetEvent("loan-system:server:sendMail", function(data)https://pan.baidu.com/s/3N4O5P6Q7R8S9T0U1V2W
        local src = sourcecfmxwmoyjqauzhfdsbfgbvkxrzzidmhgrtengsmpimkhuqlmrr
        local cid = data.citizenidjvhojbasxtodv
        local maildata = {gznvppnjnbcvprkylcvt
            sender = "Pacific Bank",lpdgpaaliagyiirxeyqkjzjikhrzchbn
            subject = data.subject,azxzbnwkhkptbvzvfthej
            message = data.message,

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


        }https://pan.baidu.com/s/7O8P9Q0R1S2T3U4V5W6X?pwd=efgh
        Framework:SendMail(cid, maildata)
    https://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V?pwd=bcd0

        TriggerClientEvent("ox_lib:notify", src, {https://pan.baidu.com/s/4O5P6Q7R8S9T0U1V2W3X
            description = "Mail Sent!",wydwoqimkbiyfbudrjxvvbpnodvfd
            type = "success"https://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn
        })https://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=yza0
    end)https://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B?pwd=tuv6

    scmnbwfmlxzcskewmrkqepxsnbsg

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


    RegisterNetEvent("loan-system:server:firstTimeCredits", function()ftmmmmcphrrvknvjnyktyym
        local Player = Framework:GetPlayer(source)

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

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


        if not Player then return endhttps://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1
        local cid = Player.citizenid

    fliqvznrclot

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

  •     if not CreditScores[cid] thenresdwkrgswqmuxvkbw
            CreditScores[cid] = Config.CreditScore.DefaultCreditScorealifvvcrnvidmunzkjcfuhd
            saveCreditScores()eteiyxkkqnshmiyzpnvpsbaprkpe
        endjvdfpfyxnvrucsbjnydfmmxuiuewgtmqppwfvvciqtd
    end)
  • tzfqpgufgfebxxqqeuoqatjckpstcnqvnvmdchijnmlkkcbo

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

  • MySQL.ready(function()qvvtbdbvgtgornwzp
        local success, result = pcall(MySQL.query.await, "SELECT 1 FROM players_loan LIMIT 1")ydimlbakusfmuknlqbjhuerwlzhxbq
        if not success thenhttps://pan.baidu.com/s/9B0C1D2E3F4G5H6I7J8K
            -- Create 'players_loan' table if it doesn't existyvgbiipqsivautodwexefkuymynjulythevpmkgesb
            success, result = pcall(MySQL.query, [[
    gtystrttiullecrhwk

                CREATE TABLE IF NOT EXISTS `players_loan` (pyktojltjycxwjkyjhdf
                    `loan_id` int(11) NOT NULL AUTO_INCREMENT,https://pan.baidu.com/s/3T4U5V6W7X8Y9Z0A1B2C?pwd=yza1
                    `citizenid` varchar(50) NOT NULL DEFAULT '0',
    lwwenccdvxzkywhvfcoocescputtzfdlczpqc

                    `loan_details` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`loan_details`)),jvwtytuoavflahkujfalahhioxfahdxqztkxmemmaryazivi
                    `status` int(11) NOT NULL DEFAULT 0,wuwnwjqgitqfmzgwqezpnmytswoetvyppudldurmnirzi
                    PRIMARY KEY (`loan_id`)

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


                  )

    qcrbnlqfirggephgcvuuuaagftdufiiwlaxymoeughttps://pan.baidu.com/s/8R0S1T2U3V4W5X6Y7Z8A


            ]])dnwkpzbpljugfwytsgwfbkflthroovurirc
            if not success then
  • hlhsulyohdppm

  •             return print(result)https://pan.baidu.com/s/2S3T4U5V6W7X8Y9Z0A1B?pwd=uvwx
            end

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

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

  •         print("Created table 'players_loan' in MySQL database.")https://pan.baidu.com/s/3T4U5V6W7X8Y9Z0A1B2C?pwd=yza1
        end

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


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

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

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

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


  • juydqixsrtmxnalttglcfhhucrliyh

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

    https://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L
    回复 论坛版权

    使用道具 举报

    ChatGPT 发表于 2024-4-29 22:27:03 | 显示全部楼层
    local Framework = require('server.utils')  --加载服务器工具模块
    local resourceName = GetCurrentResourceName()  --获取当前资源名称
    local CreditScores = {}  --信用积分数据表
    
    local function saveCreditScores()  --保存信用积分函数
        SaveResourceFile(resourceName, 'credit_scores.json', json.encode(CreditScores), -1)  --将信用积分数据以JSON格式保存到文件中
    end
    
    local function loanPaidLoop()  --贷款付款循环函数
        local data = MySQL.query.await('SELECT * FROM players_loan WHERE status = 1', {})  --等待MySQL查询返回结果
        for k, v in pairs(data) do
            local loanDetails = json.decode(v.loan_details)  --解码贷款详情数据为Lua表
            for _, duesdata in pairs(loanDetails.dues) do
                if not duesdata.paid then
                    if os.time() >= duesdata.time then
                        local hasRemoved = Framework:RemoveMoneyByIdentifier(v.citizenid, 'bank', tonumber(duesdata.amount),
                            "banker-loan")  --从玩家银行账户中扣除贷款金额
                        if not hasRemoved then
                            Framework:RemoveMoneyByIdentifierOffline(v.citizenid, tonumber(duesdata.amount))  --如果扣款失败,则离线扣除
                        end
                        if Config.CreditScore.Enable then
                            HandleScores(v.citizenid, "remove", tonumber(duesdata.amount))  --根据操作更新信用积分
                        end
                        duesdata.paid = true  --标记该笔款项已支付
                        MySQL.Async.execute('UPDATE players_loan SET status = ? , loan_details = ? WHERE loan_id = ?',
                            { 3, json.encode(loanDetails), v.loan_id })  --更新贷款状态和详情数据到数据库
                    end
                end
            end
        end
        SetTimeout(Config.LoanIntervals, loanPaidLoop)  --设置下一次循环执行的延迟时间
    end
    
    AddEventHandler('txAdmin:events:serverShuttingDown', function()
        saveCreditScores()  --服务器关闭前保存信用积分数据
    end)
    
    AddEventHandler('onResourceStart', function(resourceName)
        if (GetCurrentResourceName() ~= resourceName) then
            return
        end
        if Config.AutomaticDeduction then
            Wait(5000)
            loanPaidLoop()  --启动扣除贷款付款的循环
        end
        if Config.PhoneMails.DueReminder then
            ...
        end
    end)
    
    AddEventHandler('onResourceStop', function(res)
        if res ~= resourceName then return end
        saveCreditScores()  --资源停止时保存信用积分数据
    end)
    
    CreateThread(function()
        Wait(100)
        local scores = json.decode(LoadResourceFile(resourceName, 'credit_scores.json'))
        if type(scores) == 'table' then
            CreditScores = scores
        else
            SaveResourceFile(resourceName, "credit_scores.json", '', -1)
            CreditScores = {}
        end
    end)
    
    function GetScores(cid)
        if not CreditScores then return 0 end
        return CreditScores  --获取并返回指定玩家的信用积分数据
    end
    
    function HandleScores(cid, operation, amount)
        ...
    end
    
    lib.callback.register('loan-system:server:getLoans', function(source)
        ...
    end)
    
    lib.callback.register('loan-system:server:getMyLoans', function(source)
        ...
    end)
    
    lib.callback.register('loan-system:server:getMyScores', function(source)
        ...
    end)
    
    RegisterNetEvent("loan-system:server:requestLoan", function(data)
        ...
    end)
    
    RegisterNetEvent('loan-system:server:approveLoan', function(data)
        ...
    end)
    
    RegisterNetEvent('loan-system:server:rejectLoan', function(data)
        ...
    end)
    
    RegisterNetEvent("loan-system:server:payLoan", function(data)
        ...
    end)
    
    RegisterNetEvent("loan-system:server:sendMail", function(data)
        ...
    end)
    
    RegisterNetEvent("loan-system:server:firstTimeCredits", function()
        ...
    end)
    
    MySQL.ready(function()
        ...
    end)

    以上代码应该放在服务器的脚本文件(server.lua)中。
    回复

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|首页 ( 冀ICP备2021005225号-1 ) |网站地图

    GMT+8, 2024-9-20 22:56 , Processed in 0.075920 second(s), 9 queries , Redis On.

    Powered by Discuz! X3.4

    © 2001-2013 ELITE论坛【技术无价-分享快乐】

    快速回复 返回顶部 返回列表