Napisano 07.06.2014 22:29
Zawsze zakładaj, że wszystko. A tym bardziej to, co zmienia konfigurację gracza, dla przykładu bindy (bo np komendę connect jeszcze da się przeboleć i dziwię się valve, że ją blokują... No chyba że w celu zapobiegania "wirusom" na serwerach...).
Zmiana więc prędkości myszy gracza poprzez wykonywanie na nim komendy odpada. W inny sposób czy da się to zrobić? Można "korygować" pozycję gracza, dla przykładu gdy chcesz zwolnić gracza celownik o połowę, sprawdzasz w pre_thinku o ile pozycja jego celownika się zmieniła w porównaniu do poprzedniego thinka i "ucinasz" ją o połowę. Pamiętaj tylko, że jeśli się zmieniła o 1 jednostkę to nie możesz za każdym razem zmieniać tego na 0, bo zablokujesz celownik gracza całkowicie (a think może się wykonywać na tyle szybko, że każda zmiana będzie rejestrowana o 1 jednostkę). Sprytnym rozwiązaniem na to jest flaga "połówek". Zmieniasz jej stan w momencie, gdy różnica w położeniu jest wyrażona liczbą nieparzystą i dzielisz tą liczbę na pół. Jednak zaokrąglasz po podzieleniu o 1 w górę lub o 1 w dół w zależności od stanu flagi, przez co przy ruchach o 1 jednostkę blokujesz co 2 zmianę, dzięki czemu zachowana jest jako taka płynność ruchu.
Jednak takie mieszanie z pozycją celownika może doprowadzić albo do migania u gracza ekranu gdy porusza się bardzo szybko (bo najpierw gra po jego stronie przeliczy pozycję po swojemu, a następnie serwer prześle informację, że pozycja ma być inna i nastąpi "przeskok"), albo celownik na ekranie gracza będzie w innym miejscu, niż na serwerze (bo serwer i klient się "rozsynchronizują"). Może też wcale nie zadziałać albo do prawidłowej zmiany potrzebować orpheu, ciężko to przewidzieć bez dokładnego badania w jaki sposób jest pozycja celownika obliczana i korygowana po stronie klienta jak i serwera.
-
-
-
2
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.