if( strcmp(cmdtext, "/savepos", true) == 0 || strcmp(cmdtext, "/s", true) == 0 )
{
if(IsPlayerAdmin(playerid))
{
//Step1: Make the string we are going to save
new comment[256];
comment = strtokspace(cmdtext, idx); //strtokspace ignores spaces and just collects everything after the command
new Float:pX,Float:pY,Float:pZ, Float:facing;
//First we collect the data we want to save
GetPlayerPos(playerid, pX,pY,pZ);
GetPlayerFacingAngle(playerid, facing);
//Then we format all the data into a string so we can write that string to a line.
new output[256];
format(output, sizeof(output), "{ %f , %f , %f, %f }, // %s \r\n" , pX, pY, pZ, facing, comment);
//example line { 666.829406 , 926.550720 , -40.729133, 265.242553 }, // oilleakA
//Step2: Open the file and save the string to the end of the file, then close it.
//IMPORTANT BIT START
if (fexist("savedpositions.txt")) //check if the text file exists, this is incase you dont have a scriptfiles folder
{
new File: savefp = fopen("savedpositions.txt", io_append); //open the file up to append to it. This puts the pointer at the end of the file so you write stuff below what is there at the moment.
fwrite(savefp,output); //Writes the string we formatted earlier (example of the string: { 666.829406 , 926.550720 , -40.729133, 265.242553 }, // oilleakA
fclose(savefp);
} else {
SendClientMessage(playerid, COLOR_WHITE, "Error 404: File not found");
return 1;
}
//IMPORTANT BIT END
//Step3: Displays to the player what was saved
new outputmsg[256];
format(outputmsg, sizeof(outputmsg), "Position %f , %f , %f, %f Saved // %s \n" , pX, pY, pZ, facing, comment);
SendClientMessage(playerid, COLOR_WHITE, outputmsg);
} else {
SendClientMessage(playerid, COLOR_WHITE, " You need to be an admin to to this!");
}
return 1;
}
//strtokspace - place somewhere on its own (very bottom of script is good place)
strtokspace(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[256];
while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}