Portal SAMP
[Ajuda] Erro de Sincronizao na variável - 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] Erro de Sincronizao na variável (/showthread.php?tid=3370)

Páginas: 1 2


Erro de Sincronizao na variável - COLD_ON - 24/02/2023

Então, estou com um probrema de sincronizar, eu definir o dinheiro do player como uma variável, mais quando tiro/seto dinheiro no player, não muda nada, ele só atualiza quando o player da spawn em algum lugar do mapa, e possível resolver isso pra quando eu tirar/setar dinheiro no player, ela atualizar na hora?


RE: Erro de Sincronizao na variável - White_Blue - 24/02/2023

Peço que se atente à área de postagem e ao prefixo do tópico. Você postou esse tópico no suporte mobile e sem prefixo.

Respondendo a sua pergunta, basta fazer assim.

Código PHP:
new Money[MAX_PLAYERS];

stock GivePlayerMoneyEx(playeridvalue) { // Utilize essa função ao invés da função nativa GivePlayerMoney.
    
GivePlayerMoney(playeridvalue);
    
Money[playerid] = GetPlayerMoney(playerid);
    return 
1;
}

stock GetPlayerMoneyEx(playerid) return Money[playerid]; // Utilize essa função ao invés da função nativa GetPlayerMoney. 
Assim deve resolver seu problema.


RE: Erro de Sincronizao na variável - COLD_ON - 24/02/2023

Coloquei a stock certinha, mais mesmo assim não deu, quando entro no servidor aparece que tenho $00000000, aí demora uns 5 minutos e dps aparece a quantidade certa, mais se eu setar ou tirar dinheiro do player, só atualiza o valor se eu der respawn nele.


RE: Erro de Sincronizao na variável - White_Blue - 24/02/2023

(24/02/2023 02:02)COLD_ON Escreveu: Coloquei a stock certinha, mais mesmo assim não deu, quando entro no servidor aparece que tenho  $00000000, aí demora uns 5 minutos e dps aparece a quantidade certa, mais se eu setar ou tirar dinheiro do player, só atualiza o valor se eu der respawn nele.

Aí provavelmente é o sistema de salvamento. Se você usa DINI ou um sistema de salvamento mais antigo, isso é normal de acontecer. E outra coisa, você está atualizando o dinheiro do player em um timer? Se sim, pode ser isso.


RE: Erro de Sincronizao na variável - COLD_ON - 24/02/2023

eu uso um sistema de salvamento chamado de DOF2, Caso eu mude para o DINI, E possível resolver esse problema?


RE: Erro de Sincronizao na variável - White_Blue - 24/02/2023

(24/02/2023 02:36)COLD_ON Escreveu: eu uso um sistema de salvamento chamado de DOF2, Caso eu mude para o DINI, E possível resolver esse problema?

Não precisa trocar. DINI é usado em servidor mais antigos, DOF2 é mais atual. Se possível mandar o código de como você está puxando os dados para podermos analisar.


RE: Erro de Sincronizao na variável - AllanSG - 24/02/2023

eu uso um timer que atualiza a cada meio segundo, verificando se o dinheiro que o player tem (getplayermoney) é igual a quantia que esta guardada na variavel da conta.

Se nao for igual, eu reseto e dinheiro e em seguida dou o giveplayermoney com a quantidade que ta salva na variavel.

ps: uso giveplayermoney como uma textdraw, apenas pra mostrar quanto de dinheiro tem, nao uso getplayermoney em nenhuma verificacao que envolve comprar algo no servidor

Nao uso giveplayermoney e getplayermoney pra salvar na variavel pq com qualquer hack se seta dinheiro infinito, ja eu guardando na minha variavel é mais dificil que alguem conseguir hackear (nao se se é possivel hackear, mas tambem nao testei hacks pra saber)


RE: Erro de Sincronizao na variável - COLD_ON - 24/02/2023

Boa tarde, poderia me enviar um código de carregamento, para que fique carregando informações em loop de 1 segundo? Talvez essa gambiarra funcione. ( Uso DOF2 )


RE: Erro de Sincronizao na variável - AllanSG - 24/02/2023

topo do gm
Citar:new AttGrana[MAX_PLAYERS];

na sua dialog de login quando o player spawna
Citar:AttGrana[playerid] = SetTimerEx(AtualizarGrana", 1000, true, "i", playerid);

nao sei onde vc coloca as publics e forwards, mas vc ve no seu gm, tambem adapte as variaveis

Citar:forward AtualizarGrana(playerid);
public AtualizarGrana(playerid)
{
if(GetPlayerMoney(playerid) != Suavar[playerid][dinheiro])
{
  ResetPlayerMoney(playerid);
  GivePlayerMoney(playerid, Suavar[playerid][dinheiro]);
}
return 1;
}

eu uso assim e até hoje nao deu erro, sempre atualiza o dinheiro certinho

escrevi o codigo pelo celular, só arrumar as colunas pra nao dar erro


RE: Erro de Sincronizao na variável - xbruno1000x - 24/02/2023

Tente assim:

Código:
new Money[MAX_PLAYERS];

GivePlayerMoneyEx(playerid, value)
{
    Money[playerid] += value;
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, Money[playerid]);
    return true;
}

stock GetPlayerMoneyEx(playerid) return Money[playerid];