local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()

-- >>> 1. ADD: Discord Webhook URL and HTTP Service <<<
local HttpService = game:GetService("HttpService")
local WEBHOOK_URL = "https://[Log in to view URL]" -- <<<<< REPLACE THIS with your actual Webhook URL!

-- >>> 2. ADD: Logging Function <<<
local function sendDiscordLog(action, target)
    -- This attempts to get the executor's name. It might need adjustments
    -- or fail depending on the specific exploit/executor being used.
    local executorName = "Unknown/Custom"
    if getexecutorname then -- Check if the function exists
        pcall(function() executorName = getexecutorname() end)
    end
    
    local player = game.Players.LocalPlayer
    local gameName = game.Name 
    
    -- In a live game, game.Name often returns "Game" or "Ugc". 
    -- A more reliable, though complex, way is to use MarketplaceService:GetProductInfo(game.PlaceId).Name.
    -- For simplicity in a client exploit, we'll use game.Name and assume the user knows the game.

    local logData = {
        username = player.Name .. " (" .. player.UserId .. ")",
        avatar_url = "http://[Log in to view URL]" .. player.UserId,
        embeds = {
            {
                title = "Teleport Script Action Log",
                color = 3066993, -- Green-ish color
                fields = {
                    { name = "Player", value = player.Name, inline = true },
                    { name = "Target", value = target or "N/A", inline = true },
                    { name = "Action", value = action, inline = false },
                    { name = "Time Executed", value = os.date("!%Y-%m-%d %H:%M:%S UTC"), inline = false },
                    { name = "Executor", value = executorName, inline = true },
                    { name = "Game", value = gameName, inline = true }
                },
                footer = {
                    text = "Teleport Script by ZynicDevs"
                },
                timestamp = os.date("!%Y-%m-%d %H:%M:%S UTC")
            }
        }
    }

    -- Send the request to Discord
    pcall(function()
        HttpService:PostAsync(WEBHOOK_URL, HttpService:JSONEncode(logData))
    end)
end

-- WINDOW
local Window = Rayfield:CreateWindow({
-- (Existing Window code...)
    Name = "Teleporting script",
    Icon = 0,
    LoadingTitle = "Tp Script",
    LoadingSubtitle = "by ZynicDevs",
    ShowText = "Teleport script",
    Theme = "Serenity",
    ToggleUIKeybind = "q",
    
    DisableRayfieldPrompts = false,
    DisableBuildWarnings = true,
    
    ConfigurationSaving = {
        Enabled = true,
        FolderName = nil,
        FileName = "Big Hub"
    },
    
    Discord = {
        Enabled = true,
        Invite = "Gz5hB2xQT7",
        RememberJoins = true
    },
    
    KeySystem = true,
    KeySettings = {
        Title = "Key",
        Subtitle = "Key System",
        Note = "Generated & validated through external server",
        FileName = "KeysFile",
        SaveKey = true,
        
        GrabKeyFromSite = true,  
        -- YOUR API ENDPOINT (Discord bot or website)
        Key = "https://[Log in to view URL]"  
    }
})

--========================================================--
--====================== REACH TAB ========================--
--========================================================--

local ReachTab = Window:CreateTab("Reach", 4483362458)

local reachValue = 20

ReachTab:CreateSlider({
    Name = "Reach Amount",
    Range = {0,100},
    Increment = 1,
    CurrentValue = 20,
    Flag = "ReachSlider",
    Callback = function(Value)
        reachValue = Value
    end,
})

ReachTab:CreateButton({
    Name = "Show Hitbox",
    Callback = function()
        -- (Existing Hitbox code...)
        local plr = game.Players.LocalPlayer
        local char = plr.Character
        if not char or not char:FindFirstChild("HumanoidRootPart") then return end

        local box = Instance.new("Part")
        box.Name = "ReachHitbox"
        box.Size = Vector3.new(reachValue, reachValue, reachValue)
        box.Transparency = 0.7
        box.Color = Color3.fromRGB(255, 0, 0)
        box.Anchored = false
        box.CanCollide = false
        box.Parent = char
        box.Massless = true

        local weld = Instance.new("WeldConstraint")
        weld.Part0 = box
        weld.Part1 = char.HumanoidRootPart
        weld.Parent = box

        task.delay(3, function()
            if box then box:Destroy() end
        end)
        
        -- >>> 3. ADD: Log for Button Press <<<
        sendDiscordLog("Reach Hitbox Visualized (Size: " .. reachValue .. ")", nil)
    end
})

--========================================================--
--===================== TELEPORT TAB =====================--
--========================================================--

local TeleportTab = Window:CreateTab("Teleport", 4483362458)

local targetUser = ""
local teleportActive = false
local lastLocation = nil
local isTeleporting = false

local SafeZone = workspace:FindFirstChild("SafeZone") 
-- Replace with your real safe zone folder/model

TeleportTab:CreateInput({
    Name = "Target Username",
    PlaceholderText = "Player name...",
    RemoveTextAfterFocusLost = false,
    Callback = function(text)
        targetUser = text
    end
})

TeleportTab:CreateToggle({
    Name = "Auto Teleport When Target Leaves SafeZone",
    CurrentValue = false,
    Flag = "TPToggle",
    Callback = function(state)
        teleportActive = state
        
        -- >>> 4. ADD: Log for Toggle Change <<<
        if state then
            sendDiscordLog("Auto Teleport Enabled", targetUser)
        else
            sendDiscordLog("Auto Teleport Disabled", targetUser)
        end
    end
})

-- Background loop
task.spawn(function()
    while task.wait(0.2) do
        if teleportActive and not isTeleporting then
            local plr = game.Players.LocalPlayer
            local char = plr.Character
            local hrp = char and char:FindFirstChild("HumanoidRootPart")

            local target = game.Players:FindFirstChild(targetUser)
            if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
                local thrp = target.Character.HumanoidRootPart

                -- Check if OUTSIDE safezone
                local inside = false
                if SafeZone then
                    for _,part in pairs(SafeZone:GetDescendants()) do
                        if part:IsA("BasePart") then
                            if (thrp.Position.X > part.Position.X - part.Size.X/2 and thrp.Position.X < part.Position.X + part.Size.X/2) and
                                (thrp.Position.Y > part.Position.Y - part.Size.Y/2 and thrp.Position.Y < part.Position.Y + part.Size.Y/2) and
                                (thrp.Position.Z > part.Position.Z - part.Size.Z/2 and thrp.Position.Z < part.Position.Z + part.Size.Z/2) then
                                inside = true
                            end
                        end
                    end
                end

                if not inside then
                    isTeleporting = true

                    -- Save last location
                    lastLocation = hrp.CFrame

                    -- Teleport to target
                    hrp.CFrame = thrp.CFrame + Vector3.new(0,3,0)

                    -- >>> 5. ADD: Log for Teleport Action <<<
                    sendDiscordLog("Teleported to Target (Out of SafeZone)", targetUser)
                    
                    task.wait(1)

                    -- Teleport back
                    if lastLocation then
                        hrp.CFrame = lastLocation
                    end

                    isTeleporting = false
                end
            end
        end
    end
end)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: