[Ajuda] Salvar Kills Death em DOF2
#1

Olб pessoal boa tarde.
Eu gostaria de pedir a ajuda de vocкs em como criar uma forma de salvar os Kills e Death em DOF2.
Eu andei dando uma pesquisada porem apenas encontrei em DINI, e nгo consigo muito bem entender o DINI, se possнvel me ajudarem eu agradeceria.
Atenciosamente,
Matheus Dorado
Reply
#2

Nгo tenho muita experiкncia com DOF2, mas acho que seria algo assim:

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
	new arquivo[40], name[MAX_PLAYER_NAME];
	
	//Salva as kills de quem matou
	if(killerid != INVALID_PLAYER_ID)
    {
		Player[killerid][Kills]++; //Adiciona uma kill na variбvel do jogador
		
		GetPlayerName(killerid, name, 32);
		format(arquivo, 40, "Contas/%s.ini", name); //Formata o nome do arquivo da conta do jogador
		
		if(DOF2_FileExists(arquivo))
		{
			DOF2_SetInt(arquivo, "Kills", Player[killerid][Kills]);
			DOF2_SaveFile();
		}
    }
 
    //Salva as deaths de quem morreu
	Player[playerid][Deaths]++;
	GetPlayerName(playerid, name, 32);
	format(arquivo, 40, "Contas/%s.ini", name);
	
	if(DOF2_FileExists(arquivo))
	{
		DOF2_SetInt(arquivo, "Deaths", Player[playerid][Deaths]);
		DOF2_SaveFile();
	}
		
	return 1;
}
Й sу editar o que precisar, como as variбveis de kills e deaths do jogador, o diretуrio dos arquivos das contas...
Reply
#3

Quote:
Originally Posted by FelipeUmpierre
Посмотреть сообщение
Nгo tenho muita experiкncia com DOF2, mas acho que seria algo assim:

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
	new arquivo[40], name[MAX_PLAYER_NAME];
	
	//Salva as kills de quem matou
	if(killerid != INVALID_PLAYER_ID)
    {
		Player[killerid][Kills]++; //Adiciona uma kill na variбvel do jogador
		
		GetPlayerName(killerid, name, 32);
		format(arquivo, 40, "Contas/%s.ini", name); //Formata o nome do arquivo da conta do jogador
		
		if(DOF2_FileExists(arquivo))
		{
			DOF2_SetInt(arquivo, "Kills", Player[killerid][Kills]);
			DOF2_SaveFile();
		}
    }
 
    //Salva as deaths de quem morreu
	Player[playerid][Deaths]++;
	GetPlayerName(playerid, name, 32);
	format(arquivo, 40, "Contas/%s.ini", name);
	
	if(DOF2_FileExists(arquivo))
	{
		DOF2_SetInt(arquivo, "Deaths", Player[playerid][Deaths]);
		DOF2_SaveFile();
	}
		
	return 1;
}
Й sу editar o que precisar, como as variбveis de kills e deaths do jogador, o diretуrio dos arquivos das contas...
Eae Felipe blz? deu pra entender mais ou menos a logica da coisa.
Vou tentar montar aqui dai te falo se deu certo ou nгo.
Valeu parceiro abraзo
Reply
#4

