如何在Garry's Mod中使多个派系拥有同一扇门(NS)

我正在使用Nutscript框架为我正在开发的服务器,但我还没有找到如何让多个派系拥有同一扇门的方法。我在其他服务器上看到过这个功能,并一直在思考如何创建一个插件,在游戏中实现这一点。

设置一方派系拥有一扇门的代码如下:

nut.command.add("doorsetfaction", {
adminOnly = true,
syntax = "[string faction]",
onRun = function(client, arguments)
    -- 获取玩家正在查看的门
    local entity = client:GetEyeTrace().Entity

    -- 验证它是一扇门
    if (IsValid(entity) and entity:isDoor() and !entity:getNetVar("disabled")) then
        local faction

        -- 检查玩家是否提供了派系名称
        if (arguments[1]) then
            -- 将所有参数连接成一个字符串
            local name = table.concat(arguments, " ")

            -- 循环遍历每个派系,检查它们的唯一ID和名称
            for k, v in pairs(nut.faction.teams) do
                if (nut.util.stringMatches(k, name) or nut.util.stringMatches(L(v.name, client), name)) then
                    -- 这个派系与提供的字符串匹配
                    faction = v

                    -- 退出循环
                    break
                end
            end
        end

        -- 检查是否找到了派系
        if (faction) then
            entity.nutFactionID = faction.uniqueID
            entity:setNetVar("faction", faction.index)

            PLUGIN:callOnDoorChildren(entity, function()
                entity.nutFactionID = faction.uniqueID
                entity:setNetVar("faction", faction.index)
            end)

            client:notifyLocalized("dSetFaction", L(faction.name, client))
        -- 没有找到派系
        elseif (arguments[1]) then
            client:notifyLocalized("invalidFaction")
        -- 玩家没有提供派系
        else
            entity:setNetVar("faction", nil)

            PLUGIN:callOnDoorChildren(entity, function()
                entity:setNetVar("faction", nil)
            end)

            client:notifyLocalized("dRemoveFaction")
        end

        -- 保存门信息
        PLUGIN:SaveDoorData()
    end
end })

我应该如何复制这个代码,但修改它,使其适用于多个派系而不仅仅是一个?

点赞