SA-MP Forums Archive
[Ajuda] Erro sistema de registro DOF2 - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Erro sistema de registro DOF2 (/showthread.php?tid=610633)



Erro sistema de registro DOF2 - yurin - 26.06.2016

Olб alguйm saberia como poder me ajudar, bem eu pesquisei sobre alguns tutoriais de DOF2 e consegui fazer um sistema me baseando nesses tutoriais, tudo deu certo sem nenhum erro, mas quando eu fecho e abro o server e me conecto simplesmente reseta, mas sу quando eu me conecto depois de fechar e abrir o server, se eu sair e volta pro server estб okay, mas se o server fechar e abrir e eu me conectar simplesmente reseta a conta.
Код:
public OnGameModeExit()
{
    for(new i=0; i<MAX_PLAYERS; ++i) SalvarContas(i);
    DOF2_Exit();
	return 1;
}
Код:
public OnPlayerConnect(playerid)
{
	logado[playerid] = 0;
    if(DOF2_FileExists(GetarConta(playerid))) ShowPlayerDialog(playerid, logar, DIALOG_STYLE_PASSWORD, "{00FF7F}Logar", "{F0E68C}Digite sua senha cadastrada para logar{FFFFFF}.\n{F0E68C}Se errar cinco vezes vocк serб kickado{FFFFFF}.", "Confirma", "Cancelar");
    else ShowPlayerDialog(playerid, registro, DIALOG_STYLE_INPUT, "{00FF7F}Registro", "{F0E68C}Vocк ainda nгo й Registrado, digite uma senha para se registrar{FFFFFF}.", "Confirma", "Cancelar");
    return 1;
}
Код:
public OnPlayerDisconnect(playerid)
{
	if(logado[playerid] == 1){
		SalvarContas(playerid);
		logado[playerid] = 0;
	}
    return 1;
}
Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == registro)
    {
    	if(response)
        {
            if(!strlen(inputtext))
            {
            	ShowPlayerDialog(playerid,registro,DIALOG_STYLE_INPUT,"{00FF7F}Registro", "{F0E68C}Digite apenas nъmeros{FFFFFF}.\n{F0E68C}Digite sua senha novamente para se registrar{FFFFFF}.", "Confirma", "Cancelar");
             	return 1;
            }
        	new senha[16];
            format(senha, sizeof(senha), "%s", inputtext);
            pDados[playerid][Senha] = senha;
            pDados[playerid][Staff] = 0;
            pDados[playerid][Level] = 1;
            pDados[playerid][Dolar] = 800;
            SetPlayerScore(playerid, 1);
            DOF2_CreateFile(GetarConta(playerid));
            DOF2_SetString(GetarConta(playerid), "Senha", pDados[playerid][Senha]);
            DOF2_SaveFile();
            SalvarContas(playerid);
            ShowPlayerDialog(playerid, sexo, DIALOG_STYLE_MSGBOX, "{00FF7F}Sexo", "{F0E68C}Vocк se cadastrou, agora escolha qual seu sexo{FFFFFF}.", "Masculino", "Feminino");
    	}
    }
    if(dialogid == sexo)
    {
     	if(response)
		{
			ShowPlayerDialog(playerid, logar, DIALOG_STYLE_PASSWORD, "{00FF7F}Logar", "{F0E68C}Certo, vocк й um homem agora й sу logar{FFFFFF}.", "Confirma", "Cancelar");
			pDados[playerid][Sexo]=1;
			SetPlayerSkin(playerid, 240);
			pDados[playerid][Vida]=100;
			pDados[playerid][Colete]=20;
			pDados[playerid][Skin]=240;
		}
		else
		{
			ShowPlayerDialog(playerid, logar, DIALOG_STYLE_PASSWORD, "{00FF7F}Logar", "{F0E68C}Certo, vocк й uma mulher agora й sу logar{FFFFFF}.", "Confirma", "Cancelar");
			pDados[playerid][Sexo]=2;
			SetPlayerSkin(playerid, 233);
			pDados[playerid][Skin]=233;
		}
    }
    if(dialogid == logar)
    {
	    if(response)
		{
		    if(!strlen(inputtext))
		    {
		        ShowPlayerDialog(playerid,logar,DIALOG_STYLE_PASSWORD, "{00FF7F}Logar", "{F0E68C}Digite sua senha cadastrada para logar{FFFFFF}.\n{F0E68C}Se errar cinco vezes vocк serб kickado{FFFFFF}.", "Confirma", "Cancelar");
		        return 1;
			}
   			else
            {
				if(strcmp(DOF2_GetString(GetarConta(playerid), "Senha", pDados[playerid][Senha]), inputtext, true, 10) == 0)
      			{
    				SendClientMessage(playerid, C_Server, "Logado com Sucesso{FFFFFF}.");
      				CarregarConta(playerid);
      				logado[playerid] = 1;
					SpawnPlayer(playerid);
				}
				else
    			{
                	SendClientMessage(playerid, C_Server, "Vocк foi kickado por errar a sua senha{FFFFFF}.");
               		Kick(playerid);
    			}
    		}
		}
		else
 		{
  			SendClientMessage(playerid, C_Server, "Login Cancelado{FFFFFF}.");
   			Kick(playerid);
 		}
	}
    return 1;
}
Код:
stock SalvarContas(playerid)
{
	DOF2_SetString(GetarConta(playerid), "Senha", pDados[playerid][Senha]);
	DOF2_SetInt(GetarConta(playerid), "Matou", pDados[playerid][Matou]);
	DOF2_SetInt(GetarConta(playerid), "Dolar", pDados[playerid][Dolar]);
	DOF2_SetInt(GetarConta(playerid), "Sexo", pDados[playerid][Sexo]);
    DOF2_SetInt(GetarConta(playerid), "Skin", pDados[playerid][Skin]);
	DOF2_SetInt(GetarConta(playerid), "Staff", pDados[playerid][Staff]);
	DOF2_SetInt(GetarConta(playerid), "Vida", pDados[playerid][Vida]);
	DOF2_SetInt(GetarConta(playerid), "Colete", pDados[playerid][Colete]);
	DOF2_SaveFile();
    return 1;
}

