Portal SAMP
[Ajuda] Estrela sumir igual ao gta single player - 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] Estrela sumir igual ao gta single player (/showthread.php?tid=2818)

Páginas: 1 2 3


Estrela sumir igual ao gta single player - fear - 18/09/2022

boa tarde. hoje a tarde postei um problema no sistema de ganhar estrelas e me ajudaram muito com ele. agora eu estou pensando se é possivel colocar para que suma as estrelas igual o gta single player um tempo e ela some.

teria como? se for e alguém me der uma base eu agradeço. eu tentei pegar algo parecido de uma include antiga mas não deu certo.


RE: Estrela sumir igual ao gta single player - RosaScripter - 18/09/2022

(18/09/2022 17:18)fear Escreveu: boa tarde. hoje a tarde postei um problema no sistema de ganhar estrelas e me ajudaram muito com ele. agora eu estou pensando se é possivel colocar para que suma as estrelas igual o gta single player um tempo e ela some.

teria como? se for e alguém me der uma base eu agradeço. eu tentei pegar algo parecido de uma include antiga mas não deu certo.

Usa um time pra sumir quando o player estiver com estrelas.


RE: Estrela sumir igual ao gta single player - xbruno1000x - 18/09/2022

É só criar um timer e colocar para diminuir as estrelas na public chamada pelo mesmo.


RE: Estrela sumir igual ao gta single player - White_Blue - 18/09/2022

Você cria um timer e aciona ele quando na função onde o player ganha o nível de procurado.

Código PHP:
Forward Timer(playerid);
public 
Timer(playerid) {
     if(
PlayerInfo[playerid][pEstrelas] >= 1) {
      
PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
     
}
     return 
1;
}

