Bug Sistema Salvamento -
Brazuca[]s - 24.07.2012
Olб amigos e amigas do fуrum, eu estou a enfrentar um seguinte problema "Quando й para carregar o ficheiro e setar todos os itens ele nгo carrega, tipo eu seto o jogador de moderador, mas na hora de carregar ele fica sem moderador. Nгo sei se o erro esta no CarregarConta ou no SalvarContas, por isso postei as duas stock's. Caso queiram meu sistema de login eu posso passar aqui!
pawn Код:
stock CarregarConta(playerid)
{
new Contas[40], Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, 32);
format(Contas, 40, "Jogadores/%s.ini", Nome);
if(DOF2_FileExists(Contas))
{
Informacoes[playerid][Gps] = DOF2_GetInt(Contas, "Gps");
Informacoes[playerid][Skin] = DOF2_GetInt(Contas, "Skin");
Informacoes[playerid][Sexo] = DOF2_GetInt(Contas, "Sexo");
Informacoes[playerid][Level] = DOF2_GetInt(Contas, "Level");
Informacoes[playerid][Lider] = DOF2_GetInt(Contas, "Lider");
GivePlayerMoney(playerid, DOF2_GetInt(Contas, "Grana"));
Informacoes[playerid][Membro] = DOF2_GetInt(Contas, "Membro");
Informacoes[playerid][Moderador] = DOF2_GetInt(Contas, "Moderador");
}
return 1;
}
Salvar Ficheiro:
pawn Код:
stock SalvarConta(playerid)
{
new Contas[40], Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, 32);
format(Contas, 40, "Jogadores/%s.ini", Nome);
if(DOF2_FileExists(Contas))
{
Informacoes[playerid][Skin] = GetPlayerSkin(playerid);
DOF2_SetInt(Contas, "Gps", Informacoes[playerid][Sexo]);
DOF2_SetInt(Contas, "Skin", Informacoes[playerid][Skin]);
DOF2_SetInt(Contas, "Sexo", Informacoes[playerid][Sexo]);
DOF2_SetInt(Contas, "Level", Informacoes[playerid][Skin]);
DOF2_SetInt(Contas, "Senha", Informacoes[playerid][Senha]);
DOF2_SetInt(Contas, "Grana", Informacoes[playerid][Grana]);
DOF2_SetInt(Contas, "Lider", Informacoes[playerid][Lider]);
DOF2_SetInt(Contas, "Membro", Informacoes[playerid][Membro]);
DOF2_SetInt(Contas, "Moderador", Informacoes[playerid][Moderador]);
DOF2_SaveFile();
}
return 1;
}
Re: Bug Sistema Salvamento -
Hardware - 24.07.2012
Vocк estб colocando a stock nas publics, para que faзa as stocks funcionarem?
Re: Bug Sistema Salvamento -
Brazuca[]s - 24.07.2012
sim:
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new Contas[70], Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, sizeof(Nome));
format(Contas, sizeof(Contas),"Jogadores/%s.ini",Nome);
//Login
if(dialogid == 1)
{
if(response == 0)
{
SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
Kick(playerid);
}
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Logar","Cancelar");
}
else
{
Informacoes[playerid][Senha] = DOF2_GetInt(Contas, "Senha");
if(strlen(inputtext) == Informacoes[playerid][Senha])
{
CarregarConta(playerid);
SpawnPlayer(playerid);
}
}
}
//Registro
if(dialogid == 2)
{
if(response == 0)
{
SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
Kick(playerid);
}
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Registrando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Registrar","Cancelar");
}
else
{
Informacoes[playerid][Senha] = strlen(inputtext);
DOF2_CreateFile(Contas);
DOF2_SetString(Contas, "Senha", Informacoes[playerid][Senha]);
DOF2_SaveFile();
GivePlayerMoney(playerid, 1000);
SetPlayerVirtualWorld(playerid, 1);
SetPlayerPos(playerid, 1643.0941,-2262.9111,13.4867);
SetPlayerCameraPos(playerid, 1643.0941,-2262.9111,13.4867);
SetPlayerCameraLookAt(playerid, 1643.2544,-2249.0349,13.3228);
ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"{FFFFFF}Escolha seu Sexo","{FFFF00}Vocк й Homem ou Mulher?","Homem","Mulher");
}
}
//Sexo
if(dialogid == 3)
{
if(response == 0)
{
SpawnPlayer(playerid);
SetPlayerSkin(playerid, 40);
Informacoes[playerid][Sexo] = 2;
Informacoes[playerid][Skin] = 40;
SendClientMessage(playerid,-1,"Sistema: Vocк й mulher!");
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...", "Obrigado por registrar-se em nosso servidor\nDigite a senha abaixo para logar-se", "Logar", "Cancelar");
}
else
{
SpawnPlayer(playerid);
SetPlayerSkin(playerid, 23);
Informacoes[playerid][Sexo] = 1;
Informacoes[playerid][Skin] = 23;
SendClientMessage(playerid,-1,"Sistema: Vocк й homem!");
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...", "Obrigado por registrar-se em nosso servidor\nDigite a senha abaixo para logar-se", "Logar", "Cancelar");
}
return 1;
}
Re: Bug Sistema Salvamento -
Math3us - 24.07.2012
brazucas olhe esse meu topico estava com a mesma duvida e й dof 2 talvez ajude vc
https://sampforum.blast.hk/showthread.php?tid=362464
o cara resolveu meu problema
Re: Bug Sistema Salvamento -
Brazuca[]s - 24.07.2012
velho, o meu й em tudo que ta bugado kkk;
Re: Bug Sistema Salvamento -
Hardware - 24.07.2012
Quote:
Originally Posted by Brazuca[]s
sim:
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { new Contas[70], Nome[MAX_PLAYER_NAME]; GetPlayerName(playerid, Nome, sizeof(Nome)); format(Contas, sizeof(Contas),"Jogadores/%s.ini",Nome); //Login if(dialogid == 1) { if(response == 0) { SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!"); Kick(playerid); } if(!strlen(inputtext)) { ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Logar","Cancelar"); } else { Informacoes[playerid][Senha] = DOF2_GetInt(Contas, "Senha"); if(strlen(inputtext) == Informacoes[playerid][Senha]) { CarregarConta(playerid); SpawnPlayer(playerid); } } } //Registro if(dialogid == 2) { if(response == 0) { SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!"); Kick(playerid); } if(!strlen(inputtext)) { ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Registrando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Registrar","Cancelar"); } else { Informacoes[playerid][Senha] = strlen(inputtext); DOF2_CreateFile(Contas); DOF2_SetString(Contas, "Senha", Informacoes[playerid][Senha]); DOF2_SaveFile(); GivePlayerMoney(playerid, 1000); SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, 1643.0941,-2262.9111,13.4867); SetPlayerCameraPos(playerid, 1643.0941,-2262.9111,13.4867); SetPlayerCameraLookAt(playerid, 1643.2544,-2249.0349,13.3228); ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"{FFFFFF}Escolha seu Sexo","{FFFF00}Vocк й Homem ou Mulher?","Homem","Mulher"); } } //Sexo if(dialogid == 3) { if(response == 0) { SpawnPlayer(playerid); SetPlayerSkin(playerid, 40); Informacoes[playerid][Sexo] = 2; Informacoes[playerid][Skin] = 40; SendClientMessage(playerid,-1,"Sistema: Vocк й mulher!"); ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...", "Obrigado por registrar-se em nosso servidor\nDigite a senha abaixo para logar-se", "Logar", "Cancelar"); } else { SpawnPlayer(playerid); SetPlayerSkin(playerid, 23); Informacoes[playerid][Sexo] = 1; Informacoes[playerid][Skin] = 23; SendClientMessage(playerid,-1,"Sistema: Vocк й homem!"); ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...", "Obrigado por registrar-se em nosso servidor\nDigite a senha abaixo para logar-se", "Logar", "Cancelar"); } return 1; }
|
Quero dizer se vocк colocou alguma coisa a respeito da stock SalvarConta no OnPlayerConnect, ou tambйm alguma coisa do CarregarConta no OnPlayerConnect ou OnPlayerSpawn.
Re: Bug Sistema Salvamento -
Brazuca[]s - 24.07.2012
salvarconta em disconnect
carregar conta em connect
Re: Bug Sistema Salvamento -
leonardo1434 - 24.07.2012
pawn Код:
stock CarregarConta(playerid)
{
new Contas[41], Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, 25);
format(Contas, 41, "Jogadores/%s.ini", Nome);
if(DOF2_FileExists(Contas))
{
Informacoes[playerid][Gps] = DOF2_GetInt(Contas, "Gps");
Informacoes[playerid][Skin] = DOF2_GetInt(Contas, "Skin");
Informacoes[playerid][Sexo] = DOF2_GetInt(Contas, "Sexo");
Informacoes[playerid][Level] = DOF2_GetInt(Contas, "Level");
Informacoes[playerid][Lider] = DOF2_GetInt(Contas, "Lider");
GivePlayerMoney(playerid, DOF2_GetInt(Contas, "Grana"));
Informacoes[playerid][Membro] = DOF2_GetInt(Contas, "Membro");
Informacoes[playerid][Moderador] = DOF2_GetInt(Contas, "Moderador");
}
return 1;
}
Salvar Ficheiro:
pawn Код:
stock SalvarConta(playerid)
{
new Contas[41], Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, 25); // pra que 32? se o nome mбximo й 24 e + 1 pra o fechamento?
format(Contas, 41, "Jogadores/%s.ini", Nome);
if(DOF2_FileExists(Contas))
{
Informacoes[playerid][Skin] = GetPlayerSkin(playerid);
DOF2_SetInt(Contas, "Gps", Informacoes[playerid][Sexo]);
DOF2_SetInt(Contas, "Skin", Informacoes[playerid][Skin]);
DOF2_SetInt(Contas, "Sexo", Informacoes[playerid][Sexo]);
DOF2_SetInt(Contas, "Level", Informacoes[playerid][Skin]);
DOF2_SetInt(Contas, "Senha", Informacoes[playerid][Senha]);
DOF2_SetInt(Contas, "Grana", Informacoes[playerid][Grana]);
DOF2_SetInt(Contas, "Lider", Informacoes[playerid][Lider]);
DOF2_SetInt(Contas, "Membro", Informacoes[playerid][Membro]);
DOF2_SetInt(Contas, "Moderador", Informacoes[playerid][Moderador]);
DOF2_SaveFile();
}
return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new Contas[41], Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, sizeof(Nome));
format(Contas, sizeof(Contas),"Jogadores/%s.ini",Nome);
//Login
if(dialogid == 1)
{
if(response == 0)
{
SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
Kick(playerid);
}
if(!strlen(inputtext)) // strlen й usado para medir o tamanho da string, caso ele nгo tenha digitado nada, irб executar isto abaixo.
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Logar","Cancelar");
}
else // caso ele tenha digitado alguma coisa, vai medir o tamanho da string da pasta contas com a que ele digitou, se medir o mesmo tamanho ele logar, isto й errado.
{
Informacoes[playerid][Senha] = DOF2_GetInt(Contas, "Senha");
if(strlen(inputtext) == Informacoes[playerid][Senha])
{
CarregarConta(playerid);
SpawnPlayer(playerid);
}
}
}
//Registro
if(dialogid == 2)
{
if(response == 0)
{
SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
Kick(playerid);
}
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Registrando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Registrar","Cancelar");
}
else // se fez a mesma coisa aqui....se a senha tiver o mesmo tamanho mesmo que nгo seja iguais, vocк vai substituir a senha que tem o mesmo tamanho pela velha que tem o mesmo tamanho.
{
Informacoes[playerid][Senha] = strlen(inputtext);
DOF2_CreateFile(Contas);
DOF2_SetString(Contas, "Senha", Informacoes[playerid][Senha]);
DOF2_SaveFile();
GivePlayerMoney(playerid, 1000);
SetPlayerVirtualWorld(playerid, 1);
SetPlayerPos(playerid, 1643.0941,-2262.9111,13.4867);
SetPlayerCameraPos(playerid, 1643.0941,-2262.9111,13.4867);
SetPlayerCameraLookAt(playerid, 1643.2544,-2249.0349,13.3228);
ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"{FFFFFF}Escolha seu Sexo","{FFFF00}Vocк й Homem ou Mulher?","Homem","Mulher");
}
}
Eu apenas apontei os erros que fizeste, cabe a vocк conserta-los, sobre as senhas o correto й compara-las e nгo medi-las, entгo deves usar strcmp.
Sobre as stock's, aparentemente estгo corretas pois adicionei + 1 cell para ficar correto, Apenas vi estes erros mas podem haver mais pois hoje estou um pouco desatento.
Re: Bug Sistema Salvamento -
Brazuca[]s - 24.07.2012
Quote:
Originally Posted by leonardo1434
pawn Код:
stock CarregarConta(playerid) { new Contas[41], Nome[MAX_PLAYER_NAME]; GetPlayerName(playerid, Nome, 25); format(Contas, 41, "Jogadores/%s.ini", Nome); if(DOF2_FileExists(Contas)) { Informacoes[playerid][Gps] = DOF2_GetInt(Contas, "Gps"); Informacoes[playerid][Skin] = DOF2_GetInt(Contas, "Skin"); Informacoes[playerid][Sexo] = DOF2_GetInt(Contas, "Sexo"); Informacoes[playerid][Level] = DOF2_GetInt(Contas, "Level"); Informacoes[playerid][Lider] = DOF2_GetInt(Contas, "Lider"); GivePlayerMoney(playerid, DOF2_GetInt(Contas, "Grana")); Informacoes[playerid][Membro] = DOF2_GetInt(Contas, "Membro"); Informacoes[playerid][Moderador] = DOF2_GetInt(Contas, "Moderador"); } return 1; }
Salvar Ficheiro:
pawn Код:
stock SalvarConta(playerid) { new Contas[41], Nome[MAX_PLAYER_NAME]; GetPlayerName(playerid, Nome, 25); // pra que 32? se o nome mбximo й 24 e + 1 pra o fechamento? format(Contas, 41, "Jogadores/%s.ini", Nome); if(DOF2_FileExists(Contas)) { Informacoes[playerid][Skin] = GetPlayerSkin(playerid); DOF2_SetInt(Contas, "Gps", Informacoes[playerid][Sexo]); DOF2_SetInt(Contas, "Skin", Informacoes[playerid][Skin]); DOF2_SetInt(Contas, "Sexo", Informacoes[playerid][Sexo]); DOF2_SetInt(Contas, "Level", Informacoes[playerid][Skin]); DOF2_SetInt(Contas, "Senha", Informacoes[playerid][Senha]); DOF2_SetInt(Contas, "Grana", Informacoes[playerid][Grana]); DOF2_SetInt(Contas, "Lider", Informacoes[playerid][Lider]); DOF2_SetInt(Contas, "Membro", Informacoes[playerid][Membro]); DOF2_SetInt(Contas, "Moderador", Informacoes[playerid][Moderador]); DOF2_SaveFile(); } return 1; }
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { new Contas[41], Nome[MAX_PLAYER_NAME]; GetPlayerName(playerid, Nome, sizeof(Nome)); format(Contas, sizeof(Contas),"Jogadores/%s.ini",Nome); //Login if(dialogid == 1) { if(response == 0) { SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!"); Kick(playerid); } if(!strlen(inputtext)) // strlen й usado para medir o tamanho da string, caso ele nгo tenha digitado nada, irб executar isto abaixo. { ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Logar","Cancelar"); } else // caso ele tenha digitado alguma coisa, vai medir o tamanho da string da pasta contas com a que ele digitou, se medir o mesmo tamanho ele logar, isto й errado. { Informacoes[playerid][Senha] = DOF2_GetInt(Contas, "Senha"); if(strlen(inputtext) == Informacoes[playerid][Senha]) { CarregarConta(playerid); SpawnPlayer(playerid); } } } //Registro if(dialogid == 2) { if(response == 0) { SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!"); Kick(playerid); } if(!strlen(inputtext)) { ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Registrando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Registrar","Cancelar"); } else // se fez a mesma coisa aqui....se a senha tiver o mesmo tamanho mesmo que nгo seja iguais, vocк vai substituir a senha que tem o mesmo tamanho pela velha que tem o mesmo tamanho. { Informacoes[playerid][Senha] = strlen(inputtext); DOF2_CreateFile(Contas); DOF2_SetString(Contas, "Senha", Informacoes[playerid][Senha]); DOF2_SaveFile(); GivePlayerMoney(playerid, 1000); SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, 1643.0941,-2262.9111,13.4867); SetPlayerCameraPos(playerid, 1643.0941,-2262.9111,13.4867); SetPlayerCameraLookAt(playerid, 1643.2544,-2249.0349,13.3228); ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"{FFFFFF}Escolha seu Sexo","{FFFF00}Vocк й Homem ou Mulher?","Homem","Mulher"); } }
Eu apenas apontei os erros que fizeste, cabe a vocк conserta-los, sobre as senhas o correto й compara-las e nгo medi-las, entгo deves usar strcmp.
Sobre as stock's, aparentemente estгo corretas pois adicionei + 1 cell para ficar correto, Apenas vi estes erros mas podem haver mais pois hoje estou um pouco desatento.
|
Valeu cara, funcionou o sistema mais rep para tu
Re: Bug Sistema Salvamento -
Brazuca[]s - 24.07.2012
Desculpe-me pelo doublet, mas й que nгo esta salvando a grana/level e outros itens do salvamento!