PDA

Просмотр полной версии : [Callback] OnGameModeExit



Daniel_Cortez
07.10.2015, 19:59
Описание:

Вызывается при смене мода или завершении его работы, т.е. после вызова GameModeExit() или выполнения RCON-команды "gmx".

Параметры:

У данного коллбэка нет параметров.


Примечания:
OnGameModeExit вызывается не только в моде, но и в фильтрскриптах. Следовательно, этот коллбэк можно использовать в фильтрскриптах для обнаружения смены мода или рестарта сервера.
Сервер не ждёт, пока выполнится код в данном коллбэке, поэтому в нём нельзя выполнять затратные операции, такие как сохранение домов, аккаунтов игроков и т.п. - сервер может не дождаться их выполнения и данные окажутся повреждены.
Если хотите выключить или перезагрузить сервер, сначала сохраните все данные, а потом выключайте/перезагружайте его (посредством GameModeExit() или SendRconCommand("gmx")), но ни в коем случае не проводите сохранение в OnGameModeExit.

Пример использования:


CMD:gmx(playerid, params[])
{
if(IsPlayerAdmin(playerid))
{
// Сохранение аккаунтов игроков и домов перед перезагрузкой.
SaveAccounts();
SaveHouses();
// Перезагрузка мода.
SendRconCommand("gmx");
}
}

public OnGameModeExit()
{
print("Игровой мод завершил работу.");
}



Статью подготовил: Daniel_Cortez (http://pro-pawn.ru/member.php?100-Daniel_Cortez)

iWors
31.03.2016, 15:50
А если к примеру мод аварийно завершит свой процесс? Или же краш..
И еще, если краш игрока все же произойдет, а у нас в OnPlayerDisconnect имеется сохранение аккаунта, то сработает ли сохранения отдельно взятого аккаунта игрока?

Daniel_Cortez
31.03.2016, 20:11
А если к примеру мод аварийно завершит свой процесс? Или же краш..
При краше выполнение кода на сервере прерывается, следовательно OnGameModeExit вызван не будет.



И еще, если краш игрока все же произойдет, а у нас в OnPlayerDisconnect имеется сохранение аккаунта, то сработает ли сохранения отдельно взятого аккаунта игрока?
Да, для сервера это будет как обычный разрыв связи с игроком.
http://wiki.sa-mp.com/wiki/OnPlayerDisconnect_RU