Mini Haritada istediğiniz yere ışınlanın

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba Gamemasterların oyuna daha hakim olup belirli kordinatlara hızlıca ışınlanabilmeleri için hazırladığım küçük bir yardımcıdır kendi sunucunuza göre düzenlemeniz gerekmektedir sadece basit halini ekliyorum.

M bastığınızda açılan haritada Mouse ile tıkladığınız kordinata ışınlanmanızı sağlar.

17.01.2021 Tarihinde Güncellendi
  • <li data-xf-list-type="ul">Işınlanma sonrası yaşanan donma/kasma sorunları düzeltildi.

Screenshot_7.png


uiminimap.py içerisinde bulun

Kod:
self.SetPosition(wndMgr.GetScreenWidth() - 136 - 256 - 10, 0)

Altına ekleyin.

Kod:
self.board.SetOnMouseLeftButtonUpEvent(ui.__mem_func__(self.OnMouseLeftButtonUpEvent))

uiminimap.py içerisinde bulun

Kod:
def SetCenterPositionAdjust(self, x, y):         self.SetPosition((wndMgr.GetScreenWidth() - self.GetWidth()) / 2 + x, (wndMgr.GetScreenHeight() - self.GetHeight()) / 2 + y)

Altına ekleyin

Kod:
def OnMouseLeftButtonUpEvent(self):         (mouseX, mouseY) = wndMgr.GetMousePosition()         (bFind, sName, iPosX, iPosY, dwTextColor, dwGuildID) = miniMap.GetAtlasInfo(mouseX, mouseY)         net.SendChatPacket("/go %s %s" % (str(iPosX), str(iPosY)))

PythonMinimap.cpp içerisinde bulun

Kod:
bool CPythonMiniMap::GetAtlasInfo(float fScreenX, float fScreenY, std::string &amp; rReturnString, float * pReturnPosX, float * pReturnPosY, DWORD * pdwTextColor, DWORD * pdwGuildID) {     float fRealX = (fScreenX - m_fAtlasScreenX) * (m_fAtlasMaxX / m_fAtlasImageSizeX);     float fRealY = (fScreenY - m_fAtlasScreenY) * (m_fAtlasMaxY / m_fAtlasImageSizeY);

Altına ekleyin

Kod:
*pReturnPosX = fRealX;     *pReturnPosY = fRealY;

NetworkActorManager.cpp dosyası içerisinde bulun --------- YENİ 17.01.2021

Kod:
bool CNetworkActorManager::__IsVisiblePos(LONG lPosX, LONG lPosY)

Methodun tamamını bununla değiştirin --------- YENİ 17.01.2021

Kod:
bool CNetworkActorManager::__IsVisiblePos(LONG lPosX, LONG lPosY) {     LONG dx = lPosX - m_lMainPosX;     LONG dy = lPosY - m_lMainPosY;     LONG len = (LONG)sqrtf((float(dx) * float(dx) + float(dy) * float(dy)));     extern int CHAR_STAGE_VIEW_BOUND;     if (len &lt; CHAR_STAGE_VIEW_BOUND &amp;&amp; len &gt; -CHAR_STAGE_VIEW_BOUND)         return true;     return false; }

NetworkActorManager.cpp dosyası içerisinde bulun --------- YENİ 17.01.2021

Kod:
if (rkActorEach-&gt;IsPC() || rkActorEach-&gt;IsNPC() || rkActorEach-&gt;IsEnemy())

Bununla değiştirin --------- YENİ 17.01.2021

Kod:
if (rkActorEach-&gt;IsPC() || rkActorEach-&gt;IsNPC() || rkActorEach-&gt;IsEnemy() || rkActorEach-&gt;IsStone() )

Teşekkürler

<blockquote data-attributes="member: 1444333" data-quote="hakanvolkan01" data-source="post: 20380775" class="bbCodeBlock bbCodeBlock--expandable bbCodeBlock--quote js-expandWatch">
Kod:
#uiminimap.py net.SendChatPacket("/go %s %s" % (str(iPosX), str(iPosY))) # arat #değiştir         if chr.IsGameMaster(player.GetMainCharacterIndex()):             net.SendChatPacket("/go %s %s" % (str(iPosX), str(iPosY))) import chr import player #eğer importlarda yoksa ekle

Artık "M" bastığınızda açılan büyük haritada GM yetkisine sahip olan kişi haritada tıkladığı herhangi bir yere ışınlanabilir bununla beraber yönetimi dahada kolaylaştırmak için sectree_manager.cpp SendNPCPosition fonksiyonundaki örnekten yola çıkarak x haritada çevrimiçi gamemastera oyuncuların kordinat bilgilerini gönderip slotlar da kasan oyuncuları haritadan görerek üstüne tıklayıp takip edebilirsiniz hile takibinde çok güzel işe yarıyor :)
Mini Haritada İstenilen Yere Işınlanma Sistemi Nedir?

