Portal SAMP
[Ajuda] Não seta o score para o player registrado - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Não seta o score para o player registrado (/showthread.php?tid=3135)



Não seta o score para o player registrado - fearsa - 03/01/2023

boa noite. estou tendo o seguinte problema, não estou entendendo o porque mas ele seta a grana mas não seta o score.

codigo:

Código:
GivePlayerMoneyEx(playerid,10000);
SetPlayerScore(playerid,GetPlayerLevel(playerid) + 10);
GivePlayerMoneyEx(playerid,10000);
SetPlayerScore(playerid,GetPlayerLevel(playerid) + 10);



RE: Não seta o score para o player registrado - k2bi_YT - 03/01/2023

Se ele está apenas setando o score para 10, você deve rever o que está sendo retornado nessa função GetPlayerLevel, ou se você quer adicionar +10 score em cima do score atual do jogador deve ser usado com SetPlayerScore(playerid, GetPlayerScore(playerid)+10);


RE: Não seta o score para o player registrado - fearsa - 03/01/2023

(03/01/2023 19:02)k2bi_YT Escreveu: Se ele está apenas setando o score para 10, você deve rever o que está sendo retornado nessa função GetPlayerLevel, ou se você quer adicionar +10 score em cima do score atual do jogador deve ser usado com SetPlayerScore(playerid, GetPlayerScore(playerid)+10);

Não entendeu.. ele não esta setando o score 10 e eu quero que todo player que entre no servidor ganha 10 de score.. ele seta a grana porém não seta o score.. continua sendo 0


RE: Não seta o score para o player registrado - k2bi_YT - 03/01/2023

Coloque em OnPlayerConnect (ou de sua preferencia) apenas SetPlayerScore(playerid, 10);

Feito isso irá ser definido 10 score para o jogador, basta você salvar a conta do mesmo, ao conectar, você deve verificar se o player possui registro, pegar o score salvo da conta e definir normalmente. Em caso de adicionar mais score, você deve usar a variavel que pega guarda o score do jogador e somar com o score pretendido.

Caso ainda persistir o problema, será mais plausível o envio do code


RE: Não seta o score para o player registrado - fearsa - 03/01/2023

(03/01/2023 19:26)k2bi_YT Escreveu: Coloque em OnPlayerConnect (ou de sua preferencia) apenas SetPlayerScore(playerid, 10);

Feito isso irá ser definido 10 score para o jogador, basta você salvar a conta do mesmo, ao conectar, você deve verificar se o player possui registro, pegar o score salvo da conta e definir normalmente. Em caso de adicionar mais score, você deve usar a variavel que pega guarda o score do jogador e somar com o score pretendido.

Caso ainda persistir o problema, será mais plausível o envio do code

Não funcionou mesmo colocando na dialog do registrar e nem no onplayerconnect

coloquei assim:

SetPlayerScore(playerid, 10);

SALVANDO CONTA:
DOF2_SetInt(GetPlayerArquivo(playerid),"Level",PlayerInfo[playerid][Level],"ITENS");

CARREGANDO CONTA:
SetPlayerScore(playerid,PlayerInfo[playerid][Level]);

Não sei pq não ta setando o score...


RE: Não seta o score para o player registrado - k2bi_YT - 03/01/2023

Bom, creio que o tanto o meio de salvar assim como carregar estão sendo usado incorretamente.

Vamos fazer como se o player entrou pela primeira vez no servidor.

Código PHP:
OnPlayerConnect(playerid)
{
    new 
file[128];
    
format(filesizeof(file), "%s.ini"PlayerName(playerid));
    if(!
DOF2_FileExists(file))
    {
        
SetPlayerScore(playerid10);
        
DOF2_CreateFile(file);
        
SendClientMessage(playerid, -1"Você ganhou 10 score por não possuir registro.");
    }
    else
    {
        
PlayerInfo[playerid][Level] = DOF2_GetInt(file"Score");
        
SetPlayerScore(playeridPlayerInfo[playerid][Level]+1);
        
format(strsizeof(str), "Seu score foi carregado com %d e ganhou +1 como bonus (%d)."PlayerInfo[playerid][Level], GetPlayerScore(playerid));
        
SendClientMessage(playerid, -1str);
    }
    return 
true;
}

OnPlayerDisconnect(playeridreason)
{
    new 
file[24];
    
format(file24"%s.ini"PlayerName(playerid));
    
DOF2_SetInt(file"Score"GetPlayerScore(playerid));
    
DOF2_SaveFile();
    return 
true;


Quando o player conectar pela primeira vez ira ganhar 10 scores, ao desconectar será salvo os dados do mesmo e quando reconectar ira retomar seu score salvo e ganhar +1 de bonus


RE: Não seta o score para o player registrado - ProKillerPa - 04/01/2023

Voce está usando essa função aonde?
Na onplayerconnect não irá funcionar @k2bi_yt, pelo fato do player ter os dados carregados posteriormente e consequentemente o level substituido pelo que está salvo na conta do jogador.
Faça o seguinte:
No local onde vc carrega os dados do jogador, deve ser algo assim : PlayerInfo[playerid][Level] = DOF2_GetInt(.....); Voce faz o seguinte na linha debaixo:

If(PlayerInfo[playerid][Level] == 0) PlayerInfo[playerid][Level] += 10; // Todos que tem level 0 terão level 10;
SetPlayerScore(playerid, PlayerInfo[playerid][Level]);

Caso voce queira que todos os players recebam +10 leveis (e não apenas os com level 10), voce precisará fazer um salvamento em bool para verificar se o jogador já recebeu o level ou não.

Abraços


RE: Não seta o score para o player registrado - fearsa - 07/01/2023

(04/01/2023 14:08)ProKillerPa Escreveu: Voce está usando essa função aonde?
Na onplayerconnect não irá funcionar @k2bi_yt, pelo fato do player ter os dados carregados posteriormente e consequentemente o level substituido pelo que está salvo na conta do jogador.
Faça o seguinte:
No local onde vc carrega os dados do jogador, deve ser algo assim : PlayerInfo[playerid][Level] = DOF2_GetInt(.....); Voce faz o seguinte na linha debaixo:

If(PlayerInfo[playerid][Level] == 0) PlayerInfo[playerid][Level] += 10; // Todos que tem level 0 terão level 10;
SetPlayerScore(playerid, PlayerInfo[playerid][Level]);

Caso voce queira que todos os players recebam +10 leveis (e não apenas os com level 10), voce precisará fazer um salvamento em bool para verificar se o jogador já recebeu o level ou não.

Abraços

Já foi resolvido. criada uma função para setar score. @ferraril ajudou via anydesk.  Obrigado a todos que responderam o tópico.