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

Description: Уроки по скриптингу
Moderator: SJplayer

Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Posts: 1611
Joined: 5 Apr 2013
With us: 11 years 5 months

#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]); 


Вот и всё!
[center]i love you [s]mxIni[/s] Mysql[/center]


  • Similar Topics
    Replies
    Views
    Last post

Return to “Уроки”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest