[FilterScript] Modificaзгo de Timers
#1

Bom pessoal, eu criei esse filterscript, mas eu vi que tenho que fazer um mais complexo que esse,

Ele foi criado com o intuito de modificar o tempo dos timers in-game.

STOCKS NECESSБRIAS

PHP Code:
stock CriarTimer(NomeTimer[], NumeroArquivoMiliSegundosRepetirTimer// RepetirTimer - 1: Sim || 0: Nгo Repete
{
    if(!
DOF2_FileExists(DiretorioTimer(NumeroArquivo)))
    {
        
DOF2_CreateFile(DiretorioTimer(NumeroArquivo));
        
DOF2_SetInt(DiretorioTimer(NumeroArquivo), "Segundos"MiliSegundos);
        
DOF2_SetInt(DiretorioTimer(NumeroArquivo), "NumeroTimer"NumeroArquivo);
        
DOF2_SetString(DiretorioTimer(NumeroArquivo), "NomeTimer"NomeTimer);
        
DOF2_SetInt(DiretorioTimer(NumeroArquivo), "RepetirTimer"RepetirTimer);
        
DOF2_SaveFile();
        new 
NumeroArquivo;
        
VariavelTimer[n] = SetTimer(NomeTimerMiliSegundosRepetirTimer);
        
        
// -------------------- //
        
        
printf("Timer com o Nome: %s | Arquivo ID: %d | MiliSegundos: %d | Repetiзгo de timers: %s"NomeTimerNumeroArquivoMiliSegundosRepetirTimer == ? ("Ativada") : ("Desativada"));
    }
    else
    {
        new 
milisegundos DOF2_GetInt(DiretorioTimer(NumeroArquivo), "Segundos");
        new 
DOF2_GetInt(DiretorioTimer(NumeroArquivo), "NumeroTimer");
        new 
repetirtimer DOF2_GetInt(DiretorioTimer(NumeroArquivo), "RepetirTimer");
        new 
nometimer[15];
        
format(nometimer15DOF2_GetString(DiretorioTimer(NumeroArquivo), "NomeTimer"));
        
VariavelTimer[n] = SetTimer(nometimermilisegundosrepetirtimer);
    }
    return 
1;
}
stock DiretorioTimer(Arquivo)
{
    new 
File[20];
    
format(Filesizeof(File), "/Timers/%d.ini"Arquivo);
    return 
File;

CУDIGO COMPLETO:

PHP Code:
#include <a_samp>
#include <DOF2>
#include <ZCMD>
#include <sscanf2>
#define SEGUNDOS_TIMER                    1000
#define MAX_SEGUNDOS                      300 // 5 Min
#define MAX_TIMERS                        50
new VariavelTimer[MAX_TIMERS];
new 
gstring[500];
public 
OnGameModeInit()
{
    
CriarTimer("UparTodos"150001); // Vai criar o Timer 'UparTodos' com o Nъmero de Arquivo '1', com 5 segundos de timer, e com repetiзгo.
    
CriarTimer("MudarClima"250001);
    return 
1;
}
forward UparTodos();
public 
UparTodos()
{
}
forward MudarClima();
public 
MudarClima()
{
}
CMD:criartimer(playeridparams[]) // Recomendado criar pelo OnGameModeInit mesmo.
{
    new 
NomeTimer[15], NumeroArquivosegundosrepeticao;
    if(
sscanf(params"s[15]iii"NomeTimerNumeroArquivosegundosrepeticao))
    {
        
SendClientMessage(playerid, -1"[ERRO] /CriarTimer [nome] [numero arquivo] [seg] [repeticao-1:repete/0:nгo repete]");
        return 
1;
    }
    if(
strlen(NomeTimer) > 15) return SendClientMessage(playerid, -1"[ERRO] O Mбximo de Caracteres 15 foi alcanзado.");
    if(
segundos || segundos MAX_SEGUNDOS) return SendClientMessage(playerid, -1"[ERRO] O mбximo de segundos й "#MAX_SEGUNDOS".");
    
if(repeticao != && repeticao != 1) return SendClientMessage(playerid, -1"[ERRO] O Timer tem que ser true ou false, ou seja, 1: Repete, 2: Repete o Timer.");
    if(
DOF2_FileExists(DiretorioTimer(NumeroArquivo))) return SendClientMessage(playerid, -1"[ERRO] Esse timer jб existe, cria com outro nome.");
    if(
NumeroArquivo || NumeroArquivo MAX_TIMERS) return SendClientMessage(playerid, -1"[ERRO] O Numero do Arquivo tem que ser entre 1 e "#MAX_TIMERS".");
    
CriarTimer(NomeTimerNumeroArquivoSEGUNDOS_TIMER segundosrepeticao);
    
format(gstringsizeof(gstring), "[TIMER] O timer com Nome: %s, com Nъmero de Arquivo %d, %d Segundos e com repetiзгo %s foi criado."NomeTimerNumeroArquivosegundosrepeticao == ? ("Ativada") : ("Desativada"));
    
SendClientMessage(playerid, -1gstring);
    return 
1;
}
CMD:modificartimer(playeridparams[])
{
    new 
NumeroTimerpSegundos;
    if(
sscanf(params"ii"NumeroTimerpSegundos)) return SendClientMessage(playerid, -1"[ERRO] /ModificarTimer [Numero arquivo do Timer] [quantidade de segundos]");
    if(!
DOF2_FileExists(DiretorioTimer(NumeroTimer))) return SendClientMessage(playerid, -1"[ERRO] Esse Timer nгo existe no servidor.");
    if(
pSegundos || pSegundos MAX_SEGUNDOS) return SendClientMessage(playerid, -1"[ERRO] Entre 1 segundos e "#MAX_SEGUNDOS".");
    
new DOF2_GetInt(DiretorioTimer(NumeroTimer), "NumeroTimer");
    new 
AntigoSegundos DOF2_GetInt(DiretorioTimer(NumeroTimer), "Segundos");
    new 
NomeTimer[15];
    
format(NomeTimer15DOF2_GetString(DiretorioTimer(NumeroTimer), "NomeTimer"));
    new 
RepetirTimer DOF2_GetInt(DiretorioTimer(NumeroTimer), "RepetirTimer");
    
KillTimer(VariavelTimer[n]);
    
DOF2_SetInt(DiretorioTimer(NumeroTimer), "Segundos"SEGUNDOS_TIMER pSegundos);
    
DOF2_SaveFile();
    
VariavelTimer[n] = SetTimer(NomeTimerSEGUNDOS_TIMER pSegundosRepetirTimer);
    
// ---------------------------- //
    
format(gstringsizeof(gstring), "[TIMER] O Arquivo N° %s foi alterado para de %d segundos para %d segundos."SEGUNDOS_TIMER AntigoSegundospSegundos);
    
SendClientMessage(playerid, -1gstring);
    return 
1;
}
CMD:excluirtimer(playeridparams[])
{
    new 
NumeroTimer;
    if(
sscanf(params"i"NumeroTimer)) return SendClientMessage(playerid, -1"[ERRO] /ExcluirTimer [timerid]");
    if(!
DOF2_FileExists(DiretorioTimer(NumeroTimer))) return SendClientMessage(playerid, -1"[ERRO] Esse Timer nгo existe no servidor.");
    new 
DOF2_GetInt(DiretorioTimer(NumeroTimer), "NumeroTimer");
    
KillTimer(VariavelTimer[n]);
    
DOF2_RemoveFile(DiretorioTimer(NumeroTimer));
    
format(gstringsizeof(gstring), "[TIMER] O Arquivo N° %s foi excluнdo e com кxito o timer foi parado."NumeroTimer);
    
SendClientMessage(playerid, -1gstring);
    return 
1;
}
// --------------------------------------------------- //
stock CriarTimer(NomeTimer[], NumeroArquivoMiliSegundosRepetirTimer// RepetirTimer - 1: Sim || 0: Nгo Repete
{
    if(!
DOF2_FileExists(DiretorioTimer(NumeroArquivo)))
    {
        
DOF2_CreateFile(DiretorioTimer(NumeroArquivo));
        
DOF2_SetInt(DiretorioTimer(NumeroArquivo), "Segundos"MiliSegundos);
        
DOF2_SetInt(DiretorioTimer(NumeroArquivo), "NumeroTimer"NumeroArquivo);
        
DOF2_SetString(DiretorioTimer(NumeroArquivo), "NomeTimer"NomeTimer);
        
DOF2_SetInt(DiretorioTimer(NumeroArquivo), "RepetirTimer"RepetirTimer);
        
DOF2_SaveFile();
        new 
NumeroArquivo;
        
VariavelTimer[n] = SetTimer(NomeTimerMiliSegundosRepetirTimer);
        
        
// -------------------- //
        
        
printf("Timer com o Nome: %s | Arquivo ID: %d | MiliSegundos: %d | Repetiзгo de timers: %s"NomeTimerNumeroArquivoMiliSegundosRepetirTimer == ? ("Ativada") : ("Desativada"));
    }
    else
    {
        new 
milisegundos DOF2_GetInt(DiretorioTimer(NumeroArquivo), "Segundos");
        new 
DOF2_GetInt(DiretorioTimer(NumeroArquivo), "NumeroTimer");
        new 
repetirtimer DOF2_GetInt(DiretorioTimer(NumeroArquivo), "RepetirTimer");
        new 
nometimer[15];
        
format(nometimer15DOF2_GetString(DiretorioTimer(NumeroArquivo), "NomeTimer"));
        
VariavelTimer[n] = SetTimer(nometimermilisegundosrepetirtimer);
    }
    return 
1;
}
stock DiretorioTimer(Arquivo)
{
    new 
File[20];
    
format(Filesizeof(File), "/Timers/%d.ini"Arquivo);
    return 
File;

Pessoal, se tiver algo errado, avisem.
Reply
#2

Achei esse filterscript inutil, e sem nenhum sentido, e mesmo assim ficou muito mal feito.

se vocк vai aumentar ainda mais a complexidade, deve rever a necessidade disso.
Reply
#3

Melhor usar as funзхes nativas:

PHP Code:
SetTimer
SetTimerEx 
E tbm esse FS nгo faz sentido seria melhor como include.

Minha opiniгo.


Reply
#4

Pessoal, isso foi criado para o intuito de mudar o tempo dos timers In-Game, fica mais fбcil e mais prбtico.

Exemplo: eu crio um timer, e dentro desse timer eu crio um sistema, caso eu esqueзa de mudar o tempo do timer para 1000 ( 1 segundo ) , eu mudo no jogo, isso й o intuito.

Se der certo, eu faзo uma include para isso, se quiserem dar sugestхes.
Reply
#5

Bom, na minha opniгo, eu nгo vejo motivo de alterar o tempo to timer ingame...
Reply
#6

Nгo tem utilidade isso. Й muito mais simples criar um timer com chamada recursiva usando variбveis para controlar o tempo. Nгo hб necessidade de tanto cуdigo para isso.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)