hlmod.hu
https://hlmod.hu/

Az idő akkor is teljen ha nem vagyok fent
https://hlmod.hu/viewtopic.php?f=9&t=30463
Oldal: 1 / 3

Szerző:  Alekvar [ 2020.06.10. 18:53 ]
Hozzászólás témája:  Az idő akkor is teljen ha nem vagyok fent

Sziasztok, hogyan lehet azt megoldani, hogy az idő akkor teljen, ha nem vagyok fent a szerveren?

Készítettem egy kiegészítőt amit csak 1 napra tudnak megvenni, de az a baj, hogy csak akkor telik ha fent van, hogyan tudnam azt megoldni, hogy akkor is teljen ha nem van fent a szerveren?

Szerző:  Vieni [ 2020.06.11. 21:55 ]
Hozzászólás témája:  Re: Az idő akkor is teljen ha nem vagyok fent

Kód:
new gItemTime = get_systime() + 86400 // 1 nap másodpercekben

if(gItemTime >= get_systime())
     // Megvan az item
else
     // Nincs meg az item

Szerző:  Alekvar [ 2020.06.12. 17:59 ]
Hozzászólás témája:  Re: Az idő akkor is teljen ha nem vagyok fent

Vieni írta:
Kód:
new gItemTime = get_systime() + 86400 // 1 nap másodpercekben

if(gItemTime >= get_systime())
     // Megvan az item
else
     // Nincs meg az item


Csináltam egy Vip rendszert is mellé, de ez is csak akkor vonja ha fent vagyok a szerveren.

  1. public vipEllenorzese1_0(id)
  2. {
  3.     if(Vipideje[id] >= 10) VanVip[id] = 1;
  4.     else VanVip[id] = 0;
  5. }


Mentés:
  1. Len += formatex(Query[Len], charsmax(Query)-Len, "VipIdeje = ^"%i^", ", Vipideje[id]-get_user_time(id));


Vagy itt a mentésnél kellene nekem a get_user_time helyére a get_systime-t?

Szerző:  Vieni [ 2020.06.17. 02:17 ]
Hozzászólás témája:  Re: Az idő akkor is teljen ha nem vagyok fent

A get_systime rendszeridő másodpercekben. Nem kell levonni semmit, szimplán csak a get_systime-hoz hozzáadott időt menteni és betölteni, majd ellenőrzéskor megnézni, hogy túllépte-e már a rendszeridő azt az időt.

Szerző:  Alekvar [ 2020.06.18. 13:45 ]
Hozzászólás témája:  Re: Az idő akkor is teljen ha nem vagyok fent

Vieni írta:
A get_systime rendszeridő másodpercekben. Nem kell levonni semmit, szimplán csak a get_systime-hoz hozzáadott időt menteni és betölteni, majd ellenőrzéskor megnézni, hogy túllépte-e már a rendszeridő azt az időt.


Egy példát tudnál mutatni?

Hozzá adtam így:

  1. Vipideje[id]  = get_systime() +  60*60*24*1;


És amikor lekértem a szerveren (idő , nap óra perc mp.) akkor teljesen rossz időt adott ki. (pl: 1140 nap) amikor 1 napot adtam hozzá.

Szerző:  Vieni [ 2020.06.18. 16:22 ]
Hozzászólás témája:  Re: Az idő akkor is teljen ha nem vagyok fent

Ügye a get_systime() másodpercenként egyel növekszik, így szimplán viptime[id] - get_systime() lesz a hátralévő idő. Logikusan ha minuszra jön ki, akkor már nem érvényes.

Kód:
viptime[id] = get_systime() + 60*60*24 // 1napra adás
 
 Pl. pontosan egy óra múlva lekérjük:
 viptime[id] - get_systime() = 60*60*23 //
 
 Még öt óra múlva..
 viptime[id] - get_systime() = 60*60*18
 
 Ezzel nézed meg, hogy rendelkezik-e vele:
 if(viptime[id] >= get_systime())
    //rendelkezik a vippel
 else
    //nincs vipje
 


Még két dolog megjegyezhető, az egyik, hogy ha azt szeretnéd, hogy ha rendelkezik már vele valaki, ne felülírja, de hosszabbítsa, ezt a kódot használhatod:
Kód:
if(viptime[id] >= get_systime())
    viptime[id] += 60*60*24// 1napos hosszabbítás
 else
    viptime[id] = get_systime() + 60*60*24 // Mostantóli egynapos adás


A másik pedig hogy ez rendszeridőt kér le másodpercekben. Szóval ha a szervergépen visszatekered az órát, akkor itt is kisebb lesz a get_systime(), ha előre, akkor nagyobb.(Csúszások lehetnek időzónákban, ha pontos dátumot akarsz kiíratni, hogy meddig van meg pl.)

Szerző:  Alekvar [ 2020.06.25. 14:56 ]
Hozzászólás témája:  Re: Az idő akkor is teljen ha nem vagyok fent

Vieni írta:
Ügye a get_systime() másodpercenként egyel növekszik, így szimplán viptime[id] - get_systime() lesz a hátralévő idő. Logikusan ha minuszra jön ki, akkor már nem érvényes.

Kód:
viptime[id] = get_systime() + 60*60*24 // 1napra adás
 
 Pl. pontosan egy óra múlva lekérjük:
 viptime[id] - get_systime() = 60*60*23 //
 
 Még öt óra múlva..
 viptime[id] - get_systime() = 60*60*18
 
 Ezzel nézed meg, hogy rendelkezik-e vele:
 if(viptime[id] >= get_systime())
    //rendelkezik a vippel
 else
    //nincs vipje
 


Még két dolog megjegyezhető, az egyik, hogy ha azt szeretnéd, hogy ha rendelkezik már vele valaki, ne felülírja, de hosszabbítsa, ezt a kódot használhatod:
Kód:
if(viptime[id] >= get_systime())
    viptime[id] += 60*60*24// 1napos hosszabbítás
 else
    viptime[id] = get_systime() + 60*60*24 // Mostantóli egynapos adás


A másik pedig hogy ez rendszeridőt kér le másodpercekben. Szóval ha a szervergépen visszatekered az órát, akkor itt is kisebb lesz a get_systime(), ha előre, akkor nagyobb.(Csúszások lehetnek időzónákban, ha pontos dátumot akarsz kiíratni, hogy meddig van meg pl.)


Hozzá adtam így és kb 1440 napra adta meg a vipet, mi lehet a baj?

Szerző:  Vieni [ 2020.06.27. 13:58 ]
Hozzászólás témája:  Re: Az idő akkor is teljen ha nem vagyok fent

Valamit elírtál valszeg xd

Szerző:  Alekvar [ 2020.06.27. 14:03 ]
Hozzászólás témája:  Re: Az idő akkor is teljen ha nem vagyok fent

Vieni írta:
Valamit elírtál valszeg xd

  1. Vipideje[id] = get_systime() + 60*60*24*2 // Így adom hozzá.


Mit irtam el ?

Szerző:  Vieni [ 2020.06.27. 14:12 ]
Hozzászólás témája:  Re: Az idő akkor is teljen ha nem vagyok fent

Alekvar írta:
Vieni írta:
Valamit elírtál valszeg xd

  1. Vipideje[id] = get_systime() + 60*60*24*2 // Így adom hozzá.


Mit irtam el ?


Ellenörzés, mentés vagy beolvasás?

Oldal: 1 / 3 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/