代码之家  ›  专栏  ›  技术社区  ›  PatoFlamejanteTV

无法克隆和移动已克隆的模型。(Roblox工作室)

  •  0
  • PatoFlamejanteTV  · 技术社区  · 10 月前

    我试图制作一个脚本,每次有人订阅我的Youtube频道,父母(一个新手模特)都会被克隆并传送8个钉子, 但这根本不起作用,或者只是在原始模型中产生克隆。

    有人能帮帮我吗?

    另外,请 拜托 很抱歉,如果代码很难理解,那是因为所有的内容都是另一种语言(巴西葡萄牙语)。

    这是我的 现在的 LUA脚本:

    --!strict
    print("[YTLiveSubs]: Script inserido...")
    local http = game:GetService('HttpService')
    
    local channel_id = 'UCA4yZCVHlHZVknfesTU3XOg'
    local url = 'https://api.socialcounts.org/youtube-live-subscriber-count/'..channel_id
    
    local decoded
    local subs
    local diffsubs
    local data
    local success
    local finaldiffsubs -- aquele negócio que mostra a diferença de incritos.
    
    -- Ping
    if script:GetAttribute("Debug") == true then -- Checa se o modo "Debug" foi ativado
        print("[YTLiveSubs]: Iniciando teste de ping!...")
        local startTime = os.clock()
    
        local success, response = pcall(function()
            return http:GetAsync("https://www.google.com")
        end)
    
        if success then
            local deltaTime = os.clock() - startTime
            print("Pong!: " .. deltaTime .. " segundos")
        else
            print("Erro: " .. response)
        end
    end
    -- Fim do Ping
    
    function ChecarInscritos()
    success,data = pcall(function()
        return http:GetAsync(url)
    end)
        --if data then
        decoded = http:JSONDecode(data)
        subs = decoded["est_sub"]
        print(subs)
        --end
    end
    
    print("[YTLiveSubs]: Calculando First-run...")
    ChecarInscritos()
    while true do
        diffsubs = subs
        wait(3) -- em resumo, eu coloquei isso para não sobrecarregar a API
        -- Eu podia tranquilamente não ter feito isso, ou mudade o cooldown para 0.1 ou 0.5,
        -- Mas a API épública e eu não quero estragar o uso das outras pessoas. - PatoFlamejanteTV
        ChecarInscritos()
        print("[YTLiveSubs]: Inscritos atuais: " .. subs)
        --print("Pong!") -- Avisa que um novo "tick"
        print("[YTLiveSubs]: Novos inscritos: ".. subs - diffsubs) --matemáticas :nerd:
        finaldiffsubs = subs - diffsubs
        for i = 1, finaldiffsubs do
            local clone = game.Workspace.Noob:Clone()
            
            clone.Parent = game.Workspace
            local ogposition = script.Parent
            clone:PivotTo((0), (ogposition.PrimaryPart.CFrame - (Vector3.yAxis * 4)), (0))
            
            --clone:MoveTo(Vector3.new(0, 10, 0)) -- move 10 studs up in the y-axis from the origin
            clone.Name = "Noob"..i -- os "..i"s/"..i"ses (sla o plural) é pra fazer um
            clone.Humanoid.DisplayName = "Noob"..i -- efeito de "Noob1", "Noob2", etc.
            --clone.Humanoid.WalkSpeed = 16
            --clone.Humanoid.JumpPower = 50
            --clone.Humanoid.MaxHealth = 100
            --clone.Humanoid.Health = 100
            --clone.HumanoidRootPart.CFrame = game.Workspace.Noob.HumanoidRootPart -- nem eu sei o que é isso
            end
        print("[YTLiveSubs]: Spawned ".. finaldiffsubs .." Noobs!")
    end
    
    
    
    
    1 回复  |  直到 10 月前
        1
  •  0
  •   vijaysharma    10 月前

    我推荐阅读StackOverflow关于如何制作 Minimal and Reproducible Sample 无论如何, Roblox's documentation on PivotTo 显示它只接受一个CFrame参数。我猜你想创建一个与你在YouTube上的订阅者数量相匹配的noob堆栈。

    看起来你好像想创建一堆noobs。在这种情况下,你可以通过做一些数学运算来确定当前菜鸟的身高。

    for i = 1, finaldiffsubs do
        local clone = game.Workspace.Noob:Clone()
    
        clone.Parent = game.Workspace
        local ogposition = script.Parent
        clone:PivotTo(
            ogposition.PrimaryPart.CFrame * CFrame.new(0, 4 * (i + diffsubs), 0)
        )
        -- You can continue the code you had in the for loop here...
    end
    

    为了解释一下你做错了什么,你试图通过向PivotTo函数传递三个参数来构造一个CFrame,而你需要将这三个数字传递给CFrame构造函数。这将构造一个CFrame对象,这正是PivotTo想要接收的输入。我更进一步,使noob模型的旋转与 ogposition 但是,您可以通过向CFrame传递Vector3(这就是Roblox表示位置等3D向量的方式)来创建CFrame,从而撤消此操作。并执行以下操作:

    clone:PivotTo(
        CFrame.new(
            ogposition.PrimaryPart.Position + Vector3.new(0, 4 * (i + diffsubs), 0)
        )
    )