Hepinize selamlar uzun zamandır developmentte paylaşım yapmıyordum özlemişim bugün ch atma zımbırtısındaki item bugunu çözücez.
char.cpp açalım
aratalım
kod bloğunu komple değiştirelim
burada aslında sorun çözülmüş oluyor fakat offline shop kullanan arkadaşlar içinde fixin devamı var
(buradan aşağıdakileri değiştirmeden önce uyarı eğer aşağıdaki tanımlayıcılar sizin offline shopunuzda yoksa, yani fonksiyon olarak kullanılırmıyorsa eklemenize gerek yok birşeyi çalıştırmayacaktır. eğer kendinizin off shopuna göre uyarlarsanız çözecektir o ayrı konu.)
yine aratalım
komple değiştirelim
yine aratalım
altına ekleyelim
burdan Ikarusa selam olsun konuyu ondan alıntıladım herkese iyi akşamlar
Channel Switcher (Kanal Değiştirici) Fixi Nedir?
Metin2 özel sunucularında sunucu performansını artırmak ve oyuncuların daha rahat bir şekilde oyun oynamasını sağlamak amacıyla geliştirilen sistemlerden biridir Channel Switcher fixi. Bu sistem sayesinde oyuncular farklı kanallar arasında geçiş yapabilirken, kanal değiştirme esnasında yaşanan donmalar, bekleme süreleri ve sunucudan atılma gibi sorunlar minimize edilir. Bu fix, özellikle büyük çaplı PvP sunucularında büyük önem taşır çünkü oyuncuların hızlıca harita değişimi yapabilmesi, savaşlarda stratejik avantaj sağlayabilir.
Channel Switcher Fixinin Temel Amaçları
Bu fixin temel amacı, oyuncuların kanal değiştirmeleri sırasında meydana gelen bağlantı kopmalarını ve veri kayıplarını engellemektir. Normal şartlarda bir Metin2 özel sunucusunda kanal değiştirme işlemi sırasında oyuncu önce çıkış yapar, ardından yeni kanala giriş yapar. Bu süreçte kısa da olsa bir bağlantı kesintisi yaşanır. Bu da özellikle savaş esnasında ciddi dezavantajlara yol açabilir. Channel Switcher fixi ile bu süreç optimize edilerek, bağlantı kesintisi minimum seviyede tutulur.
Fixin Uygulanması İçin Gereken Unsurlar
Channel Switcher fixi genellikle C++ tabanlı oyun sunucu kaynak kodları üzerinde çalıştırılır. Fixin doğru şekilde uygulanabilmesi için, oyuncu verilerinin güvenli bir şekilde başka bir kanala aktarılması gerekir. Bu süreçte DB Core (veritabanı çekirdeği), Game Server ve Auth Server yapıları senkronize çalışmalıdır. Ayrıca, Client Src tarafında da bazı düzenlemeler yapılması gerekebilir. Bu düzenlemeler genellikle UIScript ve Python GUI tabanlıdır.
Fixin Kurulum Adımları
Kurulum öncesi dikkat edilmesi gereken önemli bir husus vardır: Sunucu kaynak kodlarınızın yedeklerini almanızdır. Fixin kurulumu sırasında kaynak koddaki bazı fonksiyonlar yeniden düzenlenir. Örneğin, char_manager.cpp veya input.cpp gibi dosyalarda değişiklikler yapılır. Bu dosyalar, oyuncu giriş çıkışlarını ve kanal geçişlerini yöneten ana bileşenlerdir. Fixin uygulanması ile birlikte, oyuncu verileri önce geçici olarak saklanır, daha sonra hedef kanala aktarılır. Bu sayede bağlantı kopmadan geçiş sağlanır.
Fixin Olası Riskleri ve Dikkat Edilmesi Gerekenler
Her ne kadar Channel Switcher fixi birçok fayda sağlasa da, yanlış uygulanması durumunda sunucuda ciddi hatalara yol açabilir. Özellikle veritabanı ile ilgili işlemlerde hata yapılması, oyuncu verilerinin silinmesine veya bozulmasına neden olabilir. Bu nedenle, fixi uygulamadan önce DB Core ve Game Core üzerinde yeterli bilgiye sahip olmanız gerekir. Ayrıca, fixin test edildiği bir ortamda (örneğin localhost) deneme yapılmasında fayda vardır.
Fixin Faydaları
Channel Switcher fixi sayesinde oyuncuların PvP ve PVE aktiviteleri daha akıcı hale gelir. Özellikle turnuvalarda ya da büyük çaplı savaşlarda, oyuncular hızlıca kanal değiştirerek stratejik hareketler gerçekleştirebilirler. Bu da hem oyuncu memnuniyetini artırır hem de sunucu kalitesini yükseltir. Ayrıca, kanal geçişlerinde yaşanan bekleme süresinin azalması, sunucunun genel performansını olumlu yönde etkiler.
What is Channel Switcher Fix?
Channel Switcher fix is one of the systems developed to enhance server performance and allow players to play more smoothly on Metin2 private servers. This system helps reduce issues such as freezing, waiting times, and disconnections during channel switching. The fix is especially important for large-scale PvP servers, as enabling players to switch maps quickly can provide strategic advantages in battles.
Main Objectives of Channel Switcher Fix
The main goal of this fix is to prevent connection drops and data losses that occur while players are switching channels. Under normal conditions, when switching channels in a Metin2 private server, a player first logs out and then logs into the new channel. This process causes a brief connection interruption. In combat situations, this can lead to significant disadvantages. With the Channel Switcher fix, this process is optimized to keep connection interruptions at a minimum level.
Requirements for Applying the Fix
The Channel Switcher fix typically operates on C++ based game server source codes. To apply the fix correctly, player data must be securely transferred to another channel. During this process, DB Core (database core), Game Server, and Auth Server structures must work synchronously. Additionally, some modifications might be required on the Client Src side. These modifications are usually based on UIScript and Python GUI.
Installation Steps of the Fix
An important point to consider before installation is backing up your server source code. During the installation process, certain functions in the source code are rearranged. For example, files like char_manager.cpp or input.cpp are modified. These files manage player logins, logouts, and channel switches. After applying the fix, player data is temporarily stored and then transferred to the target channel, allowing a seamless transition without disconnection.
Potential Risks and Precautions of the Fix
Although the Channel Switcher fix provides many benefits, if applied incorrectly, it may cause serious errors on the server. Especially mistakes related to database operations could result in player data being deleted or corrupted. Therefore, you should have sufficient knowledge about DB Core and Game Core before applying the fix. It is also recommended to test the fix in an environment like localhost before going live.
Benefits of the Fix
With the Channel Switcher fix, player PvP and PVE activities become more fluid. Particularly during tournaments or large-scale battles, players can strategically switch channels quickly. This not only increases player satisfaction but also enhances server quality. Moreover, reducing wait times during channel switches positively impacts overall server performance.
char.cpp açalım
aratalım
Kod:
void CHARACTER::ChannelSwitch(int iNewChannel)
kod bloğunu komple değiştirelim
Kod:
void CHARACTER::ChannelSwitch(int iNewChannel){ //* START DUPLICATION FIX //* prevent problems about duplication of items //* using safebox/exchange/shop/acce if(!CanWarp()){ return; } //* END DUPLICATION FIX long lAddr; long lMapIndex; WORD wPort; long x = this->GetX(); long y = this->GetY(); if (!CMapLocation::instance().Get(x, y, lMapIndex, lAddr, wPort)) { return; } if(lMapIndex >= 10000){ return; } std::map<WORD, int>ch; for(int i = 0; i < 4; i++){ for(int i2 = 1; i2 < 9; i2++){ ch[30*1000 + i*100 + i2] = i+1; } } int chan; if(ch.find(wPort) != ch.end()){ chan = ch[wPort]; }else{return;} Stop(); Save(); if(GetSectree()){ GetSectree()->RemoveEntity(this); ViewCleanup(); EncodeRemovePacket(this); } TPacketGCWarp p; p.bHeader = HEADER_GC_WARP; p.lX = x; p.lY = y; p.lAddr = lAddr; p.wPort = (wPort - 100*(chan-1) + 100*(iNewChannel-1)); GetDesc()->Packet(&p, sizeof(TPacketGCWarp)); }
burada aslında sorun çözülmüş oluyor fakat offline shop kullanan arkadaşlar içinde fixin devamı var
(buradan aşağıdakileri değiştirmeden önce uyarı eğer aşağıdaki tanımlayıcılar sizin offline shopunuzda yoksa, yani fonksiyon olarak kullanılırmıyorsa eklemenize gerek yok birşeyi çalıştırmayacaktır. eğer kendinizin off shopuna göre uyarlarsanız çözecektir o ayrı konu.)
yine aratalım
Kod:
komple değiştirelim
Kod:
bool CHARACTER::CanWarp() const { const int iPulse = thecore_pulse(); const int limit_time = PASSES_PER_SEC(g_nPortalLimitTime); if ((iPulse - GetSafeboxLoadTime()) < limit_time) return false; if ((iPulse - GetExchangeTime()) < limit_time) return false; if ((iPulse - GetMyShopTime()) < limit_time) return false; if ((iPulse - GetRefineTime()) < limit_time) return false; if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen()) return false; #ifdef __ENABLE_NEW_OFFLINESHOP__ if (iPulse - GetOfflineShopUseTime() < limit_time) return false; if (GetOfflineShopGuest() || GetAuctionGuest()) return false; #endif return true; }
yine aratalım
Kod:
void ResetStopTime();
altına ekleyelim
Kod:
#ifdef __ENABLE_NEW_OFFLINESHOP__ public: int GetOfflineShopUseTime() const {return m_iOfflineShopUseTime;} void SetOfflineShopUseTime(){m_iOfflineShopUseTime = thecore_pulse();} private: int m_iOfflineShopUseTime = 0; #endif
burdan Ikarusa selam olsun konuyu ondan alıntıladım herkese iyi akşamlar
Channel Switcher (Kanal Değiştirici) Fixi Nedir?
Metin2 özel sunucularında sunucu performansını artırmak ve oyuncuların daha rahat bir şekilde oyun oynamasını sağlamak amacıyla geliştirilen sistemlerden biridir Channel Switcher fixi. Bu sistem sayesinde oyuncular farklı kanallar arasında geçiş yapabilirken, kanal değiştirme esnasında yaşanan donmalar, bekleme süreleri ve sunucudan atılma gibi sorunlar minimize edilir. Bu fix, özellikle büyük çaplı PvP sunucularında büyük önem taşır çünkü oyuncuların hızlıca harita değişimi yapabilmesi, savaşlarda stratejik avantaj sağlayabilir.
Channel Switcher Fixinin Temel Amaçları
Bu fixin temel amacı, oyuncuların kanal değiştirmeleri sırasında meydana gelen bağlantı kopmalarını ve veri kayıplarını engellemektir. Normal şartlarda bir Metin2 özel sunucusunda kanal değiştirme işlemi sırasında oyuncu önce çıkış yapar, ardından yeni kanala giriş yapar. Bu süreçte kısa da olsa bir bağlantı kesintisi yaşanır. Bu da özellikle savaş esnasında ciddi dezavantajlara yol açabilir. Channel Switcher fixi ile bu süreç optimize edilerek, bağlantı kesintisi minimum seviyede tutulur.
Fixin Uygulanması İçin Gereken Unsurlar
Channel Switcher fixi genellikle C++ tabanlı oyun sunucu kaynak kodları üzerinde çalıştırılır. Fixin doğru şekilde uygulanabilmesi için, oyuncu verilerinin güvenli bir şekilde başka bir kanala aktarılması gerekir. Bu süreçte DB Core (veritabanı çekirdeği), Game Server ve Auth Server yapıları senkronize çalışmalıdır. Ayrıca, Client Src tarafında da bazı düzenlemeler yapılması gerekebilir. Bu düzenlemeler genellikle UIScript ve Python GUI tabanlıdır.
Fixin Kurulum Adımları
Kurulum öncesi dikkat edilmesi gereken önemli bir husus vardır: Sunucu kaynak kodlarınızın yedeklerini almanızdır. Fixin kurulumu sırasında kaynak koddaki bazı fonksiyonlar yeniden düzenlenir. Örneğin, char_manager.cpp veya input.cpp gibi dosyalarda değişiklikler yapılır. Bu dosyalar, oyuncu giriş çıkışlarını ve kanal geçişlerini yöneten ana bileşenlerdir. Fixin uygulanması ile birlikte, oyuncu verileri önce geçici olarak saklanır, daha sonra hedef kanala aktarılır. Bu sayede bağlantı kopmadan geçiş sağlanır.
Fixin Olası Riskleri ve Dikkat Edilmesi Gerekenler
Her ne kadar Channel Switcher fixi birçok fayda sağlasa da, yanlış uygulanması durumunda sunucuda ciddi hatalara yol açabilir. Özellikle veritabanı ile ilgili işlemlerde hata yapılması, oyuncu verilerinin silinmesine veya bozulmasına neden olabilir. Bu nedenle, fixi uygulamadan önce DB Core ve Game Core üzerinde yeterli bilgiye sahip olmanız gerekir. Ayrıca, fixin test edildiği bir ortamda (örneğin localhost) deneme yapılmasında fayda vardır.
Fixin Faydaları
Channel Switcher fixi sayesinde oyuncuların PvP ve PVE aktiviteleri daha akıcı hale gelir. Özellikle turnuvalarda ya da büyük çaplı savaşlarda, oyuncular hızlıca kanal değiştirerek stratejik hareketler gerçekleştirebilirler. Bu da hem oyuncu memnuniyetini artırır hem de sunucu kalitesini yükseltir. Ayrıca, kanal geçişlerinde yaşanan bekleme süresinin azalması, sunucunun genel performansını olumlu yönde etkiler.
What is Channel Switcher Fix?
Channel Switcher fix is one of the systems developed to enhance server performance and allow players to play more smoothly on Metin2 private servers. This system helps reduce issues such as freezing, waiting times, and disconnections during channel switching. The fix is especially important for large-scale PvP servers, as enabling players to switch maps quickly can provide strategic advantages in battles.
Main Objectives of Channel Switcher Fix
The main goal of this fix is to prevent connection drops and data losses that occur while players are switching channels. Under normal conditions, when switching channels in a Metin2 private server, a player first logs out and then logs into the new channel. This process causes a brief connection interruption. In combat situations, this can lead to significant disadvantages. With the Channel Switcher fix, this process is optimized to keep connection interruptions at a minimum level.
Requirements for Applying the Fix
The Channel Switcher fix typically operates on C++ based game server source codes. To apply the fix correctly, player data must be securely transferred to another channel. During this process, DB Core (database core), Game Server, and Auth Server structures must work synchronously. Additionally, some modifications might be required on the Client Src side. These modifications are usually based on UIScript and Python GUI.
Installation Steps of the Fix
An important point to consider before installation is backing up your server source code. During the installation process, certain functions in the source code are rearranged. For example, files like char_manager.cpp or input.cpp are modified. These files manage player logins, logouts, and channel switches. After applying the fix, player data is temporarily stored and then transferred to the target channel, allowing a seamless transition without disconnection.
Potential Risks and Precautions of the Fix
Although the Channel Switcher fix provides many benefits, if applied incorrectly, it may cause serious errors on the server. Especially mistakes related to database operations could result in player data being deleted or corrupted. Therefore, you should have sufficient knowledge about DB Core and Game Core before applying the fix. It is also recommended to test the fix in an environment like localhost before going live.
Benefits of the Fix
With the Channel Switcher fix, player PvP and PVE activities become more fluid. Particularly during tournaments or large-scale battles, players can strategically switch channels quickly. This not only increases player satisfaction but also enhances server quality. Moreover, reducing wait times during channel switches positively impacts overall server performance.
