Hikayeler

Reklam vermek için turkmmo@gmail.com

GM online olan oyunculara direk Mesaj Göndersin Sistemi

  • Konuyu başlatan lTJA
  • Başlangıç tarihi
  • Cevaplar 6
  • Görüntüleme 484
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

lTJA

Level 3
Banlı
TM Üye
Katılım
2 Eyl 2023
Konular
28
Mesajlar
108
Online süresi
6g 82227s
Reaksiyon Skoru
85
Altın Konu
0
Başarım Puanı
59
TM Yaşı
2 Yıl 7 Ay 20 Gün
MmoLira
965
DevLira
15

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

cmd_gm.cpp

cmd_gm.cpp:
ACMD(do_gmpm)
{
    if (!ch || !ch->GetDesc())
        return;

    // GM yetkisini kontrol et
    if (ch->GetGMLevel() < GM_LOW_WIZARD)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Bu komutu kullanmak için yetkiniz yok.");
        return;
    }

    if (!*argument)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: !gmpm <mesaj>");
        return;
    }

    const char* msg = argument;

    // Tüm bağlı kullanıcıları al
    const DESC_MANAGER::DESC_SET& client_set = DESC_MANAGER::instance().GetClientSet();
    for (DESC_MANAGER::DESC_SET::const_iterator it = client_set.begin(); it != client_set.end(); ++it)
    {
        LPCHARACTER target = (*it)->GetCharacter();
        if (!target) continue;

        // Kendisine göndermesin, istersek bu satırı da atlayabiliriz
        if (target == ch) continue;

        target->ChatPacket(CHAT_TYPE_WHISPER, ch->GetName(), msg);
    }

    ch->ChatPacket(CHAT_TYPE_INFO, "Mesajınız tüm online oyunculara whisper olarak gönderildi.");
}


cmd_gm.cpp veya cmd.cpp:
{ "gmpm", do_gmpm, 0, POS_DEAD, GM_LOW_WIZARD },



game/src/cmd_gm.cpp → En sona ekle

cmd_gm.cpp:
ACMD(do_gmpm)
{
    if (!ch || !ch->GetDesc())
        return;

    // GM yetki kontrolü
    if (ch->GetGMLevel() < GM_LOW_WIZARD)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Bu komutu kullanmak için yetkiniz yok.");
        return;
    }

    if (!*argument)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: !gmpm <mesaj>");
        return;
    }

    const char* msg = argument;

    // Online oyuncuları çek
    const DESC_MANAGER::DESC_SET& client_set = DESC_MANAGER::instance().GetClientSet();
    for (DESC_MANAGER::DESC_SET::const_iterator it = client_set.begin(); it != client_set.end(); ++it)
    {
        LPCHARACTER target = (*it)->GetCharacter();
        if (!target) continue;
        if (target == ch) continue; // kendine gönderme

        target->ChatPacket(CHAT_TYPE_WHISPER, ch->GetName(), msg);
    }

    ch->ChatPacket(CHAT_TYPE_INFO, "Mesajınız tüm online oyunculara whisper olarak gönderildi.");
}

game/src/cmd_gm.cpp içinde ACMD tanımlamalarının olduğu yere ekle:

C++:
ACMD(do_gmpm);

game/src/cmd_gm.cpp dosyasında GM komutları tablosuna ekle:


C++:
{ "gmpm", do_gmpm, 0, POS_DEAD, GM_LOW_WIZARD },



Tüm online oyuncular bu mesajı özel mesaj olarak alır.

Örnek:

!gmpm Selamunaleyküm.
 
Bu ekransız pm all heralde
 
Cok mantıklı lan niye o kadar pm all send ekleyeyim ki
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Geri
Üst