ความสามารถของสคริปต์

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ความสามารถของสคริปต์ ช่วยให้คุณควบคุมการกระทำที่สคริปต์สามารถดำเนินการภายในต้นไม้ DataModel โดยแทนที่จะใช้ "ระบบทั้งหมดหรือไม่มีเลย" คุณสามารถตั้งค่าสคริปต์ให้สามารถเข้าถึงหมวดหมู่บางประเภท เช่น เสียง ฟิสิกส์ ฐานข้อมูล และอื่น ๆ

  • ระบบนี้ช่วยให้คุณสามารถจำกัดโมเดลที่นำมาจากเครื่องมือทำงานได้ และทำให้การรวมเนื้อหาที่สร้างโดยผู้ใช้ง่ายขึ้นภายในเกม
  • ยังช่วยให้มั่นใจถึงความปลอดภัยที่ดีกว่าของเกมที่อนุญาตให้ผู้เล่นเรียกใช้โค้ดของตนเอง ซึ่งมักจะถูกดำเนินการในสภาพแวดล้อมที่จำกัดหรือเลียนแบบ
  • นอกจากนี้ยังสามารถใช้เพื่อแชร์ไลบรารีที่จำกัดสิ่งที่พวกเขาสามารถทำได้ด้วยตนเอง ตัวอย่างเช่น ไลบรารีที่ให้วิธีคณิตศาสตร์เพิ่มเติมสามารถถูกจำกัดให้มีชุดความสามารถที่เล็กที่สุดที่จำเป็นเพื่อให้นักพัฒนาคนอื่นที่ใช้ไลบรารีนั้นไม่ต้องตรวจสอบฐานรหัสทั้งหมดเพื่อให้มั่นใจว่าไม่มีโค้ดที่ไม่ปลอดภัย

เปิดใช้ความสามารถของสคริปต์

เพื่อเปิดใช้ฟีเจอร์นี้ให้เปลี่ยนค่าในคุณสมบัติ SandboxedInstanceMode จาก Default เป็น Experimental ในหน้าต่าง Explorer และ Properties

ภาชนะที่ถูกจำกัด

ความสามารถของสคริปต์แนะนำแนวคิดของ ภาชนะที่ถูกจำกัด Models, Folders, Scripts หรือทายาทของคลาสใด ๆ เหล่านี้มีคุณสมบัติ Sandboxed ที่สามารถใช้ได้ในหน้าต่าง Properties

คุณสมบัติที่ถูกจำกัดของโฟลเดอร์ในหน้าต่าง Properties.

การเปิดใช้คุณสมบัติ Sandboxed จะระบุว่าตัวแปรนั้นเป็นภาชนะที่ถูกจำกัดภายในต้นไม้ DataModel ซึ่งจะจำกัดการกระทำที่สคริปต์ภายในภาชนะนี้สามารถดำเนินการได้ตามชุดค่าที่อยู่ในคุณสมบัติ Capabilities

ความสามารถ

คุณสมบัติ Capabilities เป็นชุดของค่าที่ควบคุมด้านต่าง ๆ ของการดำเนินการ ความสามารถแบ่งออกเป็นหมวดหมู่กว้าง ๆ ดังต่อไปนี้:

  • การควบคุมการดำเนินการ - ระบุว่าสคริปต์สามารถทำงานบนลูกค้าหรือเซิร์ฟเวอร์ได้หรือไม่
  • การควบคุมการเข้าถึงอินสแตนซ์ - ระบุตอนที่สคริปต์สามารถทำงานกับส่วนต่าง ๆ ของ DataModel
  • การควบคุมฟังก์ชันการทำงานของสคริปต์ - ระบุว่าฟังก์ชัน Luau ใดบ้างที่สคริปต์สามารถเรียกใช้
  • การควบคุมการเข้าถึง API ของเอนจิน - ระบุว่าบางส่วนของ Roblox Engine API สามารถใช้งานได้หรือไม่

เมื่อสคริปต์พยายามดำเนินการที่ไม่อยู่ในชุดความสามารถ Roblox จะรายงานข้อผิดพลาด ข้อผิดพลาดโดยทั่วไปจะรวมถึงการกระทำที่พยายามดำเนินการ เป้าหมายของการกระทำ และความสามารถแรกที่ขาดหายไป:


เธรดปัจจุบันไม่สามารถปรับเปลี่ยน 'Workspace' (ขาดความสามารถ AccessOutsideWrite)
เธรดปัจจุบันไม่สามารถเรียก 'Clone' (ขาดความสามารถ CreateInstances)
เธรดปัจจุบันไม่สามารถเรียก 'GetSecret' (ขาดความสามารถ Network)

การควบคุมการดำเนินการ

สองความสามารถที่จัดการการควบคุมการดำเนินการมีดังนี้:

  • RunClientScript - LocalScript หรือ Script ที่มีค่า RunContext เท่ากับ Client สามารถทำงานบนลูกค้าได้
  • RunServerScript - Script ที่มีค่า RunContext เท่ากับ Server สามารถทำงานบนเซิร์ฟเวอร์ได้

ถ้าสคริปต์มี Enabled แต่ความสามารถที่ตรงกับตำแหน่งที่มันพยายามเริ่มไม่มีอยู่ ข้อความเตือนจะแสดงในหน้าต่าง Output หากไม่ควรให้สคริปต์ทำงานในบริบทนั้น ให้ปิดหรือลบมัน

โปรดทราบว่า ModuleScripts ไม่จำเป็นต้องมีความสามารถในการดำเนินการเหล่านี้เพื่อให้ถูกเรียกใช้

เมื่อสคริปต์ไม่สามารถเริ่มทำงานได้เนื่องจากขาดความสามารถในการควบคุมการดำเนินการ จะรายงานเป็นคำเตือนในเอาท์พุต เช่น:


ไม่สามารถเริ่มสคริปต์เซิร์ฟเวอร์ 'Script' (ขาดความสามารถ RunServerScript)

การควบคุมการเข้าถึงอินสแตนซ์

ความสามารถหนึ่งเดียวจัดการการควบคุมการเข้าถึงอินสแตนซ์:

  • AccessOutsideWrite - สคริปต์ได้รับอนุญาตให้ดึงและรับอินสแตนซ์จากภายนอกภาชนะที่ถูกจำกัด

เมื่อความสามารถนี้ไม่มีอยู่ สคริปต์สามารถค้นหาอินสแตนซ์ที่อยู่ภายในภาชนะที่ถูกจำกัดของตนเองได้เท่านั้น ตัวอย่างเช่น หากสคริปต์ถูกวางอยู่ในภาชนะที่ถูกจำกัด โดยตรง script.Parent.Parent จะส่งคืน nil

นอกจากนี้ อีเวนต์ API ของ Roblox ใด ๆ ที่ส่งผ่าน Instance จะส่งผ่าน nil สำหรับ Instance ใด ๆ ที่อยู่นอกภาชนะที่ถูกจำกัด ตัวอย่างเช่น หาก BasePart.Touched ถูกส่งสัญญาณโดยการสัมผัสจากอินสแตนซ์นอกภาชนะที่ถูกจำกัด อีเวนต์นั้นก็ยังได้รับ แต่พารามิเตอร์คือ nil

หลีกเลี่ยงการตั้งค่าความสามารถนี้; การรับประกันการแซนบ็อกซ์จะอ่อนแอลงเมื่อสคริปต์สามารถมีปฏิสัมพันธ์กับอินสแตนซ์ใด ๆ ในเกม

การเข้าถึงบริการ

แม้จะไม่มี AccessOutsideWrite สคริปต์ในภาชนะที่ถูกจำกัดก็ยังสามารถเข้าถึง game, workspace, และบริการต่าง ๆ ได้ การเข้าถึงนี้จัดทำขึ้นเพื่อให้สคริปต์สามารถเรียกใช้วิธีที่มีประโยชน์ของตัวแปรเหล่านั้น เช่น DataModel.GetService แต่การเข้าถึงอินสแตนซ์ลูกยังคงถูกตรวจสอบ

อินสแตนซ์ที่ส่งผ่านภายใน

