Aprenda
Classe do mecanismo
ScriptDocument
Não criável
Não replicado

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.


Resumo

Eventos
SelectionChanged(positionLine: number,positionCharacter: number,anchorLine: number,anchorCharacter: number):RBXScriptSignal
Membros herdados

Referência API
Métodos
AddReadOnlyReasonsAsync
Rendimentos
Segurança do plugin
ScriptDocument:AddReadOnlyReasonsAsync(reasons:{any}):()
Parâmetros
reasons:{any}
Devolução
()
Amostras de código
ScriptDocument:AddReadOnlyReasonsAsync()
local ScriptEditorService = game:GetService("ScriptEditorService")
local Workspace = game:GetService("Workspace")
local newScript = Instance.new("Script")
newScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(newScript)
if not success then
warn(`Falha ao abrir o documento do script: {err}`)
return
end
local scriptDocument = ScriptEditorService:FindScriptDocument(newScript)
-- Use um nome de razão exclusivo para seu plugin para que não colida com as razões de outros plugins
scriptDocument:AddReadOnlyReasonsAsync({ "MyPluginReview" })
print(`{scriptDocument.Name} é somente leitura: {scriptDocument:IsReadOnly()}`)

CloseAsync
Rendimentos
Segurança do plugin
ScriptDocument:CloseAsync():Tuple
Devolução
Amostras de código
ScriptDocument:CloseAsync
--!nocheck
-- Execute o seguinte código na Barra de Comando
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
local scriptDocument
-- Encontre o primeiro documento de script aberto
for _, document in documents do
-- A Barra de Comando não pode ser fechada, então não a selecione
if not document:IsCommandBar() then
scriptDocument = document
break
end
end
if scriptDocument then
local success, err = scriptDocument:CloseAsync()
if success then
print(`Fechado {scriptDocument.Name}`)
else
warn(`Falha ao fechar {scriptDocument.Name} porque: {err}`)
end
else
print("Nenhum script aberto")
end

