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

请帮忙汉化一下

[复制链接]

升级进度: 48%

泪雨123 发表于 2024-4-29 22:26:32 | 显示全部楼层 |阅读模式
local Framework = require('server.utils')https://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij
local resourceName = GetCurrentResourceName()https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx
local CreditScores = {}https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=qrst
reltycktbywqog
local function saveCreditScores()rbjinvltgrk
    SaveResourceFile(resourceName, 'credit_scores.json', json.encode(CreditScores), -1)bapvfhknfoqeudjkcxquggezrkmdyowzoluttfhyuxdoa
end
nngdzyzfil

https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1
local function loanPaidLoop()https://pan.baidu.com/s/9R0S1T2U3V4W5X6Y7Z8A
    local data = MySQL.query.await('SELECT * FROM players_loan WHERE status = 1', {})
tpmfifsmbmh

    for k, v in pairs(data) domdaibksdrm
        local loanDetails = json.decode(v.loan_details)https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8
        for _, duesdata in pairs(loanDetails.dues) dohttps://pan.baidu.com/s/7P8Q9R0S1T2U3V4W5X6Y?pwd=klm3
            if not duesdata.paid thenhttps://pan.baidu.com/s/7Z8A9B0C1D2E3F4G5H6I
                if os.time() >= duesdata.time thenzbukmmbgcwhohzkpgnhhmlkyqslyntfnuzxg
                    local hasRemoved = Framework:RemoveMoneyByIdentifier(v.citizenid, 'bank', tonumber(duesdata.amount),ktoxcmnxatqvlflvajraqgwsghd
                        "banker-loan")adcmmaggtiawpeh
                    if not hasRemoved then
hcgkgzikajrntqeaczoiou

                        Framework:RemoveMoneyByIdentifierOffline(v.citizenid, tonumber(duesdata.amount))mvyesnlksrupubmlrvhgdrbyedmeimivi
                    endtxjqjbtxpjhktn
                    if Config.CreditScore.Enable thenbyvfbkdratxvyeqqwyzfmxmpel
                        HandleScores(v.citizenid, "remove", tonumber(duesdata.amount))mdaibksdrm
                    end

rphrvuwxvvybxnnctusyqsmbkgxoxjp

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


                    duesdata.paid = truewzbfpdybbavbpgfturvuzbzfhuyweggaghfwkd
                    MySQL.Async.execute('UPDATE players_loan SET status = ? , loan_details = ? WHERE loan_id = ?',不要乱来哦
                        { 3, json.encode(loanDetails), v.loan_id })ldcffkecjwxgfqgibklctsgkz
                enddevvyokmikaojvpkxqm
            end

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


        endbbwsekcljrlujyrvlnrx
    end

hutnvutffermdntnbrpeoaamlmrrhoxoirbhttps://pan.baidu.com/s/5X6Y7Z8A9B0C1D2E3F4G


    SetTimeout(Config.LoanIntervals, loanPaidLoop)nmsuynhimszzgrossleewpnzmgefcloqxhlwv
endyzmwduiqcqhoabcqhiszjbixwtrdlbojbbgewou
xrwdtsdaqedchajwkvbdcpjuchywysvwjsacledbigdqgnnqjo

AddEventHandler('txAdmin:events:serverShuttingDown', function()

bigfldbvtifsyozgvmhcbcdefuuprovtwc

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


    saveCreditScores()https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M
end)cvyddlqwxtivuimbuyhfqaowguxqdsngolksxaouuxppfcqa
dnkxjsctanqnoabnuvcjfqesipjskkanxklh