Metin2 özel sunucularında oyun içi deneyimi artırmak için geliştirilen sistemlerden biri de mini harita üzerinde belirlenen konuma ışınlanabilme özelliğidir. Bu özellik, oyuncuların harita üzerinde gezinmesini kolaylaştırırken aynı zamanda zaman kazanmalarını sağlar. Özellikle PvP odaklı sunucularda hızlı hareket etmek ve stratejik pozisyonlara erişmek büyük avantaj sağlar.

Sistemin Temel Yapısı

Bu sistem, genellikle Python tabanlı GUI üzerinden entegre edilir. Oyuncu, mini haritayı açtığında ekrana gelen arayüz üzerinden tıklamak istediği koordinata ışınlanabilir. Bu işlem sırasında C++ backend tarafında bir komut çalışır ve oyuncunun konumu güncellenir. Bu işlem, güvenlik açısından doğrulama süreçlerinden geçirilir.

Kurulum ve Entegrasyon

Mini harita ışınlanma sistemi kurulumu, Metin2 server src dosyalarında değişiklik yapmayı gerektirir. Öncelikle, GUI tarafında bir buton veya tıklanabilir alan oluşturulur. Ardından, tıklanan koordinat bilgisi sunucuya gönderilir. Sunucu tarafında game server programming ile bu koordinat kontrol edilir ve ışınlanma işlemi başlatılır. Bu sistem, py root ve uiscript dosyalarıyla birlikte çalışarak tam entegrasyon sağlar.

Avantajları ve Kullanım Alanları

Oyuncular için en büyük faydası, harita üzerindeki uzun mesafeleri hızlıca geçebilmektir. Özellikle PvP savaşlarında stratejik bölgelere anında ulaşmak, rakip avantajı yakalamak için kritik olabilir. Ayrıca bazı özel görevlerde veya pack sistemlerinde belirli konumlara gitmek için zaman kazandırır. Sistem, doğru şekilde yapılandırıldığında Metin2 development sürecinde önemli bir araç haline gelir.

Güvenlik ve Hile Engelleme

Işınlanma sistemi, hile riskini de beraberinde getirir. Bu nedenle, koordinat doğrulaması ve auth sunucusuyla senkronizasyon önemlidir. Sunucu, her ışınlanma isteğinde konumun geçerli olup olmadığını kontrol etmelidir. Aksi takdirde, oyuncular güvenli olmayan bölgelere ışınlanarak hile yapabilirler. Bu tür sistemlerde db core entegrasyonu da güvenlik katmanı olarak devreye girer.

Sonuç

Mini harita üzerinde ışınlanma sistemi, Metin2 private server geliştiricileri için kullanıcı deneyimini ciddi anlamda artıran bir özelliktir. Ancak dikkatli planlama ve doğru entegrasyon olmadan güvenlik açıklarına neden olabilir. MartySama gibi deneyimli geliştiricilerin katkılarıyla bu tür sistemler sürekli gelişmekte ve topluluk tarafından yaygınlaşmaktadır.


What is the Teleportation System to Desired Location on Mini Map?

In Metin2 private servers, one of the developed systems to enhance the in-game experience is the ability to teleport to a selected location on the mini map. This feature facilitates navigation across the map while saving players valuable time. Particularly in PvP-oriented servers, fast movement and access to strategic positions provide significant advantages.

Core Structure of the System

This system is typically integrated via a Python-based GUI. When the player opens the mini map, they can click on the desired coordinates within the displayed interface to teleport. In the background, a command executes on the C++ backend to update the player's position. This action passes through validation processes for security purposes.

Installation and Integration

Installing the mini map teleportation system requires modifications to Metin2 server src files. First, a button or clickable area must be created in the GUI. Then, the clicked coordinate information is sent to the server. On the server side, game server programming verifies these coordinates and initiates the teleportation. This system works seamlessly with py root and uiscript files to ensure full integration.

Benefits and Use Cases

The main advantage for players is the ability to quickly traverse long distances on the map. Especially during PvP battles, instant access to strategic areas can be crucial for gaining an edge over opponents. Additionally, this system saves time when traveling to specific locations for quests or pack systems. Properly configured, it becomes a vital tool in Metin2 development.

Security and Anti-Cheat Measures

Teleportation systems also introduce potential cheating risks. Therefore, coordinate validation and synchronization with the auth server are essential. The server must verify whether each teleport request is valid. Otherwise, players might exploit the system to teleport to unsafe zones. In such systems, db core integration acts as an additional security layer.

Conclusion

The mini map teleportation system is a feature that significantly enhances user experience for Metin2 private server developers. However, without careful planning and proper integration, it may lead to security vulnerabilities. With contributions from experienced developers like MartySama, such systems continue to evolve and gain popularity among the community.
 

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

Benzer konular

Geri
Üst Alt