Szerző Téma: Timerek  (Megtekintve 1271 alkalommal)

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Timerek
« Dátum: 2015. Augusztus 17. - 09:37:45 »
0
Sziasztok!
Az lenne a kérdésem, hogy a timerek mennyire megerőltetőek a szervernek?
Jelenleg úgy van, hogy a játékos fellép elindítja a timerjeit, ha lelép, akkor leállítja. De ez nem annyira biztonságos, mert ha valaki crashel, akkor ahogy észrevettem, a szervernek nincs ideje leállítani, és a következő játékos aki fellép, az két timert kap (bár ezt közben szerintem megoldottam)
Szóval az lenne a kérdésem, hogy jó megoldás-e az, hogy a szerver indulásakor az összes játékos összes timerét megcsinálom, de az egészet egy nagy if-be rakom, és így a timer \"veleje\" nem fut le, csak ha online a játékos.
Tudom, eléggé barbár megoldás, de kíváncsi vagyok, mert ha most se oldódna meg a probléma, akkor kipróbálnám ezt a megoldást.

Timerek
« Válasz #1 Dátum: 2015. Augusztus 17. - 10:38:51 »
0
Amikor indul a mod akkor csináéj egy timert, abban meg for ciklussal végigmész a playereken, ha online akkor csinálja amit akarsz (remélem érted mire gondoltam, fáradt vagyok még xD)

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Timerek
« Válasz #2 Dátum: 2015. Augusztus 17. - 11:10:00 »
0
Erre is gondoltam, de nem tudom, hogy melyik a legjobb megoldás.
Hogyha van fent 30 játékos, akkor nem fog laggolni a szerver, hogy mind a harmincnak egy pillanatban menti el a szerver az adatait az adatbázisba?
« Utoljára szerkesztve: 2015. Augusztus 17. - 11:26:22 írta tudvari »

Timerek
« Válasz #3 Dátum: 2015. Augusztus 17. - 12:25:27 »
0
Ha egy kicsit is laggoltat az az 1 timer, nem annyira mint playerenként több.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Timerek
« Válasz #4 Dátum: 2015. Augusztus 17. - 12:48:34 »
0
Nem a timertől félek, hanem az 1 másodperc alatt lejátszódó 30*10 sql lekérdezés miatt. Bár csak update-k, de azok is megerőltetőek tudnak lenni.

Timerek
« Válasz #5 Dátum: 2015. Augusztus 17. - 22:19:23 »
0
Minek másodpercenként menteni az adatokat? Elég kilépésnél, max 10 percenként kéne attól függetlenül. Az hogy másodpercenként 30*10 sql lefut, hát nemtudom, lehet laggoltat, mi lenne ha egy pInfo[playerid][Mentes] (vagy ahogy van a playereknek az enum-od) és az kap mp-nként 1-et, ha eléri a 600-at (10p) akkor lementi sql-be és 0-zódik, így nem fog annyira lagoltatni, és max egy kis eltérés lesz ha crashel, de akár leviheted 5p-re is (300mp). Ezzel megmarad a biztonság, és elmegy a lag.
Spoiler for OFF:
Nem is gondoltam volna, hogy valamikor annak fogok segíteni, akitől tanultam scriptelni :)

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Timerek
« Válasz #6 Dátum: 2015. Augusztus 17. - 22:28:25 »
0
Az időzítők használatát ne mentésekre használd hanem fontosabb dolgokra. Például, én régen amikor írtam nagyobb dolgokat a szerverbe és menteni akartam akkor azt simán abba a sorba külön MySQL sorba megírtam és azt az egy dolgot mentettem. Most képzeld el, minden másodpercben 30 játékosnak az adatait lementeni mennyi terhelés? sok, nem ajánlom. Ha tudsz elég jól szkriptelni akkor gondolkozz mielőtt megírod a kódot, de én minden másodpercben nem mentenék adatokat időzítővel, max minden 1 órában. ( szintlépéskor )

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Timerek
« Válasz #7 Dátum: 2015. Augusztus 18. - 01:25:11 »
0
A mentés jelenleg 3 percenként van (szerver leállás esetén nem akarok túl nagy rollbacket), és van még másik kettő timer, az egyik a percenkénti dolgokat intézi, a másik a másodpercenkénti.

Timerek
« Válasz #8 Dátum: 2015. Augusztus 18. - 10:44:05 »
0
if(!IsPlayerConnected(playerid)) KillTimer(valami[playerid]); // Bocsi teló..

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Timerek
« Válasz #9 Dátum: 2015. Augusztus 18. - 17:02:38 »
0
Ezt már megvolt :D

Timerek
« Válasz #10 Dátum: 2015. Augusztus 18. - 23:12:49 »
0
Próbáld ki amiket írtam. Azokkal jóval tudod csökkenteni a lag mértékét(ha más nem lagoltat el is tűnhet).

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Timerek
« Válasz #11 Dátum: 2015. Augusztus 18. - 23:47:50 »
0
Nem a laggal van a baj. Hanem a biztonsággal eddig, de már megoldottam közben, csak gondoltam akkor már meghallgatom a tippeiteket.
Na mindegy, zárom, a tippeket meg megjegyeznem. Köszi :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal