Mr Green
Новичок
Здравствуйте пользователи Pawno-info.ru
Итак, я выкладываю данный мануал, конечно уже есть подобные темы, но эта несколько иная, данную систему игрок может по своему желанию отключить, или включить когда ему потребуется.
Начнем:
К enum pInfo добавим:
В public OnPlayerConnect
Теперь добавим в /mm - > Настройки - > Отключить|Включить сохранение позиции при выходе
Или добавьте туда где Вы сами считаете нужным!
Вот пример из /mm:
DIALOGID - id Вашего диалога.
Теперь код диалога для включения/отключения сохранения позиции при выходе (public OnDialogResponse)
Этот код будет выполнятся когда игрок нажмет на пункт диалога [5] Отключить|Включить сохранение позиции при выходе
По желанию можно сделать только для VIP пользователей
Ко всем stock добавляем
В первую строку public OnPlayerDisconnect вставляем:
В public OnPlayerDeath:
В public OnPlayerSpawn
Между скобками ставите все те действия которые обычно происходят при спавне игрока:
Запись:
Чтение:
Возможно данную систему придется подгонять конкретно под Ваш мод, т.к. возможно будут проблемы, игроки будут застревать на играх (Paintball и т.п.) поэтому данную систему нужно подогнать, но это уже сами
.
Я полноценно не тестировал систему т.к. не на чем (нет своего сервера).
Автор: Mr.Green
Итак, я выкладываю данный мануал, конечно уже есть подобные темы, но эта несколько иная, данную систему игрок может по своему желанию отключить, или включить когда ему потребуется.
Начнем:
К enum pInfo добавим:
PHP:
Float:pPosX,
Float:pPosY,
Float:pPosZ,
pVirtWorld,
pInterr
PHP:
PlayerInfo[playerid][pPosX] = 0;
PlayerInfo[playerid][pPosY] = 0;
PlayerInfo[playerid][pPosZ] = 0;
PlayerInfo[playerid][pInterr] = 0;
PlayerInfo[playerid][pVirtWorld] = 0;
Или добавьте туда где Вы сами считаете нужным!
Вот пример из /mm:
PHP:
ShowPlayerDialog(playerid, DIALOGID, DIALOG_STYLE_LIST, "Настройки", "[0] Отключить чат семьи\n[1] Включить чат семьи\n[2] Сменить пол\n[3] Очистить чат\n[4] Подать заявку на смену ника\n[5] Отключить|Включить сохранение позиции при выходе", "Выбрать", "<< Назад");
Теперь код диалога для включения/отключения сохранения позиции при выходе (public OnDialogResponse)
Этот код будет выполнятся когда игрок нажмет на пункт диалога [5] Отключить|Включить сохранение позиции при выходе
PHP:
if(PlayerInfo[playerid][pDonateRank] < 2) return SendClientMessage(playerid, COLOR_GREY, "Доступно только для VIP пользователей! (со 2-го уровня)");
if(PlayerInfo[playerid][pPosX] != 0 && PlayerInfo[playerid][pPosY] != 0)
{
PlayerInfo[playerid][pPosX] = 0;
PlayerInfo[playerid][pPosY] = 0;
PlayerInfo[playerid][pPosZ] = 0;
OnPlayerUpdateRL(playerid); // замените на вашу функцию сохранения аккаунта
SendClientMessage(playerid, COLOR_WHITE, "Теперь ваша позиция после выхода из игры не будет сохранятся!");
return 1;
}
else
{
PlayerPositionUpdate(playerid);
SendClientMessage(playerid, COLOR_WHITE, "Теперь ваша позиция после выхода из игры будет сохранятся!");
return 1;
}
Ко всем stock добавляем
PHP:
stock PlayerPositionUpdate(playerid)
{
GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]);
PlayerInfo[playerid][pVirtWorld] = GetPlayerVirtualWorld(playerid);
PlayerInfo[playerid][pInterr] = GetPlayerInterior(playerid);
return 1;
}
PHP:
if(PlayerInfo[playerid][pPosX] != 0 && PlayerInfo[playerid][pPosY] != 0) PlayerPositionUpdate(playerid);
PHP:
PlayerInfo[playerid][pPosX] = 0;
PlayerInfo[playerid][pPosY] = 0;
Между скобками ставите все те действия которые обычно происходят при спавне игрока:
PHP:
if(PlayerInfo[playerid][pPosX] != 0 && PlayerInfo[playerid][pPosY] != 0)
{
SetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]);
SetPlayerVirtualWorld(playerid,PlayerInfo[playerid][pVirtWorld]);
SetPlayerInterior(playerid,PlayerInfo[playerid][pInterr]);
SetPlayerToTeamColor(playerid);
SetPlayerHealthAC(playerid, PlayerInfo[playerid][pHP ]);
return 1;
}
PHP:
ini_setFloat(File,"pPosX",PlayerInfo[playerid][pPosX]);
ini_setFloat(File,"pPosY",PlayerInfo[playerid][pPosY]);
ini_setFloat(File,"pPosZ",PlayerInfo[playerid][pPosZ]);
ini_setInteger(File,"pInter",PlayerInfo[playerid][pInterr]);
ini_setInteger(File,"pVirtWorld",PlayerInfo[playerid][pVirtWorld]);
PHP:
ini_getFloat(File,"pPosX",PlayerInfo[playerid][pPosX]);
ini_getFloat(File,"pPosY",PlayerInfo[playerid][pPosY]);
ini_getFloat(File,"pPosZ",PlayerInfo[playerid][pPosZ]);
ini_getInteger(File,"pInter",PlayerInfo[playerid][pInterr]);
ini_getInteger(File,"pVirtWorld",PlayerInfo[playerid][pVirtWorld]);
Я полноценно не тестировал систему т.к. не на чем (нет своего сервера).
Автор: Mr.Green
Последнее редактирование:
