You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Roblox脚本问题:Youtube订阅触发克隆模型无法上移8Studs

Roblox Lua脚本修复:订阅Youtube频道时生成Noob模型并上移8Studs

问题分析

原脚本存在以下关键问题导致功能异常:

  • API请求失败时未做错误处理,会直接中断脚本
  • PivotTo方法使用语法错误,无法正确设置克隆体位置
  • 位置计算逻辑错误,未基于原Noob模型位置上移8Studs
  • 未处理订阅数可能下降的情况,导致循环异常

修复后的代码

--!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 -- 订阅数差值

-- Ping测试
if script:GetAttribute("Debug") == true then -- 检查是否开启Debug模式
    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
-- Ping测试结束

function ChecarInscritos()
    success, data = pcall(function()
        return http:GetAsync(url)
    end)
    
    -- 处理API请求失败的情况
    if not success then
        print("[YTLiveSubs]: 无法获取订阅数据: " .. data)
        return
    end

    -- 确保数据不为空再解析
    if data then
        decoded = http:JSONDecode(data)
        subs = decoded["est_sub"]
        print("[YTLiveSubs]: 当前订阅数: " .. subs)
    end
end

print("[YTLiveSubs]: 初始化首次订阅数...")
ChecarInscritos()
-- 确保首次获取到订阅数再进入循环
if not subs then
    print("[YTLiveSubs]: 首次获取订阅数失败,脚本终止")
    return
end

while true do
    diffsubs = subs
    task.wait(3) -- 避免过度请求API,保持3秒间隔
    ChecarInscritos()

    -- 跳过订阅数未更新或获取失败的情况
    if not subs then continue end

    finaldiffsubs = subs - diffsubs
    -- 只处理订阅数增加的情况,避免负数循环
    if finaldiffsubs <= 0 then
        print("[YTLiveSubs]: 无新订阅")
        continue
    end

    print("[YTLiveSubs]: 新增订阅数: ".. finaldiffsubs)
    local originalNoob = game.Workspace:FindFirstChild("Noob")
    -- 确保原Noob模型存在
    if not originalNoob or not originalNoob:IsA("Model") or not originalNoob.PrimaryPart then
        print("[YTLiveSubs]: 未找到有效Noob模型")
        continue
    end

    for i = 1, finaldiffsubs do
        local clone = originalNoob:Clone()
        clone.Parent = game.Workspace
        -- 基于原模型位置向上移动8Studs
        local newCFrame = originalNoob.PrimaryPart.CFrame + Vector3.yAxis * 8
        clone:PivotTo(newCFrame)
        
        clone.Name = "Noob"..i
        clone.Humanoid.DisplayName = "Noob"..i
    end
    print("[YTLiveSubs]: 已生成 ".. finaldiffsubs .." 个Noob!")
end

关键修复说明

  1. API错误处理:在ChecarInscritos中增加请求失败判断,避免脚本因API异常中断
  2. 修正PivotTo用法:传入正确的单个CFrame参数,基于原Noob模型的PrimaryPart位置计算新位置
  3. 位置逻辑修正:使用+ Vector3.yAxis * 8实现向上移动8Studs,确保克隆体生成在原模型上方
  4. 边界情况处理:
    • 首次获取订阅数失败时终止脚本
    • 订阅数未增加或下降时跳过生成逻辑
    • 检查原Noob模型是否存在且有PrimaryPart,避免空引用错误
  5. 替换wait为task.wait:Roblox推荐使用task.wait()替代旧的wait(),提升性能和准确性

内容的提问来源于stack exchange,提问作者PatoFlamejanteTV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 03:47:31