20.02.2019, 01:19
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
CУDIGO COMPLETO:
Pessoal, se tiver algo errado, avisem.
Ele foi criado com o intuito de modificar o tempo dos timers in-game.
STOCKS NECESSБRIAS
PHP Code:
stock CriarTimer(NomeTimer[], NumeroArquivo, MiliSegundos, RepetirTimer) // 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 n = NumeroArquivo;
VariavelTimer[n] = SetTimer(NomeTimer, MiliSegundos, RepetirTimer);
// -------------------- //
printf("Timer com o Nome: %s | Arquivo ID: %d | MiliSegundos: %d | Repetiзгo de timers: %s", NomeTimer, NumeroArquivo, MiliSegundos, RepetirTimer == 1 ? ("Ativada") : ("Desativada"));
}
else
{
new milisegundos = DOF2_GetInt(DiretorioTimer(NumeroArquivo), "Segundos");
new n = DOF2_GetInt(DiretorioTimer(NumeroArquivo), "NumeroTimer");
new repetirtimer = DOF2_GetInt(DiretorioTimer(NumeroArquivo), "RepetirTimer");
new nometimer[15];
format(nometimer, 15, DOF2_GetString(DiretorioTimer(NumeroArquivo), "NomeTimer"));
VariavelTimer[n] = SetTimer(nometimer, milisegundos, repetirtimer);
}
return 1;
}
stock DiretorioTimer(Arquivo)
{
new File[20];
format(File, sizeof(File), "/Timers/%d.ini", Arquivo);
return File;
}
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", 1, 5000, 1); // Vai criar o Timer 'UparTodos' com o Nъmero de Arquivo '1', com 5 segundos de timer, e com repetiзгo.
CriarTimer("MudarClima", 2, 5000, 1);
return 1;
}
forward UparTodos();
public UparTodos()
{
}
forward MudarClima();
public MudarClima()
{
}
CMD:criartimer(playerid, params[]) // Recomendado criar pelo OnGameModeInit mesmo.
{
new NomeTimer[15], NumeroArquivo, segundos, repeticao;
if(sscanf(params, "s[15]iii", NomeTimer, NumeroArquivo, segundos, repeticao))
{
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 < 1 || segundos > MAX_SEGUNDOS) return SendClientMessage(playerid, -1, "[ERRO] O mбximo de segundos й "#MAX_SEGUNDOS".");
if(repeticao != 0 && 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 < 1 || NumeroArquivo > MAX_TIMERS) return SendClientMessage(playerid, -1, "[ERRO] O Numero do Arquivo tem que ser entre 1 e "#MAX_TIMERS".");
CriarTimer(NomeTimer, NumeroArquivo, SEGUNDOS_TIMER * segundos, repeticao);
format(gstring, sizeof(gstring), "[TIMER] O timer com Nome: %s, com Nъmero de Arquivo %d, %d Segundos e com repetiзгo %s foi criado.", NomeTimer, NumeroArquivo, segundos, repeticao == 1 ? ("Ativada") : ("Desativada"));
SendClientMessage(playerid, -1, gstring);
return 1;
}
CMD:modificartimer(playerid, params[])
{
new NumeroTimer, pSegundos;
if(sscanf(params, "ii", NumeroTimer, pSegundos)) 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 < 1 || pSegundos > MAX_SEGUNDOS) return SendClientMessage(playerid, -1, "[ERRO] Entre 1 segundos e "#MAX_SEGUNDOS".");
new n = DOF2_GetInt(DiretorioTimer(NumeroTimer), "NumeroTimer");
new AntigoSegundos = DOF2_GetInt(DiretorioTimer(NumeroTimer), "Segundos");
new NomeTimer[15];
format(NomeTimer, 15, DOF2_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(NomeTimer, SEGUNDOS_TIMER * pSegundos, RepetirTimer);
// ---------------------------- //
format(gstring, sizeof(gstring), "[TIMER] O Arquivo N° %s foi alterado para de %d segundos para %d segundos.", SEGUNDOS_TIMER / AntigoSegundos, pSegundos);
SendClientMessage(playerid, -1, gstring);
return 1;
}
CMD:excluirtimer(playerid, params[])
{
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 n = DOF2_GetInt(DiretorioTimer(NumeroTimer), "NumeroTimer");
KillTimer(VariavelTimer[n]);
DOF2_RemoveFile(DiretorioTimer(NumeroTimer));
format(gstring, sizeof(gstring), "[TIMER] O Arquivo N° %s foi excluнdo e com кxito o timer foi parado.", NumeroTimer);
SendClientMessage(playerid, -1, gstring);
return 1;
}
// --------------------------------------------------- //
stock CriarTimer(NomeTimer[], NumeroArquivo, MiliSegundos, RepetirTimer) // 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 n = NumeroArquivo;
VariavelTimer[n] = SetTimer(NomeTimer, MiliSegundos, RepetirTimer);
// -------------------- //
printf("Timer com o Nome: %s | Arquivo ID: %d | MiliSegundos: %d | Repetiзгo de timers: %s", NomeTimer, NumeroArquivo, MiliSegundos, RepetirTimer == 1 ? ("Ativada") : ("Desativada"));
}
else
{
new milisegundos = DOF2_GetInt(DiretorioTimer(NumeroArquivo), "Segundos");
new n = DOF2_GetInt(DiretorioTimer(NumeroArquivo), "NumeroTimer");
new repetirtimer = DOF2_GetInt(DiretorioTimer(NumeroArquivo), "RepetirTimer");
new nometimer[15];
format(nometimer, 15, DOF2_GetString(DiretorioTimer(NumeroArquivo), "NomeTimer"));
VariavelTimer[n] = SetTimer(nometimer, milisegundos, repetirtimer);
}
return 1;
}
stock DiretorioTimer(Arquivo)
{
new File[20];
format(File, sizeof(File), "/Timers/%d.ini", Arquivo);
return File;
}