import { Controller, OnStart } from "@flamework/core"; import { CmdrClient } from "@rbxts/cmdr"; import { Players } from "@rbxts/services"; import { Trove } from "@rbxts/trove"; import { CMDR_ACCESS_ATTRIBUTE } from "shared/cmdr"; import { TEMPLATE_NAME } from "shared/template-name"; @Controller() export class CmdrController implements OnStart { private readonly trove = new Trove(); public onStart(): void { CmdrClient.SetActivationKeys([Enum.KeyCode.F2]); CmdrClient.SetPlaceName(TEMPLATE_NAME); CmdrClient.SetActivationUnlocksMouse(true); this.trove.connect(Players.LocalPlayer.GetAttributeChangedSignal(CMDR_ACCESS_ATTRIBUTE), () => this.updateAccess(), ); this.trove.attachToInstance(script); this.updateAccess(); } private updateAccess(): void { const enabled = Players.LocalPlayer.GetAttribute(CMDR_ACCESS_ATTRIBUTE) === true; CmdrClient.SetEnabled(enabled); if (!enabled) { CmdrClient.Hide(); } } }