PHP код:
#define MAX_GPS 20 //Можно будет изменить на своё. (кол.во сохранённых позиций)
Ко всем New:
PHP код:
new GPSName[MAX_PLAYERS][MAX_GPS][50];
enum mygps
{
Float:gpsPos_X[MAX_GPS],
Float:gpsPos_Y[MAX_GPS],
Float:gpsPos_Z[MAX_GPS]
}
new PlayerGPS[MAX_PLAYERS][mygps];
enum gpsInfo
{
gpsName[50],
Float:gpsPos[3],
bool:gpsCP
}
new CheckGPS[MAX_PLAYERS];
new CountGPS[MAX_PLAYERS];
В public OnPlayerConnect
PHP код:
for(new i;i < MAX_GPS;i ++)
{
SetString(GPSName[playerid][i], "No_Gps_Name");
}
Ко всем диалогам:
PHP код:
case 244:
{
if(response)
{
if(listitem < CountGPS[playerid])
{
CheckGPS[playerid] = listitem;
ShowPlayerDialog(playerid, 245, 2, "Выберите пункт", "Отметить на карте\nУдалить", "Выбор", "Отмена");
}
else
{
ShowPlayerDialog(playerid, 246, 1, "Название метки", "Введите название новой позиции (GPS)", "Создать", "Отмена");
}
}
}
case 245:
{
if(response)
{
new gps = CheckGPS[playerid];
switch(listitem)
{
case 0:
{
new Float:X = PlayerGPS[playerid][gpsPos_X][gps];
new Float:Y = PlayerGPS[playerid][gpsPos_Y][gps];
new Float:Z = PlayerGPS[playerid][gpsPos_Z][gps];
EnableGPSForPlayer(playerid, X, Y, Z);
format(string,sizeof(string),"Метка '%s' отмечена на карте жёлтым маркером",GPSName[playerid][gps]);
SendClientMessage(playerid, COLOR_WHITE, string);
}
case 1:
{
new maxgps = CountGPS[playerid];
format(string,sizeof(string),"Метка '%s' успешно удалена", GPSName[playerid][gps]);
for(new i = gps;i < maxgps;i ++)
{
SetString(GPSName[playerid][i],GPSName[playerid][i+1]);
}
SetString(GPSName[playerid][maxgps],"No_Gps_Name");
SendClientMessage(playerid, COLOR_WHITE, string);
SavePlayerGPS(playerid);
}
}
}
}
case 246:
{
if(response)
{
new count = CountGPS[playerid];
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 246, 1, "Название метки", "Введите название новой позиции (GPS)", "Создать", "Отмена");
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
PlayerGPS[playerid][gpsPos_X][count] = X;
PlayerGPS[playerid][gpsPos_Y][count] = Y;
PlayerGPS[playerid][gpsPos_Z][count] = Z;
SetString(GPSName[playerid][count], inputtext);
format(string,sizeof(string),"Метка '%s' успешно добавлена в список GPS", inputtext);
SendClientMessage(playerid, COLOR_WHITE, string);
SavePlayerGPS(playerid);
}
}
Создаём загрузку при входе [GPS]
В public OnPlayerLogin
PHP код:
LoadPlayerGPS(playerid);
Ко всем командам (DC_CMD)
PHP код:
CMD:mygps(playerid)
{
new string[1000];
CountGPS[playerid] = 0;
for(new i;i < MAX_GPS;i ++)
{
if(!GetString(GPSName[playerid][i],"No_Gps_Name"))
{
strcat(string, GPSName[playerid][i]);
strcat(string, "\n");
CountGPS[playerid] ++;
}
}
strcat(string, "{33CCFF}Добавить позицию");
if(!ShowPlayerDialog(playerid, 244, 2, "{33CCFF}My GPS", string, "Выбор", "Отмена"))
{
SendClientMessage(playerid, COLOR_GREY,"Недоступно в данный момент");
}
return true;
}
В свободное место:
PHP код:
stock LoadPlayerGPS(playerid)
{
new string[100];
format(string, sizeof(string),"[GPS]/%s.gps",PN(playerid));
if(fexist(string))
{
new File: file = fopen(string, io_read);
if (file)
{
for (new i = 0; i < MAX_GPS; i ++)
{
fread(file, string);
sscanf(string,"p<|>s[50]fff",
GPSName[playerid][i],
PlayerGPS[playerid][gpsPos_X][i],
PlayerGPS[playerid][gpsPos_Y][i],
PlayerGPS[playerid][gpsPos_Z][i]);
}
fclose(file);
}
}
else
{
for (new i = 0; i < MAX_GPS; i ++)
{
SetString(GPSName[playerid][i],"No_Gps_Name");
PlayerGPS[playerid][gpsPos_X][i] = 0.0;
PlayerGPS[playerid][gpsPos_Y][i] = 0.0;
PlayerGPS[playerid][gpsPos_Z][i] = 0.0;
}
SavePlayerGPS(playerid);
}
return true;
}
stock SavePlayerGPS(playerid)
{
new File: file;
for (new i = 0;i < MAX_GPS;i ++)
{
new string[100], str[50];
format(string, sizeof(string), "%s|%f|%f|%f\n",
GPSName[playerid][i],
PlayerGPS[playerid][gpsPos_X][i],
PlayerGPS[playerid][gpsPos_Y][i],
PlayerGPS[playerid][gpsPos_Z][i]);
format(str, sizeof(str),"[GPS]/%s.gps",PN(playerid));
if(!i) file = fopen(str, io_write);
else file = fopen(str, io_append);
fwrite(file, string);
fclose(file);
}
return true;
}
Заходим в scriptfiles создаём папку [GPS]
Будут ошибки при компиляции пишите.
Автор неизвестен, так как вырезал с чужого мода.