Dans Edince Silahın Gitmesi (Webzen Updates)

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

Admin

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

Çook eskiden yaptığım birşeydi arkadaş paylaşmış sadece part 0 yapınca iş bitiyor sandı diye bende bugsuz halini paylaşayım dedim kendi sunucumda denedim sorunsuz yani zaten eski bir webzen güncellemesi onlarda bu şekilde yapmıştı (sonradan sanırım değiştirdiler, ki ben şuan pek beğenmiyorum kodları ama işinizi görür) chatpacketleri çeviri verin size zahmet alışkanlık ingilizce kullanma şeysi zaten "Dans ederken silahınızı değiştiremezsiniz!" yazıyor.

Server part;
// game/src/Packet.h HEADER_GC_CHARACTER_POSITION arat bir yere koy
Kod:
HEADER_GC_UPDATE_PART = 50,

// } TPacketGCDragonSoulRefine;arat yapıştır
Kod:
typedef struct SPacketGCUpdatePart { BYTE bHeader; BYTE bPart; DWORD dwVID; DWORD dwVnum; } TPacketGCUpdatePart;

// char.cpp aç m_pointsInstant.iDragonSoulActiveDeck = -1; arat
Kod:
m_isDancing = false;

// pack.awPart[CHR_EQUIPPART_WEAPON] arat komple değiştir.
Kod:
pack.awPart[CHR_EQUIPPART_WEAPON] = m_isDancing ? 0 : GetPart(PART_WEAPON);


LPCHARACTER CHARACTER::FindCharacterInView(const char * c_pszName, bool bFindPCOnly) arat ve bir üstüne ekle
Kod:
void CHARACTER::UpdatePart(EParts Part, DWORD dwVnum) { TPacketGCUpdatePart p; p.bHeader = HEADER_GC_UPDATE_PART; p.bPart = Part; p.dwVID = GetVID(); p.dwVnum = dwVnum; PacketAround(&p, sizeof(p)); }

char.h aç ve arat void UpdatePacket(); altına ekle
Kod:
void UpdatePart(EParts Part, DWORD dwVnum);

char_item.cpp case ITEM_PICK: arat
Kod:
if (!item->IsEquipped()) { if ((item->GetSubType() >= WEAPON_SWORD && item->GetSubType() <= WEAPON_CLAW) && m_isDancing) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't change weapon while dancing!")); return false; } } else { if ((item->GetSubType() >= WEAPON_SWORD && item->GetSubType() <= WEAPON_CLAW) && m_isDancing) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't change weapon while dancing!")); return false; } UnequipItem(item); }

// EquipItem(item, DestCell.cell - INVENTORY_MAX_NUM); arat üstüne ekle
Kod:
if ((item->GetSubType() >= WEAPON_SWORD && item->GetSubType() <= WEAPON_CLAW) && m_isDancing) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't change weapon while dancing!")); return false; }

sys_log(0, "%s: ITEM_MOVE %s (window: %d, cell : %d) -> (window:%d, cell %d) count %d", GetName(), item->GetName(), Cell.window_type, Cell.cell, DestCell.window_type, DestCell.cell, count); arat ve üstüne ekle
Kod:
if (item->IsEquipped() && (item->GetSubType() >= WEAPON_SWORD && item->GetSubType() <= WEAPON_CLAW) && m_isDancing) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't change weapon while dancing!")); return false; }

cmd_emotion.cpp ara ch->PacketAround(buf.read_peek(), buf.size());
Kod:
ch->m_isDancing = true; ch->UpdatePart(PART_WEAPON, 0); if (victim) { victim->m_isDancing = true; victim->UpdatePart(PART_WEAPON, 0); }

if (pinfo->bFunc == FUNC_MOVE) arat ch->Goto(pinfo->lX, pinfo->lY); bunun altına ekle
Kod:
if (ch->m_isDancing) { ch->m_isDancing = false; ch->UpdatePart(PART_WEAPON, ch->GetPart(PART_WEAPON)); }

aynı yerin else tırnağından sonrası satır şeysinede ekle
Kod:
if (ch->m_isDancing) { ch->m_isDancing = false; ch->UpdatePart(PART_WEAPON, ch->GetPart(PART_WEAPON)); }

// char_horse.cpp HorseSummon(false); arat ekle (ek binek zımbırtıları olan nerde summon ediyosa oraya yapıştırsın)
Kod:
if (m_isDancing) { m_isDancing = false; UpdatePart(PART_WEAPON, GetPart(PART_WEAPON)); }

client > userinterface>Packet.h HEADER_GC_CHARACTER_POSITION arat ekle
Kod:
HEADER_GC_UPDATE_PART = 50,

} TPacketGCDragonSoulRefine; arat
Kod:
typedef struct SPacketGCCharacterUpdatePart { BYTE bHeader; BYTE bPart; DWORD dwVID; DWORD dwVnum; } TPacketGCCharacterUpdatePart;

