// Just a random idea ::Scope <- {}; class SpaceA { a = null; constructor() { a = "..."; } } function Scope::Get(entity, scriptClass) { if (entity == null || entity.IsValid() == false || entity.ValidateScriptScope() == false) return null; if (scriptClass in entity.GetScriptScope()) return entity.GetScriptScope()[scriptClass]; local instance = scriptClass(); entity.GetScriptScope()[scriptClass] <- instance return instance; } // Example local ent = GetListenServerHost(); local a = ::Scope.Get(ent, SpaceA); if (a != null) printl(a.a);