W tym poradniku pokażę, jak dodać dodatkowy parametr do pliku CONFIG, który pozwoli Ci na dynamiczne zarządzanie globalnym chatem. Ale to nie wszystko! Przeprowadziłem również przegląd kodu odpowiedzialnego za tę funkcję, zoptymalizowałem go i przedstawiam swoje spostrzeżenia. Dzięki temu zyskasz nie tylko możliwość kontroli nad globalnym chatem, ale także zrozumiesz jak działa ta część kodu.
W sieci jest wiele poradników na ten temat jednak w tym jako bonus zoptymalizujemy struct FuncShout. Bez przedłużania, zaczynajmy.
Kontekst:
Oryginalnie chat w grze jest podzielony pomiędzy królestwami. Na przykład, jeśli piszesz wiadomość w królestwie Jinno, gracz w królestwie Shinsoo nie zobaczy tego, co napisałeś. W sytuacji, gdy masz włączony tryb testowy i jesteś traktowany jako GM, widzisz oba chaty.
Cel zmian:
Chcemy dodać możliwość określenia, czy chcemy włączyć globalny chat dla wszystkich graczy, nie tylko dla GM. To pozwoli na lepszą kontrolę nad komunikacją w grze.
Zaczynajmy...
Dodawanie nowej zmiennej do pliku konfiguracyjnego 'config.h'
Otwórz plik 'config.h' i na samym końcu dodaj nową zmienną, która będzie reprezentować stan globalnego chatu, najlepiej aby nazwa zmiennej oddawała jej przeznaczenie.
Teraz pora na obsługę odczytywania nowego parametru.
Szukamy miejsca w kodzie, gdzie obsługiwany jest parametr, pod którym wcześniej zainicjowaliśmy zmienną. Następnie dodajemy obsługę parametru globalnego chatu:
Domyślnie ta struktura wygląda dokładnie tak, jak przedstawiono powyżej. Przyjrzymy się jej dokładniej i nieco zoptymalizujemy, dodając obsługę globalnego chatu.
🛠️ Przedstawię teraz zoptymalizowaną wersję i postaram się omówić zmiany, które wprowadziłem.
Pierwszy blok sprawdza, czy postać istnieje, a drugi blok sprawdza, czy globalny chat jest włączony oraz czy postać nie jest GM w innym królestwie.
Wprowadziłem kontrolę globalnego chatu za pomocą zmiennej isGlobalChatEnabled. Jest to zmienna z pliku config, która pozwala na dynamiczne włączanie i wyłączanie globalnego chatu.
Dodałem zmienną character, która przechowuje wskaźnik na postać gracza. Dzięki temu uniknąłem wielokrotnego wywołania d->GetCharacter().
Usunąłem niepotrzebne spacje i dostosowałem styl kodowania, aby był bardziej zgodny z C++.
Zostało nam wyłączenie szyfrowania wiadomości prywatnych z przeciwnego królestwa.
Jeśli nie chcesz dodawać nowego parametru do konfiguracji, a globalny chat ma być domyślnie dostępny dla każdego bez możliwości włączenia lub wyłączenia.
Zostaw tylko ten warunek który kończy wykonywanie jeśli nie jesteś postacią.
Cześć,
W tym poradniku pokażę, jak dodać dodatkowy parametr do pliku CONFIG, który pozwoli Ci na dynamiczne zarządzanie globalnym chatem. Ale to nie wszystko! Przeprowadziłem również przegląd kodu odpowiedzialnego za tę funkcję, zoptymalizowałem go i przedstawiam swoje spostrzeżenia. Dzięki temu zyskasz nie tylko możliwość kontroli nad globalnym chatem, ale także zrozumiesz jak działa ta część kodu.
W sieci jest wiele poradników na ten temat jednak w tym jako bonus zoptymalizujemy struct FuncShout. Bez przedłużania, zaczynajmy.
Kontekst:
Oryginalnie chat w grze jest podzielony pomiędzy królestwami. Na przykład, jeśli piszesz wiadomość w królestwie Jinno, gracz w królestwie Shinsoo nie zobaczy tego, co napisałeś. W sytuacji, gdy masz włączony tryb testowy i jesteś traktowany jako GM, widzisz oba chaty.
Cel zmian:
Chcemy dodać możliwość określenia, czy chcemy włączyć globalny chat dla wszystkich graczy, nie tylko dla GM. To pozwoli na lepszą kontrolę nad komunikacją w grze.
Zaczynajmy...
Dodawanie nowej zmiennej do pliku konfiguracyjnego 'config.h'
Otwórz plik 'config.h' i na samym końcu dodaj nową zmienną, która będzie reprezentować stan globalnego chatu, najlepiej aby nazwa zmiennej oddawała jej przeznaczenie.
Kolejnym krokiem jest zainicjowanie zmiennej i dodanie nowego parametru, który będzie obsługiwał odczytanie nowego ustawienia w pliku konfiguracyjnym.
Na początku pliku zainicjuj zmienną, którą dodałeś wcześniej w pliku 'config.h'.
📁 Pracujemy w pliku: 'config.cpp'
🔍 Pod zmienną:
➕ Dodajemy naszą zmienną odpowiedzialną za globalny chat:
Teraz pora na obsługę odczytywania nowego parametru.
Szukamy miejsca w kodzie, gdzie obsługiwany jest parametr, pod którym wcześniej zainicjowaliśmy zmienną. Następnie dodajemy obsługę parametru globalnego chatu:
➕ Dodajemy poniżej:
Dobrze, część kodu odpowiadająca za nowy parametr w CONFIG jest już gotowa.
Pamiętaj, że musisz dostosować tabulacje i estetykę kodu w swoim projekcie, aby zachować jego czytelność.
Teraz przejdźmy do kluczowego elementu kodu, który zarządza globalnym chatem:
📂 Będziemy pracować w pliku 'input_p2p.cpp'
🔍 Szukamy:
Domyślnie ta struktura wygląda dokładnie tak, jak przedstawiono powyżej. Przyjrzymy się jej dokładniej i nieco zoptymalizujemy, dodając obsługę globalnego chatu.
🛠️ Przedstawię teraz zoptymalizowaną wersję i postaram się omówić zmiany, które wprowadziłem.
Zmiany które wprowadziłem:
Zostało nam wyłączenie szyfrowania wiadomości prywatnych z przeciwnego królestwa.
📁 Lokalizacja pliku: 'game -> empire_text_convert.cpp'
🔍 Szukamy:
Na samym początku funkcji dodajemy warunek:
Na samym końcu nie pozostaje nam nick innego jak dodać do pliku CONFIG (w kanałach gry) nowo utworzonego parametru:
Stan: 0/1 - włącz/wyłącz.
Jeśli nie chcesz dodawać nowego parametru do konfiguracji, a globalny chat ma być domyślnie dostępny dla każdego bez możliwości włączenia lub wyłączenia.
Zostaw tylko ten warunek który kończy wykonywanie jeśli nie jesteś postacią.
Drugą instrukcję warunkowo usuń: