critical

Wylogowany Nazwa nicku: [PSi]critical
Dołączył: 23 Lip 2017 Posty: 102 Skąd: Radom
|
Wysłany: 2018-05-08, 21:00 Jak nie tracić statystyk na serwerze SA:MP?
|
|
|
Jak nie stracić statystyk na serwerze?
Witam. Jak wszyscy wiemy - nikt z nas nie jest robotem i nie wiadomo, jak serwer będzie działać przez cały czas, gdy jest włączony. Niestety, czasem dochodzi do sytuacji, gdzie serwer się wyłącza. Wtedy gracze narzekają, że tracą swoje statystyki.
Nikt z nas nie jest bogiem i nie wie, co kryje się pod zdaniem "server crashed due to an unknown error". Po polsku "crash serwera z powodu nieznanego błędu".
Jak ktoś powie mi, przez co serwer został wyłączony po tej wiadomości, dam mu 30k respektu.
My, jako administracja, nie mamy zbyt wielkiego wpływu na ten crash. Nikt nie wie, co jest jego przyczyną. Są crashe, w których wyświetla się dokładna linijka, w której znajduje się winowajca. Między innymi dzięki temu zostały naprawione obiekty domowe w v1.1a.
Teraz nasuwa się pytanie - co zrobić, aby nasze statystyki były bezpieczne?
Podzielmy to na dwie kategorie: Statystyki gracza oraz statystyki prywatnego pojazdu.
Serwer zapisuje swoje wszystkie statystyki w tzw. bazie danych. Baza danych, to taki "zbiór" wszystkich danych, jakie są na serwerze.
Konta graczy i prywatne pojazdy są niezależne od siebie i są przechowywane w oddzielnych tabelach.
Czasami więc może zajść sytuacja, podczas której graczowi zapiszą się dane, typu respekt, przegrane godziny, a nie zapisze mu się przebieg w prywatnym pojeździe.
Zapis statystyk gracza
Weźmy sobie taką sytuację. Wchodzę sobie rano na serwer. Przy ostatnim wyjściu uzbierałem 8610 respektu oraz przegrałem łącznie 28h 46m.
Po kilku minutach uzbierałem 12 respektu i muszę już iść z serwera. Chcę jednak, aby moje statystyki były bezpieczne i nic się z nimi nie stało nawet, gdyby serwer miał dostać crasha. Co w takiej sytuacji?
Wpisujemy magiczną komendę zwaną /sv. Po wpisaniu tej komendy statystyki Waszego konta (nie privcara) są bezpieczne w 100%.
Widzę komunikat na czacie - "Statystyki zapisane pomyślnie." - i to się zgadza w 100% z prawdą.
Sprawdźmy teraz dane w bazie danych, czyli w jedynym miejscu, gdzie serwer przekazuje informacje o Waszych kontach i innych elementach.
Respekt się zapisał, ale czemu nie zapisał się czas gry? Otóż z przyczyn technicznych czas gry zapisuje się po wyjściu gracza z serwera, lub gdy dostanie on crasha/timeouta/kicka/bana.
Wyjdźmy więc i sprawdźmy, czy coś się zmieniło.
Jak widać czas gry powiększył się o 10 minut, czyli dokładnie o tyle, ile przegrałem w ciągu tej sesji, co widać na screenie z gry wyżej.
Zapis statystyk prywatnego pojazdu
Tutaj sprawa wygląda nieco inaczej. Automatyczny zapis prywatnych pojazdów jest tylko w jednym momencie - o godzinie 3:11. Niestety zdarzyć się mogą sytuacje (takie jak w dniu pisania tego poradnika), że serwer dostanie crasha o godzinie 19:52. I co wtedy? Ostatni zapis statystyk prywatnych pojazdów był z godziny 3:11. Można sobie więc uzmysłowić, że jeśli nie użyłeś ani razu /p > Zaparkuj/Zapisz w przedziale od 3:11 do 19:52, to swój przebieg nabity w tym czasie straciłeś bezpowrotnie. Co też więc należy robić, aby przebieg zapisać przed 3:11?
Spójrzmy ponownie do bazy danych - teraz do prywatnych pojazdów.
Dla wyjaśnienia: ID mojego pojazdu to 9, ownerid wskazuje na uid właściciela pojazdu. W moim wypadku jest to 0, bo moje konto ma userid 0. W bazach danych mówi się na to relacje. Wartość userid z tabeli z kontami jest połączona z wartością ownerid z tabeli z privcarami.
Spójrzmy, że mam w bazie zapisane 693.1km przebiegu. Tyle bym miał, gdyby teraz niespodziewanie padł serwer. W międzyczasie jednak nabiłem na serwerze kilka km.
Jednak w bazie nadal jest informacja, że posiadam 693.1km przebiegu. Serwer po ponownym włączeniu po crashu nie będzie wiedział, że miałem już ponad 700km przebiegu, bo jedynym miejscem, gdzie przechowywane są informacje jest właśnie baza danych, w której posiadam 693.1km przebiegu. Co więc zrobić, aby wymusić zapis aktualnego przebiegu?
Jest kilka opcji:
a) Drogówka może zapisać Twój pojazd w nowym miejscu swoją komendą.
b) Możesz schować swój pojazd do checkpointu na /parking.
c) Możesz wpisać komendę /p, po czym wybrać opcję Zaparkuj/Zapisz.
Przedstawię zapis na przykładzie opcji c.
Po tej czynności sprawdzam dane o moim privcarze w bazie danych.
Jak widzimy, mój przebieg został zaktualizowany. Teraz po ponownym włączeniu serwera będę miał dokładnie tyle przebiegu ile mam teraz w bazie danych, czyli 702.5km.
Widać więc, że te czynności nie są trudne, a pomogą nam uniknąć niepotrzebnych nerwów związanych ze stratą czegokolwiek. Polecam wyrobienie sobie nawyku do używania tych dwóch opcji, bo niby jest autozapis co jakiś czas, ale lepiej jest zrobić to ręcznie i mieć pewność, że nic nam nie zginie. Przykład kont bankowych: Mając pieniądze na koncie nigdy nie wiesz, co się może z nimi stać, a mając gotówkę przy sobie jesteś pewien, że faktycznie ją masz. |
|
|
|
Copyright © 2017 - - Polski Serwer Imprezy - Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody Administracji i autorów tematów/postów jest zabronione!
|
|