Example, a player will want to improve his land when he buys this item, in bool value the value changes to true, is it possible to save this value so that it is there even after shutting down all servers?
You use DataStore for this. You would also communicate to the server using RemoteEvents or RemoteFunctions since the local player cannot save/load data.
RemoteEvents/RemoteFunctions tutorial here: https://developer.roblox.com/en-us/articles/Remote-Functions-and-Events
Wiki link here for the service: https://developer.roblox.com/en-us/api-reference/class/DataStoreService
Wiki tutorial link here for saving data: https://developer.roblox.com/en-us/articles/Saving-Player-Data
In particular, you would use :GetAsync and :SetAsync/:UpdateAsync for your usage as this fetches and saves data. To get your datastore or make one, define DataStoreService and then use :GetDataStore() on it with desired name as first argument and scope as second argument.
local datastoreservice = game:GetService(“DataStoreService”) local datastore = datastoreservice:GetDataStore(“Example”) -- scope is by default “Global” I believe
You can then use the Players service (game.Players) and PlayerAdded to track a player joining and PlayerRemoving for leaving players. These are events so you can use :Connect on them to create functions for them for your data save/loading needs.
Yes, you use datastores to save values. http://developer.roblox.com/en-us/articles/Data-store Consider reading this article as it explains how to use DataStoreService.