[Ajuda] Erro ao salvar
#1

Oi galera tudo bom? Espero que sim.

Bom vamos comeзar.

Eu fiz essa minha GM do zero estudando tudo o que a de disponнvel no fуrum e vendo alguns videos no *******, mas infelizmente ela tem alguns erros que alguns eu mesmo irei resolver, mas tem um erro que esta me perturbando e que nгo consigo resolver de jeito nenhum. O erro й no sistema de login/registro, eu mesmo fiz o sistema de login/registro com os meus conhecimentos, abaixo estarб os cуdios para vocкs com um nнvel superior ao meu analisar.

Aqui esta a public "OnDialogResponse"

Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid){

    case DIALOG_REGISTRO:
    {
        if( response )
        {
            if( strlen( inputtext ) < 3 || strlen( inputtext ) > 15 || !strlen( inputtext ) )
            {

              	ShowPlayerDialog( playerid, DIALOG_REGISTRO ,DIALOG_STYLE_INPUT, "» SERVER", "{FFFFFF}Sua Senha Deve Conter No Mнnimo {F50717}5 {FFFFFF}Caracteres!{F50717}\nTente Novamente!","Registrar","Cancelar" );

                return 1;
            }

			// Criar Arquivo E Colocar Os Valores //
            DOF2_CreateFile( GetPlayerArquivo( playerid ) );
            DOF2_SetString( GetPlayerArquivo( playerid ),"Senha", inputtext );
            DOF2_SetInt( GetPlayerArquivo( playerid ), "Score" ,0 );
            DOF2_SetInt( GetPlayerArquivo( playerid ), "Skin" ,0 );
            DOF2_SetInt( GetPlayerArquivo( playerid ),"Dinheiro", 1500 );
            DOF2_SetInt( GetPlayerArquivo( playerid ), "Admin",0 );
			DOF2_SaveFile();

			SendClientMessage(playerid, -1, "{16F00E} | INFO | {16F00E}Vocк se registrou no servidor,tenha um уtimo jogo!.");

			new Loginplayer[980];
			format(Loginplayer, sizeof(Loginplayer), "\n{00FF00}Sua conta foi registrada.{FFFFFF}\n\nSeja bem vindo(a) ao SERVER\n\n\n{FC8403}Usuбrio(a): {FFFFFF}%s\n\n\n{FC8403}Status da conta: {00FF00}Registrada\n\n{FFFFFF}Insira sua senha abaixo para logar:",GetPlayerNameEx(playerid));
            ShowPlayerDialog( playerid, DIALOG_LOGAR ,DIALOG_STYLE_PASSWORD, "»{F50A0E}Conta", Loginplayer,"Entrar","Cancelar" );

        }
        else Kick( playerid );
    }

	case DIALOG_LOGAR:
    {
        if( response )
        {
            if( strlen( inputtext ) < 3 || strlen( inputtext ) > 15 || !strlen( inputtext ) )
            {

       			SendClientMessage( playerid, -1, "{F50717} | ERRO | {F50717}Digite Sua Senha Corretamente!." );

				new Loginplayer[980];
       			format(Loginplayer, sizeof(Loginplayer), "\n{FC8403}Usuбrio(a): {FFFFFF}%s\n\n\n{FC8403}Status da conta: {00FF00}Registrada\n\n{F50A0E}Insira sua senha corretamente!",GetPlayerNameEx(playerid));
       			ShowPlayerDialog( playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "»{F50A0E}Conta", Loginplayer,"Entrar","Cancelar" );

                return 1;
            }
            if( strcmp( inputtext, DOF2_GetString( GetPlayerArquivo( playerid ), "Senha" )) == 0 )
            {

                Player[playerid][Skin] = DOF2_GetInt(GetPlayerArquivo(playerid), "Skin");
                Player[playerid][Admin] = DOF2_GetInt(GetPlayerArquivo(playerid), "Admin");
                Player[playerid][Dinheiro] = DOF2_GetInt(GetPlayerArquivo(playerid), "Dinheiro");
				GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
				SetPlayerSkin(playerid, Player[playerid][Skin]);

            }
            else
            {
                Erro[ playerid ] ++; // Aquivo adiciona + 1 a variavel erro...
                if ( Erro[ playerid ] == 3 ){ SavePlayer(playerid); Kick ( playerid ); } // se a variavel chegar a 3, kicka o player pois ele errou 5 vezes a senha.

				new Loginplayer[980];
       			format(Loginplayer, sizeof(Loginplayer), "\n{FC8403}Usuбrio(a): {FFFFFF}%s\n\n\n{FC8403}Status da conta: {00FF00}Registrada\n\n{F50A0E}Insira sua senha corretamente!",GetPlayerNameEx(playerid));
       			ShowPlayerDialog( playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "»{F50A0E}Conta", Loginplayer,"Entrar","Cancelar" );

            }
        }
        else{
		 SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Vocк exedeu a quantidade de erros, portanto vocк foi kickado do servidor!");
         SavePlayer( playerid );
		 Kick( playerid );

		}
    }

    }
	return 1;
}
Aqui estб o "GetPlayerArquivo"

