How do i save my options menu

So i have a basic saving system that loads my location on last save but how do i make it save my options, can anyone help ?

You save each option in the exact same way you store your player location, and load it up.

This is how you’d save absolutely anything. For example, if you want to save a players FOV option, just store the number, and load it.

Ok so i tried this but everytime i open my options menu it will load my last save should i make a new save slot for each different save setting?

Depends what behaviour you want. Nothing stops you to have 2 Save Game Objects. Load them if you need them or don´t. Load your Options when your Game Starts and it will be Global. Save them alongside your Playerdata and it will be per Savegame individually.

Create the variables inside your save class just like you did with the location and save them, then load them

It still wont save for the life of me, ive tried using the widget variable in my save game bp and a text variable and calling the functions when i start etc idk what im doing wrong…

Alternatively to the savegame you can also use the ini files. Advantage is that you can edit them manually with a text editor if needed. To do this you can add the variables to your game instance class and select the config option. This will save and read them to an ini automatically. Note that inis don’t always work correctly when playing in editor (same as game user settings). If you want to save and read your ini values manually you can also do this, but you need to add two new C++ functions.

A function to read the option from the ini:

FString UIniLibrary::ReadIniValue(const FString SectionName, const FString PropertyName, const FString DefaultValue)
{
	if (!GConfig) {
		return DefaultValue;
	}
	FString Value;
	GConfig->GetString(*SectionName, *PropertyName, Value, GGameIni);
	return Value.Len() != 0 ? Value : DefaultValue;
}

And a function to save the option:

void UIniLibrary::WriteIniValue(const FString SectionName, const FString PropertyName, const FString Value)
{
	if (!GConfig) {
		return;
	}
	GConfig->SetString(*SectionName, *PropertyName, *Value, GGameIni);
}

is there a way to do this with blueprints?

As I said, you could put your variables in the game instance and check the config option. That should automatically save them. As I said these ini files behave somewhat different when you play from editor, so you should test in a packaged game.