public OnPlayerDisconnect(playerid, reason)
{
new pl[MAX_PLAYER_NAME];
new str[256];
new Float:X,Float:Y,Float:Z;
GetPlayerName(playerid,pl,MAX_PLAYER_NAME);
GetPlayerPos(playerid,X,Y,Z);
format(str,sizeof(str),"/pos/%s.ini",pl);
new f = ini_createFile (str);
if(f < 0)
{
f = ini_openFile(str);
}
if(f >= 0)
{
new Float:PosX = X;
new Float:PosY = Y;
new Float:PosZ = Z;
ini_setFloat(f,"X",PosX);
ini_setFloat(f,"Y",PosY);
ini_setFloat(f,"Z",PosZ);
ini_closeFile(f);
}
}
public OnPlayerSpawn(playerid)
{
new X,Y,Z;
new pl[MAX_PLAYER_NAME];
new str[256];
format(str,sizeof(str),"/pos/%s.ini",pl);
new f = ini_openFile(str);
new Float:PosX = X;
new Float:PosY = Y;
new Float:PosZ = Z;
ini_getFloat(f,"X",PosX);
ini_getFloat(f,"Y",PosY);
ini_getFloat(f,"Z",PosZ);
ini_closeFile(f);
SetPlayerPos(playerid,X,Y,Z);
SpawnPlayer(playerid);
SetCameraBehindPlayer(playerid);
return 1;
}
new Float:PosX = X; new Float:PosY = Y; new Float:PosZ = Z |
public OnPlayerDisconnect(playerid, reason)
{
new pl[MAX_PLAYER_NAME];
new str[256];
new Float:X,Float:Y,Float:Z;
GetPlayerName(playerid,pl,MAX_PLAYER_NAME);
GetPlayerPos(playerid,X,Y,Z);
format(str,sizeof(str),"/pos/%s.ini",pl);
new f = ini_createFile (str);
if(f < 0)
{
f = ini_openFile(str);
}
if(f >= 0)
{
new Float:PosX = X;
new Float:PosY = Y;
new Float:PosZ = Z;
ini_setFloat(f,"X",PosX);
ini_setFloat(f,"Y",PosY);
ini_setFloat(f,"Z",PosZ);
ini_closeFile(f);
}
}
public OnPlayerSpawn(playerid)
{
new pl[MAX_PLAYER_NAME];
new str[256];
format(str,sizeof(str),"/pos/%s.ini",pl);
new f = ini_openFile(str);
new Float:PosX;
new Float:PosY;
new Float:PosZ;
ini_getFloat(f,"X",PosX);
ini_getFloat(f,"Y",PosY);
ini_getFloat(f,"Z",PosZ);
ini_closeFile(f);
SetPlayerPos(playerid,PosX,PosY,PosZ);
SpawnPlayer(playerid);
SetCameraBehindPlayer(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new pl[MAX_PLAYER_NAME],
str[256];
GetPlayerName(playerid,pl,MAX_PLAYER_NAME);
format(str,sizeof(str),"pos/%s.ini",pl);
new f = ini_createFile(str);
if(f < 0)
{
f = ini_openFile(str);
}
if(f >= 0)
{
new Float:pos[3];
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
ini_setFloat(f,"X",pos[0]);
ini_setFloat(f,"Y",pos[1]);
ini_setFloat(f,"Z",pos[2]);
ini_closeFile(f);
}
}
public OnPlayerSpawn(playerid)
{
new pl[MAX_PLAYER_NAME],
str[256],
Float:pos[3];
GetPlayerName(playerid,pl,MAX_PLAYER_NAME);
format(str,sizeof(str),"pos/%s.ini",pl);
new f = ini_openFile(str);
ini_getFloat(f,"X",pos[0]);
ini_getFloat(f,"Y",pos[1]);
ini_getFloat(f,"Z",pos[2]);
ini_closeFile(f);
SetPlayerPos(playerid,pos[0],pos[1],pos[2]);
// совсем не нужны в данном примере
//SpawnPlayer(playerid);
//SetCameraBehindPlayer(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new
name[MAX_PLAYER_NAME],
string[MAX_PLAYER_NAME+10]; // почему "+10" ? потому что "pos/%s.ini" с полной выкладкой не займет больше чем 34 символа
GetPlayerName( playerid, name, MAX_PLAYER_NAME ); // узнаем как зовут игрока
format( string, sizeof( string ),"pos/%s.ini", name ); // задаем путь к файлу
new
iniKey = ini_createFile( string ); // пытаемся создать файл
if( iniKey < INI_OK ) iniKey = ini_openFile( string ); // если код ошибки меньше чем OK, то пытаемся открыть файл
if( iniKey >= INI_OK ) // если код ошибки больше или OK, то ошибок нет (:
{
new
Float: playerPos[4];
GetPlayerPos( playerid, playerPos[0], playerPos[1], playerPos[2] ); // получаем координаты
GetPlayerFacingAngle( playerid, playerPos[3] ); // получаем угол поворота головы
ini_setFloat( iniKey, "X", playerPos[0] ); // запишем в файл...
ini_setFloat( iniKey, "Y", playerPos[1] ); // запишем в файл...
ini_setFloat( iniKey, "Z", playerPos[2] ); // запишем в файл...
ini_setFloat( iniKey, "R", playerPos[3] ); // запишем в файл...
ini_setInteger( iniKey, "isUse", true ); // запишем в файл флаг, информирующий о том что игрок покинул сервер
}
ini_closeFile( iniKey ); // убиваем ключ, сохраняем файл
return 1;
}
public OnPlayerSpawn(playerid)
{
new
name[MAX_PLAYER_NAME],
string[MAX_PLAYER_NAME+10], // почему "+10" ? потому что "pos/%s.ini" с полной выкладкой не займет больше чем 34 символа
f_use; // флаг использования функции
GetPlayerName( playerid, name, MAX_PLAYER_NAME ); // узнаем как зовут игрока
format( string, sizeof( string ),"pos/%s.ini", name ); // задаем путь к файлу
new
iniKey = ini_openFile( string ); // пытаемся открыть файл
if( iniKey < INI_OK ) goto quit_s; // если код ошибки меньше чем OK, то уходим в конец функции методом goto;
ini_getInteger( iniKey, "isUse", f_use ); // получим флаг
if( f_use ) // если игок только зашел на сервер, и еще не спавнился ->
{
new
Float: playerPos[4];
ini_getFloat( iniKey, "X", playerPos[0] ); // получаем из файла...
ini_getFloat( iniKey, "Y", playerPos[1] ); // получаем из файла...
ini_getFloat( iniKey, "Z", playerPos[2] ); // получаем из файла...
ini_getFloat( iniKey, "R", playerPos[3] ); // получаем из файла...
SetPlayerPos( playerid, playerPos[0], playerPos[1], playerPos[2] ); // перемещаем игрока
SetPlayerFacingAngle( playerid, playerPos[3] ); // поворачиваем голову
ini_setInteger( iniKey, "isUse", false ); // ! установим флаг чтобы игрок больше не спавнился на этих координатах (эффект будет только при перезаходе)
}
quit_s: // метод goto;
ini_closeFile( iniKey ); // убиваем ключ, сохраняем файл
return 1;
}