[C++, BSD]Metin2 CH Düşmesiyle Alakalı <game.core fixed>

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 27

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Herkese Merhaba..

1- game taraflı olabilir.
2- sunucu taraflı olabilir.
3- serverside taraflı olabilir.


tabi bu 4-5 diye'de çıkabilir öncelikle ilk ch düştüğü zaman ne yapmamız gerek?


MySQL bootlog tablosunu açalım ch'nin düştüğü saat'e bakalım,baktıktan sonra

Syserr ve syslog'u açayım bunların içine girip en son yapılan işlem ne? eğer game taraflı ch düştüyse &lt;shutdown&gt; tarzında bir yazı olacaktır.


Game kaynak dosyasını yazan kişiler (YMİR) zaten güvenlik amacıyla "thecore_shutdown();" böyle bir fonksiyon oluşturmuş, yani siz mesela item_proto.sql'den bir itemi sildiniz ama bu ayritten mob_drop_item.txt'de var güvenlik amacıyla serverin çökmeme amacıyla "thecore_shutdown();" komudunu verdiriyor ve CH hiç açılmadan otomatik kapatıyor sistem.


Örnek fonksiyon ;

Kod:
Kod:
if (decode_2bytes(data) != sizeof(TItemTable))    {         sys_err("item table size error");         thecore_shutdown();         return;     }
Bu tür taraflı ch kapanmalarında veya açılmadığı zaman hangi ch açılmıyorsa hemen oranın syserr ve syslogdosyalarına girin orada ne olduğu yazar.


CH ayritten saldırılardan dolayıda kapanabilir botnet saldırısı ddos attack gibi sürekli CH portuna paket gönderir ve o port iptal olur vefaf haline gelir :) Güzel yazılımsal bir firewall yazın CH portlarına 15 limit koyun ve 15 paket gönderdikten sonra karşı taraf bir daha paket gönderemesin.


Ve en büyük sorunumuz "game.core"

Game.core problemi birden bire ch'nin düşmesi ve bazen syserr-syslog hatta bootlog'a bile chnin düştüğünü yazmama problemidir.Aslında bu bir ch düşme sorunu değil direk o CH'nin çökmesi anlamına gelir, bu sorun herşeyden olabilir Game taraflı , quest taraflı , item_proto taraflı hatta hatırlarmısınız bilmem eski fileslerdeKafasız Savaşçı adlı bir boss mu slot mu artık neyse o vardı onu kesincede game.core veriyordu tabi o zaman syserr'e büyük ihtimal yazıyordur KILL:NPC kod vs diye ama 40K'ya geçmemle birlikte game.core veriyor ve hiçbir şekilde ne syserr ne syslog tutuyordu.


Ben kendi kendi game dosyamı (kendi dediğim mainline editlediğim dosyamı olacaktı :D ) FreeBSD 9.2'de compile ediyordum ama oyun sunucusu için yani serverimde FREEBSD 10.1 kullanıyordum ve game.core vermeye başladı bende syserr syslog göremeyince GDB ile game.core'yi debugger etmeye çalıştım.

Ama malesef FreeBSD 9.2'de compile ettiğim ve 10.1 kullandığım için debugger edemedim şu hatayı aldım;

Kod:
"/usr/game/cores/channel1/egegame.core" is not a core dump: File format is ambiguous
Farkettim ki hangi BSD versiyonunda compile ettiyseniz sadece onla debugger edebilirsiniz yani ben 9.2'ye geçiş yaptım.

Ve bundan sonrada ch düşmesi yaşamadım büyük ihtimal sunucu taraflıydı bir lib herhangibi bir versiyon bilmiyorum bu olay çok kapsamlı birşey ama eğer ki siz aynı Versiyonda compile edp çalıştırdığınız halde ch düşüyorsa yani game.core alıyorsanız.

FreeBSD'ye GDB yükleyin kurulum ;

Kod:
Kod:
cd /usr/ports/devel/gdb/ &amp;&amp; make install clean pkg install devel/gdb

Yükleme işlemi bittikten sonra eğer game.core verirse şu kodlarla açaçağız;

Kod:
Kod:
gdb game game.core core game.core bt .

CH Düşmesine sebeb olacak belirli nedenler;

Kod:
HACK_DETECD CHECK POINT /WAR -777777777 /DICE -777777777 KAFASIZ SAVAŞÇI

Metin2 CH Düşmesiyle Alakalı <game.core fixed>

Metin2 özel sunucularında karşılaşılan yaygın sorunlardan birisi, karakterin CH (Character Handle) değerinin düştüğü veya tamamen sıfırlandığı durumlardır. Bu durum genellikle oyun sırasında istemci ile sunucu arasında bağlantı kopması, core çökmesi ya da sistemsel hatalar sonucunda meydana gelir. Bu yazıda, C++ tabanlı Metin2 oyun sunucusu geliştirme sürecinde karşılaşılabilecek bu problemi analiz edip, <game.core fixed> çözümünü detaylıca ele alacağız.

CH Nedir ve Neden Önemlidir?

CH, yani Character Handle, Metin2 oyununda karakterlerin tanınmasını sağlayan benzersiz bir kimliktir. Sunucu tarafında karakterin doğrulanmasında ve oyun içi eylemlerde kritik rol oynar. CH düşmesi, karakterin sunucu tarafından tanınmamasına neden olabilir; bu da oyuncunun bazı eylemleri gerçekleştirememesine, item kullanamamasına veya hatta sunucudan atılmasına yol açabilir.

