[Ajuda] Salvar profissгo Mysql
#1

Boa tarde, estou com um problema no meu servidor, gostaria de salvar a profissгo a Mysql fiz um sistema para salvar, sу que acontece o seguinte problema.

Eu vou la pego a profissгo, por em quanto sу existe uma, que й Gari, pego ela, jogo normal, dou /q vou ver na tabela o valor da profissгo alterou pra 1

1 = Gari

Ai volto no servidor, ainda sou gari, sу que se eu dar GMX ou Fechar o console, quando volto, nгo to mais com a profissгo salva, estou sem os comandos da prof, pois nгo pertenзo mais ah ela, ai teria q pegar a profissгo de novo, Como posso resolver?

Todos os dados estгo sendo salvos normalmente e carregados normalmente.

ele salva

Admin
Level
Senha
Nome
ID
Skin
Sexo
Profissao ( Ah que esta com problema )

E tudo isso й carregado normal se eu fechar o servidor ou da GMX mas quando volto, todos os dados foram salvos, sу que a profissгo nгo porem la na tabela ta dizendo q minha conta ta com a profissгo gari, e no servidor diz q nгo sou gari
Reply
#2

Estб com problema no carregamento, mande o carregamento completo, desdo LOGIN.
Reply
#3

LOGIN

Quote:

case DIALOG_LOGIN:
{
if(!response) return Kick(playerid); // se clicar em cancelar na dialog login ira kickar o jogador
if(!strlen(inputtext)) // se nгo digitar nada ira retornar.
{
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} Vocк nгo digitou a senha !");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Digite sua senha abaixo para logar-se", "Logar", "Voltar");
return 1;
}
if(!strcmp(PlayerInfo[playerid][pSenha], inputtext, true, 20)) //comparamos a variavel coma senha do player com a senha digitada
{ // se a comparaзгo for correta vamos realizar a consulta para adicionar os valores contidos na tabela para as variaveis do player.

new Query[70];
mysql_format(IDConexao, Query, sizeof(Query), "SELECT * FROM `Contas` WHERE Nome='%s'", PlayerInfo[playerid][pNome]);
mysql_tquery(IDConexao, Query, "CarregarContas", "d", playerid);
// Formatamos a Query realizamos a consulta e enviamos o resultado para a callback CarregarContas

} else {
// comparaзгo sem sucesso ::
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} Senha incorreta !");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Digite sua senha abaixo para logar-se", "Logar", "Voltar");
SendClientMessage(playerid, 0xFF3C41AA, "NO MOMENTO SOMENTE PESSOAL DA {FFFFFF}ADMINISTRAЗГO {FF3C41}ESTA TENDO ACESSO AO SERVIDOR, SERVIDOR EM ALFA, {FFFFFF}CITY OF PARADISE");
}
}
}
return 1;
}

CARREGAMENTO DE DADOS

Quote:

forward CarregarContas(playerid);
public CarregarContas(playerid)
{ // Resultado da consulta do login, adicionamos os valores contidos na tabela para as variaveis do player
cache_get_value_int(0, "ID", PlayerInfo[playerid][pID]);
cache_get_value_int(0, "Admin", PlayerInfo[playerid][pAdmin]);
cache_get_value_int(0, "Level", PlayerInfo[playerid][pLevel]);
cache_get_value_int(0, "Sexo", PlayerInfo[playerid][pSexo]);
cache_get_value_int(0, "Morreu", PlayerInfo[playerid][pMorreu]);
cache_get_value_int(0, "Profissao", PlayerInfo[playerid][pProfissao]);
cache_get_value_int(0, "Skin", PlayerInfo[playerid][pSkin]);
cache_get_value_int(0, "Dinheiro", PlayerInfo[playerid][pDinheiro]);
CarregarDados(playerid);
return 1;
}

Detalhe a profissгo й um FS q to usando, porem to usando em Modulos. Fs й esse aqui : https://pastebin.com/gmNj45RE

Detalhe eu tirei o OnPlayerConnect e o OnPlayerDisconnect do Fs pra colocar meu sistema de salvamento.
Reply
#4

Vocк tirou OnPlayerDisconnect e lembrou de resetar a variбvel qnd o player sair?
PlayerInfo[playerid][pProfissao] = 0;
ou Gari[playerid] = 0; GariTrabalhando[playerid] = 0;

faзa isso no disconnect e no connect eu nгo sei como vocк adaptou isso, vc trocou as variбvel do FS qnd adaptou em modulo?
Reply
#5

Entгo pelo o que eu entendi, vocк quer que toda vez que o player entre no servidor, ele pegue a profissгo novamente, entгo nгo й pra salvar a profissгo?
Reply
#6

Quote:
Originally Posted by Felipealves
View Post
Vocк tirou OnPlayerDisconnect e lembrou de resetar a variбvel qnd o player sair?
PlayerInfo[playerid][pProfissao] = 0;
ou Gari[playerid] = 0; GariTrabalhando[playerid] = 0;

faзa isso no disconnect e no connect eu nгo sei como vocк adaptou isso, vc trocou as variбvel do FS qnd adaptou em modulo?
Na public OnPlayerDisconnect tem SalvarDados(playerid) que й uma stock criada pra facilitar. entгo sim tem reset da variбvel quando o player sai.

