Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Sprawdzanie czasu "get_systime"


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 09.09.2011 00:47

Chciałbym za pomocą get_systime zrobić, żeby plugin sprawdzał, czy jakiś czas już minął, coś takiego jak w przypadku adminów w gm amxbans. Wiem jak przeliczyć konkretną datę na sekundy, ale miesiąc nie ma przecież zawsze 30 dni, no i właśnie tutaj nie bardzo wiem, jak ta funkcja podana wyżej radzi sobie z tą zmienną ilością dni w miesiącu... Może jednak nie trzeba patrzyć na to i każdy miesiąc mnożyć przez 30? A może jest jakaś funkcja co przelicza datę na sekundy? Oczywiście wiem też, że "get_systime" zwraca czas w sekundach od 1970 roku, czyli trzeba tyle lat odjąć od daty, którą będzie się przeliczać na sekundy.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 09.09.2011 00:58

datę w sekundach na taką czytelną dla człowieka możesz zamienić funkcją format_time
http://www.amxmodx.o...func&id=250

ostatni parametr to właśnie znacznik czasu, -1 możesz traktować jak podanie get_systime()


w drugą stronę działa funkcja parse_time http://www.amxmodx.o...func&id=252
na podstawie daty liczy ile sekund od 1970

w obu przypadkach potrzebny jest zapis formatu, przy jednej z tych funkcji jest fajna rozpiska, taki format to zwykły string tylko w miejsca na odpowiednie informacje umieszcza się te oznaczenia %CUŚ

%a abbreviated weekday name (Sun)
%A full weekday name (Sunday)
%b abbreviated month name (Dec)
%B full month name (December)
%c date and time (Dec 2 06:55:15 1979)
%d day of the month (02)
%H hour of the 24-hour day (06)
%I hour of the 12-hour day (06)
%j day of the year, from 001 (335)
%m month of the year, from 01 (12)
%M minutes after the hour (55)
%p AM/PM indicator (AM)
%S seconds after the minute (15)
%U Sunday week of the year, from 00 (48)
%w day of the week, from 0 for Sunday (6)
%W Monday week of the year, from 00 (47)
%x date (Dec 2 1979)
%X time (06:55:15)
%y year of the century, from 00 (79)
%Y year (1979)




PS samo sprawdzenie relacji dat możesz zrobić na poziomie znacznika czasu, bez przeliczania na czytelną datę

Użytkownik R3X edytował ten post 09.09.2011 01:01

  • +
  • -
  • 1

#3 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 09.09.2011 01:04

Coś post się rozwalił ^^ Może jeszcze napiszę, że aktualnie korzystam z czegoś takiego, że w jednym miejscu podaje datę wygaśnięcia (np. 2011-11-11), przerabiam to na liczbę, a potem w pluginie formatuje aktualną datę też w takim samym układzie (rok-miesiąc-dzień) i porównuje, czy jedna data jest większa od drugiej. Chciałbym to zamienić na takie coś, że podaje datę, a potem ile dni ma być coś aktywne, tak jak już pisałem, tak jak to jest w amxbansie przy korzystaniu z adminów z bazy.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 09.09.2011 01:12

No to dodawaj sekundy :)
teraz = get_systime()
teraz+minuta = get_systime() + 60;
teraz+godzina= get_systime() + 60*60;
teraz+dzień = get_systime() + 24*60*60;
teraz+10 dni = get_systime() + 10*24*60*60;
teraz+miesiąc= get_systime() + 30*24*60*60;
  • +
  • -
  • 0

#5 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 09.09.2011 01:43

Co do tego "parse_time", to mam rozumieć, że jak zrobię takie coś
new sekundy;
parse_time("2011-11-11", "%Y-%m-%d", sekundy);

to zmienna "sekundy" będzie równa sekundom ile upłynęło od 1970 roku do daty podanej w funkcji?

No to dodawaj sekundy :)
teraz = get_systime()
teraz+minuta = get_systime() + 60;
teraz+godzina= get_systime() + 60*60;
teraz+dzień = get_systime() + 24*60*60;
teraz+10 dni = get_systime() + 10*24*60*60;
teraz+miesiąc= get_systime() + 30*24*60*60;

Czyli jednak nie zwracać na to uwagi, że miesiące nie są zawsze równe?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 09.09.2011 02:01

W parse ostatni parametr jest ewentualnie dodawany do wyniku, nie ma referencji.
new sekundy = parse_time("2011-11-11", "%Y-%m-%d");


To jest kwestia umowy. Czego oczekujesz gdy ktoś mówi za miesiąc stracisz admina?
Jak nie chcesz dać na 30 dni to pobierz sam numer miesiąca w format_time() i zmień na liczbę.
Z tym możesz już zrobić dużo, np. znaleźć w tablicy ilość dni w następnym miesiącu (zobacz constraint_offset) i użyj tej wartości zamiast '30'.

Użytkownik R3X edytował ten post 09.09.2011 02:03

  • +
  • -
  • 1

#7 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 09.09.2011 17:07

Już wszystko działa, tylko teraz jak wykorzystać "format_time" do tego, aby zamienić sekundy na normalną datę?
format_time(zmienna, charsmax(zmienna), "%Y-%m-%d", ile_dni_do_konca*24*60*60);

Coś takiego?

Chyba już wiem
format_time(zmienna, charsmax(zmienna), "%Y-%m-%d", data_kiedy_sie_konczy);

To będzie coś takiego? W ostatnim parametrze podajemy sekundy, a funkcja zapisuje do zmiennej datę tych sekund?

Można zamknąć.

Użytkownik sebul edytował ten post 09.09.2011 13:04

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#8 Adminek AMXX.PL

    Admin :)

  • Bot

Reputacja: 156
Profesjonalista

  • Postów:7 489
  • Lokalizacja:AMXX.PL
Offline

Napisano 09.09.2011 17:09

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: odpowiedz udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych