Gözlemci Modu - Evcil Hayvanlar Ve Binekler İçin Hata Düzeltmeleri

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Bu işlem, lonca savaşları gibi gözlemci modundaki bir hatayı düzeltmek içindir.

Slotta bir petiniz varsa ve her ışınlandığınız da yaptığınızda yeniden diriliyorsa, bu sizi etkiler.
Yuvada bir bineğiniz varsa ve her teleport yaptığınızda yeniden doğuyorsa, bu sizi etkiler.
Sadece binek sizi takip ediyorsa ve gözlemcideyken attan çıkarsanız bu sizi etkiler.
Bu sonuncusu at için de geçerlidir.
Hata, oyuncu gözlemci modundayken evcil hayvanı, bineği veya atın herkes tarafından görülebilmesini sağlayacak yukarıda açıklanan noktalardan herhangi birine sahip olmaktan ibarettir.

Başlayalım ;

char_horse.cpp dosyasını açın ve ardından:

m_chHorse->SetRider(this);
Değiştirin;
m_chHorse->SetObserverMode(IsObserverMode());
PetSystem.cpp'yi açın

Aratın;

if (0 != m_pkChar)
{
m_pkChar->Show (m_pkOwner->GetMapIndex(), x, y);
m_dwVID = m_pkChar->GetVID();

return m_dwVID;
}

Ve bunu şu şekilde değiştirin;

if (0 != m_pkChar)
{
m_pkChar->Show (m_pkOwner->GetMapIndex(), x, y);
m_dwVID = m_pkChar->GetVID();

m_pkChar->SetObserverMode(m_pkOwner->IsObserverMode());

return m_dwVID;
}

Aynı dosya da aratın;

m_pkChar->Show(m_pkOwner->GetMapIndex(), x, y, z);

Sonra Ekleyin;

m_pkChar->SetObserverMode(m_pkOwner->IsObserverMode());

Ve aynı dosyada en sona şunları ekleyin;

void CPetSystem::UpdateObserver()
{
if (!m_pkOwner)
return;

const bool bFlag = m_pkOwner->IsObserverMode();

for (TPetActorMap::const_iterator iter = m_petActorMap.begin(); iter != m_petActorMap.end(); ++iter)
{
const CPetActor* petActor = iter->second;
if (petActor == nullptr)
continue;

const LPCHARACTER petCh = petActor->GetCharacter();
if (petCh)
petCh->SetObserverMode(bFlag);
}
}
PetSystem.h'yi açın ve ardından:

Aratın;

void DeletePet(CPetActor* petActor);

Ekleyin;

void UpdateObserver();


entity.cpp'yi açın;

Bu işlevin içinde:
Aratın;

void CEntity::SetObserverMode(bool bFlag)

Bunu şu şekilde değiştirin:

if (IsType(ENTITY_CHARACTER))
{
LPCHARACTER ch = (LPCHARACTER) this;

LPCHARACTER chHorse = ch->GetHorse();
if (chHorse)
chHorse->SetObserverMode(bFlag);

CPetSystem* petSystem = ch->GetPetSystem();
if (petSystem)
petSystem->UpdateObserver();

ch->ChatPacket(CHAT_TYPE_COMMAND, "ObserverMode %d", m_bIsObserver ? 1 : 0);
}
Özel bir montaj sistemi kullanmıyorsanız işiniz bitti demektir.


Şimdi, MountSystem.cpp dosyanız varsa, açın ve şunu arayın:


Aratın;
if (0 != m_pkChar)
{
m_pkChar->Show(m_pkOwner->GetMapIndex(), x, y);
m_dwVID = m_pkChar->GetVID();

return m_dwVID;
}

Ve şu şekilde düzenleyin:

if (0 != m_pkChar)
{
m_pkChar->Show(m_pkOwner->GetMapIndex(), x, y);
m_dwVID = m_pkChar->GetVID();

m_pkChar->SetObserverMode(m_pkOwner->IsObserverMode());

return m_dwVID;
}

Aratın;

m_pkChar->Show(m_pkOwner->GetMapIndex(), x, y, z);

