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

Описание: Уроки по скриптингу
Модератор: SJplayer

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 25 апреля 2013, 19:54

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

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

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

Код: Выделить всё

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


В public OnPlayerConnect(playerid)

Код: Выделить всё

     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[]), после строки:

Код: Выделить всё

ini_setInteger(iniFile, "NHouse", 0);


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

Код: Выделить всё

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


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

Код: Выделить всё

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


добавим:

Код: Выделить всё

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), после строки:

Код: Выделить всё

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


добавим:

Код: Выделить всё

    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

Код: Выделить всё

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) и в него вставляем функцию сохранения позиции

Код: Выделить всё

UpdatePlayerPosition(playerid); 


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

Код: Выделить всё

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



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

Код: Выделить всё

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


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


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 5 гостей