SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 30/05/2020, 02:56 AM   #1
Sants
Big Clucker
 
Sants's Avatar
 
Join Date: May 2019
Location: Brasília, Brazil
Posts: 85
Reputation: 0
Default Tempo para a função do comando ser executada.

"Função programada"
by Sants

Olá, neste tutorial você aprenderá a determinar um tempo para a função do comando ser executada.
(Primeiro tutorial, peguem levem)
Neste exemplo irei usar um comando para respawnar veículos, o qual é necessário avisar aos outros players.

Vamos lá.

Includes Necessárias:
Code:
#include <sscanf2>
#include <zcmd>
No começo da sua GM coloque:
Code:
new tempo; // Tempo que você deu para o comando ser realizado. Ele ficará no topo da GM pois será usado não só como parâmetro do comando
new aviso; // Usado para identificar o Timer que irá avisar aos players quantos segundos faltam. OBS: Se você não for exibir a contagem, não precisa dessa variável.

forward respawnprogramado(playerid); //Cria a função que irá respawnar os veículos no tempo determinado
forward avisorpv(playerid); //Cria a função que irá exibir a contagem OBS: Se você não for exibir a contagem, não precisa dessa forward
No final da sua GM insira:

Code:
public respawnprogramado(playerid){
    for(new v = 0; v <= MAX_VEHICLES; v++){
        SetVehicleToRespawn(v);
    }
    return 1;
} // Função declarada, irá criar um loop para respawnar todos os veiculos. Você pode alterar o que está dentro das chaves da public para a função que quiser.

public avisorpv(playerid) {
	new msgrpv[120]; // string para formatar a mensagem
	if(tempo != 0){ // Enquanto o tempo não for 0 ele fará o que está entre as chaves
		tempo --; // Irá diminuir um no começo, pois o timer é de 1 em 1 segundo, assim ficará em tempo real.
		format(msgrpv, sizeof(msgrpv), "Os veículos serão respawnados em %d segundos", tempo); // formata a mensagem atualizando os segundos
		SendClientMessageToAll(-1, msgrpv); // Envia a mensagem para os players.
	}
	else { // Quando o tempo for 0 fará o que está entre as chaves. - "Ain santes pq é diferente?" Se continuar o contador irá ficar negativo, não é isso que queremos. Quando a contagem chegar a 0 irá parar de avisar
		KillTimer(aviso); // Desativa a função da notificação do tempo
	}
	return 1;
} // Esse é a função que irá notificar os players. OBS: Se você não for exibir a contagem, não precisa dessa função



CMD:rpv(playerid, params []){
        if(sscanf(params, "d", tempo)){
            SendClientMessage(playerid, -1, "Use:/rpv [Tempo em Segundos]"); // caso não coloque o parâmetro irá retornar uma mensagem de erro.
 
        }
        else { //Com o comando digitado corretamente
           
            SetTimer("respawnprogramado", tempo*1000, false); // Define em quanto tempo a função que respawnará os carros irá acontecer. É multiplicado por mil pois a forma de entrada é em milisegundos
            aviso = SetTimer("avisorpv", 1000, true); // Ativa o timer que irá notificar a contagem.
        }
        return 1;
}
PasteBin


Obrigado pela atenção, se te ajudei deixe a estrelinha.
Caso tenha dúvida ou críticas construtivas, mande aqui em baixo.
PS:Fiz morrendo de sono, porém quando acordar irei revisar e fazer os devidos ajustes.



Créditos: Criador das includes sscanf2 e ZCMD.

__________________
Mais informações:
Discord - Sants#1462
Autor:
Code:
[Tutorial] Tempo para a função do comando ser executada.
PAWN (Beginer) - JS (Beginer)
Sants is offline   Reply With Quote
Old 30/05/2020, 06:01 AM   #2
ipsLuan
High-roller
 
ipsLuan's Avatar
 
Join Date: Feb 2013
Location: Ilhéus, BA
Posts: 4,548
Reputation: 332
Default Re: Tempo para a função do comando ser executada.

Dá pra melhorar o código com o uso de gettime ao invés de ficar chamando a callback a cada segundo.
__________________
Precisando de algum sistema? Me contate.
ipsLuan is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] Tempo para utilizar comando MineiriinHo Português/Portuguese 8 21/04/2016 02:46 PM
[Ajuda] Tempo para comando MCBAIDU Português/Portuguese 7 02/06/2015 11:43 PM
[Ajuda] Tempo Liberado para comando jamaica90 Português/Portuguese 9 02/06/2014 09:02 PM
[Ajuda] Tempo para usar comando TiaGo_RR Português/Portuguese 2 21/12/2013 10:24 AM
[Ajuda] Comando para mudar tempo. Gabriel Santana Português/Portuguese 13 26/08/2012 02:39 AM


All times are GMT. The time now is 05:33 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.