หากมีการส่งอินสแตนซ์ผ่านการเรียกฟังก์ชันที่ไม่ได้ผ่าน API ของ Roblox การอ้างอิงจะถูกเก็บรักษาไว้ อย่างไรก็ตาม หากถูกส่งข้ามทางโดย ModuleScript จะไม่สามารถเรียกใช้ได้โดยไม่มี AccessOutsideWrite ซึ่งเนื่องจากผลลัพธ์ของ ModuleScript มักมีการปรับเปลี่ยนได้และอาจถูกปรับเปลี่ยนโดยสคริปต์ในภาชนะที่ถูกจำกัด

การควบคุมฟังก์ชันการทำงานของสคริปต์

ชุดความสามารถนี้ควบคุมด้านทั่วไปบางประการของสคริปต์:

  • CreateInstances - สคริปต์สามารถสร้างอินสแตนซ์ใหม่โดยใช้ Instance.new, Instance.fromExisting, หรือ Instance:Clone()
  • LoadString - สคริปต์สามารถเรียก loadstring ได้
  • LoadUnownedAsset - สคริปต์สามารถเรียก require ด้วย asset ID หรือ AssetService:LoadAssetAsync()
  • ScriptGlobals - สคริปต์มี shared และ _G พร้อมใช้งาน

โปรดทราบว่าข้อจำกัดของฟังก์ชันเริ่มต้นยังคงมีผล แม้ว่า LoadString จะเปิดใช้งาน เกมก็ยังต้องเปิดใช้งานใน ServerScriptService และยังสามารถใช้งานได้เฉพาะบนเซิร์ฟเวอร์เท่านั้น

ในการสร้างอินสแตนซ์ใหม่ นอกจาก CreateInstances แล้ว จำเป็นต้องมีความสามารถ API ของเอนจินเพิ่มเติมที่ให้การเข้าถึงไปยังอินสแตนซ์นั้น

การควบคุมการเข้าถึง API ของเอนจิน

กลุ่มความสามารถสุดท้ายนี้ควบคุมการเข้าถึงสคริปต์ไปยัง API ของเอนจินที่แตกต่างกัน:

  • Animation - การเข้าถึงอินสแตนซ์ที่เกี่ยวข้องกับอนิเมชัน
  • AssetCreateUpdate - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการสร้างหรือปรับปรุงทรัพย์สิน
  • AssetManagement - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการปฏิบัติการบนทรัพย์สินที่ไม่ใช่การอ่าน สร้าง หรือปรับปรุง
  • AssetRead - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการรับข้อมูลเกี่ยวกับทรัพย์สิน
  • Audio - การเข้าถึงอินสแตนซ์ที่เกี่ยวข้องกับ API เสียง
  • AvatarAppearance - การเข้าถึงอินสแตนซ์ที่เกี่ยวข้องกับองค์ประกอบภาพของตัวละคร
  • AvatarBehavior - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการควบคุมหรือปรับเปลี่ยนตัวละคร
  • Basic - การเข้าถึง API ทั่วไปที่มีความเสี่ยงต่ำ
  • CSG - การเข้าถึงอินสแตนซ์และฟังก์ชันที่เกี่ยวข้องกับเรขาคณิตแบบบวก (CSG)
  • CapabilityControl - การเข้าถึงการปรับเปลี่ยนคุณสมบัติ Sandboxed และ Capabilities ของอินสแตนซ์
  • Capture - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการจับภาพหน้าจอหรือวิดีโอบนหน้าจอของผู้ใช้
  • Chat - การเข้าถึงอินสแตนซ์ที่เกี่ยวข้องกับการแชทในเกม
  • Consequences - การเข้าถึง API สำหรับลงโทษผู้ใช้ (การเตะหรือแบน)
  • DataStore - การเข้าถึง API ของฐานข้อมูลและหน่วยความจำ
  • DynamicGeneration - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการปรับเปลี่ยนทรัพย์สินแบบไดนามิก
  • Environment - การเข้าถึงอินสแตนซ์ที่เกี่ยวข้องกับการควบคุมการแสดงผลของสภาพแวดล้อม
  • Groups - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับกลุ่ม/ชุมชน
  • Input - การเข้าถึงอินสแตนซ์ที่เกี่ยวข้องกับการป้อนข้อมูลจากผู้ใช้
  • LegacySound - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับเสียงที่กำลังจะเลิกใช้งาน
  • LoadOwnedAsset - การเข้าถึง API ของเอนจินสำหรับการโหลดทรัพย์สินที่คุณเป็นเจ้าของ แบ่งปันให้คุณ เป็นเจ้าของโดย Roblox หรือเป็นประเภททรัพย์สินที่ไม่เป็นพิษเป็นภัย
  • Logging - การเข้าถึง API ของบันทึก
  • Material - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับวัสดุ
  • Monetization - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการสร้างรายได้จากเกม ยกเว้นส่วนใหญ่ของ PromptPurchases
  • Network - การเข้าถึง API การเชื่อมต่อ HTTP
  • Physics - การเข้าถึงอินสแตนซ์ที่เกี่ยวข้องกับฟิสิกส์
  • PlatformAvatarEditing - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการสร้างหรือปรับปรุงตัวละคร หรือ API ที่ช่วยในการทำเช่นนั้น
  • Players - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับคลาส Player หรือที่คืนค่าหรือมีปฏิสัมพันธ์กับ Players.LocalPlayer
  • PromptExternalPurchase - อนุญาตการเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการขอให้ซื้อทรัพย์สินที่ไร้สาระ
  • RemoteEvent - การเข้าถึงอินสแตนซ์สำหรับการดำเนินการเครือข่ายภายใน
  • SensitiveInput - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการจับข้อมูลที่ละเอียดอ่อนจากผู้ใช้ เช่นเซ็นเซอร์ฮาร์ดแวร์ที่มีความเป็นส่วนตัวสูง
  • ServerCommunication - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการสื่อสารข้ามเซิร์ฟเวอร์ เช่น MessagingService
  • Social - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับคุณสมบัติทางสังคม เช่น เพื่อนและคำเชิญ
  • Teleport - การเข้าถึง API ของเอนจินที่เกี่ยวข้องกับการเคลื่อนย้าย
  • UI - การเข้าถึงอินสแตนซ์ที่เกี่ยวข้องกับส่วนต่อประสานผู้ใช้

