[Ajuda] getdate + x dias
#1

Estou tentando fazer um sistema de banimento, quero salvar em uma string o dia em que o player serб desbanido.
Mas nгo estou conseguindo fazer essa parte. Quero fazer da seguinte forma: Dia/Mкs/Ano, eu sei pegar a data atual, mas quero saber como somar o nъmero de dias do ban a essa data.
Exemplo:

Eu bani o player hoje(05/06/2015), o banimento foi de 30 dias, ai quero saber que dia vai ser o desban, teria que ser 05/07/2015, mas o ъnico jeito que sei fazer, o resultado daria 35/06/2015.
Reply
#2

Й melhor usar gettime. Alйm de ser mais rбpido dб menos trabalho.
Reply
#3

Vocк pode usar timestamp: https://sampforum.blast.hk/showthread.php?tid=254915
Reply
#4

Uso este sistema no meu servidor (baseado em MySQL R39+), vou parar de usar isso e comeзar a usar o plugin CTime do Ryderґ...

De qualquer forma, vocк pode usar como uma base caso nгo queira usar o plugin CTime Library.

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

GetDateFromTime(timestamp, string[32])
{
	new query[128];
	mysql_format(MySQL, query, 128, "SELECT FROM_UNIXTIME(%d,'%d/%m/%y')", timestamp);
	new Cache:mysql_query(MySQL, query, true);
	cache_get_row(0, 0, string);
	return 1;
}
Exemplo de uso:

Код:
CMD:ban(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return 0; new player, days; if(!sscanf(params, "ud", player, days)) return SendClientMessage(playerid, -1, "Uso correto: /ban <playerid/nome><dias> new unbandate = DaysToSeconds(days) + gettime()); //aqui vocк salva o unbandate, player etc...
}
Код:
public OnPlayerConnect(playerid)
{
//aqui vocк checa se o player estб banido. {
new string[128]; format(string, 128, "Vocк estб banido atй o dia %s", GetDateFromTime(VariavelQueVocкSalvouOUnbanDate)); SendClientMessage(playerid, -1, string)
return Kick(playerid); }
}
Reply
#5

Uma soluзгo bem simples й utilizar da seguinte forma : getdate();

A funзгo dessa forma te mostra a quantidade de dias desde o inнcio do ano.
Ex: Se hoje getdate = 10, amanhг serб 11.

Com algumas modificaзхes vocк terб um sistema 100% funcional.
PS: Dб pra criar uma funзгo que transforme esse getdate em DD/MM/AAAA, para que vocк possa exibir aos jogadores uma data, em vez de um nъmero como o citado acima.
Reply
#6

Quote:
Originally Posted by ViniBorn
Посмотреть сообщение
Uma soluзгo bem simples й utilizar da seguinte forma : getdate();

A funзгo dessa forma te mostra a quantidade de dias desde o inнcio do ano.
Ex: Se hoje getdate = 10, amanhг serб 11.

Com algumas modificaзхes vocк terб um sistema 100% funcional.
PS: Dб pra criar uma funзгo que transforme esse getdate em DD/MM/AAAA, para que vocк possa exibir aos jogadores uma data, em vez de um nъmero como o citado acima.
Com timestamp o MySQL automaticamente retorna a string formatada em dia/mкs/ano como pedi no formato da query 'd/m/y':

Exemplo do meu script como fica (no padlock/cadeado):

Reply
#7

Tem alguns filterscripts, basta procurar que vocк acha uma base...
http://forum.sa-mp.com/showthread.ph...22#post1205522
https://sampforum.blast.hk/showthread.php?tid=477391
Este ъltimo ai eu recomendo.
Reply
#8

@ViniBorn
Isso nгo ia dar problema se desse ban em alguem no ultimo dia do ano?

@ipsLeon
Desculpe, nгo consegui entender direito o cуdigo

@Tуpico
Entrei no link do zSuYaNw e vi sobre Unix timestamps, ao pesquisar no ****** sobre isso para tentar achar um tуpico em portuguкs, achei isso: https://sampforum.blast.hk/showthread.php?tid=347605

Agora o sistema funciona: http://i.imgur.com/j4iTasf.jpg

Obrigado a todos
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)