Ekleyin;

m_pkChar->SetObserverMode(m_pkOwner->IsObserverMode());

Dosyanın sonuna bunları ekleyin;

void CMountSystem::UpdateObserver()
{
for (TMountActorMap::const_iterator iter = m_mountActorMap.begin(); iter != m_mountActorMap.end(); ++iter)
{
const CMountActor* mountActor = iter->second;
if (mountActor == nullptr)
continue;

const LPCHARACTER mountCh = mountActor->GetCharacter();
if (mountCh)
mountCh->SetObserverMode(m_pkOwner->IsObserverMode());
}
}
MountSystem.h'yi açın ve ardından:

Aratın;

void DeleteMount(CMountActor* mountActor);

Ekleyin;

void UpdateObserver();
entity.cpp açın;

Ve şöyle yapın;

if (IsType(ENTITY_CHARACTER))
{
LPCHARACTER ch = (LPCHARACTER) this;

LPCHARACTER chHorse = ch->GetHorse();
if (chHorse)
chHorse->SetObserverMode(bFlag);

CPetSystem* petSystem = ch->GetPetSystem();
if (petSystem)
petSystem->UpdateObserver();

CMountSystem* mountSystem = ch->GetMountSystem();
if (mountSystem)
mountSystem->UpdateObserver();

ch->ChatPacket(CHAT_TYPE_COMMAND, "ObserverMode %d", m_bIsObserver ? 1 : 0);
}
Ve her şey bu kadar.

Turkmmo ailesinde bulunduğum için ve bu tarz yardım içerikli konular paylaştığım için çok mutluyum. Emeği geçen herkese teşekkür ederim.
Gözlemci Modu Nedir?
Metin2 özel sunucularında gözlemci modu, oyun içinde meydana gelen PvP olaylarını veya belirli sistemlerin nasıl çalıştığını izlemek isteyen geliştiriciler ve yöneticiler için büyük bir avantaj sağlar. Bu mod sayesinde oyuncularla aynı ortamda bulunup, herhangi bir şekilde oyun içi eylemlerde bulunmadan takip yapılabilir. Özellikle evcil hayvanlar ve binekler gibi sistemlerde hataların tespiti ve düzeltilmesi için gözlemci modu kritik öneme sahiptir.

Evcil Hayvanlar İçin Gözlemci Modunda Hata Tespiti
Metin2'de evcil hayvanlar, oyuncuların savaşlarda destek alabileceği önemli unsurlardır. Ancak bazı durumlarda evcil hayvanların davranışları ya da saldırı mantığı sistemsel hatalar barındırabilir. Gözlemci modu aktif edildiğinde, geliştirici olarak oyun içine girip evcil hayvanların hareketlerini, saldırılarını ve reaksiyonlarını etkisiz bir şekilde izleyebilirsiniz. Bu sayede, örneğin bir evcil hayvanın saldırmaması gerektiği halde saldırdığı, ya da saldırı gücü eksik hesaplandığında hangi modüllerin etkilendiğini görebilirsiniz.

Hata Düzeltme Önerileri:
- Evcil hayvan AI dosyalarını kontrol edin.
- Game core üzerinden evcil hayvan saldırı mantığını yeniden gözden geçirin.
- Pack dosyalarında yer alan efekt ve animasyon dosyalarının doğru yüklendiğinden emin olun.

Binek Sistemleri İçin Gözlemci Modu Kullanımı
Metin2'de binek sistemleri, oyuncuların hızlanmasını ve PvP'de avantaj sağlamasını sağlayan önemli bir özelliktir. Gözlemci modu sayesinde bineklerin doğrudan etkileşimde bulunduğu sistemlerin testi kolaylaşır. Örneğin, bir bineğin saldırı sırasında otomatik olarak ineceği ya da hasar almayacağı senaryolar test edilebilir. Ayrıca, binek sistemleri genellikle Python GUI ve UIScript ile entegre çalıştığı için, bu scriptlerin hatalarını gözlemci modda daha net görebilirsiniz.