zesqqq(playerid// peguei a função do seu tópico.
{
    new randomstars = random(6) , str[128];
    SendClientMessage(playerid, Vermelho, "| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
   format(str, sizeof(str), ,"[ x ] Voce recebeu +%d Estrelas de Procurado(a)!", randomstars);
   SendClientMessage(playerid, Amarelo, str);
   PlayerInfo[playerid][pEstrelas] +=randomstars;
   
SetTimerEx("Timer"10000true"d"playerid); // Aciona o timer com 10 segundos de duração
 




RE: Estrela sumir igual ao gta single player - fear - 18/09/2022

(18/09/2022 18:01)White_Blue Escreveu: Você cria um timer e aciona ele quando na função onde o player ganha o nível de procurado.

Código PHP:
Forward Timer(playerid);
public 
Timer(playerid) {
     if(
PlayerInfo[playerid][pEstrelas] >= 1) {
      
PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
     
}
     return 
1;
}

zesqqq(playerid// peguei a função do seu tópico.
{
    new randomstars = random(6) , str[128];
    SendClientMessage(playerid, Vermelho, "| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
   format(str, sizeof(str), ,"[ x ] Voce recebeu +%d Estrelas de Procurado(a)!", randomstars);
   SendClientMessage(playerid, Amarelo, str);
   PlayerInfo[playerid][pEstrelas] +=randomstars;
   
SetTimerEx("Timer"10000true"d"playerid); // Aciona o timer com 10 segundos de duração
 

Não sumiu a estrela eu estava fazendo usando esse link: https://portalsamp.com/showthread.php?tid=821
Mas conto o tempo e não removeu tb


RE: Estrela sumir igual ao gta single player - White_Blue - 18/09/2022

(18/09/2022 18:23)fear Escreveu:
(18/09/2022 18:01)White_Blue Escreveu: Você cria um timer e aciona ele quando na função onde o player ganha o nível de procurado.

Código PHP:
Forward Timer(playerid);
public 
Timer(playerid) {
     if(PlayerInfo[playerid][pEstrelas] >= 1) {
      PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
     }
     return 1;
}

zesqqq(playerid// peguei a função do seu tópico.
{
    new randomstars = random(6) , str[128];
    SendClientMessage(playerid, Vermelho, "| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
   format(str, sizeof(str), ,"[ x ] Voce recebeu +%d Estrelas de Procurado(a)!", randomstars);
   SendClientMessage(playerid, Amarelo, str);
   PlayerInfo[playerid][pEstrelas] +=randomstars;
   SetTimerEx("Timer"10000true"d"playerid); // Aciona o timer com 10 segundos de duração
 

Não sumiu a estrela eu estava fazendo usando esse link: https://portalsamp.com/showthread.php?tid=821
Mas conto o tempo e não removeu tb
Tenta colocar a função SetPlayerWantedLevel no timer

Código PHP:
SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 



RE: Estrela sumir igual ao gta single player - fear - 18/09/2022

(18/09/2022 18:29)White_Blue Escreveu:
(18/09/2022 18:23)fear Escreveu:
(18/09/2022 18:01)White_Blue Escreveu: Você cria um timer e aciona ele quando na função onde o player ganha o nível de procurado.

Código PHP:
Forward Timer(playerid);
public 
Timer(playerid) {
     if(PlayerInfo[playerid][pEstrelas] >= 1) {
      PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
     }
     return 1;
}

zesqqq(playerid// peguei a função do seu tópico.
{
    new randomstars = random(6) , str[128];
    SendClientMessage(playerid, Vermelho, "| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
   format(str, sizeof(str), ,"[ x ] Voce recebeu +%d Estrelas de Procurado(a)!", randomstars);
   SendClientMessage(playerid, Amarelo, str);
   PlayerInfo[playerid][pEstrelas] +=randomstars;
   SetTimerEx("Timer"10000true"d"playerid); // Aciona o timer com 10 segundos de duração
 

Não sumiu a estrela eu estava fazendo usando esse link: https://portalsamp.com/showthread.php?tid=821
Mas conto o tempo e não removeu tb
Tenta colocar a função SetPlayerWantedLevel no timer

Código PHP:
SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 

Ele seta a estrela quando da 10 segundos e achei outro problema no setar estrelas ele aparece voce ganhou +0 estrelas.. não sei se erro na frase ali pois depois disso deu 10 segundos e apareceu 3 estrelas pra mim kkk

ta assim eu fiz usando o link que mandei acima:

TIMER:
Código PHP:
forward Contando(playerid);
public 
Contando(playerid)  // Quando completar os 10 segundos, funciona a callback.
{

     if(
PlayerInfo[playerid][pEstrelas] >= 1
     {
          
PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
          
SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 
     }
     return 
1;


DAR ESTRELAS

Código PHP:
zesqqq(playerid)
{
    new 
randomstars random(6/* Retorna um número semi-aleatório entre 0 e 5 se quiser retornar um número mínimo use o RandomEx do Y_LESS que o RosaScripter mandou acima*/str[128];
    
SendClientMessage(playeridVermelho"| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
    
format(strsizeof(str), "[ x ] Voce recebeu +%d Estrelas de Procurado(a)!"randomstars);
    
SendClientMessage(playeridAmarelostr);
    
PlayerInfo[playerid][pEstrelas] +=randomstars;
    
SetPlayerWantedLevel(playeridrandomstars);
    
SetTimer("Contando"Segundos(10), false);




RE: Estrela sumir igual ao gta single player - White_Blue - 18/09/2022

(18/09/2022 18:37)fear Escreveu:
(18/09/2022 18:29)White_Blue Escreveu:
(18/09/2022 18:23)fear Escreveu:
(18/09/2022 18:01)White_Blue Escreveu: Você cria um timer e aciona ele quando na função onde o player ganha o nível de procurado.

Código PHP:
Forward Timer(playerid);
public 
Timer(playerid) {
     if(PlayerInfo[playerid][pEstrelas] >= 1) {
      PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
     }
     return 1;
}

zesqqq(playerid// peguei a função do seu tópico.
{
    new randomstars = random(6) , str[128];
    SendClientMessage(playerid, Vermelho, "| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
   format(str, sizeof(str), ,"[ x ] Voce recebeu +%d Estrelas de Procurado(a)!", randomstars);
   SendClientMessage(playerid, Amarelo, str);
   PlayerInfo[playerid][pEstrelas] +=randomstars;
   SetTimerEx("Timer"10000true"d"playerid); // Aciona o timer com 10 segundos de duração
 

Não sumiu a estrela eu estava fazendo usando esse link: https://portalsamp.com/showthread.php?tid=821
Mas conto o tempo e não removeu tb
Tenta colocar a função SetPlayerWantedLevel no timer

Código PHP:
SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 

Ele seta a estrela quando da 10 segundos e achei outro problema no setar estrelas ele aparece voce ganhou +0 estrelas.. não sei se erro na frase ali pois depois disso deu 10 segundos e apareceu 3 estrelas pra mim kkk

ta assim eu fiz usando o link que mandei acima:

TIMER:
Código PHP:
forward Contando(playerid);
public 
Contando(playerid)  // Quando completar os 10 segundos, funciona a callback.
{

     if(PlayerInfo[playerid][pEstrelas] >= 1
     {
          PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
          SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 
     }
     return 
1;


DAR ESTRELAS

Código PHP:
zesqqq(playerid)
{
    new randomstars random(6/* Retorna um número semi-aleatório entre 0 e 5 se quiser retornar um número mínimo use o RandomEx do Y_LESS que o RosaScripter mandou acima*/str[128];
    SendClientMessage(playeridVermelho"| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
    format(strsizeof(str), "[ x ] Voce recebeu +%d Estrelas de Procurado(a)!"randomstars);
    SendClientMessage(playeridAmarelostr);
    PlayerInfo[playerid][pEstrelas] +=randomstars;
    SetPlayerWantedLevel(playeridrandomstars);
    SetTimer("Contando"Segundos(10), false);
}
  

Você está acionando o timer de forma incorreta. O SetTimer conta um timer para o servidor inteiro, mas nós só precisamos que conte o playerid, e o tempo não é em segundos mas sim em milisegundos.

Use assim:

Código PHP:
SetTimerEx("Contando"10000false"d"playerid); 



RE: Estrela sumir igual ao gta single player - fear - 18/09/2022

(18/09/2022 18:56)White_Blue Escreveu:
(18/09/2022 18:37)fear Escreveu:
(18/09/2022 18:29)White_Blue Escreveu:
(18/09/2022 18:23)fear Escreveu:
(18/09/2022 18:01)White_Blue Escreveu: Você cria um timer e aciona ele quando na função onde o player ganha o nível de procurado.

Código PHP:
Forward Timer(playerid);
public 
Timer(playerid) {
     if(PlayerInfo[playerid][pEstrelas] >= 1) {
      PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
     }
     return 1;
}

zesqqq(playerid// peguei a função do seu tópico.
{
    new randomstars = random(6) , str[128];
    SendClientMessage(playerid, Vermelho, "| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
   format(str, sizeof(str), ,"[ x ] Voce recebeu +%d Estrelas de Procurado(a)!", randomstars);
   SendClientMessage(playerid, Amarelo, str);
   PlayerInfo[playerid][pEstrelas] +=randomstars;
   SetTimerEx("Timer"10000true"d"playerid); // Aciona o timer com 10 segundos de duração
 

Não sumiu a estrela eu estava fazendo usando esse link: https://portalsamp.com/showthread.php?tid=821
Mas conto o tempo e não removeu tb
Tenta colocar a função SetPlayerWantedLevel no timer

Código PHP:
SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 

Ele seta a estrela quando da 10 segundos e achei outro problema no setar estrelas ele aparece voce ganhou +0 estrelas.. não sei se erro na frase ali pois depois disso deu 10 segundos e apareceu 3 estrelas pra mim kkk

ta assim eu fiz usando o link que mandei acima:

TIMER:
Código PHP:
forward Contando(playerid);
public 
Contando(playerid)  // Quando completar os 10 segundos, funciona a callback.
{

     if(PlayerInfo[playerid][pEstrelas] >= 1
     {
          PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
          SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 
     }
     return 
1;


DAR ESTRELAS

Código PHP:
zesqqq(playerid)
{
    new randomstars random(6/* Retorna um número semi-aleatório entre 0 e 5 se quiser retornar um número mínimo use o RandomEx do Y_LESS que o RosaScripter mandou acima*/str[128];
    SendClientMessage(playeridVermelho"| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
    format(strsizeof(str), "[ x ] Voce recebeu +%d Estrelas de Procurado(a)!"randomstars);
    SendClientMessage(playeridAmarelostr);
    PlayerInfo[playerid][pEstrelas] +=randomstars;
    SetPlayerWantedLevel(playeridrandomstars);
    SetTimer("Contando"Segundos(10), false);
}
  

Você está acionando o timer de forma incorreta. O SetTimer conta um timer para o servidor inteiro, mas nós só precisamos que conte o playerid, e o tempo não é em segundos mas sim em milisegundos.

Use assim:

Código PHP:
SetTimerEx("Contando"10000false"d"playerid); 

Coloquei como tu me falou agora eu roubo o caixa recebo a estrela passa 5 segundos e add mais estrela ao invez de remover kkkk

Código PHP:
zesqqq(playerid)
{
    new 
randomstars random(6/* Retorna um número semi-aleatório entre 0 e 5 se quiser retornar um número mínimo use o RandomEx do Y_LESS que o RosaScripter mandou acima*/str[128];
    
SendClientMessage(playeridVermelho"| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
    
format(strsizeof(str), "[ x ] Voce recebeu +%d Estrelas de Procurado(a)!"randomstars);
    
SendClientMessage(playeridAmarelostr);
    
PlayerInfo[playerid][pEstrelas] +=randomstars;
    
SetPlayerWantedLevel(playeridrandomstars);
    
SetTimerEx("Contando"10000false"d"playerid); 


TIMER

Código PHP:
forward Contando(playerid);
public 
Contando(playerid)  // Quando completar os 10 segundos, funciona a callback.
{

     if(
PlayerInfo[playerid][pEstrelas] >= 1
     {
          
PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
          
SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 
     }
     return 
1;




RE: Estrela sumir igual ao gta single player - RosaScripter - 18/09/2022

(18/09/2022 19:44)fear Escreveu:
(18/09/2022 18:56)White_Blue Escreveu:
(18/09/2022 18:37)fear Escreveu:
(18/09/2022 18:29)White_Blue Escreveu:
(18/09/2022 18:23)fear Escreveu: Não sumiu a estrela eu estava fazendo usando esse link: https://portalsamp.com/showthread.php?tid=821
Mas conto o tempo e não removeu tb
Tenta colocar a função SetPlayerWantedLevel no timer

Código PHP:
SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 

Ele seta a estrela quando da 10 segundos e achei outro problema no setar estrelas ele aparece voce ganhou +0 estrelas.. não sei se erro na frase ali pois depois disso deu 10 segundos e apareceu 3 estrelas pra mim kkk

ta assim eu fiz usando o link que mandei acima:

TIMER:
Código PHP:
forward Contando(playerid);
public 
Contando(playerid)  // Quando completar os 10 segundos, funciona a callback.
{

     if(PlayerInfo[playerid][pEstrelas] >= 1
     {
          PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
          SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 
     }
     return 
1;


DAR ESTRELAS

Código PHP:
zesqqq(playerid)
{
    new randomstars random(6/* Retorna um número semi-aleatório entre 0 e 5 se quiser retornar um número mínimo use o RandomEx do Y_LESS que o RosaScripter mandou acima*/str[128];
    SendClientMessage(playeridVermelho"| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
    format(strsizeof(str), "[ x ] Voce recebeu +%d Estrelas de Procurado(a)!"randomstars);
    SendClientMessage(playeridAmarelostr);
    PlayerInfo[playerid][pEstrelas] +=randomstars;
    SetPlayerWantedLevel(playeridrandomstars);
    SetTimer("Contando"Segundos(10), false);
}
  

Você está acionando o timer de forma incorreta. O SetTimer conta um timer para o servidor inteiro, mas nós só precisamos que conte o playerid, e o tempo não é em segundos mas sim em milisegundos.

Use assim:

Código PHP:
SetTimerEx("Contando"10000false"d"playerid); 

Coloquei como tu me falou agora eu roubo o caixa recebo a estrela passa 5 segundos e add mais estrela ao invez de remover kkkk

Código PHP:
zesqqq(playerid)
{
    new randomstars random(6/* Retorna um número semi-aleatório entre 0 e 5 se quiser retornar um número mínimo use o RandomEx do Y_LESS que o RosaScripter mandou acima*/str[128];
    SendClientMessage(playeridVermelho"| ZP - BANDIDO | A Camera do Caixa Eletronico estava ligado e a Policia foi alertada!");
    format(strsizeof(str), "[ x ] Voce recebeu +%d Estrelas de Procurado(a)!"randomstars);
    SendClientMessage(playeridAmarelostr);
    PlayerInfo[playerid][pEstrelas] +=randomstars;
    SetPlayerWantedLevel(playeridrandomstars);
    SetTimerEx("Contando"10000false"d"playerid); 
}
  

TIMER

Código PHP:
forward Contando(playerid);
public 
Contando(playerid)  // Quando completar os 10 segundos, funciona a callback.
{

     if(PlayerInfo[playerid][pEstrelas] >= 1
     {
          PlayerInfo[playerid][pEstrelas] -= 1// Retira uma estrela
          SetPlayerWantedLevel(playeridPlayerInfo[playerid][pEstrelas]); 
     }
     return 
1;


Bota um if(GetPlayerWanted(playerid) < 1) pro timer só funcionar caso o jogador tenha 1 lvl ou mais