←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Funkcja z lokalnym czasem

Zablokowany

  • +
  • -
Last One - zdjęcie Last One 28.12.2014

Witam. Głowię się i głowię ale nie mogę wymyśleć jakiej funkcji użyć, aby zczytać czas lokalny, czas serwera (nie użytkownika/gracza) i do tego czasu dodać 1,2,3 i 7 dni. Funkcja ta będzie miała za zadanie ustawić graczowi flagę t np w poniedziałek i za 1,2,3 lub 7 dni wyłączyć ją. Proszę o pomoc i jeśli nie w tym dziale to proszę o przeniesienie.

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 29.12.2014

get_systime zwróci czas w formie sekund od 1 stycznia 1970 roku. Wystarczy do tej liczby dodać ilość sekund odpowiadającą ilości dni (czyli 24*60*60 dla 1 dnia). Jeśli chcesz następnie wyświetlić tak uzyskany czas, możesz użyć format_time, gdzie za ostatni argument podajesz tą liczbę. Jeśli potrzebujesz przechować ten czas lub wykonać na nim dalsze operacje, polecam go nie konwertować :)
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 29.12.2014

Przy czym byłbym ostrożny, maksymalna wartość zmiennej to 1874919423, a czas od 70 roku będzie oscylował w granicach półtora miliarda, no ale to znaczy, że na następne 9 lat jest spokój :) Kwestia tylko co dalej z tym masz zamiar robić, żebyś tych sekund zbytnio nie mnożył dalej :P


Użytkownik grankee edytował ten post 29.12.2014 04:22
Odpowiedz

  • +
  • -
Last One - zdjęcie Last One 29.12.2014

Dzięki zaraz przetestuję.

Chciałem tej funkcji użyć do automatycznego vipa podczas gry. Gracz pisze np. /gra i losuje jakąś nagrodę, jeśli wypadnie mu vip to zmieni mu automatycznie flagę, i ta funkcja będzie miała za zadanie odebrać mu tego vipa za x dni.
Odpowiedz

  • +
  • -
Last One - zdjęcie Last One 29.12.2014

Myślałem też nad użyciem funkcji get_time. Co wy na to?
Odpowiedz

  • +
  • -
Last One - zdjęcie Last One 29.12.2014

Być może trzeba zastosować tu zapis nvalut. Żeby zapisywalo sobie w jakimś pliku nick gracza i datę do kiedy ma mieć flagę vip. Aby po odczytaniu z pliku i porównaniu z aktualnym czasem zmieniało flagę na zwykłego gracza.
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 29.12.2014

To chyba będzie najlepsze wyjście, w ogóle nie potrzebujesz formatować tego czasu na dzien/misiac/rok, chyba ze chcesz zeby gracz mogl sobie sprawdzic do kiedy ma. Jeśli nie to zapisujesz nvault key-nick value-czas w sekundach(po dodaniu sekund odpowiadających ilości dni przez które ma dzialac) i jak wchodzi na serwer to sprawdzasz czy zapisana wartosc jest wieksza od obecnej, jak tak dajesz vipa a jak nie to usuwasz wpis, chyba ze chcesz zostawic wpis zeby pozniej moc sprawdzic kto ile mial vipow, ale jak wylosuje ponownie to i tak sie nadpisze.

Odpowiedz

  • +
  • -
Last One - zdjęcie Last One 29.12.2014

Tak myślałem od samego początku, ażeby zastosować to nVault. To z losowaniem vipa to był przykład wymyślony na szybko. Mam zamiar użyć tego do pluginu z nagrodami dziennymi(Daily Rewards). Na pewno trzeba będzie wykorzystać nVault. Plugin to moja własna koncepcja. Zamierzam przystosować go do BF2. Ale raczej wątpie żeby udało mi się go napisać. Wiem co należy zrobić ale jak napisać kod, jakich funkcji konkretnie użyć to jest dla mnie nie zrozumiałe jeszcze, ponieważ dopiero zaczynam z pisaniem.

Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 30.12.2014

Moja rada: przeczytaj i poznaj podstawy programowania w C++, napisz kilka prostych rzeczy, potem poczytaj proste kody, zauważ różnice(drobne, ale jednak są), pisz pluginy. Tak jej mimo wszystko najszybciej, kilka/kilkanascie dni zależnie od percepcji, i bawisz sie w rozne rzeczy, piszesz rozne pluginy, na prawde warto, mnie przez tyle to kreci bo to fajna zabawa, z czasem nauczysz sie wiele, a funkcje zawsze sa do znalezienia chociazby w dokumentacji na tej stronie.

Odpowiedz

  • +
  • -
Last One - zdjęcie Last One 30.12.2014

Powoli zaczynam pisac juz pluginy i korzystam z dokumentacji ze strony. Dzięki wielkie za pomoc.

Temat do zamknięcia.
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 30.12.2014

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany