Hikayeler

Reklam vermek için turkmmo@gmail.com

İstek Üzerine GM istediği Oyuncuya /n Kullanım İzni versin Sistemi

  • Konuyu başlatan lTJA
  • Başlangıç tarihi
  • Cevaplar 3
  • Görüntüleme 261
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!

char.h içine yetki alanı ekle:

char.h:
// char.h içine, CHARACTER sınıfına ekle (private değilse)
private:
    bool m_bCanUseNotice;  // /n komutu yetkisi

public:
    void SetCanUseNotice(bool b) { m_bCanUseNotice = b; }
    bool CanUseNotice() const { return m_bCanUseNotice || IsGM(); }

char.cpp içine constructor’a ekle:

char.cpp:
CHARACTER::CHARACTER()
{
    ...
    m_bCanUseNotice = false; // Başlangıçta yok
}

/n komutunu güncelle → cmd_general.cpp içinde do_notice:

cmd_general.cpp:
ACMD(do_notice)
{
    if (!ch->CanUseNotice())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Bu komutu kullanma yetkiniz yok.");
        return;
    }

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

    BroadcastNotice(argument);
}


Yeni komut ekle → /izinver

cmd_general.cpp içine:

cmd_general.cpp:
ACMD(do_give_notice_permission)
{
    if (!ch->IsGM())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Bu komutu sadece GM'ler kullanabilir.");
        return;
    }

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

    LPCHARACTER target = CHARACTER_MANAGER::instance().FindPC(argument);

    if (!target)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "%s çevrimdışı veya mevcut değil.", argument);
        return;
    }

    target->SetCanUseNotice(true);
    ch->ChatPacket(CHAT_TYPE_INFO, "%s adlı oyuncuya notice izni verildi.", target->GetName());
    target->ChatPacket(CHAT_TYPE_INFO, "Artık /n komutunu kullanabilirsiniz.");
}



Komut listesine ekle (cmd)


cmd_general.cpp içinde ACMD tanımına:​



cmd_general.cpp:
ACMD(do_give_notice_permission);

Ve komut listesine şunu ekle:

C++:
{ "izinver", do_give_notice_permission, 0, POS_DEAD, GM_LOW_WIZARD },

Oyunda:


GM olarak yaz:

/izinver ITJA

ITJA artık /n komutunu kullanabilir.
 
/n Komutunu oyuncudan geri almak için



cmd_general.cpp

C++:
ACMD(do_revoke_notice_permission)
{
    if (!ch->IsGM())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Bu komutu sadece GM'ler kullanabilir.");
        return;
    }

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

    LPCHARACTER target = CHARACTER_MANAGER::instance().FindPC(argument);

    if (!target)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "%s çevrimdışı veya mevcut değil.", argument);
        return;
    }

    target->SetCanUseNotice(false);
    ch->ChatPacket(CHAT_TYPE_INFO, "%s adlı oyuncudan /n komutu yetkisi alındı.", target->GetName());
    target->ChatPacket(CHAT_TYPE_INFO, "/n komutu yetkiniz geri alındı.");
}

cmd_general.cpp başına:
cmd_general.cpp:
ACMD(do_revoke_notice_permission);

Komut listesine ekle:

C++:
{ "izinal", do_revoke_notice_permission, 0, POS_DEAD, GM_LOW_WIZARD },


Oyunda

/izinal ITJA

Oyuncu artık /n komutunu kullanamaz. Yazarsa şu mesajı görür: Bu komutu kullanma yetkiniz yok
 
Adam tam developer ya . Sağ ol ❤️
 
Kod içeriği çalısmıyor sorunlu. Konu kapatılmıştır çalıştına dair kanıt atılırsa konu tekrar açılır.
 
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