Код:
GetPlayerArquivo(playerid)
{
    new ArquivoPlayer[ 30 ];
    format( ArquivoPlayer, sizeof( ArquivoPlayer ), "Contas/%s.ini", GetPlayerNameEx( playerid ) );
    return ArquivoPlayer;
}
Aqui estб o "SavePlayer" como mostra na public "OnDialogResponse"

Код:
SavePlayer(playerid)
{
    if( DOF2_FileExists(GetPlayerArquivo(playerid))) DOF2_CreateFile(GetPlayerArquivo(playerid));
    {

		Player[playerid][Dinheiro] = GetPlayerMoney(playerid);
		Player[playerid][Skin] = GetPlayerSkin(playerid);
        DOF2_SetInt(GetPlayerArquivo(playerid), "Skin", Player[playerid][Skin]);
        DOF2_SetInt(GetPlayerArquivo(playerid), "Score", Player[playerid][Score]);
        DOF2_SetInt(GetPlayerArquivo(playerid), "Dinheiro", Player[playerid][Dinheiro]);
        DOF2_SetInt(GetPlayerArquivo(playerid), "Admin", Player[playerid][Admin]);
        DOF2_SaveFile();

    }
    return 1;
}
E por ultimo aqui estб a public "OnPlayerDisconnect"

Код:
public OnPlayerDisconnect(playerid, reason)
{
    SavePlayer(playerid);
	return 1;
}
O erro nisso tudo, й que quando eu deslogo do servidor e logo novamente, sу esta salvo o meu dinheiro em mгos, mas infelizmente nгo salva a skin, vou colocar o comando /setskin para vocкs analisarem.

Um outro problema й quando morre com a skin. Por exemplo, eu coloco no /setskin pra me dar a skin 230 que й a do mendigo, atй ai tudo bem, Posso fazer tudo o que estiver disponнvel no server, mas se eu morrer, eu spawno com a skin de novato(uma skin que eu escolhi pra quando logarem no server), sу que tipo eu morro, mas sу pra min que a skin de novato aparece, pra outra pessoa que estiver dentro do server, ela ainda vai continuar vendo a skin 230 do mendigo mas eu vou ver a de novato. Se puderem me ajudar nisso tambйm eu agradeзo. <3

Код:
CMD:setskin(playerid, params[])
{
	if(!IsPlayerAdmin(playerid) ) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Comando invбlido!");
	new id, skin, jogador[24], admin[24], string[128], strg[128];
	if(sscanf(params, "dd", id, skin)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Use: /setskin [id] [skin]");
    {
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Jogador invalido!");
		if(skin < 0 || skin > 299) return SendClientMessage(playerid, 0xF50A0EFF,"| ERRO | Sу й permidito as skin de 0 a 299!");
		GetPlayerName(id, jogador, 24);
		format(string, sizeof(string), "| SERVER | O(A) Administrador(a) %s trocou sua skin!", GetPlayerNameEx(playerid));
		SetPlayerSkin(id, skin);
		GetPlayerName(playerid, admin, 24);
		SendClientMessage(playerid, 0x0099CCAA, string);
		format(strg, sizeof(strg), "| INFO | Comando efetuado com sucesso!");
		SendClientMessage(playerid, 0x0099CCAA, strg);
	}
	return 1;
}
Jб pesquisei em tudo quanto й lugar mas infelizmente nгo consigo solucionar o problema.

Creio eu que o problema й no comando /setskin, pois eu fiz tudo certinho no resto.

Se alguйm puder me ajudar agradeзo desde ja. <3
Reply
#2

Tente

PHP код:
Player[playerid][Skin] = skin
Reply
#3

Quote:
Originally Posted by Bieell
Посмотреть сообщение
Tente

PHP код:
Player[playerid][Skin] = skin
Aonde eu coloco isso?
Reply
#4

Mande a public OnPlayerSpawn

PHP код:
CMD:setskin(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid) ) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Comando invбlido!");
    new 
