Сохранение координатов игрока при выходе из игры

Уроки по скриптингу

Moderator: SJplayer

Avatar
Topic author
Дим M
Администратор
Администратор
Posts: 1319
With us: 7 years 5 months

Сохранение координатов игрока при выходе из игры

Post #1by Дим » 25 Apr 2013, 19:54

Сохранение координатов игрока при выходе из игры

Сегодня будем делать сохранение координатов игрока при выходе из игры (спавн на том же месте где был до выхода из игры).

Возьмём простую регистрацию, и ко всем переменным игрока добавим:

Code: Select all

Float:pPos_x,
Float:pPos_y,
Float:pPos_z//последняя строка без запятой          


В public OnPlayerConnect(playerid)

Code: Select all

     PlayerInfo[playerid][pPos_x] = 1069.552490;//меняйте на свои
    PlayerInfo[playerid][pPos_y] = 1045.621459;
    PlayerInfo[playerid][pPos_z] = 10.159700;


В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]), после строки:

Code: Select all

ini_setInteger(iniFile, "NHouse", 0);


добавим координаты первоначального спавна игрока (при регистрации):

Code: Select all

ini_setFloat(iniFile, "Pos_x", 1069.552490); // Запишем позицию спавна игрока в файл.
 ini_setFloat(iniFile, "Pos_y", 1045.621459);//меняйте на свои
ini_setFloat(iniFile, "Pos_z", 10.159700);


В этом же паблике, после строки:

Code: Select all

ini_getInteger(iniFile,"NHouse",PlayerInfo[playerid][pNHouse]); 


добавим:

Code: Select all

ini_getFloat(iniFile, "Pos_x", PlayerInfo[playerid][pPos_x]);//при авторизации
ini_getFloat(iniFile, "Pos_y", PlayerInfo[playerid][pPos_y]); // Запишем позицию игрока из файла в переменную.
ini_getFloat(iniFile, "Pos_z", PlayerInfo[playerid][pPos_z]); 


И в stock SaveAccount(playerid), после строки:

Code: Select all

ini_setInteger(iniFile, "NHouse", PlayerInfo[playerid][pNHouse]); 


добавим:

Code: Select all

    ini_setFloat(iniFile, "Pos_x", PlayerInfo[playerid][pPos_x]); //при выходе из игры - запись в файл
    ini_setFloat(iniFile, "Pos_y", PlayerInfo[playerid][pPos_y]);
    ini_setFloat(iniFile, "Pos_z", PlayerInfo[playerid][pPos_z]); 


Создадим stock

Code: Select all

stock UpdatePlayerPosition(playerid)//Сохранение (узнать) позиция игрока
{
    PlayerInfo[playerid][phealth] = health;
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    PlayerInfo[playerid][pPos_x] = x;
    PlayerInfo[playerid][pPos_y] = y;
    PlayerInfo[playerid][pPos_z] = z;
    return true;
}


Теперь сделаем чтоб позиция сохранялась при Disconne'кте. В моде находим public OnPlayerDisconnect(playerid,reason) и в него вставляем функцию сохранения позиции

Code: Select all

UpdatePlayerPosition(playerid); 


и при смерти - в public OnPlayerDeath(playerid, killerid, reason) так же добавим:

Code: Select all

    UpdatePlayerPosition(playerid);//где погиб там и спавн   



И напоследок, в public OnPlayerSpawn(playerid)

Code: Select all

SetPlayerPos(playerid,PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z]); 


Вот и всё!
i love you mxIni Mysql

! ! !


Return to “Уроки”

Who is online

Users browsing this forum: 2 guests