GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: tudvari - 2015. Augusztus 17. - 09:37:45

Cím: Timerek
Írta: tudvari - 2015. Augusztus 17. - 09:37:45
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.
Cím: Timerek
Írta: norbinator09 - 2015. Augusztus 17. - 10:38:51
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)
Cím: Timerek
Írta: tudvari - 2015. Augusztus 17. - 11:10:00
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?
Cím: Timerek
Írta: norbinator09 - 2015. Augusztus 17. - 12:25:27
Ha egy kicsit is laggoltat az az 1 timer, nem annyira mint playerenként több.
Cím: Timerek
Írta: tudvari - 2015. Augusztus 17. - 12:48:34
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.
Cím: Timerek
Írta: norbinator09 - 2015. Augusztus 17. - 22:19:23
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.
Nem is gondoltam volna, hogy valamikor annak fogok segíteni, akitől tanultam scriptelni :)
Cím: Timerek
Írta: ZyZu. - 2015. Augusztus 17. - 22:28:25
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 )
Cím: Timerek
Írta: tudvari - 2015. Augusztus 18. - 01:25:11
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.
Cím: Timerek
Írta: .random. - 2015. Augusztus 18. - 10:44:05
if(!IsPlayerConnected(playerid)) KillTimer(valami[playerid]); // Bocsi teló..
Cím: Timerek
Írta: tudvari - 2015. Augusztus 18. - 17:02:38
Ezt már megvolt :D
Cím: Timerek
Írta: norbinator09 - 2015. Augusztus 18. - 23:12:49
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).
Cím: Timerek
Írta: tudvari - 2015. Augusztus 18. - 23:47:50
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