CH Düşmesinin Nedenleri

CH düşmesi birkaç farklı nedenden dolayı oluşabilir:

- Oyuncu istemcisi ile sunucu arasında bağlantı kopması
- Game core çökmesi
- DB ile bağlantı kopması
- Hatalı C++ kodlama veya script düzenlemeleri
- Eski veya hatalı client-src versiyonları

<game.core fixed> Nedir?

Bu terim, genellikle Metin2 özel sunucularında geliştiricilerin karşılaştığı CH düşmesi gibi hataları gidermek için yapılan sistemsel düzeltmeleri ifade eder. <game.core fixed> ifadesi, genellikle bir forum veya GitHub deposunda belirli bir sorunun çözüldüğünü göstermek için kullanılır. Burada amaç, CH değerinin korunmasını sağlayacak güvenli ve stabilize bir core yapısı oluşturmaktır.

CH Düşmesini Önlemek İçin Yapılması Gerekenler

CH düşmesini önlemek için öncelikle game core tarafında bazı güvenlik önlemleri alınmalıdır. Bu önlemler şunlardır:

1. CH kontrolü yapan fonksiyonların her yerde çağrıldığından emin olun.
2. Bağlantı kopması durumlarında CH değerlerinin korunacak şekilde geri dönüşüm sağlanmalı.
3. C++ levelinde handle invalidasyon kontrolleri yapılmalı.
4. Client ile sunucu arasındaki veri akışı optimize edilmeli.

Pratik Kod Örneği

Aşağıda, CH değerinin korunması için örnek bir C++ kod parçası verilmiştir:

Kod:
if (ch && ch->GetHandle() != INVALID_HANDLE)[BR][/BR]{[BR][/BR]    // Karakterle ilgili işlemler burada yapılır[BR][/BR]}[BR][/BR]else[BR][/BR]{[BR][/BR]    // CH geçersizse kullanıcıya uyarı mesajı gönderilir[BR][/BR}


Sunucu Tarafında Alınabilecek Ekstra Güvenlik Önlemleri

Metin2 özel sunucularında CH düşmesini engellemek için aşağıdaki adımlar da önemlidir:

- Oyun sunucusunda loglama sistemleri aktif tutulmalı
- Her CH değişikliğinde DB’ye kayıt yapılmalı
- Sunucu çökmesi sonrası CH durumu korunacak şekilde restore mekanizması kurulmalı

Sonuç

CH düşmesi, Metin2 özel sunucularında ciddi oyun deneyimi problemlerine sebep olabilir. Ancak doğru C++ kodlaması, core sabitliği ve güvenlik önlemleri ile bu sorun etkili bir şekilde bertaraf edilebilir. <game.core fixed> çözümleri, bu süreçte büyük kolaylık sağlar. Geliştiricilerin dikkat etmesi gereken temel konulardan biri de CH koruma mekanizmalarının sağlıklı bir şekilde entegre edilmesidir.


Related to Metin2 CH Drop <game.core fixed>

One of the common issues encountered in Metin2 private servers is the drop or complete reset of a character's CH (Character Handle) value. This usually occurs due to connection loss between the client and server during gameplay, core crashes, or system errors. In this article, we will analyze this issue encountered in C++ based Metin2 game server development and explain the <game.core fixed> solution in detail.

What is CH and Why is it Important?

CH, or Character Handle, is a unique identifier that allows characters to be recognized in the Metin2 game. It plays a critical role in validating the character on the server side and performing in-game actions. A CH drop can cause the character not to be recognized by the server, which may result in the player being unable to perform certain actions, use items, or even get kicked from the server.

Causes of CH Drops

CH drops can occur for several reasons:

- Connection loss between the player client and the server
- Game core crash
- Loss of connection with the database (DB)
- Faulty C++ coding or script modifications
- Outdated or faulty client-src versions

What is <game.core fixed>?

This term generally refers to systematic fixes made by developers in Metin2 private servers to resolve issues like CH drops. The expression <game.core fixed> is often used in forums or GitHub repositories to indicate that a specific problem has been resolved. The goal here is to create a secure and stable core structure that ensures the preservation of CH values.

Preventive Measures Against CH Drops[/COORD][/BR]
To prevent CH drops, certain security measures must be taken on the game core side. These measures include:

1. Ensuring CH validation functions are called everywhere
2. Ensuring CH values are preserved during connection loss events
3. Performing C++ level handle invalidation checks
4. Optimizing data flow between client and server

Practical Code Example

Below is an example C++ code snippet to preserve CH values:

Kod:
if (ch && ch->GetHandle() != INVALID_HANDLE)[BR][/BR]{[BR][/BR]    // Perform operations related to the character[BR][/BR]}[BR][/BR]else[BR][/BR]{[BR][/BR]    // Send an error message if CH is invalid[BR][/BR}


Additional Security Measures on the Server Side

The following steps are also important to prevent CH drops in Metin2 private servers:

- Logging systems should be kept active on the game server
- Every CH change should be recorded in the DB
- A restore mechanism should be implemented to preserve CH state after server crashes

Conclusion

CH drops can cause serious gameplay experience problems in Metin2 private servers. However, with correct C++ coding, core stability, and security measures, this issue can be effectively resolved. <game.core fixed> solutions provide great convenience in this process. One of the key points developers need to pay attention to is the proper integration of CH protection mechanisms.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt