RE: SetTimer e SetTimerEx - Básico - White_Blue -  24/11/2022
 
 
 (24/11/2022 07:00)MisteriumBr Escreveu:  Para isto existe a função KillTimer. 
 
Código PHP: new timer[MAX_PLAYERS];
  public OnPlayerConnect(playerid) {            Timer[playerid] = SetTimerEx("StartTimer", 10000, true, "i", playerid); // Inicia o timer quando o player entra no servidor       return 1; }
  public OnPlayerDisconnect(playerid, reason) {        KillTimer(Timer[playerid]); // Executamos a KillTimer, que para o timer.        return 1; }
  forward StartTimer(playerid); public StartTimer(playerid) {      GivePlayerMoney(playerid, 1000); // Neste exemplo, o timer dará $1,000 para o player a cada 10 segundos enquanto ele estiver desconectado      return 1; } 
 
  
 
Me tira uma dúvida para ver se estou fazendo certo, estou querendo colocar um anti farm na hora de vender veiculos, para o player não ficar comprando e vendendo o veículo o tempo todo, então pensei em colocar um SetTimer para limitar o uso do comando caso ele seja executado de novo. E seja liberado depois de 1 hora por exemplo. O uso do SetTimeEx serve para fazer isso, se puder me dar uma luz de código alternativo mais simples, valeu irmão Para isso não é necessário SetTimerEx. Você pode usar timestamp. 
 
OBS: Se o jogador sair do servidor e entrar, o tempo será zerado. Então se quiser salvar terá que usar seu sistema de salvamento. 
 
Código PHP: CMD:teste(playerid) {      if(gettime() - GetPVarInt(playerid, "Time") < 3600000) return SendClientMessage(playerid, -1, "Aguarde 1 hora para usar o comando novamente.");      SetPVarInt(playerid, "Time", gettime());      SendClientMessage(playerid, -1, "Você usou o comando! Agora só poderá usar novamente em 1 hora.");      return 1; } 
 
  
 
 
 
RE: SetTimer e SetTimerEx - Básico - MisteriumBr -  24/11/2022
 
 
 (24/11/2022 09:17)White_Blue Escreveu:   (24/11/2022 07:00)MisteriumBr Escreveu:  Para isto existe a função KillTimer. 
 
Código PHP: new timer[MAX_PLAYERS];
  public OnPlayerConnect(playerid) {            Timer[playerid] = SetTimerEx("StartTimer", 10000, true, "i", playerid); // Inicia o timer quando o player entra no servidor       return 1; }
  public OnPlayerDisconnect(playerid, reason) {        KillTimer(Timer[playerid]); // Executamos a KillTimer, que para o timer.        return 1; }
  forward StartTimer(playerid); public StartTimer(playerid) {      GivePlayerMoney(playerid, 1000); // Neste exemplo, o timer dará $1,000 para o player a cada 10 segundos enquanto ele estiver desconectado      return 1; } 
 
  
 
Me tira uma dúvida para ver se estou fazendo certo, estou querendo colocar um anti farm na hora de vender veiculos, para o player não ficar comprando e vendendo o veículo o tempo todo, então pensei em colocar um SetTimer para limitar o uso do comando caso ele seja executado de novo. E seja liberado depois de 1 hora por exemplo. O uso do SetTimeEx serve para fazer isso, se puder me dar uma luz de código alternativo mais simples, valeu irmão Para isso não é necessário SetTimerEx. Você pode usar timestamp. 
 
OBS: Se o jogador sair do servidor e entrar, o tempo será zerado. Então se quiser salvar terá que usar seu sistema de salvamento. 
 
Código PHP: CMD:teste(playerid) {      if(gettime() - GetPVarInt(playerid, "Time") < 3600000) return SendClientMessage(playerid, -1, "Aguarde 1 hora para usar o comando novamente.");      SetPVarInt(playerid, "Time", gettime());      SendClientMessage(playerid, -1, "Você usou o comando! Agora só poderá usar novamente em 1 hora.");      return 1; } 
 
   
Cara queria te agradecer primeiramente esta me ajudando demais. 
Esse codigo acima me funcionou legal, mas como eu poderia estar salvando essa informação para cada player, sou um pouco iniciante e é a primeira vez que estou mexendo com gettime, quebrei a cabeça com o SetTimeEx antes mas você me ajudou XD
 
 
 
RE: SetTimer e SetTimerEx - Básico - White_Blue -  24/11/2022
 
 
 (24/11/2022 15:37)MisteriumBr Escreveu:   (24/11/2022 09:17)White_Blue Escreveu:   (24/11/2022 07:00)MisteriumBr Escreveu:  Para isto existe a função KillTimer. 
 
Código PHP: new timer[MAX_PLAYERS];
  public OnPlayerConnect(playerid) {            Timer[playerid] = SetTimerEx("StartTimer", 10000, true, "i", playerid); // Inicia o timer quando o player entra no servidor       return 1; }
  public OnPlayerDisconnect(playerid, reason) {        KillTimer(Timer[playerid]); // Executamos a KillTimer, que para o timer.        return 1; }
  forward StartTimer(playerid); public StartTimer(playerid) {      GivePlayerMoney(playerid, 1000); // Neste exemplo, o timer dará $1,000 para o player a cada 10 segundos enquanto ele estiver desconectado      return 1; } 
 
  
 
Me tira uma dúvida para ver se estou fazendo certo, estou querendo colocar um anti farm na hora de vender veiculos, para o player não ficar comprando e vendendo o veículo o tempo todo, então pensei em colocar um SetTimer para limitar o uso do comando caso ele seja executado de novo. E seja liberado depois de 1 hora por exemplo. O uso do SetTimeEx serve para fazer isso, se puder me dar uma luz de código alternativo mais simples, valeu irmão Para isso não é necessário SetTimerEx. Você pode usar timestamp. 
 
OBS: Se o jogador sair do servidor e entrar, o tempo será zerado. Então se quiser salvar terá que usar seu sistema de salvamento. 
 
Código PHP: CMD:teste(playerid) {      if(gettime() - GetPVarInt(playerid, "Time") < 3600000) return SendClientMessage(playerid, -1, "Aguarde 1 hora para usar o comando novamente.");      SetPVarInt(playerid, "Time", gettime());      SendClientMessage(playerid, -1, "Você usou o comando! Agora só poderá usar novamente em 1 hora.");      return 1; } 
 
   
Cara queria te agradecer primeiramente esta me ajudando demais. 
Esse codigo acima me funcionou legal, mas como eu poderia estar salvando essa informação para cada player, sou um pouco iniciante e é a primeira vez que estou mexendo com gettime, quebrei a cabeça com o SetTimeEx antes mas você me ajudou XD  
Ficarei feliz em ajudar. Mas primeiro tenho que saber qual sistema de salvamento você usa. Ex: MySQL, DOF2, Dini.
 
 
 
RE: SetTimer e SetTimerEx - Básico - MisteriumBr -  24/11/2022
 
 
No momento estou usando DOF2
 
 
 
RE: SetTimer e SetTimerEx - Básico - White_Blue -  24/11/2022
 
 
 (24/11/2022 15:46)MisteriumBr Escreveu:  No momento estou usando DOF2  
Então é simples. Nesse caso, usaremos o timer para salvar. 
 
Código PHP: new Timer[MAX_PLAYERS];
  forward Timer(playerid); public Timer(playerid) {      new Arquivo[128], pname[MAX_PLAYER_NAME];      GetPlayerName(playerid, pname, MAX_PLAYER_NAME);      format(Arquivo, sizeof(Arquivo), "/Sua_Pasta_de_Contas/%s",);      DOF2_SetInt(Arquivo, "Time", 0);      return 1; }
  CMD:teste(playerid) {       new Arquivo[128], pname[MAX_PLAYER_NAME];       GetPlayerName(playerid, pname, MAX_PLAYER_NAME);       format(Arquivo, sizeof(Arquivo), "/Sua_Pasta_de_Contas/%s",);      if(DOF2_GetInt(Arquivo, "Time")) return SendClientMessage(playerid, -1, "Você só pode usar este comando dentro de 1 hora!");      DOF2_SetInt(Arquivo, "Time", 1);      SendClientMessage(playerid, -1, "Comando efetuado! Agora você só poderá usar este comando dentro de 1 hora.");      Timer[playerid] = SetTimerEx("Timer", 3600000, false, "i", playerid); // Seta o timer para 1 hora para resetar e o player poder usar o comando novamente.      DOF2_SetInt(Arquivo, "Tempo", Timer);      return 1; }
  public OnPlayerDisconnect(playerid, reason) {      KillTimer(Timer[playerid]);      return 1; } 
 
  
 
 
 
RE: SetTimer e SetTimerEx - Básico - MisteriumBr -  24/11/2022
 
 
[quote pid="11827" dateline="1669316672"] 
 
 
Então é simples. Nesse caso, usaremos o timer para salvar. 
 
Código PHP: new Timer[MAX_PLAYERS];
  forward Timer(playerid); public Timer(playerid) {      new Arquivo[128], pname[MAX_PLAYER_NAME];      GetPlayerName(playerid, pname, MAX_PLAYER_NAME);      format(Arquivo, sizeof(Arquivo), "/Sua_Pasta_de_Contas/%s",);      DOF2_SetInt(Arquivo, "Time", 0);      return 1; }
  CMD:teste(playerid) {       new Arquivo[128], pname[MAX_PLAYER_NAME];       GetPlayerName(playerid, pname, MAX_PLAYER_NAME);       format(Arquivo, sizeof(Arquivo), "/Sua_Pasta_de_Contas/%s",);      if(DOF2_GetInt(Arquivo, "Time")) return SendClientMessage(playerid, -1, "Você só pode usar este comando dentro de 1 hora!");      DOF2_SetInt(Arquivo, "Time", 1);      SendClientMessage(playerid, -1, "Comando efetuado! Agora você só poderá usar este comando dentro de 1 hora.");      Timer[playerid] = SetTimerEx("Timer", 3600000, false, "i", playerid); // Seta o timer para 1 hora para resetar e o player poder usar o comando novamente.      DOF2_SetInt(Arquivo, "Tempo", Timer);      return 1; }
  public OnPlayerDisconnect(playerid, reason) {      KillTimer(Timer[playerid]);      return 1; } 
 
  
[/quote] 
 
Nesse caso quando o player conectar novamente ele recupera o tempo?  
 
Eu vi que tem um KillTimer em OnPlayerDisconnect ele apenas para o timer ou apaga?
 
 
 
RE: SetTimer e SetTimerEx - Básico - White_Blue -  24/11/2022
 
 
 (24/11/2022 16:16)MisteriumBr Escreveu:  [quote pid="11827" dateline="1669316672"] 
 
 
Código PHP: Então é simples. Nesse caso, usaremos o timer para salvar.
  [php]new Timer[MAX_PLAYERS];
  forward Timer(playerid); public Timer(playerid) {      new Arquivo[128], pname[MAX_PLAYER_NAME];      GetPlayerName(playerid, pname, MAX_PLAYER_NAME);      format(Arquivo, sizeof(Arquivo), "/Sua_Pasta_de_Contas/%s",);      DOF2_SetInt(Arquivo, "Time", 0);      return 1; }
  CMD:teste(playerid) {       new Arquivo[128], pname[MAX_PLAYER_NAME];       GetPlayerName(playerid, pname, MAX_PLAYER_NAME);       format(Arquivo, sizeof(Arquivo), "/Sua_Pasta_de_Contas/%s",);      if(DOF2_GetInt(Arquivo, "Time")) return SendClientMessage(playerid, -1, "Você só pode usar este comando dentro de 1 hora!");      DOF2_SetInt(Arquivo, "Time", 1);      SendClientMessage(playerid, -1, "Comando efetuado! Agora você só poderá usar este comando dentro de 1 hora.");      Timer[playerid] = SetTimerEx("Timer", 3600000, false, "i", playerid); // Seta o timer para 1 hora para resetar e o player poder usar o comando novamente.      DOF2_SetInt(Arquivo, "Tempo", Timer);      return 1; }
  public OnPlayerDisconnect(playerid, reason) {      KillTimer(Timer[playerid]);      return 1; } 
 
  Nesse caso quando o player conectar novamente ele recupera o tempo?  
 
Eu vi que tem um KillTimer em OnPlayerDisconnect ele apenas para o timer ou apaga?  
Não salva o tempo quando o player reconectar, se ele quita o timer reseta. 
 
O KillTimer na OnPlayerDisconnect é para otimizar melhor.
 
 
 
 |