Opublikowano 2 Października 20231 r Cześć W tym poradniku skupimy się na komendzie do_user_horse_ride. Omówimy, jak ją nieco zmodyfikować oraz dodamy zabezpieczenie antyspamowe, aby zapobiec spowolnieniom gry spowodowanym nadużywaniem tej funkcji. Problem: Gracze często wchodzą i schodzą z koni, co przy większej ilości osób wykonujących tę operację w nadmiernej ilości, powoduje lag dla innych graczy. Chcę, aby gra działała jak najpłynniej, stąd konieczność zabezpieczenia tej komendy przed nadużyciem. Prezentacja: Omówienie rozwiązania: Zobaczmy więc wspomnianą funkcję: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Pierwszy rzut oka na funkcję ACMD(do_user_horse_ride) ukazuje warunki, które sprawdzają, czy postać jest w trybie obserwatora, czy jest martwa, czy ma nałożony stan paraliżu. Jeśli którykolwiek z tych warunków jest spełniony, funkcja jest przerywana. 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Możemy te warunki połączyć w 1 zapis w ten sposób: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Teraz zastanówmy się, co możemy zrobić dalej. Optymalizacja kodu! 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Co możemy tu zrobić? Proponuję utworzenie nowych zmiennych na początku funkcji, które jasno określą, co sprawdzamy. Na przykład: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się I zastosujmy je w powyższej instrukcji warunkowej: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Wygląda o wiele lepiej, co tu możemy jeszcze zrobić? Mamy dwa wywołania: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się A gdyby tak stworzyć funkcję, która inteligentnie przełącza stan jazdy na koniu? Tworzenie Nowej Funkcji: Utworzymy więc funkcję ToggleRiding(), która inteligentnie przełącza stan jazdy na koniu: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się A teraz użyjemy jej w naszej poprzedniej funkcji: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Tak wygląda zaktualizowany kod: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Dodanie Kontroli Antyspamowej: Na koniec dodamy kontrolę antyspamową. Stworzymy mechanizm, który zabezpieczy nas przed nadużywaniem tej funkcji, przechowując czas ostatniego wywołania i sprawdzając czy minęły już 3 sekundy od ostatniego wywołania. 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Implementacja: 📁 Lokalizacja pliku: 'game-> cmd_general.cpp' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📁 Lokalizacja pliku: 'game -> char_horse.cpp' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📁 Lokalizacja pliku: 'game -> char.h' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📁 Lokalizacja pliku: 'share -> locale - poland -> locale_string.txt' ➕ Dodaj: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się
Opublikowano 3 Listopada 20231 r Dzięki - wsumie to "psuje" starożytną taktyke gdy jeszcze marmury były nieznaną technologią. Konkretnie używając szybkiego wsiadania i zsiadania z konia "bugowalismy" animacje odlatującego bosa przez co cały czas mogliśmy zadawać mu obrażenia 😄
Opublikowano 8 Września 20248 Wrz hej tutaj też wkradł się malutki błąd w "HORSE_ANTYSPAM_TIME_%d"; "<System> Musisz odczekać jeszcze %d sekund(y), zanim będziesz mógł wykonać kolejną akcję z koniem."; zmień na: "HORSE_ANTYSPAM_TIME_%d]"; "<System> Musisz odczekać jeszcze %d sekund(y), zanim będziesz mógł wykonać kolejną akcję z koniem."; ewentualnie zmień w kodzie bo wkradł się ]
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.