stock CarregarConta(playerid)
{
    pDados[playerid][Staff] = DOF2_GetInt(GetarConta(playerid), "Staff");
    pDados[playerid][Matou] = DOF2_GetInt(GetarConta(playerid), "Matou");
    SetPlayerScore(playerid, DOF2_GetInt(GetarConta(playerid), "Level"));
    SetPlayerSkin(playerid, DOF2_GetInt(GetarConta(playerid), "Skin"));
    GivePlayerMoney(playerid, DOF2_GetInt(GetarConta(playerid), "Dolar"));
    SetPlayerHealth(playerid, DOF2_GetInt(GetarConta(playerid), "Vida"));
    SetPlayerArmour(playerid, DOF2_GetInt(GetarConta(playerid), "Colete"));
    return 1;
}

stock GetarConta(playerid)
{
    new arq[40];
    format(arq, sizeof(arq), arquivo, pName(playerid));
    return arq;
}

stock pName(playerid)
{
    new name[24];
    GetPlayerName(playerid, name, sizeof(name));
    return name;
}



Re: Erro sistema de registro DOF2 - yurin - 26.06.2016

Nгo nгo, esta salvando quando o server fecha, й que quando eu logo na minha conta depois de abrir de novo os arquivos voltam ao zero, eu jб testei quando fecha eles continuam salvos, mas se eu abrir o server de novo jб era.


Re: Erro sistema de registro DOF2 - yurin - 27.06.2016

Nгo й quando liga, eu tenho certeza que й no meu cуdigo por que й somente quando eu logo depois de religa o server que deleta somente o arquivo da conta que eu usei.


Re: Erro sistema de registro DOF2 - yurin - 27.06.2016

Obrigado por quem tento ajuda, eu consegui resolver, para quem estб com o problema й simples, simplesmente tira de OnPlayerConnect e passa para OnPlayerRequestClass.

PHP код:
public OnPlayerRequestClass(playeridclassid)
{
    
SetPlayerPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraLookAt(playerid1958.37831343.157215.3746);
    
TogglePlayerSpectating(playeridtrue);
    if(!
DOF2_FileExists(GetarConta(playerid)))
    {
        
ShowPlayerDialog(playeridregistroDIALOG_STYLE_INPUT"{00FF7F}Registro""{F0E68C}Vocк ainda nгo й Registrado, digite uma senha para se registrar{FFFFFF}.""Confirma""Cancelar");
    } else {
        
ShowPlayerDialog(playeridlogarDIALOG_STYLE_PASSWORD"{00FF7F}Logar""{F0E68C}Digite sua senha cadastrada para logar{FFFFFF}.""Confirma""Cancelar");
    }
    return 
1;