// userinterface > PythonNetworkStream.cpp Set(HEADER_GC_DRAGON_SOUL_REFINE,
Kod:
Set(HEADER_GC_UPDATE_PART, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCCharacterUpdatePart), STATIC_SIZE_PACKET));

// userinterface > PythonNetworkStream.h bool RecvDragonSoulRefine(); ara
Kod:
// Dance invisible weapon. bool RecvCharacterUpdatePart();

// userinterface > PythonNetworkStreamPhaseGame.cpp case HEADER_GC_DRAGON_SOUL_REFINE: ara
Kod:
case HEADER_GC_UPDATE_PART: ret = RecvCharacterUpdatePart(); break;

// userinterface > PythonNetworkStreamPhaseGame.cpp bool CPythonNetworkStream::RecvDungeon() ara fonksiyonun sonunda yeni bi fonksiyon oluştur
Kod:
bool CPythonNetworkStream::RecvCharacterUpdatePart() { TPacketGCCharacterUpdatePart p; if (!Recv(sizeof(p), &p)) return false; CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(p.dwVID); if (!pkInst) return false; switch (p.bPart) { case CRaceData::PART_WEAPON: pkInst->SetWeapon(p.dwVnum, 0); break; default: break; } IAbstractPlayer& rkPlayer = IAbstractPlayer::GetSingleton(); rkPlayer.NotifyCharacterUpdate(p.dwVID); return true; }

Metin2'de Dans Edince Silahın Gitmesi (Webzen Updates)

Metin2 özel sunucularında oynarken zaman zaman oyun içi eğlenceli veya garip davranışlarla karşılaşabilirsiniz. Bunlardan biri de karakterin dans etme animasyonu sırasında silahının belirli bir süreliğine yok olmasıdır. Bu durum genellikle client-side animasyon değişiklikleri veya Webzen tarafından sunulan güncellemelerle ilişkilidir. Bu yazıda Dans edince silahın gitmesi konusunu detaylıca ele alacağız.

Dans Animasyonları ve Silah Görselleri Arasındaki Bağ

Metin2'de karakterlerin dans etme animasyonları, özel efektler ve ekran görselleri genellikle uiscript dosyaları üzerinden yönetilir. Eğer client tarafında yapılan değişiklikler dans animasyonuna özel bir silah gizleme komutu içeriyorsa, karakter dans ederken silah görünmez hale gelir. Bu genellikle mod ya da custom client üzerinde yapılan bir ayarlamadır.

Webzen Güncellemeleri ve Etkileri

Webzen, Metin2 oyununun resmi sürümünde zaman zaman grafiksel veya animasyon değişiklikleri yapar. Bu güncellemeler bazen özel sunucularda mevcut olan client modifikasyonlarıyla uyumsuzluk yaratabilir. Örneğin Webzen, dans animasyonunu değiştirirse ve client tarafında kullanılan özel bir script bu animasyonla aynı anda silahı gizlemeye çalışırsa, kullanıcı dans ederken silahının yok olduğunu fark edebilir.

Metin2 Private Server Geliştiricileri İçin Öneriler

