Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Сохранение позиции при выходе [ MySQL R7 ]

Статус
В этой теме нельзя размещать новые ответы.

*Gnom_Nike

Изучающий
Регистрация
29 Окт 2013
Сообщения
577
Лучшие ответы
0
Репутация
84
В информацию ( это типа enum pinfo ), заносим это

PHP:
 Float:PosX,
    Float:PosY,
    Float:PosZ,
    pInt,
    pWorld,  
Float:PosX - переменная для сохранения позиции по X
Float:PosY - переменная для сохранения позиции по Y
Float:PosZ - переменная для сохранения позиции по Z
pInt, - переменная для сохранения интерьера
pWorld - переменная для сохранения виртуального мира
Идем дальше:

создаем загрузку/сохранения информации

в паблик или сток сохранения информации о персонаже

PHP:
new str[128];
    format(str, sizeof(str), "UPDATE `название вашей БД` SET `pInt` = '%d' WHERE `Name` = '%s'", PLI[playerid][pInt] ,Name(playerid));
    mysql_query(str, -1, 0, connectionHandle);
    format(str, sizeof(str), "UPDATE `название вашей БД` SET `pWorld` = '%d' WHERE `Name` = '%s'", PLI[playerid][pWorld] ,Name(playerid));
    mysql_query(str, -1, 0, connectionHandle);
    format(str, sizeof(str), "UPDATE `название вашей БД` SET `PosZ` = '%f' WHERE `Name` = '%s'", PLI[playerid][PosZ] ,Name(playerid));
    mysql_query(str, -1, 0, connectionHandle);
    format(str, sizeof(str), "UPDATE `название вашей БД` SET `PosX` = '%f' WHERE `Name` = '%s'", PLI[playerid][PosX] ,Name(playerid));
    mysql_query(str, -1, 0, connectionHandle);
    format(str, sizeof(str), "UPDATE `название вашей БД` SET `PosY` = '%f' WHERE `Name` = '%s'", PLI[playerid][PosY] ,Name(playerid));
    mysql_query(str, -1, 0, connectionHandle);
А теперь загрузку:

PHP:
 new posx[3];
    new posy[3];
    new posz[3];
    new pint[3];
    new pworld[3];

    cache_get_field_content(0, "pInt", pint), PLI[i][pInt] = strval(pint);
    cache_get_field_content(0, "pWorld", pworld), PLI[i][pWorld] = strval(pworld);
    cache_get_field_content(0,"PosX",posx), PLI[i][PosX] = floatstr(posx);
    cache_get_field_content(0,"PosY",posy), PLI[i][PosY] = floatstr(posy);
    cache_get_field_content(0,"PosZ",posz), PLI[i][PosZ] = floatstr(posz);
Создаем сток SetPos(playerid);

PHP:
stock SetPos(playerid)
{
    SetPlayerInterior(playerid, PLI[playerid][pInt]);
    SetPlayerVirtualWorld(playerid, PLI[playerid][pWorld]);
    SetPlayerPos(playerid, PLI[playerid][PosX],PLI[playerid][PosY],PLI[playerid][PosZ]);
    return true;
}
1 строка - изменяем интерьер для игрока который записан в табличке [pInt]
2 строка - изменяем виртуальный мир для игрока который записан в табличке [pWorld]
3 строка - изменяем позицию игрока которые записаны в табличках [PosX],[PosY],[PosZ].



Дальше создаем сток сохранения координат:

PHP:
stock SavePos(playerid)
{
    new Float:X;
    new Float:Y;
    new Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    PLI[playerid][PosX] = X;
    PLI[playerid][PosY] = Y;
    PLI[playerid][PosZ] = Z;
    PLI[playerid][pInt] = GetPlayerInterior(playerid);
     PLI[playerid][pWorld] = GetPlayerVirtualWorld(playerid);
    SavePlayer(playerid);
    return true;
}
Код:
Первые 3 строчки это переменные ( Float потому-что нам нужно записывать координаты, а они с точкой )
Дальше GetPlayerPos(playerid,X,Y,Z); берем координаты по X,Y,Z
Дальше изменяем ячейку [pInt] на ид того интерьера в котором сейчас находится игрок
Дальше изменяем ячейку [pWorld] на ид виртаульного мира в котором сейчас находится игрок

И наконец в паблик OnPlayerUpdate вставляем такую строчку, хотите в начало, хотите в конец но лучше конечно в начало
PHP:
SavePos(playerid);
Что бы например при спавне вас сразу спавнило на те координаты при которых вы оффнулись то в паблик OnPlayerSpawn вставьте в самый конец вот это
PHP:
SetPos(playerid);
Автор: dimazhelek


[HR][/HR]


 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу