3 FARKLI TELEPORT SİSTEMİ VARDIR TEK BİR SİSTEM DEĞİLDİR İSTEDİĞİNİZ 3 FARKLI SİSTEMDEN BİR TANESİNİ OYUNUNUZA KURABİLİRSİNİZ. KAFANIZA GÖRE
Komut Kaydı
Oyuncu oyunda /git oyuncu_ismi yazar.
Eğer izin varsa, direkt olarak o oyuncunun koordinatlarına ışınlanır.
Güvenlik ve sınırlar kontrol edilir.
İSTEĞE BAĞLI Haritalar arası ışınlanma izni (map)
Öncelikle, hangi haritalar arasında ışınlanmaya izin verileceğini belirle
CanTeleport() fonksiyonunu aşağıdaki şekilde güncelle:
Komut Fonksiyonunu Haritalar Arası Işınlanmayı Destekleyecek Şekilde Güncelle
EK OLARAK YANINA IŞINLACAĞI KİŞİYE KABUL VEYA HAYIR İSTEĞİ GELSİN VE OYUNCU İSTEMEDEN KİMSE YANINA GELMESİN
oyuncu /kabul veya /reddet komutlarıyla cevap verecek
İstek gönderildiğinde oyuncuya bir onay mesajı gönderilecek.
Değişkenler ve Yapılar
Komutlar ve İşleyiş
/git <oyuncu_ismi> — Teleport İsteği Gönder
/kabul — İsteği Kabul Et
/reddet — İsteği Reddet
Komut Kayıtları kısacsı komutlar
Metin2 Teleport Sistemi Nedir?
Metin2 özel sunucularında geliştirilen teleport sistemi, oyuncuların harita üzerinde hızlıca seyahat etmesini sağlayan temel sistemlerden biridir. Bu sistem, hem oyuncu deneyimini artırır hem de PvP savaşları sırasında stratejik hareketler yapılabilmesine olanak tanır. Teleport sistemi, Metin2 geliştiricileri tarafından genellikle C++ veya Python tabanlı olarak entegre edilir.
Teleport Sisteminin Temel Özellikleri
Metin2 teleport sistemi, belirli koordinatlara veya harita konumlarına anında geçiş imkanı sunar. Bu özellik, oyuncuların uzun mesafeleri hızlıca kat etmesini sağlar. Sistem genellikle özel sunucularda event aktivitelerinde, PvP bölgelerine geçişlerde ya da belirli görevlerde aktif olarak kullanılır. Python GUI ve UIScript gibi arayüz sistemleriyle birlikte geliştirildiğinde daha kullanıcı dostu bir yapı elde edilir.
C++ ve Python Tabanlı Uygulamalar
Metin2 teleport sistemi genellikle C++ tabanlı sunucu tarafında tanımlanır. Bu sistemde, oyuncu isteklerine göre belirlenen koordinatlara yönlendirme yapılır. Python tarafında ise genellikle GUI üzerinden menü sistemleriyle bu özellik kullanılır. PyRoot klasörleri ve DB Core sistemleriyle entegrasyon sağlandığında teleport sistemi güçlü bir yapıya kavuşur.
Teleport Sisteminin Kurulumu
Kurulum öncesi hazırlık aşamasında, Metin2 server src dosyaları üzerinde gerekli değişiklikler yapılmalıdır. Auth ve game sunucularında eş zamanlı çalışması sağlanarak istemci tarafında teleport komutları aktif edilir. Pack dosyaları güncellenerek oyunculara sunulan menüye yeni butonlar eklenebilir. Martysama veya diğer Metin2Dev kaynaklarından alınan örnek sistemlerle bu süreç kolaylaştırılabilir.
Oyun İçinde Kullanımı
Oyuncular, belirli seviye veya item şartlarını karşıladıklarında teleport menüsüne erişebilir. Bu menüde farklı haritalar ve koordinatlar listelenir. Seçilen konuma göre karakter anında yönlendirilir. Ancak teleport sisteminin滥用 (kötüye kullanım) engellenmek için sınırlamalar getirilmelidir. Bu sınırlamalar genellikle cooldown süresiyle çözülür.
What is the Metin2 Teleport System?
The teleport system developed on Metin2 private servers is one of the essential features that allows players to travel quickly across the map. This system enhances player experience and enables strategic movements during PvP battles. The teleport system is generally integrated by Metin2 developers using C++ or Python-based approaches.
Key Features of the Teleport System
The Metin2 teleport system provides instant transition to specific coordinates or map locations. This feature helps players travel long distances quickly. The system is commonly used in private servers during events, transitions to PvP zones, or specific quests. When developed together with interface systems like Python GUI and UIScript, it becomes more user-friendly.
C++ and Python-Based Applications
The Metin2 teleport system is usually defined on the server-side using C++. In this system, players are directed to predetermined coordinates based on their requests. On the Python side, menu systems via GUI are typically used to operate this feature. Integration with PyRoot folders and DB Core systems gives the teleport system a robust structure.
Installation of the Teleport System
During the preparation phase before installation, necessary changes must be made to the Metin2 server src files. By ensuring synchronized operation between auth and game servers, teleport commands are activated on the client side. Pack files are updated to add new buttons to the menu presented to players. This process can be simplified using sample systems from sources like Martysama or other Metin2Dev resources.
In-Game Usage
Players can access the teleport menu once they meet certain level or item requirements. Different maps and coordinates are listed in this menu. Characters are instantly redirected based on the selected location. However, to prevent abuse of the teleport system, limitations should be implemented. These limitations are usually resolved with cooldown periods.
Kod:
// teleport_command.cpp #include "char.h" #include "command.h" #include "desc.h" ACMD(do_teleport_to_player) { if (!ch) return; if (!argument || strlen(argument) < 2) { ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /git <oyuncu_ismi>"); return; } LPCHARACTER target_char = CHARACTER_MANAGER::instance().FindPC(argument); if (!target_char) { ch->ChatPacket(CHAT_TYPE_INFO, "Oyuncu bulunamadı."); return; } // İzin kontrolleri (örn. PvP bölgesi kontrolü) if (ch->IsDead() || target_char->IsDead()) { ch->ChatPacket(CHAT_TYPE_INFO, "Ölü iken ışınlanamazsınız."); return; } if (ch->GetMapIndex() != target_char->GetMapIndex()) { ch->ChatPacket(CHAT_TYPE_INFO, "Şu an farklı haritalardasınız, ışınlanma yapılamıyor."); return; } // Teleport işlemi int x = target_char->GetX(); int y = target_char->GetY(); ch->WarpSet(x, y, ch->GetMapIndex()); ch->ChatPacket(CHAT_TYPE_INFO, "%s oyuncusunun yanına ışınlandınız.", target_char->GetName()); }
Komut Kaydı
Kod:
void RegisterCommands() { command_info.insert(std::make_pair("git", do_teleport_to_player)); }
Özet
Oyuncu oyunda /git oyuncu_ismi yazar.
Eğer izin varsa, direkt olarak o oyuncunun koordinatlarına ışınlanır.
Güvenlik ve sınırlar kontrol edilir.
İSTEĞE BAĞLI Haritalar arası ışınlanma izni (map)
Öncelikle, hangi haritalar arasında ışınlanmaya izin verileceğini belirle
Kod:
#include <set> static const std::set<int> allowedTeleportMaps = { 0, // Örnek: a BAYRAK 1, // Örnek: a BAYRAK 2, // Örnek: a BAYRAK 10, // Başka bir harita // İzin verilen diğer harita indeksleri... }; inline bool IsTeleportAllowedInMap(int mapIndex) { return allowedTeleportMaps.find(mapIndex) != allowedTeleportMaps.end(); }
Harita İzin Kontrolünü Güncelleme
CanTeleport() fonksiyonunu aşağıdaki şekilde güncelle:
Kod:
bool CHARACTER::CanTeleport() const { if (IsDead()) return false; if (!IsTeleportAllowedInMap(GetMapIndex())) return false; if (IsInArena() || IsInBattleZone()) return false; return true; }
Komut Fonksiyonunu Haritalar Arası Işınlanmayı Destekleyecek Şekilde Güncelle
Kod:
ACMD(do_teleport_to_player) { if (!ch) return; if (!argument || strlen(argument) < 2) { ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /git <oyuncu_ismi>"); return; } if (!ch->CanTeleport()) { ch->ChatPacket(CHAT_TYPE_INFO, "Bu bölgede ışınlanamazsınız."); return; } if (!ch->CanUseTeleport()) { ch->ChatPacket(CHAT_TYPE_INFO, "Işınlanma komutunu çok sık kullandınız. Lütfen bekleyin."); return; } LPCHARACTER target_char = CHARACTER_MANAGER::instance().FindPC(argument); if (!target_char) { ch->ChatPacket(CHAT_TYPE_INFO, "Oyuncu bulunamadı."); return; } if (!target_char->CanTeleport()) { ch->ChatPacket(CHAT_TYPE_INFO, "Hedef oyuncu şu an ışınlanmaya uygun değil."); return; } // Harita izin kontrolü (hedef harita) if (!IsTeleportAllowedInMap(target_char->GetMapIndex())) { ch->ChatPacket(CHAT_TYPE_INFO, "Hedef haritada ışınlanma izni yok."); return; } // Işınlanma işlemi ch->SetTeleporting(true); int x = target_char->GetX(); int y = target_char->GetY(); int targetMap = target_char->GetMapIndex(); ch->WarpSet(x, y, targetMap); ch->SetTeleporting(false); ch->SetLastTeleportTime(get_dword_time()); ch->ChatPacket(CHAT_TYPE_INFO, "%s oyuncusunun yanına ışınlandınız.", target_char->GetName()); }
EK OLARAK YANINA IŞINLACAĞI KİŞİYE KABUL VEYA HAYIR İSTEĞİ GELSİN VE OYUNCU İSTEMEDEN KİMSE YANINA GELMESİN
oyuncu /kabul veya /reddet komutlarıyla cevap verecek
İstek gönderildiğinde oyuncuya bir onay mesajı gönderilecek.
Değişkenler ve Yapılar
Kod:
// character.h class CHARACTER { private: LPCHARACTER m_lpPendingTeleportRequester; // Teleport isteği gönderen oyuncu bool m_bTeleportRequestPending; public: void SetPendingTeleportRequester(LPCHARACTER requester) { m_lpPendingTeleportRequester = requester; m_bTeleportRequestPending = true; } void ClearPendingTeleportRequester() { m_lpPendingTeleportRequester = nullptr; m_bTeleportRequestPending = false; } LPCHARACTER GetPendingTeleportRequester() const { return m_lpPendingTeleportRequester; } bool HasTeleportRequestPending() const { return m_bTeleportRequestPending; } };
Komutlar ve İşleyiş
/git <oyuncu_ismi> — Teleport İsteği Gönder
Kod:
ACMD(do_teleport_request) { if (!ch) return; if (!argument || strlen(argument) < 2) { ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /git <oyuncu_ismi>"); return; } LPCHARACTER target_char = CHARACTER_MANAGER::instance().FindPC(argument); if (!target_char) { ch->ChatPacket(CHAT_TYPE_INFO, "Oyuncu bulunamadı."); return; } if (target_char == ch) { ch->ChatPacket(CHAT_TYPE_INFO, "Kendinize ışınlanamazsınız."); return; } if (!ch->CanTeleport() || !target_char->CanTeleport()) { ch->ChatPacket(CHAT_TYPE_INFO, "Şu an ışınlanma işlemi yapılamıyor."); return; } if (target_char->HasTeleportRequestPending()) { ch->ChatPacket(CHAT_TYPE_INFO, "Hedef oyuncunun bekleyen başka bir isteği var."); return; } // İstek gönder target_char->SetPendingTeleportRequester(ch); target_char->ChatPacket(CHAT_TYPE_NOTICE, "%s oyuncusu yanına ışınlanmak istiyor. Kabul etmek için /kabul, reddetmek için /reddet yazınız.", ch->GetName()); ch->ChatPacket(CHAT_TYPE_INFO, "%s oyuncusuna ışınlanma isteği gönderildi.", target_char->GetName()); }
/kabul — İsteği Kabul Et
Kod:
ACMD(do_teleport_accept) { if (!ch) return; if (!ch->HasTeleportRequestPending()) { ch->ChatPacket(CHAT_TYPE_INFO, "Hiçbir ışınlanma isteğiniz yok."); return; } LPCHARACTER requester = ch->GetPendingTeleportRequester(); if (!requester || !requester->IsPC()) { ch->ChatPacket(CHAT_TYPE_INFO, "Geçersiz istek."); ch->ClearPendingTeleportRequester(); return; } if (!requester->CanTeleport() || !ch->CanTeleport()) { ch->ChatPacket(CHAT_TYPE_INFO, "Şu an ışınlanma işlemi gerçekleştirilemiyor."); ch->ClearPendingTeleportRequester(); return; } // Işınlanma işlemi int x = ch->GetX(); int y = ch->GetY(); int map = ch->GetMapIndex(); requester->WarpSet(x, y, map); requester->SetLastTeleportTime(get_dword_time()); requester->ChatPacket(CHAT_TYPE_INFO, "%s oyuncusunun yanına ışınlandınız.", ch->GetName()); ch->ChatPacket(CHAT_TYPE_INFO, "%s oyuncusunu yanına kabul ettiniz.", requester->GetName()); ch->ClearPendingTeleportRequester(); }
/reddet — İsteği Reddet
Kod:
ACMD(do_teleport_reject) { if (!ch) return; if (!ch->HasTeleportRequestPending()) { ch->ChatPacket(CHAT_TYPE_INFO, "Hiçbir ışınlanma isteğiniz yok."); return; } LPCHARACTER requester = ch->GetPendingTeleportRequester(); if (requester) { requester->ChatPacket(CHAT_TYPE_INFO, "%s oyuncusu ışınlanma isteğinizi reddetti.", ch->GetName()); } ch->ChatPacket(CHAT_TYPE_INFO, "Işınlanma isteği reddedildi."); ch->ClearPendingTeleportRequester(); }
Komut Kayıtları kısacsı komutlar
Kod:
void RegisterCommands() { command_info.insert(std::make_pair("git", do_teleport_request)); command_info.insert(std::make_pair("kabul", do_teleport_accept)); command_info.insert(std::make_pair("reddet", do_teleport_reject)); }
Metin2 Teleport Sistemi Nedir?
Metin2 özel sunucularında geliştirilen teleport sistemi, oyuncuların harita üzerinde hızlıca seyahat etmesini sağlayan temel sistemlerden biridir. Bu sistem, hem oyuncu deneyimini artırır hem de PvP savaşları sırasında stratejik hareketler yapılabilmesine olanak tanır. Teleport sistemi, Metin2 geliştiricileri tarafından genellikle C++ veya Python tabanlı olarak entegre edilir.
Teleport Sisteminin Temel Özellikleri
Metin2 teleport sistemi, belirli koordinatlara veya harita konumlarına anında geçiş imkanı sunar. Bu özellik, oyuncuların uzun mesafeleri hızlıca kat etmesini sağlar. Sistem genellikle özel sunucularda event aktivitelerinde, PvP bölgelerine geçişlerde ya da belirli görevlerde aktif olarak kullanılır. Python GUI ve UIScript gibi arayüz sistemleriyle birlikte geliştirildiğinde daha kullanıcı dostu bir yapı elde edilir.
C++ ve Python Tabanlı Uygulamalar
Metin2 teleport sistemi genellikle C++ tabanlı sunucu tarafında tanımlanır. Bu sistemde, oyuncu isteklerine göre belirlenen koordinatlara yönlendirme yapılır. Python tarafında ise genellikle GUI üzerinden menü sistemleriyle bu özellik kullanılır. PyRoot klasörleri ve DB Core sistemleriyle entegrasyon sağlandığında teleport sistemi güçlü bir yapıya kavuşur.
Teleport Sisteminin Kurulumu
Kurulum öncesi hazırlık aşamasında, Metin2 server src dosyaları üzerinde gerekli değişiklikler yapılmalıdır. Auth ve game sunucularında eş zamanlı çalışması sağlanarak istemci tarafında teleport komutları aktif edilir. Pack dosyaları güncellenerek oyunculara sunulan menüye yeni butonlar eklenebilir. Martysama veya diğer Metin2Dev kaynaklarından alınan örnek sistemlerle bu süreç kolaylaştırılabilir.
Oyun İçinde Kullanımı
Oyuncular, belirli seviye veya item şartlarını karşıladıklarında teleport menüsüne erişebilir. Bu menüde farklı haritalar ve koordinatlar listelenir. Seçilen konuma göre karakter anında yönlendirilir. Ancak teleport sisteminin滥用 (kötüye kullanım) engellenmek için sınırlamalar getirilmelidir. Bu sınırlamalar genellikle cooldown süresiyle çözülür.
What is the Metin2 Teleport System?
The teleport system developed on Metin2 private servers is one of the essential features that allows players to travel quickly across the map. This system enhances player experience and enables strategic movements during PvP battles. The teleport system is generally integrated by Metin2 developers using C++ or Python-based approaches.
Key Features of the Teleport System
The Metin2 teleport system provides instant transition to specific coordinates or map locations. This feature helps players travel long distances quickly. The system is commonly used in private servers during events, transitions to PvP zones, or specific quests. When developed together with interface systems like Python GUI and UIScript, it becomes more user-friendly.
C++ and Python-Based Applications
The Metin2 teleport system is usually defined on the server-side using C++. In this system, players are directed to predetermined coordinates based on their requests. On the Python side, menu systems via GUI are typically used to operate this feature. Integration with PyRoot folders and DB Core systems gives the teleport system a robust structure.
Installation of the Teleport System
During the preparation phase before installation, necessary changes must be made to the Metin2 server src files. By ensuring synchronized operation between auth and game servers, teleport commands are activated on the client side. Pack files are updated to add new buttons to the menu presented to players. This process can be simplified using sample systems from sources like Martysama or other Metin2Dev resources.
In-Game Usage
Players can access the teleport menu once they meet certain level or item requirements. Different maps and coordinates are listed in this menu. Characters are instantly redirected based on the selected location. However, to prevent abuse of the teleport system, limitations should be implemented. These limitations are usually resolved with cooldown periods.