ความสามารถของแต่ละคลาส คุณสมบัติ วิธีการ และเหตุการณ์จะแสดงใน เอกสารอ้างอิง API ของเอนจิน ตัวอย่างเช่น Player:GetFriendsOnlineAsync() ต้องการความสามารถ Player และ Social

หลายวิธีใน HttpService สามารถใช้งานได้โดยไม่ต้องมีความสามารถใด ๆ นอกเหนือจากการสามารถใช้สคริปต์ได้:

หากมีการเข้าถึงคุณสมบัติหรือลักษณะต่าง ๆ ของอินสแตนซ์โดยไม่มีความสามารถที่ต้องการ ข้อผิดพลาดจะถูกบันทึกโดยอธิบายถึงความสามารถที่ขาดหายไป

สุดท้าย ความสามารถต่าง ๆ ไม่ได้ครอบคลุมทุกอินสแตนซ์ใน Roblox Engine ณ วันนี้ อินสแตนซ์ที่ไม่ได้ระบุในส่วนนี้หรือในส่วนถัดไปจะไม่สามารถมีปฏิสัมพันธ์จากภาชนะที่ถูกจำกัดและจะโยนข้อผิดพลาดที่บอกว่าความสามารถ Unassigned ไม่สามารถใช้ได้กับสคริปต์ปัจจุบัน

ข้อจำกัดเพิ่มเติมคือฟังก์ชัน getfenv() และ setfenv() จะไม่สามารถใช้ได้สำหรับสคริปต์ในภาชนะที่ถูกจำกัด การเรียกใช้จากสคริปต์ที่ถูกจำกัดจะแสดงข้อผิดพลาดว่า:


เธรดปัจจุบันไม่สามารถเรียก ['getfenv'/'setfenv'] ได้ - เป้าหมายใช้ APIs ที่ไม่สามารถใช้ได้ใน Sandbox ปัจจุบัน

การเข้าถึงอินสแตนซ์เท่านั้นที่ถูกจำกัด อินสแตนซ์เองยังสามารถมีอยู่และทำงานได้ด้วยตนเองภายในภาชนะที่ถูกจำกัด ไฟยังคงส่องสว่าง ส่วนต่อประสานผู้ใช้ยังคงมองเห็นได้ และการตั้งค่าเสียงที่เชื่อมโยงกันแล้วจะเล่นเสียง