Önemli Not: Gözlemci modu aktif edilirken dikkat edilmesi gereken güvenlik önlemleri vardır. Bu modda iken oynayan kullanıcılar tarafından fark edilmemek için görünmezlik ayarlarının doğru yapılandırıldığından emin olunmalıdır.

Python ve C++ Kodlama İle Gözlemci Modu Geliştirmeleri
Metin2 özel sunucularında gözlemci modu, genellikle C++ ile yazılmış game server kaynak kodları üzerinde geliştirilir. Auth ve game server arasındaki veri akışı göz önünde bulundurulduğunda, gözlemci modunun yalnızca belirli IP adreslerine veya admin yetkisine sahip oyunculara açılması önemlidir. PyRoot üzerinden geliştirilen sistemlerle birlikte, gözlemci modu için GUI arayüzü oluşturulabilir. Bu sayede geliştiriciler, gözlemci modunu daha kontrollü bir şekilde kullanabilir.

Yaygın Hatalar ve Çözümler
1. Evcil hayvan saldırılarında zamanlama hatası oluşabilir. Bu durumda AI modülünü kontrol edin.
2. Binekler PvP sırasında donabilir. Bu, client src ile ilgili olabilir.
3. Gözlemci modda iken karakterin görünür olması, güvenlik açığı yaratabilir.

Sonuç: Gözlemci modu, Metin2 özel sunucularında hem PvP sistemlerin hem de evcil hayvan ve binek gibi alt sistemlerin sorunsuz çalışmasını sağlamak adına güçlü bir araçtır. Geliştiriciler, bu modu doğru kullanarak hataları hızlıca tespit edip düzeltebilir. Metin2Lobby.com olarak, bu tür gelişmiş sistemleri uygulamak isteyen geliştiricilere yardımcı olmak için sürekli içerik üretiyoruz.


What is Observer Mode?
In Metin2 private servers, observer mode provides a great advantage for developers and administrators who wish to monitor PvP events or see how specific systems work within the game. This mode allows you to stay in the same environment with players and observe their actions without participating in any gameplay. Especially for systems such as pets and mounts, observer mode is critical for detecting and fixing errors.

Error Detection for Pets in Observer Mode
In Metin2, pets are important elements that players can use for support during combat. However, pet behaviors or attack logic may sometimes contain systemic errors. When observer mode is enabled, you can enter the game as a developer and observe pet movements, attacks, and reactions without interfering. This way, you can identify which modules are affected when a pet attacks when it shouldn't or if its damage calculation is incorrect.

Suggested Fixes:
- Check pet AI files.
- Revisit pet attack logic through the game core.
- Ensure effect and animation files in the pack are loaded correctly.

Using Observer Mode for Mount Systems
Mounts in Metin2 are key features allowing players to increase speed and gain advantages in PvP. With observer mode, testing systems directly interacting with mounts becomes easier. For example, scenarios where a mount dismounts automatically during an attack or does not take damage can be tested. Additionally, since mount systems often integrate with Python GUI and UIScript, you can more clearly detect script errors while in observer mode.

Important Note: Security precautions must be taken when enabling observer mode. Make sure invisibility settings are properly configured so users do not notice your presence while in this mode.

Observer Mode Enhancements via Python and C++ Coding
In Metin2 private servers, observer mode is generally developed on C++ based game server source codes. Considering the data flow between auth and game servers, observer mode should only be accessible to certain IP addresses or admin-level accounts. Combined with systems developed through PyRoot, a GUI interface can be created for observer mode. This allows developers to use observer mode more controllably.

Common Errors and Solutions
1. Timing errors might occur during pet attacks; check the AI module in such cases.
2. Mounts may freeze during PvP; this could be related to client src.
3. The character being visible in observer mode can create a security vulnerability.

Conclusion: Observer mode is a powerful tool for ensuring PvP systems and subsystems like pets and mounts operate smoothly in Metin2 private servers. By using this mode correctly, developers can quickly detect and fix errors. At Metin2Lobby.com, we continuously provide content to assist developers aiming to implement such advanced systems.
 

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

Benzer konular

Geri
Üst Alt