CMD:gmx(playerid, params[])
{
if (IsPlayerAdmin(playerid) || PlayerInfo[playerid][pAdmin] == 5) // Checka se esta logado na RCON e se й admin Dono
{
MensagemDesligou = 1;
new string[128];
format(string, sizeof(string), "[STAFF][%s] %s ATIVOU O GMX MANUAL!",PlayerInfo[playerid][pCargo], PlayerInfo[playerid][pNome]);
format(string, sizeof(string), "[STAFF] SERVIDOR IRБ REINICIAR DENTRO DE 5 SEGUNDOS!");
SendClientMessageToAll(COLOR_LIGHTRED, string);
SetTimer("TimeToGMX",5000, false);
}
else
{
SendClientMessage(playerid,COR_VERMELHO, "|ERRO| Vocк nгo pode executar este comando!");
}
return true;
}
forward TimeToGMX(playerid);
public TimeToGMX(playerid)
{
GameModeInitExitFunc();
}
SR::GameModeInitExitFunc()
{
foreach(Player, i)
{
InterpolateCameraPos(i, 1855.578247, -1356.315795, 106.570388, 828.892395, -1470.234985, 159.147048, 50000);
InterpolateCameraLookAt(i, 1860.529296, -1355.671020, 106.302513, 833.859008, -1469.715087, 158.897155, 60000);
SetPlayerInterior(i, 0);
TogglePlayerControllable(i, 0);
SetPlayerPos(i, 1416.6915,-1478.7733,125.3672);
}
SendClientMessageToAll(COLOR_ADMIN, "==============================================================================================");
SendClientMessageToAll(COLOR_ADMIN, "Servidor estб sendo reiniciado e voltarб em alguns segundos! Por Favor, nгo feche o jogo ainda");
SendClientMessageToAll(COLOR_ADMIN, "==============================================================================================");
SetTimer("GameModeExitFunc", 1000, 0);
return 1;
}
SR::GameModeExitFunc()
{
foreach(Player, i)
{
GameTextForPlayer(i, "~b~~h~Reiniciando ~r~~h~& ~w~~h~Salvando...", 8000, 3);
TogglePlayerControllable(i, 0);
}
for(new i; i < MAX_TEXT_DRAWS; i++)
{
TextDrawDestroy(Text:i);
}
SetTimer("ReiniciarServer", 5000, 0);
}
SR::ReiniciarServer()
{
GameModeExit();
}
public OnGameModeExit()
{
for(new i = 0; i < MAX_PLAYERS; i++) SalvarDados(i); // Realizamos um loop na funзгo Funзгo SalvarDados para q salve todas as contas numa posivel queda do servidor
mysql_close(IDConexao); // Aqui fechamos a conexгo com o host
if(!MensagemDesligou)
{
SendClientMessageToAll(COLOR_ADMIN,"[STAFF] {FFFFFF}Servidor desligado manualmente!");
}
return 1;
}
stock SalvarDados(playerid)
{
//if(PlayerInfo[playerid][pLogado] == false) return 1; // se o player nao estiver logado nгo ira salvar nada
PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
new Query[350]; // variavel com 350 celulas para salvamento
mysql_format(IDConexao, Query, sizeof(Query), "UPDATE `Contas` SET `Nome`='%s',`Level`=%d,`Vitorias`=%d,`Admin`=%d,`Cargo`='%s',`Funcao`='%s',`Skin`=%d,`Matou`=%d,`Morreu`=%d,`Dinheiro`=%d,`Banido`=%d WHERE `ID`=%d",
PlayerInfo[playerid][pNome],
PlayerInfo[playerid][pLevel],
PlayerInfo[playerid][pVitorias],
PlayerInfo[playerid][pAdmin],
PlayerInfo[playerid][pCargo],
PlayerInfo[playerid][pFuncao],
PlayerInfo[playerid][pSkin],
PlayerInfo[playerid][pMatou],
PlayerInfo[playerid][pMorreu],
PlayerInfo[playerid][pDinheiro],
PlayerInfo[playerid][pBanido],
PlayerInfo[playerid][pID]);
// formatamos a Query referente a ID da conta (WHERE `ID`=%d) e realizaremos a consulta para atualizar os dados no banco de dados
mysql_tquery(IDConexao, Query, "DadosSalvos","d", playerid); // consulta, e enviamos o resultado para a callback DadosSalvos para um DEBUG
PlayerInfo[playerid][pLevel] = 0; // resetamos as variaveis.
PlayerInfo[playerid][pAdmin] = 0;
PlayerInfo[playerid][pCargo] = 0;
PlayerInfo[playerid][pFuncao] = 0;
PlayerInfo[playerid][pMatou] = 0;
PlayerInfo[playerid][pMorreu] = 0;
PlayerInfo[playerid][pDinheiro] = 0;
PlayerInfo[playerid][pVitorias] = 0;
PlayerInfo[playerid][pBanido] = 0;
PlayerInfo[playerid][pLogado] = false;
return 1;
}
em vez do GameModeExit use o SendRconCommand("Gmx"); ou faзa um loop para salvar todas as contas do servidor.
|
SR::ReiniciarServer()
{
SendRconCommand("gmx"));
}
Tente
PHP код:
|
Aconselho vocк usar o Salvamento em OnPlayerDisconnect, possнvelmente assim resolva. E coloca pra salvar conta somente de quem estб Logado (playerid)
|
esse й o problema , geralmente pode desconectar o jogador, logo valor de tudo q for salvar vai ser 0 , entгo vai salvar como 0
Agora se jogador desconecta e salva й maior garantia q vai salvar. |
public OnPlayerDisconnect(playerid, reason)
{
SalvarDados(playerid); // Chamamos a funзгo para salvar a conta do player que desconectar
return 1;
}