猫史档案馆


更加简单!极简give代码!

用户:NysidlaNysidla查看:0 回复:1 评论:0 创建时间:2023-06-02T13:31:31


 

async function give(m, num, name, highestStack) {
    if (!highestStack || highestStack == 1) {
        if (m.bar.includes('空')) m.bar[m.bar.indexOf('空')] = name + '*' + num
        else m.bag.push(name + '*' + num)
    } else {
        let next = true
        for (let f = 0; f < num; f++) {
            for (let e of m.bar) {
                if (e.startsWith(name) && Number(e.slice(e.indexOf('*') + 1)) < highestStack) {
                    m.bar[m.bar.indexOf(e)] = `${name}*${Number(e.slice(e.indexOf('*') + 1)) + 1}`
                    next = false
                    break
                } else if (e == '空') {
                    m.bar[m.bar.indexOf('空')] = name + '*1'
                    next = false
                    break
                }
            } if (next) {
                if (m.bag.length == 0) {
                    m.bag.push(name + '*1')
                } else {
                    for (let i = 0; i < m.bag.length; i++) {
                        let ii = m.bag[i]
                        if (ii.startsWith(name) && Number(ii.slice(ii.indexOf('*') + 1)) < highestStack) {
                            m.bag[i] = `${name}*${Number(ii.slice(ii.indexOf('*') + 1)) + 1}`
                            break
                        } else if (m.bag.filter(e => e == name + '*' + highestStack).length == m.bag.filter(e => e.startsWith(name)).length) {
                            m.bag.push(name + '*1')
                            break
                        }
                    }
                }
            }
        }
    }  

这玩意是非常滴繁琐啊,来看看新版:

async function give(m, num, name, highestStack) {
    if (!highestStack || highestStack == 1) {
        if (m.bar.includes('空')) m.bar[m.bar.indexOf('空')] = name + '*' + num
        else m.bag.push(name + '*' + num)
    } else {
        for (let f = 0; f < num; f++) {
            let getbar = m.bar.find(e=>e.startsWith(name) && Number(e.slice(e.indexOf('*') + 1)) < highestStack)
            let getbag = m.bag.find(e=>e.startsWith(name) && Number(e.slice(e.indexOf('*') + 1)) < highestStack)
            if(getbar) {
                m.bar[m.bar.indexOf(getbar)] = `${name}*${Number(getbar.slice(getbar.indexOf('*') + 1)) + 1}`
            } else if(m.bar.includes('空')){
                m.bar[m.bar.indexOf('空')] = name + '*1'
            } else if(getbag){
                m.bag[m.bag.indexOf(getbag)] = `${name}*${Number(getbag.slice(getbag.indexOf('*') + 1)) + 1}`
            } else {
                m.bag.push(name + '*1')
            }
        }
    }
}

只用4个判断就可以做到前者的功能,具体教程:

async function give(m/*give的人(entity)*/, num/*数量*/, name/*名字*/, highestStack/*堆叠上限*/) {
    if (!highestStack || highestStack == 1) {
        if (m.bar.includes('空')) m.bar[m.bar.indexOf('空')] = name + '*' + num
        else m.bag.push(name + '*' + num)
        /*和旧版一样,无法堆叠的直接更改/push*/
    } else {
        for (let f = 0; f < num; f++) {
            let getbar = m.bar.find(e=>e.startsWith(name) && Number(e.slice(e.indexOf('*') + 1)) < highestStack)
            /*bar里是否有物品*/
            let getbag = m.bag.find(e=>e.startsWith(name) && Number(e.slice(e.indexOf('*') + 1)) < highestStack)
            /*bag是否有物品*/
            if(getbar) {
                m.bar[m.bar.indexOf(getbar)] = `${name}*${Number(getbar.slice(getbar.indexOf('*') + 1)) + 1}`
                /*判断,满足就更改*/
            } else if(m.bar.includes('空')){
                m.bar[m.bar.indexOf('空')] = name + '*1'
                /*判断,满足就更改*/
            } else if(getbag){
                m.bag[m.bag.indexOf(getbag)] = `${name}*${Number(getbag.slice(getbag.indexOf('*') + 1)) + 1}`
                /*判断,满足就push*/
            } else {
                m.bag.push(name + '*1')
                /*判断,满足就push*/
            }
        }
    }
}
/*
entity——bar快捷栏bag背包(物品栏):
entity.bar = ['空','空','空','空','空','空','空','空','空']
entity.bag = []
*/

 

 


回复

上一页1 页 / 共 1下一页
NysidlaNysidla

ddd

点赞0


评论