- Czym jest OTClient - Redemption?
- 🚀 Funkcje
- Projekt mobilny
- 🔨 Kompilowanie
- 🐳 Docker
- 🩺 Potrzebujesz pomocy?
- 📑 Błędy?
- ❤️ Dalszy rozwój
- 💯 Wspierane protokoły
- ©️ Licencja
- ❤️ Współtwórcy
OTClient - Redemption to alternatywny klient gry Tibia, przeznaczony do użytku z serwerami OT. Jego celem jest zapewnienie pełnej funkcjonalności i elastyczności, dlatego wykorzystuje skrypty .lua do obsługi wszystkich funkcji interfejsu gry oraz pliki konfiguracyjne .otui - podobne do .css celem projektowania interfejsu klienta. OTClient - Redemption działa w oparciu o system modułowy, co oznacza, że każda funkcjonalność jest oddzielnym modułem, co daje użytkownikom możliwość łatwej modyfikacji i dostosowywania wszystkich jego elementów. Użytkownicy mogą również tworzyć nowe mody oraz moduły i rozszerzać interfejs gry według własnych potrzeb. OTClient jest napisany w C++20 i intensywnie skryptowany w LUA.
Możesz stworzyć własnego klienta aby połączyć się z Forgottenserver lub Canary.
Note
OTClient - Redemption bazuje na edubart/otclient Rev: 2.760
Oprócz elastyczności w zakresie skryptów, OTClient - Redemption oferuje wiele innych funkcji, które umożliwiają tworzenie nowych elementów po stronie klienta, które wcześniej były niemożliwe. Należą do nich: system dźwiękowy, efekty graficzne z użyciem shaderów, system modułów/dodatków, animowane tekstury, personalizowany interfejs użytkownika, przezroczystość, obsługa wielu języków, terminal .lua w grze oraz silnik OpenGL 2.0 ES, który umożliwia portowanie na platformy mobilne. OTClient - Redemption jest również na tyle elastyczny, że pozwala na tworzenie narzędzi do Tibii, takich jak edytory map, wyłącznie przy użyciu skryptów, ponieważ nie został zaprojektowany tylko jako klient, lecz jako połączenie Frameworka i API Tibii.
-
Szczegóły optymalizacji w odniesieniu do OTClient autorstwa edubart:
-
C++20 (v17, budowa Unity i tryb manifestu (vcpkg.json)) w wersji x32 i x64
-
Asynchroniczne ładowanie tekstur
-
i ) Opis: Dzięki temu plik .spr nie jest buforowany, a w konsekwencji zużycie pamięci RAM jest mniejsze.
-
ii ) Przykład:
Asynchronous.texture.loading.mp4
-
-
Wielowątkowość
-i ) Opis:
[Główny Wątek]
- Dźwięk
- Cząsteczki
- Ładowanie tekstur (plików)
- Obsługa okien (klawiatura, mysz, ...)
- Generowanie tekstur
[Drugi Wątek]
- Połączenie
- Wydarzenia (g_dispatcher)
- Zbieranie informacji o tym co ma być wygenerowane na mapie
[Trzeci Wątek]
-
Mniejsze zużycie pamięci
- i ) Opis:
highlightingPtr to stackPos new async dispatcher (using bs thread_pool) optimized updateChildrenIndexStates & updateLayout removed ThingTypePtr scoped object to raw pointer shaderPtr to shaderId oraz inne optymalizacje
- i ) Opis:
-
- Nowy system oświetlenia z przyciemnianiem
- i ) Przykład:
Lighting.Fading.mp4
-
Ulepszenie systemu chodzenia
-
Obsługuje sekwencyjne pakiety i kompresję
-
Wsparcie (Tibia 13)
-
Ulepszenie UIWidgets
-
i ) Opis:
[UIWidget] Ulepszony algorytm interfejsu użytkownika przyniósł lepszą wydajność w dodawaniu, usuwaniu i przestawianiu widgetów. Można zauważyć te poprawki w module walki. -
ii ) Przykład:
UIWidget.Control.Optimized.mp4
-
-
Wymuszona optymalizacja efektów
- i ) Opis: Unika generowania efektów w określonych sytuacjach.
-
Zaktualizowane biblioteki
-
-
Automatyczne przeładowanie modułów
Activate
g_modules.enableAutoReload()
(init.lua)2022-11-17_17-45-35-1.1.mp4
-
System dodatkowych efektów do tworzenia aur, skrzydeł itp.
-
Kompatybilny z .Apng
- ThingCategoryEffect
- ThingCategoryCreature
- ThingExternalTexture: to grafiki w Png lub Apng
-
Przykład kodu: (code sample: effects.lua, code test)
-
Przykładowe ustawienia specyficzne dla lookType X outfit_618.lua
- Masz AttachdEffect X, który ma standardowy offset, lecz w daemonie wszystko jest zniekształcone, więc używasz ThingConfig, aby dostosować efekt specjalnie do pożądanego typu wyglądu.
-
Osadzony efekt ThingCategory | Osadzony efekt Texture(Png) | Cząsteczki |
-
Cieniowanie gruntu
-
Podświetlenie celu kursora (naciśnij Shift, aby wybrać dowolny obiekt)
-
Tryb widoku gruntu (Normalny, Zanikający, Zablokowany, Zawsze widoczny, Zawsze widoczny z przezroczystością)
-
Opcja efektów unoszących się
-
Przebudowany system chodzenia
-
Wsparcie dla większej liczby przycisków myszy, na przykład 4 i 5
-
System kontrolera modułów
bezpieczniejszy sposób na tworzenie modułów, bez potrzeby usuwania powiązania klawiszy, rozłączania zdarzeń czy niszczenia widżetów.
-
Wsparcie klientów 12.85 ~ 12.92, 13.00 ~ 13.40 (protobuf)
-
Market został przepisany i jest kompatybilny z TFS oraz Canary
-
Asynchroniczne ładowanie tekstur
-
Wsparcie Negative Offset (.dat)
-
Kompatybilny z ObjectBuilderV0.5.5
-
Należy aktywować funkcję:
g_game.enableFeature(GameNegativeOffset)
-
Przykład
offsets.mp4
-
-
Informacje o stworzeniach w UIWidget
- By aktywować: setup.otml
- Styl: modules/game_creatureinformation
- Uwaga: W porównaniu do bezpośredniego programowania z użyciem Draw Pool występuje spadek wydajności o około ~20%. Testy przeprowadzono z 60 potworami atakującymi się nawzajem.
Video_Sem_Titulo_Feito_Com_O_Clipchamp1.mp4
- Drawpool 3
- Widżet kratki Wiki
Osadzony efekt na kratce | Widżet kratki | Cząsteczki na kratce |
-
Wsparcie DirectX
-
Garbage Collection
Garbage collection jest mechanizmem używanym w wielu miejscach (lua, texture, drawpool, thingtype). Służy zarządzaniu pamięcią. Jego zadaniem jest identyfikowanie obiektów, które nie są już używane i usuwanie ich z pamięci aby zwolnić zasoby.
- Wsparcie klienta mobilnego @tuliomagalhaes & @BenDol & @SkullzOTS
Interfejs | Zagęszczenie Pikseli | Joystick (patrykq) |
-
Wsparcie Tibia 12.85/protobuf by @Nekiro
-
Wsparcie Discord RPC by @SkullzOTS (Nie współpracuje z CMAKE).
-
autorstwa @SkullzOTS
-
By aktywować przejdź do config.h, ustaw 1 w ENABLE_DISCORD_RPC i skonfiguruj pozostałe definicje.
-
Do obejrzenia krok po kroku na YouTube
-
Przykładowy Interfejs | Przykład w grze | W przyszłości discord-game-sdk |
- Action Bar autorstwa @DipSet
- Dostęp do elementów podrzędnych widgetu przy pomocy widget.childId autorstwa @Hugo0x1337
- Poprawka systemu cieniowania (CTRL + Y) autorstwa @FreshyPeshy
Stworzenia | Mapy | Wierzchowca |
-
Przebudowany moduł walki autorstwa @andersonfaaria
-
Health&Mana Circle autorstwa @EgzoT, @GustavoBlaze, @Tekadon58 (GITHUB Project)
-
Motyw Tibia 1.2 autorstwa Zews (Forum Thread)
-
Dodana opcja ADJUST_CREATURE_INFORMATION_BASED_ON_CROP_SIZE w config.h autorstwa @SkullzOTS
-
System szyfrowania autorstwa @Mrpox (Uwaga: Ta implementacja jest niebezpieczna.)
autorstwa @Mrpox
- By aktywować przejdź do config.h, ustaw 1 w ENABLE_ENCRYPTION i zmień hasło w ENCRYPTION_PASSWORD
- Aby aktywować szyfrowanie flagą "--encrypt" zmień ENABLE_ENCRYPTION_BUILDER na 1 (autorstwa @TheMaoci). Umożliwia usunięcie kodu tworzącego zaszyfrowane pliki z wersji produkcyjnej.
- Aby wymusić szyfrowanie użyj flagi "--encrypt SET_YOUR_PASSWORD_HERE" i nie zapomnij zmienić hasła!
- Możesz również pominąć dodawanie hasła do polecenia --encrypt, zostanie ono automatycznie pobrane z pliku config.h (autorstwa @TheMaoci)
-
Wsparcie HTTP/HTTPS/WS/WSS. autorstwa @alfuveam
-
Automatyczna aktualizacja klienta
- autorstwa @conde2
- Wklej folder API do swojego folderu www (https://github.com/mehah/otclient/tree/main/tools/api)
- Tworzy folder nazwany "files" w twoim folderze www i wkleja pliki init.lua, modules, data oraz exe.
- Odkomentuj i zmień tą linię. (https://github.com/mehah/otclient/blob/main/init.lua#L6)
-
Kolorowy tekst
- autorstwa @conde2
- widget:setColoredText("{Colored text, #ff00ff} normal text")
-
Wsparcie dla kodów QR, z automatycznym generowaniem z ciągu znaków.
- autorstwa @conde2
UIQrCode: code-border: 2 code: Hail OTClient Redemption - Conde2 Dev
-
Ikony pisania
- autorstwa @SkullzOTS
- By aktywować przejdź do setup.otml i ustaw draw-typing: true
-
Płynne chodzenie na wzniesieniach
- autorstwa @SkullzOTS
- Zobacz funkcję: Gyazo
- By aktywować przejdź do modules/game_features/features.lua, i odkomentuj linię 5 (g_game.enableFeature(GameSmoothWalkElevation)).
-
Debugger Lua dla VSCode zobacz wiki @BenDol
-
Poradnik używania klienta w TFS zobacz wiki
-
Dźwięk 3D i efekty dźwiękowe! autorstwa @Codinablack
Przykład 1 | Przykład 2 | Przykład 3 |
---|---|---|
001_example.mp4 |
002_example.mp4 |
003_example.mp4 |
-
Wygląd bazowany na Tibia 13
-
autorstwa @marcosvf132
-
Game_shop v8
-
Minimap WorldTime
- tfs c++(old):
void ProtocolGame::sendWorldTime()
- tfs lua(new) :
function Player.sendWorldTime(self, time)
- Canary:
void ProtocolGame::sendTibiaTime(int32_t time)
-
Okno Outfit kompatybilne z attachEffect , cieniami.
-
Kalendarz
-
client_bottommenu (aktywuj tablicę "Services.status" w init.lua).
Dodaj to w
./otclient/tools/api/status.php
in yourC:/UniServerZ/www/api/
jeśli nie działa, aktywuj curl:
-
Interface | In-game |
-
Śledzenie nasycenia autorstwa @Reyaleman
-
Błogosławieństwo
-
Zrzut ekranu
-
Najlepsze wyniki
-
Sklep (kompatybilny z 13.32 - 13.40)
-
QuickLoot
-
Grupy VIP
-
Przeglądarkowy klient
-
autorstwa @OTArchive
-
wiki: https://github.com/OTArchive/otclient-web/wiki/Guia-%E2%80%90-OTClient-Redemption-Web
-
2024-09-27_19-50-58.mp4
-
-
Bot V8 (@luanluciano93, @SkullzOTS, @kokekanon, @FranciskoKing, @Kizuno18)
- Zaadoptowany w 85%
- By aktywować, należy usunąć flagę BOT_PROTECTION.
- VS Solution / CMAKE
-
Cieniowanie z boforem ramki (@SkullzOTS, @Mryukiimaru, @JeanTheOne, @KizaruHere)
Creature. | Items | UICreature |
- Pełna Cyclopedia (@luanluciano93, @kokekanon, @MUN1Z ,@qatari )
OTClient V8 (Funkcje)
- System oświetlenia
- Cieniowanie gruntu
- Wyszukiwanie drogi
- Moduł sklepu
- Moduł wyglądu
- Placeholder
- UIGraph
- Przypisywanie klawiszy
Projekt klienta mobilnego To jest fork OTClienta edubarta. Celem tego forka jest opracowanie działającego otclienta na urządzenia mobilne.
Cele do wykonania:
- Kompilacja pod Android
- Kompilacja pod Apple
- Adaptacja interfejsu używając istniejącego kodu
Aktualne poradniki kompilacji:
Jeśli jesteś zainteresowany kompilacją własnego OTC - Redemption, przejdź do wiki.
Aby zbudować aplikację do produkcji, uruchom następujące polecenie:
- Aby zbudować obraz:
docker build -t mehah/otclient .
- Aby uruchomić zbudowany obraz:
# Wylacz kontrole dostepu dla serwera X.
xhost +
# Uruchom obraz z wymaganymi powiazaniami do urzadzen hosta i woluminow.
docker run -it --rm \
--env DISPLAY \
--volume /tmp/.X11-unix:/tmp/.X11-unix \
--device /dev/dri \
--device /dev/snd mehah/otclient /bin/bash
# Włacz kontrole dostepu dla serwera X.
xhost -
Spróbuj zapytać na discord
Znalazłeś błąd? Proszę utwórz zgłoszenie w naszym dziale błędów
Tip
jeśli używasz Nostalrius 7.2, Nekiro TFS-1.5-Downgrades-7.72 lub jakiegokolwiek protokołu poniżej 8.60, a podczas chodzenia szarpie, ustaw: force-new-walking-formula: true w setup.otml
W starszych protokołach animacja elementów może być za szybka, zmień wartość parametru [item-ticks-per-frame] z 75 na 500 (https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L32) w setup.otml
Do wykonania | Status | PR |
---|---|---|
Kompatybilność z Androidem | Branch | |
Wygląd chowańców | #39 | |
Koło Przeznaczenia | None | |
Forge | None | |
Analizer | #802 | |
Rozszerzony nowy motyw | None | |
Dźwięki Tibia 13 | None |
Protokół/Wersja | Opis | Wymagana Funkcja | Kompatybilność |
---|---|---|---|
TFS (7.72) |
Downgrade nekiro / Nostalrius |
force-new-walking-formula: true item-ticks-per-frame: 75 |
✅ |
TFS 0.4 (8.6) |
Fir3element | item-ticks-per-frame: 75 | ✅ |
TFS 1.5 (8.0 / 8.60) |
Downgrade nekiro / MillhioreBT |
force-new-walking-formula: true item-ticks-per-frame: 75 |
✅ |
TFS 1.4.2 (10.98) |
Release Otland | ✅ | |
TFS 1.6 (13.10) |
Main repo otland (2024) |
Zobacz wiki | ✅ |
Canary 13.21 | OpenTibiaBr | Assets , Enable HTTP login and port 80 | ✅ |
Canary 13.32 | OpenTibiaBr | Assets , Enable HTTP login and port 80 | ✅ |
Canary 13.40 | OpenTibiaBr | Assets , Enable HTTP login and port 80 | ✅ |
OTClient jest udostępniany na licencji MIT. MIT License. Oznacza to, że masz prawo do robienia, co chcesz, zarówno w kontekście komercyjnym, jak i niekomercyjnym, oraz możesz tworzyć wersje zamknięte lub otwarte.
Jeśli jesteś zainteresowany wspieraniem projektu, kliknij w link, każda kwota to wielka pomoc, dziękuję.