Skocz do zawartości

Dołącz do społeczności Sharegon

Odkryj świat technologii, gier i programowania w Sharegon.pl 🚀

Czy jesteś pasjonatem nowych technologii, zapalonym graczem, czy aspirującym programistą? Nasza społeczność jest miejscem dla Ciebie! Tutaj możesz dzielić się swoimi pomysłami, uczestniczyć w ekscytujących dyskusjach i uczyć się od ekspertów w dziedzinie. Zdobywaj osiągnięcia, buduj swoją reputację i rywalizuj z innymi entuzjastami.

Twoja wiedza i umiejętności mogą wzbogacić naszą społeczność. Stań się częścią Sharegon! 🧩🌐

header

Rekomendowane odpowiedzi

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:

horse_time.gif

 

 

Omówienie rozwiązania:

Zobaczmy więc wspomnianą funkcję:

🔐 Ukryta Treść 🔐

 

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ść 🔐

 

Możemy te warunki połączyć w 1 zapis w ten sposób:

🔐 Ukryta Treść 🔐

 

 

Teraz zastanówmy się, co możemy zrobić dalej.

 

 

Optymalizacja kodu!

🔐 Ukryta Treść 🔐

 

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ść 🔐

 

I zastosujmy je w powyższej instrukcji warunkowej:

🔐 Ukryta Treść 🔐

 

Wygląda o wiele lepiej, co tu możemy jeszcze zrobić?

Mamy dwa wywołania:

🔐 Ukryta Treść 🔐

 

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ść 🔐

 

A teraz użyjemy jej w naszej poprzedniej funkcji:

🔐 Ukryta Treść 🔐

 

Tak wygląda zaktualizowany kod:

🔐 Ukryta Treść 🔐

 

 

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ść 🔐

 

 

Implementacja:

📁 Lokalizacja pliku: 'game-> cmd_general.cpp'

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień:

🔐 Ukryta Treść 🔐

 

 

📁 Lokalizacja pliku: 'game -> char_horse.cpp'

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 Dodaj:

🔐 Ukryta Treść 🔐

 

 

📁 Lokalizacja pliku: 'game -> char.h'

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 Dodaj:

🔐 Ukryta Treść 🔐

 

 

📁 Lokalizacja pliku: 'share -> locale - poland -> locale_string.txt'

 

 Dodaj:

🔐 Ukryta Treść 🔐

 

  • Lubię 9
  • Dzięki 1
  • Serce 2
  • Lubię 9
  • Dzięki 1
  • Serce 2
  • Sevence zmienił(a) tytuł na Naprawiono błąd powodujący opóźnienia, wywołany częstym wsiadaniem i zsiadaniem z konia
  • Sevence zmienił(a) tytuł na Naprawa błędu powodującego opóźnienia, wywołany częstym wsiadaniem i zsiadaniem z konia

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 😄

hej tutaj też wkradł się malutki błąd w 

 

🔐 Ukryta Treść 🔐

 

zmień na:

🔐 Ukryta Treść 🔐

 

 

ewentualnie zmień w kodzie bo wkradł się 

 

🔐 Ukryta Treść 🔐

 

  • Lubię 5
  • Lubię 5

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ą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...