EditTextAsync
Rendimentos
Segurança do plugin
ScriptDocument:EditTextAsync(
newText:string, startLine:number, startCharacter:number, endLine:number, endCharacter:number
Parâmetros
newText:string
startLine:number
startCharacter:number
endLine:number
endCharacter:number
Devolução

ForceSetSelectionAsync
Rendimentos
Segurança do plugin
ScriptDocument:ForceSetSelectionAsync(
cursorLine:number, cursorCharacter:number, anchorLine:number?, anchorCharacter:number?
Parâmetros
cursorLine:number
cursorCharacter:number
anchorLine:number?
Valor Padrão: nil
anchorCharacter:number?
Valor Padrão: nil
Devolução
Amostras de código
ScriptDocument:ForceSetSelectionAsync()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
-- Obtenha o texto na linha atual do cursor
local cursorLine = scriptDocument:GetSelection()
local lineText = scriptDocument:GetLine(cursorLine)
-- Forçar a seleção de toda a linha de texto
local success, err = scriptDocument:ForceSetSelectionAsync(cursorLine, 1, cursorLine, #lineText + 1)
if success then
print("Seleção definida!")
else
print(`Falha ao definir a seleção porque: {err}`)
end
else
print("Nenhum script aberto")
end

GetLine
Segurança do plugin
ScriptDocument:GetLine(lineIndex:number?):string
Parâmetros
lineIndex:number?
Valor Padrão: nil
Devolução
Amostras de código
ScriptDocument.SelectionChanged e ScriptDocument:GetLine()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function(positionLine, positionCharacter, anchorLine, anchorCharacter)
print(`Selecionado: Linha {positionLine}, Char {positionCharacter}`)
print(`Âncora: Linha {anchorLine}, Char {anchorCharacter}`)
local lineText = scriptDocument:GetLine(positionLine)
print(`Texto da linha selecionada: {lineText}`)
end)
else
print("Nenhum script aberto")
end

GetLineCount
Segurança do plugin
ScriptDocument:GetLineCount():number
Devolução
Amostras de código
ScriptDocument:GetLineCount()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local lineCount = scriptDocument:GetLineCount()
print(`O script tem {lineCount} linhas!`)
else
print("Nenhum script aberto")
end

GetReadOnlyReasons
Segurança do plugin
ScriptDocument:GetReadOnlyReasons():{string}
Devolução
Amostras de código
ScriptDocument:GetReadOnlyReasons()
local ScriptEditorService = game:GetService("ScriptEditorService")
for _, document in ScriptEditorService:GetScriptDocuments() do
local reasons = document:GetReadOnlyReasons()
if #reasons > 0 then
print(`{document.Name} é somente leitura por causa de: {table.concat(reasons, ", ")}`)
end
end

GetScript
Segurança do plugin
ScriptDocument:GetScript():LuaSourceContainer
Amostras de código
ScriptDocument:GetScript()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local openScript = scriptDocument:GetScript()
print(`Script atualmente aberto: {openScript:GetFullName()}`)
else
print("Nenhum script aberto")
end

GetSelectedText
Segurança do plugin
ScriptDocument:GetSelectedText():string
Devolução
Amostras de código
ScriptDocument:HasSelectedText() e :GetSelectedText()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function()
if scriptDocument:HasSelectedText() then
local selectedText = scriptDocument:GetSelectedText()
print(`Texto atualmente selecionado: {selectedText}`)
else
print("Nenhum texto atualmente selecionado")
end
end)
else
print("Nenhum script aberto")
end

GetSelection
Segurança do plugin
ScriptDocument:GetSelection():Tuple
Devolução

GetSelectionEnd
Segurança do plugin
ScriptDocument:GetSelectionEnd():Tuple
Devolução
Amostras de código
ScriptDocument:GetSelectionStart() e :GetSelectionEnd()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local startLine, startCharacter = scriptDocument:GetSelectionStart()
local endLine, endCharacter = scriptDocument:GetSelectionEnd()
print(`Início da seleção: Linha {startLine}, Char {startCharacter}`)
print(`Fim da seleção: Linha {endLine}, Char {endCharacter}`)
else
print("Nenhum script aberto")
end

GetSelectionStart
Segurança do plugin
ScriptDocument:GetSelectionStart():Tuple
Devolução
Amostras de código
ScriptDocument:GetSelectionStart() e :GetSelectionEnd()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local startLine, startCharacter = scriptDocument:GetSelectionStart()
local endLine, endCharacter = scriptDocument:GetSelectionEnd()
print(`Início da seleção: Linha {startLine}, Char {startCharacter}`)
print(`Fim da seleção: Linha {endLine}, Char {endCharacter}`)
else
print("Nenhum script aberto")
end

GetText
Segurança do plugin
ScriptDocument:GetText(
startLine:number?, startCharacter:number?, endLine:number?, endCharacter:number?
Parâmetros
startLine:number?
Valor Padrão: nil
startCharacter:number?
Valor Padrão: nil
endLine:number?
Valor Padrão: nil
endCharacter:number?
Valor Padrão: nil
Devolução
Amostras de código
ScriptDocument:GetText()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local text = scriptDocument:GetText()
print(`Conteúdo do script: {text}`)
else
print("Nenhum script aberto")
end

GetViewport
Segurança do plugin
ScriptDocument:GetViewport():Tuple
Devolução
Amostras de código
ScriptDocument:GetViewport
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local firstLine, lastLine = scriptDocument:GetViewport()
print(`Visualizando atualmente as linhas {firstLine} a {lastLine}`)
else
print("Nenhum script aberto")
end

HasSelectedText
Segurança do plugin
ScriptDocument:HasSelectedText():boolean
Devolução
Amostras de código
ScriptDocument:HasSelectedText() e :GetSelectedText()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function()
if scriptDocument:HasSelectedText() then
local selectedText = scriptDocument:GetSelectedText()
print(`Texto atualmente selecionado: {selectedText}`)
else
print("Nenhum texto atualmente selecionado")
end
end)
else
print("Nenhum script aberto")
end

IsCommandBar
Segurança do plugin
ScriptDocument:IsCommandBar():boolean
Devolução
Amostras de código
ScriptDocument:IsCommandBar()
--!nocheck
-- Execute o seguinte código na Barra de Comando
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if document:IsCommandBar() then
print("Documento da barra de comando:", document)
end
end

IsReadOnly
Segurança do plugin
ScriptDocument:IsReadOnly():boolean
Devolução
Amostras de código
ScriptDocument:IsReadOnly()
local ScriptEditorService = game:GetService("ScriptEditorService")
for _, document in ScriptEditorService:GetScriptDocuments() do
if document:IsReadOnly() then
print(`{document.Name} é somente leitura`)
else
print(`{document.Name} é editável`)
end
end

MultiEditTextAsync
Rendimentos
Segurança do plugin
ScriptDocument:MultiEditTextAsync(edits:{any}):Tuple
Parâmetros
edits:{any}
Devolução

RemoveReadOnlyReasonsAsync
Rendimentos
Segurança do plugin
ScriptDocument:RemoveReadOnlyReasonsAsync(reasons:{any}):()
Parâmetros
reasons:{any}
Devolução
()
Amostras de código
ScriptDocument:RemoveReadOnlyReasonsAsync()
local ScriptEditorService = game:GetService("ScriptEditorService")
local Workspace = game:GetService("Workspace")
local newScript = Instance.new("Script")
newScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(newScript)
if not success then
warn(`Falha ao abrir o documento do script: {err}`)
return
end
local scriptDocument = ScriptEditorService:FindScriptDocument(newScript)
scriptDocument:AddReadOnlyReasonsAsync({ "MyPluginReview", "MyPluginLocked" })
-- O editor permanece somente leitura enquanto qualquer outro motivo permanecer ativo
scriptDocument:RemoveReadOnlyReasonsAsync({ "MyPluginReview" })
print(`Somente leitura após remover um motivo: {scriptDocument:IsReadOnly()}`)
scriptDocument:RemoveReadOnlyReasonsAsync({ "MyPluginLocked" })
print(`Somente leitura após remover todos os motivos: {scriptDocument:IsReadOnly()}`)

RequestSetSelectionAsync
Rendimentos
Segurança do plugin
ScriptDocument:RequestSetSelectionAsync(
cursorLine:number, cursorCharacter:number, anchorLine:number?, anchorCharacter:number?
Parâmetros
cursorLine:number
cursorCharacter:number
anchorLine:number?
Valor Padrão: nil
anchorCharacter:number?
Valor Padrão: nil
Devolução
Amostras de código
ScriptDocument:RequestSetSelectionAsync()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
-- Obtenha o texto na linha atual do cursor
local cursorLine = scriptDocument:GetSelection()
local lineText = scriptDocument:GetLine(cursorLine)
-- Forçar a seleção de toda a linha de texto
local success, err = scriptDocument:RequestSetSelectionAsync(cursorLine, 1, cursorLine, #lineText + 1)
if success then
print("Seleção definida!")
else
print(`Falha ao definir a seleção porque: {err}`)
end
else
print("Nenhum script aberto")
end

ReviewableTextEditsAsync
Rendimentos
Segurança do plugin
ScriptDocument:ReviewableTextEditsAsync(changes:{any}):Tuple
Parâmetros
changes:{any}
Devolução

Eventos
SelectionChanged
Segurança do plugin
ScriptDocument.SelectionChanged(
positionLine:number, positionCharacter:number, anchorLine:number, anchorCharacter:number
Parâmetros
positionLine:number
positionCharacter:number
anchorLine:number
anchorCharacter:number
Amostras de código
ScriptDocument.SelectionChanged e ScriptDocument:GetLine()
--!nocheck
-- Execute o seguinte código na Barra de Comando enquanto um script estiver aberto
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function(positionLine, positionCharacter, anchorLine, anchorCharacter)
print(`Selecionado: Linha {positionLine}, Char {positionCharacter}`)
print(`Âncora: Linha {anchorLine}, Char {anchorCharacter}`)
local lineText = scriptDocument:GetLine(positionLine)
print(`Texto da linha selecionada: {lineText}`)
end)
else
print("Nenhum script aberto")
end

ViewportChanged
Segurança do plugin
ScriptDocument.ViewportChanged(
startLine:number, endLine:number
Parâmetros
startLine:number
endLine:number
Amostras de código
Conectando ao ScriptDocument.ViewportChanged
--!nocheck
--[[
Para executar:
1. Certifique-se de que a visualização de Saída está aberta
2. Execute o código abaixo na Barra de Comando
3. Role para cima e para baixo na janela do Script aberta
As declarações de impressão do evento ViewportChanged aparecerão na Saída
]]
local Workspace = game:GetService("Workspace")
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Crie um texto que abranja muitas linhas
local dummyText = string.rep("-- Texto Falso\n", 60)
-- Crie um script contendo o texto falso e abra-o
local otherScript = Instance.new("Script")
otherScript.Source = dummyText
otherScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(otherScript)
if not success then
warn(`Falha ao abrir o script porque: {err}`)
return
end
-- Obtenha uma referência ao script aberto
local scriptDocument = ScriptEditorService:FindScriptDocument(otherScript)
local function onViewportChanged(startLine: number, endLine: number)
print(`Viewport do Script Mudou - startLine: {startLine}, endLine: {endLine}`)
end
-- Conecte o evento ViewportChanged à função acima que imprime a linha de início e a linha de fim da viewport atualizada
scriptDocument.ViewportChanged:Connect(onViewportChanged)

©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.