[C++ & PY] MOBA Tarzı Kill Seslendirmesi

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

Admin

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

Sabah İşten Çıktım ve Aklıma Bunu Yapmak Geldi. Yaptım Fakat Şuanlık Bildiri Ekrandan Silinmiyor. Uyumam Gerekiyor. Uyandığımda Yapıp Burada Güncelleyeceğim. Yapmak İsteyen Varsa Yorum Olarak da Bırakabilir.




KANIT:


MOBA Tarzı Kill Seslendirmesi Nedir?

Metin2 gibi MMORPG oyunlarında PVP sistemleri gün geçtikçe daha da gelişiyor. Bu gelişimlerden birisi de oyuncuların öldürdüğü rakipler için sesli bildirimlerdir. Bu sistem, MOBA tarzı oyunlardan (örneğin League of Legends) esinlenilerek geliştirilmiştir. Bu yazıda, C++ ve Python kullanarak Metin2 özel sunucularda nasıl 'kill announce' sistemi kurulabileceğini anlatıyoruz.

Sistem Mimarisi

Bu sistemde, oyuncu bir rakibi öldürdüğünde sunucu tarafında bir event tetiklenir. Bu event sayesinde öldürülen kişi sayısı sayılır ve belirli sayılara ulaşıldığında sesli duyuru yapılır. Örnek olarak: Double Kill, Triple Kill, Godlike gibi.

Sunucu Tarafı (Game Core - C++)

Oyuncu öldürme olayı game_src dosyasında yer alır. Burada CHARACTER::Dead functionuna müdahale edilir. Oyuncunun öldürdüğü kişiyi takip eden sayaçlar burada yönetilir. Öldürülen kişi sayısı, oyuncu nesnesi içinde bir değişkende tutulur. Bu sayaç her öldürmede artırılır ve belirli aralıklarda sıfırlanır.

Örnek Kod Yapısı:

void CHARACTER::Dead(CHARACTER* pKiller)
{
if (pKiller && pKiller != this) {
int& killCount = pKiller->m_killStreak;
killCount++;
switch (killCount) {
case 2:
ChatPacket(pKiller, CHAT_TYPE_INFO, 'Double Kill!');
break;
case 3:
ChatPacket(pKiller, CHAT_TYPE_INFO, 'Triple Kill!');
break;
default:
if (killCount >= 5) ChatPacket(pKiller, CHAT_TYPE_INFO, 'Godlike!');
}
}
}

Client Tarafı (Python - UI Script)

Sunucudan gelen mesajları yakalamak için chat_handler.py dosyasında gerekli düzenlemeler yapılır. Bu mesajlar ekrana basılırken aynı zamanda ses dosyaları çalınabilir. Bunun için winsound veya pygame gibi kütüphaneler kullanılabilir. Ayrıca, bu sesler client/src/ui dizini altındaki GUI dosyalarıyla entegre edilebilir.

Ses Dosyası Çalma Örneği:

import pygame
pygame.mixer.init()
pygame.mixer.music.load('sounds/double_kill.mp3')
pygame.mixer.music.play()

Avantajları

Bu sistem, oyuncular arasında rekabeti artırır. Özellikle PVP odaklı sunucularda büyük bir motivasyon kaynağıdır. Kill streak sayacı ile birlikte görsel efektler, partikül sistemleri ve ses efektleriyle daha da zenginleştirilebilir.

Not: Bu sistem özel sunucular için idealdir. Ancak gerçek sunucularda lisanslama sorunları doğurabilir. Sunucu geliştiricileri dikkatli olmalıdır.

Sonuç

MOBA tarzı kill seslendirmesi, Metin2 özel sunucularında kullanıcı deneyimini ciddi anlamda artırabilir. C++ ve Python dillerinin beraber kullanılması sayesinde hem backend kontrolü hem de frontend ses-görsel efektler kolayca sağlanabilir. Bu sistem, Metin2 Lobby kullanıcıları için yeni bir geliştirme alanıdır.


What is MOBA-style Kill Announcement?

PVP systems in MMORPG games like Metin2 are evolving day by day. One of these advancements is audio notifications for players who eliminate opponents. This system is inspired by MOBA games such as League of Legends. In this article, we will explain how to set up a 'kill announce' system on Metin2 private servers using C++ and Python.

System Architecture

In this system, when a player kills an opponent, an event is triggered on the server side. Through this event, the number of kills is counted and audio announcements are played when specific thresholds are reached, such as Double Kill, Triple Kill, Godlike, etc.

Server Side (Game Core - C++)

The player death event occurs in the game_src file. Here, modifications are made to the CHARACTER::Dead function. Counters that track the number of kills are managed here. The kill count is stored in a variable within the player object and incremented with each kill, resetting at certain intervals.

Sample Code Structure:

void CHARACTER::Dead(CHARACTER* pKiller)
{
if (pKiller && pKiller != this) {
int& killCount = pKiller->m_killStreak;
killCount++;
switch (killCount) {
case 2:
ChatPacket(pKiller, CHAT_TYPE_INFO, 'Double Kill!');
break;
case 3:
ChatPacket(pKiller, CHAT_TYPE_INFO, 'Triple Kill!');
break;
default:
if (killCount >= 5) ChatPacket(pKiller, CHAT_TYPE_INFO, 'Godlike!');
}
}
}

Client Side (Python - UI Script)

To capture messages from the server, necessary adjustments are made in the chat_handler.py file. These messages can be displayed on screen and played as sound files using libraries such as winsound or pygame. Additionally, these sounds can be integrated with GUI files located under client/src/ui.

Playing Sound File Example:

import pygame
pygame.mixer.init()
pygame.mixer.music.load('sounds/double_kill.mp3')
pygame.mixer.music.play()

Advantages

This system increases competition among players. It serves as a major motivational tool, especially on PVP-focused servers. The kill streak counter can be enhanced further with visual effects, particle systems, and sound effects.

Note: This system is ideal for private servers. However, it may cause licensing issues on real servers. Server developers should proceed with caution.

Conclusion

MOBA-style kill announcements can significantly enhance user experience on Metin2 private servers. By combining C++ and Python, both backend control and frontend audiovisual effects can be easily achieved. This system opens up a new area of development for users of Metin2 Lobby.
 

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

Benzer konular

Geri
Üst Alt