noisiv 1
noisiv
Manwe Work 1
Manwe Work
mavzermete 1
mavzermete
Bvural41 1
Bvural41
Mt2Hizmet 1
Mt2Hizmet
Hikaye Ekle

Serverfiles Elvion

  • Konuyu başlatan Konuyu başlatan xblondubro
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 21
  • Görüntüleme Görüntüleme 2K
Udostępnię je wkrótce, gdy będą gotowe.



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
 
I'll share it soon when it's ready.



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`.
when you can upload freebsd ready works ?
 

Şu an konuyu görüntüleyenler (Toplam : 6, Üye: 2, Misafir: 4)

Geri
Üst