Udostępnię je wkrótce, gdy będą gotowe.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Jest kilka rzeczy, które trzeba usunąć; włożono w te pliki mnóstwo wysiłku. Gdyby ktoś pracował nad nimi przez miesiąc, dogłębnie je oczyszczając, byłyby w pełni funkcjonalne i dobrze prezentowałyby się w sieci, sądząc po danych, które widziałem.
# Poprawki/korekty i aktualizacje rdzenia i klienta Metin2
##Turecki (lista poprawek i aktualizacji)
1. **Naprawiono błędy kompilacji klienta (MSVC C2039 i C2065):**
- Naprawiono brakujący element członkowski `dwPongValue` w `PythonNetworkStreamPhaseGame.cpp` (`C2039`).
- Naprawiono błąd niezidentyfikowanego symbolu (`C2065`) w `m_bufRecv` w `PythonNetworkStream.cpp`.
2. **Naprawiono błąd awarii rdzenia bazy danych (błąd segmentacji/zrzut rdzenia):**
- Wykryto niezgodność stosu w 32-bitowym środowisku FreeBSD spowodowaną formatowaniem 64-bitowych (`int64_t`) danych `gold` (Yang) i `cheque` (Won) jako `%ld` (długość 32-bitowa) w zapytaniu SQL przy użyciu `ENABLE_LONG_LONG`.
- Problem, który powodował awarię DB Core, ponieważ parametr `"ip = '%s'"` po `snprintf` wysyłał brakujący, nieprawidłowy adres pamięci do `strlen()`, został całkowicie rozwiązany przez zmianę specyfikatorów `%ld` w `ClientManagerPlayer.cpp` na `%lld`.
3. **Problem z systemem ByteShield i rozłączaniem został całkowicie rozwiązany:**
- Zidentyfikowano mechanizm rozłączania `PING_BYTESHIELD_EVENT: no pong`, który jest główną przyczyną nieoczekiwanego powrotu graczy do ekranu logowania.
- System ByteShield został całkowicie i czysto usunięty z kodu źródłowego zarówno **Serwera (`gry`)**, jak i **Klienta (`Interfejsu użytkownika`)**, nie pozostawiając po sobie żadnych śladów.
4. **Naprawiono błąd Pythona w menu ESC (`SendLogOutPacket` / `SendExitPacket`):**
- Naprawiono błąd `AttributeError: 'module' object has no attribute 'SendLogOutPacket'`, który występował po kliknięciu przycisków wyjścia i zmiany znaku w menu ESC.
- Po stronie C++ (`PythonNetworkStreamModule.cpp`) zdefiniowano aliasy `SendLogOutPacket`, `SendExitPacket` i `SendChangeCharacterPacket`, a po stronie Pythona (`uiSystem.py`) przyciski powiązano ze standardowymi metodami `net.LogOutGame()` i `net.ExitGame()`.
5. **Naprawiono problem uniemożliwiający dosiadanie zwierząt:**
- Gdy poziom konia postaci wynosi 0 (`horse_level = 0`), problem uniemożliwiający dosiadanie konia nawet przy użyciu stroju wierzchowca lub przedmiotu wierzchowca został zaktualizowany w `horse_rider.cpp` (`CHorseRider::StartRiding`) dla systemu `__RENEWAL_MOUNT__`.
- W pliku `char_item.cpp` aktywowano wiersz `StartRiding();`, który inicjuje jazdę po założeniu przedmiotu wierzchowca.
6. **Naprawiono błąd Pythona dotyczący szybkiego przełączania kanałów (`BL_MOVE_CHANNEL`):**
- Naprawiono brakującą strukturę okien, która spowodowała błąd `AttributeError: Obiekt 'SystemDialog' nie ma atrybutu 'moveChannelDlg'` podczas dostępu do menu ESC lub skrótu.
- Do pliku `uiSystem.py` dodano klasę okna `MoveChannelDialog`, w pliku `SystemDialog` u utworzonej definicji zmiennej, aw pliku `interfaceModule.py` zaktualizowano plik o bezpiecznej kontroli dostępu (`getattr`).
---
##Język angielski (lista zmian i zastosuj)
1. **Poprawki jednorazowei klienta (MSVC C2039 i C2065):**
- Naprawiono błąd `C2039: 'dwPongValue': nie jest członkiem 'CPythonNetworkStream'` w `PythonNetworkStreamPhaseGame.cpp`.
- Naprawiono błąd `C2065: 'm_bufRecv': niezdefiniowany identyfikator` w `PythonNetworkStream.cpp`.
2. **Naprawa rdzenia bazy danych (błąd segmentacji/zrzut rdzenia):**
- Rozwiązano problem braku równowagi stosu 32-bitowego w `CreatePlayerSaveQuery` i `CreatePlayerTable` powszechnie używany `%ld` (długość 32-bitowa) dla 64-bitowych zmiennych `int64_t` `gold` (Yang) i `cheque` (Won) (`ENABLE_LONG_LONG`).
- Przesunięcie wyrównania stosu, że `snprintf` przekreślić znaczniki pamięci do `strlen()` dla parametru IP (`ip = '%s'`). Zastąpiono specyfikatory `%ld` specyfikatorami `%lld` w `ClientManagerPlayer.cpp`, trwale naprawę awarię rdzenia bazy danych.
3. **Całkowite usunięcie ByteShield i naprawa losowych rozłączeń:**
- Zidentyfikowano źródło główne, rozłączone, rozłączone i powracające do wyświetlacza logowania: `PING_BYTESHIELD_EVENT: brak pong` - zerwanie połączenia.
- Całkowicie i czysto usunięto system ByteShield z kodem źródłowego oba **Serwera (`gry`)**, jak i **Klienta (`Interfejsu użytkownika`)**.
4. **Naprawa błędu `AttributeError` w menu systemowym ESC w Pythonie:**
- Naprawiono błąd `AttributeError: obiekt 'module' nie ma atrybutu 'SendLogOutPacket'` / `'SendExitPacket'` po zastosowaniu przycisku wyjścia lub wylogowania w menu ESC.
- Dodano mapowanie metody aliasów (`SendLogOutPacket`, `SendExitPacket`, `SendChangeCharacterPacket`) do `s_methods[]` w `PythonNetworkStreamModule.cpp` i zaktualizowano procedurę obsługi zarządzaną przez `uiSystem.py`, aby kierować `net.LogOutGame()` i `net.ExitGame()`.
5. **Naprawiono problem z jazdą na wierzchowcu:**
- Naprawiono problem, w wyniku którego Postacie z posem konia 0 (`horse_level = 0`) nie ma mocy do jazdy wierzchowca, mimo że jest używany na sobie kostium lub przedmiot wierzchowca.
- Zaktualizowano `CHorseRider::StartRiding()` w `horse_rider.cpp` w celu pominięcia ograniczenia poseiomu konia, gdy aktywne jest `__RENEWAL_MOUNT__`, a także odkomentowano `StartRiding();` w `char_item.cpp` podczas wyposażania wierzchowca w handlu.
6. **Szybkie przełączanie kanałów (`BL_MOVE_CHANNEL`) Naprawiono błąd `AttributeError` w Pythonie:**
- Rozwiązano problem `AttributeError: Obiekt 'SystemDialog' nie ma atrybutu 'moveChannelDlg'` podczas otwierania okna dialogowego transportu kanału z menu ESC lub klawisza skrótu.
- Zaimplementowano klasę `MoveChannelDialog` w `uiSystem.py`, dodano poprawiną inicjalizację i eliminacyjną instalację `moveChannelDlg` oraz dodano bezpieczne sprawdzanie atrybutów (`getattr`) w `interfaceModule.py`.
Do you send only game and db i want test server
when you can upload freebsd ready works ?I'll share it soon when it's ready.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
sökülcek şeyleri var baya emek verilmiş bu files üzerinde 1 ay çalışılsa arındırılsa tamamen iş yapar ve güzel online da görmüş verilere bakılırsa
# Metin2 Core & Client Fixes / Düzeltmeler ve Güncellemeler
##Türkçe (Düzeltme & Güncelleme Listesi)
1. **Client Derleme (MSVC C2039 & C2065) Hataları Düzeltildi:**
- `PythonNetworkStreamPhaseGame.cpp` içerisindeki `dwPongValue` üye elemanı eksikliği (`C2039`) giderildi.
- `PythonNetworkStream.cpp` içerisindeki `m_bufRecv` tanımlanamayan simge (`C2065`) hatası düzeltildi.
2. **DB Core Çökme (Segmentation Fault / Core Dump) Hatası Düzeltildi:**
- 32-bit FreeBSD ortamında `ENABLE_LONG_LONG` ile 64-bit (`int64_t`) yapılan `gold` (Yang) ve `cheque` (Won) verilerinin SQL sorgusunda `%ld` (32-bit long) olarak biçimlendirilmesinden kaynaklanan yığıt kayması (stack misalignment) tespit edildi.
- `snprintf` sonrasındaki `"ip = '%s'"` parametresi kayıp geçersiz bellek adresini `strlen()`'e gönderdiği için DB Core'un çökmesine neden olan bu durum, `ClientManagerPlayer.cpp` içerisindeki `%ld` belirleyicileri `%lld` yapılarak tam olarak çözüldü.
3. **ByteShield Sistemi ve Giriş Ekranına Atma (Disconnect) Sorunu Tamamen Kaldırıldı:**
- Oyuncuların durduk yere giriş ekranına atılmasının ana nedeni olan `PING_BYTESHIELD_EVENT: no pong` bağlantı kesme mekanizması tespit edildi.
- ByteShield sistemi hem **Server (`game`)** hem de **Client (`UserInterface`)** kaynak kodlarından kalıntı kalmayacak şekilde tamamen ve temiz bir şekilde kaldırıldı.
4. **ESC Menüsü Python Hatası (`SendLogOutPacket` / `SendExitPacket`) Düzeltildi:**
- ESC menüsündeki çıkış ve karakter değiştir butonlarına tıklandığında oluşan `AttributeError: 'module' object has no attribute 'SendLogOutPacket'` hatası düzeltildi.
- C++ tarafında (`PythonNetworkStreamModule.cpp`) `SendLogOutPacket`, `SendExitPacket` ve `SendChangeCharacterPacket` takma adları (alias) tanımlandı, Python tarafında (`uiSystem.py`) butonlar standart `net.LogOutGame()` ve `net.ExitGame()` metodlarına bağlandı.
5. **Bineklere Binememe Sorunu Düzeltildi:**
- Karakterin at seviyesi 0 olduğunda (`horse_level = 0`) binek kostümü veya binek eşyası giyilse dahi bineklerin üzerine binilmesini engelleyen durum `horse_rider.cpp` (`CHorseRider::StartRiding`) içerisinde `__RENEWAL_MOUNT__` sistemi için güncellendi.
- `char_item.cpp` içerisinde binek eşyası giyildiğinde binmeyi başlatan `StartRiding();` satırı aktif edildi.
6. **Hızlı Kanal Değiştirme (`BL_MOVE_CHANNEL`) Python Hatası Düzeltildi:**
- ESC menüsünde veya kısayolda `AttributeError: 'SystemDialog' object has no attribute 'moveChannelDlg'` hatası veren eksik pencere yapısı düzeltildi.
- `uiSystem.py` içerisine `MoveChannelDialog` pencere sınıfı eklendi, `SystemDialog` içine değişken tanımlamaları yapıldı ve `interfaceModule.py` güvenli erişim kontrolü (`getattr`) ile güncellendi.
---
##English (Changelog & Fixes)
1. **Client Compilation (MSVC C2039 & C2065) Fixes:**
- Fixed `C2039: 'dwPongValue': is not a member of 'CPythonNetworkStream'` error in `PythonNetworkStreamPhaseGame.cpp`.
- Fixed `C2065: 'm_bufRecv': undeclared identifier` error in `PythonNetworkStream.cpp`.
2. **DB Core Crash (Segmentation Fault / Core Dump) Fix:**
- Resolved a 32-bit stack misalignment in `CreatePlayerSaveQuery` & `CreatePlayerTable` caused by using `%ld` (32-bit long) for 64-bit `int64_t` `gold` (Yang) and `cheque` (Won) variables (`ENABLE_LONG_LONG`).
- The stack alignment shift caused `snprintf` to feed invalid memory pointers to `strlen()` for the IP parameter (`ip = '%s'`). Replaced `%ld` specifiers with `%lld` in `ClientManagerPlayer.cpp`, permanently fixing the DB core crash.
3. **Complete Removal of ByteShield & Fix for Random Disconnects:**
- Identified the root cause of random player disconnects back to login screen: `PING_BYTESHIELD_EVENT: no pong` connection destruction.
- Completely and cleanly removed the ByteShield system from both **Server (`game`)** and **Client (`UserInterface`)** source code.
4. **ESC System Menu Python `AttributeError` Fix:**
- Fixed `AttributeError: 'module' object has no attribute 'SendLogOutPacket'` / `'SendExitPacket'` when clicking exit or logout buttons in ESC menu.
- Added method alias mappings (`SendLogOutPacket`, `SendExitPacket`, `SendChangeCharacterPacket`) to `s_methods[]` in `PythonNetworkStreamModule.cpp` and updated `uiSystem.py` button handlers to use standard `net.LogOutGame()` and `net.ExitGame()`.
5. **Mount Riding Issue Fix:**
- Fixed an issue where characters with horse level 0 (`horse_level = 0`) were unable to mount despite equipping a costume mount or mount item.
- Updated `CHorseRider::StartRiding()` in `horse_rider.cpp` to bypass horse level restrictions when `__RENEWAL_MOUNT__` is active, and uncommented `StartRiding();` in `char_item.cpp` when equipping mount items.
6. **Fast Channel Switch (`BL_MOVE_CHANNEL`) Python `AttributeError` Fix:**
- Resolved `AttributeError: 'SystemDialog' object has no attribute 'moveChannelDlg'` when opening the move channel dialog from ESC menu or hotkey.
- Implemented `MoveChannelDialog` class in `uiSystem.py`, added proper `moveChannelDlg` member initialization & cleanup, and added safe attribute checks (`getattr`) in `interfaceModule.py`.
Şu an konuyu görüntüleyenler (Toplam : 6, Üye: 2, Misafir: 4)
Benzer konular
- Cevaplar
- 1
- Görüntüleme
- 94
- 5.00 yıldız(lar) 1 Değerlendirme
- Cevaplar
- 4
- Görüntüleme
- 888
- Cevaplar
- 3
- Görüntüleme
- 545
Turecki (lista poprawek i aktualizacji)
Język angielski (lista zmian i zastosuj)