การโต้ตอบระหว่างภาชนะ

ภาชนะที่ซ้อนกัน

เมื่อภาชนะที่ถูกจำกัดหนึ่งอยู่ภายในอีกอัน อินสแตนซ์ของภาชนะภายในจะสามารถเข้าถึงได้จากภายนอก

ความสามารถของภาชนะภายในจะจำกัดด้วยความสามารถของภาชนะภายนอก ตัวอย่างเช่น หากภาชนะภายนอกมีความสามารถ Basic, Audio และ CSG ในขณะที่ภาชนะภายในมี Basic และ Network ความสามารถ Basic เท่านั้นที่จะสามารถใช้งานได้ภายในภาชนะในเวลาทำงาน

หากไม่มีความสามารถที่เหมือนกันระหว่างภาชนะภายในและภายนอก ชุดความสามารถที่ได้ผลลัพธ์จะว่างเปล่า

ฟังก์ชันและอีเวนต์ที่สามารถผูกได้

BindableEvent และ BindableFunction เป็นวิธีที่ดีที่สุดในการสื่อสารกับภาชนะหรืออนุญาตให้มันเรียกใช้งานคอลแบ็กที่มีความสามารถที่มันไม่ได้อนุญาตให้ใช้โดยตรง

เมื่ออีเวนต์ถูกเรียกใช้หรือตัวฟังก์ชันถูกเรียกใช้ การเชื่อมต่อจะดำเนินการในบริบทของฟังก์ชันที่ลงทะเบียนพวกมัน นี่หมายความว่าหากอีเวนต์หรือคอลแบ็กถูกลงทะเบียนโดยภาชนะที่ถูกจำกัด จะถูกเรียกใช้ด้วยความสามารถของภาชนะนั้น ๆ หากคอลแบ็กถูกลงทะเบียนโดยโค้ดภายนอก เมื่อสคริปต์ภายในภาชนะที่ถูกจำกัดเรียกใช้งาน มันจะดำเนินการฟังก์ชันของคุณโดยมีความสามารถที่พร้อมใช้งาน

สิ่งสำคัญที่ต้องทราบคือแม้จะมีความสามารถ AccessOutsideWrite สคริปต์ในภาชนะที่ถูกจำกัดไม่สามารถเรียกใช้เหตุการณ์หรือฟังก์ชันภายนอกภาชนะได้หากพวกเขามีชุดความสามารถที่ใหญ่กว่าภาชนะเอง

เมื่อสคริปต์ที่ถูกจำกัดพยายามจะเรียกใช้งานหรือเรียกอีเวนต์หรือฟังก์ชัน (BindableEvent, BindableFunction หรือ RemoteEvent) ซึ่งมีความสามารถบรรพบุรุษเกินขอบเขตของมัน ข้อผิดพลาดจะระบุชื่อคุณสมบัติให้ตรวจสอบ

หากเป้าหมายไม่อยู่ในภาชนะที่ถูกจำกัดใด ๆ:


เธรดปัจจุบันไม่สามารถเรียกใช้งาน '<Target>' ได้ เนื่องจาก '<Target>' มีคุณสมบัติ Sandboxed ตั้งค่าเป็น false แต่เธรดที่เรียกใช้ถูกจำกัด

เพื่อแก้ไขปัญหานี้ให้ตั้งค่า Sandboxed เป็น true สำหรับเป้าหมาย หรือคุณสามารถแก้ไขที่มาของเธรดที่เรียกให้ตั้งค่า Sandboxed เป็น false แต่ไม่แนะนำเพราะจะขจัดประโยชน์ด้านความปลอดภัยที่การแซนบ็อกซ์มอบให้

หากเป้าหมายถูกจำกัดแต่มีความสามารถที่ผู้เรียกไม่มี:


เธรดปัจจุบันไม่สามารถเรียกใช้งาน '<Target>' ได้ เนื่องจาก '<Target>' มีค่าเพิ่มเติมสำหรับคุณสมบัติ Capabilities: <First Missing Capability> (และ N มากกว่า)

เพื่อแก้ไขปัญหานี้ ให้แคบชุด Capabilities ของเป้าหมายให้เป็นกลุ่มย่อยของผู้เรียก หรือขยาย Capabilities ของผู้เรียกให้ตรงกับของเป้าหมาย

การเรียกโมดูล

ModuleScripts ภายในสามารถถูกเรียกโดยภาชนะที่ถูกจำกัดตามปกติ อย่างไรก็ตาม หากอินสแตนซ์เป้าหมายอยู่ภายนอกภาชนะ จะสามารถเรียก ModuleScript ได้เฉพาะเมื่อชุดความสามารถที่มีพร้อมให้มีขนาดเล็กกว่าหรือเท่ากับความสามารถที่มีอยู่ในภาชนะ

ข้อจำกัดนี้ไม่ใช้กับความสามารถ RunClientScript และ RunServerScript หาก ModuleScript อยู่ในภาชนะที่มีเฉพาะ RunClientScript แต่ถูกเรียกจากสคริปต์ที่มีความสามารถ RunServerScript จะได้รับอนุญาตให้สำเร็จและทำงานฟังก์ชันเหล่านั้นบนเซิร์ฟเวอร์

เมื่อ require() ล้มเหลวจากความไม่ตรงกันของความสามารถ ข้อผิดพลาดจะระบุชื่อโมดูลเป้าหมายและคุณสมบัติให้ตรวจสอบในลักษณะเดียวกับฟังก์ชันและอีเวนต์ที่สามารถผูกได้ซึ่งได้อธิบายไว้ในส่วนก่อนหน้า

ฟังก์ชันที่ถูกเรียกโดยตรง

หาก ModuleScript ในภาชนะที่ถูกจำกัดถูกเรียกจากภายนอกภาชนะ การป้องกันบางอย่างจะไม่สามารถใช้ได้ โดยเฉพาะฟังก์ชันเป้าหมายสามารถเข้าถึงอินสแตนซ์ทั้งหมดที่มีอยู่เพื่อผู้เรียก หากผู้เรียกไม่อยู่ในภาชนะที่ถูกจำกัด การเรียกใช้จะมีผลเหมือนกับ AccessOutsideWrite มีให้แก่ผู้เรียก

ข้อจำกัดของความสามารถอื่น ๆ ยังคงมีผล หากคุณมีความสามารถในการเข้าถึง DataStore แต่โมดูลเป้าหมายไม่มีมันจะไม่สามารถเรียกใช้วิธีการใน DataStore ได้ อย่างไรก็ตาม หากคุณส่งฟังก์ชันที่ทำงานกับ DataStore โมดูลเป้าหมายจะสามารถทำงานมันในระหว่างการเรียกใช้

หากเป้าหมายกำหนดตารางด้วยวิธี เช่น วิธีการจาก task เธรดเหล่านั้นจะสูญเสียความสามารถในการเรียกฟังก์ชันนั้น

อินสแตนซ์สามารถถูกส่งไปยังโมดูลเป้าหมายหรือกำหนดให้กับฟิลด์ในโมดูล

หากต้องการแนะนำให้กำหนดสมาชิกของตารางโดยใช้ rawset เพื่อหลีกเลี่ยงการเรียกใช้งาน __index/__newindex เมตาเมธอดที่อาจถูกตั้งค่าในตาราง

คำแนะนำทั่วไปคือการสื่อสารด้วย BindableEvent และ BindableFunction เมื่อเป็นไปได้

การเคลื่อนย้ายอินสแตนซ์

อินสแตนซ์ส่วนใหญ่ไม่มีข้อจำกัดเกี่ยวกับการเคลื่อนที่ระหว่างภาชนะ แต่สคริปต์อินสแตนซ์สามารถเคลื่อนย้ายได้เฉพาะไปยังภาชนะที่มีชุดความสามารถชุดเดียวกันหรือชุดย่อยของความสามารถเหล่านั้น

นั่นหมายความว่าภาชนะที่ถูกจำกัดด้วย AccessOutsideWrite ไม่สามารถเพียงแค่เปลี่ยนพ่อแม่ของสคริปต์ภายในไปยังภายนอกและได้รับความสามารถมากขึ้นได้

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