Portal SAMP
[Ajuda] O que são Timers? - 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] O que são Timers? (/showthread.php?tid=2121)



O que são Timers? - Klaba - 21/02/2022

O que são timers? para que servem? e como eu faço uma condição aleatória, como um incêndio gerado aleatoriamente?


RE: O que são Timers? - k2bi_YT - 21/02/2022

Timers por si só ja diz... 'tempo', onde você pode definir o tempo que tal função será executada.

https://open.mp/docs/scripting/functions/SetTimer

Sobre gerar algo aleatoriamente, depende muito do que será gerado e como será gerado.
Para criar o incêndio aleatoriamente, você pode pré-definir as coordenadas que será iniciado. Então é bom ter muitas posições para ser mais dinâmico.

Feito isso deve usar a função Random
https://open.mp/docs/scripting/functions/random

Nesse topíco há um exemplo de como pode ser pré-definida as coordenadas e usar para criar o incendio.


RE: O que são Timers? - Luiz - 21/02/2022

Em meios lógicos, seu código deve ficar com algo parecido a isso:
Código PHP:
new timerIncendio;
timerIncendio 120 random(180// Vai gerar um número aleatório entre 120 e 300 que será o tempo (em segundos) para gerar o incêndio.
SetTimer("GerarIncendio"timerIncendio0);

public 
GerarIncendio()
{
    // Seu código aqui




RE: O que são Timers? - White_Blue - 22/02/2022

Timers como o nome já diz são "temporizadores" que executam tão função de um script em determinado tempo

temos dois tipos de Timers, um é o "SetTimer", o outro é o "SetTimerEx". a única diferença entre os dois é que o "SetTimer" conta o tempo pra baixo, e o "SetTimerEx" conta o tempo pra cima. exemplo do "SetTimer" ele conta assim 3, 2, 1. exemplo do "SetTimerEx" ele conta assim 1, 2, 3.
e por ai vai

1 - Exemplo de Prático SetTimerEx
Código:
#include <a_samp> // Include principal do samp
new Float:x, Float:y, Float:z; // variavél para armazenar a posição do player
new pnome[MAX_PLAYER_NAME]; // variavél para armazenar o nome do player

// Timers
public OnPlayerConnect(playerid)
{
SetTimerEx("carregarinfo", 5000, false, "i", pnome, x,y,z); // O timer que executa o script abaixo cada a cada 5 segundos que um player se conecta ao servidor
return 1;
}

// Script para ser executado com o timer
forward carregarinfo(playerid);
public carregarinfo(playerid)
{
GetPlayerName(playerid, pnome, MAX_PLAYER_NAME); // Armazena o nome do player na variavél pnome
GetPlayerPos(playerid, x,y,z); // Pega a posicão do player e armazena na variavél x,y,z
printf("O player %s está na localizacão %d", pnome, x,y,z); // Desenha uma mensagem no console do servidor com o nome e posicão do player
return 1;
}


2 - Exemplo prático de SetTimer
Código:
#include <a_samp> // Include principal do samp

// Variavéis
new pname[MAX_PLAYER_NAME],
string[128];

// Timer
SetTimer("kickarplayer", 9000, false); // Kicka o player a cada 9 segundos que o script é executado

// Função do Timer
forward kickarplayer(playerid);
public kickarplayer(playerid)
{
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
format(string, sizeof(string), "O(a) jogador(a) %s[%d] foi kickado(a)", pname, playerid);
SendClientMessageToAll(0xFFFFFFAA, string);
Kick(playerid);
return 1;
}



Para Mais informações eu te recomendo a ler os seguintes artigos:
https://portalsamp.com/showthread.php?tid=821
https://www.open.mp/docs/scripting/functions/SetTimer
https://sampwiki.blast.hk/wiki/SetTimerEx