PHP Code:
Na public OnPlayerDisconnect(playeridreason)
{
    
SalvarDados(playerid); // Chamamos a funзгo para salvar a conta do player que desconectar
    
return 1;

PHP Code:
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(IDConexaoQuerysizeof(Query), "UPDATE `Contas` SET Nome='%s', Level=%d, Admin=%d,     Skin=%d, Sexo=%d, Profissao=%d, Morreu=%d, Dinheiro=%d WHERE ID=%d",
    
PlayerInfo[playerid][pNome],
    
PlayerInfo[playerid][pLevel],
    
PlayerInfo[playerid][pAdmin],
    
GetPlayerSkin(playerid),
    
PlayerInfo[playerid][pSexo],
    
PlayerInfo[playerid][pProfissao],
    
PlayerInfo[playerid][pMorreu],
    
PlayerInfo[playerid][pDinheiro],
    
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(IDConexaoQuery"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][pSexo] = 0;
    
PlayerInfo[playerid][pMorreu] = 0;
    
PlayerInfo[playerid][pDinheiro] = 0;
    
PlayerInfo[playerid][pProfissao] = 0;
    
PlayerInfo[playerid][pLogado] = false;
    return 
1;

Na OnPlayerConnect na area do login й chamada a stock ''CarregarDados''

PHP Code:
stock CarregarDados(playerid)
{
    
PlayerInfo[playerid][pLogado] = true;
    
SetPlayerScore(playeridPlayerInfo[playerid][pLevel]);
    
GivePlayerMoney(playeridPlayerInfo[playerid][pDinheiro]);
    
SetSpawnInfo(playerid0PlayerInfo[playerid][pSkin], 1224.6243,-1815.7311,16.5938269.15,0,0,0,0,0,0);
    
PlayerInfo[playerid][pProfissao];
    
SpawnPlayer(playerid);
    return 
1;

Sу relembrando quando pego a profissгo no jogo e dou /q e volto pro game, ainda estou empregado, mas se fecho o console e volto nгo estou mais com a profissгo.
Reply
#7

Quote:
Originally Posted by Cauezin
View Post
Entгo pelo o que eu entendi, vocк quer que toda vez que o player entre no servidor, ele pegue a profissгo novamente, entгo nгo й pra salvar a profissгo?
Na verdade eu quero q ele nгo tenha que ficar pegando a profissгo, o problema ta o seguinte, o player entra no servidor pega a profissao, quando ele da /q a profissao й salva, e se ele logar novamente, ainda estarб com a mesma profissгo, mais se o servidor Reniciar, ele volta desempregado, e nгo com a profissгo, ou seja, toda vez q o servidor volta, ele tem que pegar a profissгo denovo. pois ela nгo salva se o servidor reniciar ou for fechado.
Reply
#8

Quote:
Originally Posted by Ryuzaki07
View Post
Na verdade eu quero q ele nгo tenha que ficar pegando a profissгo, o problema ta o seguinte, o player entra no servidor pega a profissao, quando ele da /q a profissao й salva, e se ele logar novamente, ainda estarб com a mesma profissгo, mais se o servidor Reniciar, ele volta desempregado, e nгo com a profissгo, ou seja, toda vez q o servidor volta, ele tem que pegar a profissгo denovo. pois ela nгo salva se o servidor reniciar ou for fechado.
Antes de qualquer servidor reiniciar, ele salva as informaзхes de tudo e todos, faзa o mesmo, porque provavelmente vocк sу esta salvando quando o player desconecta, e quando o servidor reinicia e o player sai do servidor, nгo й considerado como ele tivesse desconectado, entгo se ele pegou a profissгo e nгo saiu antes de reiniciar, provavelmente tudo o que ele fez vai ser perdido.
Reply
#9

Quote:
Originally Posted by Cauezin
View Post
Antes de qualquer servidor reiniciar, ele salva as informaзхes de tudo e todos, faзa o mesmo, porque provavelmente vocк sу esta salvando quando o player desconecta, e quando o servidor reinicia e o player sai do servidor, nгo й considerado como ele tivesse desconectado, entгo se ele pegou a profissгo e nгo saiu antes de reiniciar, provavelmente tudo o que ele fez vai ser perdido.
E como posso fazer isso? Pois assim como os servidores grandes, quero programar um GMX pra salvar tudo antes de reniciar.

aqui esta a GMX

PHP Code:
CMD:gmx(playerid)
{
    
SendClientMessageToAll(-1"Servidor reniciando voltamos em 1 minutos");
    for(new 
0MAX_PLAYERSi++)
    {
    if(
IsPlayerConnected(i))
    {
    
SalvarDados(playerid);
    {
    
Kick(i);
    }
    }
    }
    
SendRconCommand("gmx");
    return 
1;

Reply
#10

Quote:
Originally Posted by Ryuzaki07
View Post
E como posso fazer isso? Pois assim como os servidores grandes, quero programar um GMX pra salvar tudo antes de reniciar.

aqui esta a GMX

PHP Code:
CMD:gmx(playerid)
{
    
SendClientMessageToAll(-1"Servidor reniciando voltamos em 1 minutos");
    for(new 
0MAX_PLAYERSi++)
    {
    if(
IsPlayerConnected(i))
    {
    
SalvarDados(playerid);
    {
    
Kick(i);
    }
    }
    }
    
SendRconCommand("gmx");
    return 
1;

Acho que vocк pode fazer direto no OnGameModeExit
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)