Felipe eu montei assim:
PHP код:
public OnPlayerDeath(playeridkilleridreason)
{
    if(
killerid != INVALID_PLAYER_ID)
    {
        
Player[killerid][Kills]++;

        new 
file[50];
        
format(filesizeof(file), PASTA_CONTASPlayerName(playerid));
        
DOF2_SetInt(file"Matou"Player[killerid][Kills]);
        
DOF2_SaveFile();
        
    }
    
PlayerDeaths[playerid] ++;
    new 
file[50];
    
format(filesizeof(file), PASTA_CONTASPlayerName(playerid));
    
DOF2_SetInt(file"Morreu"Player[playerid][Death]);
    
DOF2_SaveFile();
    
    return 
1;

Porem deu os seguintes erros:
PHP код:
error 017undefined symbol "Player"
warning 215expression has no effect
error 001
expected token";"but found "]"
error 029invalid expressionassumed zero
fatal error 107
too many error messages on one line 
TERIA COMO ME AJUDAR?
Reply
#5

PHP код:
enum DATA_P
{
    
P_KILL,
    
P_DEATH
};
new 
PLAYER_DATA[MAX_PLAYERS][DATA_P];
public 
OnPlayerDisconnect(playeridreason)
{
    
SaveData(playerid);
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    
LoadData(playerid);
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
    if(
killerid != INVALID_PLAYER_ID)
    {
        
PLAYER_DATA[playerid][P_DEATH] ++;
        
PLAYER_DATA[killerid][P_KILL] ++;
    }
    return 
1;
}
/* PARA SALVAR OS DADOS */
SaveData(playerid)
{
    if(
DOF2_FileExists(GetPlayerFileEx(playerid)))
    {
        
DOF2_SetInt(GetPlayerFileEx(playerid), "KILL"PLAYER_DATA[playerid][P_KILL]);
        
DOF2_SetInt(GetPlayerFileEx(playerid), "DEATH"PLAYER_DATA[playerid][P_DEATH]);
        
DOF2_SaveFile();
    }
    else
    {
        
DOF2_CreateFile(GetPlayerFileEx(playerid));
          
DOF2_SetInt(GetPlayerFileEx(playerid), "KILL"0);
        
DOF2_SetInt(GetPlayerFileEx(playerid), "DEATH"0);
        
DOF2_SaveFile();
    }
    return 
1;
}
/* PARA CARREGAR OS DADOS */
LoadData(playerid)
{
    if(
DOF2_FileExists(GetPlayerFileEx(playerid)))
    {
         
PLAYER_DATA[playerid][P_KILL] = DOF2_GetInt(GetPlayerFileEx(playerid), "KILL");
        
PLAYER_DATA[playerid][P_DEATH] = DOF2_GetInt(GetPlayerFileEx(playerid), "DEATH");
    }
    else
    {
        
DOF2_CreateFile(GetPlayerFileEx(playerid));
          
DOF2_SetInt(GetPlayerFileEx(playerid), "KILL"0);
        
DOF2_SetInt(GetPlayerFileEx(playerid), "DEATH"0);
        
DOF2_SaveFile();
    }
    return 
1;
}
/* PEGAR O ARQUIVO */
GetPlayerFileEx(playerid)
{
    static 
p_file[40], p_name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridp_nameMAX_PLAYER_NAME);
    
format(p_file40"diretorio/%s.ini"p_name);
    return 
p_file;

Reply
#6

Quote:
Originally Posted by matheusdorado
Посмотреть сообщение
Felipe eu montei assim:
PHP код:
public OnPlayerDeath(playeridkilleridreason)
{
    if(
killerid != INVALID_PLAYER_ID)
    {
        
Player[killerid][Kills]++;
        new 
file[50];
        
format(filesizeof(file), PASTA_CONTASPlayerName(playerid));
        
DOF2_SetInt(file"Matou"Player[killerid][Kills]);
        
DOF2_SaveFile();
        
    }
    
PlayerDeaths[playerid] ++;
    new 
file[50];
    
format(filesizeof(file), PASTA_CONTASPlayerName(playerid));
    
DOF2_SetInt(file"Morreu"Player[playerid][Death]);
    
DOF2_SaveFile();
    
    return 
1;

Porem deu os seguintes erros:
PHP код:
error 017undefined symbol "Player"
warning 215expression has no effect
error 001
expected token";"but found "]"
error 029invalid expressionassumed zero
fatal error 107
too many error messages on one line 
TERIA COMO ME AJUDAR?
Player[playerid][Kills] e Player[playerid][Deaths] seriam as suas variбveis de kills e deaths do jogador. Fiz nesse formato achando que vocк jб tinha uma array com os dados organizados dessa forma (como й feito na maioria dos sistemas de contas).

Vocк pode corrigir criando variбveis separadas pra isso:
Код:
new kills[MAX_PLAYERS], deaths[MAX_PLAYERS];
E substituindo Player[killerid][Kills] por kills[killerid] e Player[playerid][Deaths] por deaths[playerid]

Ou criar a array naquele formato pra todos os dados do jogador (sem mexer no resto do cуdigo):
Код:
enum E_PLAYER
{
     Kills,
     Deaths
};
new Player[MAX_PLAYERS][E_PLAYER];
(Assim vocк pode colocar mais coisas dentro do enum, por exemplo "Skin", e usar Player[playerid][Skin], etc...)

Ou, se preferir, o cуdigo pronto do Whoo ali em cima vai funcionar perfeitamente (й sу editar o diretуrio).
Reply
#7

Boa Noite rapaziada, consegui deu certo, ficou assim:

PHP код:
new PlayerInfo[MAX_PLAYERS][pInfo];

enum pInfo
{
    
pKills,
        
pDeaths
};

public 
OnPlayerDeath(playeridkilleridreason)
{
     if(
killerid != INVALID_PLAYER_ID)
    {
        
PlayerInfo[killerid][pKills]++;
    }
    
PlayerInfo[playerid][pDeaths]++;
    return 
1;

Dai finalizei com salvamento do banco de dados.
Vlw Rapaziada pela ajuda, e atй a proxima.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)