Incase someone wants a simple save to text solution (for whatever reason like modding or such) I am just gonna drop these functions here (replace tmp_str with the string you are going to use to save/load values/info). I used it for a first description and than on next line the value. But you can also do several values on 1 line if you read them out with e.g. str_parse. Note that as a delimiter (/to seperate the lines) I use a \n / enter-thingy . When you change it just dont forget to change both functions.

Code:
//For loading/reading (go to next line and read)
function read_line(var handle) {
	str_cpy(tmp_str, ""); //reset previous read lines
	file_str_readto(handle, tmp_str, "\n", 10000); //read next line
	str_trim(tmp_str); //remove spaces from value
	str_trunc(tmp_str, 1); //remove \n (/remove delimiter)
}

//For saving/writing (write blank to next line)
function skip_line(var handle) {	
	file_asc_write(handle, 13); //new line
	file_asc_write(handle, 10);
}



So for saving you do file_open_write and use something like file_str_write(handle, "Entity file:"); to write a line and call skip_line(handle); to skip a line (/go to next line for writing), than e.g. file_str_write(handle, str_for_entfile(NULL, ent)); . After you are finished dont forget to close the file.

For reading you do file_open_read and call read_line(handle); when you want to go the next line AND read that line of the file. So say the first line is a description and the second line has the value, call read_line(handle); twice. Than read the string on that line by doing something like ent.x = str_to_num(tmp_str); . Again dont forget to close the file.

For saving/loading multiple entities loop through them by e.g. using ent_next or your entity pointer array if you have one.