idskinjogador[24], admin[24], string[128], strg[128];
    if(
sscanf(params"dd"idskin)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Use: /setskin [id] [skin]");
    {
        
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Jogador invalido!");
        if(
skin || skin 299) return SendClientMessage(playerid0xF50A0EFF,"| ERRO | Sу й permidito as skin de 0 a 299!");
        
GetPlayerName(idjogador24);
        
format(stringsizeof(string), "| SERVER | O(A) Administrador(a) %s trocou sua skin!"GetPlayerNameEx(playerid));
        
SetPlayerSkin(idskin);
        
Player[playerid][Skin] = skin;  
        
GetPlayerName(playeridadmin24);
        
SendClientMessage(playerid0x0099CCAAstring);
        
format(strgsizeof(strg), "| INFO | Comando efetuado com sucesso!");
        
SendClientMessage(playerid0x0099CCAAstrg);
    }
    return 
1;

Reply
#5

Quote:
Originally Posted by Marllun
Посмотреть сообщение
Mande a public OnPlayerSpawn

PHP код:
CMD:setskin(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid) ) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Comando invбlido!");
    new 
idskinjogador[24], admin[24], string[128], strg[128];
    if(
sscanf(params"dd"idskin)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Use: /setskin [id] [skin]");
    {
        
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Jogador invalido!");
        if(
skin || skin 299) return SendClientMessage(playerid0xF50A0EFF,"| ERRO | Sу й permidito as skin de 0 a 299!");
        
GetPlayerName(idjogador24);
        
format(stringsizeof(string), "| SERVER | O(A) Administrador(a) %s trocou sua skin!"GetPlayerNameEx(playerid));
        
SetPlayerSkin(idskin);
        
Player[playerid][Skin] = skin;  
        
GetPlayerName(playeridadmin24);
        
SendClientMessage(playerid0x0099CCAAstring);
        
format(strgsizeof(strg), "| INFO | Comando efetuado com sucesso!");
        
SendClientMessage(playerid0x0099CCAAstrg);
    }
    return 
1;

Continua a mesma coisa, eu entrei no server coloquei a skin e desloguei, loguei novamente e estava a skin de novato.


Aqui esta a public

Код:
public OnPlayerSpawn(playerid)
{
	TextDrawShowForPlayer(playerid, TDEditor_TD[0]);
 	TextDrawShowForPlayer(playerid, TDEditor_TD[1]);
 	TextDrawShowForPlayer(playerid, TDEditor_TD[2]);

    StopAudioStreamForPlayer(playerid);


	return 1;
}
Reply
#6

PHP код:
CMD:setskin(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid) ) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Comando invбlido!");
    new 
idskinjogador[24], admin[24], string[128], strg[128];
    if(
sscanf(params"ud"idskin)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Use: /setskin [id] [skin]");
    {
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Jogador invalido!");
        if(
skin || skin 299) return SendClientMessage(playerid0xF50A0EFF,"| ERRO | Sу й permidito as skin de 0 a 299!");
        
GetPlayerName(idjogador24);
        
format(stringsizeof(string), "| SERVER | O(A) Administrador(a) %s trocou sua skin!"GetPlayerNameEx(playerid));
        
SetPlayerSkin(idskin);
        
GetPlayerName(playeridadmin24);
        
SendClientMessage(playerid0x0099CCAAstring);
        
format(strgsizeof(strg), "| INFO | Comando efetuado com sucesso!");
        
SendClientMessage(playerid0x0099CCAAstrg);
    }
    return 
1;

O parвmetro para sscanf que define ID de jogador й u.

d ou i - usado quando vocк usa nъmeros, exemplo numero do seu celular...
s - й o string usado quando vocк usa letras, exemplo "Meu nome й Cleyson"
u - usado para aquele famoso [Id do Player]...
f - usado para coordenadas...
etc...


@edit Uma dica:

Код:
new Loginplayer[980];
Essa variбvel esta desperdiзando cйlulas, ela nгo precisa de 980.
Recomendo sempre vocк contar quantos caracteres serгo necessбrios na hora de formata-la.
Assim vocк evita desperdнcios na memoria.
Reply
#7

Quote:
Originally Posted by Cleyson
Посмотреть сообщение
PHP код:
CMD:setskin(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid) ) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Comando invбlido!");
    new 
