[Include] Ban System [MySQL R39-4 + TextDraw]
#10

Ficou legalzinho, mas vocк pode melhorar algumas coisas, por exemplo:

Код:
stock ConvertTime(SEGUNDOS_)
{
	new MINUTOS_, HORAS_, DIAS_, String[200];
	
	if(SEGUNDOS_ > 59)
	{
	    MINUTOS_ = SEGUNDOS_ / 60;
		SEGUNDOS_ = SEGUNDOS_ - MINUTOS_ * 60;
	}
	if(MINUTOS_ > 59)
	{
	    HORAS_ = MINUTOS_ / 60;
		MINUTOS_ = MINUTOS_ - HORAS_ * 60;
	}
	if(HORAS_ > 23)
	{
	    DIAS_ = HORAS_ / 24;
		HORAS_ = HORAS_ - DIAS_ * 24;
	}
	
	format(String, sizeof(String), "%02d Dias e %02d Horas e %02d Minutos e %02d Segundos", DIAS_, HORAS_, MINUTOS_, SEGUNDOS_);
	if(DIAS_ < 1) format(String, sizeof(String), "%02d Horas e %02d Minutos e %02d Segundos", HORAS_, MINUTOS_, SEGUNDOS_);
	if(DIAS_ < 1 && HORAS_ < 1) format(String, sizeof(String), "%02d Minutos e %02d Segundos", MINUTOS_, SEGUNDOS_);
	if(DIAS_ < 1 && HORAS_ < 1 && MINUTOS_ < 1) format(String, sizeof(String), "%02d Segundos", SEGUNDOS_);
	if(DIAS_ > 3650) format(String, sizeof(String), "Permanente");
	
	return String;
}
Isso й um cуdigo feio e desnecessбrio, uma ferramenta tгo rica quanto o MySQL te traz a oportunidade de trabalhar com timestamp, veja por exemplo um cуdigo simples que fiz usando o plugin CTime Library do Ryder`:

Код:
#define DaysToSeconds(%0)	(%0 * 86400)

GetDateFromTime(timestamp)
{
	new	tm <tmStamp>, string[32];
	localtime(Time:timestamp, tmStamp);
		
	strftime(string, sizeof(string), "%d/%m/%y", tmStamp); 
	return string;
}
Entгo para um ban de 30 dias por exemplo, vocк poderia usar o timestamp:

Код:
new ban_de_30_dias = DaysToSeconds(30) + gettime();
E voilб, vocк tem o timestamp de 30 dias


Uma outra coisa que poderia ser melhorada:

Код:
switch(Ban_Type)
	{
		case PERMANENTE: mysql_format(MyConection, MySQL_Format, sizeof MySQL_Format, "INSERT INTO `"TABLE_BAN"` (`"NOME"`, `"IP"`, `"DATA"`, `"BANIDO_POR"`, `"MOTIVO"`, `"TEMPO"`) VALUES ('%s', '%s', '%s', '%s', '%s', '%i')", Player_Name, Player_IP, FormatTimeDate, Ban_By, Reason, 20 * 12 * 30 * 24 * 60 * 60 + gettime());
		case MINUTOS: mysql_format(MyConection, MySQL_Format, sizeof MySQL_Format, "INSERT INTO `"TABLE_BAN"` (`"NOME"`, `"IP"`, `"DATA"`, `"BANIDO_POR"`, `"MOTIVO"`, `"TEMPO"`) VALUES ('%s', '%s', '%s', '%s', '%s', '%i')", Player_Name, Player_IP, FormatTimeDate, Ban_By, Reason, Time * 60 + gettime());
		case HORAS: mysql_format(MyConection, MySQL_Format, sizeof MySQL_Format, "INSERT INTO `"TABLE_BAN"` (`"NOME"`, `"IP"`, `"DATA"`, `"BANIDO_POR"`, `"MOTIVO"`, `"TEMPO"`) VALUES ('%s', '%s', '%s', '%s', '%s', '%i')", Player_Name, Player_IP, FormatTimeDate, Ban_By, Reason, Time * 60 * 60 + gettime());
		case DIAS: mysql_format(MyConection, MySQL_Format, sizeof MySQL_Format, "INSERT INTO `"TABLE_BAN"` (`"NOME"`, `"IP"`, `"DATA"`, `"BANIDO_POR"`, `"MOTIVO"`, `"TEMPO"`) VALUES ('%s', '%s', '%s', '%s', '%s', '%i')", Player_Name, Player_IP, FormatTimeDate, Ban_By, Reason, Time * 24 * 60 * 60 + gettime());
	}
Jб que se trata de um cуdigo repetitivo, bastava vocк usar uma query dessas e uma prй-definiзгo de cada tipo de fуrmula a ser retornado ao multiplicar-se o timestamp obtido com o gettime, fazendo com que assim esse switch fosse desnecessбrio, e vocк sу utilizaria 1 mysql_format com a funзгo de retornar o tempo no formato correto, e entгo seu cуdigo ficaria muito mais legнvel e mais bem modelado.

Gostei da include, acho interessante que os usuбrios venham a utilizar a cada vez mais SQLite, MSSQL, MySQL, MariaDB, e atй SQLServer, parece algo bobo quando se trata de SAMP mas no mercado de trabalho saber a linguagem SQL e suas ferramentas й um grande diferencial, parabйns pela include
Reply


Messages In This Thread
Ban System [MySQL R39-4 + TextDraw] - by F1N4L - 26.05.2016, 04:53
Re: Ban System [MySQL R39-4 + TextDraw] - by LockedLucas - 26.05.2016, 11:03
Re: Ban System [MySQL R39-4 + TextDraw] - by F1N4L - 26.05.2016, 13:19
Re: Ban System [MySQL R39-4 + TextDraw] - by _Play_ - 26.05.2016, 15:26
Re: Ban System [MySQL R39-4 + TextDraw] - by F1N4L - 26.05.2016, 15:32
Re: Ban System [MySQL R39-4 + TextDraw] - by Wellington1999 - 26.05.2016, 16:31
Re: Ban System [MySQL R39-4 + TextDraw] - by F1N4L - 26.05.2016, 16:52
Re: Ban System [MySQL R39-4 + TextDraw] - by ZEDD666 - 26.05.2016, 19:19
Re: Ban System [MySQL R39-4 + TextDraw] - by F1N4L - 26.05.2016, 19:30
Re: Ban System [MySQL R39-4 + TextDraw] - by n0minal - 26.05.2016, 19:51

Forum Jump:


Users browsing this thread: 1 Guest(s)