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(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
TogglePlayerSpectating(playerid, true);
if(!DOF2_FileExists(GetarConta(playerid)))
{
ShowPlayerDialog(playerid, registro, DIALOG_STYLE_INPUT, "{00FF7F}Registro", "{F0E68C}Vocк ainda nгo й Registrado, digite uma senha para se registrar{FFFFFF}.", "Confirma", "Cancelar");
} else {
ShowPlayerDialog(playerid, logar, DIALOG_STYLE_PASSWORD, "{00FF7F}Logar", "{F0E68C}Digite sua senha cadastrada para logar{FFFFFF}.", "Confirma", "Cancelar");
}
return 1;
}