idskinjogador[24], admin[24], string[128], strg[128];
    if(
sscanf(params"ud"idskin)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Use: /setskin [id] [skin]");
    {
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Jogador invalido!");
        if(
skin || skin 299) return SendClientMessage(playerid0xF50A0EFF,"| ERRO | Sу й permidito as skin de 0 a 299!");
        
GetPlayerName(idjogador24);
        
format(stringsizeof(string), "| SERVER | O(A) Administrador(a) %s trocou sua skin!"GetPlayerNameEx(playerid));
        
SetPlayerSkin(idskin);
        
GetPlayerName(playeridadmin24);
        
SendClientMessage(playerid0x0099CCAAstring);
        
format(strgsizeof(strg), "| INFO | Comando efetuado com sucesso!");
        
SendClientMessage(playerid0x0099CCAAstrg);
    }
    return 
1;

O parвmetro para sscanf que define ID de jogador й u.

d ou i - usado quando vocк usa nъmeros, exemplo numero do seu celular...
s - й o string usado quando vocк usa letras, exemplo "Meu nome й Cleyson"
u - usado para aquele famoso [Id do Player]...
f - usado para coordenadas...
etc...


@edit Uma dica:

Код:
new Loginplayer[980];
Essa variбvel esta desperdiзando cйlulas, ela nгo precisa de 980.
Recomendo sempre vocк contar quantos caracteres serгo necessбrios na hora de formata-la.
Assim vocк evita desperdнcios na memoria.
Obrigado pela dica <3

Infelizmente o erro ainda persiste.
Reply
#8

Quote:
Originally Posted by WB
Посмотреть сообщение
Aonde eu coloco isso?
Tente:

PHP код:
CMD:setskin(playeridparams[]) 

    if(!
IsPlayerAdmin(playerid) ) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Comando invбlido!"); 
    new 
idskinjogador[24], admin[24], string[128], strg[128]; 
    if(
sscanf(params"dd"idskin)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Use: /setskin [id] [skin]"); 
    if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Jogador invalido!"); 
    if(
skin || skin 299) return SendClientMessage(playerid0xF50A0EFF,"| ERRO | Sу й permidito as skin de 0 a 299!"); 
    
GetPlayerName(idjogador24); 
    
format(stringsizeof(string), "| SERVER | O(A) Administrador(a) %s trocou sua skin!"GetPlayerNameEx(playerid)); 
    
SetPlayerSkin(idskin); 
    
Player[playerid][Skin] = skin;   
    
GetPlayerName(playeridadmin24); 
    
SendClientMessage(playerid0x0099CCAAstring); 
    
format(strgsizeof(strg), "| INFO | Comando efetuado com sucesso!"); 
    
SendClientMessage(playerid0x0099CCAAstrg); 
    return 
1;

Reply
#9

Quote:
Originally Posted by Bieell
Посмотреть сообщение
Tente:

PHP код:
CMD:setskin(playeridparams[]) 

    if(!
IsPlayerAdmin(playerid) ) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Comando invбlido!"); 
    new 
idskinjogador[24], admin[24], string[128], strg[128]; 
    if(
sscanf(params"dd"idskin)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Use: /setskin [id] [skin]"); 
    if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Jogador invalido!"); 
    if(
skin || skin 299) return SendClientMessage(playerid0xF50A0EFF,"| ERRO | Sу й permidito as skin de 0 a 299!"); 
    
GetPlayerName(idjogador24); 
    
format(stringsizeof(string), "| SERVER | O(A) Administrador(a) %s trocou sua skin!"GetPlayerNameEx(playerid)); 
    
SetPlayerSkin(idskin); 
    
Player[playerid][Skin] = skin;   
    
GetPlayerName(playeridadmin24); 
    
SendClientMessage(playerid0x0099CCAAstring); 
    
format(strgsizeof(strg), "| INFO | Comando efetuado com sucesso!"); 
    
SendClientMessage(playerid0x0099CCAAstrg); 
    return 
1;

O erro ainda persiste. que coisa em
Reply
#10

Quote:
Originally Posted by WB
Посмотреть сообщение
O erro ainda persiste. que coisa em
PHP код:
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playeridTDEditor_TD[0]);
TextDrawShowForPlayer(playeridTDEditor_TD[1]);
TextDrawShowForPlayer(playeridTDEditor_TD[2]);
StopAudioStreamForPlayer(playerid);
if(
Player[playerid][Skin] != 0)
{
    
SetPlayerSkin(playeridPlayer[playerid][Skin]);
}
 return 
1;

Tente!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)