Eğer siz bir Metin2 özel sunucu geliştiricisiyseniz, bu gibi durumlarda yapmanız gereken ilk şey client-side animasyon ayarlarını gözden geçirmektir. Özellikle uiscript veya root klasörlerinde bulunan dans animasyonu ile ilgili dosyaları kontrol etmeniz gerekir. Python veya C++ tabanlı sistemlerde yapılan küçük değişiklikler bile animasyonun nasıl işlediğini etkileyebilir.

Silah Gizlenmesinin Giderilmesi

Dans sırasında silahın gitmesinin nedenini anlamak için öncelikle client-side log kayıtlarını inceleyin. Eğer custom bir script varsa, dans animasyonu başlatıldığında silah nesnesinin görünür olup olmadığını kontrol edin. Py GUI veya UI script sistemlerinde silah nesnesi gizleniyorsa, ilgili satırı düzenlemeniz yeterli olacaktır.

Webzen ile Uyumlu Çalışma Stratejileri

Webzen’in yayınladığı güncellemelerle uyumlu çalışabilmek için private server geliştiricileri, client tarafında yapılan değişikliklerin Webzen sürümüyle uyumlu olup olmadığını test etmelidir. Yeni animasyonlarla çakışmaması için custom animasyonlar manuel olarak ayarlanmalıdır. Martysama gibi bilinen development kaynakları, bu süreçte yardımcı olabilir.

Sonuç

Dans edince silahın gitmesi gibi olaylar, genellikle client-side üzerinde yapılan küçük değişikliklerin yan etkileridir. Bu tür durumlar hem geliştiriciler hem de oyuncular için sinir bozucu olabilir. Ancak doğru analiz ve düzeltme ile kolayca çözülebilir. Metin2 Lobby olarak, Metin2 özel sunucu dünyasında yaşanan bu tür teknik sorunlara çözüm üretmeye devam ediyoruz.

Kaynaklar

Metin2 Lobby - Metin2 Development & Server Guides


Weapon Disappears When Dancing (Webzen Updates)

While playing on Metin2 private servers, you may sometimes encounter funny or odd behaviors within the game. One of them is the temporary disappearance of your character's weapon during the dance animation. This situation is usually related to client-side animation modifications or updates provided by Webzen. In this article, we will examine the topic of weapon disappearing while dancing in detail.

Connection Between Dance Animations and Weapon Graphics

In Metin2, character dance animations, special effects, and screen visuals are usually managed through uiscript files. If the changes made on the client side include a special command to hide the weapon during the dance animation, the weapon becomes invisible while the character is dancing. This is often a setting on mod or custom clients.

Webzen Updates and Their Effects

From time to time, Webzen makes graphical or animation changes to the official version of the Metin2 game. These updates can sometimes cause incompatibilities with client modifications used in private servers. For example, if Webzen changes the dance animation and a custom script on the client side attempts to hide the weapon simultaneously, users might notice their weapon disappears when dancing.

Suggestions for Metin2 Private Server Developers

If you are a Metin2 private server developer, the first thing to do in such situations is to review the client-side animation settings. Specifically, you should check the files related to dance animations located in the uiscript or root folders. Even small changes made in Python or C++ based systems can affect how the animation works.

Fixing Weapon Disappearance

To understand why the weapon disappears during dancing, start by reviewing the client-side logs. If there is a custom script, check whether the weapon object remains visible when the dance animation starts. If the weapon object is being hidden in Py GUI or UI script systems, adjusting the relevant line will be sufficient.

Strategies for Compatibility with Webzen

To work compatibly with updates released by Webzen, private server developers must ensure that the changes made on the client side are compatible with the Webzen version. Custom animations should be manually adjusted so they don’t conflict with new animations. Well-known development resources like Martysama can assist during this process.

Conclusion

Events like the weapon disappearing when dancing are typically side effects of minor changes made on the client-side. Such issues can be frustrating for both developers and players. However, with proper analysis and fixes, they can easily be resolved. As Metin2 Lobby, we continue to provide solutions to technical issues like these in the world of Metin2 private servers.

Resources

Metin2 Lobby - Metin2 Development & Server Guides
 

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

Benzer konular

Geri
Üst Alt