How do I access startercharacterscripts from replicatedfirst?

Hi,

The title says it all. I want to access startercharacterscripts, but it adding any directory to startercharacterscripts automatically yields my loader (that’s in replicatedfirst). How do I get past this?

local ReplicatedFirst = game:GetService("ReplicatedFirst")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterPlayer = game:GetService("StarterPlayer")

local Players = game:GetService("Players")

local waitForGameLoadedAsync = require(ReplicatedFirst.Source.Utility.waitForGameLoadedAsync)
local LoadingScreen = require(ReplicatedFirst.Source.LoadingScreen)

local barMax = 2
local localPlayer = Players.LocalPlayer ::Player

local function preGameLoadTasksAsync()
	game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.All,false)
	
	LoadingScreen.enableAsync()
	LoadingScreen.updateDetailText("Constructing your world..", barMax)
end


local function postGameLoadTasksAsync()
	local Depositories = {
		ReplicatedStorage.Source.Controllers;
		StarterPlayer.StarterPlayerScripts.Controllers;
		StarterPlayer.StarterCharacterScripts.Controllers;
	}
	
	local Knit = require(ReplicatedStorage.Packages.Knit)
	
	local CharacterLoadedWrapper = require(ReplicatedStorage.Source.Classes.CharacterLoadedWrapper)
	local characterLoadedWrapper = CharacterLoadedWrapper.new(localPlayer)	

	if not characterLoadedWrapper:isLoaded() then
		LoadingScreen.updateDetailText("Spawning character...", barMax)
		characterLoadedWrapper.loaded:Wait()
	end
	
	for _, folder in pairs(Depositories) do
		Knit.AddControllers(folder)
	end
	
	Knit.Start():andThen(function()
		print("Client: Knit")
	end)
	
	LoadingScreen.updateDetailText("Finishing up...", barMax)
	LoadingScreen.disableAsync()

	local startUpSound = Instance.new("Sound")
	startUpSound.Parent = game:GetService("SoundService")
	startUpSound.SoundId = "rbxassetid://5694732355"
	startUpSound:Play()
	
	game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.All,true)
	game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack,false)
	game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Health,false)
	
	game.Debris:AddItem(startUpSound,3)
	
	workspace.CurrentCamera.FieldOfView = 0
end

preGameLoadTasksAsync()
waitForGameLoadedAsync()
postGameLoadTasksAsync()

Everything inside StarterCharacterScripts goes inside the player’s character when it spawns. You’d have to reference the LocalPlayer’s Character if it exists in your script.

1 Like

I already have a characterloadedwrapper that waits for the character to be loaded so I don’t even know the point of that. I put all of the controllers from starterplayercharacters and starterplayerscripts to replicatedstorage and it works the same. I feel like that’s much better.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.