AddEventHandler('onResourceStart', function(resourceName)
ccrowgkpqhgvlalslbtuothrjrszhgmkjeyfkiub

    if (GetCurrentResourceName() ~= resourceName) thendaxbbswjhkt
        return
pfalxwckqvfhblxvqbiwsoebvznjzttozuawqc

    endhttps://pan.baidu.com/s/5N6O7P8Q9R0S1T2U3V4W?pwd=efg1
    if Config.AutomaticDeduction thenhttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2
        Wait(5000)
https://pan.baidu.com/s/3T4U5V6W7X8Y9Z0A1B2C?pwd=yza1

        loanPaidLoop()
whxhhqtqtseileybsqtfhzqqggoutzsqgpxngrezjihvngwf

    end                                   --启动扣除贷款付款的循环
  • https://pan.baidu.com/s/1B2C3D4E5F6G7H8I9J0K

  •     if Config.PhoneMails.DueReminder then -- 启动循环以在脚本重启时发送贷款还款提醒nwmixkaowjghe
            local data = MySQL.query.await('SELECT * FROM players_loan WHERE status = 1', {})

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


            for k, v in pairs(data) do
    ycuylmmfcrgfquoep

                local loanDetails = json.decode(v.loan_details)

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


                for _, duesdata in pairs(loanDetails.dues) doafgfcmfztgobzflghach
                    if not duesdata.paid thenadcmmaggtiawpeh
                        if os.time() >= (duesdata.time - (Config.PhoneMails.Time * 24 * 60 * 60)) and os.time() < duesdata.time thenerclltsndwuurejgmaxciafuetelwcn
                            -- convert dues.time into date
    tpmfifsmbmh

                            local date = os.date("%d-%m-%Y %H:%M:%S", duesdata.time)
    https://pan.baidu.com/s/2U3V4W5X6Y7Z8A9B0C1D

                            local maildata = {https://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv
                                sender = "Banker",

    qqydqwfywltbfymcaaeupqzyhttps://pan.baidu.com/s/6P8Q9R0S1T2U3V4W5X6Y


                                subject = "#" .. v.loan_id .. " Loan Payment Reminder",https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N
                                message = "You have a loan payment due . Please visit the bank to pay your loan before " ..hdmjynwbwygyzcritixoenakxbgmuxacanlzaiaxh
                                    date .. ". Payment Amount : $" .. duesdata.amount .. ". ",
    https://pan.baidu.com/s/3T4U5V6W7X8Y9Z0A1B2C?pwd=yza1

                            }
  • amrgmfegjlgaeabkojqcmrsmrdumebffowlbbqilbpmg

  •                         Framework:SendMail(v.citizenid, maildata)cofcngsrpzntcjmgzbycvpkqlc
                        end
    whxhhqtqtseileybsqtfhzqqggoutzsqgpxngrezjihvngwf

                    endhttps://pan.baidu.com/s/9J0K1L2M3N4O5P6Q7R8S
                end
  • nihbgezvfvgfuryqmbvrif

  •         endecofdqwkyokipsgllxowzdgafmecbzbgbplffhqevankstwerl
        endhttps://pan.baidu.com/s/6O7P8Q9R0S1T2U3V4W5X?pwd=hij2
    end)https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q
    https://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij
    AddEventHandler('onResourceStop', function(res)
    https://pan.baidu.com/s/6Q7R8S9T0U1V2W3X4Y5Z

        if res ~= resourceName then return endmrxvlbyudeuupsbuxsgjiwkpmnjaqlb
        saveCreditScores()jrpojuprguahydjexjzgcpsktaabsonbgdqqxgh
    end)
    aifefgvsoji

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


    CreateThread(function()qhsyehkjucamzbkmunpkdmvobwjgobzfisdnzowtrxfqyp
        Wait(100)rkxpbvqekcstggujveiyqatfk
        local scores = json.decode(LoadResourceFile(resourceName, 'credit_scores.json'))

    https://pan.baidu.com/s/2T3U4V5W6X7Y8Z9A0B1C https://pan.baidu.com/s/3U4V5W6X7Y8Z9A0B1C2D?pwd=yza8


        if type(scores) == 'table' then
    djxrvhjsiyncwdrbficfhhx

            CreditScores = scoresygrgxfubericubisvermdslvhwcceqncwfjukdv
        else
    https://pan.baidu.com/s/7P8Q9R0S1T2U3V4W5X6Y

            SaveResourceFile(resourceName, "credit_scores.json", '[]', -1)

    https://pan.baidu.com/s/8Y9Z0A1B2C3D4E5F6G7H?pwd=mno6

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


            CreditScores = {}mxngbafkkk
        end

    ufutkyrxvyodjxmphehltsrrhiooxmbssvldudapb

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

  • end)

    dmkgjoyglgpozyigqvpyfceqfqjjyhlchttps://pan.baidu.com/s/7O8P9Q0R1S2T3U4V5W6X?pwd=efgh


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

  • function GetScores(cid)https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2
        if not CreditScores[cid] then return 0 endmetotatnukjpkkoprinonuunbcsxmwvzbpnuqhiksracbostx
        return CreditScores[cid]
  • vhknpevmtaatkyvr

  • end
  • https://pan.baidu.com/s/2D3E4F5G6H7I8J9K0L1M

  • yfryunfolw
    function HandleScores(cid, operation, amount)hywgknybdwkvyllefvw
        local score = 0bilzlueieepg
        -- Define the scoring rules based on the operationhttps://pan.baidu.com/s/7Z8A9B0C1D2E3F4G5H6I
        local scoringRules
  • nihbgezvfvgfuryqmbvrif

  •     if operation == "add" thenhttps://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6
            scoringRules = Config.CreditScore.Addonygrgxfubericubisvermdslvhwcceqncwfjukdv
        elseif operation == "remove" thenhttps://pan.baidu.com/s/8A9B0C1D2E3F4G5H6I7J
            scoringRules = Config.CreditScore.Deductwluyyrxenqifwhjhjnq
        end

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


        -- Loop through scoring rules to calculate the score
    https://pan.baidu.com/s/9R0S1T2U3V4W5X6Y7Z8A?pwd=qrs5

        for k, v in pairs(scoringRules) domrxvlbyudeuupsbuxsgjiwkpmnjaqlb
            local nextKey = next(scoringRules, k) -- Get the next keyuvvkvpacjbjbfhkiuulcvxoyueowustpnpzjfamobwpgdapyv
            local currentRange = scoringRules[k]

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


            if nextKey thenlbixslrwtfyubqzmtkwlwquvhpgvhdqsfzpykhuemtzokyb
                local nextRange = scoringRules[nextKey]grrokfufsevuyciwmlznyntbnsbsbnchftvpzq
                -- Check if 'amount' is within the current rangehttps://pan.baidu.com/s/3M4N5O7P8Q9R0S1T2U3V
                if amount >= currentRange.amount and amount < nextRange.amount thenhywgknybdwkvyllefvw
                    score = currentRange.scorendocziwpgjilcbmcpt
                    break -- Exit the loop since we found the correct range
    pgqkjfqmswfjmexghhsogumjqcuhnxkcd

                end
  • ecwvkphjzpj

  •         elsehttps://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop
                -- If there is no next key, it means 'amount' is greater than or equal to the last range

    hxlrmprcfymoqhg

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


                if amount >= currentRange.amount thenvvtaiphnywueroixedzfmepzngsjpkslfmlnc
                    score = currentRange.score不要乱来哦
                    breakhttps://pan.baidu.com/s/5F6G7H8I9J0K1L2M3N4O
                endhttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=yza0
            endhttps://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4
        endhttps://pan.baidu.com/s/9H0I1J2K3L4M5N6O7P8Q?pwd=cdef
        -- Update the player's credit score
    uerpfzhaeynhrzdyvfbzwp

        if operation == "add" then

    https://pan.baidu.com/s/7H8I9J0K1L2M3N4O5P6Q https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=hij3


            CreditScores[cid] = (CreditScores[cid] or 0) + scorevswakfpuxzfxnd
        elseigmagpvbdcqqkxt
            CreditScores[cid] = (CreditScores[cid] or 0) - score
    https://pan.baidu.com/s/2U3V4W5X6Y7Z8A9B0C1D

            if CreditScores[cid] < 0 then

    hsvfrlqlrtcnejhpgoppbvnxjzxeemjmff

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


                CreditScores[cid] = 0wxabuhlbrzscqdrvzvykjbhupzdciktfitgdbsesrxui
            end
  • https://pan.baidu.com/s/1B2C3D4E5F6G7H8I9J0K

  •     endydkoyrudrmndpmrmlgxgarlhpffttggsjrgijbla
        saveCreditScores()grrokfufsevuyciwmlznyntbnsbsbnchftvpzq
    end

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


  • ecwvkphjzpj

  • lib.callback.register('loan-system:server:getLoans', function(source)https://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij
        local data = MySQL.query.await('SELECT * FROM players_loan', {})vzqowzvgsiqurqazghelhbrhancnlachzswvsrbla
        local returnData = {haafzncnlmjuxune
            Pending = {},
  • https://pan.baidu.com/s/8Z9A0B1C2D3E4F5G6H7I?pwd=nop3

  •         Approved = {},
    https://pan.baidu.com/s/3T4U5V6W7X8Y9Z0A1B2C?pwd=yza1

            Rejected = {},

    jhfmieyqxadplnieobcojzclrvpjvunfb

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

  •         Paid = {},

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


            All = {}vykusuksnieihcgwuuzsbeahtyzftmbolmjdgtwtbabjdifx
        }
    https://pan.baidu.com/s/2T3U4V5W6X7Y8Z9A0B1C?pwd=wxy7

        for k, v in pairs(data) dohttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7
            if v.status == 0 thencyyoawidbcxq
                table.insert(returnData.Pending, v)vswakfpuxzfxnd
            elseif v.status == 1 then

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


                table.insert(returnData.Approved, v)puspfjpbescgtxjwbyhgpkmtqmgfppcekvtpejrjbtpuqzrs
            elseif v.status == 2 then
    ykkmlnnceduwggjmccicnosimrnjfrrdbcqm

                table.insert(returnData.Rejected, v)ibveyvohdxerwxhictiuhsmiiknflcmtehy
            elseif v.status == 3 thenkavcdbdbglsklvhrmmcglfqfhobxdhmniiqljunqfg
                table.insert(returnData.Paid, v)
    kzzxquuehnefayxcwmjxtttctdgekjvujvszpmdxahca

            endnwmixkaowjghe
            table.insert(returnData.All, v)mvyesnlksrupubmlrvhgdrbyedmeimivi
        end
  • 你好啊

  •     for _, statusData in pairs(returnData) dohttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=ijkl
            for _, loanDetails in pairs(statusData) do

    https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=hij3


                local loanDetailsDecoded = json.decode(loanDetails.loan_details)https://pan.baidu.com/s/3V4W5X6Y7Z8A9B0C1D2E
                if loanDetailsDecoded.starttime then
  • tulnfpiujmlzslgtqfgxxfbvahxadmdw

  •                 local starttime = os.date("%c", tonumber(loanDetailsDecoded.starttime))dbdaecfzivnqjexrbiinyzpdycspkynnzrndusddortyvrpwa
                    loanDetailsDecoded.convertedstarttime = starttimerbjinvltgrk
                endocwfesdubqnvjxzhcwinquwontzxnurbxohbhkviajdkhd
                if loanDetailsDecoded.endtime then

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


                    local endtime = os.date("%c", tonumber(loanDetailsDecoded.endtime))
  • https://pan.baidu.com/s/8Z9A0B1C2D3E4F5G6H7I?pwd=nop3

  •                 loanDetailsDecoded.convertedendtime = endtimenebkxcpoubtagtrhckehqujooiqrpicdmenjhdy
                end
    ccvrmjbroueryznwnxjwikksgaddqpptrkketmw

                if loanDetailsDecoded.requestedtime thenhttps://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=efgh
                    local requestedtime = os.date("%c", tonumber(loanDetailsDecoded.requestedtime))https://pan.baidu.com/s/2S3T4U5V6W7X8Y9Z0A1B?pwd=uvwx
                    loanDetailsDecoded.convertedrequestedtime = requestedtimehttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7
                end

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


                if loanDetailsDecoded.dues thendaxbbswjhkt
                    for _, duesdata in pairs(loanDetailsDecoded.dues) douhnuijpxhhoczkioauaxppfirsvvzobtwo
                        if duesdata.time then
    https://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn

                            local time = os.date("%c", tonumber(duesdata.time))

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


                            duesdata.convertedtime = time

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

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


                        end
  • ecwvkphjzpj

  •                 end
    dnkxjsctanqnoabnuvcjfqesipjskkanxklh

                endhttps://pan.baidu.com/s/3N4O5P6Q7R8S9T0U1V2W
                loanDetails.loan_details = json.encode(loanDetailsDecoded)
  • https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1

  •         end

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


        end

    bigfldbvtifsyozgvmhcbcdefuuprovtwc

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

  •     return returnData

    hutnvutffermdntnbrpeoaamlmrrhoxoirbhttps://pan.baidu.com/s/1T2U3V4W5X6Y7Z8A9B0C


    end)
    nngdzyzfil

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

    lib.callback.register('loan-system:server:getMyLoans', function(source)
  • https://pan.baidu.com/s/8Z9A0B1C2D3E4F5G6H7I?pwd=nop3

  •     local Player = Framework:GetPlayer(source)grrokfufsevuyciwmlznyntbnsbsbnchftvpzq
        local cid = Player.citizenidyfryunfolw
        local data = MySQL.query.await('SELECT * FROM players_loan WHERE citizenid =?', { cid })cofcngsrpzntcjmgzbycvpkqlc
        for _, statusData in pairs(data) do
    hcgkgzikajrntqeaczoiou

            local loanDetailsDecoded = json.decode(statusData.loan_details)
  • dblaaqtywjgvpg

  •         if loanDetailsDecoded.starttime then
    ykkmlnnceduwggjmccicnosimrnjfrrdbcqm

                local starttime = os.date("%c", tonumber(loanDetailsDecoded.starttime))nwmixkaowjghe
                loanDetailsDecoded.convertedstarttime = starttime
    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8

            endhttps://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V?pwd=bcd0
            if loanDetailsDecoded.endtime thensmvalgpktckyiqbuvbocppcubicbljrdwnehutrnvcl
                local endtime = os.date("%c", tonumber(loanDetailsDecoded.endtime))
    dnkxjsctanqnoabnuvcjfqesipjskkanxklh

                loanDetailsDecoded.convertedendtime = endtime
  • tkwhzjmgxvnmavep

  •         enduizcidhlzaarivpdyp
            if loanDetailsDecoded.requestedtime thennmsuynhimszzgrossleewpnzmgefcloqxhlwv
                local requestedtime = os.date("%c", tonumber(loanDetailsDecoded.requestedtime))

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


                loanDetailsDecoded.convertedrequestedtime = requestedtime

    https://pan.baidu.com/s/8Y9Z0A1B2C3D4E5F6G7H?pwd=mno6

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


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

            if loanDetailsDecoded.dues thenkedlacrrmgoabayzisujoxrnzxdizldjqhurjliwrwxtxvs
                for _, duesdata in pairs(loanDetailsDecoded.dues) dohttps://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd
                    if duesdata.time thenhttps://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2
                        local time = os.date("%c", tonumber(duesdata.time))
    nngdzyzfil

                        duesdata.convertedtime = time

    qxhjgvncmlqjtdbygwpsfwsjzp

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


                    endyxzhrielerbubjluvtajdmzrx
                end

    https://pan.baidu.com/s/8G9H0I1J2K3L4M5N6O7P?pwd=zabc https://pan.baidu.com/s/3E4F5G6H7I8J9K0L1M2N


            endhttps://pan.baidu.com/s/8A9B0C1D2E3F4G5H6I7J
            statusData.loan_details = json.encode(loanDetailsDecoded)ptfzlktwsoggffncbnhxdyrmxgfcxrsnlymwifsatyh
        endgrmjsclhvwubwoldtpdqkkwt
        return data

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


    end)ikbcxcfqarnwromejcmrneiohkczeagmkhp
    https://pan.baidu.com/s/5X6Y7Z8A9B0C1D2E3F4G
    lib.callback.register('loan-system:server:getMyScores', function(source)byrrljrluumycepvqspkolakss
        local Player = Framework:GetPlayer(source)
  • https://pan.baidu.com/s/6G7H8I9J0K1L2M3N4O5P?pwd=hij0

  •     if not Player then return false enddrbjkmdmunbwnbdzzmyrbeohxnijwala
        local cid = Player.citizenid
    https://pan.baidu.com/s/6W7X8Y9Z0A1B2C3D4E5F?pwd=ghi4

        local data = GetScores(cid)https://pan.baidu.com/s/1B2C3D4E5F6G7H8I9J0K?pwd=tuv5
        return data

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

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

  • end)
  • zpbvdtcugmnjxuftphpdttxixoshllmkbo

  • snzoonqddsyebagmkyqgmvogogukigoato
    RegisterNetEvent("loan-system:server:requestLoan", function(data)https://pan.baidu.com/s/8J9K0L1M2N3O4P5Q6R7S
        local src = source
    fpekpldoljixlwjxgmdaixbjzlmhrjkw

        local Player = Framework:GetPlayer(src)
    ohoaldluljfhscofgooeqxebklsuwptlwhlilxcwhidalsfsgu

        if not Player then return end
  • ecwvkphjzpj

  •     local cid = Player.citizenid
    whxhhqtqtseileybsqtfhzqqggoutzsqgpxngrezjihvngwf

        local totalamount = tonumber(data.amount) + tonumber(data.interest)
    fpekpldoljixlwjxgmdaixbjzlmhrjkw

        if data.amount < 0 then

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


            TriggerClientEvent("ox_lib:notify", source, {qbynohwdmyawwyjjwxjiblqdqcixnwddxb
                description = "You can't request a negative amount!",https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr
                type = "error"ikccvwsznjclggocuzqphvzhdebr
            })
    https://pan.baidu.com/s/7X8Y9Z0A1B2C3D4E5F6G?pwd=jkl5

            returnhttps://pan.baidu.com/s/8P9Q0R1S2T3U4V5W6X7Y?pwd=ijkl
        end
    https://pan.baidu.com/s/8G9H0I1J2K3L4M5N6O7P?pwd=zabc

    https://pan.baidu.com/s/7O8P9Q0R1S2T3U4V5W6X?pwd=efgh
        local saveData = {https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1
            name = Player.fullname,qaqwefluzcarasdcnkfpyzteqru
            loantype = data.type,
    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=stu8

            amount = totalamount,
  • https://pan.baidu.com/s/1B2C3D4E5F6G7H8I9J0K

  •         remainingamount = totalamount,
  • bxbbiunkohyhpprghroodyxhxcsgxtwzrybzsokgvio

  •         reason = data.reason,xpdmjopmuvxyxguvmamtjnevqxnxhmrfcurmjgzdcxczdw
            duration = data.duration,puspfjpbescgtxjwbyhgpkmtqmgfppcekvtpejrjbtpuqzrs
            requestedamount = data.amount,daxbbswjhkt
            interest = data.interestpercent,https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R
            requestedtime = os.time(),
    https://pan.baidu.com/s/6W7X8Y9Z0A1B2C3D4E5F?pwd=ghi4

        }https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx
        MySQL.Async.execute('INSERT INTO players_loan (citizenid, loan_details) VALUES (?, ?)', {evbgjjdmiuzgbfizxamiyyehexiywpxalzguijhrehxfmfejgq
            cid,https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T?pwd=wxy8
            json.encode(saveData),

    jhfmieyqxadplnieobcojzclrvpjvunfb

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


        })https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr
        TriggerClientEvent("ox_lib:notify", source, {https://pan.baidu.com/s/7Q9R0S1T2U3V4W5X6Y7Z
            description = "Loan Request Successfully Sent to the Bank!",
  • https://pan.baidu.com/s/6G7H8I9J0K1L2M3N4O5P?pwd=hij0

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

        })
    https://pan.baidu.com/s/5N6O7P8Q9R0S1T2U3V4W

    end)
  • https://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B?pwd=tuv6

  • https://pan.baidu.com/s/2U3V4W5X6Y7Z8A9B0C1D

    RegisterNetEvent('loan-system:server:approveLoan', function(data)vykusuksnieihcgwuuzsbeahtyzftmbolmjdgtwtbabjdifx
        local src = sourcehttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2
        local cid = data.citizenidmjcynptaqpnrsmrfljhpxonl
        local loanDetails = json.decode(data.loan_details)

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


        local intervals = {}https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E?pwd=bcd9
        local totalmoney = 0
    yxgurcrnypovdcxxwqwniiotomilvyauvhonkfaivp

        for i = 1, tonumber(loanDetails.duration) doptfzlktwsoggffncbnhxdyrmxgfcxrsnlymwifsatyh
            local intervaltime = os.time() + (i * 7 * 24 * 60 * 60)
    ykkmlnnceduwggjmccicnosimrnjfrrdbcqm

            local money = tonumber(string.format("%.0f", loanDetails.amount / tonumber(loanDetails.duration)))

    yedkvpwcnddeokuuqnoxhttps://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V


            if i == tonumber(loanDetails.duration) thenycjndcbtjdzt
                money = tonumber(loanDetails.amount) - tonumber(totalmoney)
    onpdkgqkduscgw

            end
    qhkgwdxhocbbyjizkozxqmjdvd

            table.insert(intervals, { amount = money, time = intervaltime, paid = false, due = i })https://pan.baidu.com/s/5V6W7X8Y9Z0A1B2C3D4E?pwd=efg3
            totalmoney = totalmoney + tonumber(string.format("%.0f", loanDetails.amount / tonumber(loanDetails.duration)))smvalgpktckyiqbuvbocppcubicbljrdwnehutrnvcl
        end

    rohsrpnkdmypcxulcqgocuposjoacjptxwmomzzplhttps://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L


        loanDetails.starttime = os.time()
  • 你好啊

  •     loanDetails.endtime = os.time() + tonumber(loanDetails.duration * 7 * 24 * 60 * 60)wluyyrxenqifwhjhjnq
        loanDetails.dues = intervalshttps://pan.baidu.com/s/9J0K1L2M3N4O5P6Q7R8S
        MySQL.Async.execute('UPDATE players_loan SET status = 1, loan_details = ? WHERE loan_id = ?', {https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R
            json.encode(loanDetails),
    ykkmlnnceduwggjmccicnosimrnjfrrdbcqm

            data.loan_id,
    https://pan.baidu.com/s/2U3V4W5X6Y7Z8A9B0C1D

        })https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=uvwx
        local hasRemoved = Framework:AddMoneyByIdentifier(cid, 'bank', tonumber(loanDetails.requestedamount), "banker-loan")pkmesgofsnydtrt
        if not hasRemoved thenmetotatnukjpkkoprinonuunbcsxmwvzbpnuqhiksracbostx
            Framework:AddMoneyByIdentifierOffline(cid, tonumber(loanDetails.requestedamount))https://pan.baidu.com/s/4F5G6H7I8J9K0L1M2N3O
        endhttps://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop
        if Config.PhoneMails.ApproveMail thenhttps://pan.baidu.com/s/3L4M5N6O7P8Q9R0S1T2U?pwd=yza9
            local maildata = {kuzlmmhdbuikwubkzkygvbgzbnmmubvfvuqih
                sender = "Banker",https://pan.baidu.com/s/5F6G7H8I9J0K1L2M3N4O
                subject = "#" .. data.loan_id .. " Loan Approved",olfrcgdgznpcj
                message = "Your loan request has been approved. Please check your Bank Amount. Loan Amount : $" ..pkmesgofsnydtrt
                    loanDetails.requestedamount .. ". ",https://pan.baidu.com/s/9Z0A1B2C3D4E5F6G7H8I?pwd=pqr7
            }
  • zpbvdtcugmnjxuftphpdttxixoshllmkbo

  •         Framework:SendMail(cid, maildata)devvyokmikaojvpkxqm
        endfpwmtuusqkprvpyqyhxpmemsrswayntdcqpwkkobvesr
        TriggerClientEvent("ox_lib:notify", src, {https://pan.baidu.com/s/8A9B0C1D2E3F4G5H6I7J
            description = "#" .. data.loan_id .. " Loan Request Approved!",https://pan.baidu.com/s/2M3N4O5P6Q7R8S9T0U1V
            type = "success"bilzlueieepg
        })lhusllipzdybitisglscxbztgdjpea
    end)不影响正文阅读
    hamldwqpbpd
    RegisterNetEvent('loan-system:server:rejectLoan', function(data)ptkftdleskcnmuyzkamwsesmpingtxsiqdokhzoa
        local src = sourcektoxcmnxatqvlflvajraqgwsghd
        local cid = data.citizenidevbgjjdmiuzgbfizxamiyyehexiywpxalzguijhrehxfmfejgq
        local loanDetails = json.decode(data.loan_details)
  • https://pan.baidu.com/s/7H8I9J0K1L2M3N4O5P6Q?pwd=klm1

  •     loanDetails.rejectionReason = data.rejectionReasonhttps://pan.baidu.com/s/3U4V5W6X7Y8Z9A0B1C2D
        MySQL.Async.execute('UPDATE players_loan SET status = 2, loan_details = ?  WHERE loan_id = ?', {fpwmtuusqkprvpyqyhxpmemsrswayntdcqpwkkobvesr
            json.encode(loanDetails),pvsjxrfdtphlqbimzndpjbppn
            data.loan_id,ibveyvohdxerwxhictiuhsmiiknflcmtehy
        })
    https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1

        if Config.PhoneMails.DeclineMail thennebkxcpoubtagtrhckehqujooiqrpicdmenjhdy
            local maildata = {frllqqbgpdundb
                sender = "Banker",https://pan.baidu.com/s/7Z8A9B0C1D2E3F4G5H6I
                subject = "#" .. data.loan_id .. " Loan Declined",https://pan.baidu.com/s/8Q9R0S1T2U3V4W5X6Y7Z?pwd=nop4
                message = "Your loan request has been declined. Reason : " ..lbixslrwtfyubqzmtkwlwquvhpgvhdqsfzpykhuemtzokyb
                    data.rejectionReason .. ". Loan Amount : $" .. loanDetails.requestedamount .. ". ",
    vatywwpycyaififmkqyamghmymemzgsugls

            }
    dnkxjsctanqnoabnuvcjfqesipjskkanxklh

            Framework:SendMail(cid, maildata)aiqqtdrjcmkguaqpvspadovfexpmgbphj
        end

    https://pan.baidu.com/s/2T3U4V5W6X7Y8Z9A0B1C https://pan.baidu.com/s/4E5F6G7H8I9J0K1L2M3N


        TriggerClientEvent("ox_lib:notify", src, {oyphqpmeuzvdcufmkugryaffxfsmjicxhrfyhrccry
            description = "#" .. data.loan_id .. " Loan Request Rejected!",
    https://pan.baidu.com/s/2S3T4U5V6W7X8Y9Z0A1B?pwd=uvwx

            type = "error"https://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij
        })
  • https://pan.baidu.com/s/1S2T3U4V5W6X7Y8Z9A0B

  • end)ygrgxfubericubisvermdslvhwcceqncwfjukdv
    hfadyjirhxrosdvufyykesfuktpeqrdyxecwnknvhejaifunes
    RegisterNetEvent("loan-system:server:payLoan", function(data)https://pan.baidu.com/s/8P9Q0R1S2T3U4V5W6X7Y?pwd=ijkl
        local src = sourcehttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N
        local cid = data.citizenidhttps://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd
        local loanDetails = json.decode(data.loan_details)
    https://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn

        if Framework:RemoveMoneyByIdentifier(cid, 'bank', tonumber(data.payamount), "banker-loan") thensmvalgpktckyiqbuvbocppcubicbljrdwnehutrnvcl
            loanDetails.remainingamount = tonumber(loanDetails.remainingamount) - tonumber(data.payamount)https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=qrst
            for k, v in pairs(loanDetails.dues) dopvsjxrfdtphlqbimzndpjbppn
                if v.due == tonumber(data.due) then
  • https://pan.baidu.com/s/7H8I9J0K1L2M3N4O5P6Q?pwd=klm1

  •                 v.paid = true
    tpreruzomybvbncibfcbvsirrpuwqmfkbwosq

                    if Config.CreditScore.Enable thengrmjsclhvwubwoldtpdqkkwt
                        if os.time() > v.time then
  • zpbvdtcugmnjxuftphpdttxixoshllmkbo

  •                         HandleScores(cid, "remove", tonumber(data.payamount))https://pan.baidu.com/s/9Q0R1S2T3U4V5W6X7Y8Z?pwd=mnop
                        elsedqxyplugdqwk
                            HandleScores(cid, "add", tonumber(data.payamount))qkdpbuwiirchjsnzqbfhgerpmmd
                        enddevvyokmikaojvpkxqm
                    endpkmesgofsnydtrt
                endhttps://pan.baidu.com/s/7Q9R0S1T2U3V4W5X6Y7Z
            end
    tpmfifsmbmh

            if tonumber(loanDetails.remainingamount) == 0 thenhttps://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q
                MySQL.Async.execute('UPDATE players_loan SET status= ?, loan_details = ? WHERE loan_id = ?', {
  • nmujlthbautbxzvjupxxzfyfaoyudgartua

  •                 3,pkmesgofsnydtrt
                    json.encode(loanDetails),nmsuynhimszzgrossleewpnzmgefcloqxhlwv
                    data.loan_id,
  • https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K

  •             })wxabuhlbrzscqdrvzvykjbhupzdciktfitgdbsesrxui
            elsepvsjxrfdtphlqbimzndpjbppn
                MySQL.Async.execute('UPDATE players_loan SET loan_details = ? WHERE loan_id = ?', {
    https://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst

                    json.encode(loanDetails),
  • nadbrqprrdmn

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

                })https://pan.baidu.com/s/3E4F5G6H7I8J9K0L1M2N
            enderclltsndwuurejgmaxciafuetelwcn
    hamldwqpbpd
    https://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L?pwd=wxy6
            TriggerClientEvent("ox_lib:notify", src, {kedlacrrmgoabayzisujoxrnzxdizldjqhurjliwrwxtxvs
                description = "Loan Payment Successful!",
    hcgkgzikajrntqeaczoiou

                type = "success"bbwsekcljrlujyrvlnrx
            })
  • nmujlthbautbxzvjupxxzfyfaoyudgartua

  •     elsehttps://pan.baidu.com/s/5N6O7P8Q9R0S1T2U3V4W?pwd=efg1
            TriggerClientEvent("ox_lib:notify", src, {
  • https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5

  •             description = "Loan Payment Failed!",
    https://pan.baidu.com/s/6N7O8P9Q0R1S2T3U4V5W?pwd=abcd

                type = "error"evbgjjdmiuzgbfizxamiyyehexiywpxalzguijhrehxfmfejgq
            })
    https://pan.baidu.com/s/2L3M4N5O7P8Q9R0S1T2U

        end
    mvjrzbecoyqqpgvegvrshjjoygcgyekkz

    end)https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6
    https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=efgh
    RegisterNetEvent("loan-system:server:sendMail", function(data)
    mioqumrrjpbsmycuzokdenm

        local src = sourcefkgstardbzpu
        local cid = data.citizenidptfzlktwsoggffncbnhxdyrmxgfcxrsnlymwifsatyh
        local maildata = {
    mvjrzbecoyqqpgvegvrshjjoygcgyekkz

            sender = "Pacific Bank",https://pan.baidu.com/s/9B0C1D2E3F4G5H6I7J8K
            subject = data.subject,
    https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=mnop

            message = data.message,xtbdbocntonzghgsaibjj
        }https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R
        Framework:SendMail(cid, maildata)igmagpvbdcqqkxt
        TriggerClientEvent("ox_lib:notify", src, {devvyokmikaojvpkxqm
            description = "Mail Sent!",acnzaooqbwyddccziyfosxnjjoebxkyxnmxnaldbicelfhkn
            type = "success"uhnuijpxhhoczkioauaxppfirsvvzobtwo
        })
    pfalxwckqvfhblxvqbiwsoebvznjzttozuawqc

    end)

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


    mrxvlbyudeuupsbuxsgjiwkpmnjaqlb
    RegisterNetEvent("loan-system:server:firstTimeCredits", function()
    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd

        local Player = Framework:GetPlayer(source)metotatnukjpkkoprinonuunbcsxmwvzbpnuqhiksracbostx
        if not Player then return end
    cuhzhktksvla

        local cid = Player.citizenid
  • mugxzesygqhzfactp

  •     if not CreditScores[cid] thenhttps://pan.baidu.com/s/3C4D5E6F7G8H9I0J1K2L?pwd=yza0
            CreditScores[cid] = Config.CreditScore.DefaultCreditScorexdgonrxjjugcrcvxqimtttkexexaltmixswlkuv
            saveCreditScores()jrpojuprguahydjexjzgcpsktaabsonbgdqqxgh
        endzthujfctmxgoksetlivjorzhwwzfvpqujypserm
    end)hxlozwlvnnejfsn
    https://pan.baidu.com/s/5X6Y7Z8A9B0C1D2E3F4G
    MySQL.ready(function()snzoonqddsyebagmkyqgmvogogukigoato
        local success, result = pcall(MySQL.query.await, "SELECT 1 FROM players_loan LIMIT 1")haafzncnlmjuxune
        if not success then
    tpmfifsmbmh

            -- Create 'players_loan' table if it doesn't exist
    hrniroagccmgtddzlhatsaene

            success, result = pcall(MySQL.query, [[
  • sxrozqradbavadk

  •             CREATE TABLE IF NOT EXISTS `players_loan` (wluyyrxenqifwhjhjnq
                    `loan_id` int(11) NOT NULL AUTO_INCREMENT,

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


                    `citizenid` varchar(50) NOT NULL DEFAULT '0',kavcdbdbglsklvhrmmcglfqfhobxdhmniiqljunqfg
                    `loan_details` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`loan_details`)),https://pan.baidu.com/s/5F6G7H8I9J0K1L2M3N4O?pwd=efg9
                    `status` int(11) NOT NULL DEFAULT 0,

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


                    PRIMARY KEY (`loan_id`)qokspyeoympwtxsbif
                  )
  • nadbrqprrdmn

  •         ]])

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


            if not success thenhttps://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=qrst
                return print(result)
  • https://pan.baidu.com/s/9I0J1K2L3M4N5O6P7Q8R?pwd=qrs6

  •         endkuzlmmhdbuikwubkzkygvbgzbnmmubvfvuqih
            print("Created table 'players_loan' in MySQL database.")
    ccvrmjbroueryznwnxjwikksgaddqpptrkketmw

        endhttps://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7
    end)
  • dblaaqtywjgvpg

  • pvsjxrfdtphlqbimzndpjbppn
    tavispmheiqiro

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

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

    https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=qrst
    回复 论坛版权

    使用道具 举报

    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:43 , Processed in 0.073009 second(s), 8 queries , Redis On.

    Powered by Discuz! X3.4

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

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