Panowie odbiegamy od tematu
Powiedzmy że będę chciał zapisywać poziom gracza do pliku (w config/lvl.ini). Taki mały przykład:
"Sniper Elite" "13" "14440" "statystyka1" "statystyka2"...
"sebul" "15" "18888" "statystyka1" "statystyka2"...
"Seba" "11" "10000" "statystyka1" "statystyka2"...
Da się później z tego pliku odwołać do określonego nicku? Sprawdzić czy dany nick w nim widnieje?
Chciałem zrobić tak, że po wbiciu na serwer i odczytaniu lvl z bazy będzie on zapisywany w takim pliku i aktualizowany gdy dostaniemy expa.
Następnie taskiem będę sprawdzać czy gracz na serwerze jeszcze jest, jeżeli nie zapisze dane do bazy a wpis usunę.
Jeżeli takie operacje są możliwe poproszę o jakiś poradnik z dokładnym opisem jak takie zapisywanie do pliku działa (zapis wartości, sprawdzanie czy w dokumencie istnieje dana wartość (nick), usuwanie wpisów z tego pliku oraz może ilość graczy zapisanych w tym pliku).
Jeżeli nie to pomysł GwynBleidD też jest spoko:
Zapisywać dane możesz w zmiennej, tworzysz zmienną globalną o takiej długości, aby pomieściła zapytanie zapisujące 32 graczy na raz, wypełniasz ją początkiem zapytania insert, gdy gracz wyjdzie z serwera (client_disconnect) dopisujesz do zmiennej dane gracza do zapisania. Co jakiś czas (np 60 sekund), gdy dopiszesz już 32 graczy i w plugin_end dopisujesz do zapytania jego koniec, wykonujesz je, czyścisz zmienną i wpisujesz znów początek. Z tym wyjątkiem, że w plugin_end nie używasz ThreadQuery, ale metody "blokującej" (przy plugin_end tego "blokowania" nie widać, a ThreadQuery może powodować błędy)
Przed zmianą mapy zapisujesz dane użytkownika w jakimś pliku, po zmianie po 60 sekundach czyścisz plik. Wygodnie jest sobie utworzyć folder w data i w osobnych plikach trzymać dla każdego gracza dane, pliki nazywając ID gracza (nick, steamid czy ip w zależności od tego po czym sprawdzasz) + czas utworzenia pliku (wtedy wiesz kiedy go usunąć) i odpowiednio sprawdzać, czy plik istnieje gdy gracz wchodzi na serwer.
tylko ciut skomplikowany. Nie mam pomysłu jak ta duża zmienna globalna miałaby wyglądać.
Użytkownik Sniper Elite edytował ten post 27.03.2014 12:25